优化页面/dice/reward_config/index中玩家实际中奖金额的计算

This commit is contained in:
2026-03-31 17:52:18 +08:00
parent b0e5a3f5c0
commit 7493c4e400
2 changed files with 78 additions and 25 deletions

View File

@@ -39,12 +39,21 @@
size="default" size="default"
class="config-table" class="config-table"
> >
<ElTableColumn :label="$t('page.configPage.colId')" prop="id" width="60" align="center"> <ElTableColumn
:label="$t('page.configPage.colId')"
prop="id"
width="60"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.id }}</span> <span>{{ row.id }}</span>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colDicePoints')" min-width="100" align="center"> <ElTableColumn
:label="$t('page.configPage.colDicePoints')"
min-width="100"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInputNumber <ElInputNumber
v-model="row.grid_number" v-model="row.grid_number"
@@ -56,7 +65,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colDisplayText')" min-width="100" align="center"> <ElTableColumn
:label="$t('page.configPage.colDisplayText')"
min-width="100"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInput <ElInput
v-model="row.ui_text" v-model="row.ui_text"
@@ -65,7 +78,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colDisplayTextEn')" min-width="120" align="center"> <ElTableColumn
:label="$t('page.configPage.colDisplayTextEn')"
min-width="120"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInput <ElInput
v-model="row.ui_text_en" v-model="row.ui_text_en"
@@ -74,7 +91,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colRealEv')" min-width="110" align="center"> <ElTableColumn
:label="$t('page.configPage.colRealEv')"
min-width="110"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInputNumber <ElInputNumber
v-model="row.real_ev" v-model="row.real_ev"
@@ -86,7 +107,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colRealReward')" min-width="130" align="center"> <ElTableColumn
:label="$t('page.configPage.colRealReward')"
min-width="130"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<span>{{ formatMoney2(calcRealReward(row.real_ev)) }}</span> <span>{{ formatMoney2(calcRealReward(row.real_ev)) }}</span>
</template> </template>
@@ -108,7 +133,11 @@
</ElSelect> </ElSelect>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colRemark')" min-width="140" align="center"> <ElTableColumn
:label="$t('page.configPage.colRemark')"
min-width="140"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInput <ElInput
v-model="row.remark" v-model="row.remark"
@@ -142,12 +171,20 @@
size="default" size="default"
class="config-table bigwin-table" class="config-table bigwin-table"
> >
<ElTableColumn :label="$t('page.configPage.colBigwinPoints')" width="100" align="center"> <ElTableColumn
:label="$t('page.configPage.colBigwinPoints')"
width="100"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<span class="readonly-value">{{ row.grid_number }}</span> <span class="readonly-value">{{ row.grid_number }}</span>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colDisplayInfo')" min-width="140" align="center"> <ElTableColumn
:label="$t('page.configPage.colDisplayInfo')"
min-width="140"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInput <ElInput
v-model="row.ui_text" v-model="row.ui_text"
@@ -156,7 +193,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colDisplayInfoEn')" min-width="160" align="center"> <ElTableColumn
:label="$t('page.configPage.colDisplayInfoEn')"
min-width="160"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInput <ElInput
v-model="row.ui_text_en" v-model="row.ui_text_en"
@@ -165,7 +206,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colRealPrize')" min-width="120" align="center"> <ElTableColumn
:label="$t('page.configPage.colRealPrize')"
min-width="120"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInputNumber <ElInputNumber
v-model="row.real_ev" v-model="row.real_ev"
@@ -177,7 +222,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colRemark')" min-width="140" align="center"> <ElTableColumn
:label="$t('page.configPage.colRemark')"
min-width="140"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<ElInput <ElInput
v-model="row.remark" v-model="row.remark"
@@ -186,7 +235,11 @@
/> />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colWeightRange')" min-width="220" align="center"> <ElTableColumn
:label="$t('page.configPage.colWeightRange')"
min-width="220"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<div class="weight-cell"> <div class="weight-cell">
<ElSlider <ElSlider
@@ -493,9 +546,9 @@
function calcRealReward(realEv: unknown): number { function calcRealReward(realEv: unknown): number {
const n = typeof realEv === 'number' && !Number.isNaN(realEv) ? realEv : Number(realEv) const n = typeof realEv === 'number' && !Number.isNaN(realEv) ? realEv : Number(realEv)
if (Number.isNaN(n)) { if (Number.isNaN(n)) {
return -100 return -1
} }
return n - 100 return n - 1
} }
function handleRealEvChange(row: IndexRow) { function handleRealEvChange(row: IndexRow) {
@@ -978,9 +1031,9 @@
:deep(.el-dialog__body) { :deep(.el-dialog__body) {
padding: 12px 16px 8px; padding: 12px 16px 8px;
} }
:deep(.el-dialog__footer) { :deep(.el-dialog__footer) {
padding: 12px 16px calc(16px + env(safe-area-inset-bottom, 0px)); padding: 12px 16px calc(16px + env(safe-area-inset-bottom, 0px));
} }
.rule-generate-rules { .rule-generate-rules {
font-size: 12px; font-size: 12px;
color: var(--el-text-color-secondary); color: var(--el-text-color-secondary);

View File

@@ -55,10 +55,10 @@ export interface TierRealEvStandards {
/** 默认标准(与规则弹窗说明一致) */ /** 默认标准(与规则弹窗说明一致) */
export const DEFAULT_TIER_REAL_EV_STANDARDS: TierRealEvStandards = { export const DEFAULT_TIER_REAL_EV_STANDARDS: TierRealEvStandards = {
T1: 30, T1: 3,
T2: 15, T2: 1.5,
T3: 5, T3: 0.5,
T4: -4, T4: -0.4,
T5: 0 T5: 0
} }
@@ -66,13 +66,13 @@ export const DEFAULT_TIER_REAL_EV_STANDARDS: TierRealEvStandards = {
* 校验档位与 real_ev 区间是否一致;通过返回 null否则返回 i18n 键名(不含 page.configPage. 前缀) * 校验档位与 real_ev 区间是否一致;通过返回 null否则返回 i18n 键名(不含 page.configPage. 前缀)
*/ */
export function validateTierRealEvStandards(s: TierRealEvStandards): string | null { export function validateTierRealEvStandards(s: TierRealEvStandards): string | null {
if (!Number.isFinite(s.T1) || !(s.T1 > 20)) { if (!Number.isFinite(s.T1) || !(s.T1 > 2)) {
return 'ruleGenInvalidT1RealEv' return 'ruleGenInvalidT1RealEv'
} }
if (!Number.isFinite(s.T2) || !(s.T2 > 10 && s.T2 < 20)) { if (!Number.isFinite(s.T2) || !(s.T2 > 1 && s.T2 < 2)) {
return 'ruleGenInvalidT2RealEv' return 'ruleGenInvalidT2RealEv'
} }
if (!Number.isFinite(s.T3) || !(s.T3 > 0 && s.T3 < 10)) { if (!Number.isFinite(s.T3) || !(s.T3 > 0 && s.T3 < 1)) {
return 'ruleGenInvalidT3RealEv' return 'ruleGenInvalidT3RealEv'
} }
if (!Number.isFinite(s.T4) || !(s.T4 < 0)) { if (!Number.isFinite(s.T4) || !(s.T4 < 0)) {