feat:适配跨单位和外来人员

This commit is contained in:
dzc committed 2025-05-23 16:52:45 +08:00
1 parent 00d197d6dc
commit c2febd694b
3 files changed
+56 -26

No files matched your search

@@ -52,6 +52,13 @@ enum OrderPayType implements BaseEnum {
final String title;
const OrderPayType(this.code, this.title);
static bool isStrideOrForeign(OrderPayType payType) {
return [
OrderPayType.STRIDE_DEPT_QR_CODE,
OrderPayType.FOREIGN_TICKET_QR_CODE,
].contains(payType);
}
}
/// 订单状态
@@ -361,18 +361,18 @@ mixin OrderMixin {
orderSourceTypeId = globalQrCode!.id.toString();
break;
case OrderType.FOREIGN_TICKET:
if (ObjectUtil.isEmpty(globalQrCode!.itemId)) {
if (ObjectUtil.isEmpty(globalQrCode!.id)) {
Toast.error(msg: "二维码错误");
return "";
}
orderSourceTypeId = globalQrCode!.itemId.toString();
orderSourceTypeId = globalQrCode!.id.toString();
break;
case OrderType.STRIDE_DEPT:
if (ObjectUtil.isEmpty(globalQrCode!.itemId)) {
if (ObjectUtil.isEmpty(globalQrCode!.id)) {
Toast.error(msg: "二维码错误");
return "";
}
orderSourceTypeId = globalQrCode!.itemId.toString();
orderSourceTypeId = globalQrCode!.id.toString();
break;
default:
break;
@@ -205,6 +205,9 @@ class SelectPayTypeDialogController extends GetxController {
}
globalQrCode = serviceCode;
orderPayType.value = serviceCode.payType;
if (serviceCode.orderType != null) {
orderType = serviceCode.orderType!;
}
logger.i("|$_tag|二维码识别,识别到的二维码json:|${jsonEncode(serviceCode)}|");
final isNetwork = AppNetworkTool.isAutoNetwork();
if (isNetwork) {
@@ -486,7 +489,10 @@ Future<void> selectPayTypeDialog() async {
Obx(
() => Visibility(
visible: payTypeC.payUser.value == null,
replacement: selectPayTypeUser(payTypeC.payUser.value),
replacement: selectPayTypeUser(
payTypeC.payUser.value,
payTypeC.orderPayType.value,
),
child: selectPayTypeHint(
context,
type: payTypeC.orderPayDisplayType.value,
@@ -537,7 +543,7 @@ Future<void> selectPayTypeDialog() async {
);
}
Widget selectPayTypeUser(ServiceUser? user) {
Widget selectPayTypeUser(ServiceUser? user, OrderPayType? payType) {
final theme = FTheme.of(Get.context!);
if (user == null) return const SizedBox.shrink();
final isFree = user.walletIsFreeze ?? true;
@@ -547,7 +553,10 @@ Widget selectPayTypeUser(ServiceUser? user) {
color: Colors.transparent,
),
);
return <Widget>[
// 判断是否为`跨单位二维码支付`或者`外来人员二维码支付`
payType ??= OrderPayType.FACE;
final isStrideOrForeign = OrderPayType.isStrideOrForeign(payType);
final widgets = <Widget>[
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.user),
@@ -560,25 +569,39 @@ Widget selectPayTypeUser(ServiceUser? user) {
title: Text('手机号', style: textStyle),
details: Text("${user.userMobile}", style: textStyle),
),
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.badgeDollarSign),
title: Text('余额', style: textStyle),
details: appPrice(Get.context!, user.walletBalance),
),
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.idCard),
title: Text('卡号', style: textStyle),
details: Text("${user.walletCardNumber}", style: textStyle),
).offstage(offstage: ObjectUtil.isEmpty(user.walletCardNumber)),
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.ban),
title: Text('是否冻结', style: textStyle),
details: Text(isFree ? "是" : "否", style: textStyle),
).offstage(offstage: user.walletCardNumber == null),
]
];
if (isStrideOrForeign) {
widgets.addAll([
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.stretchHorizontal),
title: Text('支付类型', style: textStyle),
details: Text(payType.title, style: textStyle),
),
]);
} else {
widgets.addAll([
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.badgeDollarSign),
title: Text('余额', style: textStyle),
details: appPrice(Get.context!, user.walletBalance),
),
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.idCard),
title: Text('卡号', style: textStyle),
details: Text("${user.walletCardNumber}", style: textStyle),
).offstage(offstage: ObjectUtil.isEmpty(user.walletCardNumber)),
FTile(
style: titleTheme,
prefixIcon: FIcon(FAssets.icons.ban),
title: Text('是否冻结', style: textStyle),
details: Text(isFree ? "是" : "否", style: textStyle),
).offstage(offstage: user.walletCardNumber == null),
]);
}
return widgets
.toColumn(mainAxisAlignment: MainAxisAlignment.center)
.height(double.infinity);
}