首先将路由更改,由路由变成配置文件

                           原来结构                            更改后结构

 

 


import Router from 'vue-router'//引用路由
import routerConfig from './router'//引用配置路由地址
Vue.use(Router)//使用路由

let router = new Router(routerConfig)//新建路由

let routesPath = [];//储存路由地址数组
routerConfig.routes[1].children.forEach((val)=>{
  routesPath.push(val.path)//添加地址
})

router.beforeEach((to, from, next) => {
    let enterpriseCode=sessionStorage.getItem('enterpriseCode')||''
    if ( to.path !== '/'&&enterpriseCode=='') {//判断是否登陆后跳转
      next({
        path: '/'
      })
    }else {
      if (sessionStorage.getItem('usermenu')) {
        // 获取跳转路由对应路由配置中的索引值
        let index = routesPath.indexOf(to.path);
        // 获取登录后返回可跳转路由权限
        let menus = JSON.parse(sessionStorage.getItem('usermenu')).menus;
        let menuId = [];
        menus.forEach((val)=>{
          menuId.push(val.vMenuId);
        })
        if (index === -1) {//跳转404
          next();
          return;
        }
        // 匹配系统管理之前的路由
        if (index <= 4 && menuId.includes(index+1)) {
          next();
        }
        // 匹配系统管理之后的路由
        else if(index > 4 && menuId.includes(index+2)) {
          next();
        }
        // 匹配返回的路由权限之外的路由
        else {
          next(from.path);
        }
      }else {
        next();
      }
    }
  })
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

 

Logo

前往低代码交流专区

更多推荐