Commit df60ac84102cd74bfb5f2c06e959a2af6bababab

Authored by wdn127929
1 parent e0341dbf

我的和全店分开

Too many changes to show.

To preserve performance only 22 of 22+ files are displayed.

... ... @@ -18,4 +18,8 @@ enum PageState {
enum FromPage {
FromPageMyCustomer, //我的客情
FromPageStoreCustomer, //全店客情
FromPageHome, //客户列表页面来源---主页
FromPageMakeRecord, //客户列表页面来源---营销页面
FromPageCustomerList,
FromPageMakeRecordDetail,
}
... ...
... ... @@ -70,6 +70,11 @@ class MarketingByIdSunModel extends Object {
@JsonKey(name: 'create_user')
String createUser;
@JsonKey(name: 'finished_status')
String finishedStatus;
String aidStr = '';
String get cdateStr {
... ... @@ -92,7 +97,8 @@ class MarketingByIdSunModel extends Object {
this.sellerUserCount,
this.notFinished,
this.sellerUser,
this.createUser
this.createUser,
this.finishedStatus
);
factory MarketingByIdSunModel.fromJson(Map<String, dynamic> srcJson) =>
... ...
... ... @@ -43,6 +43,7 @@ MarketingByIdSunModel _$MarketingByIdSunModelFromJson(
e == null ? null : SellerUser.fromJson(e as Map<String, dynamic>))
?.toList(),
json['create_user'] as String,
json['finished_status'] as String,
);
}
... ... @@ -62,7 +63,8 @@ Map<String, dynamic> _$MarketingByIdSunModelToJson(
'seller_user_count': instance.sellerUserCount,
'not_finished': instance.notFinished,
'seller_user': instance.sellerUser,
'create_user': instance.createUser
'create_user': instance.createUser,
'finished_status': instance.finishedStatus
};
SellerUser _$SellerUserFromJson(Map<String, dynamic> json) {
... ...
import 'package:common_utils/common_utils.dart';
import 'package:json_annotation/json_annotation.dart';
part 'marketing_by_uid_model.g.dart';
@JsonSerializable()
class MarketingByUidModel extends Object {
@JsonKey(name: 'ret')
int ret;
@JsonKey(name: 'data')
MarketingByUidsSunModel data;
@JsonKey(name: 'msg')
String msg;
MarketingByUidModel(
this.ret,
this.data,
this.msg,
);
factory MarketingByUidModel.fromJson(Map<String, dynamic> srcJson) =>
_$MarketingByUidModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$MarketingByUidModelToJson(this);
}
@JsonSerializable()
class MarketingByUidsSunModel extends Object {
@JsonKey(name: 'self_list')
List<SelfList> selfList;
@JsonKey(name: 'seller_list')
List<SellerList> sellerList;
MarketingByUidsSunModel(
this.selfList,
this.sellerList,
);
factory MarketingByUidsSunModel.fromJson(Map<String, dynamic> srcJson) =>
_$MarketingByUidsSunModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$MarketingByUidsSunModelToJson(this);
}
@JsonSerializable()
class SelfList extends Object {
@JsonKey(name: 'id')
String id;
@JsonKey(name: 'uid')
String uid;
@JsonKey(name: 'aid')
String aid;
@JsonKey(name: 'gid')
String gid;
@JsonKey(name: 'content')
String content;
@JsonKey(name: 'cdate')
String cdate;
String get cdateStr {
DateTime dateTime =
DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString()) * 1000);
return DateUtil.formatDate(dateTime, format: DateFormats.y_mo_d);
}
String get guestCount {
if (gid == null || gid == '') {
return '0';
}
return '${gid.split(',').length}';
}
SelfList(
this.id,
this.uid,
this.aid,
this.gid,
this.content,
this.cdate,
);
factory SelfList.fromJson(Map<String, dynamic> srcJson) =>
_$SelfListFromJson(srcJson);
Map<String, dynamic> toJson() => _$SelfListToJson(this);
}
@JsonSerializable()
class SellerList extends Object {
@JsonKey(name: 'id')
String id;
@JsonKey(name: 'sellerid')
String sellerid;
@JsonKey(name: 'create_user')
String createUser;
@JsonKey(name: 'uid')
String uid;
@JsonKey(name: 'aid')
String aid;
@JsonKey(name: 'gid')
String gid;
@JsonKey(name: 'content')
String content;
@JsonKey(name: 'is_update')
String isUpdate;
@JsonKey(name: 'finished_status')
String finishedStatus;
@JsonKey(name: 'edate')
String edate;
@JsonKey(name: 'cdate')
String cdate;
String get cdateStr {
DateTime dateTime =
DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString()) * 1000);
return DateUtil.formatDate(dateTime, format: DateFormats.y_mo_d);
}
String get guestCount {
if (gid == null || gid == '') {
return '0';
}
return '${gid.split(',').length}';
}
SellerList(
this.id,
this.sellerid,
this.createUser,
this.uid,
this.aid,
this.gid,
this.content,
this.isUpdate,
this.finishedStatus,
this.edate,
this.cdate,
);
factory SellerList.fromJson(Map<String, dynamic> srcJson) =>
_$SellerListFromJson(srcJson);
Map<String, dynamic> toJson() => _$SellerListToJson(this);
}
... ...
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'marketing_by_uid_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
MarketingByUidModel _$MarketingByUidModelFromJson(Map<String, dynamic> json) {
return MarketingByUidModel(
json['ret'] as int,
json['data'] == null
? null
: MarketingByUidsSunModel.fromJson(
json['data'] as Map<String, dynamic>),
json['msg'] as String,
);
}
Map<String, dynamic> _$MarketingByUidModelToJson(
MarketingByUidModel instance) =>
<String, dynamic>{
'ret': instance.ret,
'data': instance.data,
'msg': instance.msg,
};
MarketingByUidsSunModel _$MarketingByUidsSunModelFromJson(
Map<String, dynamic> json) {
return MarketingByUidsSunModel(
(json['self_list'] as List)
?.map((e) =>
e == null ? null : SelfList.fromJson(e as Map<String, dynamic>))
?.toList(),
(json['seller_list'] as List)
?.map((e) =>
e == null ? null : SellerList.fromJson(e as Map<String, dynamic>))
?.toList(),
);
}
Map<String, dynamic> _$MarketingByUidsSunModelToJson(
MarketingByUidsSunModel instance) =>
<String, dynamic>{
'self_list': instance.selfList,
'seller_list': instance.sellerList,
};
SelfList _$SelfListFromJson(Map<String, dynamic> json) {
return SelfList(
json['id'] as String,
json['uid'] as String,
json['aid'] as String,
json['gid'] as String,
json['content'] as String,
json['cdate'] as String,
);
}
Map<String, dynamic> _$SelfListToJson(SelfList instance) => <String, dynamic>{
'id': instance.id,
'uid': instance.uid,
'aid': instance.aid,
'gid': instance.gid,
'content': instance.content,
'cdate': instance.cdate,
};
SellerList _$SellerListFromJson(Map<String, dynamic> json) {
return SellerList(
json['id'] as String,
json['sellerid'] as String,
json['create_user'] as String,
json['uid'] as String,
json['aid'] as String,
json['gid'] as String,
json['content'] as String,
json['is_update'] as String,
json['finished_status'] as String,
json['edate'] as String,
json['cdate'] as String,
);
}
Map<String, dynamic> _$SellerListToJson(SellerList instance) =>
<String, dynamic>{
'id': instance.id,
'sellerid': instance.sellerid,
'create_user': instance.createUser,
'uid': instance.uid,
'aid': instance.aid,
'gid': instance.gid,
'content': instance.content,
'is_update': instance.isUpdate,
'finished_status': instance.finishedStatus,
'edate': instance.edate,
'cdate': instance.cdate,
};
... ...
import 'package:json_annotation/json_annotation.dart';
part 'store_customer_home_model.g.dart';
@JsonSerializable()
class StoreCustomerHomeModel extends Object {
@JsonKey(name: 'ret')
int ret;
@JsonKey(name: 'data')
StoreCustomerHomeSunModel data;
@JsonKey(name: 'msg')
String msg;
StoreCustomerHomeModel(this.ret,this.data,this.msg,);
factory StoreCustomerHomeModel.fromJson(Map<String, dynamic> srcJson) => _$StoreCustomerHomeModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$StoreCustomerHomeModelToJson(this);
}
@JsonSerializable()
class StoreCustomerHomeSunModel extends Object {
@JsonKey(name: 'myCustomer')
int myCustomer;
@JsonKey(name: 'active')
Active active;
@JsonKey(name: 'sleep')
Sleep sleep;
@JsonKey(name: 'drain')
Drain drain;
@JsonKey(name: 'seller_user')
List<SellerUser> sellerUser;
@JsonKey(name: 'distribution')
int distribution;
StoreCustomerHomeSunModel(this.myCustomer,this.active,this.sleep,this.drain,this.sellerUser,this.distribution,);
factory StoreCustomerHomeSunModel.fromJson(Map<String, dynamic> srcJson) => _$StoreCustomerHomeSunModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$StoreCustomerHomeSunModelToJson(this);
}
@JsonSerializable()
class Active extends Object {
@JsonKey(name: 'count')
int count;
@JsonKey(name: 'scale')
double scale;
Active(this.count,this.scale,);
factory Active.fromJson(Map<String, dynamic> srcJson) => _$ActiveFromJson(srcJson);
Map<String, dynamic> toJson() => _$ActiveToJson(this);
}
@JsonSerializable()
class Sleep extends Object {
@JsonKey(name: 'count')
int count;
@JsonKey(name: 'scale')
double scale;
Sleep(this.count,this.scale,);
factory Sleep.fromJson(Map<String, dynamic> srcJson) => _$SleepFromJson(srcJson);
Map<String, dynamic> toJson() => _$SleepToJson(this);
}
@JsonSerializable()
class Drain extends Object {
@JsonKey(name: 'count')
int count;
@JsonKey(name: 'scale')
double scale;
Drain(this.count,this.scale,);
factory Drain.fromJson(Map<String, dynamic> srcJson) => _$DrainFromJson(srcJson);
Map<String, dynamic> toJson() => _$DrainToJson(this);
}
@JsonSerializable()
class SellerUser extends Object {
@JsonKey(name: 'count')
String count;
@JsonKey(name: 'nick_name')
String nickName;
SellerUser(this.count,this.nickName,);
factory SellerUser.fromJson(Map<String, dynamic> srcJson) => _$SellerUserFromJson(srcJson);
Map<String, dynamic> toJson() => _$SellerUserToJson(this);
}
... ...
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'store_customer_home_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
StoreCustomerHomeModel _$StoreCustomerHomeModelFromJson(
Map<String, dynamic> json) {
return StoreCustomerHomeModel(
json['ret'] as int,
json['data'] == null
? null
: StoreCustomerHomeSunModel.fromJson(
json['data'] as Map<String, dynamic>),
json['msg'] as String,
);
}
Map<String, dynamic> _$StoreCustomerHomeModelToJson(
StoreCustomerHomeModel instance) =>
<String, dynamic>{
'ret': instance.ret,
'data': instance.data,
'msg': instance.msg,
};
StoreCustomerHomeSunModel _$StoreCustomerHomeSunModelFromJson(
Map<String, dynamic> json) {
return StoreCustomerHomeSunModel(
json['myCustomer'] as int,
json['active'] == null
? null
: Active.fromJson(json['active'] as Map<String, dynamic>),
json['sleep'] == null
? null
: Sleep.fromJson(json['sleep'] as Map<String, dynamic>),
json['drain'] == null
? null
: Drain.fromJson(json['drain'] as Map<String, dynamic>),
(json['seller_user'] as List)
?.map((e) =>
e == null ? null : SellerUser.fromJson(e as Map<String, dynamic>))
?.toList(),
json['distribution'] as int,
);
}
Map<String, dynamic> _$StoreCustomerHomeSunModelToJson(
StoreCustomerHomeSunModel instance) =>
<String, dynamic>{
'myCustomer': instance.myCustomer,
'active': instance.active,
'sleep': instance.sleep,
'drain': instance.drain,
'seller_user': instance.sellerUser,
'distribution': instance.distribution,
};
Active _$ActiveFromJson(Map<String, dynamic> json) {
return Active(
json['count'] as int,
(json['scale'] as num)?.toDouble(),
);
}
Map<String, dynamic> _$ActiveToJson(Active instance) => <String, dynamic>{
'count': instance.count,
'scale': instance.scale,
};
Sleep _$SleepFromJson(Map<String, dynamic> json) {
return Sleep(
json['count'] as int,
(json['scale'] as num)?.toDouble(),
);
}
Map<String, dynamic> _$SleepToJson(Sleep instance) => <String, dynamic>{
'count': instance.count,
'scale': instance.scale,
};
Drain _$DrainFromJson(Map<String, dynamic> json) {
return Drain(
json['count'] as int,
(json['scale'] as num)?.toDouble(),
);
}
Map<String, dynamic> _$DrainToJson(Drain instance) => <String, dynamic>{
'count': instance.count,
'scale': instance.scale,
};
SellerUser _$SellerUserFromJson(Map<String, dynamic> json) {
return SellerUser(
json['count'] as String,
json['nick_name'] as String,
);
}
Map<String, dynamic> _$SellerUserToJson(SellerUser instance) =>
<String, dynamic>{
'count': instance.count,
'nick_name': instance.nickName,
};
... ...
... ... @@ -21,6 +21,7 @@ class User {
String night; //晚市时间段
String userphone; //角色电话
String token; //token
String nickName; // 昵称
User(
this.openid,
... ... @@ -39,7 +40,8 @@ class User {
this.noon,
this.night,
this.userphone,
this.token);
this.token,
this.nickName);
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
... ... @@ -47,6 +49,6 @@ class User {
@override
String toString() {
return 'User{openid: $openid, account: $account, role_name: $role_name, sellerid: $sellerid, sellercode: $sellercode, sellername: $sellername,sellerimage:$sellerimage, sellerphone: $sellerphone, sellerAddr: $sellerAddr, scatter: $scatter, room: $room, cassette: $cassette, morning: $morning, noon: $noon, night: $night ,userphone:$userphone},token:$token}';
return 'User{openid: $openid, account: $account, role_name: $role_name, sellerid: $sellerid, sellercode: $sellercode, sellername: $sellername,sellerimage:$sellerimage, sellerphone: $sellerphone, sellerAddr: $sellerAddr, scatter: $scatter, room: $room, cassette: $cassette, morning: $morning, noon: $noon, night: $night ,userphone:$userphone},token:$token},nickName:$nickName}';
}
}
... ...
... ... @@ -8,23 +8,25 @@ part of 'user.dart';
User _$UserFromJson(Map<String, dynamic> json) {
return User(
json['openid'] as String,
json['account'] as String,
json['role_name'] as String,
json['sellerid'] as String,
json['sellercode'] as String,
json['sellername'] as String,
json['sellerimage'] as String,
json['sellerphone'] as String,
json['sellerAddr'] as String,
json['scatter'] as int,
json['room'] as int,
json['cassette'] as int,
json['morning'] as String,
json['noon'] as String,
json['night'] as String,
json['userphone'] as String,
json['token'] as String);
json['openid'] as String,
json['account'] as String,
json['role_name'] as String,
json['sellerid'] as String,
json['sellercode'] as String,
json['sellername'] as String,
json['sellerimage'] as String,
json['sellerphone'] as String,
json['sellerAddr'] as String,
json['scatter'] as int,
json['room'] as int,
json['cassette'] as int,
json['morning'] as String,
json['noon'] as String,
json['night'] as String,
json['userphone'] as String,
json['token'] as String,
json['nickname'] as String,
);
}
Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
... ... @@ -44,5 +46,6 @@ Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
'noon': instance.noon,
'night': instance.night,
'userphone': instance.userphone,
'token': instance.token
'token': instance.token,
'nickname': instance.nickName
};
... ...
... ... @@ -200,5 +200,13 @@ class HttpUrl {
"?service=App.GuestManage.GetLabelBySellerid"; // 获取商家标签
static const String set_label_by_sellerid =
"?service=App.GuestManage.SetLabelBySellerid"; // 商家修改标签
static const String seller_guest_manage =
"?service=App.GuestManage.SellerGuestManage"; // 全店客情
static const String set_marketing_by_seller =
"?service=App.GuestManage.SetMarketingBySeller"; // 商家修改营销
static const String get_guest_by_gid =
"?service=App.GuestManage.GetGuestByGid"; // 客户经理营销中的用户列表
static const String get_marketing_by_uid =
"?service=App.GuestManage.GetMarketingByUid"; // 客户经理营销列表
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/customer_label_model.dart';
import 'package:one_key/models/guest_info_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class MyCustomerDetailEditPage extends StatefulWidget {
final Guest guest;
final FromPage fromPage;
MyCustomerDetailEditPage({Key key, this.guest, this.fromPage})
: super(key: key);
@override
_MyCustomerDetailEditPageState createState() => _MyCustomerDetailEditPageState();
}
class _MyCustomerDetailEditPageState extends State<MyCustomerDetailEditPage> {
List sexList = []; // 先生、女士、公司
TextEditingController nameController = TextEditingController();
FocusNode nameFocus = FocusNode();
String nameStr;
TextEditingController phoneController = TextEditingController();
FocusNode phoneFocus = FocusNode();
TextEditingController adressController = TextEditingController();
FocusNode adressFocus = FocusNode();
TextEditingController departmentController = TextEditingController();
FocusNode departmentFocus = FocusNode();
TextEditingController positionController = TextEditingController();
FocusNode positionFocus = FocusNode();
TextEditingController jkController = TextEditingController();
TextEditingController xhController = TextEditingController();
TextEditingController fwController = TextEditingController();
bool showLabel = false;
CustomerProvider customerProvider;
String labelShow = '';
ScrollController scrollController = ScrollController();
@override
void initState() {
super.initState();
_initSexList();
nameFocus.addListener(() {
if (nameFocus.hasFocus) {
print('得到焦点');
} else {
print('失去焦点');
// _homeEnterModel.nameController.text = nameStr + _nameSuffix();
_addNameSuffix(nameStr, _nameSuffix());
}
setState(() {});
});
WidgetsBinding.instance.addPostFrameCallback((_) {
if (widget.guest.rname != '' &&
widget.guest.rname != null &&
widget.guest.sex != '' &&
widget.guest.sex != null) {
nameStr = widget.guest.rname;
for (var item in sexList) {
item['select'] = false;
if (item['code'] == widget.guest.sex) {
item['select'] = true;
}
}
_addNameSuffix(nameStr, _nameSuffix());
}
phoneController.text = widget.guest.phone ?? '';
adressController.text = widget.guest.company ?? '';
departmentController.text = widget.guest.section ?? '';
positionController.text = widget.guest.position ?? '';
jkController.text = widget.guest.taboos ?? '';
xhController.text = widget.guest.like ?? '';
fwController.text = widget.guest.serve ?? '';
labelShow = widget.guest.label ?? '';
setState(() {});
_getLabelBySellerid();
// scrollController.jumpTo(scrollController.position.minScrollExtent);
});
}
///获取商家标签
_getLabelBySellerid() async {
Map<String, String> params = {
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
};
List<CustomerLabelSunModel> modelLabel =
await customerProvider.getLabelBySellerid(context, params);
if (modelLabel.length > 0) {
for (int i = 0; i < customerProvider.labelList.length; i++) {
if (labelShow == customerProvider.labelList[i].label) {
customerProvider.labelSelIndex = i;
}
}
}
}
_setGuestInfo() async {
if (nameStr.trim().length == 0) {
Utils.showToast('请填写客户姓名');
return;
}
if (phoneController.text.trim().length == 0) {
Utils.showToast('请填写客户电话');
return;
}
String sex = '1';
for (var item in sexList) {
if (item['select']) {
sex = item['code'];
}
}
Map<String, String> params = {
"id": widget.guest.id,
'sex': sex,
'rname': nameStr,
'phone': phoneController.text
};
if (adressController.text.trim().length > 0) {
params['company'] = adressController.text;
}
if (departmentController.text.trim().length > 0) {
params['section'] = departmentController.text;
}
if (positionController.text.trim().length > 0) {
params['position'] = positionController.text;
}
if (labelShow != '') {
params['label'] = labelShow;
}
if (jkController.text.trim().length > 0) {
params['taboos'] = jkController.text;
}
if (xhController.text.trim().length > 0) {
params['like'] = xhController.text;
}
if (fwController.text.trim().length > 0) {
params['serve'] = fwController.text;
}
bool sucess =
await customerProvider.setGuestInfo(context, params, showLoading: true);
if (sucess) {
Utils.showToast('保存成功');
bus.emit('refresh_guest_info');
bus.emit('refresh_guest_list');
Navigator.pop(context);
// 刷新前一页
}
}
///称谓
_initSexList() {
// String sexStr = detailEntity.sex;
String sexStr = '1';
sexList = [
{
'title': '先生',
'select': sexStr == '1' ? true : false,
'code': '1',
'hasLeftBorder': true
},
{
'title': '女士',
'select': sexStr == '2' ? true : false,
'code': '2',
'hasLeftBorder': false
},
{
'title': '公司',
'select': sexStr == '3' ? true : false,
'code': '3',
'hasLeftBorder': false
}
];
}
_addNameSuffix(String name, String suffix) {
if (name == nameController.text && nameController.text.endsWith(suffix)) {
return;
}
nameController.text = name + suffix;
}
//姓名后缀
_nameSuffix() {
for (var item in sexList) {
if (item['select'] == true) {
return item['title'];
}
}
}
Widget _callButton(
{GestureTapCallback onPress,
content,
hasLeftBorder = true,
isSelect = false}) {
return InkWell(
onTap: onPress,
child: Container(
width: ScreenUtil().setWidth(84),
height: ScreenUtil().setHeight(48),
decoration: BoxDecoration(
color: isSelect ? MyColours.color_199095 : MyColours.color_fefefe,
border: Border(
bottom: BorderSide(
color: MyColours.color_6AB6B9,
width: ScreenUtil().setWidth(2)),
top: BorderSide(
color: MyColours.color_6AB6B9,
width: ScreenUtil().setWidth(2)),
left: hasLeftBorder
? BorderSide(
color: MyColours.color_6AB6B9,
width: ScreenUtil().setWidth(2))
: BorderSide.none,
right: BorderSide(
color: MyColours.color_6AB6B9,
width: ScreenUtil().setWidth(2)))),
child: Align(
alignment: Alignment.center,
child: Text(
content,
style: TextStyle(
color: isSelect ? Colors.white : MyColours.color_353535,
fontSize: ScreenUtil().setSp(28)),
),
),
),
);
}
Widget _textfieldWidget(String title, String hint,
TextEditingController controller, FocusNode focusNode) {
return Container(
// height: ScreenUtil().setWidth(60),
padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(10)),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: Color.fromRGBO(220, 220, 220, 1)))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: ScreenUtil().setWidth(150),
height: ScreenUtil().setWidth(35),
child: Text(
title,
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333),
),
),
Expanded(
child: TextField(
maxLines: 1,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_353535),
controller: controller,
focusNode: focusNode,
// textAlignVertical: TextAlignVertical.top,
decoration: InputDecoration(
hintText: hint,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(30),
),
// contentPadding:
// EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),
contentPadding: EdgeInsets.zero,
border: OutlineInputBorder(borderSide: BorderSide.none),
),
onChanged: (value) {},
onEditingComplete: () {
// if (controller == nameController) {
// nameFocus.unfocus();
// // _homeEnterModel.nameController.text =
// // nameStr + _nameSuffix();
// _addNameSuffix(nameStr, _nameSuffix());
// }
print('fff');
},
keyboardType: TextInputType.text,
),
),
],
),
);
}
///忌口和喜好
Widget _textMulLine(
String title, String hintText, TextEditingController controller) {
return Container(
// height: ScreenUtil().setWidth(380),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Align(
alignment: Alignment.centerLeft,
child: Text(
title,
textAlign: TextAlign.left,
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(28)),
)),
VEmptyView(20),
TextField(
controller: controller,
// keyboardType: TextInputType.number, //键盘类型,数字键盘
maxLines: 4,
// maxLength: 50,
// maxLengthEnforced: true,
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_333333), //输入文本的样式
decoration: InputDecoration(
contentPadding: EdgeInsets.all(ScreenUtil().setWidth(30)),
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(30),
),
// fillColor: MyColours.color_F9F9F9,
// fillColor: Colors.red,
// filled: true,
enabledBorder: OutlineInputBorder(
//未选中时候的颜色
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)),
borderSide: BorderSide(
color: MyColours.color_cccccc,
width: ScreenUtil().setWidth(2)),
),
focusedBorder: OutlineInputBorder(
//选中时外边框颜色
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)),
borderSide: BorderSide(
color: MyColours.app_main,
),
),
// border: OutlineInputBorder(
// borderRadius:
// BorderRadius.circular(ScreenUtil().setWidth(20)),
// borderSide: BorderSide(
// color: Colors.red, width: ScreenUtil().setWidth(2))),
),
onChanged: (value) {},
),
],
),
);
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'编辑客户详情',
onTap: () {
Navigator.of(context).pop();
},
),
body: Column(
children: [
Expanded(
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(50)),
child: ListView(
controller: scrollController,
children: [
// VEmptyView(30),
Container(
// height: ScreenUtil().setWidth(60),
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(10)),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color:
Color.fromRGBO(220, 220, 220, 1)))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
// color: Colors.red,
width: ScreenUtil().setWidth(150),
height: ScreenUtil().setWidth(35),
child: Text(
'姓名',
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333),
),
),
Expanded(
child: TextField(
maxLines: 1,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_353535),
controller: nameController,
focusNode: nameFocus,
// textAlignVertical: TextAlignVertical.top,
decoration: InputDecoration(
hintText: "填写姓名",
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(30),
),
// contentPadding:
// EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),
contentPadding: EdgeInsets.zero,
border: OutlineInputBorder(
borderSide: BorderSide.none),
),
onChanged: (value) {
print('ggg');
if (value.endsWith('先生') ||
value.endsWith('女士') ||
value.endsWith('公司')) {
nameStr =
value.substring(0, value.length - 2);
} else {
nameStr = value;
}
},
onEditingComplete: () {
print('fff');
nameFocus.unfocus();
// _homeEnterModel.nameController.text =
// nameStr + _nameSuffix();
_addNameSuffix(nameStr, _nameSuffix());
},
keyboardType: TextInputType.text,
),
),
// HEmptyView(40),
Row(
children: sexList.map((value) {
return _callButton(
onPress: () {
for (var item in sexList) {
item['select'] = false;
if (item['title'] == value['title']) {
item['select'] = true;
// _homeEnterModel.nameController.text =
// nameStr + item['title'];
if (nameStr != null &&
nameStr != '') {
_addNameSuffix(
nameStr, item['title']);
}
}
}
setState(() {});
},
content: value['title'],
hasLeftBorder: value['hasLeftBorder'],
isSelect: value['select']);
}).toList()),
],
),
),
_textfieldWidget(
'电话', '填写电话', phoneController, phoneFocus),
_textfieldWidget(
'工作单位', '填写工作单位', adressController, adressFocus),
_textfieldWidget('部门', '填写部门', departmentController,
departmentFocus),
_textfieldWidget(
'职位', '填写职位', positionController, positionFocus),
InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode()); //隐藏键盘
DialogUtil.showSelectCusmanDialog(
context,
customerProvider.labelList.map((item) {
return item.label;
}).toList(), (value) {
if (value != null) {
setState(() {
customerProvider.labelSelIndex =
value.first;
labelShow = customerProvider
.labelList[
customerProvider.labelSelIndex]
.label;
});
}
},
selecteds:
customerProvider.labelSelIndex == null
? []
: [
customerProvider.labelSelIndex
])
.then((value) {});
},
child: Container(
// height: ScreenUtil().setWidth(60),
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(50)),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: Color.fromRGBO(
220, 220, 220, 1)))),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
// color: Colors.red,
width: ScreenUtil().setWidth(150),
height: ScreenUtil().setWidth(35),
child: Text(
'自定义标签',
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333),
),
),
Expanded(
child: Text(
labelShow,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Color.fromRGBO(193, 194, 63, 1),
fontSize: ScreenUtil().setSp(28),
),
)),
HEmptyView(10),
Image.asset(
Utils.getImgPath(showLabel
? 'c_arrow_up'
: 'c_arrow_down'),
width: ScreenUtil().setWidth(24),
// height: ScreenUtil().setWidth(10),
)
],
),
)),
VEmptyView(60),
_textMulLine('忌口', '输入忌口的东西', jkController),
VEmptyView(30),
_textMulLine('喜好', '输入喜好', xhController),
VEmptyView(30),
_textMulLine('服务', '输入服务', fwController),
],
))),
RoundButton(
text: '保存',
radius: ScreenUtil().setWidth(10),
margin:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(90)),
height: ScreenUtil().setWidth(80),
fontSize: 26,
isBold: false,
onPressed: () {
_setGuestInfo();
},
),
VEmptyView(30)
],
));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/customer_list_model.dart';
import 'package:one_key/models/guest_info_model.dart';
import 'package:one_key/models/user_history_entity.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class MyCustomerDetailPage extends StatefulWidget {
final CustomerListSunModel userHistoryEntity;
final FromPage fromPage;
MyCustomerDetailPage({Key key, this.userHistoryEntity, this.fromPage})
: super(key: key);
@override
_MyCustomerDetailPageState createState() => _MyCustomerDetailPageState();
}
class _MyCustomerDetailPageState extends State<MyCustomerDetailPage> {
ScrollController controller = ScrollController();
CustomerProvider customerProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getGuestInfo();
});
bus.on("refresh_guest_info", (arg) {
_getGuestInfo();
});
}
@override
void dispose() {
EventBus().emit('refresh_guest_info');
super.dispose();
}
_getGuestInfo() async {
Map<String, String> params = {
"id": widget.userHistoryEntity.id,
'phone': widget.userHistoryEntity.phone
};
await customerProvider.getGuestInfo(context, params);
// await customerProvider.searchData(customerProvider.controller.text);
}
Widget _headerWidget() {
return Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(40),
),
decoration: BoxDecoration(color: MyColours.color_ffffff, boxShadow: [
BoxShadow(
color: MyColours.color_E0E0E0,
offset: Offset(2, -2), //x,y轴
blurRadius: ScreenUtil().setWidth(6), //阴影模糊程度
spreadRadius: 0 //阴影扩散程度
)
]),
child: Row(
children: [
Column(
children: [
Stack(
alignment: Alignment.bottomCenter,
clipBehavior: Clip.none,
children: [
Container(
width: ScreenUtil().setWidth(120),
height: ScreenUtil().setWidth(120),
padding: EdgeInsets.only(bottom: ScreenUtil().setWidth(20)),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Color.fromRGBO(239, 239, 239, 1),
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(20))),
child: Text(
customerProvider.guestInfoSunModel.guest.rnameStr != ''
? customerProvider.guestInfoSunModel.guest.rnameStr
.substring(0, 1)
: '',
style: TextStyle(
color: Color.fromRGBO(206, 206, 206, 1),
fontSize: ScreenUtil().setSp(72)),
),
),
Positioned(
bottom: ScreenUtil().setWidth(-20),
child: Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(10),
vertical: ScreenUtil().setWidth(2),
),
decoration: BoxDecoration(
color: customerProvider
.guestInfoSunModel.guest.attr !=
null &&
customerProvider
.guestInfoSunModel.guest.attr !=
''
? customerProvider
.guestInfoSunModel.guest.attr ==
'沉睡'
? Color.fromRGBO(223, 33, 81, 1)
: customerProvider
.guestInfoSunModel.guest.attr ==
'活跃'
? Color.fromRGBO(81, 170, 94, 1)
: customerProvider.guestInfoSunModel
.guest.attr ==
'流失'
? Color.fromRGBO(109, 101, 248, 1)
: Color.fromRGBO(239, 143, 49, 1)
: Colors.transparent,
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(10),
),
),
child: Text(
customerProvider.guestInfoSunModel.guest.attr,
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(28)))))
],
),
],
),
HEmptyView(30),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Container(
height: ScreenUtil().setWidth(80),
constraints:
BoxConstraints(maxWidth: ScreenUtil().setWidth(260)),
child: Text(
customerProvider.guestInfoSunModel.guest.rnameStr,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(64)),
)),
HEmptyView(10),
Container(
height: ScreenUtil().setWidth(80),
padding:
EdgeInsets.only(bottom: ScreenUtil().setWidth(8)),
alignment: Alignment.bottomLeft,
child: Text(
customerProvider.guestInfoSunModel.guest.sexStr != ''
? '[${customerProvider.guestInfoSunModel.guest.sexStr}]'
: '',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(22),
),
)),
],
),
customerProvider.guestInfoSunModel.guest.label != null
? Container(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(10)),
constraints:
BoxConstraints(maxWidth: ScreenUtil().setWidth(200)),
child: Text(
customerProvider.guestInfoSunModel.guest.label,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Color.fromRGBO(193, 194, 63, 1),
fontSize: ScreenUtil().setSp(22),
),
))
: SizedBox(),
VEmptyView(20),
InkWell(
onTap: () {
DialogUtil.goPhone(
customerProvider.guestInfoSunModel.guest.phone);
},
child: Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(10)),
decoration: BoxDecoration(
color: MyColours.color_199095,
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(20))),
child: Row(
children: [
Image.asset(
Utils.getImgPath('c_phone'),
width: ScreenUtil().setWidth(30),
),
HEmptyView(10),
Text(
customerProvider.guestInfoSunModel.guest.phone,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_ffffff,
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(34),
),
)
],
)))
],
),
Spacer(),
RoundButton(
text: '编辑',
radius: ScreenUtil().setWidth(20),
width: ScreenUtil().setWidth(90),
height: ScreenUtil().setWidth(50),
fontSize: 26,
isBold: false,
onPressed: () {
NavigatorUtil.goMyCustomerDetailEditPage(context,
customerProvider.guestInfoSunModel.guest, widget.fromPage);
},
),
],
),
);
}
Widget _lineItemWidget(String title, String content) {
return Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(30)),
color: MyColours.color_ffffff,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
title,
style: TextStyle(
fontSize: ScreenUtil().setSp(36),
color: MyColours.color_333333),
),
Text(
content,
style: TextStyle(
fontSize: ScreenUtil().setSp(26),
color: title == '忌口' ? Colors.red : MyColours.color_199095),
)
],
));
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
return Scaffold(
backgroundColor: Color.fromRGBO(246, 248, 250, 1),
appBar: SystemAppBar(
'客户详情',
onTap: () {
Navigator.of(context).pop();
},
),
body: Consumer<CustomerProvider>(builder: (context, model, _) {
if (model.pageStateGuestInfo != PageState.Success) {
return ExceptionPage(
pageState: model.pageStateGuestInfo,
callback: () {
model.pageStateGuestInfo = PageState.Loading;
model.notifyListeners();
_getGuestInfo();
},
emptyMsg: "暂时没有客户哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: controller,
child: Column(
children: [
Container(
width: double.infinity,
height: ScreenUtil().setWidth(20),
color: MyColours.color_ffffff,
),
_headerWidget(),
VEmptyView(20),
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(20)),
decoration: BoxDecoration(
color: MyColours.color_199095,
borderRadius: BorderRadius.only(
topRight:
Radius.circular(ScreenUtil().setWidth(20)),
topLeft:
Radius.circular(ScreenUtil().setWidth(20)))),
child: Row(
children: [
Expanded(
child: Text(
'已创建 ${customerProvider.guestInfoSunModel.count.createTime} 天 | 累计 ${customerProvider.guestInfoSunModel.count.leiji} 单 | 取消 ${customerProvider.guestInfoSunModel.count.quxiao} 单',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(30)),
)),
InkWell(
onTap: () {
NavigatorUtil.goMyCustomerOrderPage(
context,
customerProvider.guestInfoSunModel.guest.id,
customerProvider
.guestInfoSunModel.guest.phone);
},
child: Text('更多',
style: TextStyle(
decoration: TextDecoration.underline,
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(26)))),
],
),
),
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(20)),
child: Column(
children: [
Wrap(
children: [
Text(
'最近一次:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_333333),
),
Text(
Utils.formatFromMill(customerProvider
.guestInfoSunModel.last.ddate),
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: Color.fromRGBO(208, 31, 37, 1)),
),
Text(
customerProvider
.guestInfoSunModel.last.ddateSoltStr,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_199095),
),
Text(
' 桌位:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_333333),
),
Text(
customerProvider
.guestInfoSunModel.last.tableinfoName,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_199095),
),
Text(
' 人数:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_333333),
),
Text(
customerProvider
.guestInfoSunModel.last.actualPum ==
null
? '未记录'
: customerProvider
.guestInfoSunModel.last.actualPum,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_199095),
),
Text(
' 消费:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_333333),
),
Text(
customerProvider
.guestInfoSunModel.last.conAmount ==
null
? '未记录'
: customerProvider
.guestInfoSunModel.last.conAmount,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_199095),
)
],
),
VEmptyView(6),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'客户经理:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_333333),
),
Text(
'${customerProvider.guestInfoSunModel.last.sellerUserNickName} ${customerProvider.guestInfoSunModel.last.sellerUserPhone}',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_199095),
)
],
)
],
),
),
VEmptyView(20),
_lineItemWidget('工作单位',
'${customerProvider.guestInfoSunModel.guest.company == null ? '' : customerProvider.guestInfoSunModel.guest.company} ${customerProvider.guestInfoSunModel.guest.section == null ? '' : customerProvider.guestInfoSunModel.guest.section} ${customerProvider.guestInfoSunModel.guest.position == null ? '' : customerProvider.guestInfoSunModel.guest.position}'),
VEmptyView(20),
_lineItemWidget('忌口',
'${customerProvider.guestInfoSunModel.guest.taboos == null ? '' : customerProvider.guestInfoSunModel.guest.taboos}'),
VEmptyView(20),
_lineItemWidget('喜好',
'${customerProvider.guestInfoSunModel.guest.like == null ? '' : customerProvider.guestInfoSunModel.guest.like}'),
VEmptyView(20),
_lineItemWidget('服务',
'${customerProvider.guestInfoSunModel.guest.serve == null ? '' : customerProvider.guestInfoSunModel.guest.serve}'),
VEmptyView(20),
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(30)),
color: MyColours.color_ffffff,
child: Column(children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'纪念日',
style: TextStyle(
fontSize: ScreenUtil().setSp(36),
color: MyColours.color_333333),
),
RoundButton(
text: '编辑',
radius: ScreenUtil().setWidth(20),
width: ScreenUtil().setWidth(90),
height: ScreenUtil().setWidth(50),
fontSize: 26,
isBold: false,
onPressed: () {
NavigatorUtil.goMyFestivalEditPage(
context,
customerProvider.guestInfoSunModel.guest,
widget.userHistoryEntity.id,
widget.userHistoryEntity.phone);
},
),
],
),
ListView.builder(
shrinkWrap: true,
itemCount:
customerProvider.guestInfoSunModel.guest.cDay !=
null
? customerProvider
.guestInfoSunModel.guest.cDay.length
: 0,
controller: controller,
itemBuilder: (BuildContext context, int index) {
return Center(
child: Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(10)),
child: Text(
customerProvider.guestInfoSunModel.guest
.cDay[index].content,
style: TextStyle(
fontSize: ScreenUtil().setSp(26),
color: MyColours.color_333333),
),
));
},
)
])),
VEmptyView(20),
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(30)),
color: MyColours.color_ffffff,
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'营销记录',
style: TextStyle(
fontSize: ScreenUtil().setSp(36),
color: MyColours.color_333333),
),
Text(
'共 ${customerProvider.guestInfoSunModel.marketing?.length} 个',
style: TextStyle(
fontSize: ScreenUtil().setSp(26),
color: MyColours.color_199095),
)
],
),
ListView.builder(
shrinkWrap: true,
itemCount: customerProvider
.guestInfoSunModel.marketing?.length,
controller: controller,
itemBuilder: (BuildContext context, int index) {
Marketing marketing = customerProvider
.guestInfoSunModel.marketing[index];
return Center(
child: Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(10)),
child: Text(
'${marketing.cdateStr} ${marketing.content}',
style: TextStyle(
fontSize: ScreenUtil().setSp(26),
color: MyColours.color_333333),
),
));
},
)
],
))
],
),
)),
RoundButton(
text: '创建预订',
radius: ScreenUtil().setWidth(10),
margin:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(90)),
height: ScreenUtil().setWidth(80),
fontSize: 26,
isBold: false,
onPressed: () {},
),
VEmptyView(30)
],
);
}
}),
);
}
}
... ...
... ... @@ -26,15 +26,15 @@ import 'package:provider/provider.dart';
typedef ClickCallback = void Function(dynamic value);
class CustomerListPage extends StatefulWidget {
class MyCustomerListPage extends StatefulWidget {
final FromPage fromPage;
const CustomerListPage({Key key, this.fromPage}) : super(key: key);
const MyCustomerListPage({Key key, this.fromPage}) : super(key: key);
@override
_CustomerListPageState createState() => _CustomerListPageState();
_MyCustomerListPageState createState() => _MyCustomerListPageState();
}
class _CustomerListPageState extends State<CustomerListPage>
class _MyCustomerListPageState extends State<MyCustomerListPage>
with TickerProviderStateMixin, SingleTickerProviderStateMixin {
List _tabBarTitle;
TabController tabController;
... ... @@ -137,11 +137,15 @@ class _CustomerListPageState extends State<CustomerListPage>
Utils.showToast('请至少选择1名顾客');
return;
}
customerMakingProvider.labels = customerProvider.labels;
customerMakingProvider.selectCustomer =
customerProvider.selectCustomer;
customerMakingProvider.fromPage = widget.fromPage;
NavigatorUtil.goMakeMarkingPage(context);
if (widget.fromPage == FromPage.FromPageMyCustomer) {
customerMakingProvider.labels = customerProvider.labels;
customerMakingProvider.selectCustomer =
customerProvider.selectCustomer;
customerMakingProvider.fromPage = widget.fromPage;
NavigatorUtil.goMyMakeMarkingPage(context);
} else {
Navigator.pop(context);
}
},
child: Container(
alignment: Alignment.center,
... ... @@ -1057,9 +1061,7 @@ class _CustomerListPageState extends State<CustomerListPage>
resizeToAvoidBottomInset: false,
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
widget.fromPage == FromPage.FromPageMyCustomer
? '我的客户'
: '全店客户',
'我的客户',
onTap: () {
Navigator.of(context).pop();
},
... ...
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/guest_reserve_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class MyCustomerOrderPage extends StatefulWidget {
final String id;
final String phone;
MyCustomerOrderPage({Key key, this.id, this.phone}) : super(key: key);
@override
_MyCustomerOrderPageState createState() => _MyCustomerOrderPageState();
}
class _MyCustomerOrderPageState extends State<MyCustomerOrderPage> {
int year = DateTime.now().year;
CustomerProvider customerProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getGuestReserve();
});
}
_getGuestReserve({bool showLoading = false}) async {
Map<String, String> params = {
"id": widget.id,
"phone": widget.phone,
'year': year.toString()
};
await customerProvider.getGuestReserve(context, params,
showLoading: showLoading);
// await customerProvider.searchData(customerProvider.controller.text);
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
return Scaffold(
backgroundColor: Color.fromRGBO(246, 248, 250, 1),
appBar: SystemAppBar(
'客户订单',
onTap: () {
Navigator.pop(context);
},
),
body: Consumer<CustomerProvider>(builder: (context, model, _) {
if (model.pageStateGuestReserve != PageState.Success) {
return ExceptionPage(
pageState: model.pageStateGuestReserve,
callback: () {
model.pageStateGuestReserve = PageState.Loading;
model.notifyListeners();
_getGuestReserve();
},
emptyMsg: "暂时没有客户订单哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return Padding(
padding: EdgeInsets.symmetric(
// horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(40)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
InkWell(
onTap: () {
setState(() {
year--;
});
_getGuestReserve(showLoading: true);
},
child: Padding(
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(40),
right: ScreenUtil().setWidth(20)),
child: Image.asset(
Utils.getImgPath('c_arrow_left'),
width: ScreenUtil().setWidth(24),
))),
Text(
'${year}年',
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_333333),
),
InkWell(
onTap: () {
if (year >= DateTime.now().year) {
return;
}
setState(() {
year++;
});
_getGuestReserve(showLoading: true);
},
child: Padding(
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(20),
right: ScreenUtil().setWidth(40)),
child: Image.asset(
Utils.getImgPath(year != DateTime.now().year
? 'c_arrow_right'
: 'c_arrow_right_gray'),
width: ScreenUtil().setWidth(24),
)))
],
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
VEmptyView(20),
Wrap(
children: [
Text(
'全年累计',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
' ${customerProvider.guestReserveSunModel.count.cumulative} ',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_199095),
),
Text(
'单',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
HEmptyView(20),
Text(
'全年取消',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
' ${customerProvider.guestReserveSunModel.count.cancel} ',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_199095),
),
Text(
'单',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
],
),
VEmptyView(20),
Wrap(
children: [
Text(
'记录全额订单:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'${customerProvider.guestReserveSunModel.count.money} ',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'单',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
HEmptyView(20),
Text(
'记录人数订单:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'${customerProvider.guestReserveSunModel.count.pnum} ',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'单',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
],
),
VEmptyView(20),
Wrap(
children: [
Text(
'总消费:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'${customerProvider.guestReserveSunModel.count.countMoney} ',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'元',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
HEmptyView(20),
Text(
'总人数:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'${customerProvider.guestReserveSunModel.count.countPnum} ',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'人',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
HEmptyView(20),
Text(
'人均:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'${customerProvider.guestReserveSunModel.count.capita} ',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
'元/人',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
],
),
VEmptyView(20),
MyDivider(
double.infinity,
ScreenUtil().setWidth(1),
color: MyColours.color_E0E0E0,
),
VEmptyView(20),
],
)),
Expanded(
child: ListView.builder(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
),
shrinkWrap: true,
itemCount:
customerProvider.guestReserveSunModel.list?.length,
// controller: controller,
itemBuilder: (BuildContext context, int index) {
ListData listData =
customerProvider.guestReserveSunModel.list[index];
String tableinfo = listData.tableinfoName != ''
? ' 【${listData.tableinfoName}】'
: '';
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(6)),
child: CircleAvatar(
radius: ScreenUtil().setWidth(10),
backgroundColor: MyColours.color_199095,
),
),
HEmptyView(20),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
constraints: BoxConstraints(
maxWidth: ScreenUtil.screenWidthDp -
ScreenUtil().setWidth(140)),
child: Text(
'[${listData.statusStr}] ${listData.ddateStr} ${listData.ddateSoltStr}${tableinfo}',
maxLines: 10,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
)),
VEmptyView(20),
Row(
children: [
Text(
'人数:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
listData.actualPum == null
? '未记录'
: listData.actualPum,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
HEmptyView(20),
Text(
'消费:',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
Text(
listData.conAmount == null
? '未记录'
: listData.conAmount,
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
),
],
),
listData.nickName == null &&
listData.phone == null
? SizedBox()
: Padding(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(20)),
child: Text(
'客户经理:${listData.nickName == null ? '' : listData.nickName} ${listData.phone == null ? '' : listData.phone}',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_353535),
)),
VEmptyView(40),
],
)
],
);
},
))
],
));
}
}));
}
}
... ...
... ... @@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/guest_manage_model.dart';
import 'package:one_key/models/marketing_by_uid_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/event_bus.dart';
... ... @@ -24,13 +26,26 @@ class MyCustomerPage extends StatefulWidget {
class _MyCustomerPageState extends State<MyCustomerPage> {
ScrollController _controller = ScrollController();
CustomerProvider customerProvider;
bool showWarning = false;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_getGuestManageData();
_getMarketingByUid();
});
bus.on("refresh_my_customer_home", (arg) {
_getMarketingByUid();
});
}
@override
void dispose() {
bus.off('refresh_my_customer_home');
// bus.off("refresh_coupon_list");
super.dispose();
}
///我的客户首页
... ... @@ -40,6 +55,25 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
// setState(() {});
}
_getMarketingByUid() async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid
};
await customerProvider.getMarketingByUid(context, params);
MarketingByUidsSunModel myRecordData =
await customerProvider.getMarketingByUid(context, params);
if (myRecordData != null && myRecordData.sellerList.length > 0) {
bool temp = myRecordData.sellerList.any((value) {
return value.finishedStatus == '0';
});
setState(() {
showWarning = temp;
});
}
// await customerProvider.searchData(customerProvider.controller.text);
}
///活跃客户、沉睡客户、流失客户
Widget _percentWidget(String pnum, String btnTitle, String percent) {
return Container(
... ... @@ -109,9 +143,9 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
return ExceptionPage(
pageState: model.pageStateMyHome,
callback: () {
// getTableList();
_getGuestManageData();
},
emptyMsg: "暂时没有桌位哦",
emptyMsg: "暂时没有我的客情哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
... ... @@ -150,7 +184,7 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
VEmptyView(10),
RoundButton(
onPressed: () async {
NavigatorUtil.goCustomerListPage(
NavigatorUtil.goMyCustomerListPage(
context, FromPage.FromPageMyCustomer);
},
text: '我的客户',
... ... @@ -277,6 +311,7 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(64),
width: ScreenUtil().setWidth(180),
fontSize: 26,
isBold: false,
onPressed: () {
... ... @@ -345,6 +380,7 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(64),
width: ScreenUtil().setWidth(180),
fontSize: 26,
isBold: false,
onPressed: () {
... ... @@ -401,6 +437,7 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(64),
width: ScreenUtil().setWidth(180),
fontSize: 26,
isBold: false,
onPressed: () {
... ... @@ -417,25 +454,36 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
),
)),
Padding(
padding: EdgeInsets.only(bottom: ScreenUtil().setWidth(30)),
child: RoundButton(
onPressed: () {
NavigatorUtil.goMarketingRecordsPage(
context, FromPage.FromPageMyCustomer);
},
text: '营销记录',
fontSize: 24,
isBold: false,
textColor: MyColours.color_199095,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_199095,
height: ScreenUtil().setWidth(75),
width: ScreenUtil().setWidth(260),
radius: ScreenUtil().setWidth(10),
// image: Utils.getImgPath('add_area')
),
)
padding: EdgeInsets.only(bottom: ScreenUtil().setWidth(30)),
child: Stack(
children: [
RoundButton(
onPressed: () {
NavigatorUtil.goMyMarketingRecordsPage(
context, FromPage.FromPageMyCustomer);
},
text: '营销记录',
fontSize: 24,
isBold: false,
textColor: MyColours.color_199095,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_199095,
height: ScreenUtil().setWidth(75),
width: ScreenUtil().setWidth(260),
radius: ScreenUtil().setWidth(10),
),
showWarning
? Positioned(
right: ScreenUtil().setWidth(30),
top: ScreenUtil().setWidth(40 / 2),
child: Image.asset(
Utils.getImgPath('warning'),
width: ScreenUtil().setWidth(35),
))
: SizedBox()
],
))
]);
}
})));
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/guest_info_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class MyFestivalEditPage extends StatefulWidget {
final Guest guest;
final String idstr;
final String phone;
MyFestivalEditPage({Key key, this.guest, this.idstr, this.phone})
: super(key: key);
@override
_MyFestivalEditPageState createState() => _MyFestivalEditPageState();
}
class _MyFestivalEditPageState extends State<MyFestivalEditPage> {
CustomerProvider customerProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getGuestInfoCday();
});
}
_getGuestInfoCday() async {
Map<String, String> params = {"id": widget.idstr, 'phone': widget.phone};
await customerProvider.getGuestInfoCday(context, params);
// await customerProvider.searchData(customerProvider.controller.text);
}
_setGuestInfocDay(String id, String cday) async {
Map<String, String> params = {"gid": widget.guest.id, 'content': cday};
if (id != '') {
params["id"] = id;
}
bool sucess = await customerProvider.setGuestInfocDay(context, params,
showLoading: true);
if (sucess) {
Utils.showToast('保存成功');
//刷新当前页
_getGuestInfoCday();
// 刷新
bus.emit('refresh_guest_info');
bus.emit('refresh_guest_list');
// Navigator.pop(context);
}
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'纪念日',
onTap: () {
Navigator.pop(context);
},
),
body: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(40)),
child: Column(children: [
Expanded(child:
Consumer<CustomerProvider>(builder: (context, model, _) {
if (model.pageStateGuestInfoCday != PageState.Success) {
return ExceptionPage(
pageState: model.pageStateGuestInfoCday,
callback: () {
model.pageStateGuestInfoCday = PageState.Loading;
model.notifyListeners();
_getGuestInfoCday();
},
emptyMsg: "暂时没有纪念日哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return ListView.builder(
shrinkWrap: true,
itemCount: model.cday.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
String str = model.cday[index].content;
// str += '${name}:';
// if (yearStr != '' &&
// yearStr != null &&
// yearStr != '选填') {
// str += '${yearStr}年';
// }
// str += '${monthStr}月';
// str += '${dayStr}日';
// str += '(${gongli ? '公历' : '农历'})';
String yearStr = '选填';
String monthStr = '';
String dayStr = '';
bool gongli = true;
String content = str.substring(0, str.indexOf(':'));
if (str.contains('年')) {
yearStr = str.substring(
str.indexOf(':') + 1, str.indexOf('年'));
}
if (str.contains('月')) {
if (str.contains('年')) {
monthStr = str.substring(
str.indexOf('年') + 1, str.indexOf('月'));
} else {
monthStr = str.substring(
str.indexOf(':') + 1, str.indexOf('月'));
}
}
if (str.contains('日')) {
dayStr = str.substring(
str.indexOf('月') + 1, str.indexOf('日'));
}
if (str.contains('农历')) {
gongli = false;
}
DialogUtil.festivalAlertDialog(
context, content, 520, rCallback: (name) {
print(name);
_setGuestInfocDay(model.cday[index].id, name);
// _addCookbookClass(name, showLoading: true);
},
yearStr: yearStr,
monthStr: monthStr,
dayStr: dayStr,
gongli: gongli);
},
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(20)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
model.cday[index].content,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: ScreenUtil().setSp(26),
color: MyColours.color_333333),
)),
HEmptyView(10),
Image.asset(
Utils.getImgPath('c_edit'),
width: ScreenUtil().setWidth(40),
// height: ScreenUtil().setWidth(10),
)
],
),
));
},
);
}
})),
RoundButton(
text: '新增',
radius: ScreenUtil().setWidth(10),
margin:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(90)),
height: ScreenUtil().setWidth(80),
fontSize: 26,
isBold: false,
onPressed: () {
DialogUtil.festivalAlertDialog(context, '', 520,
rCallback: (name) {
print(name);
_setGuestInfocDay('', name);
// _addCookbookClass(name, showLoading: true);
});
},
),
VEmptyView(30)
])));
// }
// }));
}
}
... ...
import 'dart:io';
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:flutter_sms/flutter_sms.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/customer_list_model.dart';
import 'package:one_key/models/marketing_by_uid_model.dart';
import 'package:one_key/pages/coupon/coupon_page.dart';
import 'package:one_key/provider/customer_making_provider.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import 'package:sendsms/sendsms.dart';
typedef ClickCallback = void Function(dynamic value);
class MyMakeMarkingPage extends StatefulWidget {
final FromPage fromPage;
final SelfList selfList;
MyMakeMarkingPage(
{Key key, this.fromPage = FromPage.FromPageCustomerList, this.selfList})
: super(key: key);
@override
_MyMakeMarkingPageState createState() => _MyMakeMarkingPageState();
}
class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
List<String> couponList = [];
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
FocusNode _focusNode = FocusNode();
bool showDateSelWidget = false;
CustomerProvider customerProvider;
CustomerMakingProvider customerMakingProvider;
bool needClear = true;
String gid = '';
String andriodPhone = '';
List<String> iosPhone = [];
@override
void initState() {
super.initState();
_focusNode.addListener(() {
if (_focusNode.hasFocus) {
//有焦点
if (showDateSelWidget) {
Navigator.pop(context);
showDateSelWidget = false;
}
} else {
//失去焦点
// _editingController.text = '';
}
});
WidgetsBinding.instance.addPostFrameCallback((_) async {
for (CustomerListSunModel item in customerMakingProvider.selectCustomer) {
gid += '${item.id},';
if (Platform.isIOS) {
iosPhone.add(item.phone);
} else {
andriodPhone += "${item.phone};";
}
}
if (gid.endsWith(',')) {
gid = gid.substring(0, gid.length - 1);
}
if (!Platform.isIOS && andriodPhone.endsWith(';')) {
andriodPhone = andriodPhone.substring(0, andriodPhone.length - 1);
}
_couponNetworkData(isShowLoading: false);
if (widget.fromPage == FromPage.FromPageMakeRecordDetail) {
_getGuestByGid();
}
});
}
@override
void dispose() {
super.dispose();
if (needClear) {
customerMakingProvider.clearData();
}
//
}
///客户经理营销中的用户列表
_getGuestByGid({bool isShowLoading = true}) async {
// customerMakingProvider.couponSelectIndex = 0;
Map<String, String> params = {
"gid": widget.selfList.gid,
};
await customerProvider.getGuestByGid(
context,
params,
);
print('''object''');
gid = widget.selfList.gid;
customerMakingProvider.labels = customerProvider.labels;
customerMakingProvider.selectCustomer = customerProvider.selectCustomer;
// customerMakingProvider.fromPage = widget.fromPage;
customerMakingProvider.controller.text = widget.selfList.content;
if (widget.selfList.aid != null) {
//之前绑定过优惠
customerMakingProvider.isUse = true;
for (int i = 0; i < customerProvider.couponListSelect.length; i++) {
if (widget.selfList.aid == customerProvider.couponListSelect[i].id) {
customerMakingProvider.youhui =
customerProvider.couponListSelect[i].aname;
customerMakingProvider.couponSelectIndex = i;
}
}
}
customerMakingProvider.isUpdate = true;
setState(() {});
}
///消费券
_couponNetworkData({bool isShowLoading = true}) async {
// customerMakingProvider.couponSelectIndex = 0;
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
'status': '1'
};
await customerProvider.getCustomerSelectActivityNew(context, params,
isShowLoading: isShowLoading);
//此人已经新建好券
if (customerProvider.couponListSelect.length > 0) {
// couponProvider.initCouponSelect(context);
couponList = [];
for (int i = 0; i < customerProvider.couponListSelect.length; i++) {
couponList.add(customerProvider.couponListSelect[i].aname);
}
customerProvider.notifyListeners();
} else {
//没有新建的优惠券
}
}
_createMarketing() async {
if (customerMakingProvider.controller.text.trim().length == 0) {
Utils.showToast('请输入营销内容');
return;
}
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
"gid": gid,
"content": customerMakingProvider.controller.text
};
if (customerMakingProvider.youhui != '选择优惠' &&
customerMakingProvider.isUse) {
params['aid'] =
'${customerProvider.couponListSelect[customerMakingProvider.couponSelectIndex].id}';
}
await customerProvider.createMarketing(context, params, showLoading: true);
_goSms();
}
/// 商家创建营销
_createMarketingBySeller() async {
if (customerMakingProvider.controller.text.trim().length == 0) {
Utils.showToast('请输入营销内容');
return;
}
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"gid": gid,
"content": customerMakingProvider.controller.text,
'is_update': customerMakingProvider.isUpdate ? '0' : '1',
'create_user':
Provider.of<UserModel>(context, listen: false).user.role_name
};
if (customerMakingProvider.youhui != '选择优惠' &&
customerMakingProvider.isUse) {
params['aid'] =
'${customerProvider.couponListSelect[customerMakingProvider.couponSelectIndex].id}';
}
if (customerMakingProvider.isDate) {
if (customerMakingProvider.edate == '' ||
customerMakingProvider.edate == null) {
Utils.showToast('请选择最晚完成期限');
return;
}
params['edate'] = customerMakingProvider.edate;
}
await customerProvider.createMarketingBySeller(context, params,
showLoading: true);
_goSms();
}
_goSms() async {
// DialogUtil.cupertinoAlertDialog(context,
// title: '确认发送', content: '是否确定为当前所选顾客发送该优惠券', lCallback: () {
// print('取消发送');
// }, rCallback: () async {
if (Platform.isIOS) {
// List<String> phoneNumber = ['18161963378', '18729572142', '18765432345'];
String message = "test";
try {
String _result = await sendSMS(message: message, recipients: iosPhone);
print(_result);
} catch (error) {
print(error.toString());
}
} else {
print('确定发送');
// String phoneNumber = "18161963378;18729572142";
String message = "test";
// await Sendsms.onGetPermission();
// if (await Sendsms.hasPermission()) {
await Sendsms.onSendSMS(andriodPhone, message);
}
// }
// SmsModel smsModel = new SmsModel();
// // String sms = await smsModel.getSmsContent(context, params);
// String phoneNumber = "";
// await Sendsms.onSendSMS(phoneNumber, '短信内容');
// });
}
_buttonChoose(String title, ClickCallback callback) {
return InkWell(
onTap: () {
callback(title);
},
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(10)),
// height: ScreenUtil().setWidth(50),
// decoration: BoxDecoration(
// // border: Border.all(
// // width: ScreenUtil().setWidth(2),
// // color: MyColours.color_199095),
// borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Row(
children: [
Expanded(
child: Text(
title,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: title == '时间(选填)' ||
title == '(选填)' ||
title == '选择优惠' ||
!customerMakingProvider.isUse
? MyColours.color_999999
: MyColours.color_199095,
fontSize: ScreenUtil().setWidth(30)),
)),
HEmptyView(10),
Image.asset(
// Utils.getImgPath(!customerMakingProvider.isUse
// ? 'c_arrow_down_unsel'
// : 'c_arrow_down'),
Utils.getImgPath('c_arrow_down'),
width: ScreenUtil().setWidth(30),
// height: ScreenUtil().setWidth(10),
)
],
)));
}
///短信内容编辑UI
Widget _contentWidget(String hintText) {
return Container(
// height: ScreenUtil().setWidth(380),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Align(
// alignment: Alignment.centerLeft,
// child: Text(
// title,
// textAlign: TextAlign.left,
// style: TextStyle(
// color: MyColours.color_333333,
// fontWeight: FontWeight.bold,
// fontSize: ScreenUtil().setSp(34)),
// )),
// VEmptyView(30),
TextField(
controller: customerMakingProvider.controller,
// keyboardType: TextInputType.number, //键盘类型,数字键盘
maxLines: 10,
focusNode: _focusNode,
// maxLength: 50,
// maxLengthEnforced: true,
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333), //输入文本的样式
decoration: InputDecoration(
contentPadding: EdgeInsets.all(ScreenUtil().setWidth(30)),
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28),
),
fillColor: MyColours.color_F9F9F9,
// fillColor: Colors.red,
filled: true,
enabledBorder: OutlineInputBorder(
//未选中时候的颜色
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)),
borderSide: BorderSide(
color: MyColours.color_cccccc,
width: ScreenUtil().setWidth(2)),
),
focusedBorder: OutlineInputBorder(
//选中时外边框颜色
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)),
borderSide: BorderSide(
color: MyColours.app_main,
),
),
// border: OutlineInputBorder(
// borderRadius:
// BorderRadius.circular(ScreenUtil().setWidth(20)),
// borderSide: BorderSide(
// color: Colors.red, width: ScreenUtil().setWidth(2))),
),
onChanged: (value) {
setState(() {});
},
),
VEmptyView(20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
InkWell(
onTap: () {
customerMakingProvider.controller.text = '';
setState(() {});
// NavigatorUtil.goMarketingRecordsDetailPage(context);
},
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20)),
child: Text('清空',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(26))),
)),
Text(
'共 ${customerMakingProvider.controller.text.length} 字 ${customerMakingProvider.selectCustomer.length} 条短信',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(26))),
],
),
VEmptyView(40),
InkWell(
onTap: () {
customerMakingProvider.isUse = !customerMakingProvider.isUse;
setState(() {});
},
child: Row(children: [
Image.asset(
Utils.getImgPath(customerMakingProvider.isUse
? 'c_mul_select'
: 'c_mul_select_un'),
width: ScreenUtil().setWidth(30)),
HEmptyView(15),
Text(
'营销加入优惠',
style: TextStyle(
fontSize: ScreenUtil().setSp(36),
fontWeight: FontWeight.bold,
color: MyColours.color_333333),
),
])),
VEmptyView(30),
Row(children: [
Expanded(
child: Container(
height: ScreenUtil().setWidth(70),
// width: ScreenUtil().setWidth(130),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(10)),
color: Color.fromRGBO(239, 239, 239, 1)),
child:
_buttonChoose(customerMakingProvider.youhui, (value) {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
if (couponList == null || couponList.length == 0) {
Utils.showToast('暂无优惠券,请创建新优惠');
return;
}
DialogUtil.showSelectCusmanDialog(context, couponList,
(value) {
if (value != null) {
setState(() {
customerMakingProvider.couponSelectIndex =
value.first;
customerMakingProvider.youhui = couponList[
customerMakingProvider.couponSelectIndex];
});
}
},
selecteds: customerMakingProvider
.couponSelectIndex ==
null
? []
: [customerMakingProvider.couponSelectIndex])
.then((value) {});
}))),
HEmptyView(30),
InkWell(
onTap: () async {
// NavigatorUtil.goMarketingRecordsDetailPage(context);
bool needRefresh =
await NavigatorUtil.goCouponEditPage(context);
print(needRefresh);
if (needRefresh != null && needRefresh) {
//刷新页面数据
// _controller.callRefresh();
_couponNetworkData();
}
},
child: Text('创建新优惠',
style: TextStyle(
decoration: TextDecoration.underline,
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(26)))),
]),
],
),
);
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
customerMakingProvider =
Provider.of<CustomerMakingProvider>(context, listen: true);
return Scaffold(
backgroundColor: Color.fromRGBO(246, 248, 250, 1),
key: scaffoldKey,
appBar: SystemAppBar(
'创建营销任务',
onTap: () {
customerMakingProvider.clearData();
Navigator.pop(context);
},
),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
VEmptyView(10),
Container(
color: MyColours.color_199095,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(30),
vertical: ScreenUtil().setWidth(30)),
child: Row(
children: [
Expanded(
child: Text(
'已选[${customerMakingProvider.labels}]${customerMakingProvider.selectCustomer.length}位顾客',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(32)),
)),
HEmptyView(10),
InkWell(
onTap: () {
needClear = false;
if (widget.fromPage ==
FromPage.FromPageMakeRecordDetail) {
NavigatorUtil.goMyCustomerListPage(
context, FromPage.FromPageMakeRecord);
} else {
Navigator.pop(context);
}
// NavigatorUtil.goMarketingRecordsDetailPage(context);
},
child: Text('查看',
style: TextStyle(
decoration: TextDecoration.underline,
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(26)))),
],
),
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(30),
),
child: Column(
children: [VEmptyView(50), _contentWidget('输入营销短信内容')],
),
)
],
),
)),
RoundButton(
text: '群发短信',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(80),
fontSize: 26,
margin:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(230)),
isBold: false,
onPressed: () {
//群发短信
_createMarketing();
},
),
VEmptyView(30),
RoundButton(
text: '取消',
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
textColor: MyColours.color_199095,
borderColor: MyColours.color_199095,
radius: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(80),
fontSize: 26,
margin:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(230)),
isBold: false,
onPressed: () {
customerMakingProvider.clearData();
Navigator.pop(context);
},
),
VEmptyView(40),
],
),
);
}
}
... ...
import 'dart:io';
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:flutter_sms/flutter_sms.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/customer_list_model.dart';
import 'package:one_key/models/marketing_by_uid_model.dart';
import 'package:one_key/pages/coupon/coupon_page.dart';
import 'package:one_key/provider/customer_making_provider.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import 'package:sendsms/sendsms.dart';
typedef ClickCallback = void Function(dynamic value);
class MyMakeMarkingPageOnlyShow extends StatefulWidget {
final SellerList sellerList;
MyMakeMarkingPageOnlyShow({Key key, this.sellerList}) : super(key: key);
@override
_MyMakeMarkingPageOnlyShowState createState() =>
_MyMakeMarkingPageOnlyShowState();
}
class _MyMakeMarkingPageOnlyShowState extends State<MyMakeMarkingPageOnlyShow> {
List<String> couponList = [];
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
FocusNode _focusNode = FocusNode();
bool showDateSelWidget = false;
CustomerProvider customerProvider;
CustomerMakingProvider customerMakingProvider;
bool needClear = true;
String gid = '';
String andriodPhone = '';
List<String> iosPhone = [];
@override
void initState() {
super.initState();
_focusNode.addListener(() {
if (_focusNode.hasFocus) {
//有焦点
if (showDateSelWidget) {
Navigator.pop(context);
showDateSelWidget = false;
}
} else {
//失去焦点
// _editingController.text = '';
}
});
WidgetsBinding.instance.addPostFrameCallback((_) async {
for (CustomerListSunModel item in customerMakingProvider.selectCustomer) {
gid += '${item.id},';
if (Platform.isIOS) {
iosPhone.add(item.phone);
} else {
andriodPhone += "${item.phone};";
}
}
if (gid.endsWith(',')) {
gid = gid.substring(0, gid.length - 1);
}
if (!Platform.isIOS && andriodPhone.endsWith(';')) {
andriodPhone = andriodPhone.substring(0, andriodPhone.length - 1);
}
customerMakingProvider.controller.text = widget.sellerList.content;
_couponNetworkData(isShowLoading: false);
});
}
@override
void dispose() {
super.dispose();
if (needClear) {
customerMakingProvider.clearData();
}
//
}
///消费券
_couponNetworkData({bool isShowLoading = true}) async {
// customerMakingProvider.couponSelectIndex = 0;
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
'status': '1'
};
await customerProvider.getCustomerSelectActivityNew(context, params,
isShowLoading: isShowLoading);
//此人已经新建好券
if (customerProvider.couponListSelect.length > 0) {
// couponProvider.initCouponSelect(context);
couponList = [];
for (int i = 0; i < customerProvider.couponListSelect.length; i++) {
couponList.add(customerProvider.couponListSelect[i].aname);
if (widget.sellerList.aid == customerProvider.couponListSelect[i].id) {
customerMakingProvider.youhui =
customerProvider.couponListSelect[i].aname;
}
}
customerProvider.notifyListeners();
} else {
//没有新建的优惠券
}
}
_createMarketing() async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
"gid": gid,
"content": customerMakingProvider.controller.text
};
if (widget.sellerList.aid != null) {
params['aid'] = widget.sellerList.aid;
}
await customerProvider.createMarketing(context, params, showLoading: true);
_goSms();
}
/// 商家创建营销
_createMarketingBySeller() async {
if (customerMakingProvider.controller.text.trim().length == 0) {
Utils.showToast('请输入营销内容');
return;
}
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"gid": gid,
"content": customerMakingProvider.controller.text,
'is_update': customerMakingProvider.isUpdate ? '0' : '1',
'create_user':
Provider.of<UserModel>(context, listen: false).user.role_name
};
if (customerMakingProvider.youhui != '选择优惠' &&
customerMakingProvider.isUse) {
params['aid'] =
'${customerProvider.couponListSelect[customerMakingProvider.couponSelectIndex].id}';
}
if (customerMakingProvider.isDate) {
if (customerMakingProvider.edate == '' ||
customerMakingProvider.edate == null) {
Utils.showToast('请选择最晚完成期限');
return;
}
params['edate'] = customerMakingProvider.edate;
}
await customerProvider.createMarketingBySeller(context, params,
showLoading: true);
_goSms();
}
_goSms() async {
// DialogUtil.cupertinoAlertDialog(context,
// title: '确认发送', content: '是否确定为当前所选顾客发送该优惠券', lCallback: () {
// print('取消发送');
// }, rCallback: () async {
if (Platform.isIOS) {
// List<String> phoneNumber = ['18161963378', '18729572142', '18765432345'];
String message = "test";
try {
String _result = await sendSMS(message: message, recipients: iosPhone);
print(_result);
} catch (error) {
print(error.toString());
}
} else {
print('确定发送');
// String phoneNumber = "18161963378;18729572142";
String message = "test";
// await Sendsms.onGetPermission();
// if (await Sendsms.hasPermission()) {
await Sendsms.onSendSMS(andriodPhone, message);
}
// }
// SmsModel smsModel = new SmsModel();
// // String sms = await smsModel.getSmsContent(context, params);
// String phoneNumber = "";
// await Sendsms.onSendSMS(phoneNumber, '短信内容');
// });
}
_buttonChoose(String title, ClickCallback callback) {
return InkWell(
onTap: () {
callback(title);
},
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(10)),
// height: ScreenUtil().setWidth(50),
// decoration: BoxDecoration(
// // border: Border.all(
// // width: ScreenUtil().setWidth(2),
// // color: MyColours.color_199095),
// borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Row(
children: [
Expanded(
child: Text(
title,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setWidth(30)),
)),
// HEmptyView(10),
// Image.asset(
// // Utils.getImgPath(!customerMakingProvider.isUse
// // ? 'c_arrow_down_unsel'
// // : 'c_arrow_down'),
// Utils.getImgPath('c_arrow_down'),
// width: ScreenUtil().setWidth(30),
// // height: ScreenUtil().setWidth(10),
// )
],
)));
}
///短信内容编辑UI
Widget _contentWidget(String hintText) {
return Container(
// height: ScreenUtil().setWidth(380),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Align(
// alignment: Alignment.centerLeft,
// child: Text(
// title,
// textAlign: TextAlign.left,
// style: TextStyle(
// color: MyColours.color_333333,
// fontWeight: FontWeight.bold,
// fontSize: ScreenUtil().setSp(34)),
// )),
// VEmptyView(30),
TextField(
// enabled: false,
enableInteractiveSelection: false,
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode());
},
// enableInteractiveSelection: false,
controller: customerMakingProvider.controller,
// keyboardType: TextInputType.number, //键盘类型,数字键盘
maxLines: 10,
focusNode: _focusNode,
// maxLength: 50,
// maxLengthEnforced: true,
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333), //输入文本的样式
decoration: InputDecoration(
contentPadding: EdgeInsets.all(ScreenUtil().setWidth(30)),
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28),
),
fillColor: MyColours.color_F9F9F9,
// fillColor: Colors.red,
filled: true,
enabledBorder: OutlineInputBorder(
//未选中时候的颜色
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)),
borderSide: BorderSide(
color: MyColours.color_cccccc,
width: ScreenUtil().setWidth(2)),
),
focusedBorder: OutlineInputBorder(
//选中时外边框颜色
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)),
borderSide: BorderSide(
color: MyColours.app_main,
),
),
// border: OutlineInputBorder(
// borderRadius:
// BorderRadius.circular(ScreenUtil().setWidth(20)),
// borderSide: BorderSide(
// color: Colors.red, width: ScreenUtil().setWidth(2))),
),
onChanged: (value) {
setState(() {});
},
),
VEmptyView(20),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
// InkWell(
// onTap: () {
// customerMakingProvider.controller.text = '';
// setState(() {});
// // NavigatorUtil.goMarketingRecordsDetailPage(context);
// },
// child: Padding(
// padding: EdgeInsets.symmetric(
// horizontal: ScreenUtil().setWidth(20)),
// child: Text('清空',
// style: TextStyle(
// color: MyColours.color_199095,
// fontSize: ScreenUtil().setSp(26))),
// )),
Text(
'共 ${customerMakingProvider.controller.text.length} 字 ${widget.sellerList.guestCount} 条短信',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(26))),
],
),
widget.sellerList.aid != null
? Column(children: [
VEmptyView(40),
InkWell(
onTap: () {
customerMakingProvider.isUse =
!customerMakingProvider.isUse;
setState(() {});
},
child: Row(children: [
Image.asset(Utils.getImgPath('c_not_edit'),
width: ScreenUtil().setWidth(30)),
HEmptyView(15),
Text(
'营销加入优惠',
style: TextStyle(
fontSize: ScreenUtil().setSp(36),
fontWeight: FontWeight.bold,
color: MyColours.color_333333),
),
])),
VEmptyView(30),
Row(children: [
Expanded(
child: Container(
height: ScreenUtil().setWidth(70),
// width: ScreenUtil().setWidth(130),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(10)),
color: Color.fromRGBO(239, 239, 239, 1)),
child: _buttonChoose(customerMakingProvider.youhui,
(value) {
// FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
// if (couponList == null || couponList.length == 0) {
// Utils.showToast('暂无优惠券,请创建新优惠');
// return;
// }
// DialogUtil.showSelectCusmanDialog(context, couponList,
// (value) {
// if (value != null) {
// setState(() {
// customerMakingProvider.couponSelectIndex =
// value.first;
// customerMakingProvider.youhui = couponList[
// customerMakingProvider.couponSelectIndex];
// });
// }
// },
// selecteds: customerMakingProvider
// .couponSelectIndex ==
// null
// ? []
// : [customerMakingProvider.couponSelectIndex])
// .then((value) {});
}))),
// HEmptyView(30),
// InkWell(
// onTap: () async {
// // NavigatorUtil.goMarketingRecordsDetailPage(context);
// bool needRefresh =
// await NavigatorUtil.goCouponEditPage(context);
// print(needRefresh);
// if (needRefresh != null && needRefresh) {
// //刷新页面数据
// // _controller.callRefresh();
// _couponNetworkData();
// }
// },
// child: Text('创建新优惠',
// style: TextStyle(
// decoration: TextDecoration.underline,
// color: MyColours.color_199095,
// fontSize: ScreenUtil().setSp(26)))),
])
])
: SizedBox()
],
),
);
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
customerMakingProvider =
Provider.of<CustomerMakingProvider>(context, listen: true);
return Scaffold(
backgroundColor: Color.fromRGBO(246, 248, 250, 1),
key: scaffoldKey,
appBar: SystemAppBar(
'创建营销任务',
onTap: () {
customerMakingProvider.clearData();
Navigator.pop(context);
},
),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
VEmptyView(10),
Container(
color: MyColours.color_199095,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(30),
vertical: ScreenUtil().setWidth(30)),
child: Row(
children: [
Expanded(
child: Text(
'已选[全店任务]${widget.sellerList.guestCount}位顾客',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(32)),
)),
HEmptyView(10),
InkWell(
onTap: () {
needClear = false;
Navigator.pop(context);
// NavigatorUtil.goMarketingRecordsDetailPage(context);
},
child: Text('仅查看',
style: TextStyle(
decoration: TextDecoration.underline,
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(26)))),
],
),
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(30),
),
child: Column(
children: [VEmptyView(50), _contentWidget('输入营销短信内容')],
),
)
],
),
)),
RoundButton(
text: '群发短信',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(80),
fontSize: 26,
margin:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(230)),
isBold: false,
onPressed: () {
//群发短信
_createMarketing();
},
),
VEmptyView(30),
RoundButton(
text: '取消',
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
textColor: MyColours.color_199095,
borderColor: MyColours.color_199095,
radius: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(80),
fontSize: 26,
margin:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(230)),
isBold: false,
onPressed: () {
customerMakingProvider.clearData();
Navigator.pop(context);
},
),
VEmptyView(40),
],
),
);
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/marketing_by_id_model.dart';
import 'package:one_key/models/marketing_by_uid_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/row_multi_text.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class MyMarketingRecordsDetailPage extends StatefulWidget {
final String idstr;
final SelfList selfList;
MyMarketingRecordsDetailPage({Key key, this.idstr, this.selfList})
: super(key: key);
@override
_MyMarketingRecordsDetailPageState createState() =>
_MyMarketingRecordsDetailPageState();
}
class _MyMarketingRecordsDetailPageState
extends State<MyMarketingRecordsDetailPage> {
CustomerProvider customerProvider;
String aidStr = '';
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
// if (widget.fromPage == FromPage.FromPageStoreCustomer) {
// _getMarketingBySeller();
// }
// _getMarketingById();
_couponNetworkData();
});
}
@override
void dispose() {
super.dispose();
}
// _getMarketingById() async {
// Map<String, String> params = {"id": widget.idstr};
// await customerProvider.getMarketingById(context, params);
// if (customerProvider.pageStateMarketingRecordDetail == PageState.Success) {
// _couponNetworkData();
// }
// // await customerProvider.searchData(customerProvider.controller.text);
// }
///消费券
_couponNetworkData({bool isShowLoading = true}) async {
// customerMakingProvider.couponSelectIndex = 0;
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
};
await customerProvider.getCustomerSelectActivityNew(context, params,
isShowLoading: isShowLoading);
//此人已经新建好券
if (customerProvider.couponListSelect.length > 0) {
for (int i = 0; i < customerProvider.couponListSelect.length; i++) {
if (widget.selfList.aid == customerProvider.couponListSelect[i].id) {
aidStr = customerProvider.couponListSelect[i].aname;
}
}
customerProvider.notifyListeners();
} else {
//没有新建的优惠券
}
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
return Scaffold(
backgroundColor: Color.fromRGBO(246, 248, 250, 1),
appBar: SystemAppBar(
'营销详情',
onTap: () {
Navigator.pop(context);
},
),
body: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(30),
// vertical: ScreenUtil().setWidth(40)
),
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Stack(
alignment: Alignment.bottomCenter,
children: [
Column(
children: [
RowMultiText(
'创建日期',
widget.selfList.cdateStr,
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
RowMultiText(
'创建人',
Provider.of<UserModel>(context, listen: false)
.user
.nickName,
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
],
),
// Positioned(
// child: Image.asset(
// Utils.getImgPath('c_state_ing'),
// width: ScreenUtil().setWidth(140),
// ))
],
),
RowMultiText(
'优惠信息',
aidStr,
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
Padding(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(25),
bottom: ScreenUtil().setWidth(20)),
child: Text(
'短信内容',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(30)),
)),
Padding(
padding: EdgeInsets.only(
bottom: ScreenUtil().setWidth(25)),
child: Text(
widget.selfList.content,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(30)),
)),
Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(25),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'我的客户人数',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(30)),
),
Spacer(),
Text('${widget.selfList.guestCount}人',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(30))),
HEmptyView(10),
InkWell(
onTap: () {
// NavigatorUtil.goMyMarketingRecordsDetailPage(context);
},
child: Text('查看',
style: TextStyle(
decoration:
TextDecoration.underline,
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(30)))),
])),
]))),
Column(
children: [
RoundButton(
text: '再次创建',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
textColor: MyColours.color_ffffff,
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(10),
height: ScreenUtil().setWidth(80),
fontSize: 26,
margin: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(200)),
isBold: false,
onPressed: () {
NavigatorUtil.goMyMakeMarkingPage(context,
selfList:
widget.selfList,
fromPage:
FromPage.FromPageMakeRecordDetail);
},
),
VEmptyView(30),
],
)
],
)));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/marketing_by_id_model.dart';
import 'package:one_key/models/marketing_by_uid_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/row_multi_text.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class SellerMyMarketingRecordsDetailPage extends StatefulWidget {
final String idstr;
final SellerList sellerList;
SellerMyMarketingRecordsDetailPage({Key key, this.idstr, this.sellerList})
: super(key: key);
@override
_SellerMyMarketingRecordsDetailPageState createState() =>
_SellerMyMarketingRecordsDetailPageState();
}
class _SellerMyMarketingRecordsDetailPageState
extends State<SellerMyMarketingRecordsDetailPage> {
CustomerProvider customerProvider;
String aidStr = '';
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
// if (widget.fromPage == FromPage.FromPageStoreCustomer) {
// _getMarketingBySeller();
// }
// _getMarketingById();
_couponNetworkData();
});
}
@override
void dispose() {
super.dispose();
}
// _getMarketingById() async {
// Map<String, String> params = {"id": widget.idstr};
// await customerProvider.getMarketingById(context, params);
// if (customerProvider.pageStateMarketingRecordDetail == PageState.Success) {
// _couponNetworkData();
// }
// // await customerProvider.searchData(customerProvider.controller.text);
// }
///消费券
_couponNetworkData({bool isShowLoading = true}) async {
// customerMakingProvider.couponSelectIndex = 0;
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
};
await customerProvider.getCustomerSelectActivityNew(context, params,
isShowLoading: isShowLoading);
//此人已经新建好券
if (customerProvider.couponListSelect.length > 0) {
for (int i = 0; i < customerProvider.couponListSelect.length; i++) {
if (widget.sellerList.aid == customerProvider.couponListSelect[i].id) {
aidStr = customerProvider.couponListSelect[i].aname;
}
}
customerProvider.notifyListeners();
} else {
//没有新建的优惠券
}
}
//构建经理btn
List<Widget> _buildLabelItem(List<SellerUser> data,
{Color bgColor = MyColours.color_199095}) {
List<Widget> items = [];
for (SellerUser item in data) {
String title = '${item.nickName}经理';
title += item.finishedStatus == 0 ? '(未完成)' : '(已完成)';
items.add(InkWell(
onTap: () {},
child: Container(
// height: ScreenUtil().setWidth(40),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
color: title.contains('未完成')
? Color.fromRGBO(207, 29, 35, 1)
: MyColours.color_199095,
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Text(
title,
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(26),
),
),
)));
}
return items;
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
return Scaffold(
backgroundColor: Color.fromRGBO(246, 248, 250, 1),
appBar: SystemAppBar(
'营销任务详情',
onTap: () {
Navigator.pop(context);
},
),
body: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(30),
// vertical: ScreenUtil().setWidth(40)
),
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Stack(
alignment: Alignment.bottomCenter,
children: [
Column(
children: [
RowMultiText(
'创建日期',
widget.sellerList.cdateStr,
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
RowMultiText(
'创建人',
widget.sellerList.createUser,
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
],
),
widget.sellerList.finishedStatus == '0' ||
widget.sellerList.finishedStatus == '1' ||
widget.sellerList.finishedStatus == '2'
? Positioned(
child: Image.asset(
Utils.getImgPath(widget
.sellerList.finishedStatus ==
'0'
? 'c_state_ing'
: widget.sellerList.finishedStatus == '1'
? 'c_state_done'
: 'c_state_cancel'),
width: ScreenUtil().setWidth(140),
))
: SizedBox()
],
),
RowMultiText(
'完成期限',
widget.sellerList.edate == null
? '无限制'
: widget.sellerList.edate,
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
RowMultiText(
'修改短信内容',
widget.sellerList.isUpdate == '1' ? '可修改' : '不可修改',
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
RowMultiText(
'优惠信息',
aidStr,
textColor: MyColours.color_333333,
bgColor: Color.fromRGBO(246, 248, 250, 1),
),
Padding(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(25),
bottom: ScreenUtil().setWidth(20)),
child: Text(
'短信内容',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(30)),
)),
Padding(
padding: EdgeInsets.only(
bottom: ScreenUtil().setWidth(25)),
child: Text(
widget.sellerList.content,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(30)),
)),
Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(25),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'总客户人数',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(30)),
),
Spacer(),
Text('${widget.sellerList.guestCount}人',
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(30))),
HEmptyView(10),
InkWell(
onTap: () {
// NavigatorUtil.goSellerMyMarketingRecordsDetailPage(context);
},
child: Text('查看',
style: TextStyle(
decoration:
TextDecoration.underline,
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(30)))),
])),
]))),
Column(
children: [
widget.sellerList.finishedStatus == '0'
? RoundButton(
text: '立刻完成',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
textColor: MyColours.color_ffffff,
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(10),
height: ScreenUtil().setWidth(80),
fontSize: 26,
margin: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(200)),
isBold: false,
onPressed: () {
NavigatorUtil.goMyMakeMarkingPageOnlyShow(
context, widget.sellerList);
},
)
: SizedBox(),
VEmptyView(30),
],
)
],
)));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/marketing_by_seller_model.dart';
import 'package:one_key/models/marketing_by_uid_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
class MyMarketingRecordsPage extends StatefulWidget {
final FromPage fromPage;
MyMarketingRecordsPage({Key key, this.fromPage}) : super(key: key);
@override
_MyMarketingRecordsPageState createState() => _MyMarketingRecordsPageState();
}
class _MyMarketingRecordsPageState extends State<MyMarketingRecordsPage> {
CustomerProvider customerProvider;
ScrollController _controller = ScrollController();
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getMarketingByUid();
});
}
@override
void dispose() {
super.dispose();
}
_getMarketingByUid() async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid
};
await customerProvider.getMarketingByUid(context, params);
// await customerProvider.searchData(customerProvider.controller.text);
}
@override
Widget build(BuildContext context) {
customerProvider = Provider.of<CustomerProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
widget.fromPage == FromPage.FromPageMyCustomer ? '营销记录' : '全店营销记录',
onTap: () {
Navigator.pop(context);
},
),
body: Consumer<CustomerProvider>(builder: (context, model, _) {
if (model.pageStateMarketingRecordMy != PageState.Success) {
return ExceptionPage(
pageState: model.pageStateMarketingRecordMy,
callback: () {
model.pageStateMarketingRecordMy = PageState.Loading;
model.notifyListeners();
_getMarketingByUid();
},
emptyMsg: "暂时没有营销记录哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return SingleChildScrollView(
controller: _controller,
child: Column(
children: [
ListView.builder(
shrinkWrap: true,
controller: _controller,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
// vertical: ScreenUtil().setWidth(40)
),
itemCount: model.myRecordData.sellerList.length,
itemBuilder: (BuildContext context, int index) {
SellerList data = model.myRecordData.sellerList[index];
return Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(20)),
child: Row(
children: [
data.finishedStatus == '0'
? Image.asset(Utils.getImgPath('warning'),
width: ScreenUtil().setWidth(30))
: Container(
width: ScreenUtil().setWidth(30),
),
HEmptyView(10),
Text(data.cdateStr,
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(26))),
HEmptyView(10),
RoundButton(
text: '全店任务',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(10),
width: ScreenUtil().setWidth(132),
height: ScreenUtil().setWidth(50),
fontSize: 26,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(10)),
isBold: false,
onPressed: () {
// NavigatorUtil.goEnterStoreEnvironmentPage(context);
},
),
HEmptyView(10),
Container(
width: ScreenUtil().setWidth(110),
child: Text(
data.finishedStatus == '0'
? '暂未完成'
: data.finishedStatus == '1'
? '已完成'
: data.finishedStatus == '2'
? '已取消'
: '',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: data.finishedStatus == '0'
? Colors.red
: data.finishedStatus == '1'
? MyColours.color_199095
: MyColours.color_999999,
fontSize: ScreenUtil().setSp(26)))),
HEmptyView(10),
Expanded(
child: Text(
data.edate == null
? '无限制'
: '剩余${11111}天',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(26)))),
InkWell(
onTap: () {
NavigatorUtil
.goSellerMyMarketingRecordsDetailPage(
context, data.id, data);
},
child: Text('查看详情',
style: TextStyle(
decoration:
TextDecoration.underline,
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(26)))),
],
));
}),
ListView.builder(
shrinkWrap: true,
controller: _controller,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
// vertical: ScreenUtil().setWidth(40)
),
itemCount: model.myRecordData.selfList.length,
itemBuilder: (BuildContext context, int index) {
SelfList data = model.myRecordData.selfList[index];
return Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(20)),
child: Row(
children: [
// data.finishedStatus == '0'
// ? Image.asset(Utils.getImgPath('warning'),
// width: ScreenUtil().setWidth(30))
// :
Container(
width: ScreenUtil().setWidth(30),
),
HEmptyView(10),
Text(data.cdateStr,
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(26))),
HEmptyView(10),
RoundButton(
text: '个人',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
// borderColor: MyColours.color_999999,
radius: ScreenUtil().setWidth(10),
width: ScreenUtil().setWidth(132),
height: ScreenUtil().setWidth(50),
fontSize: 26,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(10)),
isBold: false,
onPressed: () {
// NavigatorUtil.goEnterStoreEnvironmentPage(context);
},
),
Spacer(),
// HEmptyView(10),
// Expanded(
// child: Text(
// data.finishedStatus == '0'
// ? '暂未完成'
// : data.finishedStatus == '1'
// ? '已完成'
// : data.finishedStatus == '2'
// ? '已取消'
// : '',
// overflow: TextOverflow.ellipsis,
// style: TextStyle(
// color: data.finishedStatus == '0'
// ? Colors.red
// : data.finishedStatus == '1'
// ? MyColours.color_199095
// : MyColours.color_999999,
// fontSize: ScreenUtil().setSp(26)))),
// HEmptyView(10),
// Expanded(
// child: Text(
// data.edate == null ? '无限制' : '剩余${11111}天',
// overflow: TextOverflow.ellipsis,
// style: TextStyle(
// color: MyColours.color_333333,
// fontSize: ScreenUtil().setSp(26)))),
InkWell(
onTap: () {
NavigatorUtil
.goMyMarketingRecordsDetailPage(
context, data.id, data);
},
child: Text('查看详情',
style: TextStyle(
decoration:
TextDecoration.underline,
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(26)))),
],
));
}),
],
));
}
}),
);
}
}
... ...