Blame view

wenjuan/src/permission.js 2.87 KB
e5b57447   杨鑫   '分包问卷'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  import router from './router'
  import store from './store'
  import {
    Message
  } from 'element-ui'
  import NProgress from 'nprogress' // progress bar
  import 'nprogress/nprogress.css' // progress bar style
  import {
    getUserId,
    getToken
  } from '@/utils/auth' // get token from cookie
  import {
    adminBuild
  } from '@/api/user.js'
  import { filterAsyncRouter } from '@/store/modules/permission.js'
  import getPageTitle from '@/utils/get-page-title'
  
  NProgress.configure({
    showSpinner: false
  }) // NProgress Configuration
  
  const whiteList = ['/login'] // no redirect whitelist
  
d64cd58f   wesley88   上传验收小程序
24
  router.beforeEach(async (to, from, next) => {
e5b57447   杨鑫   '分包问卷'
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    // start progress bar
    NProgress.start()
    // set page title
    document.title = getPageTitle(to.meta.title)
  
    // determine whether the user has logged in
    const hasToken = getToken()
  
    if (hasToken) {
      if (to.path === '/login') {
        // if is logged in, redirect to the home page
        next({
          path: '/'
        })
        NProgress.done()
      } else {
e5b57447   杨鑫   '分包问卷'
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
        // if (store.getters.routers.length === 0) {}
        // const hasGetUserInfo = store.getters.name
        // if (hasGetUserInfo) {
        //   console.log('hasGetUserInfo')
        //   // console.log('hasGetUserInfo', hasGetUserInfo)
        //   next()
        // }
        if (store.getters.routers.length === 0) { // 条件加载
          loadMenus(next, to)
  
          store.commit('SET_LOAD', true)
        } else if (!store.getters.hasLoad) { // 是否加载过动态路由
          // // 修改hasLoad为false,防止死循环
  
          store.commit('SET_LOAD', true)
          loadMenus(next, to)
        } else {
e5b57447   杨鑫   '分包问卷'
58
          try {
e5b57447   杨鑫   '分包问卷'
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
            next()
          } catch (error) {
            // remove token and go to login page to re-login
            await store.dispatch('user/resetToken')
            Message.error(error || 'Has Error')
            next(`/login?redirect=${to.path}`)
            NProgress.done()
          }
        }
      }
    } else {
      /* has no token*/
      if (whiteList.indexOf(to.path) !== -1) {
        // in the free login whitelist, go directly
        console.log('no token')
        next()
      } else {
        // other pages that do not have permission to access are redirected to the login page.
        next(`/login?redirect=${to.path}`)
        NProgress.done()
      }
    }
  })
  
  export const loadMenus = (next, to) => {
    adminBuild({ platformUserId: getUserId() }).then(res => {
      const asyncRouter = filterAsyncRouter(res.data)
      // 画布设置
      asyncRouter.forEach(item => {
e5b57447   杨鑫   '分包问卷'
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
        if (item.path.indexOf('.html') !== -1) {
          item.path = item.path + '?' + getToken()
        }
      })
      // 异常跳转添加
      asyncRouter.push({ path: '*', redirect: '/404', hidden: true })
      store.dispatch('GenerateRoutes', asyncRouter).then(() => { // 存储路由
        router.addRoutes(asyncRouter) // 动态添加可访问路由表
        next({ ...to, replace: true })
      })
    })
  }
  
  router.afterEach(() => {
    // finish progress bar
    NProgress.done()
  })