travel.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <template>
  2. <FlexCol :padding="30" backgroundColor="background.page">
  3. <!-- 闽南节庆日历 -->
  4. <HomeTitle title="闽南节庆日历" showMore @clickMore="navTo('/pages/travel/calendar/index')" />
  5. <CalendarBlock />
  6. <!-- 闽南文化景区、景点 -->
  7. <HomeTitle title="闽南文化景区、景点" showMore @clickMore="navTo('/pages/travel/scenic-spot/list')" />
  8. <SimplePageContentLoader :loader="spotData">
  9. <scroll-view scroll-x>
  10. <FlexCol>
  11. <Box2LineImageRightShadow
  12. v-for="(item, i) in spotData.content.value"
  13. titleColor="title-text"
  14. fixSize
  15. :key="i"
  16. :title="item.title"
  17. :desc="item.desc"
  18. :image="item.image"
  19. :tags="item.bottomTags"
  20. @click="navTo('/pages/inhert/intangible/details', { id: item.id })"
  21. />
  22. </FlexCol>
  23. </scroll-view>
  24. </SimplePageContentLoader>
  25. <!-- 文化旅游路线 -->
  26. <HomeTitle title="文化旅游路线" showMore @clickMore="goRouteList" />
  27. <SimplePageContentLoader :loader="routeData">
  28. <scroll-view scroll-x>
  29. <view class="pb-3 pt-3 d-flex flex-row overflow-visible align-stretch">
  30. <Box2LineLargeImageUserShadow
  31. v-for="(item, i) in routeData.content.value"
  32. classNames="width-2-3 mr-2"
  33. titleColor="title-text"
  34. fixSize
  35. :key="i"
  36. :title="item.title"
  37. :desc="item.desc"
  38. :image="item.thumbnail || item.image"
  39. @click="goRouteDetail(item.id)"
  40. />
  41. </view>
  42. </scroll-view>
  43. </SimplePageContentLoader>
  44. <!-- 文化产品 -->
  45. <HomeTitle title="文化产品" showMore @clickMore="goCreativeList" />
  46. <SimplePageContentLoader :loader="creativeData">
  47. <scroll-view scroll-x>
  48. <view class="pb-3 pt-3 d-flex flex-row overflow-visible align-stretch">
  49. <Box2LineLargeImageUserShadow
  50. v-for="(item, i) in creativeData.content.value"
  51. classNames="width-2-3 mr-2"
  52. titleColor="title-text"
  53. fixSize
  54. :key="i"
  55. :title="item.title"
  56. :image="item.thumbnail || item.image"
  57. @click="goCreativeDetail(item.id)"
  58. />
  59. </view>
  60. </scroll-view>
  61. </SimplePageContentLoader>
  62. </FlexCol>
  63. </template>
  64. <script setup lang="ts">
  65. import { navTo } from '@/components/utils/PageAction';
  66. import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
  67. import { useHomePageMiniCommonListGoMoreAndGoDetail } from '../article/common/CommonContent';
  68. import { GetContentListParams } from '@/api/CommonContent';
  69. import SimplePageContentLoader from '@/common/components/SimplePageContentLoader.vue';
  70. import FlexCol from '@/components/layout/FlexCol.vue';
  71. import HomeTitle from '../parts/HomeTitle.vue';
  72. import Box2LineLargeImageUserShadow from '../parts/Box2LineLargeImageUserShadow.vue';
  73. import Box2LineImageRightShadow from '../parts/Box2LineImageRightShadow.vue';
  74. import InheritorContent from '@/api/inheritor/InheritorContent';
  75. import ProjectsContent from '@/api/inheritor/ProjectsContent';
  76. import CalendarBlock from '../travel/calendar/block.vue';
  77. import SeminarContent from '@/api/inheritor/SeminarContent';
  78. import ScenicSpotContent from '@/api/fusion/ScenicSpotContent';
  79. const intangibleData = useSimpleDataLoader(async () =>
  80. (await ProjectsContent.getContentList(new GetContentListParams(), 1, 4)).list.map(p => ({
  81. id: p.id,
  82. title: p.title,
  83. desc: p.desc,
  84. image: p.thumbnail || p.image,
  85. bottomTags: [
  86. p.levelText,
  87. p.ichTypeText,
  88. p.batchText,
  89. p.regionText,
  90. ] as string[],
  91. }))
  92. );
  93. const inheritorData = useSimpleDataLoader(async () =>
  94. (await InheritorContent.getContentList(new GetContentListParams(), 1, 4)).list.map(p => ({
  95. id: p.id,
  96. title: p.title,
  97. desc: p.desc,
  98. image: p.thumbnail || p.image,
  99. titleBox: Boolean(p.deathBirth),
  100. bottomTags: [
  101. p.levelText,
  102. p.nation,
  103. p.ichName
  104. ] as string[],
  105. }))
  106. );
  107. const spotData = useSimpleDataLoader(async () =>
  108. (await ScenicSpotContent.getContentList(new GetContentListParams(), 1, 4)).list.map(p => ({
  109. id: p.id,
  110. title: p.title,
  111. desc: p.desc,
  112. image: p.thumbnail || p.image,
  113. bottomTags: [
  114. p.levelText,
  115. p.ichTypeText,
  116. p.batchText,
  117. p.regionText,
  118. ] as string[],
  119. }))
  120. );
  121. const seminarData = useSimpleDataLoader(async () =>
  122. (await SeminarContent.getContentList(new GetContentListParams(), 1, 4)).list.map(p => ({
  123. id: p.id,
  124. title: p.title,
  125. desc: p.desc,
  126. image: p.thumbnail || p.image,
  127. bottomTags: [
  128. p.levelText,
  129. p.ichTypeText,
  130. p.batchText,
  131. p.regionText,
  132. ] as string[],
  133. }))
  134. );
  135. const {
  136. loader: routeData,
  137. goList: goRouteList,
  138. goDetail: goRouteDetail,
  139. } = useHomePageMiniCommonListGoMoreAndGoDetail({
  140. title: '旅游路线',
  141. mainBodyColumnId: [274,275,276,277],
  142. modelId: 17,
  143. itemType: 'article-common',
  144. detailsPage: '/pages/article/details',
  145. });
  146. const {
  147. loader: recommendData,
  148. goList: goRecommendList,
  149. goDetail: goRecommendDetail,
  150. } = useHomePageMiniCommonListGoMoreAndGoDetail({
  151. title: '文化景区',
  152. mainBodyColumnId: 273,
  153. modelId: 17,
  154. itemType: 'article-common',
  155. detailsPage: '/pages/article/details',
  156. });
  157. const {
  158. loader: creativeData,
  159. goList: goCreativeList,
  160. goDetail: goCreativeDetail,
  161. } = useHomePageMiniCommonListGoMoreAndGoDetail({
  162. title: '文化产品',
  163. mainBodyColumnId: 48,
  164. modelId: 9,
  165. itemType: 'article-common',
  166. detailsPage: '/pages/article/details',
  167. });
  168. </script>