83 lines
1.6 KiB
TypeScript
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 '未知';
|
|
}
|
|
},
|
|
},
|
|
});
|