From 52b0f313a57f79b8fe69294a6a23ec1745262f73 Mon Sep 17 00:00:00 2001 From: hzj <1304805162@qq.com> Date: Thu, 30 Apr 2026 16:54:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=AF=8F=E6=97=A5=E5=85=85=E5=80=BC?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E9=A1=B5=E9=9D=A2):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E6=B7=BB=E5=8A=A0=E5=A5=96=E5=8A=B1?= =?UTF-8?q?=E3=80=81=E8=B0=83=E6=95=B4=E7=BD=91=E7=BB=9C=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/activity.js | 4 +- src/views/Activities/DailyRecharge/index.vue | 109 +++++++++++++++++-- 2 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/api/activity.js b/src/api/activity.js index 0d05e82..68000dd 100644 --- a/src/api/activity.js +++ b/src/api/activity.js @@ -88,9 +88,9 @@ export const getDailyRechargeInfo = async () => { } // 领取每日充值活动 task1 历史累计奖励 -export const claimDailyRechargeTask1 = async () => { +export const claimDailyRechargeTask1 = async (data) => { try { - const response = await post('/activity/daily-recharge/claim/task1') + const response = await post('/activity/daily-recharge/claim/task1', data) return response } catch (error) { console.error('Failed to claim daily recharge task1 reward:', error) diff --git a/src/views/Activities/DailyRecharge/index.vue b/src/views/Activities/DailyRecharge/index.vue index 8d0559d..c136cf7 100644 --- a/src/views/Activities/DailyRecharge/index.vue +++ b/src/views/Activities/DailyRecharge/index.vue @@ -316,7 +316,7 @@ justify-content: flex-start; justify-content: center; " > -
+
+ { locale.value && setDocumentDirection(locale.value) -const imageUrl = (filename) => getPngUrl('Activities/ActiveGame/', filename) -const mp4Url = (filename) => getMp4Url('Activities/ActiveGame/', filename) +const imageUrl = (filename) => getPngUrl('Activities/DailyRecharge/', filename) +const mp4Url = (filename) => getMp4Url('Activities/DailyRecharge/', filename) const bgVapUrl = mp4Url('bg') const CHEST_PROGRESS_GAP_VW = 2 const CHEST_PROGRESS_ITEM_WIDTH_VW = 14 @@ -562,7 +571,6 @@ const currentTask2RewardTop = computed(() => { const canClaimTask2Reward = computed(() => { return ( !taskInfo.value.task2Claimed && - task1Completed.value && taskInfo.value.task2Completed && Boolean(currentTask2RewardTop.value?.rule?.id) && !claimingTask2Reward.value @@ -658,6 +666,89 @@ const mainReward = computed(() => { const rewardGridList = computed(() => { return selectedRewardList.value.slice(1, 7) }) +const mainRewardRenderKey = computed(() => { + return mainReward.value ? getRewardRenderKey(mainReward.value, 0) : 'empty-main-reward' +}) + +const isLocalRewardAsset = (reward) => { + return Boolean(reward?.localRewardAsset) +} + +const getRewardRenderKey = (reward, index) => { + return [ + selectedRewardLevel.value, + index, + reward?.type || '', + reward?.detailType || '', + reward?.cover || '', + reward?.sourceUrl || '', + ].join('-') +} + +const getExtraRewardsByLevel = (level) => { + switch (Number(level)) { + case 8: + return [ + { + type: 'GIFT', + cover: imageUrl('reward_gift'), + content: 1, + localRewardAsset: true, + }, + ] + case 9: + return [ + { + type: 'PROPS', + detailType: 'AVATAR_FRAME', + cover: imageUrl('reward_frame'), + quantity: 365, + localRewardAsset: true, + }, + ] + case 10: + return [ + { + type: 'PROPS', + detailType: 'RIDE', + cover: imageUrl('reward_ride'), + quantity: 60, + localRewardAsset: true, + }, + { + type: 'BANNER', + cover: imageUrl('reward_banner'), + quantity: 15, + localRewardAsset: true, + }, + ] + default: + return [] + } +} + +const appendExtraRewards = (rewardTopList) => { + return rewardTopList.map((rewardTop, index) => { + const level = Number(rewardTop?.rule?.level || index + 1) + const extraRewards = getExtraRewardsByLevel(level) + if (!extraRewards.length) { + return rewardTop + } + + const propsGroup = rewardTop.propsGroup || {} + const activityRewardProps = Array.isArray(propsGroup.activityRewardProps) + ? propsGroup.activityRewardProps + : [] + + return { + ...rewardTop, + propsGroup: { + ...propsGroup, + activityRewardProps: [...activityRewardProps, ...extraRewards], + }, + } + }) +} const toggleAmountVisible = () => { amountVisible.value = !amountVisible.value @@ -711,7 +802,7 @@ const claimTask1Reward = useThrottle(async () => { claimingTask1Reward.value = true try { - const res = await claimDailyRechargeTask1() + const res = await claimDailyRechargeTask1({}) if (res.status) { await getDailyRechargeTaskInfo() } @@ -759,7 +850,7 @@ const getDailyRechargeTaskInfo = async () => { const getActivityRewards = async () => { const res = await apiGetActivityResource('DAILY_RECHARGE_TASK2') if (res.status && res.body) { - activityRewards.value = Array.isArray(res.body) ? res.body : [] + activityRewards.value = Array.isArray(res.body) ? appendExtraRewards(res.body) : [] } } @@ -781,6 +872,10 @@ const preloadCriticalImages = async () => { imageUrl('amountHiddenBt'), imageUrl('done'), imageUrl('LvActive'), + imageUrl('reward_gift'), + imageUrl('reward_frame'), + imageUrl('reward_ride'), + imageUrl('reward_banner'), ...chestImages, imageUrl(getImgName('LvRewardTitle')), imageUrl(getImgName('receiveBt')),