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