index.js 2.7 KB

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