Files
pj_supermarket_cloud/lib/pages/panel/controller.dart
T
2025-03-16 18:01:05 +08:00

117 lines
3.3 KiB
Dart

import 'package:common_utils/common_utils.dart';
import 'package:get/get.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
class PanelController extends GetxController {
PanelController();
static const String _tag = "菜单页面 Controller";
RxList<PanelItem> panelBtnList = <PanelItem>[
PanelItem(title: "购买", visible: false, type: PanelType.supermarketOrder),
PanelItem(title: "点餐", visible: false, type: PanelType.canteenOrder),
PanelItem(title: "取餐", visible: false, type: PanelType.takeFood),
PanelItem(title: "交易查询", visible: true, type: PanelType.orderHistory),
PanelItem(title: "开卡管理", visible: true, type: PanelType.cardActive),
PanelItem(title: "设置", visible: true, type: PanelType.setting),
PanelItem(title: "退出登录", visible: true, type: PanelType.logout),
PanelItem(title: "测试", visible: true, type: PanelType.test),
].obs;
final canteenMenus = [
PanelType.canteenOrder,
PanelType.takeFood,
];
final supermarketMenus = [
PanelType.supermarketOrder,
];
@override
void onInit() async {
super.onInit();
await _updateMenus();
}
@override
void onReady() {
super.onReady();
_initData();
}
_initData() async {
update(["panel"]);
}
Future<void> doBtn(PanelType type) async {
switch (type) {
case PanelType.supermarketOrder:
if (!await _checkIsBind()) return;
Get.offAllNamed(RouteNames.supermarketProduct);
break;
case PanelType.canteenOrder:
if (!await _checkIsBind()) return;
Get.offAllNamed(RouteNames.canteenProduct);
break;
case PanelType.takeFood:
if (!await _checkIsBind()) return;
Get.toNamed(RouteNames.takeFood);
break;
case PanelType.orderHistory:
if (!await _checkIsBind()) return;
Get.toNamed(RouteNames.orderHistory);
break;
case PanelType.setting:
if (AppSysTool.isProd()) {
final flag = await settingPasswordDialog(Get.context!);
if (!flag) return;
}
Get.toNamed(RouteNames.setting);
break;
case PanelType.cardActive:
if (!await _checkIsBind()) return;
Get.toNamed(RouteNames.cardActive);
break;
case PanelType.logout:
final isNetwork = AppNetworkTool.isAutoNetwork();
if (isNetwork) {
await AppSettingTool.setUserSetting(UserSetting());
}
Get.offAndToNamed(RouteNames.login);
break;
case PanelType.test:
break;
default:
break;
}
}
Future<bool> _checkIsBind() async {
final sysSetting = await AppSettingTool.getSysSetting();
final id = sysSetting.serviceMerchantId;
if (ObjectUtil.isEmpty(id)) {
Toast.error(msg: "请前往设置绑定设备");
return false;
}
return true;
}
Future<void> _updateMenus() async {
final sysSetting = await AppSettingTool.getSysSetting();
final sysType = sysSetting.sysType;
for (final v in panelBtnList) {
if (sysType == SysType.CANTEEN) {
if (canteenMenus.contains(v.type)) {
v.visible = true;
}
} else if (sysType == SysType.SUPERMARKET) {
if (supermarketMenus.contains(v.type)) {
v.visible = true;
}
}
}
panelBtnList.refresh();
}
}