import {defineStore} from "pinia"; import {authenticationApi, loginCode, loginPass, weChatLogin} from "@/api/system/login"; import {AUTH_KEY} from "@/config"; interface UserState { userdata: any; token: string; auth: string[] } export const useUserStore = defineStore({ id: "app-user", state: (): UserState => ({ //用户数据 userdata: '', // token token: '', //用户注册信息 auth: [], }), getters: { getToken(): string { return this.token; }, getUser(): any { return this.userdata; }, getAuth(): string[] { return this.auth; } }, actions: { setToken(token: string) { this.token = token }, setUser(data: any) { this.userdata = data; }, setAuth(data: string[]) { this.auth = data; }, /** * @description: 验证码登录 */ async codeLogin(params: { phone: number | string, code: number | string }) { try { const {result} = await loginCode({phone: params.phone, code: params.code}); this.afterLoginAction(result) } catch (e) { console.log(e) } }, /** * @description: 密码登录 */ async passwordLogin(params: { name: string, password: string }) { try { const {result} = await loginPass({username: params.name, password: params.password}); this.afterLoginAction(result) } catch (e) { } }, /** * @description: 微信登录 */ async weChatLogin(params: { code: string }) { try { const {result} = await weChatLogin({code: params.code}) this.afterLoginAction(result) } catch (e) { console.log(e) } }, /** * @description: 登录成功后的操作 */ afterLoginAction(value: any) { this.setUser(value) if (value[AUTH_KEY]) { this.setToken(value[AUTH_KEY]) } authenticationApi({userId: value.userId}).then(({result}) => { if (result) { this.setAuth(result) } }) }, /** * @description: 注销 */ logout() { this.setToken('') this.setUser('') this.setAuth([]) }, }, persist: { enabled: true, detached: true, H5Storage: localStorage }, });