index.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import * as vueRouter from 'vue-router'
  2. import baseData from './modules/base'
  3. import { getToken } from '~src/api/auth'
  4. import { getRouterData } from './routers'
  5. import NProgress from 'nprogress'
  6. import '~src/styles/app/nprogress.scss'
  7. import config from '~src/config/index'
  8. //设置路由数据
  9. const router = vueRouter.createRouter({
  10. history: vueRouter.createWebHashHistory(),
  11. routes: baseData,
  12. })
  13. //路由拦截
  14. router.beforeResolve(async (to) => {
  15. NProgress.start()
  16. const token = getToken(), auth = ['/login']
  17. if (auth.indexOf(to.path) !== -1) {
  18. return true
  19. } else if (!token) {
  20. return '/login'
  21. } else {
  22. const res = await getRouterData(to.name)
  23. if (res) {
  24. return true
  25. } else {
  26. return '/login'
  27. }
  28. }
  29. })
  30. router.afterEach((to) => {
  31. //根据当前跳转的路由设置显示在浏览器标签的title
  32. let pageTitle = to.meta['title'], title = config.title;
  33. if (to.path !== "/") {
  34. window.document.title = pageTitle?`${pageTitle} - ${title}`:title;
  35. } else {
  36. window.document.title = title;
  37. }
  38. window.scrollTo(0, 0)
  39. NProgress.done()
  40. })
  41. export function setupRouter(app) {
  42. app.use(router)
  43. return router
  44. }
  45. export default router