import { getMenus, getQuickNav,getLeastRecentlyUsed,getPermissions } from '@main/api/menu' const portal = { namespaced: true, state: { powerList:[], menusList:[], menus:[], defTabs: [], navs: [], latelyNavs:[], config:window.__sysConfig }, 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 }, }, actions: { //取功能菜单 async getMenus({ commit, state }) { await getMenus().then(res => { const data = res.data.dataPack.rows; commit('SET_menusList', [...data]); console.log(`SET_menusList:`,data); let treeMap = {},treeData=[],defTabs=[],flag=false; data.map(item=>{ //构建 树 map treeMap[item.resId] = 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]); data.map(item=>{ if(treeMap[item.parentId]){ treeMap[item.parentId].children=treeMap[item.parentId].children||[]; //将子节点挂到 对应父节点上 treeMap[item.parentId].children.push(item); } }); debugger; console.log('treeMap', treeMap); let vList = []; for(let key in treeMap){ let item = treeMap[key]; if(item.type=='vdir'){ //虚拟目录 vList.push(item.resId); if(treeMap[item.parentId]){ treeMap[item.parentId].children=treeMap[item.parentId].children||[]; //将子节点挂到 对应父节点上 treeMap[item.parentId].children = treeMap[item.parentId].children.concat(item.children||[]); } } if(item.parentId!='-1'){ delete treeMap[key]; }else if((item.type=='dir'||item.type=='vdir') && item.children){//第一级只能是目录 treeData.push(item); } } //清理虚拟目录 var mData=[]; treeData.map(item=>{ if(item.type=='vdir'){ (item.children||[]).map(i=>{ if(i.type!='vdir'&&i.children){ i.parentId="-1"; i.parentName=""; mData.push(i); } }); }else{ mData.push(item); } }); console.info('menusTree:',mData); commit('SET_menus', mData); return mData; }); }, //取左侧快速 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; await getLeastRecentlyUsed(me.state.user.id).then(res => { const data = res.data.dataPack.rows; commit('SET_latelyNavs', data); return data; }); }, //取功能权限 async getPowers({ commit, state }) { await getPermissions(this.state.user.id).then(res => { const data = res.data.dataPack.rows; commit('SET_powerList', [...data]); }); }, } } export default portal