preview.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <template>
  2. <FlexCol :padding="30" :gap="20">
  3. <ImageSwiper
  4. :images="imageList"
  5. radius="radius.md"
  6. round
  7. mode="widthFix"
  8. :width="690"
  9. />
  10. <FlexCol v-if="overviewLoader.content.value">
  11. <SubTitle :title="overviewLoader.content.value.villageName || querys.villageName" />
  12. <IntroBlock
  13. small
  14. :descItems="[
  15. {
  16. label: '村社类型',
  17. value: overviewLoader.content.value.villageTypeText ,
  18. },
  19. {
  20. label: '地址',
  21. value: overviewLoader.content.value.cityAddress?.join(' '),
  22. },
  23. ]"
  24. />
  25. <FlexCol :margin="[20, 0, 0, 0]">
  26. <Parse :content="(overviewLoader.content.value.overview as string)" />
  27. <Text v-if="!overviewLoader.content.value.overview" fontConfig="subText">暂无采编简内容</Text>
  28. </FlexCol>
  29. </FlexCol>
  30. <FlexCol :gap="20">
  31. <CollectModuleList
  32. :villageId="querys.villageId"
  33. :villageVolunteerId="querys.villageVolunteerId"
  34. :taskName="''"
  35. :taskTitle="''"
  36. :taskPid="0"
  37. isView
  38. />
  39. </FlexCol>
  40. <FlexCol :margin="[20, 0, 30, 0]">
  41. <SubTitle title="地理位置" />
  42. <FlexCol radius="radius.md" backgroundColor="white" :margin="[20, 0, 0, 0]">
  43. <map
  44. id="map"
  45. :latitude="center[1]"
  46. :longitude="center[0]"
  47. :markers="markers"
  48. :scale="15"
  49. :style="{
  50. width: '100%',
  51. height: '350rpx',
  52. }"
  53. />
  54. </FlexCol>
  55. </FlexCol>
  56. <XBarSpace />
  57. </FlexCol>
  58. </template>
  59. <script setup lang="ts">
  60. import { computed, ref } from 'vue';
  61. import { useLoadQuerys } from '@/components/composeabe/LoadQuerys';
  62. import { useSimpleDataLoader } from '@/components/composeabe/loader/SimpleDataLoader';
  63. import FlexCol from '@/components/layout/FlexCol.vue';
  64. import CollectModuleList from '../components/CollectModuleList.vue';
  65. import XBarSpace from '@/components/layout/space/XBarSpace.vue';
  66. import ImageSwiper from '@/common/components/parts/ImageSwiper.vue';
  67. import VillageInfoApi, { CommonInfoModel } from '@/api/inhert/VillageInfoApi';
  68. import SubTitle from '@/components/display/title/SubTitle.vue';
  69. import IntroBlock from '@/pages/article/common/IntroBlock.vue';
  70. import Parse from '@/components/display/parse/Parse.vue';
  71. import Text from '@/components/basic/Text.vue';
  72. import ImagesUrls from '@/common/config/ImagesUrls';
  73. import { CollectableModulesIdMap } from '../forms/forms';
  74. const { querys } = useLoadQuerys({
  75. villageId: 0,
  76. villageName: '',
  77. villageVolunteerId: 0,
  78. });
  79. const center = ref([118.15723, 24.48147]);
  80. const markers = ref<any>([]);
  81. const imageList = computed(() => {
  82. const content = overviewLoader.content.value;
  83. if (!content) return [];
  84. if (content.images && content.images.length > 0)
  85. return content.images;
  86. if (content.image)
  87. return [content.image];
  88. return ["https://mn.wenlvti.net/app_static/xiangan/banner_dig_1.jpg" ];
  89. });
  90. const overviewLoader = useSimpleDataLoader<CommonInfoModel>(async () => {
  91. const collectModuleId = CollectableModulesIdMap['overview'];
  92. const list = (await VillageInfoApi.getList({
  93. collectModuleId,
  94. villageId: querys.value.villageId,
  95. villageVolunteerId: querys.value.villageVolunteerId,
  96. })).list;
  97. if (list.length > 0) {
  98. const info = (await VillageInfoApi.getInfo(
  99. collectModuleId,
  100. undefined,
  101. undefined,
  102. querys.value.villageId,
  103. querys.value.villageVolunteerId,
  104. undefined,
  105. list[0].id,
  106. )) as CommonInfoModel
  107. if (info.longitude && info.latitude) {
  108. center.value = [Number(info.longitude), Number(info.latitude)];
  109. } else {
  110. center.value = [118.11593, 24.467580];
  111. }
  112. markers.value = [
  113. {
  114. id: 1,
  115. latitude: center.value[1],
  116. longitude: center.value[0],
  117. iconPath: ImagesUrls.IconMarker,
  118. width: 40,
  119. height: 40,
  120. }
  121. ];
  122. return info;
  123. }
  124. return new CommonInfoModel();
  125. });
  126. </script>