import { defineStore } from "pinia"; import { store } from "/@/store"; import { userType, resType } from "./types"; import { router } from "/@/router"; import { routerArrays } from "/@/layout/types"; import { storageSession } from "@pureadmin/utils"; import { getLogin, getMenuList, refreshToken } from "/@/api/user"; import { getToken, setToken, removeToken, getUserInfo, setUserInfo, removeUserInfo } from "/@/utils/auth"; import { useMultiTagsStoreHook } from "/@/store/modules/multiTags"; const userinfo = getUserInfo(); export const useUserStore = defineStore({ id: "pure-user", state: (): userType => ({ token: getToken(), name: "admin", // 前端生成的验证码(按实际需求替换) verifyCode: "", // 登录显示组件判断 0:登录 1:手机登录 2:二维码登录 3:注册 4:忘记密码,默认0:登录 currentPage: 0, userInfo: userinfo || null }), actions: { SET_TOKEN(token) { this.token = token; }, SET_NAME(name) { this.name = name; }, SET_VERIFYCODE(verifyCode) { this.verifyCode = verifyCode; }, SET_CURRENTPAGE(value) { this.currentPage = value; }, SET_USERINFO(value) { this.userInfo = value; }, // 登入 async loginByUsername(form) { return new Promise((resolve, reject) => { getLogin(form) .then((res: resType) => { const { code, data } = res; if (code === 0) { const { token, userinfo } = data; setToken(token); setUserInfo(userinfo); resolve(res); } else { resolve(res); } }) .catch(error => { reject(error); }); }); }, // 获取当前账号菜单数据 async postMenuList(form) { return new Promise((resolve, reject) => { getMenuList(form) .then((res: resType) => { const { code, data } = res; if (code === 0) { const systemRouter = { path: "/system", redirect: "/system/menuOperator/index", meta: { icon: "setting", title: "系统管理", rank: 11 }, children: [ { path: "/system/menuOperator/index", name: "menuOperator", meta: { icon: "flUser", title: "用户管理" } }, { path: "/system/oplog/index", name: "oplog", meta: { icon: "role", title: "角色管理" } }, { path: "/system/updates/index", name: "updates", meta: { icon: "dept", title: "部门管理" } } ] }; const interestRouter = { path: "/interest", redirect: "/interest/account/index", meta: { icon: "setting", title: "权限管理", rank: 11 }, children: [ { path: "/interest/account/index", name: "account", meta: { icon: "flUser", title: "用户管理" } }, { path: "/interest/role/index", name: "role", meta: { icon: "role", title: "角色管理" } }, { path: "/interest/action/index", name: "action", meta: { icon: "dept", title: "部门管理" } }, { path: "/interest/dataShare/index", name: "dataShare", meta: { icon: "dict", title: "字典管理" } }, { path: "/interest/group/index", name: "group", meta: { icon: "dict", title: "字典管理" } } ] }; const arrag = [interestRouter, systemRouter]; resolve(res); // console.log(arrag); } else { resolve(res); } }) .catch(error => { reject(error); }); }); }, // 登出 清空缓存 logOut() { this.token = ""; this.name = ""; removeToken(); storageSession.clear(); useMultiTagsStoreHook().handleTags("equal", routerArrays); router.push("/login"); }, // 刷新token async refreshToken(data) { return refreshToken(data).then(data => { if (data) { setToken(data); return data; } }); } } }); export function useUserStoreHook() { return useUserStore(store); }