Files
pj_supermarket_cloud/lib/pages/card_active/controller.dart
T
2025-03-16 21:35:15 +08:00

229 lines
6.1 KiB
Dart

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<AppControl>();
SerialCardManage get serialCardManage => appC.serialCardManage;
// table
RxInt currentPage = 1.obs;
RxInt totalPage = 0.obs;
RxInt pageSize = 10.obs;
RxList<ServiceOpenCard> tableList = <ServiceOpenCard>[].obs;
Rx<ServiceOpenCard?> 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<void> doPage({int? page}) async {
if (page != null) currentPage.value = page;
getTableList();
}
Future<void> 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<void> _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<void> 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;
}
}