diff --git a/lib/common/models/page/panel_page_models.dart b/lib/common/models/page/panel_page_models.dart index 2493435..62053e2 100644 --- a/lib/common/models/page/panel_page_models.dart +++ b/lib/common/models/page/panel_page_models.dart @@ -14,6 +14,7 @@ class PanelItem { enum PanelType implements BaseEnum { supermarketOrder("10", "超市购买"), canteenOrder("20", "点餐"), + canteenReserve("25", "预定"), takeFood("30", "取餐"), orderHistory("40", "交易查询"), setting("50", "设置"), diff --git a/lib/common/routers/names.dart b/lib/common/routers/names.dart index 8635dec..398e161 100644 --- a/lib/common/routers/names.dart +++ b/lib/common/routers/names.dart @@ -17,6 +17,9 @@ class RouteNames { /// 取餐 static const takeFood = '/take_food'; + /// 食堂预定 + static const canteenReserve = '/canteen_reserve'; + /// 交易查询 static const orderHistory = '/order_history'; diff --git a/lib/common/routers/pages.dart b/lib/common/routers/pages.dart index 57dec10..60102af 100644 --- a/lib/common/routers/pages.dart +++ b/lib/common/routers/pages.dart @@ -41,6 +41,14 @@ class RoutePages { Get.lazyPut(() => SupermarketOrderController()); }), ), + GetPage( + name: RouteNames.canteenReserve, + page: () => const CanteenReservePage(), + binding: BindingsBuilder(() { + Get.lazyPut(() => PanelController()); + Get.lazyPut(() => CanteenReserveController()); + }), + ), GetPage( name: RouteNames.takeFood, page: () => const TakeFoodPage(), diff --git a/lib/pages/canteen_reserve/controller.dart b/lib/pages/canteen_reserve/controller.dart new file mode 100644 index 0000000..14b1c0b --- /dev/null +++ b/lib/pages/canteen_reserve/controller.dart @@ -0,0 +1,27 @@ +import 'package:get/get.dart'; + +class CanteenReserveController extends GetxController { + CanteenReserveController(); + + _initData() { + update(["canteen_reserve"]); + } + + void onTap() {} + + @override + void onInit() { + super.onInit(); + } + + @override + void onReady() { + super.onReady(); + _initData(); + } + + @override + void onClose() { + super.onClose(); + } +} diff --git a/lib/pages/canteen_reserve/index.dart b/lib/pages/canteen_reserve/index.dart new file mode 100644 index 0000000..12671e3 --- /dev/null +++ b/lib/pages/canteen_reserve/index.dart @@ -0,0 +1,4 @@ +library canteen_reserve; + +export './controller.dart'; +export './view.dart'; diff --git a/lib/pages/canteen_reserve/view.dart b/lib/pages/canteen_reserve/view.dart new file mode 100644 index 0000000..c32a57f --- /dev/null +++ b/lib/pages/canteen_reserve/view.dart @@ -0,0 +1,34 @@ +import 'package:ducafe_ui_core/ducafe_ui_core.dart'; +import 'package:flutter/material.dart'; +import 'package:forui/forui.dart'; +import 'package:get/get.dart'; + +import 'package:pj_supermarket_cloud/common/index.dart'; + +import 'index.dart'; + +class CanteenReservePage extends GetView { + const CanteenReservePage({super.key}); + + // 主视图 + Widget _buildView(BuildContext context) { + return const Center( + child: Text("CanteenReservePage"), + ); + } + + @override + Widget build(BuildContext context) { + return GetBuilder( + init: CanteenReserveController(), + id: "canteen_reserve", + builder: (_) { + return FScaffold( + header: appDefaultNav(context, title: "预定"), + content: _buildView(context).marginOnly(top: 20.h), + resizeToAvoidBottomInset: false, + ); + }, + ); + } +} diff --git a/lib/pages/index.dart b/lib/pages/index.dart index 5b28622..0241825 100644 --- a/lib/pages/index.dart +++ b/lib/pages/index.dart @@ -1,6 +1,7 @@ library; export './canteen_product/index.dart'; +export './canteen_reserve/index.dart'; export './card_active/index.dart'; export './load/index.dart'; export './login/index.dart'; diff --git a/lib/pages/panel/controller.dart b/lib/pages/panel/controller.dart index be71301..bb45ece 100644 --- a/lib/pages/panel/controller.dart +++ b/lib/pages/panel/controller.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:common_utils/common_utils.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:pj_supermarket_cloud/common/index.dart'; @@ -13,6 +14,7 @@ class PanelController extends GetxController { RxList panelBtnList = [ PanelItem(title: "购买", visible: false, type: PanelType.supermarketOrder), PanelItem(title: "点餐", visible: false, type: PanelType.canteenOrder), + PanelItem(title: "预定", visible: false, type: PanelType.canteenReserve), PanelItem(title: "取餐", visible: false, type: PanelType.takeFood), PanelItem(title: "交易查询", visible: true, type: PanelType.orderHistory), PanelItem(title: "开卡管理", visible: true, type: PanelType.cardActive), @@ -24,6 +26,7 @@ class PanelController extends GetxController { final canteenMenus = [ PanelType.canteenOrder, PanelType.takeFood, + PanelType.canteenReserve, ]; final supermarketMenus = [ @@ -47,7 +50,15 @@ class PanelController extends GetxController { mqUpdateListen = appC.mqUpdateEventBus.on().listen( (event) async { if (event == MqtActionEnum.CONFIG) { - await _updateMenus(); + EasyLoading.show( + status: '配置修改中...', + maskType: EasyLoadingMaskType.black, + ); + try { + await _updateMenus(); + } finally { + EasyLoading.dismiss(); + } } }, ); @@ -80,6 +91,10 @@ class PanelController extends GetxController { if (!await _checkIsBind()) return; Get.toNamed(RouteNames.canteenProduct); break; + case PanelType.canteenReserve: + if (!await _checkIsBind()) return; + Get.toNamed(RouteNames.canteenReserve); + break; case PanelType.takeFood: if (!await _checkIsBind()) return; Get.toNamed(RouteNames.takeFood); @@ -130,6 +145,11 @@ class PanelController extends GetxController { Future _updateMenus() async { final sysSetting = await AppSettingTool.getSysSetting(); final sysType = sysSetting.sysType; + for (final v in panelBtnList) { + if (canteenMenus.contains(v.type) || supermarketMenus.contains(v.type)) { + v.visible = false; + } + } for (final v in panelBtnList) { if (sysType == SysType.CANTEEN) { if (canteenMenus.contains(v.type)) { diff --git a/lib/pages/panel/view.dart b/lib/pages/panel/view.dart index 19af958..baff0ae 100644 --- a/lib/pages/panel/view.dart +++ b/lib/pages/panel/view.dart @@ -16,10 +16,10 @@ class PanelPage extends GetView { return SizedBox( width: Get.context!.sizes.width * 0.2, height: double.infinity, - child: [ - appLogo(), - Obx( - () => controller.panelBtnList + child: Obx( + () => [ + appLogo(), + controller.panelBtnList .map((v) { if (!v.visible) return SizedBox.shrink(); return FButton( @@ -34,16 +34,16 @@ class PanelPage extends GetView { }) .toList() .toColumn(), - ), - ] - .toColumnSpace( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - space: 20.h, - ) - .scrollable() - .center(), + ] + .toColumnSpace( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + space: 20.h, + ) + .scrollable() + .center(), + ), ); } diff --git a/lib/pages/take_food/index.dart b/lib/pages/take_food/index.dart index b16b2f8..6b6cab6 100644 --- a/lib/pages/take_food/index.dart +++ b/lib/pages/take_food/index.dart @@ -1,4 +1,4 @@ library; -export './controller.dart'; +export 'widgets/controller.dart'; export './view.dart'; diff --git a/lib/pages/take_food/view.dart b/lib/pages/take_food/view.dart index 332825b..3fd5d2b 100644 --- a/lib/pages/take_food/view.dart +++ b/lib/pages/take_food/view.dart @@ -139,8 +139,6 @@ class TakeFoodPage extends GetView { @override Widget build(BuildContext context) { - final theme = FTheme.of(context); - final height = 100; return GetBuilder( init: TakeFoodController(), id: "take_food", diff --git a/lib/pages/take_food/controller.dart b/lib/pages/take_food/widgets/controller.dart similarity index 100% rename from lib/pages/take_food/controller.dart rename to lib/pages/take_food/widgets/controller.dart