import { getMenus, getQuickNav,getLeastRecentlyUsed,getPermissions } from '@admin/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