import Vue from 'vue' import VueRouter from 'vue-router' // 进度条 import NProgress from 'nprogress' import 'nprogress/nprogress.css' import store from '../../store/index' // import util from '@/libs/util.js' // 路由数据 import routes from './routes' Vue.use(VueRouter) // 导出路由 在 main.js 里使用 const router = new VueRouter({ routes }) /** * 路由拦截 * 权限验证 */ router.beforeEach((to, from, next) => { // 进度条 NProgress.start() // 验证当前路由所有的匹配中是否需要有登录验证的 // next() if (to.matched.some(r => r.meta.auth)) { const token = sessionStorage.getItem('token') if (token) { next() } else { // 没有登录的时候跳转到登录界面 // 携带上登陆成功之后需要跳转的页面完整路径 next({ name: 'login', query: { redirect: to.fullPath } }) NProgress.done() } } else { if (from.name === 'login') { // 防止无限循环 if (to.name === 'login') { next() return } next({ path: '/index' }) } else { // 不需要身份校验 直接通过 next() } } }) router.afterEach(to => { // 进度条 NProgress.done() // 多页控制 打开新的页面 store.dispatch('d2admin/page/open', to) // 更改标题 // util.title(to.meta.title) }) export default router