@@ -96,6 +102,17 @@
return v != null && v !== '' ? `${v}%` : '-'
}
+ /** 仅 name=default(正常)奖池的安全线参与杀分判定 */
+ function isDefaultPoolRow(row: Record): boolean {
+ return String(row.name ?? '') === 'default'
+ }
+
+ function formatSafetyLine(val: unknown): string {
+ if (val === null || val === undefined || val === '') return '-'
+ const n = typeof val === 'number' ? val : Number(val)
+ return Number.isFinite(n) ? n.toFixed(2) : '-'
+ }
+
// 表格配置
const {
columns,
@@ -116,7 +133,13 @@
columnsFactory: () => [
{ prop: 'name', label: 'page.table.name', align: 'center' },
{ prop: 'name', label: 'page.table.poolType', width: 100, align: 'center', formatter: typeFormatter },
- { prop: 'safety_line', label: 'page.table.safetyLine', align: 'center' },
+ {
+ prop: 'safety_line',
+ label: 'page.table.safetyLine',
+ minWidth: 120,
+ align: 'center',
+ useSlot: true
+ },
{
prop: 't1_weight',
label: 'page.table.t1PoolWeight',
diff --git a/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/current-pool-dialog.vue b/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/current-pool-dialog.vue
index 7fc6a83..b2cb005 100644
--- a/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/current-pool-dialog.vue
+++ b/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/current-pool-dialog.vue
@@ -16,7 +16,7 @@
-
{{ $t('page.form.playerProfit') }}
+
{{ $t('page.form.poolProfitAmount') }}
{{
displayProfitAmount
}}
@@ -41,6 +41,7 @@
:precision="2"
style="width: 100%"
/>
+
{{ $t('page.table.safetyLineTip') }}
diff --git a/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/edit-dialog.vue b/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/edit-dialog.vue
index d846452..6201f55 100644
--- a/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/edit-dialog.vue
+++ b/saiadmin-artd/src/views/plugin/dice/lottery_pool_config/index/modules/edit-dialog.vue
@@ -26,13 +26,22 @@
/>
-
+
+ {{ $t('page.table.safetyLineTip') }}
+
+
+
@@ -111,17 +120,36 @@
return WEIGHT_KEYS.reduce((sum, key) => sum + Number(formData[key] ?? 0), 0)
})
+ function isDefaultPoolName(name: unknown): boolean {
+ return String(name ?? '') === 'default'
+ }
+
+ const showSafetyLineField = computed(() => isDefaultPoolName(formData.name))
+
+ const showSafetyLineReadonlyHint = computed(() => {
+ const n = String(formData.name ?? '').trim()
+ return n !== '' && !isDefaultPoolName(n)
+ })
+
/**
* 表单验证规则
*/
- const rules = computed(() => ({
- name: [{ required: true, message: t('page.form.ruleNameRequired'), trigger: 'blur' }],
- t1_weight: [{ required: true, message: t('page.form.ruleT1Required'), trigger: 'blur' }],
- t2_weight: [{ required: true, message: t('page.form.ruleT2Required'), trigger: 'blur' }],
- t3_weight: [{ required: true, message: t('page.form.ruleT3Required'), trigger: 'blur' }],
- t4_weight: [{ required: true, message: t('page.form.ruleT4Required'), trigger: 'blur' }],
- t5_weight: [{ required: true, message: t('page.form.ruleT5Required'), trigger: 'blur' }]
- }))
+ const rules = computed(() => {
+ const base: FormRules = {
+ name: [{ required: true, message: t('page.form.ruleNameRequired'), trigger: 'blur' }],
+ t1_weight: [{ required: true, message: t('page.form.ruleT1Required'), trigger: 'blur' }],
+ t2_weight: [{ required: true, message: t('page.form.ruleT2Required'), trigger: 'blur' }],
+ t3_weight: [{ required: true, message: t('page.form.ruleT3Required'), trigger: 'blur' }],
+ t4_weight: [{ required: true, message: t('page.form.ruleT4Required'), trigger: 'blur' }],
+ t5_weight: [{ required: true, message: t('page.form.ruleT5Required'), trigger: 'blur' }]
+ }
+ if (showSafetyLineField.value) {
+ base.safety_line = [
+ { required: true, message: t('page.form.ruleSafetyLineRequired'), trigger: 'blur' }
+ ]
+ }
+ return base
+ })
/**
* 初始数据(权重为数字便于输入与校验)
@@ -224,11 +252,15 @@
props.data?.dept_id ??
channelScope?.selectedDeptId.value
})
+ const { safety_line, ...submitWithoutSafetyLine } = submitData
+ const payload = isDefaultPoolName(submitData.name)
+ ? submitData
+ : submitWithoutSafetyLine
if (props.dialogType === 'add') {
- await api.save(submitData)
+ await api.save(payload)
ElMessage.success(t('page.form.msgAddSuccess'))
} else {
- await api.update(submitData)
+ await api.update(payload)
ElMessage.success(t('page.form.msgUpdateSuccess'))
}
emit('success')