Commit 54987decec0998b36aaabb4c3b76cce0e2f569ce

Authored by wdn127929
1 parent fe8ecc40

线上订单变更预订bug

... ... @@ -12,14 +12,14 @@ if (flutterRoot == null) {
}
def flutterVersionCode = "331"
def flutterVersionCode = "338"
if (flutterVersionCode == null) {
flutterVersionCode = '331'
flutterVersionCode = '338'
}
def flutterVersionName = "3.3.1"
def flutterVersionName = "3.3.8"
if (flutterVersionName == null) {
flutterVersionName = '3.3.1'
flutterVersionName = '3.3.8'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
... ...
... ... @@ -502,7 +502,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 3.3.0;
MARKETING_VERSION = 3.3.8;
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
... ... @@ -647,7 +647,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 3.3.0;
MARKETING_VERSION = 3.3.8;
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
... ... @@ -682,7 +682,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = 3.3.0;
MARKETING_VERSION = 3.3.8;
PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
... ...
... ... @@ -74,7 +74,9 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
void initState() {
super.initState();
dateTime = DateTime.now();
// dateTime = DateTime.now();
String ddate = widget.detailEntity.ddate.toString() + '000';
dateTime = DateTime.fromMillisecondsSinceEpoch(int.parse(ddate));
_nameNode.addListener(() {
if (_nameNode.hasFocus) {
print('得到焦点');
... ... @@ -92,7 +94,6 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
// Provider.of<NotebookDetailChangeModel>(context, listen: false);
sid = Provider.of<UserModel>(context, listen: false).user.sellerid;
_notebookDetailChangeModel.initDateHourMinuteList(context);
String ddate = widget.detailEntity.ddate.toString() + '000';
_notebookDetailChangeModel.getNewTableList(
context,
ddate,
... ... @@ -694,7 +695,9 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
Expanded(
child: TextField(
maxLines: 1,
inputFormatters: [LengthLimitingTextInputFormatter(25)],
inputFormatters: [
LengthLimitingTextInputFormatter(100)
],
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
... ... @@ -703,7 +706,7 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
focusNode: _needNode,
// textAlignVertical: TextAlignVertical.top,
decoration: InputDecoration(
hintText: "客户要求(25字以内,选填)",
hintText: "客户要求(100字以内,选填)",
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(34),
... ... @@ -921,8 +924,8 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
}
}
}
if (currentRemark.length > 25) {
currentRemark = currentRemark.substring(0, 25);
if (currentRemark.length > 100) {
currentRemark = currentRemark.substring(0, 100);
}
setState(() {
_notebookDetailChangeModel.customController.text = currentRemark;
... ... @@ -1455,8 +1458,8 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
item.selected = true;
}
// setState(() {});
int dateTimeMill =
dateTime.millisecondsSinceEpoch;
int dateTimeMill = _notebookDetailChangeModel
.dateTime.millisecondsSinceEpoch;
await _notebookDetailChangeModel
.getNewTableList(
... ... @@ -1735,7 +1738,7 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
textBaseline: TextBaseline.alphabetic),
textAlignVertical: TextAlignVertical.center,
maxLines: 5,
maxLength: 25,
maxLength: 100,
decoration: InputDecoration(
hintText: "请输入备注或点击快捷选择标签",
hintStyle: TextStyle(
... ... @@ -1966,7 +1969,7 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
"1"
? //判断是否在线预订
await _notebookDetailChangeModel
.updateOnlineReserveInfo(context)
.updateOnlineReserveInfo(context, nameStr)
: await _notebookDetailChangeModel
.setReserveInfo(context, nameStr);
if (ObjectUtil.isNotEmpty(_model.row) ||
... ...
... ... @@ -674,8 +674,8 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
}
}
}
if (currentRemark.length > 25) {
currentRemark = currentRemark.substring(0, 25);
if (currentRemark.length > 100) {
currentRemark = currentRemark.substring(0, 100);
}
state(() {
_cusdemController.text = currentRemark;
... ... @@ -760,7 +760,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
textBaseline: TextBaseline.alphabetic),
textAlignVertical: TextAlignVertical.center,
maxLines: 5,
maxLength: 25,
maxLength: 100,
decoration: InputDecoration(
hintText: "请输入备注或点击快捷选择标签",
hintStyle: TextStyle(
... ...
... ... @@ -318,9 +318,9 @@ class SelectTableFPageState extends State<SelectTableFPage> {
currentArea = '全部';
_chooseTableModel.currentTables = _chooseTableModel.tablesAll;
}
if (areas.length == 1) {
currentArea = areaTableMap.keys.first;
}
// if (areas.length == 1) {
// currentArea = areaTableMap.keys.first;
// }
}
_chooseTableModel.pageState = PageState.Success;
... ...
... ... @@ -105,6 +105,7 @@ class InvicationPageState extends State<InvicationPage>
bool needBack = false;
bool needBlack = false;
bool needHistory = false;
bool needWechat = false;
String youhui = '选择优惠';
ScrollController scrollController = ScrollController();
final GlobalKey botGlobalKey = GlobalKey();
... ... @@ -120,7 +121,11 @@ class InvicationPageState extends State<InvicationPage>
if (_nameNode.hasFocus) {
showOverlay(context);
} else {
if (!needBack && !needBlack && !needHistory && !_phoneNode.hasFocus) {
if (!needBack &&
!needBlack &&
!needHistory &&
!_phoneNode.hasFocus &&
!needWechat) {
_showConfirmWidget();
}
removeOverlay();
... ... @@ -132,7 +137,11 @@ class InvicationPageState extends State<InvicationPage>
showOverlay(context);
Scrollable.ensureVisible(botGlobalKey.currentContext);
} else {
if (!needBack && !needBlack && !needHistory && !_nameNode.hasFocus) {
if (!needBack &&
!needBlack &&
!needHistory &&
!_nameNode.hasFocus &&
!needWechat) {
_showConfirmWidget();
}
... ... @@ -181,7 +190,12 @@ class InvicationPageState extends State<InvicationPage>
}
_showConfirmWidget(
{needBack = false, needSex = false, needHistory = false, int index}) {
{needBack = false,
needSex = false,
needHistory = false,
needWechat = false,
int index,
VoidCallback callback}) {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
String phone = '';
String name = '';
... ... @@ -223,59 +237,78 @@ class InvicationPageState extends State<InvicationPage>
if (needBlack) {
needBlack = false;
}
if (needWechat) {
needWechat = false;
callback();
}
if (_baseIndoProvider.phoneController.text.trim().length > 0) {
_baseIndoProvider.phoneController.text = oldPhone;
}
if (nameStr != null && nameStr.trim().length > 0) {
nameStr = oldName;
for (var item in _baseIndoProvider.sexList) {
if (item['select']) {
if (nameStr != null && nameStr != '') {
_addNameSuffix(nameStr, item['title']);
} else {
_baseIndoProvider.nameController.text = '';
}
}
}
}
setState(() {});
}
}, rCallback: () {
}, rCallback: () async {
showPhoneHistory = false;
if (needBack) {
needBack = false;
Navigator.of(context).pop();
}
if (needSex) {
needSex = false;
}
if (needHistory) {
setState(() {
showPhoneHistory = false;
_baseIndoProvider.phoneController.text =
_baseIndoProvider.userHistorys[index].phone != null
? _baseIndoProvider.userHistorys[index].phone
: '';
// _homeEnterModel.nameController.text =
// _homeEnterModel
// .userHistorys[index].rname +
// _nameSuffix();
_addNameSuffix(
_baseIndoProvider.userHistorys[index].rname, _nameSuffix());
nameStr = _baseIndoProvider.userHistorys[index].rname;
_phoneNode.unfocus();
_baseIndoProvider.userHistorys.clear();
});
needHistory = false;
}
if (needBlack) {
needBlack = false;
if (needWechat) {
needWechat = false;
await _updateReserve();
callback();
} else {
if (needBack) {
needBack = false;
Navigator.of(context).pop();
}
if (needSex) {
needSex = false;
}
if (needHistory) {
setState(() {
showPhoneHistory = false;
_baseIndoProvider.phoneController.text =
_baseIndoProvider.userHistorys[index].phone != null
? _baseIndoProvider.userHistorys[index].phone
: '';
// _homeEnterModel.nameController.text =
// _homeEnterModel
// .userHistorys[index].rname +
// _nameSuffix();
_addNameSuffix(
_baseIndoProvider.userHistorys[index].rname, _nameSuffix());
nameStr = _baseIndoProvider.userHistorys[index].rname;
_phoneNode.unfocus();
_baseIndoProvider.userHistorys.clear();
});
needHistory = false;
}
if (needBlack) {
needBlack = false;
}
_updateReserve();
}
_updateReserve();
});
} else {
if (needBack) {
needBack = false;
Navigator.of(context).pop();
}
if (needWechat) {
needWechat = false;
callback();
}
}
}
... ... @@ -2114,92 +2147,111 @@ class InvicationPageState extends State<InvicationPage>
ScreenUtil().setWidth(40)),
child: Column(children: [
RoundButton(
text: '微信通知',
width: double.infinity,
height: ScreenUtil().setWidth(84),
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
textColor: MyColours.color_ffffff,
fontSize: 34,
radius: ScreenUtil().setWidth(10),
isBold: false,
onPressed: () async {
// Uint8List image = await _getImage();
print(widget.rid);
print(Provider.of<UserModel>(context, listen: false)
.user
.openid);
// if (ObjectUtil.isEmpty(
// _baseIndoProvider.baseInfoSunModel)) {
// Utils.showToast('请输入个人资料');
// return;
// }
// if (ObjectUtil.isEmpty(
// _baseIndoProvider.baseInfoSunModel.name)) {
// Utils.showToast('请填写您的姓名');
// return;
// }
if (ObjectUtil.isEmpty(_baseIndoProvider.baseInfoSunModel) ||
ObjectUtil.isEmpty(
_baseIndoProvider.baseInfoSunModel.phone)) {
Utils.showToast('请填写您的联系电话');
return;
}
// if (ObjectUtil.isEmpty(
// _baseIndoProvider.baseInfoSunModel.position)) {
// Utils.showToast('请填写您在餐厅中的职位');
// return;
// }
// if (ObjectUtil.isEmpty(
// _baseIndoProvider.baseInfoSunModel.phone)) {
// Utils.showToast('请上传您的头像');
// return;
// }
// if (ObjectUtil.isEmpty(
// _baseIndoProvider.baseInfoSunModel.qrcode)) {
// Utils.showToast('请上传您的微信二维码');
// return;
// }
// if (!couponProvider.hasModify && youhui != '选择优惠') {
if (youhui != '选择优惠') {
Map<String, String> params = {
"rid": widget.rid,
"aid":
'${couponProvider.couponListSelect[couponSelectIndex].id}'
};
bool isSuc = await couponProvider.setActivityAsReserve(
context, params);
if (isSuc) {
couponProvider.hasModify = true;
bool isSuccess = await Utils.goShareInvicationToWeChat(
widget.rid,
Provider.of<UserModel>(context, listen: false)
.user
.openid);
print(isSuccess);
if (isSuccess) {
_addForward();
text: '微信通知',
width: double.infinity,
height: ScreenUtil().setWidth(84),
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
textColor: MyColours.color_ffffff,
fontSize: 34,
radius: ScreenUtil().setWidth(10),
isBold: false,
onPressed: () async {
if (_nameNode.hasFocus || _phoneNode.hasFocus) {
needWechat = true;
_showConfirmWidget(
needWechat: true,
callback: () async {
if (ObjectUtil.isEmpty(
_baseIndoProvider.baseInfoSunModel) ||
ObjectUtil.isEmpty(
_baseIndoProvider.baseInfoSunModel.phone)) {
Utils.showToast('请填写经理的联系电话');
return;
}
if (youhui != '选择优惠') {
Map<String, String> params = {
"rid": widget.rid,
"aid":
'${couponProvider.couponListSelect[couponSelectIndex].id}'
};
bool isSuc = await couponProvider
.setActivityAsReserve(context, params);
if (isSuc) {
couponProvider.hasModify = true;
bool isSuccess =
await Utils.goShareInvicationToWeChat(
context,
widget.rid,
Provider.of<UserModel>(context,
listen: false)
.user
.openid);
print(isSuccess);
if (isSuccess) {
_addForward();
}
}
} else {
bool isSuccess =
await Utils.goShareInvicationToWeChat(
context,
widget.rid,
Provider.of<UserModel>(context,
listen: false)
.user
.openid);
if (isSuccess) {
_addForward();
}
}
});
removeOverlay();
} else {
if (ObjectUtil.isEmpty(
_baseIndoProvider.baseInfoSunModel) ||
ObjectUtil.isEmpty(
_baseIndoProvider.baseInfoSunModel.phone)) {
Utils.showToast('请填写经理的联系电话');
return;
}
if (youhui != '选择优惠') {
Map<String, String> params = {
"rid": widget.rid,
"aid":
'${couponProvider.couponListSelect[couponSelectIndex].id}'
};
bool isSuc = await couponProvider.setActivityAsReserve(
context, params);
if (isSuc) {
couponProvider.hasModify = true;
bool isSuccess =
await Utils.goShareInvicationToWeChat(
context,
widget.rid,
Provider.of<UserModel>(context, listen: false)
.user
.openid);
print(isSuccess);
if (isSuccess) {
_addForward();
}
}
} else {
bool isSuccess = await Utils.goShareInvicationToWeChat(
context,
widget.rid,
Provider.of<UserModel>(context, listen: false)
.user
.openid);
if (isSuccess) {
_addForward();
}
}
// couponProvider.couponsShow = [];
// couponProvider.couponsShow
// .addAll(couponProvider.coupons);
// couponProvider.coupons = [];
// couponProvider.notifyListeners();
}
} else {
bool isSuccess = await Utils.goShareInvicationToWeChat(
widget.rid,
Provider.of<UserModel>(context, listen: false)
.user
.openid);
if (isSuccess) {
_addForward();
}
}
},
),
}),
VEmptyView(20),
Stack(children: [
Container(
... ... @@ -2218,27 +2270,33 @@ class InvicationPageState extends State<InvicationPage>
radius: ScreenUtil().setWidth(10),
isBold: false,
onPressed: () async {
if (reserverPhone == null || reserverPhone.isEmpty) {
//跳转到录入联系人页面
// String temp = await NavigatorUtil.goEditReserverPage(
// context, widget.rid, name, sex,
// needBtn: true);
// if (temp != null) {
// reserverPhone = temp;
// }
Utils.showToast('请输入客户手机号');
} else if (!Utils.phoneRegExp(reserverPhone)) {
Utils.showToast('手机号格式错误,请修改正确');
//跳转到录入联系人页面
// String temp = await NavigatorUtil.goEditReserverPage(
// context, widget.rid, name, sex,
// needBtn: true);
// if (temp != null) {
// reserverPhone = temp;
// }
} else {
if (!couponProvider.sendSMS) {
/*
if (_nameNode.hasFocus || _phoneNode.hasFocus) {
needWechat = true;
_showConfirmWidget(
needWechat: true,
callback: () async {
if (reserverPhone == null ||
reserverPhone.isEmpty) {
//跳转到录入联系人页面
// String temp = await NavigatorUtil.goEditReserverPage(
// context, widget.rid, name, sex,
// needBtn: true);
// if (temp != null) {
// reserverPhone = temp;
// }
Utils.showToast('请输入客户手机号');
} else if (!Utils.phoneRegExp(reserverPhone)) {
Utils.showToast('手机号格式错误,请修改正确');
//跳转到录入联系人页面
// String temp = await NavigatorUtil.goEditReserverPage(
// context, widget.rid, name, sex,
// needBtn: true);
// if (temp != null) {
// reserverPhone = temp;
// }
} else {
if (!couponProvider.sendSMS) {
/*
String dateSoltStr = '';
if (widget.dateSolt == '1') {
dateSoltStr = '早餐';
... ... @@ -2280,28 +2338,110 @@ class InvicationPageState extends State<InvicationPage>
params['Strtext'] = user.sellername;
}
*/
UserModel userModel =
Provider.of<UserModel>(context, listen: false);
Map<String, String> params = {
"rid": widget.rid,
"sid": userModel.user.sellerid
};
bool success = await couponProvider
.sendSMSWxSendSms(context, params);
print(success);
// if (success) {
// Utils.showToast('短信已经发送成功!');
// } else {
// Utils.showToast('发送次数太频繁!');
UserModel userModel =
Provider.of<UserModel>(context,
listen: false);
Map<String, String> params = {
"rid": widget.rid,
"sid": userModel.user.sellerid
};
bool success = await couponProvider
.sendSMSWxSendSms(context, params);
print(success);
// if (success) {
// Utils.showToast('短信已经发送成功!');
// } else {
// Utils.showToast('发送次数太频繁!');
// }
} else {
Utils.showToast('短信已经发送成功!');
}
}
});
removeOverlay();
} else {
if (reserverPhone == null || reserverPhone.isEmpty) {
//跳转到录入联系人页面
// String temp = await NavigatorUtil.goEditReserverPage(
// context, widget.rid, name, sex,
// needBtn: true);
// if (temp != null) {
// reserverPhone = temp;
// }
Utils.showToast('请输入客户手机号');
} else if (!Utils.phoneRegExp(reserverPhone)) {
Utils.showToast('手机号格式错误,请修改正确');
//跳转到录入联系人页面
// String temp = await NavigatorUtil.goEditReserverPage(
// context, widget.rid, name, sex,
// needBtn: true);
// if (temp != null) {
// reserverPhone = temp;
// }
} else {
Utils.showToast('短信已经发送成功!');
if (!couponProvider.sendSMS) {
/*
String dateSoltStr = '';
if (widget.dateSolt == '1') {
dateSoltStr = '早餐';
} else if (widget.dateSolt == '2') {
dateSoltStr = '午餐';
} else if (widget.dateSolt == '3') {
dateSoltStr = '晚餐';
}
DateTime dateTimeTemp =
DateTime.fromMillisecondsSinceEpoch(
int.parse(widget.ddate) * 1000);
String dateTimeStrTemp =
"${Utils.addZeroNumber(dateTimeTemp.month)}月${Utils.addZeroNumber(dateTimeTemp.day)}日";
Map<String, String> params = {
"id": widget.rid,
"uid": Provider.of<UserModel>(context,
listen: false)
.user
.openid,
"phone": widget.phone,
// "Strtext": user.sellername +
// dateTimeStrTemp +
// dateSoltStr +
// ',' +
// '餐厅经理' +
// _baseIndoProvider.baseInfoSunModel.name +
// '已为您安排在' +
// widget.tableInfo.replaceAll("\n", "")
};
if (ObjectUtil.isNotEmpty(_baseIndoProvider
.baseInfoSunModel) &&
ObjectUtil.isNotEmpty(_baseIndoProvider
.baseInfoSunModel.name)) {
params['Strtext'] = user.sellername +
_baseIndoProvider
.baseInfoSunModel.name;
} else {
params['Strtext'] = user.sellername;
}
*/
UserModel userModel = Provider.of<UserModel>(
context,
listen: false);
Map<String, String> params = {
"rid": widget.rid,
"sid": userModel.user.sellerid
};
bool success = await couponProvider
.sendSMSWxSendSms(context, params);
print(success);
// if (success) {
// Utils.showToast('短信已经发送成功!');
// } else {
// Utils.showToast('发送次数太频繁!');
// }
} else {
Utils.showToast('短信已经发送成功!');
}
}
}
// _sendSms();
// NavigatorUtil.goSmsPage(context, widget.rid);
},
)),
Positioned(
... ...
... ... @@ -5,6 +5,7 @@ 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/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';
... ... @@ -52,6 +53,7 @@ class _MyCustomerDetailPageState extends State<MyCustomerDetailPage> {
_getGuestInfo() async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
"id": widget.userHistoryEntity.id,
'phone': widget.userHistoryEntity.phone
};
... ...
... ... @@ -78,13 +78,13 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
}
}
} else if (customerProvider.index == 0) {
customerProvider.hydSelAll = true;
for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
item.select = false;
}
// customerProvider.hydSelAll = true;
// for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
// // item.select = false;
// }
}
_getContantData();
_getContantData(first: true);
}
});
WidgetsBinding.instance.addPostFrameCallback((_) async {
... ... @@ -96,13 +96,13 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
first = false;
}
customerProvider.initData();
if (tabController.index == 0) {
customerProvider.hydSelAll = true;
for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
item.select = false;
}
}
// if (tabController.index == 0) {
// customerProvider.hydSelAll = true;
// for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
// // item.select = false;
// }
// }
_getContantData(first: first);
_filterLabelList();
});
... ... @@ -176,17 +176,54 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
}
params['labelid'] = labels;
}
if (customerProvider.controllerstime.text.trim().length > 0) {
params['stime'] = customerProvider.controllerstime.text;
}
if (customerProvider.controlleretime.text.trim().length > 0) {
params['etime'] = customerProvider.controlleretime.text;
}
if (customerProvider.controllernum.text.trim().length > 0) {
params['reserve_num'] = customerProvider.controlleretime.text;
params['reserve_sort'] = '${dropValue + 1}';
}
bool temp = customerProvider.filterDayList.any((value) {
return value.select == true;
});
if (temp == true) {
if (customerProvider.controllernum.text.trim().length == 0) {
Utils.showToast('请输入多少次预订');
return;
}
String dayid = '';
for (FilterBtnModel item in customerProvider.filterDayList) {
if (item.select) {
dayid = item.id;
}
}
params['reserve_date'] = dayid;
if (customerProvider.controllernum.text.trim().length > 0) {
params['reserve_num'] = customerProvider.controlleretime.text;
params['reserve_sort'] = '${dropValue + 1}';
}
} else {
if (customerProvider.controllernum.text.trim().length > 0) {
Utils.showToast('请选择7天、30天、60天或者120天');
return;
}
if (customerProvider.controllerstime.text.trim().length > 0 &&
customerProvider.controlleretime.text.trim().length == 0) {
Utils.showToast('请输入结束天数');
return;
}
if (customerProvider.controllerstime.text.trim().length == 0 &&
customerProvider.controlleretime.text.trim().length > 0) {
Utils.showToast('请输入开始天数');
return;
}
if (customerProvider.controllerstime.text.trim().length > 0 &&
customerProvider.controlleretime.text.trim().length > 0) {
params['stime'] = customerProvider.controllerstime.text;
params['etime'] = customerProvider.controlleretime.text;
}
}
// params['reserve_date'] XX天内,例:30
// params['reserve_num'] 时间内预定次数
// params['reserve_sort'] 1 等于 2 小于 3 大于
... ... @@ -509,26 +546,83 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
in customerProvider.filterLabelList) {
item.select = false;
}
for (FilterBtnModel item
in customerProvider.filterDayList) {
item.select = false;
}
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
customerProvider.controllernum.text = '';
dropValue = 0;
});
}, onPressedComplete: () {
bool temp = customerProvider.filterDayList.any((value) {
return value.select == true;
});
if (temp == true) {
if (customerProvider.controllernum.text.trim().length ==
0) {
Utils.showToast('请输入多少次预订');
return;
}
} else {
if (customerProvider.controllernum.text.trim().length >
0) {
Utils.showToast('请选择7天、30天、60天或者120天');
return;
}
if (customerProvider.controllerstime.text.trim().length >
0 &&
customerProvider.controlleretime.text.trim().length ==
0) {
Utils.showToast('请输入结束天数');
return;
}
if (customerProvider.controllerstime.text.trim().length ==
0 &&
customerProvider.controlleretime.text.trim().length >
0) {
Utils.showToast('请输入开始天数');
return;
}
}
Navigator.of(context).pop();
for (FilterBtnModel value
in customerProvider.filterHydList) {
if (value.select) {
if (value.title == '活跃') {
tabController.index = 1;
customerProvider.index = 1;
} else if (value.title == '沉睡') {
tabController.index = 2;
customerProvider.index = 2;
} else if (value.title == '流失') {
tabController.index = 3;
customerProvider.index = 3;
if (customerProvider.hydSelAll) {
//全选,默认全部
tabController.index = 0;
customerProvider.index = 0;
} else {
int tag = 0; //有几个选中的项目
for (FilterBtnModel value
in customerProvider.filterHydList) {
if (value.select) {
tag++;
}
}
if (tag == 0) {
//全不选,默认全部
tabController.index = 0;
customerProvider.index = 0;
} else if (tag == 1) {
for (FilterBtnModel value
in customerProvider.filterHydList) {
if (value.select) {
if (value.title == '活跃') {
tabController.index = 1;
customerProvider.index = 1;
} else if (value.title == '沉睡') {
tabController.index = 2;
customerProvider.index = 2;
} else if (value.title == '流失') {
tabController.index = 3;
customerProvider.index = 3;
}
}
}
} else if (tag == 2) {
//选中2个的,默认全部
tabController.index = 0;
customerProvider.index = 0;
}
}
setState(() {
... ... @@ -536,10 +630,29 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
});
_getContantData();
}, tapWhiteBack: () {
// Navigator.of(context).pop();
// setState(() {
// showFilter = false;
// });
Navigator.of(context).pop();
setState(() {
showFilter = false;
});
customerProvider.hydSelAll = false;
for (FilterBtnModel item
in customerProvider.filterHydList) {
item.select = false;
}
customerProvider.labelSelAll = false;
for (FilterBtnModel item
in customerProvider.filterLabelList) {
item.select = false;
}
for (FilterBtnModel item
in customerProvider.filterDayList) {
item.select = false;
}
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
customerProvider.controllernum.text = '';
dropValue = 0;
});
}
},
... ... @@ -588,14 +701,29 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
backgroundColor: Colors.transparent,
// resizeToAvoidBottomInset: false,
body: StatefulBuilder(builder: (context, state) {
return GestureDetector(
// behavior: HitTestBehavior.opaque,
onTap: tapWhiteBack,
child: _filterWidget(
return Column(
children: [
GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: tapWhiteBack,
// onTap: () {
// print('object');
// },
child: Container(
height: ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) +
ScreenUtil.statusBarHeight,
// width: s,
width: ScreenUtil.screenWidthDp,
// color: Colors.red,
)),
Expanded(
child: _filterWidget(
state,
onPressedReset,
onPressedComplete,
));
))
],
);
}));
});
}
... ... @@ -652,34 +780,34 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_textWidget('活跃度', MyColours.color_333333, FontWeight.bold, 28),
// GestureDetector(
// onTap: () {
// state(() {
// customerProvider.hydSelAll = !customerProvider.hydSelAll;
// if (customerProvider.hydSelAll) {
// for (FilterBtnModel item
// in customerProvider.filterHydList) {
// item.select = true;
// }
// } else {
// for (FilterBtnModel item
// in customerProvider.filterHydList) {
// item.select = false;
// }
// }
// });
// },
// child: Container(
// color: Colors.white,
// height: ScreenUtil().setWidth(40),
// alignment: Alignment.center,
// padding: EdgeInsets.only(left: ScreenUtil().setWidth(130)),
// child: _textWidget(customerProvider.hydSelAll ? '全不选' : '全选',
// MyColours.color_199095, FontWeight.normal, 24)),
// )
GestureDetector(
onTap: () {
state(() {
customerProvider.hydSelAll = !customerProvider.hydSelAll;
if (customerProvider.hydSelAll) {
for (FilterBtnModel item
in customerProvider.filterHydList) {
item.select = true;
}
} else {
for (FilterBtnModel item
in customerProvider.filterHydList) {
item.select = false;
}
}
});
},
child: Container(
color: Colors.white,
height: ScreenUtil().setWidth(40),
alignment: Alignment.center,
padding: EdgeInsets.only(left: ScreenUtil().setWidth(130)),
child: _textWidget(customerProvider.hydSelAll ? '全不选' : '全选',
MyColours.color_199095, FontWeight.normal, 24)),
)
],
),
VEmptyView(30),
... ... @@ -688,21 +816,22 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
runSpacing: ScreenUtil().setWidth(20),
children: _buildFilterItem(customerProvider.filterHydList, false,
(FilterBtnModel item) {
// state(() {
// item.select = !item.select;
state(() {
item.select = !item.select;
// }
});
customerProvider.getCheckhydSelAll();
// for (FilterBtnModel value in customerProvider.filterHydList) {
// value.select = false;
// }
// for (FilterBtnModel value in customerProvider.filterHydList) {
// if (item.id == value.id) {
// state(() {
// value.select = true;
// });
// }
// });
for (FilterBtnModel value in customerProvider.filterHydList) {
value.select = false;
}
for (FilterBtnModel value in customerProvider.filterHydList) {
if (item.id == value.id) {
state(() {
value.select = true;
});
}
}
// }
})),
],
);
... ... @@ -756,6 +885,7 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
state(() {
item.select = !item.select;
});
customerProvider.getChecklabelSelAll();
})),
],
);
... ... @@ -847,31 +977,46 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
children: [
Expanded(
child: _textFeildWidget(customerProvider.controllerstime,
customerProvider.stimeFocus)),
customerProvider.stimeFocus, state)),
HEmptyView(10),
_textWidget('至', MyColours.color_199095, FontWeight.normal, 24),
HEmptyView(10),
Expanded(
child: _textFeildWidget(customerProvider.controlleretime,
customerProvider.etimeFocus)),
customerProvider.etimeFocus, state)),
],
),
VEmptyView(30),
Wrap(
spacing: ScreenUtil().setWidth(20),
runSpacing: ScreenUtil().setWidth(20),
children: _buildFilterItem(customerProvider.filterDayList, true,
(FilterBtnModel item) {
if (customerProvider.stimeFocus.hasFocus) {
customerProvider.controllerstime.text = item.id;
}
if (customerProvider.etimeFocus.hasFocus) {
customerProvider.controlleretime.text = item.id;
}
// state(() {
// item.select = !item.select;
// });
}, grayBack: true)),
children: _buildFilterItem(
customerProvider.filterDayList,
true,
(FilterBtnModel item) {
// if (customerProvider.stimeFocus.hasFocus) {
// customerProvider.controllerstime.text = item.id;
// }
// if (customerProvider.etimeFocus.hasFocus) {
// customerProvider.controlleretime.text = item.id;
// }
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
for (FilterBtnModel value in customerProvider.filterDayList) {
value.select = false;
}
for (FilterBtnModel value in customerProvider.filterDayList) {
if (item.id == value.id) {
state(() {
value.select = true;
});
}
}
// state(() {
// item.select = !item.select;
// });
},
)),
VEmptyView(30),
_textWidget('时间内预订次数', MyColours.color_333333, FontWeight.normal, 24),
VEmptyView(30),
... ... @@ -987,6 +1132,9 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
textInputAction: TextInputAction.done,
onChanged: (value) {
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
state(() {});
// setState(() {});
// _searchSellerLocation();
// customerProvider.searchData(value);
... ... @@ -1045,8 +1193,8 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
}
/// 高级筛选输入框
Widget _textFeildWidget(
TextEditingController controller, FocusNode focusNode) {
Widget _textFeildWidget(TextEditingController controller, FocusNode focusNode,
StateSetter state) {
return Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
... ... @@ -1085,6 +1233,13 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
textInputAction: TextInputAction.done,
onChanged: (value) {
for (FilterBtnModel value
in customerProvider.filterDayList) {
value.select = false;
}
customerProvider.controllernum.text = '';
state(() {});
// setState(() {});
// _searchSellerLocation();
// customerProvider.searchData(value);
... ... @@ -1113,10 +1268,12 @@ class _MyCustomerListPageState extends State<MyCustomerListPage>
padding: EdgeInsets.symmetric(
// horizontal: ScreenUtil().setWidth(30),
),
// height: ScreenUtil().setWidth(100),
margin: EdgeInsets.only(
top: ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) +
ScreenUtil.statusBarHeight),
height: ScreenUtil.screenHeightDp -
ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) -
ScreenUtil.statusBarHeight,
// margin: EdgeInsets.only(
// top: ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) +
// ScreenUtil.statusBarHeight),
color: Color.fromRGBO(00, 00, 00, 0.49),
child: Align(
alignment: Alignment.topCenter,
... ...
... ... @@ -101,66 +101,80 @@ class _MyCustomerPageState extends State<MyCustomerPage> {
///活跃客户、沉睡客户、流失客户
Widget _percentWidget(String pnum, String btnTitle, String percent) {
return Container(
color: MyColours.color_ffffff,
// height: ScreenUtil().setWidth(230),
width: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
height: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
return InkWell(
onTap: () async {
String index = '0';
if (btnTitle == '活跃客户') {
index = '1';
} else if (btnTitle == '沉睡客户') {
index = '2';
} else if (btnTitle == '流失客户') {
index = '3';
}
NavigatorUtil.goMyCustomerListPage(
context, FromPage.FromPageMyCustomer,
index: index);
},
child: Container(
color: MyColours.color_ffffff,
// height: ScreenUtil().setWidth(230),
width: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
height: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(pnum,
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(40),
fontWeight: FontWeight.bold)),
Text('位',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
))
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(pnum,
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(40),
fontWeight: FontWeight.bold)),
Text('位',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
))
],
),
VEmptyView(20),
RoundButton(
onPressed: () async {
String index = '0';
if (btnTitle == '活跃客户') {
index = '1';
} else if (btnTitle == '沉睡客户') {
index = '2';
} else if (btnTitle == '流失客户') {
index = '3';
}
NavigatorUtil.goMyCustomerListPage(
context, FromPage.FromPageMyCustomer,
index: index);
},
text: btnTitle,
fontSize: 24,
isBold: false,
textColor: MyColours.color_333333,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: Color.fromRGBO(118, 118, 118, 1),
height: ScreenUtil().setWidth(45),
width: ScreenUtil().setWidth(160),
radius: ScreenUtil().setWidth(30),
),
VEmptyView(16),
percent == null
? SizedBox()
: Text('${percent}%',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
)),
],
),
VEmptyView(20),
RoundButton(
onPressed: () async {
String index = '0';
if (btnTitle == '活跃客户') {
index = '1';
} else if (btnTitle == '沉睡客户') {
index = '2';
} else if (btnTitle == '流失客户') {
index = '3';
}
NavigatorUtil.goMyCustomerListPage(
context, FromPage.FromPageMyCustomer,
index: index);
},
text: btnTitle,
fontSize: 24,
isBold: false,
textColor: MyColours.color_333333,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: Color.fromRGBO(118, 118, 118, 1),
height: ScreenUtil().setWidth(45),
width: ScreenUtil().setWidth(160),
radius: ScreenUtil().setWidth(30),
),
VEmptyView(16),
percent == null
? SizedBox()
: Text('${percent}%',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
)),
],
),
);
));
}
@override
... ...
... ... @@ -78,13 +78,13 @@ class _CustomerListPageState extends State<CustomerListPage>
}
}
} else if (customerProvider.index == 0) {
customerProvider.hydSelAll = true;
for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
item.select = false;
}
// customerProvider.hydSelAll = true;
// for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
// // item.select = false;
// }
}
_getContantData();
_getContantData(first: true);
}
});
WidgetsBinding.instance.addPostFrameCallback((_) async {
... ... @@ -99,13 +99,13 @@ class _CustomerListPageState extends State<CustomerListPage>
}
customerProvider.initData();
if (tabController.index == 0) {
customerProvider.hydSelAll = true;
for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
item.select = false;
}
}
// if (tabController.index == 0) {
// customerProvider.hydSelAll = true;
// for (FilterBtnModel item in customerProvider.filterHydList) {
// item.select = true;
// // item.select = false;
// }
// }
_getContantData(first: first);
_filterLabelList();
_getSellerGuestManage();
... ... @@ -233,15 +233,53 @@ class _CustomerListPageState extends State<CustomerListPage>
}
}
if (customerProvider.controllerstime.text.trim().length > 0) {
params['stime'] = customerProvider.controllerstime.text;
}
if (customerProvider.controlleretime.text.trim().length > 0) {
params['etime'] = customerProvider.controlleretime.text;
}
if (customerProvider.controllernum.text.trim().length > 0) {
params['reserve_num'] = customerProvider.controlleretime.text;
params['reserve_sort'] = '${dropValue + 1}';
// if (customerProvider.controllerstime.text.trim().length > 0) {
// params['stime'] = customerProvider.controllerstime.text;
// }
// if (customerProvider.controlleretime.text.trim().length > 0) {
// params['etime'] = customerProvider.controlleretime.text;
// }
bool temp = customerProvider.filterDayList.any((value) {
return value.select == true;
});
if (temp == true) {
if (customerProvider.controllernum.text.trim().length == 0) {
Utils.showToast('请输入多少次预订');
return;
}
String dayid = '';
for (FilterBtnModel item in customerProvider.filterDayList) {
if (item.select) {
dayid = item.id;
}
}
params['reserve_date'] = dayid;
if (customerProvider.controllernum.text.trim().length > 0) {
params['reserve_num'] = customerProvider.controlleretime.text;
params['reserve_sort'] = '${dropValue + 1}';
}
} else {
if (customerProvider.controllernum.text.trim().length > 0) {
Utils.showToast('请选择7天、30天、60天或者120天');
return;
}
if (customerProvider.controllerstime.text.trim().length > 0 &&
customerProvider.controlleretime.text.trim().length == 0) {
Utils.showToast('请输入结束天数');
return;
}
if (customerProvider.controllerstime.text.trim().length == 0 &&
customerProvider.controlleretime.text.trim().length > 0) {
Utils.showToast('请输入开始天数');
return;
}
if (customerProvider.controllerstime.text.trim().length > 0 &&
customerProvider.controlleretime.text.trim().length > 0) {
params['stime'] = customerProvider.controllerstime.text;
params['etime'] = customerProvider.controlleretime.text;
}
}
await customerProvider.getCustomerBySeller(context, params);
... ... @@ -564,26 +602,84 @@ class _CustomerListPageState extends State<CustomerListPage>
in customerProvider.filterManageList) {
item.select = false;
}
for (FilterBtnModel item
in customerProvider.filterDayList) {
item.select = false;
}
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
customerProvider.controllernum.text = '';
dropValue = 0;
});
}, onPressedComplete: () {
bool temp = customerProvider.filterDayList.any((value) {
return value.select == true;
});
if (temp == true) {
if (customerProvider.controllernum.text.trim().length ==
0) {
Utils.showToast('请输入多少次预订');
return;
}
} else {
if (customerProvider.controllernum.text.trim().length >
0) {
Utils.showToast('请选择7天、30天、60天或者120天');
return;
}
if (customerProvider.controllerstime.text.trim().length >
0 &&
customerProvider.controlleretime.text.trim().length ==
0) {
Utils.showToast('请输入结束天数');
return;
}
if (customerProvider.controllerstime.text.trim().length ==
0 &&
customerProvider.controlleretime.text.trim().length >
0) {
Utils.showToast('请输入开始天数');
return;
}
}
Navigator.of(context).pop();
for (FilterBtnModel value
in customerProvider.filterHydList) {
if (value.select) {
if (value.title == '活跃') {
tabController.index = 1;
customerProvider.index = 1;
} else if (value.title == '沉睡') {
tabController.index = 2;
customerProvider.index = 2;
} else if (value.title == '流失') {
tabController.index = 3;
customerProvider.index = 3;
if (customerProvider.hydSelAll) {
//全选,默认全部
tabController.index = 0;
customerProvider.index = 0;
} else {
int tag = 0; //有几个选中的项目
for (FilterBtnModel value
in customerProvider.filterHydList) {
if (value.select) {
tag++;
}
}
if (tag == 0) {
//全不选,默认全部
tabController.index = 0;
customerProvider.index = 0;
} else if (tag == 1) {
for (FilterBtnModel value
in customerProvider.filterHydList) {
if (value.select) {
if (value.title == '活跃') {
tabController.index = 1;
customerProvider.index = 1;
} else if (value.title == '沉睡') {
tabController.index = 2;
customerProvider.index = 2;
} else if (value.title == '流失') {
tabController.index = 3;
customerProvider.index = 3;
}
}
}
} else if (tag == 2) {
//选中2个的,默认全部
tabController.index = 0;
customerProvider.index = 0;
}
}
setState(() {
... ... @@ -591,10 +687,28 @@ class _CustomerListPageState extends State<CustomerListPage>
});
_getContantData();
}, tapWhiteBack: () {
// Navigator.of(context).pop();
// setState(() {
// showFilter = false;
// });
Navigator.of(context).pop();
setState(() {
showFilter = false;
});
customerProvider.hydSelAll = false;
for (FilterBtnModel item
in customerProvider.filterHydList) {
item.select = false;
}
customerProvider.labelSelAll = false;
for (FilterBtnModel item
in customerProvider.filterLabelList) {
item.select = false;
}
for (FilterBtnModel item
in customerProvider.filterDayList) {
item.select = false;
}
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
customerProvider.controllernum.text = '';
dropValue = 0;
});
}
},
... ... @@ -643,14 +757,27 @@ class _CustomerListPageState extends State<CustomerListPage>
backgroundColor: Colors.transparent,
// resizeToAvoidBottomInset: false,
body: StatefulBuilder(builder: (context, state) {
return GestureDetector(
// behavior: HitTestBehavior.opaque,
onTap: tapWhiteBack,
child: _filterWidget(
state,
onPressedReset,
onPressedComplete,
));
return Column(children: [
GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: tapWhiteBack,
// onTap: () {
// print('object');
// },
child: Container(
height: ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) +
ScreenUtil.statusBarHeight,
// width: s,
width: ScreenUtil.screenWidthDp,
// color: Colors.red,
)),
Expanded(
child: _filterWidget(
state,
onPressedReset,
onPressedComplete,
))
]);
}));
});
}
... ... @@ -714,6 +841,7 @@ class _CustomerListPageState extends State<CustomerListPage>
state(() {
item.select = !item.select;
});
customerProvider.getCheckmanageSelAll();
})),
],
);
... ... @@ -728,31 +856,31 @@ class _CustomerListPageState extends State<CustomerListPage>
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_textWidget('活跃度', MyColours.color_333333, FontWeight.bold, 28),
// GestureDetector(
// onTap: () {
// state(() {
// customerProvider.hydSelAll = !customerProvider.hydSelAll;
// if (customerProvider.hydSelAll) {
// for (FilterBtnModel item
// in customerProvider.filterHydList) {
// item.select = true;
// }
// } else {
// for (FilterBtnModel item
// in customerProvider.filterHydList) {
// item.select = false;
// }
// }
// });
// },
// child: Container(
// color: Colors.white,
// height: ScreenUtil().setWidth(40),
// alignment: Alignment.center,
// padding: EdgeInsets.only(left: ScreenUtil().setWidth(130)),
// child: _textWidget(customerProvider.hydSelAll ? '全不选' : '全选',
// MyColours.color_199095, FontWeight.normal, 24)),
// )
GestureDetector(
onTap: () {
state(() {
customerProvider.hydSelAll = !customerProvider.hydSelAll;
if (customerProvider.hydSelAll) {
for (FilterBtnModel item
in customerProvider.filterHydList) {
item.select = true;
}
} else {
for (FilterBtnModel item
in customerProvider.filterHydList) {
item.select = false;
}
}
});
},
child: Container(
color: Colors.white,
height: ScreenUtil().setWidth(40),
alignment: Alignment.center,
padding: EdgeInsets.only(left: ScreenUtil().setWidth(130)),
child: _textWidget(customerProvider.hydSelAll ? '全不选' : '全选',
MyColours.color_199095, FontWeight.normal, 24)),
)
],
),
VEmptyView(30),
... ... @@ -761,19 +889,25 @@ class _CustomerListPageState extends State<CustomerListPage>
runSpacing: ScreenUtil().setWidth(20),
children: _buildFilterItem(customerProvider.filterHydList, false,
(FilterBtnModel item) {
state(() {
item.select = !item.select;
// }
});
customerProvider.getCheckhydSelAll();
// state(() {
// item.select = !item.select;
// });
for (FilterBtnModel value in customerProvider.filterHydList) {
value.select = false;
}
for (FilterBtnModel value in customerProvider.filterHydList) {
if (item.id == value.id) {
state(() {
value.select = true;
});
}
}
// for (FilterBtnModel value in customerProvider.filterHydList) {
// value.select = false;
// }
// for (FilterBtnModel value in customerProvider.filterHydList) {
// if (item.id == value.id) {
// state(() {
// value.select = true;
// });
// }
// }
})),
],
);
... ... @@ -827,6 +961,7 @@ class _CustomerListPageState extends State<CustomerListPage>
state(() {
item.select = !item.select;
});
customerProvider.getChecklabelSelAll();
})),
],
);
... ... @@ -918,13 +1053,13 @@ class _CustomerListPageState extends State<CustomerListPage>
children: [
Expanded(
child: _textFeildWidget(customerProvider.controllerstime,
customerProvider.stimeFocus)),
customerProvider.stimeFocus, state)),
HEmptyView(10),
_textWidget('至', MyColours.color_199095, FontWeight.normal, 24),
HEmptyView(10),
Expanded(
child: _textFeildWidget(customerProvider.controlleretime,
customerProvider.etimeFocus)),
customerProvider.etimeFocus, state)),
],
),
VEmptyView(30),
... ... @@ -933,16 +1068,28 @@ class _CustomerListPageState extends State<CustomerListPage>
runSpacing: ScreenUtil().setWidth(20),
children: _buildFilterItem(customerProvider.filterDayList, true,
(FilterBtnModel item) {
if (customerProvider.stimeFocus.hasFocus) {
customerProvider.controllerstime.text = item.id;
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
for (FilterBtnModel value in customerProvider.filterDayList) {
value.select = false;
}
if (customerProvider.etimeFocus.hasFocus) {
customerProvider.controlleretime.text = item.id;
for (FilterBtnModel value in customerProvider.filterDayList) {
if (item.id == value.id) {
state(() {
value.select = true;
});
}
}
// if (customerProvider.stimeFocus.hasFocus) {
// customerProvider.controllerstime.text = item.id;
// }
// if (customerProvider.etimeFocus.hasFocus) {
// customerProvider.controlleretime.text = item.id;
// }
// state(() {
// item.select = !item.select;
// });
}, grayBack: true)),
})),
VEmptyView(30),
_textWidget('时间内预订次数', MyColours.color_333333, FontWeight.normal, 24),
VEmptyView(30),
... ... @@ -1058,6 +1205,9 @@ class _CustomerListPageState extends State<CustomerListPage>
textInputAction: TextInputAction.done,
onChanged: (value) {
customerProvider.controllerstime.text = '';
customerProvider.controlleretime.text = '';
state(() {});
// setState(() {});
// _searchSellerLocation();
// customerProvider.searchData(value);
... ... @@ -1116,8 +1266,8 @@ class _CustomerListPageState extends State<CustomerListPage>
}
/// 高级筛选输入框
Widget _textFeildWidget(
TextEditingController controller, FocusNode focusNode) {
Widget _textFeildWidget(TextEditingController controller, FocusNode focusNode,
StateSetter state) {
return Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
... ... @@ -1156,6 +1306,12 @@ class _CustomerListPageState extends State<CustomerListPage>
textInputAction: TextInputAction.done,
onChanged: (value) {
for (FilterBtnModel value
in customerProvider.filterDayList) {
value.select = false;
}
customerProvider.controllernum.text = '';
state(() {});
// setState(() {});
// _searchSellerLocation();
// customerProvider.searchData(value);
... ... @@ -1184,10 +1340,12 @@ class _CustomerListPageState extends State<CustomerListPage>
padding: EdgeInsets.symmetric(
// horizontal: ScreenUtil().setWidth(30),
),
// height: ScreenUtil().setWidth(100),
margin: EdgeInsets.only(
top: ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) +
ScreenUtil.statusBarHeight),
height: ScreenUtil.screenHeightDp -
ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) -
ScreenUtil.statusBarHeight,
// margin: EdgeInsets.only(
// top: ScreenUtil().setWidth(92 + 52 + 30 * 3 + 90) +
// ScreenUtil.statusBarHeight),
color: Color.fromRGBO(00, 00, 00, 0.49),
child: Align(
alignment: Alignment.topCenter,
... ...
... ... @@ -77,67 +77,81 @@ class _StoreCustomerPageState extends State<StoreCustomerPage> {
///活跃客户、沉睡客户、流失客户
Widget _percentWidget(String pnum, String btnTitle, String percent,
{String uid = ''}) {
return Container(
color: MyColours.color_ffffff,
// height: ScreenUtil().setWidth(230),
width: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
height: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
return InkWell(
onTap: () async {
String index = '0';
if (btnTitle == '活跃客户') {
index = '1';
} else if (btnTitle == '沉睡客户') {
index = '2';
} else if (btnTitle == '流失客户') {
index = '3';
}
NavigatorUtil.goCustomerListPage(context, FromPage.FromPageHome, uid,
index: index);
},
child: Container(
color: MyColours.color_ffffff,
// height: ScreenUtil().setWidth(230),
width: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
height: (ScreenUtil.screenWidthDp - ScreenUtil().setWidth(20)) / 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(pnum,
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(40),
fontWeight: FontWeight.bold)),
Text('位',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
))
],
),
VEmptyView(20),
RoundButton(
onPressed: () async {
String index = '0';
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(pnum,
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(40),
fontWeight: FontWeight.bold)),
Text('位',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
))
],
),
VEmptyView(20),
RoundButton(
onPressed: () async {
String index = '0';
if (btnTitle == '活跃客户') {
index = '1';
} else if (btnTitle == '沉睡客户') {
index = '2';
} else if (btnTitle == '流失客户') {
index = '3';
}
NavigatorUtil.goCustomerListPage(
context, FromPage.FromPageHome, uid,
index: index);
},
text: btnTitle,
fontSize: 24,
isBold: false,
textColor: MyColours.color_333333,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: Color.fromRGBO(118, 118, 118, 1),
height: ScreenUtil().setWidth(45),
width: ScreenUtil().setWidth(160),
radius: ScreenUtil().setWidth(30),
if (btnTitle == '活跃客户') {
index = '1';
} else if (btnTitle == '沉睡客户') {
index = '2';
} else if (btnTitle == '流失客户') {
index = '3';
}
NavigatorUtil.goCustomerListPage(
context, FromPage.FromPageHome, uid,
index: index);
},
text: btnTitle,
fontSize: 24,
isBold: false,
textColor: MyColours.color_333333,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: Color.fromRGBO(118, 118, 118, 1),
height: ScreenUtil().setWidth(45),
width: ScreenUtil().setWidth(160),
radius: ScreenUtil().setWidth(30),
),
VEmptyView(16),
percent == null
? SizedBox()
: Text('${percent}%',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
)),
],
),
VEmptyView(16),
percent == null
? SizedBox()
: Text('${percent}%',
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(24),
)),
],
),
);
));
}
@override
... ...
import 'dart:convert';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:common_utils/common_utils.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/models/get_seller_info_model.dart';
import 'package:one_key/models/personnel_manage_model.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/provider/personnel_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
... ... @@ -48,7 +53,8 @@ class _PersonnelDetailPageState extends State<PersonnelDetailPage> {
: '添加手机号';
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
if (widget.model.openid == null || widget.model.openid == 'null') {
_getStoreBaseinfo();
// _getStoreBaseinfo();
_getWechatQrcode();
}
setState(() {
roleNameLogin = userModel.user.role_name;
... ... @@ -98,13 +104,13 @@ class _PersonnelDetailPageState extends State<PersonnelDetailPage> {
}
///获取店铺信息
_getStoreBaseinfo() async {
GetSellerInfoSunModel itemModel =
await personnelProvider.getSellerById(context);
if (itemModel != null) {
dcAdduserCode = itemModel.data.dcAdduserCode;
}
}
// _getStoreBaseinfo() async {
// GetSellerInfoSunModel itemModel =
// await personnelProvider.getSellerById(context);
// if (itemModel != null) {
// dcAdduserCode = itemModel.data.dcAdduserCode;
// }
// }
///设置接单人
_setUserIsCall({bool showLoading = true}) async {
... ... @@ -191,8 +197,12 @@ class _PersonnelDetailPageState extends State<PersonnelDetailPage> {
_delSellerClerk();
});
} else if (element == '绑定微信') {
DialogUtil.openAlertDialogImage(
context, '请员工使用微信扫一扫添加店员', dcAdduserCode, 660);
if (dcAdduserCode != '' && dcAdduserCode != null) {
DialogUtil.openAlertDialogImage(
context, '请员工使用微信扫一扫添加店员', dcAdduserCode, 660);
} else {
_getWechatQrcode(need: true);
}
} else if (element == '查看密码') {
NavigatorUtil.goPersonnelPasswordPage(context,
account: widget.model.account, idstr: widget.model.id);
... ... @@ -204,6 +214,37 @@ class _PersonnelDetailPageState extends State<PersonnelDetailPage> {
return list;
}
///获取二维码
_getWechatQrcode({bool need = false}) async {
String sid = Provider.of<UserModel>(context, listen: false).user.sellerid;
String id = Provider.of<UserModel>(context, listen: false).user.openid;
// https: //xt.colorcun.com/WechatApi/WechatApi/CreateDcSubQrcode/sellerid/商家ID/uid/当前账号ID
Response response = await DioUtil.getInstance().getDio().get(
"https://xt.colorcun.com/WechatApi/WechatApi/CreateDcSubQrcode?sellerid=$sid&uid=${widget.model.id}");
// Response response = await DioUtil.getInstance().getDio().get(
// "https://xt.colorcun.com/WechatApi/WechatApi/CreateDcSubQrcode?sellerid=$sid&uid=$uid");
// Response response = await DioUtil.getInstance().getDio().get(
// "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx85aa3cdd0f791e65&secret=87c9a23c2e6032b2da75af6b0efc5424&code=$code&grant_type=authorization_code");
LogUtil.v("access_token:${response.toString()}");
Map<String, dynamic> responseData = json.decode(response.toString());
print(responseData);
dcAdduserCode = responseData["data"];
if (need) {
if (dcAdduserCode == null || dcAdduserCode == '') {
Utils.showToast('二维码获取失败');
} else {
DialogUtil.openAlertDialogImage(
context, '请员工使用微信扫一扫添加店员', dcAdduserCode, 660);
}
}
print(dcAdduserCode);
// if (responseData["data"] != null) {
// // Utils.showToast(responseData["errmsg"] ?? "登录失败,请稍后重试");
// // Loading.hideLoading(context);
// } else {}
}
@override
Widget build(BuildContext context) {
userModel = Provider.of<UserModel>(context, listen: false);
... ...
... ... @@ -87,6 +87,45 @@ class CustomerProvider extends ChangeNotifier {
bool manageSelAll = false;
List<FilterBtnModel> filterManageList = []; //经理
//获取全选按钮的状态 true or false
getCheckhydSelAll() {
bool temp = filterHydList.any((value) {
return value.select == false;
});
if (temp == true) {
hydSelAll = false;
} else {
hydSelAll = true;
}
notifyListeners();
}
//获取全选按钮的状态 true or false
getChecklabelSelAll() {
bool temp = filterLabelList.any((value) {
return value.select == false;
});
if (temp == true) {
labelSelAll = false;
} else {
labelSelAll = true;
}
notifyListeners();
}
//获取全选按钮的状态 true or false
getCheckmanageSelAll() {
bool temp = filterManageList.any((value) {
return value.select == false;
});
if (temp == true) {
manageSelAll = false;
} else {
manageSelAll = true;
}
notifyListeners();
}
initData() {
filterDayList = [];
FilterBtnModel model = FilterBtnModel();
... ...
... ... @@ -671,34 +671,115 @@ class NotebookDetailChangeModel with ChangeNotifier {
//更改在线预订
Future<SunReserveInfoModel> updateOnlineReserveInfo(
BuildContext context) async {
BuildContext context, String nameStr) async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
String pnum = '';
for (var item in personNumList) {
if (item['isSelect']) {
pnum = item['dateText'];
}
}
// String pnum = '';
// for (var item in personNumList) {
// if (item['isSelect']) {
// pnum = item['dateText'];
// }
// }
String sex = '1';
for (var item in sexList) {
if (item['select']) {
sex = item['code'];
}
}
//当前选中 年-月-日string
String ymyStr = "";
//今天 明天 其他天
for (var item in dateList) {
if (item['select'] == true) {
ymyStr = item['title'];
// String sex = '1';
// for (var item in sexList) {
// if (item['select']) {
// sex = item['code'];
// }
// }
// //当前选中 年-月-日string
// String ymyStr = "";
// //今天 明天 其他天
// for (var item in dateList) {
// if (item['select'] == true) {
// ymyStr = item['title'];
// }
// }
// String timeStr = ymyStr + ' ' + ddateStr + ':00';
// // int start = DateUtil.getDateMsByTimeStr(timeStr);
// // String tempDdate = ymyStr + ' ' + ddateStr + ':00';
// int ddate = DateUtil.getDateMsByTimeStr(timeStr);
// String tableSelectInfo = '';
// for (TableList item in tableList) {
// // if (item.selected) {
// tableSelectInfo += ',${item.id}';
// // }
// }
// print(tableSelectInfo);
// if (tableSelectInfo.startsWith(',')) {
// tableSelectInfo = tableSelectInfo.substring(1);
// }
// print(tableSelectInfo);
// String rdate = '';
// String ddateSolt = '';
// print(sunDateList);
// for (var item in sunDateList) {
// if (item['isSelect'] == true) {
// String keys = '';
// ddateSolt = '${item['ddateSolt']}';
// if (item['ddateSolt'] == 1) {
// //早市
// keys = 'morning';
// } else if (item['ddateSolt'] == 2) {
// //午市
// keys = 'noon';
// } else if (item['ddateSolt'] == 3) {
// //晚市
// keys = 'night';
// }
// if (keys != '') {
// List temp = dailyMap[keys];
// String timeStrStart = ymyStr + ' ' + temp.first['title'] + ':00';
// String timeStrEnd = ymyStr + ' ' + temp.last['title'] + ':00';
// int startM = DateUtil.getDateMsByTimeStr(timeStrStart);
// int endM = DateUtil.getDateMsByTimeStr(timeStrEnd);
// String start = '${startM}'.substring(0, 10);
// String end = '${endM}'.substring(0, 10);
// rdate = start + '-' + end;
// }
// }
// }
// Map<String, String> params = {
//1 "rid": detailEntity.id,
// 'is_set_ddate': isSetDate,
//1 "sid": userModel.user.sellerid, //商家ID
//1 "tid": tableSelectInfo, //桌子ID: 格式 2,3,4
//1 "rname": nameController.text, //预订人姓名
//1 "sex": sex, //预订人姓名:1:男 2:女
//1 "phone": phoneController.text, //预订人电话
// "cusdem": customController.text, //预订人需求:25汉字
//1 "type": "0",
//1 "rdate": rdate, //预定用餐时间范围:时间戳 开始时间戳(time)-结束时间戳(time)
//1 "ddate": '${ddate}'.substring(0, 10), //到店时间
// "ddate_solt": ddateSolt
// };
// if (pnum != '' && pnum != null) {
// params['pnum'] = pnum;
// }
// print(params);
String ddateHm = detailEntity.ddateHm; //订座详情页面的到店时间
String ddateSolt = detailEntity.ddate_solt; //订座详情页面的餐段(1,2,3 早餐、午餐、晚餐)
String tempTime = ddateHm; //默认上个页面到店时间半小时值
if (ddateSolt != currTimeIndex.toString() || tempTime == '') {
//餐段发生改变,则重新默认到店时间半小时值
if (currTimeIndex == 1) {
tempTime = '08:00';
} else if (currTimeIndex == 2) {
tempTime = '12:00';
} else if (currTimeIndex == 3) {
tempTime = '18:00';
}
}
String timeStr = ymyStr + ' ' + ddateStr + ':00';
String ymd = DateUtil.formatDate(dateTime, format: DateFormats.y_mo_d);
String timeStr = ymd + ' ' + tempTime + ':00';
// int start = DateUtil.getDateMsByTimeStr(timeStr);
LogUtil.v(timeStr);
// String tempDdate = ymyStr + ' ' + ddateStr + ':00';
int ddate = DateUtil.getDateMsByTimeStr(timeStr);
String tableSelectInfo = '';
for (TableList item in tableList) {
// if (item.selected) {
... ... @@ -711,50 +792,73 @@ class NotebookDetailChangeModel with ChangeNotifier {
}
print(tableSelectInfo);
String rdate = '';
String ddateSolt = '';
print(sunDateList);
for (var item in sunDateList) {
if (item['isSelect'] == true) {
String keys = '';
ddateSolt = '${item['ddateSolt']}';
if (item['ddateSolt'] == 1) {
//早市
keys = 'morning';
} else if (item['ddateSolt'] == 2) {
//午市
keys = 'noon';
} else if (item['ddateSolt'] == 3) {
//晚市
keys = 'night';
}
if (keys != '') {
List temp = dailyMap[keys];
String timeStrStart = ymyStr + ' ' + temp.first['title'] + ':00';
String timeStrEnd = ymyStr + ' ' + temp.last['title'] + ':00';
int startM = DateUtil.getDateMsByTimeStr(timeStrStart);
int endM = DateUtil.getDateMsByTimeStr(timeStrEnd);
String start = '${startM}'.substring(0, 10);
String end = '${endM}'.substring(0, 10);
rdate = start + '-' + end;
}
}
String keys = '';
if (currTimeIndex == 1) {
//早市
keys = 'morning';
} else if (currTimeIndex == 2) {
//午市
keys = 'noon';
} else if (currTimeIndex == 3) {
//晚市
keys = 'night';
}
if (keys != '') {
List temp = dailyMap[keys];
String timeStrStart = ymd + ' ' + temp.first['title'] + ':00';
String timeStrEnd = ymd + ' ' + temp.last['title'] + ':00';
int startM = DateUtil.getDateMsByTimeStr(timeStrStart);
int endM = DateUtil.getDateMsByTimeStr(timeStrEnd);
String start = '${startM}'.substring(0, 10);
String end = '${endM}'.substring(0, 10);
rdate = start + '-' + end;
}
// Map<String, String> params = {
// "sid": userModel.user.sellerid, //商家ID
// "tid": tableSelectInfo, //桌子ID: 格式 2,3,4
// 'note_name': userModel.user.account,
// 'type': "0", //内部预订
// "rdate": rdate, //预定用餐时间范围:时间戳 开始时间戳(time)-结束时间戳(time)
// // 'is_set_ddate': "1",
// "ddate": '${ddate}'.substring(0, 10), //到店时间
// "channel": '5',
// // "uid": userModel.user.openid
// };
Map<String, String> params = {
"rid": detailEntity.id,
'is_set_ddate': isSetDate,
// 'is_set_ddate': isSetDate,
"sid": userModel.user.sellerid, //商家ID
"tid": tableSelectInfo, //桌子ID: 格式 2,3,4
"rname": nameController.text, //预订人姓名
"sex": sex, //预订人姓名:1:男 2:女
"phone": phoneController.text, //预订人电话
"cusdem": customController.text, //预订人需求:25汉字
"type": "0",
"rdate": rdate, //预定用餐时间范围:时间戳 开始时间戳(time)-结束时间戳(time)
"ddate": '${ddate}'.substring(0, 10), //到店时间
"ddate_solt": ddateSolt
};
if (pnum != '' && pnum != null) {
params['pnum'] = pnum;
if (detailEntity.id.isNotEmpty && detailEntity.id != "-1") {
params['rid'] = detailEntity.id;
}
if (nameStr.trim().length > 0) {
String sex = '1';
for (var item in sexList) {
if (item['select']) {
sex = item['code'];
}
}
params['rname'] = nameStr; //预订人姓名
params['sex'] = sex; //预订人性别:1:男 2:女
}
if (phoneController.text.trim().length > 0) {
params['phone'] = phoneController.text; //预订人电话
}
if (customController.text.trim().length > 0) {
params['cusdem'] = customController.text; //预订人需求:25汉字
}
print(params);
BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
... ...
... ... @@ -1161,13 +1161,15 @@ class Utils {
}
//分享邀请函
static goShareInvicationToWeChat(String rid, String uid) async {
static goShareInvicationToWeChat(
BuildContext context, String rid, String uid) async {
String _webPageUrl = "http://colorcun.com/";
// String _thumbnail =
// "https://xt04.colorcun.com/h5/index.html#/?id=163854&hasInvitation=1";
String _thumbnail =
"https://qn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148572.jpg";
String _title = "用餐已为您安排";
String _title =
"您预订的${Provider.of<UserModel>(context, listen: false).user.sellername},已经安排,点击查看详情";
String _userName = "gh_487873d353b3";
String _path =
"pages/customer/index?id=$rid&hasInvitation=1&hasSellerShare=1&uid=$uid";
... ... @@ -1224,7 +1226,6 @@ class Utils {
return result.toString();
}
static String listToStringEnglish1(List<dynamic> list) {
if (list == null) {
return null;
... ...