|
@@ -12,6 +12,9 @@
|
|
// eslint-disable-next-line unused-imports/no-unused-imports
|
|
// eslint-disable-next-line unused-imports/no-unused-imports
|
|
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
|
|
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
|
|
import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
|
|
import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
|
|
|
|
+import { redEnvelopeTop } from '@/api/wallet'
|
|
|
|
+import { formatNumber } from '@/utils'
|
|
|
|
+import { goBack } from '@/utils/page'
|
|
|
|
|
|
defineOptions({
|
|
defineOptions({
|
|
name: 'TopChampions', // 奖赏排名
|
|
name: 'TopChampions', // 奖赏排名
|
|
@@ -25,24 +28,40 @@ const paging = ref(null)
|
|
// 类似mixins,如果是页面滚动务必要写这一行,并传入当前ref绑定的paging,注意此处是paging,而非paging.value
|
|
// 类似mixins,如果是页面滚动务必要写这一行,并传入当前ref绑定的paging,注意此处是paging,而非paging.value
|
|
useZPaging(paging)
|
|
useZPaging(paging)
|
|
|
|
|
|
|
|
+// 根据排名获取标签背景色
|
|
|
|
+function getRankBgColor(index: number) {
|
|
|
|
+ const colors = {
|
|
|
|
+ 0: '#DEA90B', // 第一名
|
|
|
|
+ 1: '#5E719E', // 第二名
|
|
|
|
+ 2: '#D47128', // 第三名
|
|
|
|
+ }
|
|
|
|
+ return colors[index] || '#A5ADBD' // 其余排名
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 根据排名获取排名数字
|
|
|
|
+function getRankNumber(index: number) {
|
|
|
|
+ return index + 1
|
|
|
|
+}
|
|
|
|
+
|
|
// 搜索结果
|
|
// 搜索结果
|
|
const dataList = ref([])
|
|
const dataList = ref([])
|
|
-function queryList(pageNo, pageSize) {
|
|
|
|
- // 此处请求仅为演示,请替换为自己项目中的请求
|
|
|
|
- setTimeout(() => {
|
|
|
|
- dataList.value = [
|
|
|
|
- { title: '123' },
|
|
|
|
- { title: '123' },
|
|
|
|
- { title: '123' },
|
|
|
|
- { title: '12345' },
|
|
|
|
- ]
|
|
|
|
- paging.value.complete(dataList.value)
|
|
|
|
- }, 1000)
|
|
|
|
|
|
+async function queryList(pageNo: number, pageSize: number) {
|
|
|
|
+ try {
|
|
|
|
+ const res = await redEnvelopeTop({
|
|
|
|
+ size: pageSize,
|
|
|
|
+ page: pageNo,
|
|
|
|
+ type: 1,
|
|
|
|
+ })
|
|
|
|
+ paging.value.complete(res.data.list)
|
|
|
|
+ }
|
|
|
|
+ catch {
|
|
|
|
+ paging.value.complete(false)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<template>
|
|
<template>
|
|
- <z-paging ref="paging" use-page-scroll refresher-only @query="queryList">
|
|
|
|
|
|
+ <z-paging ref="paging" v-model="dataList" use-page-scroll @query="queryList">
|
|
<template #top>
|
|
<template #top>
|
|
<view
|
|
<view
|
|
class="relative from-[#FA2B19] to-[#FE6232] bg-gradient-to-br"
|
|
class="relative from-[#FA2B19] to-[#FE6232] bg-gradient-to-br"
|
|
@@ -50,7 +69,7 @@ function queryList(pageNo, pageSize) {
|
|
>
|
|
>
|
|
<wd-navbar :bordered="false" custom-class="bg-transparent!">
|
|
<wd-navbar :bordered="false" custom-class="bg-transparent!">
|
|
<template #left>
|
|
<template #left>
|
|
- <wd-icon name="thin-arrow-left" color="#fff" size="32rpx" />
|
|
|
|
|
|
+ <wd-icon name="thin-arrow-left" color="#fff" size="32rpx" @click="goBack" />
|
|
</template>
|
|
</template>
|
|
<template #title>
|
|
<template #title>
|
|
<view class="text-white font-bold text-32rpx!">
|
|
<view class="text-white font-bold text-32rpx!">
|
|
@@ -65,35 +84,62 @@ function queryList(pageNo, pageSize) {
|
|
<view class="py-22rpx text-center text-22rpx text-#5C5C5C">
|
|
<view class="py-22rpx text-center text-22rpx text-#5C5C5C">
|
|
2025.05.05 Update
|
|
2025.05.05 Update
|
|
</view>
|
|
</view>
|
|
- <view class="relative flex items-center justify-between bg-white p-24rpx">
|
|
|
|
- <!-- 左上角TOP 1标签 -->
|
|
|
|
- <view class="absolute left-24rpx top-0rpx h-52rpx w-48rpx flex items-center justify-center rounded-4rpx bg-#DEA90B text-20rpx text-white font-bold" style="clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%);">
|
|
|
|
|
|
+ <view v-for="(item, index) in dataList" :key="index" class="relative mb-20rpx flex items-center justify-between bg-white p-24rpx">
|
|
|
|
+ <!-- 左上角TOP标签 -->
|
|
|
|
+ <view
|
|
|
|
+ class="absolute left-24rpx top-0 h-52rpx w-48rpx flex items-center justify-center rounded-4rpx text-20rpx text-white font-bold"
|
|
|
|
+ :style="{ backgroundColor: getRankBgColor(index), clipPath: 'polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%)' }"
|
|
|
|
+ >
|
|
<view class="flex flex-col items-center leading-none">
|
|
<view class="flex flex-col items-center leading-none">
|
|
<text class="text-16rpx">
|
|
<text class="text-16rpx">
|
|
TOP
|
|
TOP
|
|
</text>
|
|
</text>
|
|
<text class="text-18rpx">
|
|
<text class="text-18rpx">
|
|
- 1
|
|
|
|
|
|
+ {{ getRankNumber(index) }}
|
|
</text>
|
|
</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="w-30% flex flex-col items-center justify-center text-center font-bold">
|
|
<view class="w-30% flex flex-col items-center justify-center text-center font-bold">
|
|
- <wd-img width="80rpx" height="80rpx" round src="/static/images/avatar.jpg" />
|
|
|
|
|
|
+ <wd-img width="80rpx" height="80rpx" round :src="item.headPic" />
|
|
<view class="text-28rpx">
|
|
<view class="text-28rpx">
|
|
- Aamir Khan
|
|
|
|
|
|
+ {{ item.name }}
|
|
</view>
|
|
</view>
|
|
<view class="text-24rpx">
|
|
<view class="text-24rpx">
|
|
- V10
|
|
|
|
|
|
+ V{{ item.vipLevel }}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<wd-divider dashed custom-class="h-80rpx! mx-40rpx!" color="#A4A4A4" vertical />
|
|
<wd-divider dashed custom-class="h-80rpx! mx-40rpx!" color="#A4A4A4" vertical />
|
|
<view class="grid grid-cols-2 flex-1 gap-24rpx">
|
|
<view class="grid grid-cols-2 flex-1 gap-24rpx">
|
|
- <view v-for="i in 4" :key="i" class="flex flex-col items-center">
|
|
|
|
|
|
+ <view class="flex flex-col items-center">
|
|
<view class="text-22rpx text-#5B5B5B">
|
|
<view class="text-22rpx text-#5B5B5B">
|
|
Invited Friends
|
|
Invited Friends
|
|
</view>
|
|
</view>
|
|
<view class="text-26rpx font-bold">
|
|
<view class="text-26rpx font-bold">
|
|
- 12,034
|
|
|
|
|
|
+ {{ formatNumber(item.inviteNum, 0) }}
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="flex flex-col items-center">
|
|
|
|
+ <view class="text-22rpx text-#5B5B5B">
|
|
|
|
+ L7D Earnings
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text-26rpx text-[var(--wot-color-theme)] font-bold">
|
|
|
|
+ {{ formatNumber(item.L7DEarnings) }}
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="flex flex-col items-center">
|
|
|
|
+ <view class="text-22rpx text-#5B5B5B">
|
|
|
|
+ Team Members
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text-26rpx font-bold">
|
|
|
|
+ {{ formatNumber(item.teamNum, 0) }}
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="flex flex-col items-center">
|
|
|
|
+ <view class="text-22rpx text-#5B5B5B">
|
|
|
|
+ Joined Groups
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text-26rpx font-bold">
|
|
|
|
+ {{ formatNumber(item.groupNum, 0) }}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|