自定义APP自定义App数据通讯
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

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);
}