Commit 01f7dad462800e24fbc33332d46134e1ec83a1eb

Authored by wdn127929
1 parent a99e91c8

修复取消桌位无法再次预订bug

@@ -1061,9 +1061,7 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> { @@ -1061,9 +1061,7 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> {
1061 ///早餐、午餐、晚餐点击方法 1061 ///早餐、午餐、晚餐点击方法
1062 _clickMorAndNoonAndNig() { 1062 _clickMorAndNoonAndNig() {
1063 FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘 1063 FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
1064 - int ddate =  
1065 - (_notebookDetailChangeModel.dateTime.millisecondsSinceEpoch / 1000)  
1066 - .floor(); 1064 + int ddate = _notebookDetailChangeModel.dateTime.millisecondsSinceEpoch;
1067 String ddateSolt = _notebookDetailChangeModel.currTimeIndex.toString(); 1065 String ddateSolt = _notebookDetailChangeModel.currTimeIndex.toString();
1068 _notebookDetailChangeModel.getNewTableList( 1066 _notebookDetailChangeModel.getNewTableList(
1069 context, 1067 context,
1 import 'dart:ffi'; 1 import 'dart:ffi';
2 2
  3 +import 'package:common_utils/common_utils.dart';
3 import 'package:dotted_border/dotted_border.dart'; 4 import 'package:dotted_border/dotted_border.dart';
4 import 'package:flutter/material.dart'; 5 import 'package:flutter/material.dart';
5 import 'package:flutter_screenutil/flutter_screenutil.dart'; 6 import 'package:flutter_screenutil/flutter_screenutil.dart';
@@ -66,6 +67,7 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -66,6 +67,7 @@ class SelectTableFPageState extends State<SelectTableFPage> {
66 int selectNum = 0; 67 int selectNum = 0;
67 bool isSelected = true; //全部按钮 68 bool isSelected = true; //全部按钮
68 int _selectNumber; 69 int _selectNumber;
  70 + Map dailyMap = {}; // 早市对应半点钟,午市对应半点钟、晚市对应半点钟
69 71
70 @override 72 @override
71 void initState() { 73 void initState() {
@@ -74,11 +76,90 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -74,11 +76,90 @@ class SelectTableFPageState extends State<SelectTableFPage> {
74 for (int i = 1; i < 31; i++) { 76 for (int i = 1; i < 31; i++) {
75 personNumList.add(i.toString()); 77 personNumList.add(i.toString());
76 } 78 }
  79 + initDateHourMinuteList(context);
  80 +
77 WidgetsBinding.instance.addPostFrameCallback((_) { 81 WidgetsBinding.instance.addPostFrameCallback((_) {
78 getTableList(); 82 getTableList();
79 }); 83 });
80 } 84 }
81 85
  86 + /// 早市、午市、晚市对应的半个小时间隔时间段
  87 + initDateHourMinuteList(BuildContext context) async {
  88 + UserModel userModel = Provider.of<UserModel>(context, listen: false);
  89 + String morning =
  90 + userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
  91 + String noon =
  92 + userModel.user.noon.isEmpty ? "00:00-00:00" : userModel.user.noon;
  93 + String night =
  94 + userModel.user.night.isEmpty ? "00:00-00:00" : userModel.user.night;
  95 + userModel.user.morning == ''
  96 + ? dailyMap.putIfAbsent('morning', () => '')
  97 + : dailyMap.putIfAbsent(
  98 + 'morning', () => _getHourAndMinute(userModel.user.morning, 1));
  99 + userModel.user.noon == ''
  100 + ? dailyMap.putIfAbsent('noon', () => '')
  101 + : dailyMap.putIfAbsent(
  102 + 'noon', () => _getHourAndMinute(userModel.user.noon, 2));
  103 + userModel.user.night == ''
  104 + ? dailyMap.putIfAbsent('night', () => '')
  105 + : dailyMap.putIfAbsent(
  106 + 'night', () => _getHourAndMinute(userModel.user.night, 3));
  107 + // _initSunDateList(
  108 + // userModel.user.morning, userModel.user.noon, userModel.user.night);
  109 + }
  110 +
  111 + //根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
  112 + _getHourAndMinute(String hourAndMinuteStr, int mnd) {
  113 + List tempDate = hourAndMinuteStr.split("-");
  114 + String beginDate = tempDate[0];
  115 + String endDate = tempDate[1];
  116 + List tempHour = beginDate.split(':');
  117 +
  118 + /*获取开始小时*/
  119 + int beginHour = int.parse(tempHour[0]);
  120 + /*获取开始分钟*/
  121 + int beginMinute = int.parse(tempHour[1]);
  122 + List res = [];
  123 + bool tempLimit = true;
  124 + while (tempLimit) {
  125 + String temp = _dealTime(beginHour, beginMinute);
  126 +
  127 + // bool tempSelect = false;
  128 +
  129 + // Map tempMap = {'title': temp, 'select': tempSelect};
  130 + res.add(temp);
  131 + if (temp == endDate) {
  132 + tempLimit = false;
  133 + break;
  134 + }
  135 + if (beginMinute == 30) {
  136 + beginHour++;
  137 + if (beginHour >= 24) {
  138 + beginHour = 0;
  139 + }
  140 + }
  141 + beginMinute = (beginMinute + 30) % 60;
  142 + }
  143 + return res;
  144 + }
  145 +
  146 + /// 根据时间和分钟组装 格式:11:00
  147 + _dealTime(int begin, int mm) {
  148 + String sb = '';
  149 + if (begin < 10) {
  150 + sb = '0$begin';
  151 + } else {
  152 + sb = '$begin';
  153 + }
  154 + sb = '$sb:';
  155 + if (mm < 10) {
  156 + sb = '${sb}0${mm}';
  157 + } else {
  158 + sb = '${sb}${mm}';
  159 + }
  160 + return sb;
  161 + }
  162 +
82 //获取桌位列表 163 //获取桌位列表
83 getTableList({needLoading = true}) async { 164 getTableList({needLoading = true}) async {
84 UserModel userModel = Provider.of<UserModel>(context, listen: false); 165 UserModel userModel = Provider.of<UserModel>(context, listen: false);
@@ -247,24 +328,46 @@ class SelectTableFPageState extends State<SelectTableFPage> { @@ -247,24 +328,46 @@ class SelectTableFPageState extends State<SelectTableFPage> {
247 328
248 //获取一天开始-结束时间字符串 329 //获取一天开始-结束时间字符串
249 String _getRdate() { 330 String _getRdate() {
  331 + String keys = '';
  332 +
  333 + if (widget.ddate_slot == '1') {
  334 + //早市
  335 + keys = 'morning';
  336 + } else if (widget.ddate_slot == '2') {
  337 + //午市
  338 + keys = 'noon';
  339 + } else if (widget.ddate_slot == '3') {
  340 + //晚市
  341 + keys = 'night';
  342 + }
  343 + String ymd =
  344 + DateUtil.formatDate(widget.dateTime, format: DateFormats.y_mo_d);
  345 + String timeStrStart = '';
  346 + String timeStrEnd = '';
250 //一天开始时间 347 //一天开始时间
251 - double startDay = (DateTime.parse((widget.dateTime.year.toString() +  
252 - "-" +  
253 - Utils.addZeroNumber(widget.dateTime.month) +  
254 - "-" +  
255 - Utils.addZeroNumber(widget.dateTime.day) +  
256 - " 00:00:00"))  
257 - .millisecondsSinceEpoch) /  
258 - 1000; 348 + double startDay;
259 //一天结束时间 349 //一天结束时间
260 - double endDay = (DateTime.parse((widget.dateTime.year.toString() +  
261 - "-" +  
262 - Utils.addZeroNumber(widget.dateTime.month) +  
263 - "-" +  
264 - Utils.addZeroNumber(widget.dateTime.day) +  
265 - " 23:59:59"))  
266 - .millisecondsSinceEpoch) /  
267 - 1000; 350 + double endDay;
  351 + if (keys != '') {
  352 + List temp = dailyMap[keys];
  353 + timeStrStart = ymd + ' ' + temp.first + ':00';
  354 + timeStrEnd = ymd + ' ' + temp.last + ':00';
  355 + } else {
  356 + timeStrStart = widget.dateTime.year.toString() +
  357 + "-" +
  358 + Utils.addZeroNumber(widget.dateTime.month) +
  359 + "-" +
  360 + Utils.addZeroNumber(widget.dateTime.day) +
  361 + " 00:00:00";
  362 + timeStrEnd = widget.dateTime.year.toString() +
  363 + "-" +
  364 + Utils.addZeroNumber(widget.dateTime.month) +
  365 + "-" +
  366 + Utils.addZeroNumber(widget.dateTime.day) +
  367 + " 23:59:59";
  368 + }
  369 + startDay = (DateTime.parse(timeStrStart).millisecondsSinceEpoch) / 1000;
  370 + endDay = (DateTime.parse(timeStrEnd).millisecondsSinceEpoch) / 1000;
268 return startDay.floor().toString() + "-" + endDay.floor().toString(); 371 return startDay.floor().toString() + "-" + endDay.floor().toString();
269 } 372 }
270 373
@@ -617,11 +617,11 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -617,11 +617,11 @@ class TableManagerPageState extends State<TableManagerPage> {
617 } 617 }
618 618
619 ///早餐、午餐、晚餐点击方法 619 ///早餐、午餐、晚餐点击方法
620 - _clickMorAndNoonAndNig() { 620 + _clickMorAndNoonAndNig() async {
621 tableManagerModel.selectDateStr = tableManagerModel.returnDayDateWeekStr( 621 tableManagerModel.selectDateStr = tableManagerModel.returnDayDateWeekStr(
622 tableManagerModel.dateTimeSelect, tableManagerModel.currTimeIndex); 622 tableManagerModel.dateTimeSelect, tableManagerModel.currTimeIndex);
623 623
624 - tableManagerModel.getReserveList(context, needLoading: false); 624 + await tableManagerModel.getReserveList(context, needLoading: true);
625 } 625 }
626 626
627 @override 627 @override
@@ -738,7 +738,10 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -738,7 +738,10 @@ class TableManagerPageState extends State<TableManagerPage> {
738 onPress: () { 738 onPress: () {
739 if (tableManagerModel.currTimeIndex == 1) 739 if (tableManagerModel.currTimeIndex == 1)
740 return; 740 return;
741 - tableManagerModel.currTimeIndex = 1; 741 + setState(() {
  742 + tableManagerModel.currTimeIndex = 1;
  743 + });
  744 +
742 _clickMorAndNoonAndNig(); 745 _clickMorAndNoonAndNig();
743 }, 746 },
744 )), 747 )),
@@ -772,7 +775,9 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -772,7 +775,9 @@ class TableManagerPageState extends State<TableManagerPage> {
772 onPress: () { 775 onPress: () {
773 if (tableManagerModel.currTimeIndex == 2) 776 if (tableManagerModel.currTimeIndex == 2)
774 return; 777 return;
775 - tableManagerModel.currTimeIndex = 2; 778 + setState(() {
  779 + tableManagerModel.currTimeIndex = 2;
  780 + });
776 _clickMorAndNoonAndNig(); 781 _clickMorAndNoonAndNig();
777 }, 782 },
778 )), 783 )),
@@ -803,7 +808,10 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -803,7 +808,10 @@ class TableManagerPageState extends State<TableManagerPage> {
803 onPress: () { 808 onPress: () {
804 if (tableManagerModel.currTimeIndex == 3) 809 if (tableManagerModel.currTimeIndex == 3)
805 return; 810 return;
806 - tableManagerModel.currTimeIndex = 3; 811 + setState(() {
  812 + tableManagerModel.currTimeIndex = 3;
  813 + });
  814 +
807 _clickMorAndNoonAndNig(); 815 _clickMorAndNoonAndNig();
808 }, 816 },
809 )), 817 )),
@@ -294,6 +294,7 @@ class TableManagerModel with ChangeNotifier { @@ -294,6 +294,7 @@ class TableManagerModel with ChangeNotifier {
294 //晚市 294 //晚市
295 keys = 'night'; 295 keys = 'night';
296 } 296 }
  297 +
297 if (keys != '') { 298 if (keys != '') {
298 List temp = dailyMap[keys]; 299 List temp = dailyMap[keys];
299 String timeStrStart = ymd + ' ' + temp.first + ':00'; 300 String timeStrStart = ymd + ' ' + temp.first + ':00';
@@ -470,15 +471,15 @@ class TableManagerModel with ChangeNotifier { @@ -470,15 +471,15 @@ class TableManagerModel with ChangeNotifier {
470 notebook.status == "2" || 471 notebook.status == "2" ||
471 notebook.status == "5") { 472 notebook.status == "5") {
472 tableMap["$tid"] = notebook; 473 tableMap["$tid"] = notebook;
473 - }  
474 474
475 - ///预订按钮点击的时候提醒已经被预订的桌子  
476 - ///  
477 - if (showMsg && selectTables.length > 0) {  
478 - for (t.Table item in selectTables) {  
479 - if (item.id == tid) {  
480 - msg += '${item.name},';  
481 - tempSelectTables.remove(item); 475 + ///预订按钮点击的时候提醒已经被预订的桌子
  476 + ///
  477 + if (showMsg && selectTables.length > 0) {
  478 + for (t.Table item in selectTables) {
  479 + if (item.id == tid) {
  480 + msg += '${item.name},';
  481 + tempSelectTables.remove(item);
  482 + }
482 } 483 }
483 } 484 }
484 } 485 }
@@ -537,24 +538,45 @@ class TableManagerModel with ChangeNotifier { @@ -537,24 +538,45 @@ class TableManagerModel with ChangeNotifier {
537 538
538 //获取一天开始-结束时间字符串 539 //获取一天开始-结束时间字符串
539 String _getRdate() { 540 String _getRdate() {
  541 + String keys = '';
  542 +
  543 + if (currTimeIndex == 1) {
  544 + //早市
  545 + keys = 'morning';
  546 + } else if (currTimeIndex == 2) {
  547 + //午市
  548 + keys = 'noon';
  549 + } else if (currTimeIndex == 3) {
  550 + //晚市
  551 + keys = 'night';
  552 + }
  553 + String ymd = DateUtil.formatDate(dateTime, format: DateFormats.y_mo_d);
  554 + String timeStrStart = '';
  555 + String timeStrEnd = '';
540 //一天开始时间 556 //一天开始时间
541 - double startDay = (DateTime.parse((dateTime.year.toString() +  
542 - "-" +  
543 - Utils.addZeroNumber(dateTime.month) +  
544 - "-" +  
545 - Utils.addZeroNumber(dateTime.day) +  
546 - " 00:00:00"))  
547 - .millisecondsSinceEpoch) /  
548 - 1000; 557 + double startDay;
549 //一天结束时间 558 //一天结束时间
550 - double endDay = (DateTime.parse((dateTime.year.toString() +  
551 - "-" +  
552 - Utils.addZeroNumber(dateTime.month) +  
553 - "-" +  
554 - Utils.addZeroNumber(dateTime.day) +  
555 - " 23:59:59"))  
556 - .millisecondsSinceEpoch) /  
557 - 1000; 559 + double endDay;
  560 + if (keys != '') {
  561 + List temp = dailyMap[keys];
  562 + timeStrStart = ymd + ' ' + temp.first + ':00';
  563 + timeStrEnd = ymd + ' ' + temp.last + ':00';
  564 + } else {
  565 + timeStrStart = dateTime.year.toString() +
  566 + "-" +
  567 + Utils.addZeroNumber(dateTime.month) +
  568 + "-" +
  569 + Utils.addZeroNumber(dateTime.day) +
  570 + " 00:00:00";
  571 + timeStrEnd = dateTime.year.toString() +
  572 + "-" +
  573 + Utils.addZeroNumber(dateTime.month) +
  574 + "-" +
  575 + Utils.addZeroNumber(dateTime.day) +
  576 + " 23:59:59";
  577 + }
  578 + startDay = (DateTime.parse(timeStrStart).millisecondsSinceEpoch) / 1000;
  579 + endDay = (DateTime.parse(timeStrEnd).millisecondsSinceEpoch) / 1000;
558 return startDay.floor().toString() + "-" + endDay.floor().toString(); 580 return startDay.floor().toString() + "-" + endDay.floor().toString();
559 } 581 }
560 582
@@ -662,7 +684,7 @@ class TableManagerModel with ChangeNotifier { @@ -662,7 +684,7 @@ class TableManagerModel with ChangeNotifier {
662 dateText = _returnDate(day); 684 dateText = _returnDate(day);
663 selectDateStr = returnDayDateWeekStr(day, currTimeIndex); 685 selectDateStr = returnDayDateWeekStr(day, currTimeIndex);
664 dateTime = day; 686 dateTime = day;
665 - getReserveList(context, needLoading: false); 687 + getReserveList(context, needLoading: true);
666 } 688 }
667 689
668 _returnDate(DateTime day) { 690 _returnDate(DateTime day) {