[色子游戏]玩家抽奖记录-优化抽奖roll_array记录五个色子
This commit is contained in:
@@ -108,7 +108,7 @@
|
|||||||
<el-form-item label="摇取点数" prop="rollArrayItems">
|
<el-form-item label="摇取点数" prop="rollArrayItems">
|
||||||
<div class="roll-array-wrap">
|
<div class="roll-array-wrap">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-for="(_, i) in 6"
|
v-for="(_, i) in 5"
|
||||||
:key="i"
|
:key="i"
|
||||||
v-model="formData.rollArrayItems[i]"
|
v-model="formData.rollArrayItems[i]"
|
||||||
:min="1"
|
:min="1"
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
:disabled="dialogType === 'edit'"
|
:disabled="dialogType === 'edit'"
|
||||||
/>
|
/>
|
||||||
</div>
|
</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>
|
||||||
<el-form-item label="奖励配置" prop="reward_config_id">
|
<el-form-item label="奖励配置" prop="reward_config_id">
|
||||||
<el-select
|
<el-select
|
||||||
@@ -191,13 +191,13 @@
|
|||||||
rollArrayItems: [
|
rollArrayItems: [
|
||||||
{
|
{
|
||||||
validator: (_rule: any, value: (number | null)[], callback: (e?: Error) => void) => {
|
validator: (_rule: any, value: (number | null)[], callback: (e?: Error) => void) => {
|
||||||
if (!value || value.length !== 6) {
|
if (!value || value.length !== 5) {
|
||||||
callback(new Error('摇取点数必须为 6 个数'))
|
callback(new Error('摇取点数必须为 5 个数'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const ok = value.every((n) => n != null && n >= 1 && n <= 6)
|
const ok = value.every((n) => n != null && n >= 1 && n <= 6)
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
callback(new Error('摇取点数必须填写 6 个数,每个 1~6'))
|
callback(new Error('摇取点数必须填写 5 个数,每个 1~6'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
callback()
|
callback()
|
||||||
@@ -226,8 +226,8 @@
|
|||||||
reward_config_id: null as number | null
|
reward_config_id: null as number | null
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 摇取点数固定 6 位 [n0..n5],每项 1~6 */
|
/** 摇取点数固定 5 位 [n0..n4],每项 1~6 */
|
||||||
const rollArrayItemsDefault = (): (number | null)[] => [null, null, null, null, null, null]
|
const rollArrayItemsDefault = (): (number | null)[] => [null, null, null, null, null]
|
||||||
|
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
...initialFormData,
|
...initialFormData,
|
||||||
@@ -297,26 +297,26 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 将接口的 roll_array 转为固定 6 项数组,不足补 null */
|
/** 将接口的 roll_array 转为固定 5 项数组,不足补 null */
|
||||||
function parseRollArrayToItems(val: unknown): (number | null)[] {
|
function parseRollArrayToItems(val: unknown): (number | null)[] {
|
||||||
let arr: number[] = []
|
let arr: number[] = []
|
||||||
if (Array.isArray(val)) {
|
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') {
|
} else if (typeof val === 'string') {
|
||||||
try {
|
try {
|
||||||
const parsed = JSON.parse(val)
|
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 {
|
} catch {
|
||||||
arr = val
|
arr = val
|
||||||
.split(',')
|
.split(',')
|
||||||
.map((n) => parseInt(n, 10))
|
.map((n) => parseInt(n, 10))
|
||||||
.filter((n) => !Number.isNaN(n))
|
.filter((n) => !Number.isNaN(n))
|
||||||
.slice(0, 6)
|
.slice(0, 5)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const items: (number | null)[] = [...arr]
|
const items: (number | null)[] = [...arr]
|
||||||
while (items.length < 6) items.push(null)
|
while (items.length < 5) items.push(null)
|
||||||
return items.slice(0, 6)
|
return items.slice(0, 5)
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
@@ -329,7 +329,7 @@
|
|||||||
try {
|
try {
|
||||||
await formRef.value.validate()
|
await formRef.value.validate()
|
||||||
const payload = { ...formData } as Record<string, unknown>
|
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
|
const items = formData.rollArrayItems
|
||||||
payload.roll_array = items.map((n) => {
|
payload.roll_array = items.map((n) => {
|
||||||
const v = n != null ? Number(n) : 1
|
const v = n != null ? Number(n) : 1
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ use think\model\relation\BelongsTo;
|
|||||||
* @property $lottery_id 奖池
|
* @property $lottery_id 奖池
|
||||||
* @property $start_index 起始索引
|
* @property $start_index 起始索引
|
||||||
* @property $target_index 结束索引
|
* @property $target_index 结束索引
|
||||||
* @property $roll_array 摇取点数,格式:[1,2,3,4,5,6]
|
* @property $roll_array 摇取点数,格式:[1,2,3,4,5](5个点数)
|
||||||
* @property $lottery_name 奖池名
|
* @property $lottery_name 奖池名
|
||||||
* @property $create_time 创建时间
|
* @property $create_time 创建时间
|
||||||
* @property $update_time 修改时间
|
* @property $update_time 修改时间
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ class DicePlayRecordValidate extends BaseValidate
|
|||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证 roll_array:必须为 6 个元素,每个值在 1~6 之间
|
* 验证 roll_array:必须为 5 个元素,每个值在 1~6 之间
|
||||||
* @param mixed $value
|
* @param mixed $value
|
||||||
* @param mixed $rule
|
* @param mixed $rule
|
||||||
* @param array $data
|
* @param array $data
|
||||||
@@ -80,8 +80,8 @@ class DicePlayRecordValidate extends BaseValidate
|
|||||||
if (!is_array($value)) {
|
if (!is_array($value)) {
|
||||||
return '摇取点数必须为数组';
|
return '摇取点数必须为数组';
|
||||||
}
|
}
|
||||||
if (count($value) !== 6) {
|
if (count($value) !== 5) {
|
||||||
return '摇取点数必须为 6 个数';
|
return '摇取点数必须为 5 个数';
|
||||||
}
|
}
|
||||||
foreach ($value as $i => $n) {
|
foreach ($value as $i => $n) {
|
||||||
$v = is_numeric($n) ? (int) $n : null;
|
$v = is_numeric($n) ? (int) $n : null;
|
||||||
|
|||||||
Reference in New Issue
Block a user