Browse Source

侧边菜单栏的加载bug

luyanan 6 years ago
parent
commit
c348f666c2

+ 31 - 32
src/permission.js

@ -10,48 +10,47 @@ NProgress.configure({ showSpinner: false })// NProgress Configuration
10 10
function hasPermission(roles, permissionRoles) {
11 11
  if (roles.indexOf('1') >= 0) return true
12 12
  if (!permissionRoles) return true
13
  return roles.some(role => permissionRoles.indexOf('1') >= 0)
13
  return roles.some(role => permissionRoles.indexOf(role) >= 0)
14 14
}
15 15
16 16
const whiteList = ['/login', '/findPwd'] // 不重定向白名单
17
17 18
router.beforeEach((to, from, next) => {
18 19
  NProgress.start()
19
  setTimeout(() => {
20
    if (getCookiesName()) {
21
      if (to.path === '/login') {
22
        console.log(3333)
23
        next({ path: '/' })
24
        NProgress.done()
25
      } else {
26
        if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取user_info信息
27
          store.dispatch('GetUserInfo').then(res => { // 拉取user_info
28
            const roles = [res.data.type.toString()]
29
            store.dispatch('GenerateRoutes', { roles }).then(() => { // 根据roles权限生成可访问路由表
30
              router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
31
              next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
32
            })
33
          }).catch((err) => {
34
            store.dispatch('FedLogOut').then(() => {
35
              Message.error(err || '登录状态失效,请重新登录')
36
              next({ path: '/' })
37
            })
20
  if (getCookiesName()) {
21
    if (to.path === '/login') {
22
      next({ path: '/' })
23
      NProgress.done()
24
    } else {
25
      if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息
26
        console.log(5555)
27
        store.dispatch('GetUserInfo').then(res => { // 拉取user_info
28
          const roles = [res.data.type.toString()]
29
          store.dispatch('GenerateRoutes', { roles }).then(() => { // 根据roles权限生成可访问的路由表
30
            router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
31
            next({ ...to, replace: true })
32
          })
33
        }).catch((err) => {
34
          store.dispatch('FedLogOut').then(() => {
35
            Message.error(err || '登录状态失效,请重新登录')
36
            next({ path: '/' })
38 37
          })
39
        } else {
40
          console.log(4444)
41
          if (hasPermission(store.getters.roles, to.meta.roles)) {
42
            next()
43
          }
38
        })
39
      } else {
40
        console.log(4444)
41
        if (hasPermission(store.getters.roles, to.meta.roles)) {
42
          next()
44 43
        }
45 44
      }
45
    }
46
  } else {
47
    if (whiteList.indexOf(to.path) !== -1) {
48
      next()
46 49
    } else {
47
      if (whiteList.indexOf(to.path) !== -1) {
48
        next()
49
      } else {
50
        next('/login')
51
        NProgress.done()
52
      }
50
      next('/login')
51
      NProgress.done()
53 52
    }
54
  }, 1000)
53
  }
55 54
})
56 55
57 56
router.afterEach(() => {

+ 18 - 17
src/router/index.js

@ -49,7 +49,7 @@ export const constantRouterMap = [
49 49
    }]
50 50
  },
51 51
  {
52
    path: '',
52
    path: 'bridgesConsole',
53 53
    hidden: true,
54 54
    component: Layout,
55 55
    name: 'bridgesConsole',
@ -61,8 +61,8 @@ export const constantRouterMap = [
61 61
      {
62 62
        path: 'bridgeDetail',
63 63
        name: 'bridgeDetail',
64
        component: () => import('@/views/bridgesConsole/bridgeDetail/index')
65
        // meta: { noCache: true }
64
        component: () => import('@/views/bridgesConsole/bridgeDetail/index'),
65
        meta: { noCache: true }
66 66
      },
67 67
      {
68 68
        path: 'danger',
@ -95,21 +95,8 @@ export const constantRouterMap = [
95 95
          noCache: true }
96 96
      }
97 97
    ]
98
  }
99
]
100
101
// 实例化vue的时候只挂载constantRouter
102
103
export default new Router({
104
  // mode: 'history', //后端支持可开
105
  scrollBehavior: () => ({ y: 0 }),
106
  routes: constantRouterMap
107
})
108
109
// 异步挂载的路由
110
// 动态需要根据权限加载的路由表
98
  },
111 99
112
export const asyncRouterMap = [
113 100
  {
114 101
    path: '',
115 102
    component: Layout,
@ -170,3 +157,17 @@ export const asyncRouterMap = [
170 157
171 158
  { path: '*', redirect: '/404', hidden: true }
172 159
]
160
161
// 实例化vue的时候只挂载constantRouter
162
163
export default new Router({
164
  // mode: 'history', //后端支持可开
165
  scrollBehavior: () => ({ y: 0 }),
166
  routes: constantRouterMap
167
})
168
169
// 异步挂载的路由
170
// 动态需要根据权限加载的路由表
171
172
export const asyncRouterMap = [
173
]

+ 5 - 0
src/views/dashboard/admin/index.vue

@ -9,6 +9,11 @@
9 9
<script>
10 10
export default {
11 11
  name: 'dashboard-admin',
12
  watch: {
13
    $route(to, from) {
14
      console.log(to.path)
15
    }
16
  },
12 17
  created() {
13 18
    // this.toPath()
14 19
  },

+ 1 - 1
src/views/dashboard/other/index.vue

@ -114,7 +114,7 @@ export default {
114 114
    },
115 115
    goToDashboardC(id, name) {
116 116
      this.$router.push({
117
        path: '/bridgeDetail',
117
        name: 'bridgeDetail',
118 118
        query: { id: id, name: name }
119 119
      })
120 120
    },

+ 2 - 2
src/views/layout/components/Sidebar/index.vue

@ -9,7 +9,7 @@
9 9
      text-color="#bfcbd9"
10 10
      active-text-color="#409EFF"
11 11
    >
12
      <sidebar-item v-for="route in permission_routers" :key="route.name" :item="route" :base-path="route.path"></sidebar-item>
12
      <sidebar-item v-for="route in routes" :key="route.name" :item="route" :base-path="route.path"></sidebar-item>
13 13
    </el-menu>
14 14
  </el-scrollbar>
15 15
</template>
@ -22,7 +22,7 @@ export default {
22 22
  components: { SidebarItem },
23 23
  computed: {
24 24
    ...mapGetters([
25
      'permission_routers',
25
      // 'permission_routers',
26 26
      'sidebar'
27 27
    ]),
28 28
    routes() {