CXBBasePage.vue 1016 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <script setup lang='ts'>
  2. import FPage from "~/components/FPage/FPage.vue";
  3. import FNavBar from "~/components/FNavBar/FNavBar.vue";
  4. defineProps({
  5. show: {
  6. type: Boolean,
  7. default: false,
  8. },
  9. title: {
  10. type: String,
  11. },
  12. backArrow: {
  13. type: Boolean,
  14. default: true,
  15. },
  16. })
  17. const curPage = getCurrentPages().at(-1) as any
  18. // #ifdef H5
  19. if (window.parent !== window.self) {
  20. window.parent.postMessage({
  21. type: 'route',
  22. data: curPage.route,
  23. }, '*')
  24. }
  25. // #endif
  26. const titleText = curPage.$page?.meta?.navigationBar?.titleText || '标题'
  27. function onClickLeft() {
  28. const pages = getCurrentPages()
  29. if (pages.length > 1) {
  30. uni.navigateBack()
  31. }
  32. else {
  33. uni.redirectTo({
  34. url: '/',
  35. })
  36. }
  37. }
  38. </script>
  39. <template>
  40. <FPage ex-class="font-sans pb-10 inset-0 overflow-auto">
  41. <FNavBar
  42. v-if="show" :title="title ?? titleText" :left-arrow="backArrow" fixed placeholder z-index="999"
  43. @click-left="onClickLeft"
  44. />
  45. <slot />
  46. </FPage>
  47. </template>