/** * @description 路由拦截状态管理,目前两种模式:all模式与intelligence模式,其中partialRoutes是菜单暂未使用 */ import { asyncRoutes, constantRoutes } from '@/router' import { getRouterList } from '@/api/router' import { convertRouter, filterRoutes } from '@/utils/routes' import { ElMessage } from 'element-plus' import store from '..' // import { Layout } from 'ant-design-vue' const state = () => ({ routes: [], partialRoutes: [], }) const getters = { routes: (state) => state.routes, partialRoutes: (state) => state.partialRoutes, } const mutations = { setRoutes(state, routes) { state.routes = routes }, setPartialRoutes(state, routes) { state.partialRoutes = routes }, } const actions = { /** * @description intelligence模式设置路由 * @param {*} { commit } * @returns */ async setRoutes({ commit }) { const finallyRoutes = filterRoutes([...constantRoutes, ...asyncRoutes]) commit('setRoutes', finallyRoutes) return [...asyncRoutes] }, /** * @description all模式设置路由 * @param {*} { commit } * @returns */ async setAllRoutes({ commit }) { let { data } = await getRouterList(); if (data.length == 0) { store.state.auth = 0 ElMessage.warning('此角色暂无分配权限,请先联系超级管理员分配权限 ! ') } else { store.state.auth = 1 } data.forEach(function (item) { if (item.children.length > 1) { item.children.forEach(function (i) { i.meta.icon = '' }) } }) const asyncRoutes = convertRouter(data) const finallyRoutes = filterRoutes([...constantRoutes, ...asyncRoutes]) commit('setRoutes', finallyRoutes) return [...asyncRoutes] }, /** * @description 画廊布局、综合布局设置路由 * @param {*} { commit } * @param accessedRoutes 画廊布局、综合布局设置路由 */ setPartialRoutes({ commit }, accessedRoutes) { commit('setPartialRoutes', accessedRoutes) }, } export default { state, getters, mutations, actions }