feat(新年活动): 修复阿语转盘中奖奖品对不上的问题,补充排行榜的上拉加载功能

This commit is contained in:
hzj 2026-01-04 14:31:39 +08:00
parent 45c0996116
commit bfe9e0d8fe
2 changed files with 60 additions and 10 deletions

View File

@ -35,9 +35,11 @@ export const withdrawApply = async (data) => {
}
// 获取排行榜
export const ranklist = async (activityId) => {
export const ranklist = async (data) => {
try {
const response = await get(`/activity/lottery/recharge-rank?activityId=${activityId}`)
const response = await get(
`/activity/lottery/recharge-rank?activityId=${data.activityId}&pageNo=${data.pageNo}&pageSize=${data.pageSize}`
)
return response
} catch (error) {
console.error('Failed to fetch get rank list:', error)

View File

@ -1,13 +1,16 @@
<template>
<div class="fullPage">
<!-- 预加载状态 -->
<div v-if="isLoading" class="loading-container">
<div v-show="isLoading" class="loading-container">
<div class="loading-spinner"></div>
<p>{{ $t('loading') }}...</p>
</div>
<!-- 主要内容 -->
<div v-else style="width: 100vw; min-height: 100vh; overflow: hidden; position: relative">
<div
v-show="!isLoading"
style="width: 100vw; min-height: 100vh; overflow: hidden; position: relative"
>
<!-- 页面背景 -->
<div class="bg-layer">
<img
@ -489,6 +492,9 @@
</div>
</itemCenter>
</div>
<!-- 触发加载功能 -->
<div ref="RankingLoadmore"></div>
</div>
<!-- 抽奖模块 -->
@ -522,6 +528,8 @@
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 1fr);
gap: 1vw;
direction: ltr;
"
>
<div
@ -1604,6 +1612,7 @@ import { showError, showSuccess } from '@/utils/toast.js'
import { getSelectedPayee, clearSelectedPayee } from '@/utils/payeeStore.js'
import { handleAvatarImageError, handleRewardImageError } from '@/utils/imageHandler.js'
import { preloadImages } from '@/utils/imagePreloader.js'
import { useThrottle } from '@/utils/useDebounce'
import { getMemberProfile, getUserIdentity } from '@/api/wallet'
import {
@ -1711,7 +1720,10 @@ const formatRechargeAmount = (amount) => {
}
}
const RankingLoadmore = ref(null) //
const rankingPageNo = ref(1) //
const ranking = ref([]) //
const rankingAdd = ref([]) //
const myRanking = ref({}) //
const topImg = ref([
imageUrl('RewardRecharge100'),
@ -1738,7 +1750,8 @@ const RankingHasTop3 = computed(() => {
//
const showRanking = computed(() => {
return ranking.value.filter((_, index) => index >= 3)
// return ranking.value.filter((_, index) => index >= 3)
return [...ranking.value.filter((_, index) => index >= 3), ...rankingAdd.value]
// return []
})
@ -2188,12 +2201,26 @@ const getUserInfo = async () => {
//
const getRanking = async () => {
const resRanking = await ranklist('2005571533988298753')
let data = {
activityId: '2005571533988298753',
pageNo: rankingPageNo.value,
pageSize: 20,
}
const resRanking = await ranklist(data)
if (resRanking.status && resRanking.body) {
ranking.value = resRanking.body?.topList
myRanking.value = resRanking.body?.currentUser
myRanking.value = resRanking.body?.currentUser //
if (resRanking.body.topList.length != 0) {
if (resRanking.body.topList.length == 20) {
rankingAdd.value = []
ranking.value.push(...resRanking.body?.topList)
rankingPageNo.value++
} else {
rankingAdd.value = resRanking.body?.topList
}
}
} else {
ranking.value = {}
ranking.value = []
myRanking.value = {}
}
}
@ -2625,6 +2652,21 @@ const connectToAppHandler = async () => {
})
}
//
const debouceGetRanking = useThrottle(() => {
getRanking() //
}, 1000)
// IntersectionObserver
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.intersectionRatio > 0 && ranking.value.length != 0) {
console.log('触发RankingLoadmore加载')
debouceGetRanking()
}
})
})
//
onMounted(() => {
console.log('route.query.activeAction:', route.query.activeAction)
@ -2637,6 +2679,12 @@ onMounted(() => {
preloadOtherImages() //
startCountdown() //
underlineStyle.value //
//
if (RankingLoadmore.value) {
console.log('监控加载模块')
observer.observe(RankingLoadmore.value)
}
})
onUnmounted(() => {
@ -2830,7 +2878,7 @@ onUnmounted(() => {
@media screen and (min-width: 360px) {
* {
font-size: 14px;
font-size: 12px;
}
}