import Vue from 'vue'
|
import Router from 'vue-router'
|
|
Vue.use(Router)
|
|
/* Layout */
|
import Layout from '@/layout'
|
|
import demo_router from './demo_router'
|
import system_router from './system_router'
|
import op_router from './op_router'
|
|
/**
|
* 注:子菜单只出现在路线子时。长度> = 1
|
* 详细信息见: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
|
*
|
* hidden: true 项目将不会在侧边栏显示(默认为false)
|
* alwaysShow: true 如果设置为true,将始终显示根菜单
|
* 如果没有设置alwaysShow,当项目有多个子路径时,
|
* 它将变成嵌套模式,否则不会显示根菜单
|
* redirect: noRedirect 如果设置了noRedirect将不会在面包屑中重定向
|
* name:'router-name' <keep-alive>使用该名称(必须设置!!)
|
* meta : {
|
roles: ['admin','editor'] 控制页面角色(可以设置多个角色)s)
|
title: 'title' 在侧边栏和面包屑中显示的名称(推荐设置)
|
icon: 'svg-name'/'el-icon-x' 图标显示在侧边栏
|
breadcrumb: false 项目将隐藏在breadcrumb中(默认为true)
|
activeMenu: '/example/list' 如果设置路径,侧边栏将突出显示您设置的路径
|
}
|
*/
|
|
/**
|
* constantRoutes
|
* 没有权限要求的基本页面
|
* 所有角色都可以访问
|
*/
|
export const constantRoutes = [
|
{
|
path: '/login',
|
component: () => import('@/pages/login/index'),
|
hidden: true
|
},
|
|
{
|
path: '/404',
|
component: () => import('@/pages/404'),
|
hidden: true
|
},
|
|
{
|
path: '/',
|
component: Layout,
|
redirect: '/dashboard',
|
children: [{
|
path: 'dashboard',
|
name: '首页',
|
component: () => import('@/pages/dashboard/index'),
|
meta: { title: '首页', icon: 'dashboard' }
|
}]
|
},
|
|
system_router,
|
demo_router,
|
|
{
|
path: 'external-link',
|
component: Layout,
|
children: [
|
{
|
path: 'https://panjiachen.github.io/vue-element-admin-site/#/',
|
meta: { title: '外链', icon: 'link' },
|
auth: 'external_link'
|
}
|
]
|
},
|
|
// {
|
// path: '/demo',
|
// component: Layout,
|
// children: [
|
// {
|
// path: '/demo',
|
// component: () => import('@/pages/demo/demo'), // Parent router-view
|
// name: 'demo',
|
// meta: { title: 'demo', icon: 'example' }
|
// }
|
// ]
|
// },
|
|
op_router,
|
|
// 404 page must be placed at the end !!!
|
{ path: '*', redirect: '/404', hidden: true }
|
]
|
|
const createRouter = () => new Router({
|
// mode: 'history', // require service support
|
scrollBehavior: () => ({ y: 0 }),
|
routes: constantRoutes
|
})
|
|
const router = createRouter()
|
|
// 守卫,处理keepAlive周期,用isBack标记是否属于从属页面后退
|
router.beforeEach(function(to, from, next) {
|
// 判断是否从从属页面后退
|
if (to.meta.keepAlive && from.meta.activeMenu === to.path) {
|
to.meta.isBack = true
|
} else {
|
to.meta.isBack = false
|
}
|
next(true)
|
})
|
|
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
|
export function resetRouter() {
|
const newRouter = createRouter()
|
router.matcher = newRouter.matcher // reset router
|
}
|
|
export default router
|