You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.5 KiB
138 lines
4.5 KiB
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<string[]>([]); // 用户角色编码集合 → 判断路由权限
|
|
const perms = ref<string[]>([]); // 用户权限编码集合 → 判断按钮权限
|
|
const userInfoCont = ref<any>("");
|
|
|
|
/**
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-10-24 15:36:37
|
|
@ 功能: 登录系统
|
|
*/
|
|
function login(val:loginStruct){
|
|
return new Promise<void>((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<UserInfo>((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);
|
|
}
|