import { getMenus, getQuickNav,getLeastRecentlyUsed,getPermissions } from '../../api/menu' import {turnMenuTree,field5Change3} from '@main/utils/index' const portal = { namespaced: true, state: { powerList:[], menusList:[], hideMenuItemList:[],//隐藏的文件夹类型菜单节点ID menus:[], defTabs: [], navs: [], latelyNavs:[], config:[], }, mutations: { SET_powerList: (state, powerList) => { state.powerList = powerList }, SET_menusList: (state, menusList) => { state.menusList = menusList }, SET_menus: (state, menus) => { state.menus = menus }, SET_defTabs: (state, data) => { state.defTabs = data }, SET_navs: (state, navs) => { state.navs = navs }, SET_latelyNavs: (state, latelyNavs) => { state.latelyNavs = latelyNavs }, SET_config: (state, config) => { state.config = config }, }, actions: { //取功能菜单 async getMenus({ commit, state }) { function menuHandle(data){ commit('SET_menusList', [...data]); console.log(`SET_menusList:`,[...data]); let treeData=[...data],defTabs=[]; treeData=turnMenuTree(field5Change3([...treeData])); getActiveItem(treeData); /*获取默认打开项*/ function getActiveItem(_arr){ _arr.map(item=>{ //构建 树 map let flag=false; if(item.children&&item.children.length>0){ if(!item.isShow||state.hideMenuItemList.indexOf(item.parentId)!=-1){ state.hideMenuItemList.push(item.resId); } getActiveItem(item.children); } for(let i = (state.defTabs||[]).length-1;i>=0;i--){ if(state.defTabs[i].resId!=item.resId){ flag=true; break; } } if(item.isActive&&!flag) defTabs.push(item); }); } commit('SET_defTabs', [...defTabs,...state.defTabs]); console.info('menusTree:',[...treeData]); console.info('隐藏菜单ID:',[...state.hideMenuItemList]); commit('SET_menus', treeData); return data; } /*if(window.__menus&&window.__menus.length>0){ menuHandle(window.__menus); }*/ return new Promise((resolve, reject) => { getMenus().then(res => { if(res&&res.status==500){ if(window.HIVUI_SETTING.loginUrl){ location=window.HIVUI_SETTING.loginUrl; }else{ location="/"+projectName+"/hivuiLogin/index.html#/"; } } resolve(menuHandle(res.dataPack)); }).catch(error=>{ reject(error) }); }); }, //取左侧快速 async getQuickNav({ commit, state }) { await getQuickNav().then(res => { const data = res.data.dataPack.rows; console.log(`getQuickNav`) let defTabs=[],flag=false; data.map(item=>{ flag=false; for(let i = state.defTabs.length-1;i>=0;i--){ if(state.defTabs[i].resId==item.resId){ flag = true; break; } } if(item.isActive&&!flag) defTabs.push(item); }); commit('SET_defTabs', [...defTabs,...state.defTabs]); commit('SET_navs', data); return data; }); }, setQuickNav({ commit, state },data){ commit('SET_navs', data); }, //最近使用 async getLatelyUse({ commit, state }){ let me =this; return new Promise((resolve, reject) => { getLeastRecentlyUsed(me.state.user.id).then(res => { let data = res.dataPack; data=field5Change3([...data]); commit('SET_latelyNavs', data); return data; }).catch(error=>{ reject(error) }); }); }, //取功能权限 async getPowers({ commit, state }) { await getPermissions(this.state.user.id).then(res => { const data = res.data.dataPack.rows; commit('SET_powerList', [...data]); }); }, getSysConfig({ commit, state }){ commit('SET_config', window.__sysConfig); } } } export default portal