Browse Source

侧边菜单栏的加载bug

luyanan 6 years ago
parent
commit
c348f666c2

+ 31 - 32
src/permission.js

10
function hasPermission(roles, permissionRoles) {
10
function hasPermission(roles, permissionRoles) {
11
  if (roles.indexOf('1') >= 0) return true
11
  if (roles.indexOf('1') >= 0) return true
12
  if (!permissionRoles) return true
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
const whiteList = ['/login', '/findPwd'] // 不重定向白名单
16
const whiteList = ['/login', '/findPwd'] // 不重定向白名单
17
17
router.beforeEach((to, from, next) => {
18
router.beforeEach((to, from, next) => {
18
  NProgress.start()
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
    } else {
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
router.afterEach(() => {
56
router.afterEach(() => {

+ 18 - 17
src/router/index.js

49
    }]
49
    }]
50
  },
50
  },
51
  {
51
  {
52
    path: '',
52
    path: 'bridgesConsole',
53
    hidden: true,
53
    hidden: true,
54
    component: Layout,
54
    component: Layout,
55
    name: 'bridgesConsole',
55
    name: 'bridgesConsole',
61
      {
61
      {
62
        path: 'bridgeDetail',
62
        path: 'bridgeDetail',
63
        name: 'bridgeDetail',
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
        path: 'danger',
68
        path: 'danger',
95
          noCache: true }
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
    path: '',
101
    path: '',
115
    component: Layout,
102
    component: Layout,
170
157
171
  { path: '*', redirect: '/404', hidden: true }
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
<script>
9
<script>
10
export default {
10
export default {
11
  name: 'dashboard-admin',
11
  name: 'dashboard-admin',
12
  watch: {
13
    $route(to, from) {
14
      console.log(to.path)
15
    }
16
  },
12
  created() {
17
  created() {
13
    // this.toPath()
18
    // this.toPath()
14
  },
19
  },

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

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

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

9
      text-color="#bfcbd9"
9
      text-color="#bfcbd9"
10
      active-text-color="#409EFF"
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
    </el-menu>
13
    </el-menu>
14
  </el-scrollbar>
14
  </el-scrollbar>
15
</template>
15
</template>
22
  components: { SidebarItem },
22
  components: { SidebarItem },
23
  computed: {
23
  computed: {
24
    ...mapGetters([
24
    ...mapGetters([
25
      'permission_routers',
25
      // 'permission_routers',
26
      'sidebar'
26
      'sidebar'
27
    ]),
27
    ]),
28
    routes() {
28
    routes() {