2021-02-28 01:55:04 +08:00
|
|
|
|
import store from "store";
|
|
|
|
|
import { Message } from "element-ui";
|
|
|
|
|
import { deepTree, revDeepTree, isArray, isEmpty } from "cl-admin/utils";
|
2021-02-28 22:24:54 +08:00
|
|
|
|
import { revisePath } from "cool/modules/base/utils";
|
2021-02-28 01:55:04 +08:00
|
|
|
|
import router from "@/router";
|
|
|
|
|
import { menuList } from "@/config/env";
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
state: {
|
|
|
|
|
// 视图路由,type=1
|
|
|
|
|
routes: store.get("viewRoutes") || [],
|
|
|
|
|
// 树形菜单
|
|
|
|
|
group: store.get("menuGroup") || [],
|
|
|
|
|
// showAMenu 模式下,顶级菜单的序号
|
|
|
|
|
index: 0,
|
|
|
|
|
// 左侧菜单
|
|
|
|
|
menu: [],
|
|
|
|
|
// 权限列表
|
|
|
|
|
permission: []
|
|
|
|
|
},
|
|
|
|
|
getters: {
|
|
|
|
|
// 树形菜单列表
|
|
|
|
|
menuGroup: (state) => state.group,
|
|
|
|
|
// 左侧菜单
|
|
|
|
|
menuList: (state) => state.menu,
|
|
|
|
|
// 视图路由
|
|
|
|
|
routes: (state) => state.routes,
|
|
|
|
|
// 权限列表
|
|
|
|
|
permission: (state) => state.permission
|
|
|
|
|
},
|
|
|
|
|
actions: {
|
|
|
|
|
// 设置菜单、权限
|
|
|
|
|
permMenu({ commit, state, getters }) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
const next = (res) => {
|
|
|
|
|
if (!isArray(res.menus)) {
|
|
|
|
|
res.menus = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!isArray(res.perms)) {
|
|
|
|
|
res.perms = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const routes = res.menus
|
|
|
|
|
.filter((e) => e.type != 2)
|
|
|
|
|
.map((e) => {
|
|
|
|
|
let r = {
|
|
|
|
|
moduleName:
|
|
|
|
|
e.moduleName || (e.router || "").substr(1).replace(/\//g, "-"),
|
|
|
|
|
id: e.id,
|
|
|
|
|
parentId: e.parentId,
|
|
|
|
|
path: revisePath(e.router || e.id),
|
|
|
|
|
viewPath: e.viewPath,
|
|
|
|
|
type: e.type,
|
|
|
|
|
name: e.name,
|
|
|
|
|
icon: e.icon,
|
|
|
|
|
orderNum: e.orderNum,
|
|
|
|
|
isShow: isEmpty(e.isShow) ? true : e.isShow,
|
|
|
|
|
meta: {
|
|
|
|
|
label: e.name,
|
|
|
|
|
keepAlive: e.keepAlive
|
|
|
|
|
},
|
|
|
|
|
children: []
|
|
|
|
|
};
|
|
|
|
|
|
2021-02-28 22:24:54 +08:00
|
|
|
|
// 匹配存储的模块视图
|
|
|
|
|
let m = getters.moduleViews.find((m) => m.moduleName === r.moduleName);
|
2021-02-28 01:55:04 +08:00
|
|
|
|
|
|
|
|
|
if (m) {
|
|
|
|
|
// 注册组件实例
|
|
|
|
|
r.component = m.component;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return r;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 转成树形菜单
|
|
|
|
|
const menuGroup = deepTree(routes);
|
|
|
|
|
|
|
|
|
|
// 设置权限
|
|
|
|
|
commit("SET_PERMIESSION", res.perms);
|
|
|
|
|
// 设置菜单组
|
|
|
|
|
commit("SET_MENU_GROUP", menuGroup);
|
|
|
|
|
// 设置视图路由
|
|
|
|
|
commit(
|
|
|
|
|
"SET_VIEW_ROUTES",
|
|
|
|
|
routes.filter((e) => e.type == 1)
|
|
|
|
|
);
|
|
|
|
|
// 设置菜单
|
|
|
|
|
commit("SET_MENU_LIST", state.index);
|
|
|
|
|
|
|
|
|
|
resolve(menuGroup);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 监测自定义菜单
|
|
|
|
|
if (!getters.conf.customMenu) {
|
|
|
|
|
this.$service.common
|
|
|
|
|
.permMenu()
|
|
|
|
|
.then((res) => {
|
|
|
|
|
next(res);
|
|
|
|
|
})
|
|
|
|
|
.catch((err) => {
|
|
|
|
|
Message.error("菜单加载异常");
|
|
|
|
|
console.error(err);
|
|
|
|
|
reject(err);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
next({
|
|
|
|
|
menus: revDeepTree(menuList)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mutations: {
|
|
|
|
|
// 设置树形菜单列表
|
|
|
|
|
SET_MENU_GROUP(state, list) {
|
|
|
|
|
state.group = list;
|
|
|
|
|
store.set("menuGroup", list);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 设置视图路由
|
|
|
|
|
SET_VIEW_ROUTES(state, list) {
|
|
|
|
|
router.$plugin.addViews(list);
|
|
|
|
|
|
|
|
|
|
state.routes = list;
|
|
|
|
|
store.set("viewRoutes", list);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 设置左侧菜单
|
|
|
|
|
SET_MENU_LIST(state, index) {
|
|
|
|
|
const { showAMenu } = this.getters.conf;
|
|
|
|
|
|
|
|
|
|
if (showAMenu) {
|
|
|
|
|
const { children = [] } = state.group[index] || {};
|
|
|
|
|
|
|
|
|
|
state.index = index;
|
|
|
|
|
state.menu = children;
|
|
|
|
|
} else {
|
|
|
|
|
state.menu = state.group;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 设置权限
|
|
|
|
|
SET_PERMIESSION(state, list) {
|
|
|
|
|
state.permission = list;
|
|
|
|
|
store.set("permission", list);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|