You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.0 KiB
JavaScript
90 lines
2.0 KiB
JavaScript
import Vue from 'vue'
|
|
import VueRouter from 'vue-router'
|
|
|
|
const files = require.context('@/views', true, /-router\.js$/)
|
|
let allRouter = [];
|
|
// 匹配成功的名字数组
|
|
files.keys().map(key => {
|
|
// 获取default
|
|
// console.log('模块', key, files(key).default)
|
|
// 整合所有模块路由
|
|
allRouter = allRouter.concat(files(key).default)
|
|
})
|
|
allRouter.sort((a, b) => {
|
|
return a.meta.sort - b.meta.sort
|
|
})
|
|
|
|
console.log(allRouter)
|
|
|
|
Vue.use(VueRouter)
|
|
|
|
|
|
// 避免冗余导航 (重复点击菜单栏报错问题)
|
|
const originalPush = VueRouter.prototype.push
|
|
VueRouter.prototype.push = function push(location) {
|
|
return originalPush.call(this, location).catch(err => err)
|
|
}
|
|
|
|
const routes = [{
|
|
path: '/',
|
|
redirect: {
|
|
name: 'login'
|
|
},
|
|
component: () => import('../views/main.vue'),
|
|
children: [
|
|
...allRouter
|
|
]
|
|
},
|
|
{
|
|
path: '/login',
|
|
name: 'login',
|
|
component: () => import('../views/login.vue')
|
|
},
|
|
{
|
|
path: '*',
|
|
name: '404',
|
|
component: () => import('../views/404.vue')
|
|
}
|
|
]
|
|
|
|
const router = new VueRouter({
|
|
routes
|
|
})
|
|
|
|
router.beforeEach((to, from, next) => {
|
|
let userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}')
|
|
// 校验是否登录
|
|
if (userInfo.id) {
|
|
// console.log(to)
|
|
if (!to.name) next();
|
|
|
|
if (to.name.startsWith('center')) {
|
|
next()
|
|
return
|
|
}
|
|
if (userInfo.permissionList.some((item) => {
|
|
return item.rights === to.name
|
|
})) {
|
|
next()
|
|
} else {
|
|
if (to.name === 'login') {
|
|
next()
|
|
} else {
|
|
Vue.prototype.$message.info('没有权限')
|
|
next(false)
|
|
}
|
|
}
|
|
} else {
|
|
if (to.name === 'login') {
|
|
next()
|
|
} else if (to.name !== 'login') {
|
|
Vue.prototype.$message.info('请先登录')
|
|
next('/login')
|
|
} else {
|
|
next('/login')
|
|
}
|
|
}
|
|
})
|
|
|
|
export default router
|