From 0a09048a8559caf3b65c10a252336675ab186a52 Mon Sep 17 00:00:00 2001 From: zheng020 Date: Thu, 14 May 2026 13:06:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20ActivityRankingMod?= =?UTF-8?q?al=20=E6=B4=BB=E5=8A=A8=E6=A6=9C=E5=8D=95=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新建 ActivityRankingModal.vue 组件,实现单活动排名展示 - TOP3 展示使用 TOP3Card 组件 - 排名列表使用 RankingListItem 组件 - 支持下拉刷新和滚动加载更多 - 当前用户栏固定底部显示 - ThemeBanner 添加 @tap 事件触发弹窗 - index.vue 集成 ActivityRankingModal Co-Authored-By: Claude Opus 4.7 --- .../components/ActivityRankingModal.vue | 1038 +++++++++++++++++ .../components/ThemeBanner.vue | 8 +- frontend/pages/support-activity/index.vue | 37 + 3 files changed, 1082 insertions(+), 1 deletion(-) create mode 100644 frontend/pages/support-activity/components/ActivityRankingModal.vue diff --git a/frontend/pages/support-activity/components/ActivityRankingModal.vue b/frontend/pages/support-activity/components/ActivityRankingModal.vue new file mode 100644 index 0000000..b014ce5 --- /dev/null +++ b/frontend/pages/support-activity/components/ActivityRankingModal.vue @@ -0,0 +1,1038 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/support-activity/components/ThemeBanner.vue b/frontend/pages/support-activity/components/ThemeBanner.vue index 2f5d0c3..613ac42 100644 --- a/frontend/pages/support-activity/components/ThemeBanner.vue +++ b/frontend/pages/support-activity/components/ThemeBanner.vue @@ -10,7 +10,7 @@ /> - @@ -118,6 +129,7 @@ import ThemeBanner from './components/ThemeBanner.vue' import ContributionList from './components/ContributionList.vue' import StageArea from './components/StageArea.vue' import FloatingBubbles from './components/FloatingBubbles.vue' +import ActivityRankingModal from './components/ActivityRankingModal.vue' import ActionBar from './components/ActionBar.vue' const activityType = ref('birthday') @@ -139,10 +151,35 @@ const navExpanded = ref(false) // ActionBar 弹出框状态 const actionBarVisible = ref(false) +// 排行榜弹窗状态 +const rankingModalVisible = ref(false) +const currentActivityTitle = ref('') + function toggleActionBar() { actionBarVisible.value = !actionBarVisible.value } +// 打开排行榜弹窗 +function openRankingModal() { + currentActivityTitle.value = config.value?.title || '活动排名' + rankingModalVisible.value = true +} + +// 处理拜访用户 +function handleVisitUser(data) { + console.log('拜访用户:', data) +} + +// 处理查看用户资料 +function handleViewUserProfile(data) { + console.log('查看用户资料:', data) +} + +// 处理查看作品 +function handleViewArtwork(data) { + console.log('查看作品:', data) +} + let progressManager = null const isCompleted = computed(() => progressData.value.current >= progressData.value.target)