Pārlūkot izejas kodu

更新首页权限问题

lex-xin 4 gadi atpakaļ
vecāks
revīzija
7f887ffb2f
2 mainītis faili ar 28 papildinājumiem un 5 dzēšanām
  1. 1 1
      src/components/tab-router/index.vue
  2. 27 4
      src/permission.js

+ 1 - 1
src/components/tab-router/index.vue

@@ -42,7 +42,7 @@ export default {
     getAllPanel() {
       const data = {};
       const routes = [];
-      this.panels = this.$slots.default.filter((item) => {
+      this.panels = (this.$slots.default || []).filter((item) => {
         const isPanel = item.tag && item.tag.indexOf("ElTabPane") > -1;
         if (isPanel && item.child) {
           data[item.child.name] = item.child;

+ 27 - 4
src/permission.js

@@ -38,20 +38,37 @@ router.onError((error) => {
   }
 });
 
+function getFirstMenu(routes) {
+  let firstMenu = null
+  routes.forEach(item => {
+    if(!firstMenu && item.children.length > 0) {
+      item.children.forEach(child => {
+        if(!firstMenu && !child.hidden) {
+          firstMenu = item.path + '/' + child.path
+        }
+      })
+    }
+  })
+  console.log(firstMenu)
+  return firstMenu
+}
+
+
 router.beforeEach(async (to, from, next) => {
+  console.log(to)
   // from.query = to.query
   // start progress bar
   NProgress.start()
   // set page title
   // document.title = getPageTitle(to.meta.title)
   document.title = getPageTitle()
-
   // determine whether the user has logged in
   const hasToken = getToken()
   if (hasToken) {
     if (to.path === '/login') {
       // 如果有tonken直接跳转到首页
-      next({ path: '/' })
+        next({ path: '/' })
+
       NProgress.done()
     } else {
       const hasGetUserInfo = store.getters.name
@@ -61,7 +78,7 @@ router.beforeEach(async (to, from, next) => {
 
         // 动态添加可访问的路由
         // router.addRoutes(accessRoutes)
-        next()
+          next()
       } else {
         try {
           // 异步获取用户信息
@@ -72,7 +89,13 @@ router.beforeEach(async (to, from, next) => {
           router.addRoutes(accessRoutes)
           // 确保addroutes完整的hack方法
           // 设置replace:true,这样导航就不会留下历史记录。
-          next({ ...to, replace: true })
+          let firstMenu = getFirstMenu(accessRoutes)
+          console.log(3, firstMenu, to)
+          if(to.path == '/main/main') {
+            next({ path: firstMenu, replace: true })
+          } else {
+            next({ ...to, replace: true })
+          }
         } catch (error) {
           // remove token and go to login page to re-login
           await store.dispatch('user/resetToken')