import { defineStore } from 'pinia'; import { useStorage } from "@vueuse/core"; import { loginStruct } from '@/api/login/type' import { loginApi } from '@/api/login/index' import { stores } from "@/utils/pinia/stores/index"; import { UserInfo } from '@/api/hr/type' import { getUserInfoIng } from '@/api/hr/user' const appTokenKey = import.meta.env.VITE_APP_TOKEN_KEY //系统关键之 export const userStror = defineStore("user",() => { const tokenIng = useStorage(appTokenKey, ""); const userKeying = useStorage("userKey", ""); const userToken = useStorage("userToken", ""); const nickname = ref(""); const avatar = ref(""); const roles = ref([]); // 用户角色编码集合 → 判断路由权限 const perms = ref([]); // 用户权限编码集合 → 判断按钮权限 const userInfoCont = ref(""); /** @ 作者: 秦东 @ 时间: 2024-10-24 15:36:37 @ 功能: 登录系统 */ function login(val:loginStruct){ return new Promise((resolve, reject) => { loginApi(val) .then((data:any) => { console.log("登陆使用",data); userKeying.value = data.data.key; userToken.value = data.data.token; tokenIng.value = data.data.key; console.log("登陆使用---userKeying----->",userKeying.value,"===>", data.data.key); console.log("登陆使用---userToken----->",userToken.value,"===>", data.data.token); console.log("登陆使用---tokenIng----->",tokenIng.value,"===>", data.data.key); resolve(); return data }) .catch((error:any) => { reject(error); }); }); } /** @ 作者: 秦东 @ 时间: 2024-10-23 11:13:50 @ 功能: 手动设置值 */ function setUserKeyVal( userKey?: string, userTokenStr?: string,tokenIngStr?: string) { userKeying.value = userKey; userToken.value = userTokenStr; tokenIng.value = tokenIngStr; } /** @ 作者: 秦东 @ 时间: 2024-10-23 11:19:17 @ 功能: 清空值 */ function setUserInfoNull() { userKeying.value = ""; userToken.value = ""; tokenIng.value = ""; nickname.value = ""; avatar.value = ""; roles.value = []; perms.value = []; userInfoCont.value = {}; } /** @ 作者: 秦东 @ 时间: 2024-10-23 13:43:25 @ 功能: 判断是否已经登录 */ function judgeIsLogin(userKey?:string,token?:string){ console.log("判断是否已经登录:",userKey,"------1------->",token); console.log("判断是否已经登录:",userKeying.value,"------2------>",userToken.value); if(userKeying.value == "" || userKeying.value == "" || userKeying.value ==""){ if(userKey != null && userKey != "" && token != null && token != ""){ userKeying.value = userKey userToken.value = token tokenIng.value = token console.log("判断是否已经登录:",userKeying.value,"-------3------>",userToken.value,"-------3------>",tokenIng); // resolve(); return true }else{ return false } }else{ return true } } /** @ 作者: 秦东 @ 时间: 2024-10-26 08:50:52 @ 功能: 获取信息(用户昵称、头像、角色集合、权限集合) */ function getInfo() { return new Promise((resolve, reject) => { getUserInfoIng() .then(({data})=>{ // console.log("获取用户信息:角色必须是非null数组!",data); nickname.value = data.nickname; avatar.value = data.avatar; roles.value = data.roles; perms.value = data.perms; userInfoCont.value = data resolve(data); }) .catch((error:any) => { reject(error); }); }) } return { tokenIng, userKeying, userToken, nickname, avatar, roles, perms, userInfoCont, setUserKeyVal, setUserInfoNull, judgeIsLogin, login, getInfo } }) // 非setup export function useUserStoreHook() { return userStror(stores); }