From e37ad982c06fe8aab2e22d9628541b8627c879c6 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Wed, 30 Sep 2026 00:00:38 +0800 Subject: [PATCH] =?UTF-8?q?revert(=E6=8F=90=E4=BA=A4=E5=88=97=E8=A1=A8):?= =?UTF-8?q?=20=E6=92=A4=E6=8E=89=E7=8F=AD=E7=BA=A7=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E9=87=8C=E8=A1=A5=E3=80=8C=E8=BF=91=E5=8D=8A=E5=B9=B4=E6=9C=89?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9A=84=E7=8F=AD=E3=80=8D=E9=82=A3=E4=B8=80?= =?UTF-8?q?=E7=89=88=EF=BC=8C=E4=B8=8B=E6=8B=89=E5=9B=9E=E5=88=B0=E5=8F=AA?= =?UTF-8?q?=E7=94=A8=E7=B3=BB=E7=BB=9F=E8=AE=BE=E5=AE=9A=E7=9A=84=E7=8F=AD?= =?UTF-8?q?=E7=BA=A7=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改成在右栏名字旁加「只看这个班」过滤按钮(下一条)。 This reverts commit 61ec7d7. Co-Authored-By: Claude Opus 5.5 --- apps/api/src/routes/submission.ts | 30 ----------------------------- apps/web/src/oj/api.ts | 5 ----- apps/web/src/oj/submission/list.vue | 29 +++------------------------- 3 files changed, 3 insertions(+), 61 deletions(-) diff --git a/apps/api/src/routes/submission.ts b/apps/api/src/routes/submission.ts index d416e8d..c03fe6c 100644 --- a/apps/api/src/routes/submission.ts +++ b/apps/api/src/routes/submission.ts @@ -208,36 +208,6 @@ submissionRoutes.get("/submissions/today-count", async (c) => { return success(c, row?.value ?? 0) }) -/** - * 近半年交过代码或流程图的班级,给提交列表的班级下拉补上网站配置里没有的那些。 - * 配置的班级列表管的是「注册时能选哪些班」,毕业、换届的班从里面摘掉之后 - * 还在交(生产上 247 摘了之后四个月里交了三百多条),下拉里却选不到它。 - * 只收 3~4 位数字的班级号,`user.class_name` 里有几个手填的名字不算班。 - */ -submissionRoutes.get("/submissions/classes", requireTeacher, async (c) => { - const since = new Date(Date.now() - 180 * 24 * 3600 * 1000).toISOString() - const active = db - .selectDistinct({ userId: schema.submission.userId }) - .from(schema.submission) - .where( - and(isNull(schema.submission.contestId), sql`${schema.submission.createTime} >= ${since}`), - ) - .union( - db - .selectDistinct({ userId: schema.flowchartSubmission.userId }) - .from(schema.flowchartSubmission) - .where(sql`${schema.flowchartSubmission.createTime} >= ${since}`), - ) - .as("active") - const rows = await db - .selectDistinct({ className: schema.user.className }) - .from(active) - .innerJoin(schema.user, eq(schema.user.id, active.userId)) - .where(sql`${schema.user.className} ~ '^[0-9]{3,4}$'`) - .orderBy(schema.user.className) - return success(c, rows.map((row) => row.className!) satisfies string[]) -}) - submissionRoutes.route("/", submissionStatisticsRoutes) // 老师也能重判:旧栈只给超管,前端却一直给老师亮着按钮,老师点了只会「权限不足」。 diff --git a/apps/web/src/oj/api.ts b/apps/web/src/oj/api.ts index f12802d..1e4b806 100644 --- a/apps/web/src/oj/api.ts +++ b/apps/web/src/oj/api.ts @@ -167,11 +167,6 @@ export function getTodaySubmissionCount(language?: string) { return api.get("submissions/today-count", { params: { language } }) } -/** 近半年有提交的班级(老师用),补上网站配置里已经摘掉的班 */ -export function getSubmissionClasses() { - return api.get("submissions/classes") -} - /** 「今日提交数」标签点开的统计。公开接口,口径同那颗标签:今天 + 非比赛提交 */ export function getTodaySubmissionStatistics() { return api.get("submissions/today-statistics") diff --git a/apps/web/src/oj/submission/list.vue b/apps/web/src/oj/submission/list.vue index 8d18536..069bd5d 100644 --- a/apps/web/src/oj/submission/list.vue +++ b/apps/web/src/oj/submission/list.vue @@ -7,7 +7,6 @@ import { adminRejudge, getClassLesson, getFlowchartSubmissions, - getSubmissionClasses, getSubmissions, getTodaySubmissionCount, retryFlowchartSubmission, @@ -445,33 +444,11 @@ const languageOptions = [ { label: "SQL", value: "SQL" }, ] -// 配置里的班级列表是「注册时能选的班」,摘掉的老班还在交,得从提交里补出来 -const activeClasses = ref([]) -watch( - teacher, - async (isTeacher) => { - if (!isTeacher || activeClasses.value.length) return - try { - activeClasses.value = await getSubmissionClasses() - } catch { - // 补不上就只有配置里那些,不打扰 - } - }, - { immediate: true }, -) - const classOptions = computed(() => { const list = configStore.config?.classList ?? [] - const others = activeClasses.value.filter((item) => !list.includes(item)).reverse() - // 带进来的班级哪边都没有(手打的)也要显示得出来,不然框里是空的却在筛 - if (query.className && !list.includes(query.className) && !others.includes(query.className)) - others.unshift(query.className) - const option = (item: string) => ({ label: classLabel(item), value: item }) - if (!others.length) return list.map(option) - return [ - { type: "group", label: "班级列表", key: "listed", children: list.map(option) }, - { type: "group", label: "不在班级列表里", key: "others", children: others.map(option) }, - ] + // 带进来的班级不在配置里(老班、手打的)也要显示得出来,不然框里是空的却在筛 + const all = query.className && !list.includes(query.className) ? [query.className, ...list] : list + return all.map((item) => ({ label: classLabel(item), value: item })) }) const contestProblemOptions = computed(() => [