From 0e359a92332b2ff6efc7625d9b183c10e211ccb1 Mon Sep 17 00:00:00 2001 From: hzj <1304805162@qq.com> Date: Thu, 30 Apr 2026 15:22:25 +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=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Activities/DailyRecharge/index.vue | 92 +++++++++++++++----- 1 file changed, 71 insertions(+), 21 deletions(-) diff --git a/src/views/Activities/DailyRecharge/index.vue b/src/views/Activities/DailyRecharge/index.vue index 1b84bee..2f64f24 100644 --- a/src/views/Activities/DailyRecharge/index.vue +++ b/src/views/Activities/DailyRecharge/index.vue @@ -242,22 +242,28 @@ justify-content: flex-start; " > -
-
+
+
- +
+ +
-
+
({ + currentLevel: 1, task1SpendCoins: 0, - task1MaxLevel: 0, task1TodayRewardCoins: 0, task1PendingCoins: 0, task2RechargeAmount: 0, @@ -533,13 +539,13 @@ const levelMap = computed(() => { return new Map(taskInfo.value.levelList.map((item) => [Number(item.level), item])) }) const currentLevel = computed(() => { - return normalizeLevel(taskInfo.value.task1MaxLevel || 1) + return normalizeLevel(taskInfo.value.currentLevel || 1) }) const currentLevelInfo = computed(() => { return levelMap.value.get(currentLevel.value) || {} }) const currentChestImageName = computed(() => { - return `Lv${currentLevel.value}${currentLevelInfo.value.reached ? '_open' : ''}` + return `Lv${currentLevel.value}${currentLevelInfo.value.task2Claimed ? '_open' : ''}` }) const canClaimTask1Reward = computed(() => { return Number(taskInfo.value.task1PendingCoins) > 0 && !claimingTask1Reward.value @@ -568,7 +574,7 @@ const chestProgressList = computed(() => { const levelInfo = levelMap.value.get(level) || {} return { level, - reached: Boolean(levelInfo.reached), + task2Claimed: Boolean(levelInfo.task2Claimed), } }) }) @@ -592,17 +598,17 @@ const progressTrackStyle = computed(() => { width: `${CHEST_PROGRESS_TRACK_WIDTH_VW}vw`, left: isRtlLayout.value ? 'auto' : '0', right: isRtlLayout.value ? '0' : 'auto', - justifyContent: isRtlLayout.value ? 'flex-end' : 'flex-start', } }) -const progressBarStyle = computed(() => { +const progressFillStyle = computed(() => { return { width: progressBarWidth.value, - transform: isRtlLayout.value ? 'scaleX(-1)' : 'none', + marginLeft: isRtlLayout.value ? 'auto' : '0', + marginRight: isRtlLayout.value ? '0' : 'auto', } }) const task1Completed = computed(() => { - return Boolean(currentLevelInfo.value.reached) + return Number(taskInfo.value.task1SpendCoins) >= Number(currentTask1TargetCoins.value) }) const currentTask1TargetCoins = computed(() => { return currentLevelInfo.value.spendCoinsTarget || 0 @@ -656,11 +662,20 @@ const selectRewardChest = (level) => { } const isChestConditionReached = (level) => { - return Boolean(levelMap.value.get(Number(level))?.reached) + const chestLevel = Number(level) + if (chestLevel < currentLevel.value) { + return true + } + + if (chestLevel === currentLevel.value) { + return task1Completed.value && taskInfo.value.task2Completed + } + + return false } const getChestImageName = (chest) => { - return `Lv${chest.level}${chest.reached ? '_open' : ''}` + return `Lv${chest.level}${chest.task2Claimed ? '_open' : ''}` } const closedPopup = () => { @@ -711,6 +726,7 @@ const claimTask2Reward = useThrottle(async () => { const res = await claimDailyRechargeTask2({ activityType: 'DAILY_RECHARGE_TASK2', ruleId: currentTask2RewardTop.value.rule.id, + level: currentLevel.value, }) if (res.status) { await getDailyRechargeTaskInfo() @@ -730,7 +746,7 @@ const getDailyRechargeTaskInfo = async () => { ...res.body, levelList: Array.isArray(res.body.levelList) ? res.body.levelList : [], } - selectedRewardLevel.value = normalizeLevel(res.body.task1MaxLevel || 1) + selectedRewardLevel.value = currentLevel.value } } @@ -860,12 +876,27 @@ onMounted(() => { padding: 132vw 2vw 10vw; } +.chest-progress-scroll { + width: 100%; + overflow-x: auto; + direction: ltr; +} + +.chest-progress-scroll-rtl { + direction: rtl; +} + .chest-progress-row { position: relative; z-index: 0; display: flex; align-items: center; width: max-content; + direction: ltr; +} + +.chest-progress-row-rtl { + margin-left: auto; } .chest-progress-track { @@ -874,22 +905,41 @@ onMounted(() => { height: 3vw; display: flex; align-items: center; + overflow: hidden; background: rgba(103, 41, 0, 0.7); } +.chest-progress-fill { + height: 3vw; + overflow: hidden; +} + +.chest-progress-fill-rtl { + direction: ltr; +} + .chest-progress-bar { display: block; + width: 100%; height: 3vw; object-fit: cover; transform-origin: center; } +.chest-progress-bar-rtl { + transform: scaleX(-1) !important; +} + .chest-progress-list { display: flex; align-items: center; gap: 2vw; } +.chest-progress-list-rtl { + flex-direction: row-reverse; +} + .reward-showcase { flex: 1; min-height: 0;