fix(提交列表/统计): 按方向键会顺手切掉「代码/流程图」、重判后右栏还是旧内容、没人交时统计说「全都做完了」

提交列表:
- 焦点在单选框、下拉框上时方向键不再一边切控件一边换条;跨页没回来前不再连跳一整页
- 重判、重新评分之后右栏重新拉,不再命中旧缓存;同一条新旧请求不再互相覆盖
- 从「我的提交」点顶栏「提交」、浏览器后退时,地址里没有的筛选回到默认
- 找回点用户名开个人主页;「只看他 / 只看这题」学生也能用;重判不用等代码拉下来
- 手机上老师也能重判、能按语言筛,流程图行有手机排版;学生界面带着的班级筛选显示成能点掉的标签
- mermaid 画不出来时先说中文、原始报错折起来

统计页:
- 没人交时说「这段时间没有人交」,不再说「全都做完了」;没填题号时各处统一叫「做对过题」
- 班级按 class_name 单独传;查询失败清掉旧数据并说清原因;标签跟着查出来的那一份走
- 「语法未过」的格子单独标「语」;正确率不算还在判的;截断提示说清哪些数字受影响
- 看板的请假隐藏只藏还没交过、没在举手的人,「恢复」只恢复这个班的
- 手机上筛选折行、上下排,不再挤出屏幕

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-09-29 18:52:58 +08:00
1 parent 26c8d65e89
commit 0bcc981e6f
15 files changed
+613 -197

No files matched your search

+9 -18
View File
@@ -39,7 +39,6 @@ import {
type UserBadge,
type FlowchartStatistics,
type SubmissionStatistics,
type SubmissionStatisticsItems,
type SubmissionStatisticsGrid,
type TodaySubmissionStatistics,
} from "@oj2/contract"
@@ -174,27 +173,15 @@ export function adminRejudge(id: string) {
return api.post<{ ok: boolean }>(`submissions/${encodeURIComponent(id)}/rejudge`)
}
/**
* 统计面板展开一行时拉这个人的明细。username 这里要**精确**到人,
* 和上面那个按班级模糊匹配的不是一回事。
*/
export function getSubmissionStatisticsItems(
duration: { start?: string; end: string },
username: string,
problemDisplayId?: string,
) {
return api.get<SubmissionStatisticsItems>("submissions/statistics/items", {
params: { ...duration, problemDisplayId, username },
})
}
export function getSubmissionStatistics(
duration: { start?: string; end: string },
problemDisplayId?: string,
username?: string,
/** 班级(user.class_name)精确匹配。别再拼 `ks231` 塞进 username —— 会连带 2311、2312 班 */
className?: string,
) {
return api.get<SubmissionStatistics>("submissions/statistics", {
params: { ...duration, problemDisplayId, username },
params: { ...duration, problemDisplayId, username, className },
})
}
@@ -203,9 +190,10 @@ export function getSubmissionStatisticsGrid(
duration: { start?: string; end: string },
problemDisplayId?: string,
username?: string,
className?: string,
) {
return api.get<SubmissionStatisticsGrid>("submissions/statistics/grid", {
params: { ...duration, problemDisplayId, username },
params: { ...duration, problemDisplayId, username, className },
})
}
@@ -430,6 +418,8 @@ export function getFlowchartSubmission(id: string) {
export function getFlowchartSubmissions(params: {
username?: string
/** "1" = username 整名匹配,同代码提交列表 */
exactUsername?: "1"
className?: string
problemDisplayId?: string
myself?: string
@@ -445,9 +435,10 @@ export function getFlowchartStatistics(
duration: { start?: string; end: string },
problemDisplayId?: string,
username?: string,
className?: string,
) {
return api.get<FlowchartStatistics>("flowcharts/statistics", {
params: { ...duration, problemDisplayId, username },
params: { ...duration, problemDisplayId, username, className },
})
}