router-guards.ts 736 B

123456789101112131415161718192021222324252627
  1. import { Router } from 'vue-router';
  2. import { PageEnum } from '@/enums/pageEnum'
  3. export function createRouterGuards(router: Router) {
  4. // 前置
  5. router.beforeEach(async (to, from, next) => {
  6. const Loading = window['$loading'];
  7. Loading && Loading.start();
  8. const isErrorPage = router.getRoutes().findIndex((item) => item.name === to.name);
  9. if (isErrorPage === -1) {
  10. next({ name: PageEnum.ERROR_PAGE_NAME_404 })
  11. }
  12. next()
  13. })
  14. router.afterEach((to, _, failure) => {
  15. const Loading = window['$loading'];
  16. document.title = (to?.meta?.title as string) || document.title;
  17. Loading && Loading.finish();
  18. })
  19. // 错误
  20. router.onError((error) => {
  21. console.log(error, '路由错误');
  22. });
  23. }