美文网首页
2020-10-21

2020-10-21

作者: Rascar | 来源:发表于2020-10-21 16:04 被阅读0次
import Vue from 'vue'
import Router from 'vue-router'
import Menu from "@/pages/back/menu"
import MenuIndex from "@/pages/back/index"
// 登录页面
const Login = () => import("../pages/back/login/index")

Vue.use(Router)

const router = new Router({
  hasAddRouter: false,
  routes: [
    {
      path: '/',
      name: 'Index',
      redirect: '/login'
    },
    {
      path: '/login',
      name: 'Login',
      component: Login
    }
  ]
})

router.beforeEach((to, from, next) => {
  console.log(next)
  // 判断是否为需要判断加载路由
  if (isLoadRouter(to.path)) {
    // 判断是否已经加载菜单
    if (!router.hasAddRouter) {
      // 判断是否已经加载菜单到本地
      let menuListStr = localStorage.getItem("menuList");
      if (menuListStr) {
        let menuList = JSON.parse(menuListStr);
        let menuChildren = []
        menuList.forEach(item => {
          let children = item.children
          if (children) {
            children.forEach(menu => {
              let component = getComponent(menu.viewPath)
              let child = {
                name: menu.menuCode,
                path: menu.menuPath,
                component: component
                ,meta: {
                  title: menu.menuName
                }
              }
              menuChildren.push(child)
            })
          }
        })
        
        let menuData = {
          // 后台菜单首页
          path: '/menu',
          name: 'menu',
          component: Menu,
          children: [
            {
              name: 'MenuIndex',
              path: '/',
              component: MenuIndex
            }
            // 系统菜单
            ,...menuChildren
          ]
        }
        // 添加路由
        router.addRoutes([menuData])
        // 修改添加路由标记
        router.hasAddRouter = true
        // 替换路由
        next({ ...to, replace: true });
      } else {
        // 跳转登录页面
        next();
      }
    } else {
      next();
    }
  } else {
    next();
  }

  console.log("----------- init router -----------")
})

// 判断路径是否为不需要加载动态路由路径(登录/登出)
function isLoadRouter(path) {
  let loadRouterArr = ['/login', '/']
  let isLoadRouter = false;
  let index = loadRouterArr.findIndex((val,i,arr)=>{
    return val == path
  });
  if (index < 0)
    isLoadRouter = true
  return isLoadRouter;
}

// 获取引用对象
function getComponent(viewPath) {
  const path = viewPath
  return () => import(`@/pages/back/${path}`)
}

export default router

相关文章

  • ffmpeg_sample解读_demuxing_decoing

    title: ffmpeg_sample解读_demuxing_decoingdate: 2020-10-21 1...

  • ffmpeg_sample解读_decode_audio

    title: ffmpeg_sample解读_decode_audiodate: 2020-10-21 10:15...

  • ffmpeg_sample解读_avio_reading

    title: ffmpeg_sample解读_avio_readingdate: 2020-10-21 10:15...

  • 2020-10-20

    【上线申请】fcbox-golden-eye-web_v2.5.0 预计发布时间: 2020-10-21 21:0...

  • MFC编程---工程创建&窗口分割

    2020-10-21 运行环境:VS2015 / VS2017 / VS2019 一.工程创建 1. 打开VS20...

  • 鉴峰丨错过

    [连续签到第1017天] 2020-10-21 周三 年轻时, 总觉得不应错过事业,机会,情感。 其实, 你我错过...

  • 2020-10-21

    中原焦点团队祝澜 1029天 2020-10-21 今天中午不午休,和几个老师相约去龙亭公园赏菊。看到如此多的...

  • 平衡

    我怎么如此幸运-重生53-戴红霞(2020-10-21) 我怎么如此幸运-平衡 1.我怎么如此幸运特别佩服舅舅今天...

  • 2020-10-22

    2020-10-21 姓名 :曹静杰 企业名称 : 辽宁辽阳丛迪服装有限公司 组别 388期 反省1组 志工529...

  • 2020-10-21

    2020-10-21日 今天开始,重启我的日记之路,坚持看见自己,坚持看见孩子。 今天晚上给儿子读《窗边的小豆豆》...

网友评论

      本文标题:2020-10-21

      本文链接:https://www.haomeiwen.com/subject/izkemktx.html