index-student.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { browser } from '@/helpers/utils'
  2. import { state } from '@/state'
  3. import { Dialog } from 'vant'
  4. import { createRouter, createWebHashHistory, Router } from 'vue-router'
  5. import { postMessage } from '@/helpers/native-message'
  6. import routes from './routes-student'
  7. const router: Router = createRouter({
  8. history: createWebHashHistory(),
  9. routes,
  10. scrollBehavior() {
  11. return { left: 0, top: 0 }
  12. }
  13. })
  14. router.beforeEach((to, from, next) => {
  15. const title = to.meta.title
  16. document.title = (title || '酷乐秀') as any
  17. next()
  18. // if (browser().iPhone && !state.version) {
  19. // try {
  20. // postMessage(
  21. // {
  22. // api: 'getVersion'
  23. // },
  24. // (res: any) => {
  25. // state.version = res.version
  26. // console.log(res, 'version')
  27. // setTimeout(() => {
  28. // next()
  29. // }, 50)
  30. // }
  31. // )
  32. // } catch {}
  33. // // 为了处理上面方法的没有返回
  34. // setTimeout(() => {
  35. // if (!state.version) {
  36. // next()
  37. // // }
  38. // // }, 5000)
  39. // } else {
  40. // console.log(222)
  41. // next()
  42. // }
  43. })
  44. let isOpen = false
  45. router.onError(error => {
  46. if (error instanceof Error) {
  47. const isChunkLoadFailed = error.name.indexOf('chunk')
  48. const targetPath = router.currentRoute.value.fullPath
  49. if (isChunkLoadFailed && !isOpen) {
  50. isOpen = true
  51. Dialog.alert({
  52. title: '更新提示',
  53. message: 'APP有更新请点击确定刷新页面?',
  54. confirmButtonColor: 'var(--van-primary)'
  55. }).then(() => {
  56. // on close
  57. if (browser().isApp) {
  58. postMessage({ api: 'back' })
  59. } else {
  60. location.hash = targetPath
  61. window.location.reload()
  62. }
  63. })
  64. }
  65. }
  66. })
  67. export default router