index.vue 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. :moreLink="router.resolve('/communicate/fujian-and-taiwan').href"
  25. />
  26. <LeftRightBox
  27. class="mt-4"
  28. title="台港澳地区文化交流"
  29. :desc="overviewsLoader.content.value?.[1]"
  30. :image="Image2"
  31. left
  32. :moreLink="router.resolve('/communicate/hk-macao-and-taiwan').href"
  33. />
  34. <LeftRightBox
  35. class="mt-4"
  36. title="对外文化交流"
  37. :desc="overviewsLoader.content.value?.[2]"
  38. :image="Image3"
  39. :moreLink="router.resolve('/communicate/outside').href"
  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 { useSSrSimpleDataLoader } from '@/composeable/SimpleDataLoader';
  48. import Image1 from '@/assets/images/communicate/Image1.jpg'
  49. import Image2 from '@/assets/images/communicate/Image2.jpg'
  50. import Image3 from '@/assets/images/communicate/Image3.jpg'
  51. import LeftRightBox from '@/components/parts/LeftRightBox.vue';
  52. import { GetColumListParams } from '@/api/CommonContent';
  53. import { NO_CONTENT_STRING } from '@/common/ConstStrings';
  54. import CommunicateContent from '@/api/communicate/CommunicateContent';
  55. const router = useRouter();
  56. const carouselConfig = {
  57. itemsToShow: 1,
  58. wrapAround: true,
  59. autoPlay: 5000,
  60. }
  61. const overviewsLoader = await useSSrSimpleDataLoader('overviews', async () => {
  62. return [
  63. (await CommunicateContent.getColumList(
  64. new GetColumListParams().setMainBodyColumnId(260)
  65. )).list[0]?.overview || NO_CONTENT_STRING,
  66. (await CommunicateContent.getColumList(
  67. new GetColumListParams().setMainBodyColumnId(261)
  68. )).list[0]?.overview || NO_CONTENT_STRING,
  69. (await CommunicateContent.getColumList(
  70. new GetColumListParams().setMainBodyColumnId(262)
  71. )).list[0]?.overview || NO_CONTENT_STRING,
  72. ]
  73. });
  74. </script>
  75. <style lang="scss">
  76. @media (max-width: 425px) {
  77. }
  78. </style>