Files
OJ2/apps/web/src/shared/store/authModal.ts
T
xuyueandClaude Opus 5.5 801d84c53b
Deploy / deploy (push) Canceled after 0s
feat(登录): 登录框改成点名字:打开就是这个班的名单,点自己再输密码;老师和往届写用户名,这台电脑上次怎么登下次就怎么开;注册完直接登上
- 学生登录 / 管理员登录两个页签和「没有我所在的班级」合成一条「写用户名」,入口是名单底下的「名单里没有我」「老师登录」
- 名单按拼音排、可打拼音缩写筛,只剩一个人时回车就选中;这台电脑没登过时先列出全部班级
- 密码错就地标在密码框下面(「密码不对,再试一次」),错太多次按钮灰掉写清 15 分钟
- 注册保留邮箱,错在哪个框标在哪个框下面,按钮改「注册并登录」
- name / autocomplete 原来写在 n-input 上、落在外层 div,没到真正的 input;改走 input-props,点名字时的密码框才真的不会让浏览器填上一个人的密码
- 登法和班级一样跨退出登录保留;authModal store 只管开关,表单回到组件里

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:48:30 +08:00

48 lines
1.0 KiB
TypeScript

import { defineStore } from "pinia"
/**
* 登录框、注册框开没开。表单本身在两个组件里:每次打开都从干净的表单开始
* (机房一台电脑轮流坐人,别把上一个人的名字和密码留在框里),不需要跨组件共享。
*/
export const useAuthModalStore = defineStore("authModal", () => {
const loginModalOpen = ref(false)
const signupModalOpen = ref(false)
function openLoginModal() {
loginModalOpen.value = true
}
function closeLoginModal() {
loginModalOpen.value = false
}
function openSignupModal() {
signupModalOpen.value = true
}
function closeSignupModal() {
signupModalOpen.value = false
}
function switchToSignup() {
closeLoginModal()
openSignupModal()
}
function switchToLogin() {
closeSignupModal()
openLoginModal()
}
return {
loginModalOpen,
signupModalOpen,
openLoginModal,
closeLoginModal,
openSignupModal,
closeSignupModal,
switchToSignup,
switchToLogin,
}
})