import Vue from 'vue'
|
import Router from 'vue-router'
|
import routeJson from './route.json'
|
|
Vue.use(Router)
|
|
/* Layout */
|
import Layout from '@/views/layout/Layout'
|
|
/** note: Submenu only appear when children.length>=1
|
* detail see https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
|
**/
|
|
/**
|
* hidden: true if `hidden:true` will not show in the sidebar(default is false)
|
* alwaysShow: true if set true, will always show the root menu, whatever its child routes length
|
* if not set alwaysShow, only more than one route under the children
|
* it will becomes nested mode, otherwise not show the root menu
|
* redirect: noredirect if `redirect:noredirect` will no redirect in the breadcrumb
|
* name:'router-name' the name is used by <keep-alive> (must set!!!)
|
* meta : {
|
perms: ['GET /aaa','POST /bbb'] will control the page perms (you can set multiple perms)
|
title: 'title' the name show in submenu and breadcrumb (recommend set)
|
icon: 'svg-name' the icon show in the sidebar,
|
noCache: true if true ,the page will no be cached(default is false)
|
}
|
**/
|
export const constantRouterMap = [
|
{
|
path: '/redirect',
|
component: Layout,
|
hidden: true,
|
children: [
|
{
|
path: '/redirect/:path*',
|
component: () => import('@/views/redirect/index')
|
}
|
]
|
},
|
{
|
path: '/login',
|
component: () => import('@/views/login/index'),
|
hidden: true
|
},
|
{
|
path: '/auth-redirect',
|
component: () => import('@/views/login/authredirect'),
|
hidden: true
|
},
|
{
|
path: '/404',
|
component: () => import('@/views/errorPage/404'),
|
hidden: true
|
},
|
{
|
path: '/401',
|
component: () => import('@/views/errorPage/401'),
|
hidden: true
|
},
|
{
|
path: '',
|
component: Layout,
|
redirect: 'dashboard',
|
children: [
|
{
|
path: 'dashboard',
|
component: () => import('@/views/dashboard/index'),
|
name: 'Dashboard',
|
meta: { title: 'dashboard', icon: 'dashboard', noCache: true }
|
}
|
]
|
}
|
]
|
|
export default new Router({
|
scrollBehavior: () => ({ y: 0 }),
|
routes: constantRouterMap
|
})
|
|
const parseJson = () => {
|
const mapArray = routeJson
|
for (let i = 0; i < mapArray.length; i++) {
|
const item = mapArray[i]
|
item.component = Layout
|
if (item.children && item.children.length > 0) {
|
for (let j = 0; j < item.children.length; j++) {
|
const childrenItem = item.children[j]
|
childrenItem.component = () => import(`@/views${childrenItem.page}`)
|
}
|
}
|
}
|
return mapArray
|
}
|
|
export const asyncRouterMap = parseJson()
|