This commit is contained in:
2025-04-30 15:45:21 +08:00
parent 3c5c8c490e
commit 48f9d35959
8 changed files with 333 additions and 97 deletions
+18 -87
View File
@@ -36,17 +36,17 @@
<!-- 队伍信息 -->
<view class="rank-team">
<view class="team-info">
<image class="team-avatar" :src="team.avatar || '/static/team-avatar.png'" mode="aspectFill"></image>
<!-- <image class="team-avatar" :src="team.avatar || '/static/team-avatar.png'" mode="aspectFill"></image>-->
<view class="team-detail">
<view class="team-name-row">
<text class="team-name">{{ team.teamName }}</text>
<text class="team-name">{{ team.groupName }}</text>
<t-tag v-if="team.isMyTeam" theme="primary" variant="light" size="small" class="my-team-tag">我的队伍</t-tag>
</view>
<view class="progress-bar">
<view class="progress-bar-bg"></view>
<view
class="progress-bar-fill"
:style="{width: `${(team.score / 100) * 100}%`}"
:style="{width: `${(team.totalScore / 100) * 100}%`}"
></view>
</view>
</view>
@@ -55,7 +55,7 @@
<!-- 得分 -->
<view class="rank-score">
<view class="score-value">{{ team.score }}</view>
<view class="score-value">{{ team.totalScore }}</view>
</view>
</view>
<view class="empty-container" v-if="!loading && rankList.length === 0">
@@ -78,98 +78,25 @@
import { ref, onMounted } from 'vue';
import { Toast } from 'tdesign-mobile-vue';
import { useRequest } from "@/utils/request";
import {onLoad} from "@dcloudio/uni-app";
// 排行榜数据
const rankList = ref([]);
const activityId = ref([]);
const loading = ref(false);
const refresherTriggered = ref(false);
const generateMockData = () => {
const teams = [
{
id: '1',
teamName: '闪电队',
score: 98,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_1.png',
isMyTeam: true
},
{
id: '2',
teamName: '飞鹰战队',
score: 96,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_2.png',
isMyTeam: false
},
{
id: '3',
teamName: '猎豹小组',
score: 90,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_3.png',
isMyTeam: false
},
{
id: '4',
teamName: '雄狮战队',
score: 85,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_4.png',
isMyTeam: false
},
{
id: '5',
teamName: '飓风俱乐部',
score: 80,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_5.png',
isMyTeam: false
},
{
id: '6',
teamName: '钢铁战士',
score: 78,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_1.png',
isMyTeam: false
},
{
id: '7',
teamName: '赤焰战队',
score: 75,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_2.png',
isMyTeam: false
},
{
id: '8',
teamName: '金龙小组',
score: 68,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_3.png',
isMyTeam: false
},
{
id: '9',
teamName: '星辰队',
score: 65,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_4.png',
isMyTeam: false
},
{
id: '10',
teamName: '黑豹战队',
score: 62,
avatar: 'https://tdesign.gtimg.com/mobile/demos/avatar_5.png',
isMyTeam: false
}
];
// 按分数排序
return teams.sort((a, b) => b.score - a.score);
};
// 获取排行榜数据
const getRankData = async () => {
loading.value = true;
// 模拟API请求延迟
await new Promise(resolve => setTimeout(resolve, 1000));
try {
rankList.value = generateMockData();
const {code,data, msg} = await useRequest().post('/client/group/list-group-rank/' + activityId.value);
if (code === 0) {
rankList.value = data;
} else {
Toast({message: msg, theme: 'error'});
}
} catch (error) {
console.error('获取排行榜数据失败', error);
Toast({ message: '获取排行榜数据失败', theme: 'error' });
@@ -193,7 +120,11 @@ const handleRefresh = () => {
refresherTriggered.value = true;
getRankData();
};
onLoad((option) => {
if (option.id) {
activityId.value=option.id
}
});
// 页面加载时获取数据
onMounted(() => {
getRankData();