From 2b21a3282bb0ab4986afae1db8552f48cb3ecd94 Mon Sep 17 00:00:00 2001 From: hzj <1304805162@qq.com> Date: Tue, 20 Jan 2026 18:25:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=BC=B9=E5=B9=95=E7=BB=84=E4=BB=B6):=20?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=89=8D=E4=B8=89=E5=90=8D=E5=A5=96=E5=8A=B1?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/ar.json | 5 +- src/locales/en.json | 5 +- src/locales/zh.json | 5 +- src/views/Ranking/Couple/Ranking.vue | 105 +++++++++++++----- .../Ranking/Couple/components/topUser.vue | 9 +- 5 files changed, 99 insertions(+), 30 deletions(-) diff --git a/src/locales/ar.json b/src/locales/ar.json index 040beb5..01c4e2e 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -464,5 +464,8 @@ "check_in_successful": "تم تسجيل الدخول بنجاح.", "you_get": "لقد حصلت على", "not_enough_pieces": "ليس لديك قطع كافية", - "confirm_item_exchange": "هل أنت متأكد أنك تريد تبديل العنصر الحالي؟" + "confirm_item_exchange": "هل أنت متأكد أنك تريد تبديل العنصر الحالي؟", + "heartbeat_value_points_4_percent": "العملات الذهبية: {amount} (4% من نقاط قيمة نبض القلب) × 2؛", + "heartbeat_value_points_3_percent": "العملات الذهبية: {amount} (3% من نقاط قيمة نبض القلب) × 2؛", + "heartbeat_value_points_2_percent": "العملات الذهبية: {amount} (2% من نقاط قيمة نبض القلب) × 2؛" } diff --git a/src/locales/en.json b/src/locales/en.json index f4ee259..721bb4b 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -464,5 +464,8 @@ "check_in_successful": "Check-in successful.", "you_get": "You Get", "not_enough_pieces": "You don't have enough pieces", - "confirm_item_exchange": "Are you sure you want to exchange the current item?" + "confirm_item_exchange": "Are you sure you want to exchange the current item?", + "heartbeat_value_points_4_percent": "Coins: {amount} (4% of Heartbeat Value points) * 2;", + "heartbeat_value_points_3_percent": "Coins: {amount} (3% of Heartbeat Value points) * 2;", + "heartbeat_value_points_2_percent": "Coins: {amount} (2% of Heartbeat Value points) * 2;" } diff --git a/src/locales/zh.json b/src/locales/zh.json index 66e94b7..4e202d1 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -464,5 +464,8 @@ "check_in_successful": "签到成功。", "you_get": "您获得了", "not_enough_pieces": "您没有足够的碎片", - "confirm_item_exchange": "您确定要兑换当前物品吗?" + "confirm_item_exchange": "您确定要兑换当前物品吗?", + "heartbeat_value_points_4_percent": "金币: {amount} (心跳值点数的4%) * 2;", + "heartbeat_value_points_3_percent": "金币: {amount} (心跳值点数的3%) * 2;", + "heartbeat_value_points_2_percent": "金币: {amount} (心跳值点数的2%) * 2;" } diff --git a/src/views/Ranking/Couple/Ranking.vue b/src/views/Ranking/Couple/Ranking.vue index 46817fd..2cd9a62 100644 --- a/src/views/Ranking/Couple/Ranking.vue +++ b/src/views/Ranking/Couple/Ranking.vue @@ -96,7 +96,7 @@ v-for="(value, index) in 3" :ranking="index + 1 + ''" :rankingItem="RankingHasTop3[index] || {}" - :rewards="rewardsTop3[index] || {}" + :rewards="showRewardsTop3[index] || {}" /> @@ -464,7 +464,68 @@ const changeTag = (module) => { } } -const rewardsTop3 = ref([]) // 前三名奖励列表 +const rewardsTop3 = ref([]) // 原前三名奖励列表 +// 处理后的前三名奖励列表 +const showRewardsTop3 = computed(() => { + let newRewardsTop3 = rewardsTop3.value + // 季度榜添加奖励 + if (seasonShow.value) { + newRewardsTop3[0].activityRewardProps.push( + { + cover: '', + content: 'Banner*30Days', + quantity: 0, + type: 'GIFT', + }, + { + cover: '', + content: 'ID: 7 digits * 1', + quantity: 0, + type: 'GIFT', + }, + ) + } + // 周榜添加奖励 + else { + // 第一名 + newRewardsTop3[0]?.activityRewardProps.push( + { + cover: '', + content: t('heartbeat_value_points_4_percent', { + amount: formatLargeNumber(Number(RankingHasTop3.value[0]?.totalNumber) * 0.04), + }), + quantity: 0, + type: 'GIFT', + }, + { + cover: '', + content: 'Homepage Ad* 7 days', + quantity: 0, + type: 'GIFT', + }, + ) + // 第二名 + newRewardsTop3[1]?.activityRewardProps.push({ + cover: '', + content: t('heartbeat_value_points_3_percent', { + amount: formatLargeNumber(Number(RankingHasTop3.value[1]?.totalNumber) * 0.03), + }), + quantity: 0, + type: 'GIFT', + }) + // 第三名 + newRewardsTop3[2]?.activityRewardProps.push({ + cover: '', + content: t('heartbeat_value_points_2_percent', { + amount: formatLargeNumber(Number(RankingHasTop3.value[2]?.totalNumber) * 0.02), + }), + quantity: 0, + type: 'GIFT', + }) + } + + return newRewardsTop3 +}) const RankingLoadmore = ref(null) //触底模块 const rankingPageNo = ref(1) //分页页码 @@ -519,6 +580,23 @@ const getDigitImageUrl = (digit) => { return '' } +// 在 script 部分定义这个函数 +const formatLargeNumber = (num) => { + if (typeof num !== 'number' || isNaN(num)) { + return '0' + } + + const absNum = Math.abs(num) + + if (absNum >= 1000000) { + return (num / 1000000).toFixed(2) + 'M' + } else if (absNum >= 1000) { + return (num / 1000).toFixed(2) + 'K' + } else { + return num.toString() + } +} + // 获取榜单 const apiGetRanking = async () => { let type = weeklyShow.value ? 'WEEK' : 'SEASON' @@ -540,29 +618,6 @@ const apiGetTop3Rewards = async () => { const response = await apiGetCpRewardPool(type) if (response.status && response.body) { let rewards = response.body - if (seasonShow.value) { - rewards[0].activityRewardProps.push( - { - cover: '', - content: 'Banner*30Days', - quantity: 0, - type: 'GIFT', - }, - { - cover: '', - content: 'ID: 7 digits * 1', - quantity: 0, - type: 'GIFT', - }, - ) - } else { - rewards[0].activityRewardProps.push({ - cover: '', - content: 'Homepage Ad* 7 days', - quantity: 0, - type: 'GIFT', - }) - } rewardsTop3.value = response.body || [] // 前三名奖励 } diff --git a/src/views/Ranking/Couple/components/topUser.vue b/src/views/Ranking/Couple/components/topUser.vue index c915bb1..0ac0685 100644 --- a/src/views/Ranking/Couple/components/topUser.vue +++ b/src/views/Ranking/Couple/components/topUser.vue @@ -251,12 +251,17 @@
- +