Commit 7c443c04336c8c3c1c31d6c57c4fb1bd76369336

Authored by weixin_45529955
1 parent 25099666

桌位页面增加 下拉刷新

@@ -9,6 +9,7 @@ import 'package:dotted_border/dotted_border.dart'; @@ -9,6 +9,7 @@ import 'package:dotted_border/dotted_border.dart';
9 // import 'package:easy_contact_picker/easy_contact_picker.dart'; 9 // import 'package:easy_contact_picker/easy_contact_picker.dart';
10 import 'package:flutter/material.dart'; 10 import 'package:flutter/material.dart';
11 import 'package:flutter/services.dart'; 11 import 'package:flutter/services.dart';
  12 +import 'package:flutter_easyrefresh/easy_refresh.dart';
12 import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; 13 import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
13 import 'package:flutter_native_contact_picker/model/contact.dart'; 14 import 'package:flutter_native_contact_picker/model/contact.dart';
14 import 'package:flutter_screenutil/flutter_screenutil.dart'; 15 import 'package:flutter_screenutil/flutter_screenutil.dart';
@@ -179,6 +180,7 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -179,6 +180,7 @@ class TableManagerPageState extends State<TableManagerPage> {
179 DateTime? dateTimeSelect; 180 DateTime? dateTimeSelect;
180 int selectNumber = 0; 181 int selectNumber = 0;
181 late StoreBaseIndoProvider storeBaseIndoProvider; 182 late StoreBaseIndoProvider storeBaseIndoProvider;
  183 + late EasyRefreshController? _controller;
182 184
183 @override 185 @override
184 void initState() { 186 void initState() {
@@ -186,6 +188,7 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -186,6 +188,7 @@ class TableManagerPageState extends State<TableManagerPage> {
186 super.initState(); 188 super.initState();
187 189
188 LogUtil.v("table_manager_page initState"); 190 LogUtil.v("table_manager_page initState");
  191 + _controller = EasyRefreshController();
189 192
190 // if (App.sp.containsKey('user')) { 193 // if (App.sp.containsKey('user')) {
191 // String s = App.sp.getString('user'); 194 // String s = App.sp.getString('user');
@@ -845,159 +848,172 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -845,159 +848,172 @@ class TableManagerPageState extends State<TableManagerPage> {
845 } 848 }
846 849
847 Widget item(int i) { 850 Widget item(int i) {
848 - return GridView.builder(  
849 - // controller: _areaController,  
850 - // physics: NeverScrollableScrollPhysics(),  
851 - padding: EdgeInsets.symmetric(  
852 - vertical: ScreenUtil().setWidth(20),  
853 - horizontal: ScreenUtil().setWidth(10)),  
854 - shrinkWrap: true,  
855 - itemCount:  
856 - tableManagerModel!.tablesOrReserveDataShow![i].tableList!.length,  
857 - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(  
858 - crossAxisCount: 4,  
859 - childAspectRatio: 1,  
860 - mainAxisSpacing: ScreenUtil().setWidth(30),  
861 - crossAxisSpacing: ScreenUtil().setWidth(12),  
862 - ),  
863 -  
864 - itemBuilder: (BuildContext context, int index) {  
865 - // List<t.Table> data = tableManagerModel.tableOuterList.length == 0  
866 - // ? []  
867 - // : tableManagerModel.currentArea == '全部'  
868 - // ? tableManagerModel.tablesShow  
869 - // : tableManagerModel.areaTableMapShow[  
870 - // tableManagerModel.tablesOrReserveDataShow[i].name];  
871 -  
872 - TableListReserve data =  
873 - tableManagerModel!.tablesOrReserveDataShow![i].tableList![index];  
874 -  
875 - return Selector<TableManagerModelOrReserve, TableListReserve>(  
876 - shouldRebuild: (pre, next) => true,  
877 - selector: (context, model) => data,  
878 - builder: (context, table, _) {  
879 - return TableItemOrReserve(table,  
880 - fromPage: 'table_manage',  
881 - canSelected: true,  
882 - selectTables: tableManagerModel!.selectTablesOrReserve,  
883 - addOrder: isRealAddOver,  
884 - banquetListTids: tableManagerModel!.banquetListTids,  
885 - onSelected: (table) {  
886 - if (table.signStr == '已预订') {  
887 - if (table.sign == '10') {  
888 - //宴会订单  
889 - NavigatorUtil.goFeastDetailPage(context, table.notebookId,  
890 - canEdit: false, needChange: true);  
891 - } else {  
892 - //进入订座详情页面  
893 - NavigatorUtil.goNotebookDetailPage(  
894 - context, table.notebookId, data.reserveList!.uid);  
895 - }  
896 - } else {  
897 - if (table.selected) {  
898 - tableManagerModel!.selectTablesOrReserve.add(table);  
899 - tableManagerModel!.tablesOrReserveDataShow!  
900 - .forEach((element) {  
901 - element.tableList!.forEach((element1) {  
902 - if (element1.id == table.id) {  
903 - element1.selected = true;  
904 - }  
905 - });  
906 - });  
907 - } else {  
908 - tableManagerModel!.selectTablesOrReserve  
909 - .removeWhere((t) => t.id == table.id);  
910 - tableManagerModel!.tablesOrReserveDataShow!  
911 - .forEach((element) {  
912 - element.tableList!.forEach((element1) {  
913 - if (element1.id == table.id) {  
914 - element1.selected = false;  
915 - }  
916 - });  
917 - });  
918 - }  
919 - if (tableManagerModel!.selectTablesOrReserve.length == 0) {  
920 - // wechatNotification = true;  
921 - _clearData();  
922 - }  
923 - // if (tableManagerModel.selectTables.length > 1) {  
924 - // _scrollCrl.position  
925 - // .didUpdateScrollPositionBy(0); //这里触发更新滚动条  
926 - // }  
927 - setState(() {});  
928 - }  
929 - // DialogUtil.showTableManagerDialog(context, table).then((value) {  
930 - // if (value != null) {  
931 - // switch (value) {  
932 - // case 1: //查看详情  
933 - // NavigatorUtil.goNotebookDetailPage(  
934 - // context,  
935 - // tableManagerModel.tableMap[table.id].id,  
936 - // tableManagerModel.tableMap[table.id].uid);  
937 - // break;  
938 - // case 2: //订座  
939 - // NavigatorUtil.goNoteBookChangePage(  
940 - // context,  
941 - // NotebookDetail.fromTableManager(  
942 - // tableManagerModel.getCurrDdateStr(),  
943 - // tableManagerModel.currTimeIndex.toString(),  
944 - // table),  
945 - // "");  
946 - // break;  
947 -  
948 - // case 3: //停用,启用桌位  
949 - // Map<String, String> params = {  
950 - // "id": (table as t.Table).id,  
951 - // "status": (table as t.Table).enable == "1" ? "0" : "1"  
952 - // };  
953 - // tableManagerModel  
954 - // .setSwitchStatus(context, params)  
955 - // .then((value) {  
956 - // if (value != null) {  
957 - // (table as t.Table).enable =  
958 - // ((int.parse((table as t.Table).enable) + 1) % 2)  
959 - // .toString();  
960 - // if ((table as t.Table).enable == "1") {  
961 - // for (Area area in tableManagerModel.tablesOrReserveDataShow) {  
962 - // if (area.name ==  
963 - // tableManagerModel.currentArea) {  
964 - // if (table.sign != '5' && table.sign != '1') {  
965 - // //已预订  
966 - // area.count++;  
967 - // }  
968 - // break;  
969 - // }  
970 - // }  
971 - // } else {  
972 - // for (Area area in tableManagerModel.tablesOrReserveDataShow) {  
973 - // if (area.name ==  
974 - // tableManagerModel.currentArea) {  
975 - // if (table.sign != '5' && table.sign != '1') {  
976 - // //已预订  
977 - // area.count--;  
978 - // }  
979 - // break;  
980 - // }  
981 - // }  
982 - // }  
983 - // tableManagerModel.notifyListeners();  
984 - // }  
985 - // });  
986 - // break;  
987 - // case 4: //照片管理  
988 - // NavigatorUtil.goTablePhotoManagerPage(context,  
989 - // tid: (table as t.Table).id,  
990 - // tname: (table as t.Table).name);  
991 - // break;  
992 - // }  
993 - // }  
994 - // });  
995 - }, rid: ""); 851 + return EasyRefresh(
  852 + onRefresh: () async {
  853 + // offset = 0;
  854 + // getMessage(typeid, showLoading: false);
  855 + await tableManagerModel!.getTableListOrReserve(
  856 + context, currTimeIndex, dateTime, selectNumber,
  857 + showLoading: true, onRefresh: true);
  858 + setState(() {});
  859 + },
  860 + onLoad: () async {
  861 + // offset++;
  862 + // getMessage(typeid, showLoading: false);
  863 + },
  864 + child: GridView.builder(
  865 + // controller: _areaController,
  866 + // physics: NeverScrollableScrollPhysics(),
  867 + padding: EdgeInsets.symmetric(
  868 + vertical: ScreenUtil().setWidth(20),
  869 + horizontal: ScreenUtil().setWidth(10)),
  870 + shrinkWrap: true,
  871 + itemCount:
  872 + tableManagerModel!.tablesOrReserveDataShow![i].tableList!.length,
  873 + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  874 + crossAxisCount: 4,
  875 + childAspectRatio: 1,
  876 + mainAxisSpacing: ScreenUtil().setWidth(30),
  877 + crossAxisSpacing: ScreenUtil().setWidth(12),
  878 + ),
  879 +
  880 + itemBuilder: (BuildContext context, int index) {
  881 + // List<t.Table> data = tableManagerModel.tableOuterList.length == 0
  882 + // ? []
  883 + // : tableManagerModel.currentArea == '全部'
  884 + // ? tableManagerModel.tablesShow
  885 + // : tableManagerModel.areaTableMapShow[
  886 + // tableManagerModel.tablesOrReserveDataShow[i].name];
  887 +
  888 + TableListReserve data = tableManagerModel!
  889 + .tablesOrReserveDataShow![i].tableList![index];
  890 +
  891 + return Selector<TableManagerModelOrReserve, TableListReserve>(
  892 + shouldRebuild: (pre, next) => true,
  893 + selector: (context, model) => data,
  894 + builder: (context, table, _) {
  895 + return TableItemOrReserve(table,
  896 + fromPage: 'table_manage',
  897 + canSelected: true,
  898 + selectTables: tableManagerModel!.selectTablesOrReserve,
  899 + addOrder: isRealAddOver,
  900 + banquetListTids: tableManagerModel!.banquetListTids,
  901 + onSelected: (table) {
  902 + if (table.signStr == '已预订') {
  903 + if (table.sign == '10') {
  904 + //宴会订单
  905 + NavigatorUtil.goFeastDetailPage(context, table.notebookId,
  906 + canEdit: false, needChange: true);
  907 + } else {
  908 + //进入订座详情页面
  909 + NavigatorUtil.goNotebookDetailPage(
  910 + context, table.notebookId, data.reserveList!.uid);
  911 + }
  912 + } else {
  913 + if (table.selected) {
  914 + tableManagerModel!.selectTablesOrReserve.add(table);
  915 + tableManagerModel!.tablesOrReserveDataShow!
  916 + .forEach((element) {
  917 + element.tableList!.forEach((element1) {
  918 + if (element1.id == table.id) {
  919 + element1.selected = true;
  920 + }
  921 + });
  922 + });
  923 + } else {
  924 + tableManagerModel!.selectTablesOrReserve
  925 + .removeWhere((t) => t.id == table.id);
  926 + tableManagerModel!.tablesOrReserveDataShow!
  927 + .forEach((element) {
  928 + element.tableList!.forEach((element1) {
  929 + if (element1.id == table.id) {
  930 + element1.selected = false;
  931 + }
  932 + });
  933 + });
  934 + }
  935 + if (tableManagerModel!.selectTablesOrReserve.length == 0) {
  936 + // wechatNotification = true;
  937 + _clearData();
  938 + }
  939 + // if (tableManagerModel.selectTables.length > 1) {
  940 + // _scrollCrl.position
  941 + // .didUpdateScrollPositionBy(0); //这里触发更新滚动条
  942 + // }
  943 + setState(() {});
  944 + }
  945 + // DialogUtil.showTableManagerDialog(context, table).then((value) {
  946 + // if (value != null) {
  947 + // switch (value) {
  948 + // case 1: //查看详情
  949 + // NavigatorUtil.goNotebookDetailPage(
  950 + // context,
  951 + // tableManagerModel.tableMap[table.id].id,
  952 + // tableManagerModel.tableMap[table.id].uid);
  953 + // break;
  954 + // case 2: //订座
  955 + // NavigatorUtil.goNoteBookChangePage(
  956 + // context,
  957 + // NotebookDetail.fromTableManager(
  958 + // tableManagerModel.getCurrDdateStr(),
  959 + // tableManagerModel.currTimeIndex.toString(),
  960 + // table),
  961 + // "");
  962 + // break;
  963 +
  964 + // case 3: //停用,启用桌位
  965 + // Map<String, String> params = {
  966 + // "id": (table as t.Table).id,
  967 + // "status": (table as t.Table).enable == "1" ? "0" : "1"
  968 + // };
  969 + // tableManagerModel
  970 + // .setSwitchStatus(context, params)
  971 + // .then((value) {
  972 + // if (value != null) {
  973 + // (table as t.Table).enable =
  974 + // ((int.parse((table as t.Table).enable) + 1) % 2)
  975 + // .toString();
  976 + // if ((table as t.Table).enable == "1") {
  977 + // for (Area area in tableManagerModel.tablesOrReserveDataShow) {
  978 + // if (area.name ==
  979 + // tableManagerModel.currentArea) {
  980 + // if (table.sign != '5' && table.sign != '1') {
  981 + // //已预订
  982 + // area.count++;
  983 + // }
  984 + // break;
  985 + // }
  986 + // }
  987 + // } else {
  988 + // for (Area area in tableManagerModel.tablesOrReserveDataShow) {
  989 + // if (area.name ==
  990 + // tableManagerModel.currentArea) {
  991 + // if (table.sign != '5' && table.sign != '1') {
  992 + // //已预订
  993 + // area.count--;
  994 + // }
  995 + // break;
  996 + // }
  997 + // }
  998 + // }
  999 + // tableManagerModel.notifyListeners();
  1000 + // }
  1001 + // });
  1002 + // break;
  1003 + // case 4: //照片管理
  1004 + // NavigatorUtil.goTablePhotoManagerPage(context,
  1005 + // tid: (table as t.Table).id,
  1006 + // tname: (table as t.Table).name);
  1007 + // break;
  1008 + // }
  1009 + // }
  1010 + // });
  1011 + }, rid: "");
  1012 + },
  1013 + );
  1014 + // }
996 }, 1015 },
997 - );  
998 - // }  
999 - },  
1000 - ); 1016 + ));
1001 } 1017 }
1002 1018
1003 _openAddressBook() async { 1019 _openAddressBook() async {
@@ -4877,7 +4893,27 @@ class TableManagerPageState extends State<TableManagerPage> { @@ -4877,7 +4893,27 @@ class TableManagerPageState extends State<TableManagerPage> {
4877 // : Expanded( 4893 // : Expanded(
4878 // flex: 5, child: _selectTableWidgetSms()) 4894 // flex: 5, child: _selectTableWidgetSms())
4879 : SizedBox() 4895 : SizedBox()
4880 - ])) 4896 + ])
  4897 + // SliverList(
  4898 + // delegate: SliverChildBuilderDelegate(
  4899 + // (BuildContext context, int index) {
  4900 + // return MessageItemF(
  4901 + // model.messagesHas[index],
  4902 + // collectStoreProvider,
  4903 + // isTreated: true,
  4904 + // );
  4905 + // }, childCount: model.messagesHas.length),
  4906 + // )
  4907 + // ,
  4908 + // onRefresh: () async {
  4909 + // // offset = 0;
  4910 + // // getMessage(typeid, showLoading: false);
  4911 + // },
  4912 + // onLoad: () async {
  4913 + // // offset++;
  4914 + // // getMessage(typeid, showLoading: false);
  4915 + // },
  4916 + )
4881 // return CCMenuPage.builder( 4917 // return CCMenuPage.builder(
4882 // tableManagerModel: tableManagerModel, 4918 // tableManagerModel: tableManagerModel,
4883 // itemCount: tableManagerModel.tablesOrReserveDataShow.length, 4919 // itemCount: tableManagerModel.tablesOrReserveDataShow.length,
@@ -180,6 +180,7 @@ class TableManagerModelOrReserve with ChangeNotifier { @@ -180,6 +180,7 @@ class TableManagerModelOrReserve with ChangeNotifier {
180 int selectNumber, { 180 int selectNumber, {
181 showLoading = true, 181 showLoading = true,
182 bool selfDismiss = false, 182 bool selfDismiss = false,
  183 + bool onRefresh = false,
183 }) async { 184 }) async {
184 // if (pageStateOrReserve == PageState.Loading) { 185 // if (pageStateOrReserve == PageState.Loading) {
185 // showLoading = false; 186 // showLoading = false;
@@ -272,14 +273,14 @@ class TableManagerModelOrReserve with ChangeNotifier { @@ -272,14 +273,14 @@ class TableManagerModelOrReserve with ChangeNotifier {
272 } 273 }
273 } 274 }
274 275
275 - if (limitNum != -1) {  
276 - //存在配置  
277 -  
278 - // int sum = 0; 276 + // int sum = 0;
279 277
280 - List<String> rids = [];  
281 - tablesOrReserveData?.forEach((element) {  
282 - element.tableList?.forEach((subelement) { 278 + List<String> rids = [];
  279 + String reseveName = '';
  280 + tablesOrReserveData?.forEach((element) {
  281 + element.tableList?.forEach((subelement) {
  282 + if (limitNum != -1) {
  283 + //存在配置
283 if (subelement.reserveList != null) { 284 if (subelement.reserveList != null) {
284 // sum++; 285 // sum++;
285 if (!rids.contains(subelement.reserveList!.id!) && 286 if (!rids.contains(subelement.reserveList!.id!) &&
@@ -291,8 +292,30 @@ class TableManagerModelOrReserve with ChangeNotifier { @@ -291,8 +292,30 @@ class TableManagerModelOrReserve with ChangeNotifier {
291 subelement.reserveList = null; 292 subelement.reserveList = null;
292 } 293 }
293 } 294 }
294 - }); 295 + }
  296 + if (onRefresh && subelement.reserveList != null) {
  297 + // 当前桌子有预订
  298 + if (selectTablesOrReserve.length > 0) {
  299 + if (selectTablesOrReserve.any((e) => e.id == subelement.id)) {
  300 + //选中的桌子里包含当前这个桌子
  301 +
  302 + reseveName += (subelement.name ?? '') + '、';
  303 + selectTablesOrReserve
  304 + .removeWhere((item) => item.id == subelement.id);
  305 + }
  306 + }
  307 + }
295 }); 308 });
  309 + });
  310 + if (reseveName.length > 0) {
  311 + if (reseveName.endsWith('、')) {
  312 + reseveName = reseveName.substring(0, reseveName.length - 1);
  313 + }
  314 + Utils.showToast('桌位【${reseveName}】已被占用啦');
  315 + }
  316 +
  317 + if (limitNum != -1) {
  318 + //存在配置
296 319
297 List<String> ridsShow = []; 320 List<String> ridsShow = [];
298 tablesOrReserveDataShow?.forEach((element) { 321 tablesOrReserveDataShow?.forEach((element) {
@@ -310,18 +333,6 @@ class TableManagerModelOrReserve with ChangeNotifier { @@ -310,18 +333,6 @@ class TableManagerModelOrReserve with ChangeNotifier {
310 } 333 }
311 }); 334 });
312 }); 335 });
313 -  
314 - // int sumShow = 0;  
315 - // tablesOrReserveDataShow?.forEach((element) {  
316 - // element.tableList?.forEach((subelement) {  
317 - // if (subelement.reserveList != null) {  
318 - // sumShow++;  
319 - // }  
320 - // if (sumShow > limitNum) {  
321 - // subelement.reserveList = null;  
322 - // }  
323 - // });  
324 - // });  
325 } 336 }
326 337
327 // 338 //
@@ -332,16 +343,18 @@ class TableManagerModelOrReserve with ChangeNotifier { @@ -332,16 +343,18 @@ class TableManagerModelOrReserve with ChangeNotifier {
332 List<TableListReserve> tableListOrReserveDataAll = 343 List<TableListReserve> tableListOrReserveDataAll =
333 []; //桌位页面数据接口重组 --全部 344 []; //桌位页面数据接口重组 --全部
334 banquetListTids.clear(); //使用前清空数据 345 banquetListTids.clear(); //使用前清空数据
  346 +
335 tablesOrReserveData!.forEach((element) { 347 tablesOrReserveData!.forEach((element) {
336 element.select = false; 348 element.select = false;
337 349
338 tableListOrReserveDataAll.addAll(element.tableList!); 350 tableListOrReserveDataAll.addAll(element.tableList!);
339 element.tableList?.forEach((table) { 351 element.tableList?.forEach((table) {
340 if (table.banquetList != null && table.banquetList!.length > 0) { 352 if (table.banquetList != null && table.banquetList!.length > 0) {
341 - banquetListTids.add(table.id); 353 + banquetListTids.add(table.id);
342 } 354 }
343 }); 355 });
344 }); 356 });
  357 +
345 tablesOrReserveDataShow!.forEach((element) { 358 tablesOrReserveDataShow!.forEach((element) {
346 element.select = false; 359 element.select = false;
347 }); 360 });
@@ -359,6 +372,18 @@ class TableManagerModelOrReserve with ChangeNotifier { @@ -359,6 +372,18 @@ class TableManagerModelOrReserve with ChangeNotifier {
359 372
360 tablesOrReserveDataShow![selectNumber].select = true; 373 tablesOrReserveDataShow![selectNumber].select = true;
361 374
  375 + tablesOrReserveDataShow?.forEach((element) {
  376 + element.tableList?.forEach((subelement) {
  377 + // if (subelement.reserveList != null) {
  378 + print(selectTablesOrReserve);
  379 + if (selectTablesOrReserve.any((e) => e.id == subelement.id)) {
  380 + //选中的桌子里包含当前这个桌子
  381 + subelement.selected = true;
  382 + // }
  383 + }
  384 + });
  385 + });
  386 +
362 App.sp!.setString( 387 App.sp!.setString(
363 'table_list_or_reserve', json.encode(tablesOrReserveDataShow)); 388 'table_list_or_reserve', json.encode(tablesOrReserveDataShow));
364 389