import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:pj_supermarket_cloud/common/index.dart'; class CardActiveController extends GetxController { final appC = Get.find(); SerialCardManage get serialCardManage => appC.serialCardManage; // table RxInt currentPage = 1.obs; RxInt totalPage = 0.obs; RxInt pageSize = 10.obs; RxList tableList = [].obs; Rx detail = Rx(null); RxBool readLoading = false.obs; // 写卡 RxBool writeLoading = false.obs; _initData() { update(["card_active"]); } @override void onInit() { super.onInit(); getTableList(); } @override void onReady() { super.onReady(); _initData(); } @override void onClose() { super.onClose(); } Future doPage({int? page}) async { if (page != null) currentPage.value = page; getTableList(); } Future getTableList() async { EasyLoading.show( status: '查询中...', maskType: EasyLoadingMaskType.black, ); try { final appSetting = await AppSettingTool.getSysSetting(); final deptId = appSetting.merchantDeptId; final pa = { "current": currentPage.value, "size": pageSize.value, "deptId": "", "walletTypeId": "", }; final data = await WalletApi.openCardList(pa); if (data == null) return; totalPage.value = data.total; final records = data.records; if (records != null) { tableList.value = records; } } finally { EasyLoading.dismiss(); } } // 写卡 void doWriteCard(ServiceOpenCard v) async { if (v.isActiveHardware == true) { Toast.error(msg: "该卡已经激活,无需重复激活"); return; } if (ObjectUtil.isEmpty(v.cardNumber)) { Toast.error(msg: "没有设置卡号"); return; } try { await serialCardManage.connect(); if (!serialCardManage.isConnect) { Toast.error(msg: "连接读卡器失败"); return; } writeLoading.value = true; detail.value = null; final context = Get.context!; cardDialog( title: "写卡", loading: readLoading, detail: detail, doSubmit: () { Navigator.of(context).pop(); _closeStatus(); }, ); serialCardManage.callback = (type, status, res) async { switch (status) { case SerialCardResStatus.success: if (ObjectUtil.isNotEmpty(v.id)) { await _getOpenCardSuccess(v.id!); getTableList(); } detail.value = v; _closeStatus(); break; case SerialCardResStatus.warning: break; case SerialCardResStatus.error: TtsManage.speak("请在合适区域放置饭卡"); Toast.error(msg: "请在合适区域放置饭卡"); break; } }; TtsManage.speak("请在合适区域放置饭卡"); serialCardManage.sendWrite(v.cardNumber!); } catch (e, stack) { _closeStatus(); logger.d("写卡失败error:|$e|stack:|$stack|"); Toast.error(msg: "写入失败,请重试"); } } // 读卡 void doReadCard() async { final context = Get.context!; try { await serialCardManage.connect(); if (!serialCardManage.isConnect) { Toast.error(msg: "连接读卡器失败"); return; } readLoading.value = true; detail.value = null; cardDialog( title: "读卡", loading: readLoading, detail: detail, doSubmit: () { Navigator.of(context).pop(); _closeStatus(); }, ); serialCardManage.callback = (type, status, res) async { switch (status) { case SerialCardResStatus.success: Toast.success(msg: "读取成功"); final pa = {"cardNumber": res}; final data = await WalletApi.openCardList(pa); if (data != null && data.records != null) { detail.value = data.records![0]; } _closeStatus(); break; case SerialCardResStatus.warning: break; case SerialCardResStatus.error: Toast.error(msg: "请在合适区域放置饭卡"); TtsManage.speak("请在合适区域放置饭卡"); break; } }; TtsManage.speak("请在合适区域放置饭卡"); serialCardManage.sendRead(); } catch (e, stack) { _closeStatus(); logger.d("读卡失败error:|$e|stack:|$stack|"); Toast.error(msg: "读取失败,请重试"); } } Future _getOpenCardSuccess(String id) async { try { EasyLoading.show( status: '激活饭卡中...', maskType: EasyLoadingMaskType.black, ); final pa = {"id": id}; final data = await WalletApi.openCardSuccess(pa); if (data == false) throw Error(); EasyLoading.dismiss(); TtsManage.speak("激活成功"); Toast.success(msg: "激活成功"); } catch (e, stack) { logger.e("激活饭卡请求失败error:|$e|stack:|$stack|"); EasyLoading.dismiss(); Toast.error(msg: "激活失败"); } } // 重新激活 Future doRefreshAvatar(ServiceOpenCard v) async { if (v.isActiveHardware == false) { Toast.error(msg: "该卡为激活状态,不能重新激活"); return; } try { final isSure = await appMessageDialog(Get.context!, "是否重新激活"); if (!isSure) return; final pa = {"id": v.id}; final data = await WalletApi.refreshAvatar(pa); if (data == false) return; TtsManage.speak("重新激活成功"); Toast.success(msg: "重新激活成功"); getTableList(); } catch (e, stack) { logger.d("重新激活失败error:|$e|stack:|$stack|"); } } void _closeStatus() { serialCardManage.readerClose(); serialCardManage.close(); readLoading.value = false; } }