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 = {