main.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // import Vue from 'vue'
  2. // import VueRouter from 'vue-router'
  3. // Vue.use(VueRouter)
  4. // import ElementUI from 'element-ui'
  5. // Vue.use(ElementUI)
  6. // import Vuex from 'vuex'
  7. // Vue.use(Vuex)
  8. // import echarts from 'echarts'
  9. // import 'element-ui/lib/theme-chalk/index.css'
  10. import App from './App'
  11. import store from './vuex/store'
  12. // import routes from './routes'
  13. import http from './http'
  14. import port from './port'
  15. import $ from 'jquery'
  16. Vue.prototype.http = http
  17. Vue.prototype.port = port
  18. Vue.prototype.echarts = echarts
  19. import VueClipboard from 'vue-clipboard2'
  20. Vue.use(VueClipboard)
  21. import 'font-awesome/css/font-awesome.min.css'
  22. import './assets/iconfont/iconfont.css'
  23. // const router = new VueRouter({
  24. // routes
  25. // })
  26. import { staffRouter, manageRouter, fixedRouter } from './routes'
  27. import router from './routes'
  28. import NProgress from 'nprogress'
  29. import 'nprogress/nprogress.css'
  30. var addRouFlag = false
  31. router.beforeEach((to, from, next) => {
  32. NProgress.start();
  33. if (to.path == '/register') {
  34. next();
  35. return;
  36. }
  37. if (to.path == '/login') {
  38. sessionStorage.removeItem('user');
  39. }
  40. let user = JSON.parse(sessionStorage.getItem('user'));
  41. if (!user && to.path != '/login') {
  42. next({ path: '/login' })
  43. } else {
  44. if (!addRouFlag) {
  45. if(user != null) {
  46. addRouFlag = true
  47. if(user.role == 0) {
  48. var getRoutes = baseRoleGetRouters(staffRouter, 1);
  49. global.antRouter = fixedRouter.concat(getRoutes);
  50. router.addRoutes(fixedRouter.concat(getRoutes));
  51. router.options.routes = fixedRouter.concat(getRoutes);
  52. router.push({ path: to.path })
  53. } else {
  54. var getRoutes = baseRoleGetRouters(manageRouter, 1);
  55. global.antRouter = fixedRouter.concat(getRoutes);
  56. router.addRoutes(fixedRouter.concat(getRoutes));
  57. router.options.routes = fixedRouter.concat(getRoutes);
  58. router.push({ path: to.path })
  59. }
  60. }
  61. }
  62. next()
  63. }
  64. })
  65. function baseRoleGetRouters(allRoutes, roles) {
  66. // allRoutes是动态路由表
  67. // roles是取到的用户角色,数组
  68. let rightRoutes = allRoutes.filter((route, index) => {
  69. if (true) {
  70. if (route.children && route.children.length) {
  71. route.children = baseRoleGetRouters(route.children, roles)
  72. }
  73. return true
  74. }
  75. return false
  76. })
  77. return rightRoutes
  78. }
  79. function hasPermission(route, roles) {
  80. if (route.meta && route.meta.roles) {
  81. return roles.some(role => route.meta.roles.indexOf(role) >= 0)
  82. } else {
  83. return true
  84. }
  85. }
  86. router.afterEach(() => {
  87. NProgress.done()
  88. })
  89. new Vue({
  90. router,
  91. store,
  92. render: h => h(App)
  93. }).$mount('#app')