2021-12-10 14:11:49 +08:00
|
|
|
|
import { Router } from 'vue-router';
|
2021-12-14 15:53:30 +08:00
|
|
|
|
import { PageEnum } from '@/enums/pageEnum'
|
2022-04-13 21:31:18 +08:00
|
|
|
|
import { loginCheck } from '@/utils'
|
2021-12-16 20:08:05 +08:00
|
|
|
|
|
2021-12-10 14:11:49 +08:00
|
|
|
|
export function createRouterGuards(router: Router) {
|
|
|
|
|
// 前置
|
|
|
|
|
router.beforeEach(async (to, from, next) => {
|
2023-03-09 10:38:57 +08:00
|
|
|
|
// http://localhost:3000/#/chart/preview/792622755697790976?t=123
|
|
|
|
|
// 把外部动态参数放入window.route.params,后续API动态接口可以用window.route?.params?.t来拼接参数
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
if (!window.route) window.route = {params: {}}
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
Object.assign(window.route.params, to.query)
|
|
|
|
|
|
2022-01-24 21:12:18 +08:00
|
|
|
|
const Loading = window['$loading'];
|
2021-12-10 14:11:49 +08:00
|
|
|
|
Loading && Loading.start();
|
2021-12-14 15:53:30 +08:00
|
|
|
|
const isErrorPage = router.getRoutes().findIndex((item) => item.name === to.name);
|
2021-12-10 14:11:49 +08:00
|
|
|
|
if (isErrorPage === -1) {
|
2021-12-14 15:53:30 +08:00
|
|
|
|
next({ name: PageEnum.ERROR_PAGE_NAME_404 })
|
2021-12-10 14:11:49 +08:00
|
|
|
|
}
|
2022-04-13 21:31:18 +08:00
|
|
|
|
|
|
|
|
|
if (!loginCheck()) {
|
|
|
|
|
if (to.name === PageEnum.BASE_LOGIN_NAME) {
|
|
|
|
|
next()
|
|
|
|
|
}
|
|
|
|
|
next({ name: PageEnum.BASE_LOGIN_NAME })
|
|
|
|
|
}
|
2021-12-10 14:11:49 +08:00
|
|
|
|
next()
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
router.afterEach((to, _, failure) => {
|
2022-01-24 21:12:18 +08:00
|
|
|
|
const Loading = window['$loading'];
|
2021-12-14 20:00:20 +08:00
|
|
|
|
document.title = (to?.meta?.title as string) || document.title;
|
2021-12-10 14:11:49 +08:00
|
|
|
|
Loading && Loading.finish();
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 错误
|
|
|
|
|
router.onError((error) => {
|
|
|
|
|
console.log(error, '路由错误');
|
|
|
|
|
});
|
|
|
|
|
}
|