From cbeb0737ef90f9f52fdaeb77dc373b4b602894cb Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Tue, 13 Oct 2026 00:26:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=88=90=E5=B0=B1):=20=E6=88=90=E5=B0=B1?= =?UTF-8?q?=E9=A1=B5=E6=94=B9=E6=88=90=E3=80=8C=E5=BF=AB=E6=8B=BF=E5=88=B0?= =?UTF-8?q?=E4=BA=86=20+=20=E6=9C=AC=E7=8F=AD=E3=80=8D=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E6=9D=A1=E6=9D=A1=E6=88=90=E5=B0=B1=E7=BA=BF=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E6=98=AF=E4=B8=80=E5=A2=99=E7=81=B0=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 顶上「快拿到了」三个只说还差什么,旁边「本班」:最近谁拿到了什么、成就最多前五(自己不在就钉在底下) - 38 个成就按指标收成一条条线、分五组,同一串几档排在一根进度线上,下一档标「差几」; 悬停看说明、哪天拿到、本班几人有、全站几人有 - 还没找到的隐藏成就只露问号;本班动态里也只说「彩蛋」,不漏名字 - 题单奖章并进「题单和比赛」那组;看别人的成就只有成就线 - 去掉「仅 X% 的人获得」(分母是全站历届账号)和完成度圆环 Co-Authored-By: Claude Opus 5.5 --- apps/web/src/oj/achievement/api.ts | 8 +- .../oj/achievement/components/ClassCard.vue | 192 ++++++++++++ .../oj/achievement/components/GroupCard.vue | 115 +++++++ .../src/oj/achievement/components/Medal.vue | 117 +++++++ .../oj/achievement/components/NearCard.vue | 133 ++++++++ .../oj/achievement/components/SeriesRow.vue | 245 +++++++++++++++ apps/web/src/oj/achievement/index.vue | 296 ++++++++++-------- apps/web/src/oj/achievement/series.ts | 239 ++++++++++++++ apps/web/src/utils/types.ts | 3 +- 9 files changed, 1203 insertions(+), 145 deletions(-) create mode 100644 apps/web/src/oj/achievement/components/ClassCard.vue create mode 100644 apps/web/src/oj/achievement/components/GroupCard.vue create mode 100644 apps/web/src/oj/achievement/components/Medal.vue create mode 100644 apps/web/src/oj/achievement/components/NearCard.vue create mode 100644 apps/web/src/oj/achievement/components/SeriesRow.vue create mode 100644 apps/web/src/oj/achievement/series.ts diff --git a/apps/web/src/oj/achievement/api.ts b/apps/web/src/oj/achievement/api.ts index 02aa734..9ed07db 100644 --- a/apps/web/src/oj/achievement/api.ts +++ b/apps/web/src/oj/achievement/api.ts @@ -1,5 +1,5 @@ import api from "utils/api" -import type { AchievementList, AchievementSummary, PendingAchievement } from "utils/types" +import type { AchievementList, PendingAchievement } from "utils/types" export function getAchievements(name?: string) { return api.get("achievements", { @@ -7,12 +7,6 @@ export function getAchievements(name?: string) { }) } -export function getAchievementSummary(name?: string) { - return api.get("achievements/summary", { - params: name ? { username: name } : {}, - }) -} - export function getPendingAchievements() { return api.get("achievements/pending") } diff --git a/apps/web/src/oj/achievement/components/ClassCard.vue b/apps/web/src/oj/achievement/components/ClassCard.vue new file mode 100644 index 0000000..5a59638 --- /dev/null +++ b/apps/web/src/oj/achievement/components/ClassCard.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/apps/web/src/oj/achievement/components/GroupCard.vue b/apps/web/src/oj/achievement/components/GroupCard.vue new file mode 100644 index 0000000..5004c73 --- /dev/null +++ b/apps/web/src/oj/achievement/components/GroupCard.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/apps/web/src/oj/achievement/components/Medal.vue b/apps/web/src/oj/achievement/components/Medal.vue new file mode 100644 index 0000000..c9ca36f --- /dev/null +++ b/apps/web/src/oj/achievement/components/Medal.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/apps/web/src/oj/achievement/components/NearCard.vue b/apps/web/src/oj/achievement/components/NearCard.vue new file mode 100644 index 0000000..0260ed7 --- /dev/null +++ b/apps/web/src/oj/achievement/components/NearCard.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/apps/web/src/oj/achievement/components/SeriesRow.vue b/apps/web/src/oj/achievement/components/SeriesRow.vue new file mode 100644 index 0000000..7255c61 --- /dev/null +++ b/apps/web/src/oj/achievement/components/SeriesRow.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/apps/web/src/oj/achievement/index.vue b/apps/web/src/oj/achievement/index.vue index 27e993b..223b4d0 100644 --- a/apps/web/src/oj/achievement/index.vue +++ b/apps/web/src/oj/achievement/index.vue @@ -1,53 +1,60 @@