import { browser } from '@/helpers/utils' import { Dialog } from 'vant' import { createRouter, createWebHistory, Router } from 'vue-router' import { postMessage } from '@/helpers/native-message' import routesTeacher from './routes-teacher' import routesStudent from './routes-student' import routesManage from './routes-manage' const paymentType = (window as any).paymentType let routes: any = [] if (paymentType === 'STUDENT') { routes = routesStudent } else if (paymentType === 'TEACHER') { routes = routesTeacher } else if (paymentType === 'SCHOOL') { routes = routesManage } const router: Router = createRouter({ history: createWebHistory(), routes, scrollBehavior(to, from, savedPosition) { if (to.hash) { return { el: to.hash, behavior: 'smooth' } } } }) router.beforeEach((to, from, next) => { document.title = (to.meta.title || '管乐团') as any next() }) let isOpen = false router.onError(error => { if (error instanceof Error) { const isChunkLoadFailed = error.name.indexOf('chunk') const targetPath = router.currentRoute.value.fullPath if (isChunkLoadFailed && !isOpen) { isOpen = true Dialog.alert({ title: '更新提示', message: 'APP有更新请点击确定刷新页面?', confirmButtonColor: 'var(--van-primary)' }).then(() => { // on close if (browser().isApp) { postMessage({ api: 'back' }) } else { location.hash = targetPath window.location.reload() } }) } } }) export default router