/* * @Author: wei.li * @Date: 2021-11-17 16:40:44 * @LastEditors: wei.li * @LastEditTime: 2024-06-26 15:48:18 * @Description: file content */ import { defineStore } from 'pinia'; import { store } from '../index'; import { cookies, storageLocal } from '@utogether/utils'; import { usePermissionStoreHook } from './permission'; interface ISystemState { baseURL: string; userInfo: IRecord; systemInfo: IRecord; dataDict: IRecord; sysConfig: IRecord; menui18n: object; i18n: object; orgList: IRecord[]; dicts: IRecord[]; invOrgList: IRecord[]; homeMenus: IRecord[]; sessionKey: string; userName: string; orgId: string; organizationId: string; isAdminRole: boolean; } export const useSystemStore = defineStore('udp-system', { state: (): ISystemState => ({ baseURL: '', userInfo: {}, systemInfo: {}, dataDict: {}, sysConfig: {}, menui18n: {}, i18n: {}, dicts: [], orgList: [], invOrgList: [], homeMenus: [], sessionKey: '', orgId: '', userName: '', organizationId: '', isAdminRole: false }), getters: { getBaseURL() { return this.baseURL; }, getUserInfo() { return this.userInfo; }, getSysConfig() { return this.sysConfig; }, getEmployee() { return this.employee; }, getSessionKey() { return this.sessionKey; }, getMenuI18n() { return this.menui18n; }, getI18n() { return this.i18n; }, getOrglist() { return this.orgList; }, getOrgId() { return this.orgId; }, getOrganizationId() { return this.organizationId; }, getDataDict() { return this.dataDict; }, getUserName() { return this.userName; }, getAdminRole(state) { return state.isAdminRole; }, getHomeMenus(state) { return state.homeMenus; }, getOrganizationCode(state) { return state.invOrgList?.find(f => f.id === state.organizationId)?.organizationCode; }, getOrg(state) { return state.orgList.find(f => f.id === state.orgId); } }, actions: { // baseURL setBaseURL(data) { this.sessionKey = data; }, setSessionKey(data) { this.sessionKey = data.access_token || data; }, // sysConfig setSysConfig(sysConfig) { this.sysConfig = sysConfig; }, // orgId setOrgId(orgId) { this.orgId = orgId; }, setOrganizationId(organizationId) { this.organizationId = organizationId; }, setMenuI18n(menui18n) { this.menui18n = menui18n; }, setI18n(i18n) { this.i18n = i18n; }, setUserName(userName) { this.userName = userName; }, // 首页子菜单列表 setHomeMenus(menus) { this.homeMenus = menus; }, // 库存组织列表 setInvOrgList(invOrgList) { this.invOrgList = invOrgList; }, setOrgList(orgList) { this.orgList = orgList; }, setDict(datas) { // 数据字典 this.dicts = datas; datas?.forEach(data => { this.dataDict[data.dictCode] = data; }); storageLocal.setItem('kLov', this.dataDict); }, // 系统信息 setSystemInfo(systemInfo) { // 系统信息 this.systemInfo = systemInfo; // 当前用户 const employee = systemInfo.employeeList?.length ? systemInfo.employeeList[0] : ''; this.userInfo = systemInfo.user || {}; // 当前员工 this.employee = Object.assign({}, employee, systemInfo.user); // 用户当前的业务业务实体 this.orgId = systemInfo.orgId; // 用户当前库存组织 this.organizationId = systemInfo.organizationId; // 用户所在的业务实体 this.orgList = systemInfo.orgList; // 将公共参数缓存到cookie中 const query = { orgId: systemInfo.orgId, organizationId: systemInfo.organizationId }; cookies.set('kCookies_param', JSON.stringify(query)); this.isAdminRole = this.employee.sysRoles.some(s => s.roleCode === 'admin' || ['管理员'].includes(s.roleName)); // 缓存按钮数据权限 usePermissionStoreHook().setAuthButton(systemInfo.dataMenus); } } }); export function useSystemStoreHook() { return useSystemStore(store); }