1.优化/dice/reward_config/index页面中的备注根据设置的档位来进行变化

2.检查为什么色子奖励权重有104条显示,应该只有26条(对应色子点数5-30)
3.移除掉所有实际金额在后台的显示
This commit is contained in:
2026-06-04 09:33:29 +08:00
parent 1980ff4af0
commit 0c4da1540d
9 changed files with 107 additions and 83 deletions

View File

@@ -10,7 +10,7 @@
"tipIndex": "色子点数须在 530 之间且本表内不重复。",
"tierRecommendRules": "【结算金额与档位】【大奖】T1结算金额>2【小赚】T22>=结算金额>1【抽水】T31>=结算金额>0【惩罚】T40>结算金额【再来一次】T50=结算金额。下方可为各档位填写推荐结算金额;表格中「所属档位」随结算金额自动计算,不可手动修改。",
"tierRecommendRealEv": "推荐结算金额",
"tierRecommendAutoMatch": "修改结算金额时自动匹配档位",
"tierRecommendAutoMatch": "修改结算金额时自动匹配档位与备注",
"tierRecommendApplyAmount": "将推荐金额填入已选档位的行",
"tierRecommendApplyAmountOk": "已为 {n} 行填入推荐结算金额",
"tierRecommendNoTierRows": "没有可根据结算金额推断档位的行",
@@ -20,7 +20,7 @@
"tierRecommendT5UiText": "再来一次",
"tierRecommendT5UiTextEn": "Once again",
"colTierAutoHint": "根据结算金额自动匹配",
"tipBigwin": "从左至右:中大奖点数(不可改)、显示信息、实际中奖、备注、权重(0~10000)。点数 5、30 权重固定 100%。本表单独立提交,仅提交大奖权重。",
"tipBigwin": "从左至右:中大奖点数(不可改)、显示信息、结算金额、备注、权重(0~10000)。点数 5、30 权重固定 100%。本表单独立提交,仅提交大奖权重。",
"colId": "索引(id)",
"colDicePoints": "色子点数",
"colDisplayText": "显示文本",
@@ -38,7 +38,7 @@
"colBigwinPoints": "中大奖点数",
"colDisplayInfo": "显示信息",
"colDisplayInfoEn": "显示信息(英文)",
"colRealPrize": "实际中奖",
"colRealPrize": "结算金额",
"colWeightRange": "权重(0-10000)",
"placeholderDisplayInfoZh": "显示信息(中文)",
"placeholderDisplayInfoEn": "显示信息(英文)",

View File

@@ -78,13 +78,6 @@
return api.list({ ...params, direction: currentDirection.value })
}
function formatMoney2(val: unknown): string {
if (val === '' || val === null || val === undefined) return '-'
const n = typeof val === 'number' ? val : Number(val)
if (!Number.isFinite(n)) return '-'
return n.toFixed(2)
}
const handleSearch = (params: Record<string, any>) => {
Object.assign(searchParams, { ...params, direction: currentDirection.value })
getData()
@@ -132,13 +125,6 @@
align: 'center',
showOverflowTooltip: true
},
{
prop: 'real_ev',
label: 'page.table.realEv',
width: 110,
align: 'center',
formatter: (row: Record<string, any>) => formatMoney2(row?.real_ev)
},
{ prop: 'remark', label: 'page.table.remark', minWidth: 80, align: 'center', showOverflowTooltip: true },
{ prop: 'weight', label: 'page.table.weight', width: 110, align: 'center' }
]

View File

@@ -53,17 +53,6 @@
width="80"
align="center"
/>
<el-table-column
:label="$t('page.weightShared.colRealEv')"
prop="real_ev"
width="90"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
<span>{{ formatMoney2(row?.real_ev) }}</span>
</template>
</el-table-column>
<el-table-column
:label="$t('page.weightShared.colUiText')"
prop="ui_text"

View File

@@ -47,17 +47,6 @@
align="center"
show-overflow-tooltip
/>
<el-table-column
:label="$t('page.weightShared.colRealEv')"
prop="real_ev"
width="90"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
<span>{{ formatMoney2(row?.real_ev) }}</span>
</template>
</el-table-column>
<el-table-column
:label="$t('page.weightShared.colUiText')"
prop="ui_text"
@@ -184,13 +173,6 @@
align="center"
show-overflow-tooltip
/>
<el-table-column
:label="$t('page.weightShared.colRealEv')"
prop="real_ev"
width="90"
align="center"
show-overflow-tooltip
/>
<el-table-column
:label="$t('page.weightShared.colUiText')"
prop="ui_text"

View File

@@ -137,15 +137,6 @@
/>
</template>
</ElTableColumn>
<ElTableColumn
:label="$t('page.configPage.colRealReward')"
min-width="130"
align="center"
>
<template #default="{ row }">
<span>{{ formatMoney2(calcRealReward(row.real_ev)) }}</span>
</template>
</ElTableColumn>
<ElTableColumn :label="$t('page.configPage.colTier')" width="100" align="center">
<template #default="{ row }">
<span class="tier-readonly">{{ displayRowTier(row) }}</span>
@@ -160,7 +151,8 @@
<ElInput
v-model="row.remark"
size="small"
:placeholder="$t('page.configPage.placeholderRemark')"
:placeholder="remarkPlaceholderForRow(row)"
@input="markRemarkTouched(row)"
/>
</template>
</ElTableColumn>
@@ -494,6 +486,7 @@
buildRowsFromTiers,
computeBoardFrequencies,
DEFAULT_TIER_REAL_EV_STANDARDS,
defaultRemarkForTier,
generateTiers,
inferTierFromRealEv,
summarizeCounts,
@@ -528,6 +521,8 @@
tier: string
remark: string
weight: number
/** 用户已手动改过备注时不再随档位自动覆盖 */
remarkTouched?: boolean
}
const channelScope = useInjectedChannelDept()
@@ -610,6 +605,29 @@
}
}
function markRemarkTouched(row: IndexRow) {
row.remarkTouched = true
}
function syncRemarkFromTier(row: IndexRow) {
if (row.remarkTouched || row.tier === 'BIGWIN') {
return
}
const tier = displayRowTier(row)
if (tier === '') {
return
}
row.remark = defaultRemarkForTier(tier, tierRecommend.T2)
}
function remarkPlaceholderForRow(row: IndexRow): string {
const tier = displayRowTier(row)
if (tier === '') {
return t('page.configPage.placeholderRemark')
}
return defaultRemarkForTier(tier, tierRecommend.T2)
}
function displayRowTier(row: IndexRow): string {
const tier = inferTierFromRealEv(rowRealEvNumber(row))
return tier !== '' ? tier : row.tier || '-'
@@ -625,6 +643,7 @@
applyRealEvDisplay(row, ev)
}
syncRowTierFromRealEv(row)
syncRemarkFromTier(row)
}
/** 奖励索引 id 与后端 DiceRewardConfigLogic 一致025 */
@@ -669,14 +688,6 @@
}
}
function calcRealReward(realEv: unknown): number {
const n = typeof realEv === 'number' && !Number.isNaN(realEv) ? realEv : Number(realEv)
if (Number.isNaN(n)) {
return -1
}
return n - 1
}
/** BIGWIN 行不参与按 real_ev 推断 T1-T5避免编辑时从大奖权重表消失 */
function setBigwinRowWeight(row: IndexRow, v: number | number[] | undefined | null) {
const n = Array.isArray(v) ? v[0] : v
@@ -695,6 +706,7 @@
} else {
applyRealEvDisplay(row, n)
}
syncRemarkFromTier(row)
}
function handleApplyRecommendRealEv() {
@@ -723,6 +735,7 @@
let count = 0
for (const row of indexRowsExcludeBigwin.value) {
syncRowTierFromRealEv(row)
syncRemarkFromTier(row)
if (row.tier !== '') {
count++
}

View File

@@ -35,7 +35,6 @@
<ElTableColumn label="start" prop="start_index" width="78" align="center" />
<ElTableColumn :label="$t('page.table.endIndex')" prop="id" width="78" align="center" />
<ElTableColumn :label="$t('page.table.displayText')" prop="ui_text" width="90" align="center" show-overflow-tooltip />
<ElTableColumn :label="$t('page.table.realEv')" prop="real_ev" width="90" align="center" show-overflow-tooltip />
<ElTableColumn :label="$t('page.table.remark')" prop="remark" min-width="80" align="center" show-overflow-tooltip />
<ElTableColumn :label="$t('page.table.weight')" width="130" align="center">
<template #default="{ row }">
@@ -77,7 +76,6 @@
<ElTableColumn label="start" prop="start_index" width="78" align="center" />
<ElTableColumn :label="$t('page.table.endIndex')" prop="id" width="78" align="center" />
<ElTableColumn :label="$t('page.table.displayText')" prop="ui_text" width="90" align="center" show-overflow-tooltip />
<ElTableColumn :label="$t('page.table.realEv')" prop="real_ev" width="90" align="center" show-overflow-tooltip />
<ElTableColumn :label="$t('page.table.remark')" prop="remark" min-width="80" align="center" show-overflow-tooltip />
<ElTableColumn :label="$t('page.table.weight')" width="120" align="center">
<template #default="{ row }">

View File

@@ -50,13 +50,6 @@
show-overflow-tooltip
/>
<el-table-column :label="$t('page.weightRatio.colDicePoints')" prop="grid_number" width="80" align="center" />
<el-table-column
:label="$t('page.weightRatio.colRealEv')"
prop="real_ev"
width="90"
align="center"
show-overflow-tooltip
/>
<el-table-column
:label="$t('page.weightRatio.colUiText')"
prop="ui_text"

View File

@@ -70,6 +70,32 @@ export const DEFAULT_TIER_REAL_EV_STANDARDS: TierRealEvStandards = {
* T4 惩罚0>金额
* T5 再来一次:=0
*/
/** 各档位默认备注(奖励索引表;用户可手动改,改档位时会按规则刷新除非已手动编辑过备注) */
export function defaultRemarkForTier(
tier: IndexTier | 'BIGWIN' | string,
t2RealEvStandard?: number
): string {
if (tier === 'T1' || tier === 'BIGWIN') {
return '大奖格'
}
if (tier === 'T2') {
if (t2RealEvStandard !== undefined && t2RealEvStandard <= 1) {
return '完美回本'
}
return '小赚'
}
if (tier === 'T3') {
return '抽水'
}
if (tier === 'T4') {
return '惩罚'
}
if (tier === 'T5') {
return '再来一次'
}
return ''
}
export function inferTierFromRealEv(realEv: number): IndexTier | '' {
if (!Number.isFinite(realEv)) {
return ''