index.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import { useMainStore } from "@/stores/store";
  2. import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
  3. import HomeView from '../views/HomeView.vue'
  4. import Language from "../components/Language.vue";
  5. import Step_1 from "../views/Step_1.vue";
  6. import Step_2 from "../views/Step_2.vue";
  7. import Step_3 from "../views/Step_3.vue";
  8. import Step_4 from "../views/Step_4.vue";
  9. import Step_5 from "../views/Step_5.vue";
  10. import Step_6 from "../views/Step_6.vue";
  11. // 天燈
  12. import Skylantern from '../views/Skylantern.vue'
  13. import SkylanternHome from '../views/SkylanternHome.vue'
  14. import SkylanternStep_1 from '../views/SkylanternStep_1.vue'
  15. import SkylanternStep_2 from '../views/SkylanternStep_2.vue'
  16. import SkylanternStep_3 from '../views/SkylanternStep_3.vue'
  17. const router = createRouter({
  18. history: createWebHashHistory(),
  19. routes: [
  20. {
  21. path: '/:lang?',
  22. name: 'home',
  23. component: HomeView,
  24. children: [
  25. {
  26. path: '/:lang?',
  27. component: Language,
  28. },
  29. {
  30. path: 'step1',
  31. component: Step_1,
  32. },
  33. {
  34. path: 'step2',
  35. component: Step_2,
  36. },
  37. {
  38. path: 'step3',
  39. component: Step_3,
  40. },
  41. {
  42. path: 'step4',
  43. component: Step_4,
  44. meta: {
  45. requiresBgImg: true
  46. }
  47. },
  48. {
  49. path: 'step5',
  50. component: Step_5,
  51. meta: {
  52. requiresBgImg: true
  53. }
  54. },
  55. {
  56. path: 'step6',
  57. component: Step_6,
  58. meta: {
  59. requiresBgImg: true
  60. }
  61. },
  62. // 天燈
  63. {
  64. path: '/skylantern',
  65. name: 'skylantern',
  66. component: Skylantern
  67. },
  68. {
  69. path: '/skylanternhome',
  70. name: 'skylantern_home',
  71. component: SkylanternHome
  72. },
  73. {
  74. path: '/skylantern_step1',
  75. name: 'skylantern_step1',
  76. component: SkylanternStep_1
  77. },
  78. {
  79. path: '/skylantern_step2',
  80. name: 'skylantern_step2',
  81. component: SkylanternStep_2
  82. },
  83. {
  84. path: '/skylantern_step3',
  85. name: 'skylantern_step3',
  86. component: SkylanternStep_3
  87. },
  88. ],
  89. },
  90. ]
  91. })
  92. router.beforeEach((to, from, next) => {
  93. const store = useMainStore();
  94. // 檢查是否已選擇背景圖,否則不能進入結果頁(step6)
  95. if (to.meta.requiresBgImg && !store.assignBgImg) {
  96. next('/step3'); // 返回選擇背景頁面
  97. } else {
  98. next();
  99. }
  100. });
  101. export default router