import { defineStore } from 'pinia'; import { login, QueyrUserInfo } from '../../apis/login'; import { kuky_Authorization, localST_UserInfo } from '../storage'; /** * 当前登录的用户信息 */ export const useCurrentUserStore = defineStore('current_user', { persist: { enabled: true, // 可选:自定义存储的 key 和要持久化的路径 strategies: [ { key: 'info', storage: localStorage, paths: ['username'] // 只持久化 username 属性 } ] }, state: () => { return { name: 'Jack', token_type: '', token: kuky_Authorization.get(), username: '', nickname: '', dept: [], roles: [], permissions: [], user: {} }; }, actions: { updateName(name) { this.name = name; }, toLogin(data) { const { username, password } = data; return new Promise((resolve, reject) => { login({ username, password }) .then((res) => { if (res.code == 200 && res.data.access_token.length) { this.token = res.data.access_token; this.token_type = res.data.token_type; this.username = res.data.username; this.nickname = res.data.nickname; kuky_Authorization.set(res.data.access_token); resolve(res.msg); /** * 获取用户信息 * 暂时先在这里去调用,后续可以考虑放在路由拦截中去调用 */ this.getInfo(); } else { reject(res.msg); } }) .catch((err) => { reject(err); }); }); }, async getUserInfo() { try { const { code, data: { permissions, dept, roles } } = await QueyrUserInfo(); if (code === 200) { localST_UserInfo.setItem(JSON.stringify({ permissions, dept, roles })); } } catch (err) { throw err; } } } });