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