feat(前台): 各页直达后台对应功能——编辑这一课、新建比赛、编辑这条公告……
Deploy / deploy (push) Canceled after 0s

题目页「编辑题目」从只给超管放宽到有权改这道题的人(含学生管理员改自己出的题);
题目、比赛、题单列表加「新建」;自学首页加「自学情况」「管理教程」,课文加「编辑这一课」;
公告加「编辑这条」「发公告」;成就加「管理成就」;智能分析加「AI 报告」,看某个学生时
带着用户名过去直接筛到他。按钮统一走 shared/components/AdminLink.vue。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-15 14:02:29 +08:00
1 parent e7b6e27b85
commit 0ffc405a20
12 files changed
+140 -3

No files matched your search

+14
View File
@@ -4,6 +4,7 @@ import { getAchievements } from "oj/achievement/api"
import { getUserBadges } from "oj/api"
import { useBreakpoints } from "shared/composables/breakpoints"
import UserName from "shared/components/UserName.vue"
import AdminLink from "shared/components/AdminLink.vue"
import { useUserStore } from "shared/store/user"
import { RARITY_COLOR, RARITY_LABEL } from "utils/constants"
import type { AchievementList, AchievementRarity, UserBadge } from "utils/types"
@@ -83,6 +84,9 @@ watch(name, load)
</span>
</span>
<router-link v-if="other" to="/achievement" class="mine">看我的 ›</router-link>
<div v-if="userStore.isSuperAdmin && isDesktop" class="admin-link">
<AdminLink to="/admin/achievement/list" size="small">管理成就</AdminLink>
</div>
</div>
<!-- 没有班级(老师、自己注册的号)就没有「本班」,「快拿到了」三个横排占满整宽 -->
@@ -168,6 +172,16 @@ h2 {
font-variant-numeric: tabular-nums;
}
/* 两个都在时「看我的」占着 auto,按钮跟在它后面 */
.admin-link {
margin-left: auto;
align-self: center;
}
.mine + .admin-link {
margin-left: 0;
}
.mine {
margin-left: auto;
font-size: var(--oj-fs-sec);