Merge remote-tracking branch 'origin/main'

This commit is contained in:
@jyuhsin
2025-04-30 17:10:45 +08:00
17 changed files with 813 additions and 134 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();
@@ -119,17 +119,7 @@ const isSignUp = ref(null)
const agreementChecked = ref(false)
const formRef = ref(null)
const formData = ref({
unitName: "测试",
contactName: "测试",
contactPhone: "18899998888",
userList: [{
userName: "测试",
sex: "男",
position: "测试",
idCard: "421087200004040010",
phone: "18899998888",
isStay: true
}]
userList: [{}]
})
onLoad((option) => {
+10 -5
View File
@@ -25,16 +25,16 @@
<div class="stat-item">
<div class="stat-icon"><i class="bi bi-people"></i></div>
<div class="stat-content">
<div class="stat-value">{{ team.groupUsers?.length }}</div>
<div class="stat-label">成员</div>
<div class="stat-value">成员:{{ team.groupUsers?.length }}</div>
<!-- <div class="stat-label">成员</div>-->
</div>
</div>
<div class="stat-divider"></div>
<div class="stat-item">
<div class="stat-item" @click="queryRank">
<div class="stat-icon"><i class="bi bi-trophy"></i></div>
<div class="stat-content">
<div class="stat-value">{{ team.totalRank ? team.totalRank : '--' }}</div>
<div class="stat-label">排名</div>
<div class="stat-value">排名:{{ team.totalRank ? team.totalRank : '--' }}</div>
<div class="stat-label">点击查看排行榜</div>
</div>
</div>
</div>
@@ -240,6 +240,11 @@ const getListAct = async () => {
};
// 点击查看成绩排名
const queryRank=()=>{
uni.navigateTo({url: '/pages/activity/rank/index?id=' + pageForm.actId})
}
// 初始化
onLoad(() => {
getListAct();