From e368ed3eca44665b45c4fa18d58df1693ecf73bc Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Tue, 13 Oct 2026 00:03:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E4=B8=AA=E4=BA=BA=E4=B8=BB=E9=A1=B5):=20?= =?UTF-8?q?=E4=B8=BB=E9=A1=B5=E6=94=B9=E6=88=90=E5=90=8D=E7=89=87=20+=20?= =?UTF-8?q?=E4=B8=A4=E6=A0=8F=EF=BC=8C=E5=81=9A=E5=AF=B9=E7=9A=84=E9=A2=98?= =?UTF-8?q?=E6=8C=89=E5=A4=A9=E5=B8=A6=E9=A2=98=E5=90=8D=EF=BC=9B=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=B9=B6=E8=BF=9B=E4=B8=BB=E9=A1=B5=EF=BC=8C=E7=82=B9?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E6=8D=A2=E5=A4=B4=E5=83=8F=E3=80=81=E7=82=B9?= =?UTF-8?q?=E7=AC=94=E6=94=B9=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 名片:头像、班级、签名、做对几道 / 本班第几 / 成就,底下一排四个时间(第一次提交、最近一次提交、距上次提交、学习天数) - 做对的题按日期或按知识点,能搜;最上面一行是交过还没做对的 - 知识点本人和老师看得到;同学看多一张「你和他」 - 老师看学生:看他的智能分析 / 看他的提交 /「⋯」不计入排名、清空签名 - 换头像弹框:拖圆圈选一块,看领奖台和排名里多大,可退回名字的字 - 去掉「我的设置」页和下拉菜单里那一项;手机三个页签 Co-Authored-By: Claude Opus 5.5 --- apps/web/src/oj/api.ts | 12 +- .../oj/user/components/AchievementCard.vue | 133 ++++ .../oj/user/components/AvatarCropModal.vue | 391 +++++++++++ .../src/oj/user/components/KnowledgeMap.vue | 199 ++++-- .../src/oj/user/components/ProfileCard.vue | 633 ++++++++++++++++++ .../web/src/oj/user/components/SolvedCard.vue | 446 ++++++++++++ .../web/src/oj/user/components/VersusCard.vue | 108 +++ apps/web/src/oj/user/index.vue | 420 ++++-------- apps/web/src/routes.ts | 5 - apps/web/src/shared/components/Header.vue | 6 - 10 files changed, 1983 insertions(+), 370 deletions(-) create mode 100644 apps/web/src/oj/user/components/AchievementCard.vue create mode 100644 apps/web/src/oj/user/components/AvatarCropModal.vue create mode 100644 apps/web/src/oj/user/components/ProfileCard.vue create mode 100644 apps/web/src/oj/user/components/SolvedCard.vue create mode 100644 apps/web/src/oj/user/components/VersusCard.vue diff --git a/apps/web/src/oj/api.ts b/apps/web/src/oj/api.ts index b6ec85f..2efd412 100644 --- a/apps/web/src/oj/api.ts +++ b/apps/web/src/oj/api.ts @@ -9,7 +9,7 @@ import { type ContestClassView, type ContestScoreboard, type FormatCodeResponse, - type Metrics, + type ProfileOverview, type TutorialSummary, type Tutorial, type ClassActivity, @@ -395,8 +395,14 @@ export function setReaction(problemID: number, type: ReactionKey) { return api.post(`problems/${problemID}/reaction`, { type }) } -export function getMetrics(userid: number) { - return api.get(`users/${userid}/metrics`) +/** 个人主页那一页的数据:做对的题、四个时间、本班第几、成就,本人和老师多拿知识点和没做对的题 */ +export function getProfileOverview(username: string) { + return api.get(`profiles/${encodeURIComponent(username)}/overview`) +} + +/** 不用图片了,退回默认头像(名字的字) */ +export function resetAvatar() { + return api.delete<{ avatar: string }>("me/avatar") } export function getTutorial(id: number) { diff --git a/apps/web/src/oj/user/components/AchievementCard.vue b/apps/web/src/oj/user/components/AchievementCard.vue new file mode 100644 index 0000000..daefb09 --- /dev/null +++ b/apps/web/src/oj/user/components/AchievementCard.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/apps/web/src/oj/user/components/AvatarCropModal.vue b/apps/web/src/oj/user/components/AvatarCropModal.vue new file mode 100644 index 0000000..091f98c --- /dev/null +++ b/apps/web/src/oj/user/components/AvatarCropModal.vue @@ -0,0 +1,391 @@ + + + + + diff --git a/apps/web/src/oj/user/components/KnowledgeMap.vue b/apps/web/src/oj/user/components/KnowledgeMap.vue index 28717a6..0061def 100644 --- a/apps/web/src/oj/user/components/KnowledgeMap.vue +++ b/apps/web/src/oj/user/components/KnowledgeMap.vue @@ -1,30 +1,33 @@ diff --git a/apps/web/src/oj/user/components/ProfileCard.vue b/apps/web/src/oj/user/components/ProfileCard.vue new file mode 100644 index 0000000..59be83f --- /dev/null +++ b/apps/web/src/oj/user/components/ProfileCard.vue @@ -0,0 +1,633 @@ + + + + + diff --git a/apps/web/src/oj/user/components/SolvedCard.vue b/apps/web/src/oj/user/components/SolvedCard.vue new file mode 100644 index 0000000..0bb2aba --- /dev/null +++ b/apps/web/src/oj/user/components/SolvedCard.vue @@ -0,0 +1,446 @@ + + + + + diff --git a/apps/web/src/oj/user/components/VersusCard.vue b/apps/web/src/oj/user/components/VersusCard.vue new file mode 100644 index 0000000..d7acd8c --- /dev/null +++ b/apps/web/src/oj/user/components/VersusCard.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/apps/web/src/oj/user/index.vue b/apps/web/src/oj/user/index.vue index a646e38..6bd3079 100644 --- a/apps/web/src/oj/user/index.vue +++ b/apps/web/src/oj/user/index.vue @@ -1,327 +1,157 @@ +