From a833819679c2c277e50696c23dc40ae3289fe378 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Thu, 10 Sep 2026 20:57:34 -0600 Subject: [PATCH] =?UTF-8?q?fix(=E7=BB=9F=E8=AE=A1=E9=9D=A2=E6=9D=BF):=20?= =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E9=80=89=E6=8B=A9=E4=B8=8D=E5=86=8D=E8=AE=B0?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=EF=BC=8C=E5=88=AB=E8=AE=A9=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E7=9A=84=E7=8F=AD=E6=82=84=E6=82=84=E7=95=99?= =?UTF-8?q?=E5=9C=A8=E6=A1=86=E9=87=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提交统计弹框里的「班级或用户」原来点过「统计」就永久写进 localStorage (statisticsClass),下次打开自动带上。机房一台电脑对一个班,下课换班或者 换个人坐这台机器时,上一个人查的班还留在选择框里,老师没注意就按了「统计」, 看到的整个是别人的班。 改成不存也不读,每次打开都从空的开始 —— 宁可多选一次。登录框的 LOGIN_CLASS 不动,那记的是这台机器的身份,不是一次临时查询。 STORAGE_KEY.STATISTICS_CLASS 随之没有调用方,一并删掉。 --- .../src/shared/components/StatisticsPanel.vue | 21 +++++++++---------- apps/web/src/utils/constants.ts | 1 - 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/web/src/shared/components/StatisticsPanel.vue b/apps/web/src/shared/components/StatisticsPanel.vue index 530c519..6283681 100644 --- a/apps/web/src/shared/components/StatisticsPanel.vue +++ b/apps/web/src/shared/components/StatisticsPanel.vue @@ -198,8 +198,7 @@ import { h } from "vue" import { formatISO, sub, type Duration } from "date-fns" import { getSubmissionStatistics, getSubmissionStatisticsItems } from "oj/api" -import { PANEL_DURATION_OPTIONS, STORAGE_KEY } from "utils/constants" -import storage from "utils/storage" +import { PANEL_DURATION_OPTIONS } from "utils/constants" import { useConfigStore } from "../store/config" import { useHiddenStudents } from "../composables/hiddenStudents" import { Doughnut } from "vue-chartjs" @@ -417,14 +416,16 @@ const classOptions = computed( })) ?? [], ) -// 机房电脑一台对一个班,用过的班级记在本地,下次打开就带上(和登录框同一套做法) -function lastUsedClass() { - const last = storage.get(STORAGE_KEY.STATISTICS_CLASS) - return typeof last === "string" ? last : "" -} - +/** + * 班级/用户**不记本地**:这个选择框每次打开都从空的开始。 + * + * 曾经把上次的班级写进 localStorage(statisticsClass),下次打开自动带上。但那正是 + * 最危险的地方 —— 下课换了班、或者换个人坐这台机器,上一个人查的班悄悄留在框里, + * 老师没注意就按了「统计」,看到的整个是别人的班。宁可多选一次。 + * 登录框那份 LOGIN_CLASS 是另一回事:那记的是这台机器的身份,不是一次临时查询。 + */ const query = reactive({ - username: props.username || lastUsedClass(), + username: props.username, problem: props.problem, duration: options[0].value, }) @@ -744,8 +745,6 @@ async function fetchStatistics() { listUnaccepted.value = res.dataUnaccepted listAttempted.value = res.dataAttempted personCount.value = res.personCount - // 查过的班级记下来,下次打开直接带上 - if (query.username) storage.set(STORAGE_KEY.STATISTICS_CLASS, query.username) const expanded = expandedRowKeys.value[0] for (const key of Object.keys(items)) delete items[key] diff --git a/apps/web/src/utils/constants.ts b/apps/web/src/utils/constants.ts index df2879c..7f01b12 100644 --- a/apps/web/src/utils/constants.ts +++ b/apps/web/src/utils/constants.ts @@ -144,7 +144,6 @@ export const STORAGE_KEY = { ADMIN_PROBLEM_TAGS: "adminProblemTags", DEMO_MODE: "demoMode", LOGIN_CLASS: "loginClass", - STATISTICS_CLASS: "statisticsClass", } export const DIFFICULTY = {