Files
biz_xfj_cloud/lib/pages/terminal/setting/widgets/setting_pay.dart
T
dzc 8cfbbd768e feat:"收银"页面副屏的支付成功状态。
feat:"收银"弹框增加重新识别功能。
2026-08-14 18:41:13 +08:00

75 lines
2.8 KiB
Dart

import 'package:ducafe_ui_core/ducafe_ui_core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
import '../controller.dart';
import 'setting_components.dart';
import 'setting_pay_type_editor.dart';
Widget settingPay(BuildContext context) {
final controller = Get.find<SettingController>();
return Obx(() {
final sys = controller.sysSetting.value;
if (sys == null) return const SettingEmpty(message: '暂无支付管理配置');
final enabled = sys.usePayDisplayType ?? OrderPayDisplayType.values;
final defaultType = sys.defaultPayDisplayType ?? enabled.firstOrNull;
return SingleChildScrollView(
child: Column(
children: [
SettingGroup(
title: '支付管理',
child: SettingPayTypeEditor(
order: controller.payTypeOrder.toList(),
visibleTypes: enabled.toSet(),
reidentifiableTypes:
controller.cashierReidentifiablePayTypes.toSet(),
defaultType: defaultType,
onReset: () {
controller.resetPayTypes();
Toast.success(msg: '支付管理已还原');
},
onReorder: controller.reorderPayType,
onVisibilityToggle: controller.togglePayType,
onReidentifiableToggle: controller.togglePayTypeReidentification,
),
),
SizedBox(height: XfjDesignTokens.cardGap.h),
SettingGroup(
title: '默认支付方式',
child: defaultType == null
? const SettingEmpty(message: '请先显示至少一种支付方式')
: SettingSegmentedSelector<OrderPayDisplayType>(
label: '收银默认项',
value: defaultType,
options: {
for (final type in enabled) type: _defaultPayLabel(type),
},
showDivider: false,
onChanged: controller.setDefaultPayType,
),
),
SizedBox(height: XfjDesignTokens.cardGap.h),
const SettingNotice(
text: '拖动后的顺序会同步到收银支付入口;隐藏仅影响本机展示,不改变服务端权限、钱包范围和渠道支付能力。',
),
],
),
);
});
}
String _defaultPayLabel(OrderPayDisplayType type) {
return switch (type) {
OrderPayDisplayType.qrCodeScan => '扫一扫',
OrderPayDisplayType.qrCode => '二维码',
OrderPayDisplayType.walletCard => '饭卡',
OrderPayDisplayType.face => '人脸',
OrderPayDisplayType.cash => '现金',
OrderPayDisplayType.zyy => '中医院',
OrderPayDisplayType.rmyy => '人民医院',
OrderPayDisplayType.csxfk => '超市消费卡',
};
}