CommunicateView.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <!-- 传播交流页 -->
  3. <div class=" main-background main-background-type0">
  4. <!-- 轮播 -->
  5. <Carousel v-bind="carouselConfig" class="main-header-box small carousel-light">
  6. <Slide class="main-header-box small">
  7. <img src="@/assets/images/communicate/Banner.jpg" />
  8. </Slide>
  9. <template #addons>
  10. <Navigation />
  11. <Pagination />
  12. </template>
  13. </Carousel>
  14. <!-- 传播交流 -->
  15. <section class="main-section">
  16. <div class="content">
  17. <div class="title">
  18. <h2>传播交流</h2>
  19. </div>
  20. <LeftRightBox
  21. title="闽南地区文化交流"
  22. :desc="overviewsLoader.content.value?.[0]"
  23. :image="Image1"
  24. @moreClick="navTo('/communicate/fujian-and-taiwan')"
  25. />
  26. <LeftRightBox
  27. class="mt-4"
  28. title="台港澳地区文化交流"
  29. :desc="overviewsLoader.content.value?.[1]"
  30. :image="Image2"
  31. left
  32. @moreClick="navTo('/communicate/hk-macao-and-taiwan')"
  33. />
  34. <LeftRightBox
  35. class="mt-4"
  36. title="对外文化交流"
  37. :desc="overviewsLoader.content.value?.[2]"
  38. :image="Image3"
  39. @moreClick="navTo('/communicate/outside')"
  40. />
  41. </div>
  42. </section>
  43. </div>
  44. </template>
  45. <script setup lang="ts">
  46. import { Carousel, Slide, Pagination, Navigation } from 'vue3-carousel'
  47. import { onMounted, ref } from 'vue';
  48. import { usePageAction } from '@/composeable/PageAction';
  49. import { useSimpleDataLoader } from '@/composeable/SimpleDataLoader';
  50. import Image1 from '@/assets/images/communicate/Image1.jpg'
  51. import Image2 from '@/assets/images/communicate/Image2.jpg'
  52. import Image3 from '@/assets/images/communicate/Image3.jpg'
  53. import LeftRightBox from '@/components/parts/LeftRightBox.vue';
  54. import CommonContent, { GetColumListParams } from '@/api/CommonContent';
  55. import CommunicateContent from '@/api/communicate/CommunicateContent';
  56. import { NO_CONTENT_STRING } from '@/common/ConstStrings';
  57. const carouselConfig = {
  58. itemsToShow: 1,
  59. wrapAround: true,
  60. autoPlay: 5000,
  61. }
  62. const { navTo } = usePageAction();
  63. const overviewsLoader = useSimpleDataLoader(async () => {
  64. return [
  65. (await CommunicateContent.getColumList(
  66. new GetColumListParams().setMainBodyColumnId(260)
  67. )).list[0]?.overview || NO_CONTENT_STRING,
  68. (await CommunicateContent.getColumList(
  69. new GetColumListParams().setMainBodyColumnId(261)
  70. )).list[0]?.overview || NO_CONTENT_STRING,
  71. (await CommunicateContent.getColumList(
  72. new GetColumListParams().setMainBodyColumnId(262)
  73. )).list[0]?.overview || NO_CONTENT_STRING,
  74. ]
  75. });
  76. </script>
  77. <style lang="scss">
  78. @media (max-width: 425px) {
  79. }
  80. </style>