index.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import NProgress from 'nprogress'
  2. import '~src/styles/app/nprogress.scss'
  3. //路由插件
  4. import * as vueRouter from 'vue-router'
  5. import baseData from './modules/base'
  6. import { getRouterData } from './routers'
  7. //其它工具
  8. import { getStore } from '~src/utils/storage'
  9. import config from '~src/config/index'
  10. import { isNullES } from 'js-fast-way'
  11. //设置路由数据
  12. const router = vueRouter.createRouter({
  13. history: vueRouter.createWebHashHistory(),
  14. routes: baseData,
  15. })
  16. //路由拦截
  17. router.beforeResolve(async (to) => {
  18. NProgress.start()
  19. const token = getStore('access-token'), auth = ['/login']
  20. if (auth.indexOf(to.path) !== -1) {
  21. return true
  22. } else if (isNullES(token)) {
  23. return '/login'
  24. } else {
  25. const res = await getRouterData(to.name)
  26. if (res) return true
  27. return '/login'
  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