12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 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
|