web-class-frontend/app/stores/login.ts

83 lines
1.6 KiB
TypeScript

interface RegisterData {
email: string;
username: string;
password: string;
passwordRepeat: string;
birth: string;
avatarURL: string;
}
interface LoginData {
username: string;
password: string;
}
interface resetData {
username: string;
oldPassword: string;
password: string;
passwordRepeat: string;
}
export enum PageType {
'login',
'register',
'reset',
}
export interface LoginStore {
loginForm: LoginData;
registerForm: RegisterData;
resetForm: resetData;
currentType: PageType;
}
export const useLoginStore = defineStore('Login', {
state: (): LoginStore => ({
loginForm: { username: '', password: '' },
registerForm: {
email: '',
username: '',
password: '',
passwordRepeat: '',
birth: '',
avatarURL: '',
},
resetForm: {
username: '',
oldPassword: '',
password: '',
passwordRepeat: '',
},
currentType: PageType.login,
}),
actions: {
async login() {
console.log(this.loginForm);
const router = useRouter();
await router.push('/base/home');
},
async register() {
console.log(this.registerForm);
},
async reset() {
console.log(this.resetForm);
},
},
getters: {
getTypeName: (state) => {
switch (state.currentType) {
case PageType.login:
return '登录';
case PageType.register:
return '注册';
case PageType.reset:
return '重置密码';
default:
console.log('未知');
return '未知';
}
},
},
});