Commit 5c747542be686d4033eba348578c57154b8c0854

Authored by wdn127929
1 parent 71d1edab

意向and选台(添加桌位----不带餐页面)

  1 +class DsoltXt {
  2 + String id;
  3 + String title = '请选择';
  4 +}
@@ -28,29 +28,26 @@ class GetStaffModel { @@ -28,29 +28,26 @@ class GetStaffModel {
28 } 28 }
29 29
30 class GetStaffSunModel { 30 class GetStaffSunModel {
31 - String id;  
32 String sid; 31 String sid;
33 String userId; 32 String userId;
34 - Null status;  
35 - Null cdate; 33 + String nickName;
  34 + String account;
36 35
37 - GetStaffSunModel({this.id, this.sid, this.userId, this.status, this.cdate}); 36 + GetStaffSunModel({this.sid, this.userId, this.nickName, this.account});
38 37
39 GetStaffSunModel.fromJson(Map<String, dynamic> json) { 38 GetStaffSunModel.fromJson(Map<String, dynamic> json) {
40 - id = json['id'];  
41 sid = json['sid']; 39 sid = json['sid'];
42 userId = json['user_id']; 40 userId = json['user_id'];
43 - status = json['status'];  
44 - cdate = json['cdate']; 41 + nickName = json['nick_name'];
  42 + account = json['account'];
45 } 43 }
46 44
47 Map<String, dynamic> toJson() { 45 Map<String, dynamic> toJson() {
48 final Map<String, dynamic> data = new Map<String, dynamic>(); 46 final Map<String, dynamic> data = new Map<String, dynamic>();
49 - data['id'] = this.id;  
50 data['sid'] = this.sid; 47 data['sid'] = this.sid;
51 data['user_id'] = this.userId; 48 data['user_id'] = this.userId;
52 - data['status'] = this.status;  
53 - data['cdate'] = this.cdate; 49 + data['nick_name'] = this.nickName;
  50 + data['account'] = this.account;
54 return data; 51 return data;
55 } 52 }
56 } 53 }
  1 +import 'package:one_key/models/dsolt_xt.dart';
  2 +import 'package:one_key/models/table_list.dart' as t;
  3 +
  4 +class SetXuanTaiModel {
  5 + String rid;
  6 + String reserveOrder;
  7 + String ddateInterval;
  8 + String rdate;
  9 + List<Tids> tids;
  10 + List<Setmeal> setmeal;
  11 + List<Wine> wine;
  12 + List<Other> other;
  13 + String remark;
  14 + List<Images> images;
  15 +
  16 + String dateTimeShowxt = '请选择'; //宴会日期显示 选台 2022-08-02(周二 七月十五)
  17 + DateTime dateTimext = DateTime.now(); //宴会日期
  18 + String cdShow = '请选择';
  19 + int cdSelIndex;
  20 + String qsDateShow = '暂未选择'; //起始时间
  21 + String startDate = '';
  22 + String endDate = '';
  23 + List<t.TableList> tableList;
  24 +
  25 + SetXuanTaiModel(
  26 + {this.rid,
  27 + this.reserveOrder,
  28 + this.ddateInterval,
  29 + this.rdate,
  30 + this.tids,
  31 + this.setmeal,
  32 + this.wine,
  33 + this.other,
  34 + this.remark,
  35 + this.images});
  36 +
  37 + SetXuanTaiModel.fromJson(Map<String, dynamic> json) {
  38 + rid = json['rid'];
  39 + reserveOrder = json['reserve_order'];
  40 + ddateInterval = json['ddate_interval'];
  41 + rdate = json['rdate'];
  42 + if (json['tids'] = null) {
  43 + tids = <Tids>[];
  44 + json['tids'].forEach((v) {
  45 + tids.add(new Tids.fromJson(v));
  46 + });
  47 + }
  48 + if (json['setmeal'] = null) {
  49 + setmeal = <Setmeal>[];
  50 + json['setmeal'].forEach((v) {
  51 + setmeal.add(new Setmeal.fromJson(v));
  52 + });
  53 + }
  54 + if (json['wine'] = null) {
  55 + wine = <Wine>[];
  56 + json['wine'].forEach((v) {
  57 + wine.add(new Wine.fromJson(v));
  58 + });
  59 + }
  60 + if (json['other'] = null) {
  61 + other = <Other>[];
  62 + json['other'].forEach((v) {
  63 + other.add(new Other.fromJson(v));
  64 + });
  65 + }
  66 + remark = json['remark'];
  67 + if (json['images'] = null) {
  68 + images = <Images>[];
  69 + json['images'].forEach((v) {
  70 + images.add(new Images.fromJson(v));
  71 + });
  72 + }
  73 + }
  74 +
  75 + Map<String, dynamic> toJson() {
  76 + final Map<String, dynamic> data = new Map<String, dynamic>();
  77 + data['rid'] = this.rid;
  78 + data['reserve_order'] = this.reserveOrder;
  79 + data['ddate_interval'] = this.ddateInterval;
  80 + data['rdate'] = this.rdate;
  81 + if (this.tids = null) {
  82 + data['tids'] = this.tids.map((v) => v.toJson()).toList();
  83 + }
  84 + if (this.setmeal = null) {
  85 + data['setmeal'] = this.setmeal.map((v) => v.toJson()).toList();
  86 + }
  87 + if (this.wine = null) {
  88 + data['wine'] = this.wine.map((v) => v.toJson()).toList();
  89 + }
  90 + if (this.other = null) {
  91 + data['other'] = this.other.map((v) => v.toJson()).toList();
  92 + }
  93 + data['remark'] = this.remark;
  94 + if (this.images = null) {
  95 + data['images'] = this.images.map((v) => v.toJson()).toList();
  96 + }
  97 + return data;
  98 + }
  99 +}
  100 +
  101 +class Tids {
  102 + String tid;
  103 + String numStr;
  104 + String name;
  105 +
  106 + Tids({this.tid, this.numStr, this.name});
  107 +
  108 + Tids.fromJson(Map<String, dynamic> json) {
  109 + tid = json['tid'];
  110 + numStr = json['num'];
  111 + }
  112 +
  113 + Map<String, dynamic> toJson() {
  114 + final Map<String, dynamic> data = new Map<String, dynamic>();
  115 + data['tid'] = this.tid;
  116 + data['num'] = this.numStr;
  117 + return data;
  118 + }
  119 +}
  120 +
  121 +class Setmeal {
  122 + String setmealId;
  123 + String price;
  124 + String finalPrice;
  125 + String pnum;
  126 + String min;
  127 + String spare;
  128 +
  129 + Setmeal(
  130 + {this.setmealId,
  131 + this.price,
  132 + this.finalPrice,
  133 + this.pnum,
  134 + this.min,
  135 + this.spare});
  136 +
  137 + Setmeal.fromJson(Map<String, dynamic> json) {
  138 + setmealId = json['setmeal_id'];
  139 + price = json['price'];
  140 + finalPrice = json['final_price'];
  141 + pnum = json['pnum'];
  142 + min = json['min'];
  143 + spare = json['spare'];
  144 + }
  145 +
  146 + Map<String, dynamic> toJson() {
  147 + final Map<String, dynamic> data = new Map<String, dynamic>();
  148 + data['setmeal_id'] = this.setmealId;
  149 + data['price'] = this.price;
  150 + data['final_price'] = this.finalPrice;
  151 + data['pnum'] = this.pnum;
  152 + data['min'] = this.min;
  153 + data['spare'] = this.spare;
  154 + return data;
  155 + }
  156 +}
  157 +
  158 +class Wine {
  159 + String wineId;
  160 + String price;
  161 + String finalPrice;
  162 + String num;
  163 +
  164 + Wine({this.wineId, this.price, this.finalPrice, this.num});
  165 +
  166 + Wine.fromJson(Map<String, dynamic> json) {
  167 + wineId = json['wine_id'];
  168 + price = json['price'];
  169 + finalPrice = json['final_price'];
  170 + num = json['num'];
  171 + }
  172 +
  173 + Map<String, dynamic> toJson() {
  174 + final Map<String, dynamic> data = new Map<String, dynamic>();
  175 + data['wine_id'] = this.wineId;
  176 + data['price'] = this.price;
  177 + data['final_price'] = this.finalPrice;
  178 + data['num'] = this.num;
  179 + return data;
  180 + }
  181 +}
  182 +
  183 +class Other {
  184 + String otherId;
  185 + String price;
  186 + String finalPrice;
  187 + String num;
  188 +
  189 + Other({this.otherId, this.price, this.finalPrice, this.num});
  190 +
  191 + Other.fromJson(Map<String, dynamic> json) {
  192 + otherId = json['other_id'];
  193 + price = json['price'];
  194 + finalPrice = json['final_price'];
  195 + num = json['num'];
  196 + }
  197 +
  198 + Map<String, dynamic> toJson() {
  199 + final Map<String, dynamic> data = new Map<String, dynamic>();
  200 + data['other_id'] = this.otherId;
  201 + data['price'] = this.price;
  202 + data['final_price'] = this.finalPrice;
  203 + data['num'] = this.num;
  204 + return data;
  205 + }
  206 +}
  207 +
  208 +class Images {
  209 + String url;
  210 +
  211 + Images({this.url});
  212 +
  213 + Images.fromJson(Map<String, dynamic> json) {
  214 + url = json['url'];
  215 + }
  216 +
  217 + Map<String, dynamic> toJson() {
  218 + final Map<String, dynamic> data = new Map<String, dynamic>();
  219 + data['url'] = this.url;
  220 + return data;
  221 + }
  222 +}
@@ -292,4 +292,8 @@ class HttpUrl { @@ -292,4 +292,8 @@ class HttpUrl {
292 static const String del_deposit = "?service=App.Banquet.DelDeposit"; // 删除宴会定金 292 static const String del_deposit = "?service=App.Banquet.DelDeposit"; // 删除宴会定金
293 static const String create_banquet = 293 static const String create_banquet =
294 "?service=App.Banquet.CreateBanquet"; //创建意向 294 "?service=App.Banquet.CreateBanquet"; //创建意向
  295 + static const String set_banquet_info =
  296 + "?service=App.Banquet.SetBanquetInfo"; //设置选台信息
  297 +
  298 +
295 } 299 }
  1 +
  2 +
1 import 'dart:convert'; 3 import 'dart:convert';
2 import 'dart:ui'; 4 import 'dart:ui';
3 5
@@ -2507,3 +2509,4 @@ Widget remarkButton({GestureTapCallback onPress, content, isSelect = false}) { @@ -2507,3 +2509,4 @@ Widget remarkButton({GestureTapCallback onPress, content, isSelect = false}) {
2507 ), 2509 ),
2508 ); 2510 );
2509 } 2511 }
  2512 +
  1 +import 'dart:convert';
  2 +
1 import 'package:cached_network_image/cached_network_image.dart'; 3 import 'package:cached_network_image/cached_network_image.dart';
2 import 'package:dotted_border/dotted_border.dart'; 4 import 'package:dotted_border/dotted_border.dart';
3 import 'package:flutter/gestures.dart'; 5 import 'package:flutter/gestures.dart';
@@ -10,11 +12,15 @@ import 'package:one_key/widgets/round_button.dart'; @@ -10,11 +12,15 @@ import 'package:one_key/widgets/round_button.dart';
10 import 'package:one_key/widgets/v_empty_view.dart'; 12 import 'package:one_key/widgets/v_empty_view.dart';
11 import 'package:provider/provider.dart'; 13 import 'package:provider/provider.dart';
12 14
  15 +import '../../models/dsolt_xt.dart';
13 import '../../models/feast_menu_model.dart'; 16 import '../../models/feast_menu_model.dart';
  17 +import '../../models/set_xuan_tai_model.dart';
  18 +import '../../models/upload_img_model.dart';
14 import '../../provider/feast_model.dart'; 19 import '../../provider/feast_model.dart';
15 import '../../provider/upload_img_provider.dart'; 20 import '../../provider/upload_img_provider.dart';
16 import '../../provider/user_model.dart'; 21 import '../../provider/user_model.dart';
17 import '../../res/colors.dart'; 22 import '../../res/colors.dart';
  23 +import '../../utils/ConvertNumberToChineseMoneyWords.dart';
18 import '../../utils/dialog_util.dart'; 24 import '../../utils/dialog_util.dart';
19 import '../../utils/screen_util.dart'; 25 import '../../utils/screen_util.dart';
20 import '../../utils/upload_image_util.dart'; 26 import '../../utils/upload_image_util.dart';
@@ -24,6 +30,7 @@ import '../../widgets/set_time_widget.dart'; @@ -24,6 +30,7 @@ import '../../widgets/set_time_widget.dart';
24 import '../../widgets/system_app_bar.dart'; 30 import '../../widgets/system_app_bar.dart';
25 import '../online_check/img_picker_widget_f.dart'; 31 import '../online_check/img_picker_widget_f.dart';
26 import '../table/area_item_table.dart'; 32 import '../table/area_item_table.dart';
  33 +import 'package:one_key/models/table_list.dart' as t;
27 34
28 class FeastCreatePage extends StatefulWidget { 35 class FeastCreatePage extends StatefulWidget {
29 FeastCreatePage({Key key}) : super(key: key); 36 FeastCreatePage({Key key}) : super(key: key);
@@ -60,39 +67,89 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -60,39 +67,89 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
60 67
61 String selectMenu = '意向'; //当前选中的菜单名称 68 String selectMenu = '意向'; //当前选中的菜单名称
62 Set<String> menuSet = {}; //已经保存的菜单名称 69 Set<String> menuSet = {}; //已经保存的菜单名称
63 - String cdShow = '请选择'; //餐段显示  
64 - String qsDateShow = '请选择'; //起始时间  
65 - String startDate = '';  
66 - String endDate = '';  
67 - String dateTimeShowxt = '请选择'; //宴会日期显示 选台 2022-08-02(周二 七月十五)  
68 - DateTime dateTimext; //宴会日期 70 +
69 ScrollController controller = ScrollController(); 71 ScrollController controller = ScrollController();
70 String djDBR = '请选择'; //定金担保人 72 String djDBR = '请选择'; //定金担保人
  73 + UploadImageProvider _uploadImageProvider;
  74 + List<SetXuanTaiModel> xuantaiData = [];
  75 + int xuantaiSelIndex = 0;
  76 + List<DsoltXt> dsoltList = [];
71 77
72 @override 78 @override
73 void initState() { 79 void initState() {
74 // TODO: implement initState 80 // TODO: implement initState
75 super.initState(); 81 super.initState();
76 dateTime = DateTime.now(); 82 dateTime = DateTime.now();
77 - dateTimext = DateTime.now();  
78 Utils.changeStatusColor(color: MyColours.color_438E93); 83 Utils.changeStatusColor(color: MyColours.color_438E93);
79 initSexList(); 84 initSexList();
80 85
  86 + xuantaiData.add(initSetXuanTaiModel());
  87 + initTime(context);
81 WidgetsBinding.instance.addPostFrameCallback((_) { 88 WidgetsBinding.instance.addPostFrameCallback((_) {
82 _getSellerUserBySellerid(); 89 _getSellerUserBySellerid();
  90 + _getStaff();
  91 + _getClassify();
83 // scrollController.jumpTo(scrollController.position.minScrollExtent); 92 // scrollController.jumpTo(scrollController.position.minScrollExtent);
84 }); 93 });
85 } 94 }
86 95
87 - ///商家编辑页面 ----- 获取经理数据 96 + initSetXuanTaiModel() {
  97 + SetXuanTaiModel setXuanTaiModel = SetXuanTaiModel();
  98 + setXuanTaiModel.dateTimeShowxt = '请选择';
  99 + setXuanTaiModel.cdShow = '请选择';
  100 + setXuanTaiModel.qsDateShow = '暂未选择'; //起始时间
  101 + setXuanTaiModel.images = [];
  102 + setXuanTaiModel.other = [];
  103 + setXuanTaiModel.setmeal = [];
  104 + setXuanTaiModel.tids = [];
  105 + setXuanTaiModel.wine = [];
  106 + return setXuanTaiModel;
  107 + }
  108 +
  109 + dsoltModel(String id, String title) {
  110 + DsoltXt dsoltXt = DsoltXt();
  111 + dsoltXt.id = id;
  112 + dsoltXt.title = title;
  113 + return dsoltXt;
  114 + }
  115 +
  116 + //初始化餐段
  117 + initTime(BuildContext context) async {
  118 + dsoltList = [];
  119 + dsoltList.add(dsoltModel('0', '不带餐'));
  120 + UserModel userModel = Provider.of<UserModel>(context, listen: false);
  121 +
  122 + String morning =
  123 + userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
  124 + String noon =
  125 + userModel.user.noon.isEmpty ? "00:00-00:00" : userModel.user.noon;
  126 + String night =
  127 + userModel.user.night.isEmpty ? "00:00-00:00" : userModel.user.night;
  128 + if (morning != "00:00-00:00") {
  129 + dsoltList.add(dsoltModel('1', '早餐'));
  130 + }
  131 + if (noon != "00:00-00:00") {
  132 + dsoltList.add(dsoltModel('2', '午餐'));
  133 + }
  134 + if (night != "00:00-00:00") {
  135 + dsoltList.add(dsoltModel('3', '晚餐'));
  136 + }
  137 + }
  138 +
  139 + ///获取经理数据 ---- 接单人---全部员工
  140 +
88 _getSellerUserBySellerid() async { 141 _getSellerUserBySellerid() async {
89 await feastModel.getAuthUserLists(context); 142 await feastModel.getAuthUserLists(context);
  143 + }
  144 +
  145 + ///跟单人---宴会员工
  146 + _getStaff() async {
  147 + await feastModel.getStaff(context);
  148 + }
90 149
91 - // for (int i = 0; i < feastModel.sellerManageList.length; i++) {  
92 - // if (manageShow == feastModel.sellerManageList[i].title) {  
93 - // customerProvider.manageSelIndex = i;  
94 - // }  
95 - // } 150 + ///获取宴会分类
  151 + Future<bool> _getClassify({bool isShowLoading = true}) async {
  152 + await feastModel.getClassify(context, isShowLoading: isShowLoading);
96 } 153 }
97 154
98 ///称谓 155 ///称谓
@@ -232,7 +289,7 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -232,7 +289,7 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
232 labelShow, 289 labelShow,
233 overflow: TextOverflow.ellipsis, 290 overflow: TextOverflow.ellipsis,
234 style: TextStyle( 291 style: TextStyle(
235 - color: labelShow == '请选择' 292 + color: labelShow == '请选择' || labelShow == '暂未选择'
236 ? MyColours.color_999999 293 ? MyColours.color_999999
237 : MyColours.color_515151, 294 : MyColours.color_515151,
238 fontSize: ScreenUtil().setSp(28), 295 fontSize: ScreenUtil().setSp(28),
@@ -494,6 +551,70 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -494,6 +551,70 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
494 return ymd; 551 return ymd;
495 } 552 }
496 553
  554 + Future<bool> yxSave() async {
  555 + if (dateTimeShow == '请选择') {
  556 + Utils.showToast('请选择宴会日期');
  557 + return false;
  558 + }
  559 + if (jdShow == '请选择') {
  560 + Utils.showToast('请选择接单人');
  561 + return false;
  562 + }
  563 + if (gdShow == '请选择') {
  564 + Utils.showToast('请选择跟单人');
  565 + return false;
  566 + }
  567 + if (feastTypeShow == '请选择') {
  568 + Utils.showToast('请选择宴会类型');
  569 + return false;
  570 + }
  571 + if (nameC.text.trim().length == 0) {
  572 + Utils.showToast('请输入预订人');
  573 + return false;
  574 + }
  575 + if (phoneC.text.trim().length == 0) {
  576 + Utils.showToast('请输入电话');
  577 + return false;
  578 + }
  579 + for (UploadImgModel item in _uploadImageProvider.feastRemarkImageList) {
  580 + if (item.process < 1) {
  581 + Utils.showToast('正在上传图片,请稍等');
  582 + return false;
  583 + }
  584 + }
  585 +
  586 + List imageQiniuUrlList = []; //接口图片数据list
  587 + for (int i = 0; i < _uploadImageProvider.feastRemarkImageList.length; i++) {
  588 + imageQiniuUrlList
  589 + .add({"url": _uploadImageProvider.feastRemarkImageList[i].qiniuUrl});
  590 + }
  591 +
  592 + String ddate = (dateTime.millisecondsSinceEpoch / 1000).floor().toString();
  593 + Map<String, String> pramas = {
  594 + 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
  595 + 'ddate': ddate,
  596 + 'jiedan_id': feastModel.sellerManageList[jdSelIndex].id,
  597 + 'staff_id': feastModel.personnalList[gdSelIndex].id,
  598 + 'classify_id': feastModel.classifyData[feastTypeSelIndex].id,
  599 + 'phone': phoneC.text,
  600 + 'rname': nameC.text,
  601 + 'sex': sexList[sexSelectIndex]['code'],
  602 + };
  603 + if (customC.text.trim().length > 0) {
  604 + pramas['remark'] = customC.text; //备注
  605 + }
  606 + if (imageQiniuUrlList.length > 0) {
  607 + pramas['images'] = json.encode(imageQiniuUrlList); //备注图片
  608 + }
  609 + bool success = await feastModel.createBanquet(context, pramas);
  610 + if (success) {
  611 + Utils.showToast('保存成功');
  612 + return true;
  613 + } else {
  614 + return false;
  615 + }
  616 + }
  617 +
497 ///意向 618 ///意向
498 Widget yxWidget() { 619 Widget yxWidget() {
499 return Column( 620 return Column(
@@ -537,13 +658,13 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -537,13 +658,13 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
537 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘 658 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
538 DialogUtil.showSelectCusmanDialog( 659 DialogUtil.showSelectCusmanDialog(
539 context, 660 context,
540 - feastModel.sellerManageList.map((item) { 661 + feastModel.personnalList.map((item) {
541 return item.title; 662 return item.title;
542 }).toList(), (value) { 663 }).toList(), (value) {
543 if (value != null) { 664 if (value != null) {
544 setState(() { 665 setState(() {
545 gdSelIndex = value.first; 666 gdSelIndex = value.first;
546 - gdShow = feastModel.sellerManageList[gdSelIndex].title; 667 + gdShow = feastModel.personnalList[gdSelIndex].title;
547 }); 668 });
548 } 669 }
549 }, 670 },
@@ -556,14 +677,14 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -556,14 +677,14 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
556 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘 677 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
557 DialogUtil.showSelectCusmanDialog( 678 DialogUtil.showSelectCusmanDialog(
558 context, 679 context,
559 - feastModel.sellerManageList.map((item) {  
560 - return item.title; 680 + feastModel.classifyData.map((item) {
  681 + return item.className;
561 }).toList(), (value) { 682 }).toList(), (value) {
562 if (value != null) { 683 if (value != null) {
563 setState(() { 684 setState(() {
564 feastTypeSelIndex = value.first; 685 feastTypeSelIndex = value.first;
565 feastTypeShow = 686 feastTypeShow =
566 - feastModel.sellerManageList[feastTypeSelIndex].title; 687 + feastModel.classifyData[feastTypeSelIndex].className;
567 }); 688 });
568 } 689 }
569 }, 690 },
@@ -602,33 +723,22 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -602,33 +723,22 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
602 children: [ 723 children: [
603 Expanded( 724 Expanded(
604 child: _callButton( 725 child: _callButton(
605 - onPress: () {  
606 - Map<String, String> pramas = {  
607 - 'sid': Provider.of<UserModel>(context, listen: false)  
608 - .user  
609 - .sellerid,  
610 - 'ddate': '',  
611 - 'jiedan_id': '',  
612 - 'staff_id': '',  
613 - 'classify_id': '',  
614 - 'rname': '',  
615 - 'sex': '',  
616 - 'phone': '',  
617 - 'remark': '',  
618 - 'images': ''  
619 - };  
620 - feastModel.createBanquet(context, pramas); 726 + onPress: () async {
  727 + yxSave();
621 }, 728 },
622 content: '仅保存', 729 content: '仅保存',
623 hasLeftBorder: true, 730 hasLeftBorder: true,
624 isSelect: false)), 731 isSelect: false)),
625 Expanded( 732 Expanded(
626 child: _callButton( 733 child: _callButton(
627 - onPress: () { 734 + onPress: () async {
  735 + // bool success = await yxSave();
  736 + // if (success) {
628 selectMenu = '选台'; 737 selectMenu = '选台';
629 menuSet.add('意向'); 738 menuSet.add('意向');
630 menuSet.add('选台'); 739 menuSet.add('选台');
631 setState(() {}); 740 setState(() {});
  741 + // }
632 }, 742 },
633 content: '保存并下一步', 743 content: '保存并下一步',
634 hasLeftBorder: true, 744 hasLeftBorder: true,
@@ -656,12 +766,13 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -656,12 +766,13 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
656 Container( 766 Container(
657 height: h(33), 767 height: h(33),
658 child: ListView.builder( 768 child: ListView.builder(
659 - padding: EdgeInsets.only(left: w(21)),  
660 - itemCount: 2, 769 + padding: EdgeInsets.only(left: w(21), right: w(9)),
  770 + itemCount: xuantaiData.length + 1,
661 shrinkWrap: true, 771 shrinkWrap: true,
662 scrollDirection: Axis.horizontal, 772 scrollDirection: Axis.horizontal,
663 itemBuilder: (BuildContext contxt, int index) { 773 itemBuilder: (BuildContext contxt, int index) {
664 - if (index == 1) { 774 + if (index == xuantaiData.length ||
  775 + xuantaiData.length == 0) {
665 return InkWell( 776 return InkWell(
666 onTap: () async { 777 onTap: () async {
667 // //添加区域弹框 778 // //添加区域弹框
@@ -685,11 +796,15 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -685,11 +796,15 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
685 796
686 // } 797 // }
687 // }); 798 // });
  799 + xuantaiSelIndex = index;
  800 + xuantaiData.add(initSetXuanTaiModel());
  801 + setState(() {});
688 }, 802 },
689 child: DottedBorder( 803 child: DottedBorder(
690 dashPattern: [2, 2, 2, 2], 804 dashPattern: [2, 2, 2, 2],
691 borderType: BorderType.RRect, 805 borderType: BorderType.RRect,
692 radius: Radius.circular(r(6)), 806 radius: Radius.circular(r(6)),
  807 +
693 // padding: EdgeInsets.all(ScreenUtil().setWidth(70)), 808 // padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
694 color: MyColours.color_199095, 809 color: MyColours.color_199095,
695 strokeWidth: ScreenUtil().setWidth(2), 810 strokeWidth: ScreenUtil().setWidth(2),
@@ -718,80 +833,127 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -718,80 +833,127 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
718 ), 833 ),
719 )); 834 ));
720 } else { 835 } else {
721 - return Container(  
722 - height: h(33),  
723 - width: w(70),  
724 - // padding: EdgeInsets.symmetric(  
725 - // horizontal: w(8),  
726 - // ),  
727 - margin: EdgeInsets.only(right: w(8)),  
728 - alignment: Alignment.center,  
729 - decoration: BoxDecoration(  
730 - borderRadius: BorderRadius.circular(r(6)),  
731 - color: true  
732 - ? MyColours.color_438E93  
733 - : MyColours.color_ffffff),  
734 - child: Text(  
735 - '第一场',  
736 - overflow: TextOverflow.ellipsis,  
737 - style: TextStyle(  
738 - color: true  
739 - ? MyColours.color_F6F6F6  
740 - : MyColours.color_999999,  
741 - fontSize: font(18),  
742 - fontWeight: FontWeight.bold),  
743 - ),  
744 - ); 836 + String numStr =
  837 + ConvertNumberToChineseMoneyWords.toChinese(
  838 + index);
  839 + return InkWell(
  840 + onTap: () {
  841 + setState(() {
  842 + xuantaiSelIndex = index;
  843 + });
  844 + },
  845 + child: Container(
  846 + height: h(33),
  847 + width: w(70),
  848 + // padding: EdgeInsets.symmetric(
  849 + // horizontal: w(8),
  850 + // ),
  851 + margin: EdgeInsets.only(right: w(8)),
  852 + alignment: Alignment.center,
  853 + decoration: BoxDecoration(
  854 + border: Border.all(
  855 + width: w(1),
  856 + color: MyColours.color_438E93),
  857 + borderRadius:
  858 + BorderRadius.circular(r(6)),
  859 + color: xuantaiSelIndex == index
  860 + ? MyColours.color_438E93
  861 + : MyColours.color_ffffff),
  862 + child: Text(
  863 + '第${numStr}场',
  864 + overflow: TextOverflow.ellipsis,
  865 + style: TextStyle(
  866 + color: xuantaiSelIndex == index
  867 + ? MyColours.color_F6F6F6
  868 + : MyColours.color_999999,
  869 + fontSize: font(18),
  870 + fontWeight: FontWeight.bold),
  871 + ),
  872 + ));
745 } 873 }
746 }, 874 },
747 )), 875 )),
748 - VEmptyView(26),  
749 - _selectWidget('宴会日期', dateTimeShowxt, onTap: () { 876 + xuantaiData.length > 1
  877 + ? Center(
  878 + child: RoundButton(
  879 + margin: EdgeInsets.only(top: w(24)),
  880 + text: '删除该场次',
  881 + radius: r(5),
  882 + width: w(106),
  883 + height: h(33),
  884 + fontSize: 36,
  885 + textColor: MyColours.color_F6F6F6,
  886 + isBold: true,
  887 + gradientStart: MyColours.color_E34D59,
  888 + gradientEnd: MyColours.color_E34D59,
  889 + onPressed: () async {
  890 + xuantaiData.removeAt(xuantaiSelIndex);
  891 + xuantaiSelIndex--;
  892 + setState(() {});
  893 + }))
  894 + : SizedBox(),
  895 + VEmptyView(36),
  896 + _selectWidget(
  897 + '宴会日期', xuantaiData[xuantaiSelIndex].dateTimeShowxt,
  898 + onTap: () {
750 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘 899 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
751 - DialogUtil.showCalendarDialog(context, dateTimext) 900 + DialogUtil.showCalendarDialog(context,
  901 + xuantaiData[xuantaiSelIndex].dateTimext)
752 .then((day) async { 902 .then((day) async {
753 if (day != null) { 903 if (day != null) {
754 - dateTimext = day;  
755 - dateTimeShowxt = createDateText(context, day); 904 + xuantaiData[xuantaiSelIndex].dateTimext = day;
  905 + xuantaiData[xuantaiSelIndex].dateTimeShowxt =
  906 + createDateText(context, day);
756 setState(() {}); 907 setState(() {});
757 } 908 }
758 }); 909 });
759 }), 910 }),
760 - _selectWidget('餐段选择', cdShow, onTap: () { 911 + _selectWidget('餐段选择', xuantaiData[xuantaiSelIndex].cdShow,
  912 + onTap: () {
761 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘 913 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
762 DialogUtil.showSelectCusmanDialog( 914 DialogUtil.showSelectCusmanDialog(
763 context, 915 context,
764 - feastModel.sellerManageList.map((item) { 916 + dsoltList.map((item) {
765 return item.title; 917 return item.title;
766 }).toList(), (value) { 918 }).toList(), (value) {
767 if (value != null) { 919 if (value != null) {
768 setState(() { 920 setState(() {
769 - jdSelIndex = value.first;  
770 - jdShow =  
771 - feastModel.sellerManageList[jdSelIndex].title; 921 + xuantaiData[xuantaiSelIndex].cdSelIndex =
  922 + value.first;
  923 + xuantaiData[xuantaiSelIndex].cdShow = dsoltList[
  924 + xuantaiData[xuantaiSelIndex].cdSelIndex]
  925 + .title;
772 }); 926 });
773 } 927 }
774 }, 928 },
775 cancelText: '', 929 cancelText: '',
776 title: '选择餐段', 930 title: '选择餐段',
777 - selecteds:  
778 - jdSelIndex == null ? [] : [jdSelIndex]) 931 + selecteds: xuantaiData[xuantaiSelIndex]
  932 + .cdSelIndex ==
  933 + null
  934 + ? []
  935 + : [xuantaiData[xuantaiSelIndex].cdSelIndex])
779 .then((value) {}); 936 .then((value) {});
780 }), 937 }),
781 - _selectWidget('起始时间', qsDateShow, need: false, onTap: () { 938 + _selectWidget(
  939 + '起始时间', xuantaiData[xuantaiSelIndex].qsDateShow,
  940 + need: false, onTap: () {
782 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘 941 FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
783 942
784 SetTimeWidget.init.showFeastTimeSelector( 943 SetTimeWidget.init.showFeastTimeSelector(
785 context, 944 context,
786 SetTimeWidget.init.getFeastDateData('00:00-23:30'), 945 SetTimeWidget.init.getFeastDateData('00:00-23:30'),
787 - startDate,  
788 - endDate, (value) { 946 + xuantaiData[xuantaiSelIndex].startDate,
  947 + xuantaiData[xuantaiSelIndex].endDate, (value) {
789 if (value != null) { 948 if (value != null) {
790 - startDate = 949 + xuantaiData[xuantaiSelIndex].startDate =
791 SetTimeWidget.init.getSelectTitle(value[0]); 950 SetTimeWidget.init.getSelectTitle(value[0]);
792 - endDate = 951 + xuantaiData[xuantaiSelIndex].endDate =
793 SetTimeWidget.init.getSelectTitle(value[1]); 952 SetTimeWidget.init.getSelectTitle(value[1]);
794 - qsDateShow = startDate + '-' + endDate; 953 + xuantaiData[xuantaiSelIndex].qsDateShow =
  954 + xuantaiData[xuantaiSelIndex].startDate +
  955 + '-' +
  956 + xuantaiData[xuantaiSelIndex].endDate;
795 setState(() {}); 957 setState(() {});
796 } 958 }
797 }); 959 });
@@ -852,7 +1014,8 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -852,7 +1014,8 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
852 ], 1014 ],
853 )), 1015 )),
854 ListView.builder( 1016 ListView.builder(
855 - itemCount: 2, 1017 + itemCount:
  1018 + xuantaiData[xuantaiSelIndex].tids.length,
856 shrinkWrap: true, 1019 shrinkWrap: true,
857 controller: controller, 1020 controller: controller,
858 itemBuilder: 1021 itemBuilder:
@@ -871,7 +1034,9 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -871,7 +1034,9 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
871 children: [ 1034 children: [
872 Expanded( 1035 Expanded(
873 child: Text( 1036 child: Text(
874 - '包间$index', 1037 + xuantaiData[xuantaiSelIndex]
  1038 + .tids[index]
  1039 + .name,
875 overflow: TextOverflow.ellipsis, 1040 overflow: TextOverflow.ellipsis,
876 style: TextStyle( 1041 style: TextStyle(
877 color: MyColours.color_438E93, 1042 color: MyColours.color_438E93,
@@ -913,6 +1078,102 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -913,6 +1078,102 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
913 isBold: false, 1078 isBold: false,
914 gradientStart: MyColours.color_438E93, 1079 gradientStart: MyColours.color_438E93,
915 gradientEnd: MyColours.color_438E93, 1080 gradientEnd: MyColours.color_438E93,
  1081 + onPressed: () async {
  1082 + FocusScope.of(context)
  1083 + .requestFocus(FocusNode()); //点击空白处隐藏键盘
  1084 +
  1085 + if (xuantaiData[xuantaiSelIndex].cdShow ==
  1086 + '不带餐') {
  1087 + Map temp = {};
  1088 + if (xuantaiData[xuantaiSelIndex]
  1089 + .tableList !=
  1090 + null &&
  1091 + xuantaiData[xuantaiSelIndex]
  1092 + .tableList
  1093 + .length >
  1094 + 0) {
  1095 + temp = await NavigatorUtil
  1096 + .goFeastSelectTablePage(context,
  1097 + object: {
  1098 + 'object':
  1099 + xuantaiData[xuantaiSelIndex]
  1100 + .tableList
  1101 + });
  1102 + } else {
  1103 + temp = await NavigatorUtil
  1104 + .goFeastSelectTablePage(
  1105 + context,
  1106 + );
  1107 + }
  1108 +
  1109 + if (temp == null) {
  1110 + } else if (temp['object'].length == 0) {
  1111 + } else {
  1112 + xuantaiData[xuantaiSelIndex].tids = [];
  1113 + xuantaiData[xuantaiSelIndex].tableList =
  1114 + temp['object'];
  1115 +
  1116 + for (t.TableList item
  1117 + in xuantaiData[xuantaiSelIndex]
  1118 + .tableList) {
  1119 + item.selected = true;
  1120 + Tids tids = Tids();
  1121 + tids.tid = item.tid;
  1122 + tids.name = item.name;
  1123 + xuantaiData[xuantaiSelIndex]
  1124 + .tids
  1125 + .add(tids);
  1126 + }
  1127 + setState(() {});
  1128 + }
  1129 + } else {
  1130 + //带餐
  1131 + }
  1132 + // int ddate = xuantaiData[xuantaiSelIndex]
  1133 + // .dateTimext
  1134 + // .millisecondsSinceEpoch;
  1135 + // String ddateSolt = _notebookDetailChangeModel
  1136 + // .currTimeIndex
  1137 + // .toString();
  1138 + // Map temp =
  1139 + // await NavigatorUtil.goSelectTableFPage(
  1140 + // context, '', ddate, ddateSolt,
  1141 + // canChoose: true,
  1142 + // object: {
  1143 + // 'object':
  1144 + // _notebookDetailChangeModel.tableList
  1145 + // });
  1146 +
  1147 + // if (temp == null) {
  1148 + // } else if (temp['object'].length == 0) {
  1149 + // } else {
  1150 + // _notebookDetailChangeModel.tableList =
  1151 + // temp['object'];
  1152 +
  1153 + // for (t.TableList item
  1154 + // in _notebookDetailChangeModel
  1155 + // .tableList) {
  1156 + // item.selected = true;
  1157 + // }
  1158 + // // setState(() {});
  1159 + // int dateTimeMill =
  1160 + // _notebookDetailChangeModel
  1161 + // .dateTime.millisecondsSinceEpoch;
  1162 +
  1163 + // await _notebookDetailChangeModel
  1164 + // .getNewTableList(
  1165 + // context,
  1166 + // '${dateTimeMill}',
  1167 + // _notebookDetailChangeModel
  1168 + // .currTimeIndex
  1169 + // .toString(),
  1170 + // widget.detailEntity.pnum,
  1171 + // _notebookDetailChangeModel
  1172 + // .tableList);
  1173 + // _notebookDetailChangeModel
  1174 + // .notifyListeners();
  1175 + // }
  1176 + },
916 ), 1177 ),
917 VEmptyView(52), 1178 VEmptyView(52),
918 Text( 1179 Text(
@@ -1166,7 +1427,9 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -1166,7 +1427,9 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
1166 children: [ 1427 children: [
1167 Expanded( 1428 Expanded(
1168 child: _callButton( 1429 child: _callButton(
1169 - onPress: () {}, 1430 + onPress: () {
  1431 + // setBanquetInfo
  1432 + },
1170 content: '仅保存', 1433 content: '仅保存',
1171 hasLeftBorder: true, 1434 hasLeftBorder: true,
1172 isSelect: false)), 1435 isSelect: false)),
@@ -2672,6 +2935,8 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -2672,6 +2935,8 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
2672 @override 2935 @override
2673 Widget build(BuildContext context) { 2936 Widget build(BuildContext context) {
2674 feastModel = Provider.of<FeastModel>(context, listen: true); 2937 feastModel = Provider.of<FeastModel>(context, listen: true);
  2938 + _uploadImageProvider =
  2939 + Provider.of<UploadImageProvider>(context, listen: true);
2675 return Scaffold( 2940 return Scaffold(
2676 backgroundColor: MyColours.color_ffffff, 2941 backgroundColor: MyColours.color_ffffff,
2677 appBar: SystemAppBar( 2942 appBar: SystemAppBar(
  1 +import 'dart:ffi';
  2 +
  3 +import 'package:common_utils/common_utils.dart';
  4 +import 'package:dotted_border/dotted_border.dart';
  5 +import 'package:flutter/material.dart';
  6 +import 'package:flutter_screenutil/flutter_screenutil.dart';
  7 +import 'package:one_key/constant/state.dart';
  8 +import 'package:one_key/models/area.dart';
  9 +import 'package:one_key/models/notebook.dart';
  10 +import 'package:one_key/models/tableOuter.dart';
  11 +import 'package:one_key/models/table_list.dart';
  12 +import 'package:one_key/pages/table/area_item_table.dart';
  13 +import 'package:one_key/provider/choose_table_model.dart';
  14 +import 'package:one_key/provider/notebook_detail_change_model.dart';
  15 +import 'package:one_key/provider/notebook_model.dart';
  16 +import 'package:one_key/provider/user_model.dart';
  17 +import 'package:one_key/res/colors.dart';
  18 +import 'package:one_key/utils/dialog_util.dart';
  19 +import 'package:one_key/utils/utils.dart';
  20 +import 'package:one_key/widgets/MyDivider.dart';
  21 +import 'package:one_key/widgets/app_bar.dart';
  22 +import 'package:one_key/widgets/area_item.dart';
  23 +import 'package:one_key/widgets/common_button.dart';
  24 +import 'package:one_key/widgets/f_table_item.dart';
  25 +import 'package:one_key/widgets/h_empty_view.dart';
  26 +import 'package:one_key/widgets/page_exception.dart';
  27 +import 'package:one_key/widgets/table_item.dart';
  28 +import 'package:one_key/models/table.dart' as t;
  29 +import 'package:one_key/widgets/v_empty_view.dart';
  30 +import 'package:provider/provider.dart';
  31 +import 'dart:convert' as convert;
  32 +
  33 +class FeastSelectTablePage extends StatefulWidget {
  34 + final List<TableList> tableList;
  35 +
  36 + final String tid;
  37 +
  38 + FeastSelectTablePage({this.tableList, this.tid});
  39 +
  40 + @override
  41 + State<StatefulWidget> createState() {
  42 + // TODO: implement createState
  43 + return new FeastSelectTablePageState();
  44 + }
  45 +}
  46 +
  47 +class FeastSelectTablePageState extends State<FeastSelectTablePage> {
  48 + List<Area> areas = []; //区域列表
  49 + List<t.Table> selectTables = []; //选择的桌位
  50 +
  51 + List<TableOuter> tableOuterList = []; //区域-桌位列表
  52 +
  53 + Map<String, List<t.Table>> areaTableMap = {}; //区域-桌位Map
  54 +
  55 + ChooseTableModel _chooseTableModel;
  56 +
  57 + Map<String, Notebook> tableMap = {}; //记录已预订桌位对应的订单
  58 +
  59 + String currentArea; //当前选中区域
  60 + // List<String> personNumList = [];
  61 +
  62 + int selectNum = 0;
  63 + bool isSelected = true; //全部按钮
  64 + int _selectNumber;
  65 + // Map dailyMap = {}; // 早市对应半点钟,午市对应半点钟、晚市对应半点钟
  66 +
  67 + @override
  68 + void initState() {
  69 + // TODO: implement initState
  70 + super.initState();
  71 + // for (int i = 1; i < 31; i++) {
  72 + // personNumList.add(i.toString());
  73 + // }
  74 + // initDateHourMinuteList(context);
  75 +
  76 + WidgetsBinding.instance.addPostFrameCallback((_) {
  77 + getTableList();
  78 + });
  79 + }
  80 +
  81 + // /// 早市、午市、晚市对应的半个小时间隔时间段
  82 + // initDateHourMinuteList(BuildContext context) async {
  83 + // UserModel userModel = Provider.of<UserModel>(context, listen: false);
  84 + // String morning =
  85 + // userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
  86 + // String noon =
  87 + // userModel.user.noon.isEmpty ? "00:00-00:00" : userModel.user.noon;
  88 + // String night =
  89 + // userModel.user.night.isEmpty ? "00:00-00:00" : userModel.user.night;
  90 + // userModel.user.morning == ''
  91 + // ? dailyMap.putIfAbsent('morning', () => '')
  92 + // : dailyMap.putIfAbsent(
  93 + // 'morning', () => _getHourAndMinute(userModel.user.morning, 1));
  94 + // userModel.user.noon == ''
  95 + // ? dailyMap.putIfAbsent('noon', () => '')
  96 + // : dailyMap.putIfAbsent(
  97 + // 'noon', () => _getHourAndMinute(userModel.user.noon, 2));
  98 + // userModel.user.night == ''
  99 + // ? dailyMap.putIfAbsent('night', () => '')
  100 + // : dailyMap.putIfAbsent(
  101 + // 'night', () => _getHourAndMinute(userModel.user.night, 3));
  102 + // // _initSunDateList(
  103 + // // userModel.user.morning, userModel.user.noon, userModel.user.night);
  104 + // }
  105 +
  106 + // //根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
  107 + // _getHourAndMinute(String hourAndMinuteStr, int mnd) {
  108 + // List tempDate = hourAndMinuteStr.split("-");
  109 + // String beginDate = tempDate[0];
  110 + // String endDate = tempDate[1];
  111 + // List tempHour = beginDate.split(':');
  112 +
  113 + // /*获取开始小时*/
  114 + // int beginHour = int.parse(tempHour[0]);
  115 + // /*获取开始分钟*/
  116 + // int beginMinute = int.parse(tempHour[1]);
  117 + // List res = [];
  118 + // bool tempLimit = true;
  119 + // while (tempLimit) {
  120 + // String temp = _dealTime(beginHour, beginMinute);
  121 +
  122 + // // bool tempSelect = false;
  123 +
  124 + // // Map tempMap = {'title': temp, 'select': tempSelect};
  125 + // res.add(temp);
  126 + // if (temp == endDate) {
  127 + // tempLimit = false;
  128 + // break;
  129 + // }
  130 + // if (beginMinute == 30) {
  131 + // beginHour++;
  132 + // if (beginHour >= 24) {
  133 + // beginHour = 0;
  134 + // }
  135 + // }
  136 + // beginMinute = (beginMinute + 30) % 60;
  137 + // }
  138 + // return res;
  139 + // }
  140 +
  141 + // /// 根据时间和分钟组装 格式:11:00
  142 + // _dealTime(int begin, int mm) {
  143 + // String sb = '';
  144 + // if (begin < 10) {
  145 + // sb = '0$begin';
  146 + // } else {
  147 + // sb = '$begin';
  148 + // }
  149 + // sb = '$sb:';
  150 + // if (mm < 10) {
  151 + // sb = '${sb}0${mm}';
  152 + // } else {
  153 + // sb = '${sb}${mm}';
  154 + // }
  155 + // return sb;
  156 + // }
  157 +
  158 + //获取桌位列表
  159 + getTableList({needLoading = true}) async {
  160 + UserModel userModel = Provider.of<UserModel>(context, listen: false);
  161 + Map<String, String> params = {"sellerid": userModel.user.sellerid};
  162 + tableOuterList = await _chooseTableModel.getTableList(context, params,
  163 + needLoading: needLoading);
  164 + _chooseTableModel.tablesAll = [];
  165 + for (TableOuter item in tableOuterList) {
  166 + // if (item.name == "推荐") {
  167 + // itemModelList.remove(item);
  168 + // }
  169 + for (var item1 in item.list) {
  170 + item1.selected = false;
  171 + for (var table in widget.tableList) {
  172 + if (item1.id == table.id) {
  173 + item1.selected = true;
  174 + selectNum++;
  175 + // if (!tableList.contains(item)) {
  176 + // tableList.add(item);
  177 + // }
  178 + }
  179 + }
  180 + }
  181 + _chooseTableModel.tablesAll.addAll(item.list);
  182 + }
  183 +
  184 + if (tableOuterList.isEmpty) {
  185 + _chooseTableModel.pageState = PageState.Success;
  186 + _chooseTableModel.notifyListeners();
  187 + } else {
  188 + initData();
  189 + }
  190 + }
  191 +
  192 + refreshTable(context) async {
  193 + await getTableList(needLoading: false);
  194 + // if (temp.length > 0) {
  195 + // _getReserveList(context, needLoading: false);
  196 + // } else {
  197 + // // pageState = PageState.Empty;
  198 + // _chooseTableModel.pageState = PageState.Success;
  199 + // _chooseTableModel.notifyListeners();
  200 + // }
  201 + }
  202 +
  203 + // //获取已预订列表
  204 + // _getReserveList(String sid, {needLoading = true}) async {
  205 + // NoteBookModel model = new NoteBookModel();
  206 + // Map<String, String> params = {
  207 + // "sid": sid,
  208 + // "rdate": _getRdate(),
  209 + // "ddate_solt": widget.ddate_slot,
  210 + // "y": "200",
  211 + // "x": "1",
  212 + // "keywords": "",
  213 + // "sort": "1"
  214 + // };
  215 + // List<Notebook> noteBooks =
  216 + // await model.getReserveList(context, params, needLoading: needLoading);
  217 + // for (Notebook notebook in noteBooks) {
  218 + // if (notebook.tid.isEmpty) continue;
  219 + // if (notebook.status == "1" ||
  220 + // notebook.status == "2" ||
  221 + // notebook.status == "5") {
  222 + // //已预订,用餐中,已安排
  223 + // List<String> tids = notebook.tid.split(",");
  224 + // for (String tid in tids) {
  225 + // tableMap["$tid"] = notebook;
  226 + // }
  227 + // }
  228 + // }
  229 + // print(tableMap);
  230 + // if (needLoading) {
  231 + // initData();
  232 + // } else {
  233 + // initData(needRetain: true);
  234 + // }
  235 + // }
  236 +
  237 + //初始桌位数据
  238 + initData({bool needRetain = false}) {
  239 + areas.clear();
  240 + areaTableMap.clear();
  241 + List<t.Table> tempTableAll = [];
  242 + tempTableAll.addAll(_chooseTableModel.tablesAll);
  243 + for (TableOuter outer in tableOuterList) {
  244 + int count = 0;
  245 + List<t.Table> tempList = [];
  246 + tempList.addAll(outer.list);
  247 + for (t.Table table in outer.list) {
  248 + // table.selected = false;
  249 + if (widget.tid != '' && table.id == widget.tid) {
  250 + table.selected = true;
  251 + currentArea = outer.name;
  252 + }
  253 + if (table.tablestatus == "0") {
  254 + //没有用餐中
  255 + if (tableMap["${table.id}"] != null) {
  256 + // Notebook notebook = tableMap["${table.id}"];
  257 + // table.sign = notebook.status;
  258 + // table.notebookId = notebook.id;
  259 + // table.reserver = notebook.rnameStr;
  260 + // table.pnum = notebook.actual_pnum;
  261 + // table.nickName = notebook.nick_name;
  262 + // table.noteName = notebook.note_name;
  263 + //(不能移除自己定的桌子)
  264 + // String idNow = '';
  265 + // if (tableMap.containsKey('${table.id}')) {
  266 + // //包含,证明该桌子已经被预订了
  267 + // idNow = tableMap['${table.id}'].id;
  268 + // if (idNow != widget.rid) {
  269 + // //不是自己的当前订单
  270 + // //剔除已经预订的桌子,剩下空桌子(仅看空座)
  271 + // tempList.remove(table);
  272 + // //全部
  273 + // tempTableAll.remove(table);
  274 + // }
  275 + // }
  276 + } else {
  277 + table.sign = "";
  278 + table.notebookId = "";
  279 + if (table.enable == "1") {
  280 + count++;
  281 + }
  282 + }
  283 + } else {
  284 + table.sign = "2";
  285 + table.notebookId = "";
  286 + }
  287 + }
  288 +
  289 + areaTableMap["${outer.name}"] = outer.list;
  290 + _chooseTableModel.areaTableMapCanNote["${outer.name}"] = tempList;
  291 + Area area = Area();
  292 + area.name = outer.name;
  293 + area.count = outer.list.length == 0 ? -1 : count;
  294 + area.rid = outer.list.length == 0 ? outer.rid : outer.list[0].rid;
  295 + areas.add(area);
  296 + }
  297 + _chooseTableModel.tablesCanNote = tempTableAll;
  298 + if (_chooseTableModel.swichState) {
  299 + _chooseTableModel.areaTableMapShow =
  300 + _chooseTableModel.areaTableMapCanNote;
  301 + _chooseTableModel.tablesShow = _chooseTableModel.tablesCanNote;
  302 + } else {
  303 + _chooseTableModel.areaTableMapShow = areaTableMap;
  304 + _chooseTableModel.tablesShow = _chooseTableModel.tablesAll;
  305 + }
  306 + print(currentArea);
  307 + if (widget.tid == '') {
  308 + if (!needRetain) {
  309 + // currentArea = areaTableMap.keys.first;
  310 + currentArea = '全部';
  311 + _chooseTableModel.currentTables = _chooseTableModel.tablesAll;
  312 + }
  313 + // if (areas.length == 1) {
  314 + // currentArea = areaTableMap.keys.first;
  315 + // }
  316 + }
  317 +
  318 + _chooseTableModel.pageState = PageState.Success;
  319 + _chooseTableModel.notifyListeners();
  320 + }
  321 +
  322 + // //获取一天开始-结束时间字符串
  323 + // String _getRdate() {
  324 + // String keys = '';
  325 +
  326 + // if (widget.ddate_slot == '1') {
  327 + // //早市
  328 + // keys = 'morning';
  329 + // } else if (widget.ddate_slot == '2') {
  330 + // //午市
  331 + // keys = 'noon';
  332 + // } else if (widget.ddate_slot == '3') {
  333 + // //晚市
  334 + // keys = 'night';
  335 + // }
  336 + // String ymd =
  337 + // DateUtil.formatDate(widget.dateTime, format: DateFormats.y_mo_d);
  338 + // String timeStrStart = '';
  339 + // String timeStrEnd = '';
  340 + // //一天开始时间
  341 + // double startDay;
  342 + // //一天结束时间
  343 + // double endDay;
  344 + // if (keys != '') {
  345 + // List temp = dailyMap[keys];
  346 + // timeStrStart = ymd + ' ' + temp.first + ':00';
  347 + // timeStrEnd = ymd + ' ' + temp.last + ':00';
  348 + // } else {
  349 + // timeStrStart = widget.dateTime.year.toString() +
  350 + // "-" +
  351 + // Utils.addZeroNumber(widget.dateTime.month) +
  352 + // "-" +
  353 + // Utils.addZeroNumber(widget.dateTime.day) +
  354 + // " 00:00:00";
  355 + // timeStrEnd = widget.dateTime.year.toString() +
  356 + // "-" +
  357 + // Utils.addZeroNumber(widget.dateTime.month) +
  358 + // "-" +
  359 + // Utils.addZeroNumber(widget.dateTime.day) +
  360 + // " 23:59:59";
  361 + // }
  362 + // startDay = (DateTime.parse(timeStrStart).millisecondsSinceEpoch) / 1000;
  363 + // endDay = (DateTime.parse(timeStrEnd).millisecondsSinceEpoch) / 1000;
  364 + // return startDay.floor().toString() + "-" + endDay.floor().toString();
  365 + // }
  366 +
  367 + Widget item(int i) {
  368 + return GridView.builder(
  369 + // controller: _areaController,
  370 + // physics: NeverScrollableScrollPhysics(),
  371 + padding: EdgeInsets.symmetric(
  372 + vertical: ScreenUtil().setWidth(20),
  373 + horizontal: ScreenUtil().setWidth(10)),
  374 + shrinkWrap: true,
  375 + itemCount: currentArea == '全部'
  376 + ? _chooseTableModel.tablesShow.length
  377 + : _chooseTableModel.areaTableMapShow[areas[i].name].length,
  378 + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  379 + crossAxisCount: 4,
  380 + childAspectRatio: 1,
  381 + mainAxisSpacing: ScreenUtil().setWidth(30),
  382 + crossAxisSpacing: ScreenUtil().setWidth(12),
  383 + ),
  384 +
  385 + itemBuilder: (BuildContext context, int index) {
  386 + List<t.Table> data = currentArea == '全部'
  387 + ? _chooseTableModel.tablesShow
  388 + : _chooseTableModel.areaTableMapShow[areas[i].name];
  389 + // if (index == data.length || data.length == 0) {
  390 + // return InkWell(
  391 + // onTap: () async {
  392 + // List<String> areasTemp = [];
  393 + // for (int i = 0; i < areas.length; i++) {
  394 + // areasTemp.add(areas[i].name);
  395 + // }
  396 +
  397 + // //添加桌位弹框
  398 + // await DialogUtil.openCreateTableDialog(
  399 + // context, areasTemp, i, personNumList,
  400 + // onTap: (Map<String, String> value) async {
  401 + // print(value);
  402 + // // 'areaname':
  403 + // // areas[currentAreaIndex],
  404 + // // 'name': controller.text,
  405 + // // 'pnumMin': pnumMin,
  406 + // // 'pnumMax': pnumMax
  407 + // //添加桌位 接口参数带整合???
  408 + // // 以下是旧的不去,明天添加桌位接口
  409 + // String rid;
  410 + // for (Area item in areas) {
  411 + // if (item.name == value['areaname']) {
  412 + // rid = item.rid;
  413 + // }
  414 + // }
  415 + // Map<String, String> params = {
  416 + // 'rid': rid,
  417 + // 'name': value['name'],
  418 + // };
  419 + // if (value['pnumMin'] != '') {
  420 + // params['pnum'] = value['pnumMin'];
  421 + // }
  422 + // if (value['pnumMax'] != '') {
  423 + // params['most_pnum'] = value['pnumMax'];
  424 + // }
  425 + // bool success =
  426 + // await _chooseTableModel.addTable(context, params);
  427 + // print(success);
  428 + // if (success) {
  429 + // Utils.showToast('添加成功!');
  430 + // // TableOuter tableOuter = TableOuter();
  431 + // // tableOuter.name = value;
  432 + // // tableOuter.list = [];
  433 + // // tableManagerModel.tableOuterList.add(tableOuter);
  434 + // // tableManagerModel.initData();
  435 + // // Timer(
  436 + // // Duration(milliseconds: 500),
  437 + // // () => _areaController.jumpTo(
  438 + // // _areaController.position.maxScrollExtent));
  439 +
  440 + // // await tableManagerModel
  441 + // // .getTableList(context);
  442 + // // await tableManagerModel
  443 + // // .initData();
  444 + // refreshTable(context);
  445 + // }
  446 + // });
  447 + // },
  448 + // child: Container(
  449 + // child: DottedBorder(
  450 + // dashPattern: [5, 5, 5, 5],
  451 + // borderType: BorderType.RRect,
  452 + // radius: Radius.circular(ScreenUtil().setWidth(20)),
  453 + // // padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
  454 + // color: MyColours.color_E0E0E0,
  455 + // strokeWidth: ScreenUtil().setWidth(2),
  456 + // child: ClipRRect(
  457 + // borderRadius: BorderRadius.all(
  458 + // Radius.circular(ScreenUtil().setWidth(20))),
  459 + // child: Container(
  460 + // height: ScreenUtil().screenWidth -
  461 + // ScreenUtil().setWidth(12 * 3 - 10 * 2),
  462 + // width: ScreenUtil().screenWidth -
  463 + // ScreenUtil().setWidth(12 * 3 - 10 * 2),
  464 + // child: Column(
  465 + // mainAxisAlignment: MainAxisAlignment.center,
  466 + // children: [
  467 + // Image.asset(Utils.getImgPath('add_store'),
  468 + // width: ScreenUtil().setWidth(32)),
  469 + // ],
  470 + // ),
  471 + // ),
  472 + // ),
  473 + // )));
  474 + // } else {
  475 + return Selector<ChooseTableModel, t.Table>(
  476 + shouldRebuild: (pre, next) => true,
  477 + selector: (context, model) => data[index],
  478 + builder: (context, table, _) {
  479 + return FTableItem(table, canSelected: true,
  480 + onSelected: (t.Table table) {
  481 + // if (widget.fromPage == 'tablePhoto') {
  482 + // for (String item in areaTableMap.keys) {
  483 + // for (t.Table item in areaTableMap[item]) {
  484 + // item.selected = false;
  485 + // selectNum = 0;
  486 + // if (table.id == item.id) {
  487 + // item.selected = true;
  488 + // selectTables = [];
  489 + // selectNum++;
  490 + // selectTables.add(table);
  491 + // }
  492 + // }
  493 + // }
  494 + // setState(() {});
  495 + // } else {
  496 + if ((table as t.Table).selected) {
  497 + selectTables.add(table);
  498 +
  499 + selectNum++;
  500 +
  501 + widget.tableList.add(tableToTableList(table));
  502 + } else {
  503 + widget.tableList.removeWhere((t) => t.id == table.id);
  504 +
  505 + selectNum--;
  506 +
  507 + selectTables.removeWhere((t) => t.id == table.id);
  508 + }
  509 + setState(() {});
  510 + // }
  511 + }, fromPage: '', tableMap: tableMap, rid: '');
  512 + },
  513 + );
  514 + },
  515 + );
  516 + }
  517 +
  518 + @override
  519 + Widget build(BuildContext context) {
  520 + _chooseTableModel = Provider.of<ChooseTableModel>(context);
  521 + return Scaffold(
  522 + body: SafeArea(
  523 + child: Column(
  524 + children: <Widget>[
  525 + MyAppBar(
  526 + "选择桌位",
  527 + showBack: true,
  528 + ),
  529 + Expanded(
  530 + child: Consumer<ChooseTableModel>(builder: (context, model, _) {
  531 + if (model.pageState != PageState.Success) {
  532 + return ExceptionPage(
  533 + pageState: model.pageState,
  534 + callback: () {
  535 + getTableList();
  536 + },
  537 + emptyMsg: "暂时没有桌位哦",
  538 + emptyImg: "empty_search",
  539 + showMsg: "加载中,请稍后...",
  540 + );
  541 + } else {
  542 + return Column(
  543 + // crossAxisAlignment: CrossAxisAlignment.center,
  544 + children: [
  545 + Container(
  546 + color: MyColours.color_ffffff,
  547 + height: ScreenUtil().setWidth(92),
  548 + margin:
  549 + EdgeInsets.only(bottom: ScreenUtil().setWidth(30)),
  550 + child: Row(
  551 + children: [
  552 + HEmptyView(20),
  553 + Expanded(
  554 + child: ListView.builder(
  555 + itemCount:
  556 + areas.length == 0 ? 1 : areas.length + 1,
  557 + shrinkWrap: true,
  558 + scrollDirection: Axis.horizontal,
  559 + itemBuilder: (BuildContext contxt, int index) {
  560 + // if (index == areas.length + 1 ||
  561 + // areas.length == 0) {
  562 + // return InkWell(
  563 + // onTap: () async {
  564 + // //添加区域弹框
  565 + // await DialogUtil.openCreateAreaDialog(
  566 + // context, onTap: (value) async {
  567 + // print(value);
  568 + // //添加区域
  569 + // bool success = await _chooseTableModel
  570 + // .addTableAreas(context, value);
  571 + // print(success);
  572 + // if (success) {
  573 + // Utils.showToast('添加成功!');
  574 + // UserModel userModel =
  575 + // Provider.of<UserModel>(context,
  576 + // listen: false);
  577 + // Map<String, String> params = {
  578 + // "sellerid": userModel.user.sellerid
  579 + // };
  580 + // await _chooseTableModel.getTableList(
  581 + // context, params,
  582 + // needLoading: false);
  583 + // initData();
  584 +
  585 + // // setState(() {
  586 + // // updateMenu();
  587 + // // });
  588 + // // _scrollToIndex(widget
  589 + // // .tableManagerModel
  590 + // // .areas
  591 + // // .length);
  592 +
  593 + // }
  594 + // });
  595 + // },
  596 + // child: Column(
  597 + // children: [
  598 + // VEmptyView(20),
  599 + // DottedBorder(
  600 + // dashPattern: [5, 5, 5, 5],
  601 + // borderType: BorderType.RRect,
  602 + // radius: Radius.circular(
  603 + // ScreenUtil().setWidth(10)),
  604 + // // padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
  605 + // color: MyColours.color_199095,
  606 + // strokeWidth: ScreenUtil().setWidth(2),
  607 + // child: ClipRRect(
  608 + // borderRadius: BorderRadius.all(
  609 + // Radius.circular(
  610 + // ScreenUtil().setWidth(10))),
  611 + // child: Container(
  612 + // height:
  613 + // ScreenUtil().setWidth(25 * 2),
  614 + // width: ScreenUtil()
  615 + // .setWidth(104 * 2),
  616 + // child: Column(
  617 + // mainAxisAlignment:
  618 + // MainAxisAlignment.center,
  619 + // children: [
  620 + // Image.asset(
  621 + // Utils.getImgPath(
  622 + // 'add_area'),
  623 + // width: ScreenUtil()
  624 + // .setWidth(24)),
  625 + // ],
  626 + // ),
  627 + // ),
  628 + // ),
  629 + // )
  630 + // ],
  631 + // ),
  632 + // );
  633 + // } else {
  634 + if (index == 0) {
  635 + return InkWell(
  636 + onTap: () {
  637 + setState(() {
  638 + isSelected = true;
  639 + currentArea = '全部';
  640 + _chooseTableModel.currentTables =
  641 + _chooseTableModel
  642 + .areaTableMapShow[currentArea];
  643 + });
  644 + },
  645 + child: Container(
  646 + // width: ScreenUtil().setWidth(104 * 2),
  647 + height: ScreenUtil().setWidth(80),
  648 + margin: EdgeInsets.only(
  649 + right: ScreenUtil().setWidth(20),
  650 + top: ScreenUtil().setWidth(20),
  651 + ),
  652 + padding: EdgeInsets.symmetric(
  653 + horizontal: ScreenUtil().setWidth(20),
  654 + vertical: ScreenUtil().setWidth(10)),
  655 + alignment: Alignment.center,
  656 + decoration: BoxDecoration(
  657 + // borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
  658 + color: isSelected
  659 + ? MyColours.color_199095
  660 + : MyColours.color_ffffff,
  661 + border: Border.all(
  662 + color: MyColours.color_E0E0E0,
  663 + width: ScreenUtil().setWidth(2))),
  664 + child: Text(
  665 + '全部',
  666 + overflow: TextOverflow.ellipsis,
  667 + style: TextStyle(
  668 + color: isSelected
  669 + ? MyColours.color_ffffff
  670 + : MyColours.color_333333,
  671 + fontSize: ScreenUtil().setSp(28),
  672 + decoration: TextDecoration.none,
  673 + fontWeight: FontWeight.normal),
  674 + ),
  675 + ),
  676 + );
  677 + } else {
  678 + return AreaItemTable(
  679 + areas[index - 1], currentArea, (area) {
  680 + setState(() {
  681 + isSelected = false;
  682 + _selectNumber = index - 1;
  683 + currentArea = areas[index - 1].name;
  684 +
  685 + _chooseTableModel.currentTables =
  686 + _chooseTableModel
  687 + .areaTableMapShow[currentArea];
  688 + // _anmationMenu();
  689 + });
  690 + });
  691 + }
  692 + // }
  693 + },
  694 + )),
  695 + // InkWell(
  696 + // onTap: () {
  697 + // setState(() {
  698 + // model.swichState = !model.swichState;
  699 + // if (model.swichState) {
  700 + // model.areaTableMapShow =
  701 + // _chooseTableModel.areaTableMapCanNote;
  702 + // model.tablesShow =
  703 + // _chooseTableModel.tablesCanNote;
  704 + // } else {
  705 + // model.areaTableMapShow = model.areaTableMap;
  706 + // model.tablesShow = model.tablesAll;
  707 + // }
  708 + // });
  709 + // },
  710 + // child: Container(
  711 + // margin: EdgeInsets.only(
  712 + // top: ScreenUtil().setWidth(20),
  713 + // ),
  714 + // child: Row(
  715 + // children: [
  716 + // MyDivider(ScreenUtil().setWidth(15),
  717 + // ScreenUtil().setWidth(80),
  718 + // color: MyColours.color_F1F0F4),
  719 + // MyDivider(ScreenUtil().setWidth(2),
  720 + // ScreenUtil().setWidth(80),
  721 + // color: MyColours.color_9C9C9C),
  722 + // HEmptyView(30),
  723 + // Image.asset(
  724 + // model.swichState
  725 + // ? Utils.getImgPath('f_swich_on')
  726 + // : Utils.getImgPath('f_swich_off'),
  727 + // width: ScreenUtil().setWidth(90),
  728 + // // height: ScreenUtil().setWidth(82),
  729 + // ),
  730 + // // HEmptyView(20),
  731 + // // Text(
  732 + // // '仅看\n空座',
  733 + // // style: TextStyle(
  734 + // // fontSize: ScreenUtil().setSp(28),
  735 + // // color: MyColours.color_333333,
  736 + // // ),
  737 + // // ),
  738 + // // HEmptyView(40)
  739 + // ],
  740 + // )),
  741 + // )
  742 + ],
  743 + ),
  744 + ),
  745 + Expanded(
  746 + flex: 2,
  747 + child: Container(
  748 + constraints: BoxConstraints(
  749 + minHeight: ScreenUtil().setWidth(100)),
  750 + color: Color.fromRGBO(249, 249, 249, 1),
  751 + child: item(_selectNumber))),
  752 + Container(
  753 + width: double.infinity,
  754 + height: ScreenUtil().setHeight(84),
  755 + margin: EdgeInsets.only(
  756 + bottom: ScreenUtil().setWidth(50)),
  757 + padding: EdgeInsets.symmetric(
  758 + horizontal: ScreenUtil().setWidth(31)),
  759 + alignment: Alignment.center,
  760 + color: MyColours.color_ffffff,
  761 + child: CommonButton(
  762 + // content: widget.fromPage == 'tablePhoto'
  763 + // ? '确定'
  764 + // : "已选${selectNum}个 确定",
  765 + content: '确定',
  766 + width: 300,
  767 + height: 84,
  768 + fontSize: 34,
  769 + state: 1,
  770 + onPress: () {
  771 + // if (widget.fromPage == "tablePhoto") {
  772 + // Map temp = {
  773 + // 'tid': selectTables.length > 0
  774 + // ? selectTables[0].id
  775 + // : '',
  776 + // 'tname': selectTables.length > 0
  777 + // ? selectTables[0].name
  778 + // : ''
  779 + // };
  780 + // Navigator.of(context).pop(temp);
  781 + // } else {
  782 + // if (widget.canChoose) {
  783 + // if (widget.tableList.length > 0) {
  784 + // String tid = "";
  785 + // for (TableList table in widget.tableList) {
  786 + // tid += table.id + ",";
  787 + // }
  788 + // if (widget.tableList.length > 0) {
  789 + // tid = tid.substring(0, tid.length - 1);
  790 + // }
  791 +
  792 + // Map temp = {
  793 + // 'object': widget.tableList,
  794 + // 'tid': tid
  795 + // };
  796 + // Navigator.of(context).pop(temp);
  797 + // // }
  798 + // } else {
  799 + if (selectTables.length > 0) {
  800 + String tid = "";
  801 + for (t.Table table in selectTables) {
  802 + tid += table.id + ",";
  803 + }
  804 + if (selectTables.length > 0) {
  805 + tid = tid.substring(0, tid.length - 1);
  806 + }
  807 +
  808 + Map temp = {
  809 + 'object': widget.tableList,
  810 + 'tid': tid
  811 + };
  812 + Navigator.of(context).pop(temp);
  813 + }
  814 + // }
  815 + // }
  816 + },
  817 + )),
  818 + ]);
  819 + }
  820 + }),
  821 + ),
  822 + ],
  823 + ),
  824 + ));
  825 + }
  826 +
  827 + tableToTableList(t.Table table) {
  828 + TableList _tableList = TableList(
  829 + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
  830 + _tableList.id = table.id;
  831 + _tableList.rid = table.rid;
  832 + _tableList.tid = table.tid;
  833 + _tableList.name = table.name;
  834 + _tableList.tablePnum = table.table_pnum;
  835 + _tableList.sellerid = null;
  836 + _tableList.qrcode = null;
  837 + _tableList.mostPnum = table.most_pnum;
  838 + _tableList.hot = null;
  839 + _tableList.orderO = table.order_o;
  840 + _tableList.status = table.status;
  841 + _tableList.enable = table.enable;
  842 + _tableList.spell = table.spell;
  843 + _tableList.cdate = null;
  844 + _tableList.rname = table.rname;
  845 + _tableList.regionName = table.rname;
  846 + _tableList.selected = true;
  847 + return _tableList;
  848 + }
  849 +}
@@ -228,7 +228,7 @@ class _FeastPersonalPageState extends State<FeastPersonalPage> { @@ -228,7 +228,7 @@ class _FeastPersonalPageState extends State<FeastPersonalPage> {
228 return ExceptionPage( 228 return ExceptionPage(
229 pageState: model.pageStatePersonnalHome, 229 pageState: model.pageStatePersonnalHome,
230 callback: () { 230 callback: () {
231 - _getSellerUserBySellerid(); 231 + _getData();
232 }, 232 },
233 emptyMsg: "暂时没有员工哦", 233 emptyMsg: "暂时没有员工哦",
234 emptyImg: "empty_search", 234 emptyImg: "empty_search",
@@ -30,7 +30,8 @@ class FeastModel extends ChangeNotifier { @@ -30,7 +30,8 @@ class FeastModel extends ChangeNotifier {
30 PageState pageStatePersonnalHome = PageState.Loading; //员工管理 30 PageState pageStatePersonnalHome = PageState.Loading; //员工管理
31 List<String> selectPersonnalData = []; 31 List<String> selectPersonnalData = [];
32 bool checkValue = false; 32 bool checkValue = false;
33 - List<String> getPersonnalList = []; //宴会员工 33 + List<String> getPersonnalList = []; //宴会员工uid
  34 + List<FilterBtnModel> personnalList = []; //宴会员工数据----跟单人
34 35
35 PageState pageStateType = PageState.Loading; //宴会类型 36 PageState pageStateType = PageState.Loading; //宴会类型
36 List<ClassifySunModel> classifyData = []; 37 List<ClassifySunModel> classifyData = [];
@@ -57,15 +58,16 @@ class FeastModel extends ChangeNotifier { @@ -57,15 +58,16 @@ class FeastModel extends ChangeNotifier {
57 PageState pageStateFollowUp = PageState.Loading; //待跟进宴会 58 PageState pageStateFollowUp = PageState.Loading; //待跟进宴会
58 PageState pageStateDepositData = PageState.Loading; //定金数据 59 PageState pageStateDepositData = PageState.Loading; //定金数据
59 60
  61 + String rid; //宴会id
60 62
61 /*** 63 /***
62 * 64 *
63 * 新建宴会 65 * 新建宴会
64 */ 66 */
65 67
66 -  
67 - ///添加宴会员工  
68 - Future<dynamic> createBanquet(BuildContext context, Map<String, String> params, 68 + ///新建意向
  69 + Future<dynamic> createBanquet(
  70 + BuildContext context, Map<String, String> params,
69 {isShowLoading = true}) async { 71 {isShowLoading = true}) async {
70 BaseResp<dynamic> baseResp = await DioUtil() 72 BaseResp<dynamic> baseResp = await DioUtil()
71 .request<dynamic>(context, Method.get, HttpUrl.create_banquet, 73 .request<dynamic>(context, Method.get, HttpUrl.create_banquet,
@@ -77,6 +79,35 @@ class FeastModel extends ChangeNotifier { @@ -77,6 +79,35 @@ class FeastModel extends ChangeNotifier {
77 }); 79 });
78 if (baseResp.code == Constant.status_success) { 80 if (baseResp.code == Constant.status_success) {
79 // if (baseResp.data == 1) { 81 // if (baseResp.data == 1) {
  82 + rid = baseResp.data['id'];
  83 + return true;
  84 + // } else {
  85 + // return false;
  86 + // }
  87 + } else {
  88 + if (baseResp != null) {
  89 + Utils.showToast(baseResp.msg ?? "");
  90 + }
  91 + return false;
  92 + }
  93 + }
  94 +
  95 + ///设置选台信息
  96 +
  97 + Future<dynamic> setBanquetInfo(
  98 + BuildContext context, Map<String, String> params,
  99 + {isShowLoading = true}) async {
  100 + BaseResp<dynamic> baseResp = await DioUtil()
  101 + .request<dynamic>(context, Method.get, HttpUrl.set_banquet_info,
  102 + data: params, showLoading: isShowLoading)
  103 + .catchError((error) {
  104 + print(error.toString());
  105 + if (error is MyError) {}
  106 + return false;
  107 + });
  108 + if (baseResp.code == Constant.status_success) {
  109 + // if (baseResp.data == 1) {
  110 + // rid = baseResp.data['id'];
80 return true; 111 return true;
81 // } else { 112 // } else {
82 // return false; 113 // return false;
@@ -88,6 +119,8 @@ class FeastModel extends ChangeNotifier { @@ -88,6 +119,8 @@ class FeastModel extends ChangeNotifier {
88 return false; 119 return false;
89 } 120 }
90 } 121 }
  122 +
  123 +
91 /*** 124 /***
92 * 125 *
93 * 宴会员工 126 * 宴会员工
@@ -154,6 +187,15 @@ class FeastModel extends ChangeNotifier { @@ -154,6 +187,15 @@ class FeastModel extends ChangeNotifier {
154 return model; 187 return model;
155 } 188 }
156 189
  190 + FilterBtnModel returnModelStaff(GetStaffSunModel item) {
  191 + FilterBtnModel model = FilterBtnModel();
  192 + model.id = item.userId;
  193 + model.title = item.nickName ?? item.account;
  194 + model.account = item.account;
  195 + // model.phone = item.phone;
  196 + return model;
  197 + }
  198 +
157 /// 获取店员列表 199 /// 获取店员列表
158 Future<bool> getAuthUserLists(BuildContext context, 200 Future<bool> getAuthUserLists(BuildContext context,
159 {showLoading = false}) async { 201 {showLoading = false}) async {
@@ -271,11 +313,14 @@ class FeastModel extends ChangeNotifier { @@ -271,11 +313,14 @@ class FeastModel extends ChangeNotifier {
271 return false; 313 return false;
272 }); 314 });
273 getPersonnalList = []; 315 getPersonnalList = [];
  316 + personnalList = [];
274 GetStaffModel getStaffModel = GetStaffModel.fromJson(baseResp.responseData); 317 GetStaffModel getStaffModel = GetStaffModel.fromJson(baseResp.responseData);
275 if (getStaffModel.ret == Constant.status_success) { 318 if (getStaffModel.ret == Constant.status_success) {
276 List<GetStaffSunModel> data = getStaffModel.data; 319 List<GetStaffSunModel> data = getStaffModel.data;
277 data.forEach((element) { 320 data.forEach((element) {
278 getPersonnalList.add(element.userId); 321 getPersonnalList.add(element.userId);
  322 + FilterBtnModel model = returnModelStaff(element);
  323 + personnalList.add(model);
279 }); 324 });
280 return true; 325 return true;
281 } else { 326 } else {
@@ -998,4 +998,15 @@ class NavigatorUtil { @@ -998,4 +998,15 @@ class NavigatorUtil {
998 return _navigateTo(context, "${Routes.feast_deposit_data_page}", 998 return _navigateTo(context, "${Routes.feast_deposit_data_page}",
999 replace: replace); 999 replace: replace);
1000 } 1000 }
  1001 +
  1002 + ///宴会---不待餐---- 选择桌位——方硕新修改的选择桌位页面
  1003 + static Future goFeastSelectTablePage(BuildContext context,
  1004 + {Map object, String tid = ''}) {
  1005 + if (object != null) {
  1006 + return _navigateTo(context,
  1007 + "${Routes.feast_select_table_page}?tid=$tid&object=${FluroConvertUtils.object2string(object)}");
  1008 + }
  1009 + // object = {'object': [], "tid": ''};
  1010 + return _navigateTo(context, "${Routes.feast_select_table_page}?tid=$tid");
  1011 + }
1001 } 1012 }
@@ -42,6 +42,7 @@ import 'package:one_key/pages/detail/edit_reserver_page.dart'; @@ -42,6 +42,7 @@ import 'package:one_key/pages/detail/edit_reserver_page.dart';
42 import 'package:one_key/pages/detail/notebook_detail_change_page.dart'; 42 import 'package:one_key/pages/detail/notebook_detail_change_page.dart';
43 import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart'; 43 import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart';
44 import 'package:one_key/pages/detail/select_tables_f_page.dart'; 44 import 'package:one_key/pages/detail/select_tables_f_page.dart';
  45 +import 'package:one_key/pages/feast/feast_select_table_page.dart';
45 import 'package:one_key/pages/home/home_page.dart'; 46 import 'package:one_key/pages/home/home_page.dart';
46 import 'package:one_key/pages/invicate/invitation_page.dart'; 47 import 'package:one_key/pages/invicate/invitation_page.dart';
47 import 'package:one_key/pages/invicate/invitation_page_f_old.dart'; 48 import 'package:one_key/pages/invicate/invitation_page_f_old.dart';
@@ -1588,3 +1589,24 @@ var feastDepositDataPageHandle = new Handler( @@ -1588,3 +1589,24 @@ var feastDepositDataPageHandle = new Handler(
1588 return ChangeNotifierProvider<FeastModel>( 1589 return ChangeNotifierProvider<FeastModel>(
1589 create: (_) => FeastModel(), child: FeastDepositDataPage()); 1590 create: (_) => FeastModel(), child: FeastDepositDataPage());
1590 }); 1591 });
  1592 +
  1593 +///宴会---选择桌位
  1594 +var feastSelectTablePageHandle = new Handler(
  1595 + handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
  1596 + String tid = params['tid'].first;
  1597 +
  1598 + List<TableList> res = [];
  1599 + if (params.keys.contains('object')) {
  1600 + Map object = FluroConvertUtils.string2map(params["object"].first);
  1601 + List temp = object['object'];
  1602 +
  1603 + for (var item in temp) {
  1604 + res.add(TableList.fromJson(item));
  1605 + }
  1606 + }
  1607 +
  1608 + // return SelectTablePage(rid, dateTime, ddate_slot,canChoose: canChoose);
  1609 + return ChangeNotifierProvider<ChooseTableModel>(
  1610 + create: (_) => ChooseTableModel(),
  1611 + child: FeastSelectTablePage(tableList: res, tid: tid));
  1612 +});
@@ -147,6 +147,8 @@ class Routes { @@ -147,6 +147,8 @@ class Routes {
147 static String feast_follow_up_page = "/feast_follow_up_page"; //宴会-----待跟进 147 static String feast_follow_up_page = "/feast_follow_up_page"; //宴会-----待跟进
148 static String feast_deposit_data_page = 148 static String feast_deposit_data_page =
149 "/feast_deposit_data_page"; //宴会-----定金数据 149 "/feast_deposit_data_page"; //宴会-----定金数据
  150 + static String feast_select_table_page =
  151 + "/feast_select_table_page"; //宴会-----新建宴会---选择桌位
150 152
151 static void configureRoutes(FluroRouter router) { 153 static void configureRoutes(FluroRouter router) {
152 router.notFoundHandler = new Handler( 154 router.notFoundHandler = new Handler(
@@ -296,7 +298,8 @@ class Routes { @@ -296,7 +298,8 @@ class Routes {
296 298
297 router.define(feast_follow_up_page, handler: feastFollowUpPageHandle); 299 router.define(feast_follow_up_page, handler: feastFollowUpPageHandle);
298 300
299 - router.define(feast_deposit_data_page, handler: feastDepositDataPageHandle); 301 + router.define(feast_deposit_data_page, handler: feastDepositDataPageHandle);
  302 + router.define(feast_select_table_page, handler: feastSelectTablePageHandle);
300 303
301 } 304 }
302 } 305 }
  1 +class ConvertNumberToChineseMoneyWords{
  2 + // 大写数字
  3 + static List<String> NUMBERS = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十",""];
  4 +
  5 + static String toChinese(int index) {
  6 + if(index > 100){
  7 + return index.toString();
  8 + }
  9 + StringBuffer stringBuffer = StringBuffer();
  10 + if(index / 10 < 1){
  11 + return NUMBERS[index];
  12 + }
  13 + int tenUnit = (index / 10).toInt();
  14 + int remainder = index % 10;
  15 + if(remainder == 9){
  16 + tenUnit++;
  17 + remainder = 10;
  18 + }
  19 + if(tenUnit == 1){
  20 + stringBuffer..write("十")..write(NUMBERS[remainder]);
  21 + return stringBuffer.toString();
  22 + }
  23 + stringBuffer..write(NUMBERS[tenUnit - 1])..write("十")..write(NUMBERS[remainder]);
  24 + return stringBuffer.toString();
  25 + }
  26 +}