From 2ef1aa24ea53b2fbfebe8f800644fb4917f12855 Mon Sep 17 00:00:00 2001 From: zhx Date: Thu, 28 May 2026 15:01:01 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E5=86=B2=E5=A5=96=E5=8A=B1=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../first-recharge-reward-config.vue | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/apps/src/views/resident-activity/first-recharge-reward-config.vue b/apps/src/views/resident-activity/first-recharge-reward-config.vue index aaea457..fef2b25 100644 --- a/apps/src/views/resident-activity/first-recharge-reward-config.vue +++ b/apps/src/views/resident-activity/first-recharge-reward-config.vue @@ -42,6 +42,7 @@ function createRowKey(seed?: number | string) { function createLevel(level = 1, rechargeAmount = 10) { return { enabled: true, + googleProductId: '', id: null, level, rechargeAmount, @@ -85,6 +86,7 @@ const form = reactive>({ enabled: false, id: 0, levelConfigs: defaultLevels(), + minAppVersion: '', sysOrigin: '', updateTime: '', }); @@ -93,6 +95,7 @@ const levelColumns = [ { dataIndex: 'enabled', key: 'enabled', title: '启用', width: 90 }, { dataIndex: 'level', key: 'level', title: '档位', width: 110 }, { dataIndex: 'rechargeAmount', key: 'rechargeAmount', title: '首冲金额', width: 180 }, + { dataIndex: 'googleProductId', key: 'googleProductId', title: '谷歌商品ID', width: 240 }, { dataIndex: 'rewardGroup', key: 'rewardGroup', title: '奖励资源组', width: 420 }, { dataIndex: 'actions', key: 'actions', title: '操作', width: 100 }, ]; @@ -163,6 +166,7 @@ function normalizeConfig(result: null | Record | undefined) { form.configured = Boolean(value.configured); form.enabled = Boolean(value.enabled); form.id = value.id || 0; + form.minAppVersion = String(value.minAppVersion || ''); form.sysOrigin = String(value.sysOrigin || selectedSysOrigin.value || ''); form.updateTime = String(value.updateTime || ''); const levels = Array.isArray(value.levelConfigs) && value.levelConfigs.length > 0 @@ -175,6 +179,7 @@ function normalizeConfig(result: null | Record | undefined) { ); return { enabled: item.enabled !== false, + googleProductId: String(item.googleProductId || ''), id: item.id ?? null, level: Number(item.level || index + 1), rechargeAmount: Number.isFinite(rechargeAmount) ? rechargeAmount : 0, @@ -277,6 +282,7 @@ function validateBeforeSave() { } const seenLevels = new Set(); const seenAmounts = new Set(); + const seenGoogleProductIds = new Set(); for (const item of levels) { const level = Number(item.level || 0); const amountCents = toAmountCents(item.rechargeAmount); @@ -300,6 +306,14 @@ function validateBeforeSave() { message.warning('首冲金额不能重复'); return false; } + const googleProductId = String(item.googleProductId || '').trim(); + if (googleProductId) { + if (seenGoogleProductIds.has(googleProductId)) { + message.warning('谷歌商品ID不能重复'); + return false; + } + seenGoogleProductIds.add(googleProductId); + } seenLevels.add(String(level)); seenAmounts.add(String(amountCents)); } @@ -307,6 +321,10 @@ function validateBeforeSave() { message.warning('启用配置时至少要启用一个首冲奖励档位'); return false; } + if (form.enabled && !String(form.minAppVersion || '').trim()) { + message.warning('启用配置时需要填写最低App版本'); + return false; + } return true; } @@ -321,6 +339,7 @@ async function submitForm() { id: form.id || 0, levelConfigs: (form.levelConfigs || []).map((item: Record) => ({ enabled: item.enabled !== false, + googleProductId: String(item.googleProductId || '').trim(), id: item.id || 0, level: Number(item.level || 0), rechargeAmount: formatAmount(item.rechargeAmount), @@ -328,6 +347,7 @@ async function submitForm() { rewardGroupId: normalizeID(item.rewardGroupId) || null, rewardGroupName: String(item.rewardGroupName || ''), })), + minAppVersion: String(form.minAppVersion || '').trim(), sysOrigin: selectedSysOrigin.value, }); message.success('保存成功'); @@ -421,6 +441,13 @@ watch(activeTab, (value) => { 启用 + 最低App版本 + 更新时间:{{ form.updateTime || '-' }} @@ -431,7 +458,7 @@ watch(activeTab, (value) => { :loading="loading" :pagination="false" row-key="rowKey" - :scroll="{ x: 900 }" + :scroll="{ x: 1140 }" >