DisasterInfo.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <template>
  2. <div class="disaster-information" :class="{ 'disaster-information--rectification': rectification }">
  3. <div class="disaster-information__title">
  4. <div class="disaster-information--line"></div>
  5. <span>受灾信息</span>
  6. </div>
  7. <div class="disaster-information__content">
  8. <section class="disaster-information__content--loss">
  9. <el-row :gutter="20">
  10. <el-col :span="8">
  11. <div class="disaster-information__content--item">
  12. <span class="label">受灾物品:</span>
  13. <el-tooltip
  14. :content="LossReportItemFormData?.affectedItems"
  15. placement="top-start"
  16. effect="light"
  17. :popper-class="[
  18. 'custom-tooltip',
  19. LossReportItemFormData?.affectedItems.length > 20 ? '' : 'custom-tooltip--opacity0',
  20. ]"
  21. >
  22. <span class="value">{{ LossReportItemFormData?.affectedItems }}</span>
  23. </el-tooltip>
  24. </div>
  25. </el-col>
  26. <el-col :span="8">
  27. <div class="disaster-information__content--item">
  28. <span class="label">地点:</span>
  29. <el-tooltip
  30. :content="`${LossReportItemFormData?.buildingNo} ${LossReportItemFormData?.floorNo} ${LossReportItemFormData?.roomNo}`"
  31. placement="top-start"
  32. effect="light"
  33. :popper-class="[
  34. 'custom-tooltip',
  35. `${LossReportItemFormData?.buildingNo} ${LossReportItemFormData?.floorNo} ${LossReportItemFormData?.roomNo}`
  36. .length > 20
  37. ? ''
  38. : 'custom-tooltip--opacity0',
  39. ]"
  40. >
  41. <span class="value">
  42. {{ LossReportItemFormData?.buildingNo }}
  43. {{ LossReportItemFormData?.floorNo }}
  44. {{ LossReportItemFormData?.roomNo }}
  45. </span>
  46. </el-tooltip>
  47. </div>
  48. </el-col>
  49. <el-col :span="8">
  50. <div class="disaster-information__content--item">
  51. <span class="label">上报时间:</span>
  52. <span class="value">{{ LossReportItemFormData?.updatedAt }}</span>
  53. </div>
  54. </el-col>
  55. </el-row>
  56. <el-row :gutter="20">
  57. <el-col :span="8">
  58. <div class="disaster-information__content--item">
  59. <span class="label">影响安全评估:</span>
  60. <span class="value">{{ getSafetyLevel(LossReportItemFormData?.safetyLevel) }}</span>
  61. </div>
  62. </el-col>
  63. <el-col :span="8">
  64. <div class="disaster-information__content--item">
  65. <span class="label">是否影响正常工作:</span>
  66. <span class="value">
  67. {{ LossReportItemFormData?.isAffectWork === 1 ? '是' : '否' }}
  68. </span>
  69. </div>
  70. </el-col>
  71. <el-col :span="8">
  72. <div class="disaster-information__content--item" v-if="LossReportItemFormData?.estimatedLoss">
  73. <span class="label">损失金额评估:</span>
  74. <el-tooltip
  75. :content="LossReportItemFormData?.estimatedLoss"
  76. placement="top-start"
  77. effect="light"
  78. :popper-class="[
  79. 'custom-tooltip',
  80. LossReportItemFormData?.estimatedLoss.length > 20 ? '' : 'custom-tooltip--opacity0',
  81. ]"
  82. >
  83. <span class="value">
  84. {{ LossReportItemFormData?.estimatedLoss }}
  85. <span v-if="LossReportItemFormData?.estimatedLoss.length < 20">元</span>
  86. </span>
  87. </el-tooltip>
  88. <span style="color: rgba(0, 0, 0, 0.65)" v-if="LossReportItemFormData?.estimatedLoss.length > 20">元</span>
  89. </div>
  90. </el-col>
  91. </el-row>
  92. <div class="disaster-information__content--item">
  93. <span class="label">损失描述:</span>
  94. <el-tooltip
  95. :content="LossReportItemFormData?.description"
  96. placement="top-start"
  97. effect="light"
  98. :popper-class="[
  99. 'custom-tooltip',
  100. LossReportItemFormData?.description.length > 50 ? '' : 'custom-tooltip--opacity0',
  101. ]"
  102. >
  103. <span class="value">{{ LossReportItemFormData?.description }}</span>
  104. </el-tooltip>
  105. </div>
  106. <div
  107. class="disaster-information__content--item"
  108. v-if="LossReportItemFormData?.images && JSON.parse(LossReportItemFormData?.images).length"
  109. >
  110. <span class="label">受灾图片:</span>
  111. <div class="image-container">
  112. <el-image
  113. v-for="(image, index) in JSON.parse(LossReportItemFormData?.images)"
  114. :key="index"
  115. :src="image"
  116. :zoom-rate="1.2"
  117. :max-scale="7"
  118. :min-scale="0.2"
  119. :preview-src-list="JSON.parse(LossReportItemFormData?.images)"
  120. show-progress
  121. :initial-index="index"
  122. fit="cover"
  123. />
  124. </div>
  125. </div>
  126. <div class="disaster-information__content--item" v-if="LossReportItemFormData?.remark">
  127. <span class="label">备注:</span>
  128. <el-tooltip
  129. :content="LossReportItemFormData?.remark"
  130. placement="top-start"
  131. effect="light"
  132. :popper-class="[
  133. 'custom-tooltip',
  134. LossReportItemFormData?.remark.length > 50 ? '' : 'custom-tooltip--opacity0',
  135. ]"
  136. >
  137. <span class="value">{{ LossReportItemFormData?.remark }}</span>
  138. </el-tooltip>
  139. </div>
  140. </section>
  141. </div>
  142. </div>
  143. </template>
  144. <script lang="ts" setup>
  145. import { ref, onMounted } from 'vue';
  146. import { useDisasterControlHook } from '../hook';
  147. import type { disasterReportRecordDetailListResponse, LossRecordListDetail } from '@/types/disaster-control';
  148. defineProps<{
  149. LossReportItemFormData: disasterReportRecordDetailListResponse | LossRecordListDetail;
  150. rectification?: boolean;
  151. }>();
  152. const { getSafetyLevel, getSafetyLevelDict } = useDisasterControlHook();
  153. onMounted(() => {
  154. getSafetyLevelDict();
  155. });
  156. </script>
  157. <style lang="scss" scoped>
  158. @use '../style/view-item.scss' as *;
  159. .disaster-information--rectification {
  160. background-color: $white-color;
  161. padding: 10px;
  162. border-radius: 4px;
  163. }
  164. </style>