[色子游戏]玩家抽奖记录-优化抽奖roll_array记录五个色子
This commit is contained in:
@@ -108,7 +108,7 @@
|
||||
<el-form-item label="摇取点数" prop="rollArrayItems">
|
||||
<div class="roll-array-wrap">
|
||||
<el-input-number
|
||||
v-for="(_, i) in 6"
|
||||
v-for="(_, i) in 5"
|
||||
:key="i"
|
||||
v-model="formData.rollArrayItems[i]"
|
||||
:min="1"
|
||||
@@ -120,7 +120,7 @@
|
||||
:disabled="dialogType === 'edit'"
|
||||
/>
|
||||
</div>
|
||||
<div class="roll-array-hint">固定 6 个数,每个 1~6</div>
|
||||
<div class="roll-array-hint">固定 5 个数,每个 1~6</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="奖励配置" prop="reward_config_id">
|
||||
<el-select
|
||||
@@ -191,13 +191,13 @@
|
||||
rollArrayItems: [
|
||||
{
|
||||
validator: (_rule: any, value: (number | null)[], callback: (e?: Error) => void) => {
|
||||
if (!value || value.length !== 6) {
|
||||
callback(new Error('摇取点数必须为 6 个数'))
|
||||
if (!value || value.length !== 5) {
|
||||
callback(new Error('摇取点数必须为 5 个数'))
|
||||
return
|
||||
}
|
||||
const ok = value.every((n) => n != null && n >= 1 && n <= 6)
|
||||
if (!ok) {
|
||||
callback(new Error('摇取点数必须填写 6 个数,每个 1~6'))
|
||||
callback(new Error('摇取点数必须填写 5 个数,每个 1~6'))
|
||||
return
|
||||
}
|
||||
callback()
|
||||
@@ -226,8 +226,8 @@
|
||||
reward_config_id: null as number | null
|
||||
}
|
||||
|
||||
/** 摇取点数固定 6 位 [n0..n5],每项 1~6 */
|
||||
const rollArrayItemsDefault = (): (number | null)[] => [null, null, null, null, null, null]
|
||||
/** 摇取点数固定 5 位 [n0..n4],每项 1~6 */
|
||||
const rollArrayItemsDefault = (): (number | null)[] => [null, null, null, null, null]
|
||||
|
||||
const formData = reactive({
|
||||
...initialFormData,
|
||||
@@ -297,26 +297,26 @@
|
||||
})
|
||||
}
|
||||
|
||||
/** 将接口的 roll_array 转为固定 6 项数组,不足补 null */
|
||||
/** 将接口的 roll_array 转为固定 5 项数组,不足补 null */
|
||||
function parseRollArrayToItems(val: unknown): (number | null)[] {
|
||||
let arr: number[] = []
|
||||
if (Array.isArray(val)) {
|
||||
arr = val.map((n) => (typeof n === 'number' && !Number.isNaN(n) ? n : 0)).slice(0, 6)
|
||||
arr = val.map((n) => (typeof n === 'number' && !Number.isNaN(n) ? n : 0)).slice(0, 5)
|
||||
} else if (typeof val === 'string') {
|
||||
try {
|
||||
const parsed = JSON.parse(val)
|
||||
arr = Array.isArray(parsed) ? parsed.slice(0, 6).map((n: any) => Number(n) || 0) : []
|
||||
arr = Array.isArray(parsed) ? parsed.slice(0, 5).map((n: any) => Number(n) || 0) : []
|
||||
} catch {
|
||||
arr = val
|
||||
.split(',')
|
||||
.map((n) => parseInt(n, 10))
|
||||
.filter((n) => !Number.isNaN(n))
|
||||
.slice(0, 6)
|
||||
.slice(0, 5)
|
||||
}
|
||||
}
|
||||
const items: (number | null)[] = [...arr]
|
||||
while (items.length < 6) items.push(null)
|
||||
return items.slice(0, 6)
|
||||
while (items.length < 5) items.push(null)
|
||||
return items.slice(0, 5)
|
||||
}
|
||||
|
||||
const handleClose = () => {
|
||||
@@ -329,7 +329,7 @@
|
||||
try {
|
||||
await formRef.value.validate()
|
||||
const payload = { ...formData } as Record<string, unknown>
|
||||
// 将 6 个输入值拼成 [1,2,3,4,5,6] 格式,确保每项为 1~6 的整数
|
||||
// 将 5 个输入值拼成 [1,2,3,4,5] 格式,确保每项为 1~6 的整数
|
||||
const items = formData.rollArrayItems
|
||||
payload.roll_array = items.map((n) => {
|
||||
const v = n != null ? Number(n) : 1
|
||||
|
||||
Reference in New Issue
Block a user