diff --git a/apps/web/src/shared/components/Login.vue b/apps/web/src/shared/components/Login.vue index edaae34..ac19ba9 100644 --- a/apps/web/src/shared/components/Login.vue +++ b/apps/web/src/shared/components/Login.vue @@ -1,4 +1,6 @@ @@ -115,85 +197,142 @@ onMounted(() => { v-model:show="loginModalOpen" preset="card" title="登录" - style="width: 400px" + style="width: 420px" :auto-focus="false" > - - - 关于【选择班级】的提醒:
- 1. 如果是上课统一生成的账号,选择【相应班级】,用户名直接写自己的名字 -
- 2. - 同样是上课用的号,但是没有你的班级。选择【没有我所在的班级】,用户名要写:ks班级+姓名,比如23计算机1班张三,就写ks231张三 -
- 3. 如果是自己注册的号,选择【没有我所在的班级】
-
- - - - - - - - - - - {{ msg }} - - - + + + + + + - 登录 - - - 没有账号?立即注册 - - - -
+ + + + + + + {{ + msg + }} + + + + 登录 + + + 没有账号?立即注册 + + + + + 往届的班级、列表里找不到的班级、以及自己注册的账号,选【没有我所在的班级】,用户名要写完整,比如 + 23 计算机 1 班张三写 ks231张三。 + + + + + + + + + + + + + {{ + msg + }} + + + 登录 + + + + 管理员和老师从这里登录,学生请走【学生登录】页签。 + + + + diff --git a/apps/web/src/shared/store/authModal.ts b/apps/web/src/shared/store/authModal.ts index 5a8f42b..6016e2d 100644 --- a/apps/web/src/shared/store/authModal.ts +++ b/apps/web/src/shared/store/authModal.ts @@ -10,9 +10,11 @@ export const useAuthModalStore = defineStore("authModal", () => { const signupModalOpen = ref(false) // ==================== 登录表单状态 ==================== + // class 为 null 表示还没选,别用空串 —— 空串是「没有我所在的班级」那一项的值。 + // username 同理用 null:空串在 n-select 里是「选了一个空值」,占位符不显示。 const loginForm = reactive({ - class: "", - username: "", + class: null as string | null, + username: null as string | null, password: "", }) diff --git a/apps/web/src/shared/store/user.ts b/apps/web/src/shared/store/user.ts index 1c77ec2..8272f09 100644 --- a/apps/web/src/shared/store/user.ts +++ b/apps/web/src/shared/store/user.ts @@ -82,7 +82,11 @@ export const useUserStore = defineStore("user", () => { function clearProfile() { profile.value = null demoMode.value = false + // 登录框记的班级要跨退登活下来:机房一台机器对一个班,下课登出、下节课再来 + // 还是同一个班,清掉的话每个人都得重新选一遍。它是机器的属性,不是谁的隐私。 + const loginClass = storage.get(STORAGE_KEY.LOGIN_CLASS) storage.clear() + if (loginClass !== null) storage.set(STORAGE_KEY.LOGIN_CLASS, loginClass) } // 退登的两步(吊销服务端会话、清本地状态)绑在一起:只清本地会留一个还活着 diff --git a/apps/web/src/utils/constants.ts b/apps/web/src/utils/constants.ts index 3485ea4..0c73245 100644 --- a/apps/web/src/utils/constants.ts +++ b/apps/web/src/utils/constants.ts @@ -152,6 +152,7 @@ export const STORAGE_KEY = { ADMIN_PROBLEM: "adminProblem", ADMIN_PROBLEM_TAGS: "adminProblemTags", DEMO_MODE: "demoMode", + LOGIN_CLASS: "loginClass", } export const DIFFICULTY = {