index.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { useMainStore } from "@/stores/store";
  2. import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
  3. import HomeView from '../views/HomeView.vue'
  4. import Step_1 from "../views/Step_1.vue";
  5. import Step_2 from "../views/Step_2.vue";
  6. import Step_3 from "../views/Step_3.vue";
  7. import Step_4 from "../views/Step_4.vue";
  8. import Step_5 from "../views/Step_5.vue";
  9. import Step_6 from "../views/Step_6.vue";
  10. import Step_7 from "../views/Step_7.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: '/',
  27. component: Step_1,
  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. },
  45. {
  46. path: 'step5',
  47. component: Step_5,
  48. meta: {
  49. requiresBgImg: true
  50. }
  51. },
  52. {
  53. path: 'step6',
  54. component: Step_6,
  55. meta: {
  56. requiresBgImg: true
  57. }
  58. },
  59. {
  60. path: 'step7',
  61. component: Step_7,
  62. meta: {
  63. requiresBgImg: true
  64. }
  65. },
  66. // 天燈
  67. {
  68. path: '/skylantern',
  69. name: 'skylantern',
  70. component: Skylantern
  71. },
  72. {
  73. path: '/skylanternhome',
  74. name: 'skylantern_home',
  75. component: SkylanternHome
  76. },
  77. {
  78. path: '/skylantern_step1',
  79. name: 'skylantern_step1',
  80. component: SkylanternStep_1
  81. },
  82. {
  83. path: '/skylantern_step2',
  84. name: 'skylantern_step2',
  85. component: SkylanternStep_2
  86. },
  87. {
  88. path: '/skylantern_step3',
  89. name: 'skylantern_step3',
  90. component: SkylanternStep_3
  91. },
  92. ],
  93. },
  94. ]
  95. })
  96. router.beforeEach((to, from, next) => {
  97. const store = useMainStore();
  98. // 檢查是否已選擇背景圖,否則不能進入結果頁(step6)
  99. if (to.meta.requiresBgImg && !store.assignBgImg) {
  100. next('/step2'); // 返回選擇背景頁面
  101. } else {
  102. next();
  103. }
  104. });
  105. export default router