123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- import store from "store";
- import { Message } from "element-ui";
- import { deepTree, revDeepTree, isArray, isEmpty } from "cl-admin/utils";
- import { revisePath } from "cool/modules/base/utils";
- 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: []
- };
- // 匹配存储的模块视图
- let m = getters.moduleViews.find((m) => m.moduleName === r.moduleName);
- 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);
- }
- }
- };
|