import {ref, computed, reactive, toRefs} from 'vue'
|
import {defineStore} from 'pinia'
|
import Cookies from "js-cookie";
|
import {saveLocalStorage, getLocalStorage} from '../utils/common'
|
|
export const useBasicInfoStore = defineStore('basicInfo', () => {
|
const state = reactive({
|
config: {
|
Theme: "light",
|
ListSize: localStorage.getItem("ListSize") ? localStorage.getItem("ListSize") : 10,
|
},
|
ifc_operations: [],
|
ifc_tasks: [],
|
ifc_meetings: [],
|
ifc_notifications: [],
|
iframe_url: null,
|
iframe_title: "@@@",
|
iframe_style: "width: 100%; height: 80vh;",
|
iframe_loading: false,
|
iframe_dialogVisible: false,
|
iframe_dialogWidth: "80%",
|
sessions: {},
|
tagUpperLimit: 8,
|
routes: [],
|
tags: [{
|
name: 'Workbench',
|
closable: false,
|
icon: 'workbench',
|
languagekey: 'Workbench'
|
}],
|
users: [],
|
userid: null,
|
currentSession: null,
|
customer: {
|
id: "",
|
name: "",
|
userface: ""
|
},
|
organization: null,
|
department: null,
|
major: null,
|
grade: null,
|
class: null,
|
subject: null,
|
paper: null,
|
order: null,
|
languages: [],
|
user: localStorage.getItem('user') ? getLocalStorage('user') : {
|
id: "",
|
name: "",
|
userface: ""
|
},
|
roles: localStorage.getItem('roles') ? getLocalStorage('roles') : [],
|
permissions: localStorage.getItem('permissions') ? getLocalStorage('permissions') : [],
|
permissionLevel: 4,
|
filterKey: '',
|
stomp: null,
|
isDot: {},
|
Authorization: localStorage.getItem('Authorization') ? localStorage.getItem('Authorization') : ''
|
})
|
|
const setToken = (token) => {
|
saveLocalStorage('Authorization', token);
|
}
|
|
const isLogin = () => {
|
if (localStorage.getItem('Authorization')) {
|
return true;
|
} else {
|
return false;
|
}
|
}
|
|
const setSessionData = (data) => {
|
|
let user = data.data;
|
let userid = data.data.id;
|
let token = data.message;
|
let roles = data.data.roles;
|
let permissions = data.data.permissions;
|
|
state.Authorization = token;
|
state.user = data.data;
|
state.userid = userid;
|
state.roles = data.data.roles
|
state.permissions = data.data.permissions
|
|
saveLocalStorage("user", user);
|
saveLocalStorage("userid", userid);
|
saveLocalStorage("Authorization", token);
|
saveLocalStorage("roles", roles);
|
saveLocalStorage("permissions", permissions);
|
|
//cookie 最大size为:
|
Cookies.set('userid', userid, {domain: WGURL.cookieDomain, expires: 7});
|
Cookies.set('Authorization', token, {domain: WGURL.cookieDomain, expires: 7});
|
|
let permissionLevel = 0;
|
if (roles != null && roles.length > 0) {
|
let engineerroles = roles.filter(x => x.type === 0);
|
let superadministratorroles = roles.filter(x => x.type === 1);
|
let administratorroles = roles.filter(x => x.type === 2);
|
let otherroles = roles.filter(x => x.type === 3);
|
|
if (engineerroles != null && engineerroles.length > 0) {
|
permissionLevel = 0;
|
} else if (superadministratorroles != null && superadministratorroles.length > 0) {
|
permissionLevel = 1;
|
} else if (administratorroles != null && administratorroles.length > 0) {
|
permissionLevel = 2;
|
} else if (otherroles != null && otherroles.length > 0) {
|
permissionLevel = 3;
|
} else {
|
permissionLevel = 99999;
|
}
|
}
|
state.permissionLevel = permissionLevel
|
}
|
|
const removeSessionData = () => {
|
localStorage.removeItem('Authorization');
|
localStorage.removeItem(`${WGURL.routeKey}-menus`);
|
localStorage.removeItem(`${WGURL.routeKey}-routes`);
|
localStorage.removeItem("userid");
|
localStorage.removeItem("roles");
|
localStorage.removeItem("user");
|
localStorage.removeItem("permissions");
|
|
state.tags = [{
|
name: 'Workbench',
|
closable: false,
|
icon: 'workbench',
|
languagekey: 'Workbench'
|
}];
|
|
Cookies.remove('userid', {domain: WGURL.cookieDomain});
|
Cookies.remove('Authorization', {domain: WGURL.cookieDomain});
|
}
|
|
const hasPermission = (permissionKey) => {
|
let result = false;
|
|
if (permissionKey == null || permissionKey === "" || permissionKey === undefined) {
|
return false;
|
}
|
|
if (state.permissions != null && state.permissions.length > 0) {
|
let pkey = permissionKey.toLowerCase().trim();
|
state.permissions.map((e) => {
|
if (e.url) {
|
let _pkey = e.url.toLowerCase().trim();
|
|
if (_pkey === pkey) {
|
result = true;
|
}
|
}
|
});
|
}
|
|
return result;
|
}
|
|
const launchIframe = (url, title) => {
|
state.iframe_url = url;
|
state.iframe_dialogVisible = true;
|
state.iframe_title = title;
|
state.iframe_loading = true;
|
}
|
|
const launchApprovalFlow = (url, title) => {
|
launchIframe(url, title);
|
}
|
|
return {
|
...toRefs(state),
|
setToken,
|
hasPermission,
|
isLogin,
|
setSessionData,
|
removeSessionData,
|
launchIframe,
|
launchApprovalFlow
|
}
|
}, {
|
persist: true,
|
})
|