75 lines
2.8 KiB
Dart
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 => '超市消费卡',
|
|
};
|
|
}
|