index.js 2.1 KB

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