index.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import * as vueRouter from 'vue-router'
  2. import baseData from './modules/base'
  3. import { getToken } from '~src/api/util/auth'
  4. import { getRouterData, getTokenRouter } from './routers'
  5. import NProgress from 'nprogress'
  6. import '~src/styles/app/nprogress.scss'
  7. import { getStoreValue } from '~uti/storage'
  8. import website from '~src/config/index'
  9. //设置路由数据
  10. const router = vueRouter.createRouter({
  11. history: vueRouter.createWebHashHistory(),
  12. routes: baseData,
  13. })
  14. //路由拦截
  15. router.beforeResolve(async (to) => {
  16. NProgress.start()
  17. const token = getToken(), auth = ['/login-main', '/new-login', '/login', '/auth', '/auth-token']
  18. if (auth.indexOf(to.path) !== -1) {
  19. return true
  20. } else if (!token) {
  21. return '/login-main'
  22. } else if (getTokenRouter(to.path)) {
  23. return true
  24. } else {
  25. //判断角色组
  26. const projectId = getStoreValue('projectId')
  27. const role_id = getStoreValue('role_id')
  28. if (role_id === website.role_id) {
  29. //如果等于总管理,判断项目ID(总管理时,进入其他页面,必须先选择项目)
  30. if (!projectId) {
  31. window.$message?.warning('请先选择项目')
  32. return '/user/project'
  33. } else {
  34. const res = await getRouterData(to.name)
  35. if (res) {
  36. return true
  37. } else {
  38. return '/login-main'
  39. }
  40. }
  41. } else {
  42. const res = await getRouterData(to.name)
  43. if (res) {
  44. return true
  45. } else {
  46. return '/login-main'
  47. }
  48. }
  49. }
  50. })
  51. router.afterEach((to) => {
  52. //根据当前跳转的路由设置显示在浏览器标签的title
  53. let pageTitle = to.meta['title']
  54. if (to.path !== '/') {
  55. window.document.title = pageTitle ? pageTitle : ''
  56. } else {
  57. window.document.title = ''
  58. }
  59. window.scrollTo(0, 0)
  60. NProgress.done()
  61. })
  62. export function setupRouter(app) {
  63. app.use(router)
  64. return router
  65. }
  66. export default router