index.vue 853 B

123456789101112131415161718192021222324252627282930313233
  1. <template>
  2. <div class="p-appointment" :class="{ 'bg-gray': state.step < 5 }">
  3. <component :is="Component" />
  4. </div>
  5. </template>
  6. <script setup lang="ts">
  7. import { computed } from 'vue'
  8. import { onBeforeRouteLeave, useRouter } from 'vue-router'
  9. import StepOne from './StepOne.vue'
  10. import StepTwo from './StepTwo.vue'
  11. import StepThree from './StepThree.vue'
  12. import StepFour from './StepFour.vue'
  13. import StepFive from './StepFive.vue'
  14. import StepSix from './StepSix.vue'
  15. import { state } from './store'
  16. ;(window as any).router = useRouter()
  17. const Component = computed(
  18. () => [StepOne, StepTwo, StepThree, StepFour, StepFive, StepSix][state.step]
  19. )
  20. onBeforeRouteLeave((to, from) => {
  21. console.log(to)
  22. if (state.step > 0) {
  23. console.log(111)
  24. state.step--
  25. return false
  26. }
  27. })
  28. </script>
  29. <style lang="scss" src="./index.scss"></style>