YZProjectCloud/yanzhu-ui-vue3/src/store/modules/user.js

137 lines
3.9 KiB
JavaScript

import { login, logout, getInfo } from "@/api/login";
import { findMyTasks } from "@/api/flowable/businessKey";
import { getToken, setToken, removeToken } from "@/utils/auth";
import defAva from "@/assets/images/profile.jpg";
const useUserStore = defineStore("user", {
state: () => ({
token: getToken(),
uid: "",
name: "",
nickName: "",
avatar: "",
compInfo: {},
roles: [],
permissions: [],
currentComId: null,
currentComName: null,
currentPrjId: null,
currentProName: null,
isAdmin: false,
vendorsCode:'',
user:null,
}),
actions: {
// 登录
login(userInfo) {
const username = userInfo.username.trim();
const password = userInfo.password;
const code = userInfo.code;
const uuid = userInfo.uuid;
return new Promise((resolve, reject) => {
login(username, password, code, uuid)
.then((res) => {
let data = res.data;
setToken(data.access_token);
this.token = data.access_token;
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 获取用户信息
getInfo() {
return new Promise((resolve, reject) => {
getInfo()
.then((res) => {
const user = res.user;
const avatar =
user.avatar == "" || user.avatar == null ? defAva : user.avatar;
if (res.roles && res.roles.length > 0) {
// 验证返回的roles是否是一个非空数组
this.roles = res.roles;
this.permissions = res.permissions;
} else {
this.roles = ["ROLE_DEFAULT"];
}
this.user=user;
this.uid = user.userId;
this.name = user.userName;
this.nickName = user.nickName;
this.compInfo = user.comp;
this.avatar = avatar;
this.currentComId = user.activeComId;
this.currentComName = user.activeComName;
this.currentPrjId = user.activeProjectId;
this.currentProName = user.activeProjectName;
this.vendorsCode=user.vendorsCode
this.isAdmin = user.roles.some(
(item) =>
item.roleKey.includes("admin") ||
item.roleKey.includes("gsAdmin")
);
resolve(res);
})
.catch((error) => {
reject(error);
});
});
},
// 获取用户代办
getTasks() {
return new Promise((resolve, reject) => {
findMyTasks()
.then((response) => {
let todos = document.querySelectorAll(".tips_Todo");
let tasks = document.querySelectorAll(".tips_Task");
if (todos.length > 0) {
todos.forEach((el) => {
el.innerHTML = response.data.todo;
if (response.data.todo > 0) {
el.style.display = "inline";
} else {
el.style.display = "none";
}
});
}
if (tasks.length > 0) {
tasks.forEach((el) => {
el.innerHTML = response.data.todo;
if (response.data.todo > 0) {
el.style.display = "inline";
} else {
el.style.display = "none";
}
});
}
resolve(response);
})
.catch((error) => {
reject(error);
});
});
},
// 退出系统
logOut() {
return new Promise((resolve, reject) => {
logout(this.token)
.then(() => {
this.token = "";
this.roles = [];
this.permissions = [];
removeToken();
resolve();
})
.catch((error) => {
reject(error);
});
});
},
},
});
export default useUserStore;