import { defineStore } from 'pinia'; import config from '@/config' import storage from '@/utils/storage' import constant from '@/utils/constant' import { tabMenu, workMenuList } from '@/api/system.js' const baseUrl = config.baseUrl const usePermissionStore = defineStore('permission', { state: () => ({ permissions_menu: storage.get(constant.permissions_menu), permissions_btn: storage.get(constant.permissions_btn) }), actions: { // 获取用户权限信息 GetPermis() { return new Promise(async (resolve, reject) => { let sysIds = await getSystemMenus() if (sysIds.length > 0) { workMenuList({ sysId: sysIds //平台端获取固定系统ID }).then(res => { console.log('菜单', res) resolve(res) }).catch(error => { reject(error) }) } else { reject('没有权限') } }) } } }); //获取顶部系统 function getSystemMenus() { return new Promise((resolve, reject) => { tabMenu({}).then(res => { console.log('res', res) let arr = []; //pc固定的四个系统id,如有改动,对应调整 // let menuIds = [371447078143236, 374535658992901, 374535711753477, 374535878972677]; //pc固定的四个系统标识,如有改动,对应调整 let menuCodes = ['xy_system', 'xy_quality', 'xy_data', 'xy_merc_be', 'xy_merc_mini']; if (res && res.length) { res.forEach(i => { if (menuCodes.find(j => j == i.code)) { arr.push(i.id) } }) } resolve(arr) }).catch(err => { reject(err) }) }) } function assembleRouter(allRouterMenu) { // 收集每一项的下标 const idMapping = allRouterMenu.reduce((acc, el, i) => { acc[el.id] = i; return acc; }, {}); let menu = []; let btn = []; allRouterMenu.forEach(el => { // 判断根节点 if (el.paterId === null || el.paterId === 0) { menu.push(el) return; } // 用映射表找到父元素 const parentEl = allRouterMenu[idMapping[el.paterId]]; // 把当前元素添加到父元素的`children`数组中 if (parentEl && el.type !== 3) { //非按钮,组成路由树结构 parentEl.children = [...(parentEl.children || []), el]; } else { btn.push(el.code) } }); return { menu: menu, btn: btn } } export default usePermissionStore