From c2febd694b975547f9a782f7798dfb19da7a9fed Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 23 May 2025 16:52:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=80=82=E9=85=8D=E8=B7=A8=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=E5=92=8C=E5=A4=96=E6=9D=A5=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/database/database_enum_models.dart | 7 ++ .../widgets/order/mixin/order_mixin.dart | 8 +-- .../widgets/order/select_pay_type_dialog.dart | 67 +++++++++++++------ 3 files changed, 56 insertions(+), 26 deletions(-) diff --git a/lib/common/models/database/database_enum_models.dart b/lib/common/models/database/database_enum_models.dart index 8b082f1..bc915ed 100644 --- a/lib/common/models/database/database_enum_models.dart +++ b/lib/common/models/database/database_enum_models.dart @@ -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); + } } /// 订单状态 diff --git a/lib/common/widgets/order/mixin/order_mixin.dart b/lib/common/widgets/order/mixin/order_mixin.dart index 0094d36..2ed8fd9 100644 --- a/lib/common/widgets/order/mixin/order_mixin.dart +++ b/lib/common/widgets/order/mixin/order_mixin.dart @@ -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; diff --git a/lib/common/widgets/order/select_pay_type_dialog.dart b/lib/common/widgets/order/select_pay_type_dialog.dart index f7c48dc..54e91fa 100644 --- a/lib/common/widgets/order/select_pay_type_dialog.dart +++ b/lib/common/widgets/order/select_pay_type_dialog.dart @@ -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 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 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 [ + // 判断是否为`跨单位二维码支付`或者`外来人员二维码支付` + payType ??= OrderPayType.FACE; + final isStrideOrForeign = OrderPayType.isStrideOrForeign(payType); + final widgets = [ 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); }