| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { constantRoutes } from '@/router'
- /**
- * 深拷贝路由配置,避免修改原始 constantRoutes 对象
- */
- function deepCloneRoutes(routes) {
- return routes.map(route => {
- const newRoute = { ...route }
- if (route.children) {
- newRoute.children = route.children.map(child => ({ ...child }))
- }
- return newRoute
- })
- }
- const state = {
- routes: [],
- sidebarRouters: []
- }
- const mutations = {
- SET_ROUTES: (state, routes) => {
- state.routes = constantRoutes.concat(routes)
- state.sidebarRouters = routes
- }
- }
- const actions = {
- generateRoutes({ commit }) {
- return new Promise(resolve => {
- // 代理端使用constantRoutes作为菜单,过滤hidden的路由
- // 必须使用深拷贝,避免修改原始constantRoutes导致路由匹配异常
- const clonedRoutes = deepCloneRoutes(constantRoutes)
- const accessedRoutes = clonedRoutes.filter(route => {
- if (route.children) {
- route.children = route.children.filter(child => {
- return !child.hidden
- })
- }
- return !route.hidden
- })
- commit('SET_ROUTES', accessedRoutes)
- resolve(accessedRoutes)
- })
- }
- }
- export default {
- namespaced: true,
- state,
- mutations,
- actions
- }
|