permission.js 1.76 KB
import { constantRoutes } from '@/router'
import Layout from '@/views/homePage/HomePage.vue'
import baseRouters from '@/router/modules/base'

const permission = {
  state: {
    routes: [],
    addRoutes: [],
    defaultRoutes: [],
    topbarRouters: [],
    sidebarRouters: []
  },
  mutations: {
    SET_ROUTES: (state, routes) => {
      state.addRoutes = routes
      state.routes = constantRoutes.concat(routes)
    },
    SET_DEFAULT_ROUTES: (state, routes) => {
      state.defaultRoutes = constantRoutes.concat(routes)
    },
    SET_TOPBAR_ROUTES: (state, routes) => {
      state.topbarRouters = routes
    },
    SET_SIDEBAR_ROUTERS: (state, routes) => {
      state.sidebarRouters = routes
    },
  },
  actions: {
    generateRoutes({ commit }, route) {
      return new Promise(resolve => {
        let accessedRoutes
        let dtRoutes = {
          path: '/',
          component: Layout,
          redirect: '/homePage',
          children: [
            ...baseRouters,
            ...route,
            {
              path: '/404',
              component: (resolve) => require(['@/views/error-page/404'], resolve),
              hidden: true
            },
          ]
        };
        accessedRoutes = [
          dtRoutes,
          {
            path: '*',
            redirect: '/404',
            hidden: true
          }
        ]
        console.log(accessedRoutes, baseRouters);
        commit('SET_ROUTES', accessedRoutes)
        resolve(accessedRoutes)
      })
    }
  }
}



export const loadView = (view) => {
  if (process.env.NODE_ENV === 'development') {
    return (resolve) => require([`@/views/${view}`], resolve)
  } else {
    // 使用 import 实现生产环境的路由懒加载
    return () => import(`@/views/${view}`)
  }
}

export default permission