Commit 86f482458f392606e1275d671e91ae0fb503fe47

Authored by wdn127929
1 parent 7211c2c9

宴会合并桌位

@@ -30,6 +30,8 @@ import 'package:one_key/widgets/v_empty_view.dart'; @@ -30,6 +30,8 @@ import 'package:one_key/widgets/v_empty_view.dart';
30 import 'package:provider/provider.dart'; 30 import 'package:provider/provider.dart';
31 import 'dart:convert' as convert; 31 import 'dart:convert' as convert;
32 32
  33 +import '../../models/get_board_model.dart';
  34 +
33 class SelectTableFPage extends StatefulWidget { 35 class SelectTableFPage extends StatefulWidget {
34 final String rid; //预订id 36 final String rid; //预订id
35 final DateTime dateTime; //日期 37 final DateTime dateTime; //日期
@@ -68,6 +70,7 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -68,6 +70,7 @@ class SelectTableFPageState extends State<SelectTableFPage> {
68 bool isSelected = true; //全部按钮 70 bool isSelected = true; //全部按钮
69 int _selectNumber; 71 int _selectNumber;
70 Map dailyMap = {}; // 早市对应半点钟,午市对应半点钟、晚市对应半点钟 72 Map dailyMap = {}; // 早市对应半点钟,午市对应半点钟、晚市对应半点钟
  73 + List<Notebook> noteBooks;
71 74
72 @override 75 @override
73 void initState() { 76 void initState() {
@@ -208,6 +211,61 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -208,6 +211,61 @@ class SelectTableFPageState extends State<SelectTableFPage> {
208 // } 211 // }
209 } 212 }
210 213
  214 + //获取预订(原来普通预订和宴会预订)
  215 + _getReserveListAndFeastData(context, params, showloading) async {
  216 + UserModel userModel = Provider.of<UserModel>(context, listen: false);
  217 + String timeStrStart = widget.dateTime.year.toString() +
  218 + "-" +
  219 + Utils.addZeroNumber(widget.dateTime.month) +
  220 + "-" +
  221 + Utils.addZeroNumber(widget.dateTime.day) +
  222 + " 00:00:00";
  223 + String timeStrEnd = widget.dateTime.year.toString() +
  224 + "-" +
  225 + Utils.addZeroNumber(widget.dateTime.month) +
  226 + "-" +
  227 + Utils.addZeroNumber(widget.dateTime.day) +
  228 + " 23:59:59";
  229 + String start =
  230 + (DateUtil.getDateMsByTimeStr(timeStrStart) / 1000).floor().toString();
  231 + String end =
  232 + (DateUtil.getDateMsByTimeStr(timeStrEnd) / 1000).floor().toString();
  233 +
  234 + Map<String, String> banquetmap = {
  235 + 'sid': userModel.user.sellerid,
  236 + 'rdate': '${start}',
  237 + 'edate': '${end}',
  238 + 'ddate_interval': widget.ddate_slot
  239 + };
  240 + return await Future.wait<bool>([
  241 + _getOldReserve(context, params, showloading),
  242 + _chooseTableModel.getBanquetByDate(context, banquetmap,
  243 + showLoading: showloading)
  244 + ]).then((results) {
  245 + if (results[0] && results[1]) {
  246 + //成功
  247 + return true;
  248 + } else {
  249 + if (!results[0]) {
  250 + // Utils.showToast('');
  251 + } else {
  252 + // Utils.showToast('');
  253 + }
  254 + return false;
  255 + }
  256 + }).catchError((e) {
  257 + print(e);
  258 + return false;
  259 + });
  260 + }
  261 +
  262 + Future<bool> _getOldReserve(context, params, showloading) async {
  263 + NoteBookModel model = new NoteBookModel();
  264 + noteBooks =
  265 + await model.getReserveList(context, params, needLoading: showloading);
  266 + return true;
  267 + }
  268 +
211 //获取已预订列表 269 //获取已预订列表
212 _getReserveList(String sid, {needLoading = true}) async { 270 _getReserveList(String sid, {needLoading = true}) async {
213 NoteBookModel model = new NoteBookModel(); 271 NoteBookModel model = new NoteBookModel();
@@ -220,20 +278,104 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -220,20 +278,104 @@ class SelectTableFPageState extends State<SelectTableFPage> {
220 "keywords": "", 278 "keywords": "",
221 "sort": "1" 279 "sort": "1"
222 }; 280 };
223 - List<Notebook> noteBooks =  
224 - await model.getReserveList(context, params, needLoading: needLoading);  
225 - for (Notebook notebook in noteBooks) {  
226 - if (notebook.tid.isEmpty) continue;  
227 - if (notebook.status == "1" ||  
228 - notebook.status == "2" ||  
229 - notebook.status == "5") {  
230 - //已预订,用餐中,已安排  
231 - List<String> tids = notebook.tid.split(",");  
232 - for (String tid in tids) {  
233 - tableMap["$tid"] = notebook; 281 + // List<Notebook> noteBooks =
  282 + // await model.getReserveList(context, params, needLoading: needLoading);
  283 + bool success =
  284 + await _getReserveListAndFeastData(context, params, needLoading);
  285 + if (success) {
  286 + List<FeastBoardModel> banquetByDateDataTemp = []; //转换为桌子id为key,data为value
  287 + _chooseTableModel.banquetByDateData.forEach((element) {
  288 + _chooseTableModel.tablesAll.forEach((table) {
  289 + if (table.name == element.title) {
  290 + FeastBoardModel feastBoardModel = FeastBoardModel();
  291 + feastBoardModel.title = table.id;
  292 + feastBoardModel.data = element.data;
  293 + banquetByDateDataTemp.add(feastBoardModel);
  294 + }
  295 + });
  296 + });
  297 + // banquetByDateData.map((e) => null)
  298 + String banquetKey = '';
  299 + if (widget.ddate_slot == '1') {
  300 + banquetKey = '早餐';
  301 + } else if (widget.ddate_slot == '2') {
  302 + banquetKey = '午餐';
  303 + } else if (widget.ddate_slot == '3') {
  304 + banquetKey = '晚餐';
  305 + }
  306 + banquetByDateDataTemp.forEach((element) {
  307 + FeastBoardSunModel feastBoardSunModel = element.data[banquetKey][0];
  308 + Notebook notebook = Notebook();
  309 + notebook.tid = element.title;
  310 + notebook.status = '10'; //宴会类型
  311 + notebook.className = feastBoardSunModel.className;
  312 + notebook.id = feastBoardSunModel.rid;
  313 + notebook.rname = feastBoardSunModel.rname;
  314 + notebook.nick_name =
  315 + feastBoardSunModel.nickName ?? feastBoardSunModel.account;
  316 + noteBooks.add(notebook);
  317 + });
  318 + for (Notebook notebook in noteBooks) {
  319 + if (notebook.tid.isEmpty) continue;
  320 + if (notebook.status == "1" ||
  321 + notebook.status == "2" ||
  322 + notebook.status == "5" ||
  323 + notebook.status == "10") {
  324 + //已预订,用餐中,已安排
  325 + List<String> tids = notebook.tid.split(",");
  326 + for (String tid in tids) {
  327 + tableMap["$tid"] = notebook;
  328 + }
234 } 329 }
235 } 330 }
  331 +
  332 + // List<Notebook> noteBooks =
  333 + // await newGetReserveList(context, params, showLoading: showloading);
  334 + // List<t.Table> tempSelectTables = [];
  335 + // tempSelectTables.addAll(selectTables);
  336 + // String msg = '';
  337 + // for (Notebook notebook in noteBooks) {
  338 + // if (notebook.tid.isEmpty) continue;
  339 +
  340 + // //已预订,用餐中,已安排
  341 + // List<String> tids = notebook.tid.split(",");
  342 + // for (String tid in tids) {
  343 + // if (notebook.status == "1" ||
  344 + // notebook.status == "2" ||
  345 + // notebook.status == "5" ||
  346 + // notebook.status == "10") {
  347 + // tableMap["$tid"] = notebook;
  348 +
  349 + // ///预订按钮点击的时候提醒已经被预订的桌子
  350 + // ///
  351 + // if (showMsg && selectTables.length > 0) {
  352 + // for (t.Table item in selectTables) {
  353 + // if (item.id == tid) {
  354 + // msg += '${item.name},';
  355 + // tempSelectTables.remove(item);
  356 + // }
  357 + // }
  358 + // }
  359 + // }
  360 + // }
  361 + // }
  362 + // if (showMsg && msg != '' && selectTables.length > 0) {
  363 + // if (msg.endsWith(',')) {
  364 + // msg = msg.substring(0, msg.length - 1);
  365 + // }
  366 + // selectTables = tempSelectTables;
  367 + // Utils.showToast('${msg}已被预订,请选择其他桌位!');
  368 + // print(tableMap);
  369 + // initData(needKeep: needKeep);
  370 + // // notifyListeners();
  371 + // return false;
  372 + // }
  373 +
  374 + // print(tableMap);
  375 + // initData(needKeep: needKeep);
  376 + // return true;
236 } 377 }
  378 +
237 print(tableMap); 379 print(tableMap);
238 if (needLoading) { 380 if (needLoading) {
239 initData(); 381 initData();
@@ -268,6 +410,7 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -268,6 +410,7 @@ class SelectTableFPageState extends State<SelectTableFPage> {
268 table.pnum = notebook.actual_pnum; 410 table.pnum = notebook.actual_pnum;
269 table.nickName = notebook.nick_name; 411 table.nickName = notebook.nick_name;
270 table.noteName = notebook.note_name; 412 table.noteName = notebook.note_name;
  413 + table.label = notebook.className;
271 //(不能移除自己定的桌子) 414 //(不能移除自己定的桌子)
272 String idNow = ''; 415 String idNow = '';
273 if (tableMap.containsKey('${table.id}')) { 416 if (tableMap.containsKey('${table.id}')) {
@@ -484,8 +627,9 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -484,8 +627,9 @@ class SelectTableFPageState extends State<SelectTableFPage> {
484 shouldRebuild: (pre, next) => true, 627 shouldRebuild: (pre, next) => true,
485 selector: (context, model) => data[index], 628 selector: (context, model) => data[index],
486 builder: (context, table, _) { 629 builder: (context, table, _) {
487 - return FTableItem(table, canSelected: true,  
488 - onSelected: (t.Table table) { 630 + return FTableItem(table,
  631 + canSelected: true,
  632 + selectTables: selectTables, onSelected: (t.Table table) {
489 if (widget.fromPage == 'tablePhoto') { 633 if (widget.fromPage == 'tablePhoto') {
490 for (String item in areaTableMap.keys) { 634 for (String item in areaTableMap.keys) {
491 for (t.Table item in areaTableMap[item]) { 635 for (t.Table item in areaTableMap[item]) {
@@ -503,15 +647,11 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -503,15 +647,11 @@ class SelectTableFPageState extends State<SelectTableFPage> {
503 } else { 647 } else {
504 if ((table as t.Table).selected) { 648 if ((table as t.Table).selected) {
505 selectTables.add(table); 649 selectTables.add(table);
506 -  
507 selectNum++; 650 selectNum++;
508 -  
509 widget.tableList.add(tableToTableList(table)); 651 widget.tableList.add(tableToTableList(table));
510 } else { 652 } else {
511 widget.tableList.removeWhere((t) => t.id == table.id); 653 widget.tableList.removeWhere((t) => t.id == table.id);
512 -  
513 selectNum--; 654 selectNum--;
514 -  
515 selectTables.removeWhere((t) => t.id == table.id); 655 selectTables.removeWhere((t) => t.id == table.id);
516 } 656 }
517 setState(() {}); 657 setState(() {});
@@ -718,7 +858,7 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -718,7 +858,7 @@ class SelectTableFPageState extends State<SelectTableFPage> {
718 model.tablesShow = 858 model.tablesShow =
719 _chooseTableModel.tablesCanNote; 859 _chooseTableModel.tablesCanNote;
720 } else { 860 } else {
721 - model.areaTableMapShow = model.areaTableMap; 861 + model.areaTableMapShow = areaTableMap;
722 model.tablesShow = model.tablesAll; 862 model.tablesShow = model.tablesAll;
723 } 863 }
724 }); 864 });
@@ -598,7 +598,7 @@ class _FeastBoardPageState extends State<FeastBoardPage> { @@ -598,7 +598,7 @@ class _FeastBoardPageState extends State<FeastBoardPage> {
598 Expanded( 598 Expanded(
599 child: _callButton( 599 child: _callButton(
600 onPress: () async { 600 onPress: () async {
601 - NavigatorUtil.goFeastCreatePage(context); 601 + NavigatorUtil.goFeastCreatePage(context,isCreate: true);
602 }, 602 },
603 content: '创建宴会', 603 content: '创建宴会',
604 hasLeftBorder: true, 604 hasLeftBorder: true,
@@ -45,7 +45,9 @@ import '../../widgets/special_text/my_extended_text_selection_controls.dart'; @@ -45,7 +45,9 @@ import '../../widgets/special_text/my_extended_text_selection_controls.dart';
45 45
46 class FeastCreatePage extends StatefulWidget { 46 class FeastCreatePage extends StatefulWidget {
47 final GetBanquetByIdNewSunModel banquetDetail; 47 final GetBanquetByIdNewSunModel banquetDetail;
48 - FeastCreatePage({Key key, this.banquetDetail}) : super(key: key); 48 + final bool isCreate;
  49 + FeastCreatePage({Key key, this.banquetDetail, this.isCreate = false})
  50 + : super(key: key);
49 51
50 @override 52 @override
51 _FeastCreatePageState createState() => _FeastCreatePageState(); 53 _FeastCreatePageState createState() => _FeastCreatePageState();
@@ -4618,7 +4620,7 @@ class _FeastCreatePageState extends State<FeastCreatePage> { @@ -4618,7 +4620,7 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
4618 child: Scaffold( 4620 child: Scaffold(
4619 backgroundColor: MyColours.color_ffffff, 4621 backgroundColor: MyColours.color_ffffff,
4620 appBar: SystemAppBar( 4622 appBar: SystemAppBar(
4621 - '新建宴会', 4623 + widget.isCreate ? '新建宴会' : '编辑宴会',
4622 needWhite: true, 4624 needWhite: true,
4623 bgColor: MyColours.color_438E93, 4625 bgColor: MyColours.color_438E93,
4624 titleColor: MyColours.color_F6F6F6, 4626 titleColor: MyColours.color_F6F6F6,
@@ -22,7 +22,8 @@ import '../../widgets/v_empty_view.dart'; @@ -22,7 +22,8 @@ import '../../widgets/v_empty_view.dart';
22 22
23 class FeastDetailPage extends StatefulWidget { 23 class FeastDetailPage extends StatefulWidget {
24 final String rid; 24 final String rid;
25 - FeastDetailPage({Key key, this.rid}) : super(key: key); 25 + final bool canEdit;
  26 + FeastDetailPage({Key key, this.rid, this.canEdit = true}) : super(key: key);
26 27
27 @override 28 @override
28 _FeastDetailPageState createState() => _FeastDetailPageState(); 29 _FeastDetailPageState createState() => _FeastDetailPageState();
@@ -50,6 +51,9 @@ class _FeastDetailPageState extends State<FeastDetailPage> { @@ -50,6 +51,9 @@ class _FeastDetailPageState extends State<FeastDetailPage> {
50 void dispose() { 51 void dispose() {
51 super.dispose(); 52 super.dispose();
52 bus.off('feast_detail_page'); 53 bus.off('feast_detail_page');
  54 + if (!widget.canEdit) {
  55 + Utils.changeStatusColor(color: MyColours.color_ffffff);
  56 + }
53 } 57 }
54 58
55 ///获取宴会详情 59 ///获取宴会详情
@@ -717,7 +721,7 @@ class _FeastDetailPageState extends State<FeastDetailPage> { @@ -717,7 +721,7 @@ class _FeastDetailPageState extends State<FeastDetailPage> {
717 ), 721 ),
718 Spacer(), 722 Spacer(),
719 Text( 723 Text(
720 - '${feastModel.banquetDetail.contractInfo.contractFinalPrice} 元', 724 + '${feastModel.banquetDetail.contractInfo.contractFinalPrice ?? ''} 元',
721 style: TextStyle( 725 style: TextStyle(
722 color: MyColours.color_515151, 726 color: MyColours.color_515151,
723 fontWeight: FontWeight.bold, 727 fontWeight: FontWeight.bold,
@@ -1292,49 +1296,51 @@ class _FeastDetailPageState extends State<FeastDetailPage> { @@ -1292,49 +1296,51 @@ class _FeastDetailPageState extends State<FeastDetailPage> {
1292 invoiceWidget() 1296 invoiceWidget()
1293 ]))), 1297 ]))),
1294 ), 1298 ),
1295 - Row(  
1296 - children: [  
1297 - Expanded(  
1298 - child: _callButton(  
1299 - onPress: () {  
1300 - _showCancelWidget(context);  
1301 - },  
1302 - content: '丢单',  
1303 - hasLeftBorder: true,  
1304 - textColor: MyColours.color_E34D59,  
1305 - isSelect: false)),  
1306 - Expanded(  
1307 - child: _callButton(  
1308 - onPress: () async {  
1309 - NavigatorUtil.goFeastCreatePage(context,  
1310 - banquetDetail: {  
1311 - 'object': feastModel.banquetDetailMap  
1312 - });  
1313 - // selectMenu = '签约';  
1314 - // menuSet.add('定金');  
1315 - // menuSet.add('签约');  
1316 - // setState(() {});  
1317 - // for (UploadImgModel item in _uploadImageProvider  
1318 - // .feastRemarkContractImageList) {  
1319 - // if (item.process < 1) {  
1320 - // Utils.showToast('正在上传图片,请稍等');  
1321 - // return false;  
1322 - // }  
1323 - // }  
1324 - // for (UploadImgModel item in _uploadImageProvider  
1325 - // .feastRemarkInvoiceImageList) {  
1326 - // if (item.process < 1) {  
1327 - // Utils.showToast('正在上传图片,请稍等');  
1328 - // return false;  
1329 - // }  
1330 - // }  
1331 - // _setData();  
1332 - },  
1333 - content: '编辑宴会',  
1334 - hasLeftBorder: true,  
1335 - isSelect: true))  
1336 - ],  
1337 - ) 1299 + widget.canEdit
  1300 + ? Row(
  1301 + children: [
  1302 + Expanded(
  1303 + child: _callButton(
  1304 + onPress: () {
  1305 + _showCancelWidget(context);
  1306 + },
  1307 + content: '丢单',
  1308 + hasLeftBorder: true,
  1309 + textColor: MyColours.color_E34D59,
  1310 + isSelect: false)),
  1311 + Expanded(
  1312 + child: _callButton(
  1313 + onPress: () async {
  1314 + NavigatorUtil.goFeastCreatePage(context,
  1315 + banquetDetail: {
  1316 + 'object': feastModel.banquetDetailMap
  1317 + });
  1318 + // selectMenu = '签约';
  1319 + // menuSet.add('定金');
  1320 + // menuSet.add('签约');
  1321 + // setState(() {});
  1322 + // for (UploadImgModel item in _uploadImageProvider
  1323 + // .feastRemarkContractImageList) {
  1324 + // if (item.process < 1) {
  1325 + // Utils.showToast('正在上传图片,请稍等');
  1326 + // return false;
  1327 + // }
  1328 + // }
  1329 + // for (UploadImgModel item in _uploadImageProvider
  1330 + // .feastRemarkInvoiceImageList) {
  1331 + // if (item.process < 1) {
  1332 + // Utils.showToast('正在上传图片,请稍等');
  1333 + // return false;
  1334 + // }
  1335 + // }
  1336 + // _setData();
  1337 + },
  1338 + content: '编辑宴会',
  1339 + hasLeftBorder: true,
  1340 + isSelect: true))
  1341 + ],
  1342 + )
  1343 + : SizedBox()
1338 ], 1344 ],
1339 ); 1345 );
1340 } 1346 }
@@ -849,7 +849,12 @@ class _FeastFollowUpPageState extends State<FeastFollowUpPage> { @@ -849,7 +849,12 @@ class _FeastFollowUpPageState extends State<FeastFollowUpPage> {
849 itemBuilder: (BuildContext context, int index) { 849 itemBuilder: (BuildContext context, int index) {
850 GetBanquetBeFollowSunModel data = 850 GetBanquetBeFollowSunModel data =
851 feastModel.beFollowData[index]; 851 feastModel.beFollowData[index];
852 - return buildFeastTypeItem(data); 852 + return InkWell(
  853 + onTap: () {
  854 + //点击进入宴会详情
  855 + NavigatorUtil.goFeastDetailPage(context, data.id);
  856 + },
  857 + child: buildFeastTypeItem(data));
853 // '剑南春52度500ml', '1150元/份 不可议价' 858 // '剑南春52度500ml', '1150元/份 不可议价'
854 }); 859 });
855 } 860 }
@@ -871,7 +876,7 @@ class _FeastFollowUpPageState extends State<FeastFollowUpPage> { @@ -871,7 +876,7 @@ class _FeastFollowUpPageState extends State<FeastFollowUpPage> {
871 Expanded( 876 Expanded(
872 child: _callButton( 877 child: _callButton(
873 onPress: () { 878 onPress: () {
874 - NavigatorUtil.goFeastCreatePage(context); 879 + NavigatorUtil.goFeastCreatePage(context,isCreate: true);
875 }, 880 },
876 content: '创建宴会', 881 content: '创建宴会',
877 hasLeftBorder: true, 882 hasLeftBorder: true,
@@ -123,7 +123,7 @@ class _FeastPageState extends State<FeastPage> { @@ -123,7 +123,7 @@ class _FeastPageState extends State<FeastPage> {
123 NavigatorUtil.goFeastBoardPage(context); 123 NavigatorUtil.goFeastBoardPage(context);
124 }), 124 }),
125 upAndDown('y_new', '新建宴会', onTap: () { 125 upAndDown('y_new', '新建宴会', onTap: () {
126 - NavigatorUtil.goFeastCreatePage(context); 126 + NavigatorUtil.goFeastCreatePage(context, isCreate: true);
127 }), 127 }),
128 InkWell( 128 InkWell(
129 onTap: () { 129 onTap: () {
@@ -477,8 +477,9 @@ class FeastSelectTablePageState extends State<FeastSelectTablePage> { @@ -477,8 +477,9 @@ class FeastSelectTablePageState extends State<FeastSelectTablePage> {
477 shouldRebuild: (pre, next) => true, 477 shouldRebuild: (pre, next) => true,
478 selector: (context, model) => data[index], 478 selector: (context, model) => data[index],
479 builder: (context, table, _) { 479 builder: (context, table, _) {
480 - return FTableItem(table, canSelected: true,  
481 - onSelected: (t.Table table) { 480 + return FTableItem(table,
  481 + canSelected: true,
  482 + selectTables: selectTables, onSelected: (t.Table table) {
482 // if (widget.fromPage == 'tablePhoto') { 483 // if (widget.fromPage == 'tablePhoto') {
483 // for (String item in areaTableMap.keys) { 484 // for (String item in areaTableMap.keys) {
484 // for (t.Table item in areaTableMap[item]) { 485 // for (t.Table item in areaTableMap[item]) {
@@ -145,7 +145,7 @@ class MyTableManagerHomePageState extends State<MyTableManagerHomePage> { @@ -145,7 +145,7 @@ class MyTableManagerHomePageState extends State<MyTableManagerHomePage> {
145 Map<String, String> params = { 145 Map<String, String> params = {
146 'tid': table.id, 146 'tid': table.id,
147 'is_merge': isMerge, 147 'is_merge': isMerge,
148 - 'tids':tids 148 + 'tids': tids
149 // 'tids': isMerge == '0' ? '' : tids 149 // 'tids': isMerge == '0' ? '' : tids
150 }; 150 };
151 151
@@ -167,7 +167,7 @@ class MyTableManagerHomePageState extends State<MyTableManagerHomePage> { @@ -167,7 +167,7 @@ class MyTableManagerHomePageState extends State<MyTableManagerHomePage> {
167 } else { 167 } else {
168 if (results[0]) { 168 if (results[0]) {
169 //修改桌位信息成功 169 //修改桌位信息成功
170 - await tableManagerModel.refreshTable(context); 170 + await tableManagerModel.refreshTable(context, needLoading: true);
171 } else { 171 } else {
172 //修改桌位信息失败 172 //修改桌位信息失败
173 } 173 }
@@ -395,13 +395,22 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -395,13 +395,22 @@ class TableManagerPageState extends State<TableManagerPage> {
395 shouldRebuild: (pre, next) => true, 395 shouldRebuild: (pre, next) => true,
396 selector: (context, model) => data[index], 396 selector: (context, model) => data[index],
397 builder: (context, table, _) { 397 builder: (context, table, _) {
398 - return FTableItem(table, canSelected: true, onSelected: (table) { 398 + return FTableItem(table,
  399 + canSelected: true,
  400 + selectTables: tableManagerModel.selectTables,
  401 + onSelected: (table) {
399 if (table.signStr == '已预订') { 402 if (table.signStr == '已预订') {
400 - //进入订座详情页面  
401 - NavigatorUtil.goNotebookDetailPage(  
402 - context,  
403 - tableManagerModel.tableMap[table.id].id,  
404 - tableManagerModel.tableMap[table.id].uid); 403 + if (table.sign == '10') {
  404 + //宴会订单
  405 + NavigatorUtil.goFeastDetailPage(context, table.notebookId,
  406 + canEdit: false);
  407 + } else {
  408 + //进入订座详情页面
  409 + NavigatorUtil.goNotebookDetailPage(
  410 + context,
  411 + tableManagerModel.tableMap[table.id].id,
  412 + tableManagerModel.tableMap[table.id].uid);
  413 + }
405 } else { 414 } else {
406 setState(() { 415 setState(() {
407 if ((table as t.Table).selected) { 416 if ((table as t.Table).selected) {
@@ -12,13 +12,15 @@ import 'package:one_key/provider/user_model.dart'; @@ -12,13 +12,15 @@ import 'package:one_key/provider/user_model.dart';
12 import 'package:one_key/utils/utils.dart'; 12 import 'package:one_key/utils/utils.dart';
13 import 'package:provider/provider.dart'; 13 import 'package:provider/provider.dart';
14 14
  15 +import '../models/get_board_model.dart';
  16 +
15 class ChooseTableModel with ChangeNotifier { 17 class ChooseTableModel with ChangeNotifier {
16 PageState pageState = PageState.Loading; 18 PageState pageState = PageState.Loading;
17 List<TableOuter> tableOuterList = []; //区域-桌位列表 19 List<TableOuter> tableOuterList = []; //区域-桌位列表
18 20
19 bool swichState = false; //仅看空座 21 bool swichState = false; //仅看空座
20 22
21 - Map<String, List<t.Table>> areaTableMap = {}; //区域-桌位Map 已预订和空桌子 23 + // Map<String, List<t.Table>> areaTableMap = {}; //区域-桌位Map 已预订和空桌子
22 Map<String, List<t.Table>> areaTableMapCanNote = 24 Map<String, List<t.Table>> areaTableMapCanNote =
23 {}; //区域-桌位Map 筛选出已经预订的桌子,剩余空桌子 25 {}; //区域-桌位Map 筛选出已经预订的桌子,剩余空桌子
24 26
@@ -29,6 +31,44 @@ class ChooseTableModel with ChangeNotifier { @@ -29,6 +31,44 @@ class ChooseTableModel with ChangeNotifier {
29 List<t.Table> tablesCanNote = []; //全部桌子(空桌子) 31 List<t.Table> tablesCanNote = []; //全部桌子(空桌子)
30 List<t.Table> tablesShow = []; //页面展示 32 List<t.Table> tablesShow = []; //页面展示
31 33
  34 + List<FeastBoardModel> banquetByDateData = []; //宴会看板数据/宴会预订的数据
  35 +
  36 +
  37 + //指定日期、时段宴会预定
  38 +
  39 + Future<bool> getBanquetByDate(
  40 + BuildContext context, Map<String, String> params,
  41 + {showLoading = false}) async {
  42 + BaseResp<dynamic> baseResp = await DioUtil()
  43 + .request<dynamic>(context, Method.get, HttpUrl.get_banquet_by_date,
  44 + data: params, showLoading: showLoading)
  45 + .catchError((error) {
  46 + print(error.toString());
  47 + if (error is MyError) {}
  48 + return false;
  49 + });
  50 + if (baseResp == null) return false;
  51 + if (baseResp.code == Constant.status_success) {
  52 + if (baseResp.data is List) {
  53 + banquetByDateData = [];
  54 + notifyListeners();
  55 + return true;
  56 + }
  57 + banquetByDateData = [];
  58 + baseResp.data.forEach((key, value) {
  59 + FeastBoardModel boardModel = FeastBoardModel();
  60 + boardModel.title = key;
  61 + boardModel.data = FeastBoardModel.fromJson(value).data;
  62 + banquetByDateData.add(boardModel);
  63 + });
  64 + notifyListeners();
  65 + return true;
  66 + } else {
  67 + Utils.showToast(baseResp.msg ?? "");
  68 + }
  69 + return false;
  70 + }
  71 +
32 //获取桌位数据 72 //获取桌位数据
33 Future<List<TableOuter>> getTableList( 73 Future<List<TableOuter>> getTableList(
34 BuildContext context, Map<String, String> params, 74 BuildContext context, Map<String, String> params,
@@ -488,7 +488,7 @@ class MyTableManageHomeModel with ChangeNotifier { @@ -488,7 +488,7 @@ class MyTableManageHomeModel with ChangeNotifier {
488 if (baseResp.code == Constant.status_success) { 488 if (baseResp.code == Constant.status_success) {
489 if (baseResp.responseData['data'] != null) { 489 if (baseResp.responseData['data'] != null) {
490 // && 490 // &&
491 - // baseResp.responseData['data'] == 1 491 + // baseResp.responseData['data'] == 1
492 return true; 492 return true;
493 } else { 493 } else {
494 Utils.showToast(baseResp.msg ?? '合并桌位失败!'); 494 Utils.showToast(baseResp.msg ?? '合并桌位失败!');
@@ -575,8 +575,8 @@ class MyTableManageHomeModel with ChangeNotifier { @@ -575,8 +575,8 @@ class MyTableManageHomeModel with ChangeNotifier {
575 return false; 575 return false;
576 } 576 }
577 577
578 - refreshTable(context) async {  
579 - List temp = await getTableList(context, needLoading: false); 578 + refreshTable(context, {needLoading = false}) async {
  579 + List temp = await getTableList(context, needLoading: needLoading);
580 // if (temp.length > 0) { 580 // if (temp.length > 0) {
581 // getReserveList(context, needLoading: false, needKeep: true); 581 // getReserveList(context, needLoading: false, needKeep: true);
582 // } else { 582 // } else {
@@ -10,6 +10,8 @@ import 'package:one_key/provider/user_model.dart'; @@ -10,6 +10,8 @@ import 'package:one_key/provider/user_model.dart';
10 import 'package:one_key/utils/utils.dart'; 10 import 'package:one_key/utils/utils.dart';
11 import 'package:provider/provider.dart'; 11 import 'package:provider/provider.dart';
12 12
  13 +import '../models/get_board_model.dart';
  14 +
13 class NoteBookModel extends ChangeNotifier { 15 class NoteBookModel extends ChangeNotifier {
14 List<Notebook> notebooks = []; //订单列表 16 List<Notebook> notebooks = []; //订单列表
15 17
@@ -18,6 +20,7 @@ class NoteBookModel extends ChangeNotifier { @@ -18,6 +20,7 @@ class NoteBookModel extends ChangeNotifier {
18 String totalnight = ""; //一天统计 20 String totalnight = ""; //一天统计
19 21
20 PageState pageState = PageState.Loading; 22 PageState pageState = PageState.Loading;
  23 +
21 24
22 //获取已预订订单 25 //获取已预订订单
23 Future<List<Notebook>> getReserveList( 26 Future<List<Notebook>> getReserveList(
@@ -858,14 +858,15 @@ class NavigatorUtil { @@ -858,14 +858,15 @@ class NavigatorUtil {
858 858
859 ///宴会----新建宴会 859 ///宴会----新建宴会
860 static Future<dynamic> goFeastCreatePage(BuildContext context, 860 static Future<dynamic> goFeastCreatePage(BuildContext context,
861 - {replace = false, bool onlyShow = false, Map banquetDetail}) { 861 + {replace = false, bool isCreate = false, Map banquetDetail}) {
862 if (banquetDetail != null) { 862 if (banquetDetail != null) {
863 return _navigateTo(context, 863 return _navigateTo(context,
864 - "${Routes.feast_create_page}?banquetDetail=${FluroConvertUtils.object2string(banquetDetail)}", 864 + "${Routes.feast_create_page}?isCreate=$isCreate&banquetDetail=${FluroConvertUtils.object2string(banquetDetail)}",
865 replace: replace); 865 replace: replace);
866 } 866 }
867 867
868 - return _navigateTo(context, "${Routes.feast_create_page}", 868 + return _navigateTo(
  869 + context, "${Routes.feast_create_page}?isCreate=$isCreate",
869 replace: replace); 870 replace: replace);
870 } 871 }
871 872
@@ -1082,12 +1083,10 @@ class NavigatorUtil { @@ -1082,12 +1083,10 @@ class NavigatorUtil {
1082 } 1083 }
1083 1084
1084 ///宴会--详情 1085 ///宴会--详情
1085 - static Future<dynamic> goFeastDetailPage(  
1086 - BuildContext context,  
1087 - String rid, {  
1088 - replace = false,  
1089 - }) {  
1090 - return _navigateTo(context, "${Routes.feast_detail_page}?rid=$rid", 1086 + static Future<dynamic> goFeastDetailPage(BuildContext context, String rid,
  1087 + {replace = false, bool canEdit = true}) {
  1088 + return _navigateTo(
  1089 + context, "${Routes.feast_detail_page}?rid=$rid&canEdit=$canEdit",
1091 replace: replace); 1090 replace: replace);
1092 } 1091 }
1093 1092
@@ -1374,6 +1374,8 @@ var feastCreatePageHandle = new Handler( @@ -1374,6 +1374,8 @@ var feastCreatePageHandle = new Handler(
1374 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) { 1374 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
1375 // String uids = params["uids"].first; 1375 // String uids = params["uids"].first;
1376 1376
  1377 + bool isCreate = FluroConvertUtils.string2bool(params["isCreate"].first);
  1378 +
1377 GetBanquetByIdNewSunModel banquetDetail; 1379 GetBanquetByIdNewSunModel banquetDetail;
1378 if (params.keys.contains('banquetDetail')) { 1380 if (params.keys.contains('banquetDetail')) {
1379 Map object = FluroConvertUtils.string2map(params["banquetDetail"].first); 1381 Map object = FluroConvertUtils.string2map(params["banquetDetail"].first);
@@ -1391,7 +1393,7 @@ var feastCreatePageHandle = new Handler( @@ -1391,7 +1393,7 @@ var feastCreatePageHandle = new Handler(
1391 } 1393 }
1392 return ChangeNotifierProvider<FeastModel>( 1394 return ChangeNotifierProvider<FeastModel>(
1393 create: (_) => FeastModel(), 1395 create: (_) => FeastModel(),
1394 - child: FeastCreatePage(banquetDetail: banquetDetail)); 1396 + child: FeastCreatePage(banquetDetail: banquetDetail,isCreate:isCreate));
1395 }); 1397 });
1396 1398
1397 ///宴会----添加定金 1399 ///宴会----添加定金
@@ -1764,11 +1766,11 @@ var feastDetailPageHandle = new Handler( @@ -1764,11 +1766,11 @@ var feastDetailPageHandle = new Handler(
1764 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) { 1766 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
1765 String rid = params["rid"].first; 1767 String rid = params["rid"].first;
1766 1768
  1769 + bool canEdit = FluroConvertUtils.string2bool(params["canEdit"].first);
  1770 +
1767 return ChangeNotifierProvider<FeastModel>( 1771 return ChangeNotifierProvider<FeastModel>(
1768 create: (_) => FeastModel(), 1772 create: (_) => FeastModel(),
1769 - child: FeastDetailPage(  
1770 - rid: rid,  
1771 - )); 1773 + child: FeastDetailPage(rid: rid, canEdit: canEdit));
1772 }); 1774 });
1773 1775
1774 ///宴会----发票详情 1776 ///宴会----发票详情
@@ -1788,7 +1790,7 @@ var feastInvoiceDetailPageHandle = new Handler( @@ -1788,7 +1790,7 @@ var feastInvoiceDetailPageHandle = new Handler(
1788 var mergeTableSelectPageHandle = new Handler( 1790 var mergeTableSelectPageHandle = new Handler(
1789 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) { 1791 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
1790 String fromPage = params["fromPage"].first; 1792 String fromPage = params["fromPage"].first;
1791 - String tids = params["tids"].first; 1793 + String tids = params["tids"].first;
1792 1794
1793 String tableidNow = params["tableidNow"].first; 1795 String tableidNow = params["tableidNow"].first;
1794 bool canChoose = params["canChoose"].first == "true" ? true : false; 1796 bool canChoose = params["canChoose"].first == "true" ? true : false;
@@ -1808,5 +1810,5 @@ var mergeTableSelectPageHandle = new Handler( @@ -1808,5 +1810,5 @@ var mergeTableSelectPageHandle = new Handler(
1808 tableList: res, 1810 tableList: res,
1809 canChoose: canChoose, 1811 canChoose: canChoose,
1810 fromPage: fromPage, 1812 fromPage: fromPage,
1811 - tids:tids)); 1813 + tids: tids));
1812 }); 1814 });
@@ -19,6 +19,7 @@ class FTableItem extends StatefulWidget { @@ -19,6 +19,7 @@ class FTableItem extends StatefulWidget {
19 19
20 final int height; //高度 20 final int height; //高度
21 final bool need; 21 final bool need;
  22 + final List<t.Table> selectTables;
22 23
23 FTableItem(this.table, 24 FTableItem(this.table,
24 {this.onSelected, 25 {this.onSelected,
@@ -27,7 +28,8 @@ class FTableItem extends StatefulWidget { @@ -27,7 +28,8 @@ class FTableItem extends StatefulWidget {
27 this.fromPage = 'new', 28 this.fromPage = 'new',
28 this.rid, 29 this.rid,
29 this.tableMap, 30 this.tableMap,
30 - this.need = true}); 31 + this.need = true,
  32 + this.selectTables});
31 33
32 @override 34 @override
33 State<StatefulWidget> createState() { 35 State<StatefulWidget> createState() {
@@ -37,6 +39,23 @@ class FTableItem extends StatefulWidget { @@ -37,6 +39,23 @@ class FTableItem extends StatefulWidget {
37 } 39 }
38 40
39 class FTableItemState extends State<FTableItem> { 41 class FTableItemState extends State<FTableItem> {
  42 + // 判断两数组是否有相同元素, true: 存在相同 false:没相同
  43 + haveSame(List arr, List otherArr) {
  44 + if (arr == null || otherArr == null) {
  45 + return false;
  46 + }
  47 + // 合并数组
  48 +
  49 + arr.addAll(otherArr);
  50 +
  51 + // 合并数组并去重
  52 + Set setArr = new Set(); //用set进行去重
  53 + setArr.addAll(arr); //把数组塞进set里
  54 + List newList = setArr.toList();
  55 +
  56 + return arr.length != newList.length;
  57 + }
  58 +
40 @override 59 @override
41 Widget build(BuildContext context) { 60 Widget build(BuildContext context) {
42 t.Table table = widget.table; 61 t.Table table = widget.table;
@@ -58,11 +77,28 @@ class FTableItemState extends State<FTableItem> { @@ -58,11 +77,28 @@ class FTableItemState extends State<FTableItem> {
58 isSelf = true; 77 isSelf = true;
59 } 78 }
60 } 79 }
  80 + List selectTids = []; //被选中的桌子ids
  81 + if (widget.selectTables != null) {
  82 + widget.selectTables.forEach((element) {
  83 + selectTids.add(element.id);
  84 + });
  85 + }
  86 +
  87 + bool islock = (table.isLock == '1' &&
  88 + widget.tableMap.containsKey(table.lockTid)) ||
  89 + (table.isMerge == '1' &&
  90 + haveSame(widget.tableMap.keys.toList(), table.tids.split(','))) ||
  91 + (table.isLock == '1' && selectTids.contains(table.lockTid)) ||
  92 + (table.isMerge == '1' &&
  93 + haveSame(
  94 + selectTids,
  95 + table.tids.split(
  96 + ','))); //真正上锁*******被合并桌子上锁:合并的桌子被预订&&islock == '1' || 合并桌子上锁:被合并的桌子被预订&&ismerge == '1'
61 97
62 return GestureDetector( 98 return GestureDetector(
63 onTap: () { 99 onTap: () {
64 if (widget.canSelected && widget.fromPage == 'change') { 100 if (widget.canSelected && widget.fromPage == 'change') {
65 - if (table.isLock == '1' && signStr != '已预订') { 101 + if (islock && signStr != '已预订') {
66 return; 102 return;
67 } 103 }
68 //从变更页面进来 canChoose = true 104 //从变更页面进来 canChoose = true
@@ -94,7 +130,7 @@ class FTableItemState extends State<FTableItem> { @@ -94,7 +130,7 @@ class FTableItemState extends State<FTableItem> {
94 } else if (widget.fromPage == 'new' && 130 } else if (widget.fromPage == 'new' &&
95 widget.canSelected && 131 widget.canSelected &&
96 signStr.isEmpty) { 132 signStr.isEmpty) {
97 - if (table.isLock == '1' && signStr != '已预订') { 133 + if (islock && signStr != '已预订') {
98 return; 134 return;
99 } 135 }
100 //从安排桌位进来 136 //从安排桌位进来
@@ -104,7 +140,7 @@ class FTableItemState extends State<FTableItem> { @@ -104,7 +140,7 @@ class FTableItemState extends State<FTableItem> {
104 widget.onSelected(table); 140 widget.onSelected(table);
105 } else if (widget.fromPage == 'table_manage' || 141 } else if (widget.fromPage == 'table_manage' ||
106 widget.fromPage == 'room_manage') { 142 widget.fromPage == 'room_manage') {
107 - if (table.isLock == '1' && signStr != '已预订') { 143 + if (islock && signStr != '已预订') {
108 return; 144 return;
109 } 145 }
110 setState(() { 146 setState(() {
@@ -125,9 +161,7 @@ class FTableItemState extends State<FTableItem> { @@ -125,9 +161,7 @@ class FTableItemState extends State<FTableItem> {
125 widget.onSelected(table); 161 widget.onSelected(table);
126 } 162 }
127 }, 163 },
128 - child: table.isLock == '1' &&  
129 - signStr != '已预订' &&  
130 - widget.fromPage != 'tablePhoto' 164 + child: islock && signStr != '已预订' && widget.fromPage != 'tablePhoto'
131 ? Stack( 165 ? Stack(
132 children: [ 166 children: [
133 Container( 167 Container(
@@ -61,7 +61,8 @@ class MergeTableItemState extends State<MergeTableItem> { @@ -61,7 +61,8 @@ class MergeTableItemState extends State<MergeTableItem> {
61 bool locked = false; 61 bool locked = false;
62 List<String> tids = []; 62 List<String> tids = [];
63 63
64 - if (table.isLock == '1' && !widget.tids.split(',').contains(table.id)) { 64 + if ((table.isLock == '1' && !widget.tids.split(',').contains(table.id)) ||
  65 + table.isMerge == '1') {
65 locked = true; 66 locked = true;
66 } 67 }
67 68
@@ -103,7 +104,8 @@ class MergeTableItemState extends State<MergeTableItem> { @@ -103,7 +104,8 @@ class MergeTableItemState extends State<MergeTableItem> {
103 }); 104 });
104 widget.onSelected(table); 105 widget.onSelected(table);
105 } else if (widget.fromPage == 'table_manage' || 106 } else if (widget.fromPage == 'table_manage' ||
106 - widget.fromPage == 'room_manage') { 107 + widget.fromPage == 'room_manage' ||
  108 + widget.fromPage == 'merge_table') {
107 if (!locked) { 109 if (!locked) {
108 setState(() { 110 setState(() {
109 table.selected = !(table.selected ?? false); 111 table.selected = !(table.selected ?? false);