diff --git a/apps/src/views/resident-activity/voice-room-rocket.vue b/apps/src/views/resident-activity/voice-room-rocket.vue index d1d63bb..9fe9db5 100644 --- a/apps/src/views/resident-activity/voice-room-rocket.vue +++ b/apps/src/views/resident-activity/voice-room-rocket.vue @@ -62,6 +62,7 @@ type RewardRow = { rewardName: string; rewardScene: string; rewardType: string; + rewardCopies: number; sort: number; weight: number; }; @@ -201,6 +202,7 @@ const rewardColumns = [ { dataIndex: 'rewardCover', key: 'rewardCover', title: '封面', width: 220 }, { dataIndex: 'rewardAmount', key: 'rewardAmount', title: '数量/金币/天数', width: 150 }, { dataIndex: 'expireDays', key: 'expireDays', title: '有效天数', width: 130 }, + { dataIndex: 'rewardCopies', key: 'rewardCopies', title: '份数', width: 110 }, { dataIndex: 'weight', key: 'weight', title: '权重', width: 110 }, { dataIndex: 'enabled', key: 'enabled', title: '启用', width: 90 }, { dataIndex: 'sort', key: 'sort', title: '排序', width: 100 }, @@ -319,6 +321,7 @@ function normalizeRewardRows(rows: Array> | undefined) { rewardName: String(row.rewardName || ''), rewardScene: String(row.rewardScene || 'TOP1'), rewardType: String(row.rewardType || 'GOLD'), + rewardCopies: toNumber(row.rewardCopies, 1), sort: toNumber(row.sort, index + 1), weight: toNumber(row.weight, 1), })); @@ -407,6 +410,7 @@ function handleRewardSceneChange(row: Record) { row.rewardType = 'GOLD'; handleRewardTypeChange(row); } + row.rewardCopies = row.rewardScene === 'IN_ROOM' ? toNumber(row.rewardCopies, 1) : 1; } function handleResourceSelect(item: ResourceOption) { @@ -553,6 +557,7 @@ function addRewardRow(scene = 'TOP1', rewardType = 'GOLD') { rewardName: isNone ? '轮空' : rewardType === 'GOLD' ? '金币' : '', rewardScene: scene, rewardType, + rewardCopies: 1, sort: rewardRows.value.length + 1, weight: 1, }); @@ -604,6 +609,12 @@ function validateRewards() { message.warning('轮空只能配置在房用户奖励'); return false; } + if (row.rewardScene !== 'IN_ROOM') { + row.rewardCopies = 1; + } else if (toNumber(row.rewardCopies, 0) <= 0) { + message.warning('在房用户奖励份数必须大于 0'); + return false; + } if (!String(row.rewardName || '').trim()) { message.warning('请输入奖励名称'); return false; @@ -646,6 +657,8 @@ async function saveRewards() { rewardName: row.rewardType === 'NONE' ? '轮空' : row.rewardName.trim(), rewardScene: row.rewardScene, rewardType: row.rewardType, + rewardCopies: + row.rewardScene === 'IN_ROOM' ? toNumber(row.rewardCopies, 1) : 1, sort: toNumber(row.sort, 1), weight: toNumber(row.weight, 1), })), @@ -960,7 +973,7 @@ watch(rewardLevel, () => { :data-source="rewardRows" :loading="rewardLoading" :pagination="false" - :scroll="{ x: 1660 }" + :scroll="{ x: 1770 }" row-key="localKey" > +