Newer
Older
Nanping_sponge_GCYPG / src / views / preassess / noopReview / project.vue
@liyingjing liyingjing on 25 Oct 2023 6 KB 工程预评估
  1. <template>
  2. <div class="project">
  3. <el-card class="box-card" shadow="never">
  4. <template #header>
  5. <div class="card-header">
  6. <span class="title">项目目标</span>
  7. <el-icon
  8. class="icon"
  9. v-show="props.step === 1"
  10. @click="visible = true"
  11. ><ChatLineSquare /></el-icon>
  12. </div>
  13. </template>
  14. <el-form class="formM5" ref="projectForm" :model="form">
  15. <el-row :gutter="20">
  16. <el-col :span="6">
  17. <el-form-item label="建设工程:" prop="projectNo">
  18. <el-select
  19. v-model="form.projectNo"
  20. placeholder="建设工程"
  21. v-if="opts.type === 'add'"
  22. :disabled="props.disabled"
  23. >
  24. <el-option
  25. v-for="item in list"
  26. :label="item.projectName"
  27. :value="item.projectNo"
  28. :key="item.projectNo"
  29. @click="selectChange(item)"
  30. />
  31. </el-select>
  32. <span v-else>{{ form.projectName }}</span>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="6">
  36. <el-form-item label="工程类型:" prop="engineeringType">
  37. <span>{{ findText('sponge_engineering_type', form.engineeringType) }}</span>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="6">
  41. <el-form-item label="建设分区:" prop="drainagePartition">
  42. <span>{{ findText('drainage_partition', form.drainagePartition) }}</span>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="6">
  46. <el-form-item label="建设类型:" prop="buildCategory">
  47. <span>{{ findText('build_category', form.buildCategory) }}</span>
  48. </el-form-item>
  49. </el-col>
  50. </el-row>
  51. <el-row :gutter="20">
  52. <el-col :span="6">
  53. <el-form-item label="面积㎡:" prop="area">
  54. <span>{{ form.area }}</span>
  55. </el-form-item>
  56. </el-col>
  57. <el-col :span="6">
  58. <el-form-item label="年径流总量控制率%,≥:" prop="annualRunoffTotalControlRate">
  59. <span>{{ form.annualRunoffTotalControlRate }}</span>
  60. </el-form-item>
  61. </el-col>
  62. <el-col :span="6">
  63. <el-form-item label="年径流污染控制率%,≥:" prop="annualRunoffPollutionControlRate">
  64. <span>{{ form.annualRunoffPollutionControlRate }}</span>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="6">
  68. <el-form-item label="硬质地面率%,<:" prop="hardGroundRate">
  69. <span>{{ form.hardGroundRate }}</span>
  70. </el-form-item>
  71. </el-col>
  72. </el-row>
  73. <el-row :gutter="20">
  74. <el-col :span="6">
  75. <el-form-item label="处置客水m³:" prop="disposalOfGuestWater">
  76. <span>{{ form.disposalOfGuestWater }}</span>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="6">
  80. <el-form-item label="设计降雨mm:" prop="designRainfall">
  81. <template #label>
  82. <span>设计降雨mm</span>
  83. <popover :width="240">
  84. <span style="font-weight: 700">说明</span>
  85. <br />
  86. <span>根据目标年径流总量控制率跟设计降雨关系曲线,由年径流总量控制率推算设计降雨</span>
  87. </popover>
  88. <span>:</span>
  89. </template>
  90. <span>{{ form.designRainfall }}</span>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="6">
  94. <el-form-item label="海绵设施投资/万元:" prop="spongeInvest">
  95. <span>{{ form.spongeInvest }}</span>
  96. </el-form-item>
  97. </el-col>
  98. <el-col :span="6">
  99. <el-form-item label="推荐投产比(万元/m3):" prop="recommendedProductionRatio">
  100. <span>{{ form.recommendedProductionRatio }}</span>
  101. </el-form-item>
  102. </el-col>
  103. </el-row>
  104. </el-form>
  105. </el-card>
  106. <el-dialog
  107. v-model="visible"
  108. title="建设工程审查"
  109. :close-on-click-modal="false"
  110. width="40%"
  111. class="dialog"
  112. >
  113. <card header="结论" shadow="never" v-if="props.investigateData?.conclusions?.length">
  114. <div class="conclusion">
  115. <div
  116. class="conclusion-item"
  117. v-for="(item, index) in props.investigateData.conclusions"
  118. >
  119. <span>{{ `${index + 1}: ${item}` }}</span>
  120. <br /><br v-if="index < props.investigateData.conclusions.length - 1" />
  121. </div>
  122. </div>
  123. </card>
  124. <card header="建议" class="suggestCard" shadow="never" v-if="props.investigateData?.suggests?.length">
  125. <div class="suggest">
  126. <div
  127. class="suggest-item"
  128. v-for="(item, index) in props.investigateData.suggests"
  129. >
  130. <span>{{ `${index + 1}: ${item}` }}</span>
  131. <br /><br v-if="index < props.investigateData.suggests.length - 1" />
  132. </div>
  133. </div>
  134. </card>
  135. </el-dialog>
  136. </div>
  137. </template>
  138.  
  139. <script setup>
  140. import { computed, reactive } from 'vue'
  141. import { useDicts } from '@/hooks'
  142. import popover from '@/components/popover'
  143. import { ChatLineSquare } from '@element-plus/icons-vue'
  144. const { proxy } = getCurrentInstance();
  145. const emit = defineEmits(['select-change'])
  146. const props = defineProps({
  147. data: {
  148. type: Object,
  149. default: () => ({})
  150. },
  151. disabled: {
  152. type: Boolean,
  153. default: false
  154. },
  155. opts: {
  156. type: Object,
  157. default: () => ({})
  158. },
  159. list: {
  160. type: Array,
  161. default: () => []
  162. },
  163. step: {
  164. type: [Number, String],
  165. default: 0
  166. },
  167. investigateData: {
  168. type: Object,
  169. default: () => ({})
  170. }
  171. })
  172. const { findText } = useDicts(proxy)
  173.  
  174. const form = computed(() => {
  175. return props.data
  176. })
  177. const visible = ref(false)
  178.  
  179. const selectChange = (item) => {
  180. emit('select-change', item)
  181. }
  182. </script>
  183.  
  184. <style lang="scss" scoped>
  185. .project {
  186. margin-bottom: 10px;
  187. .suggestCard {
  188. margin-top: 10px;
  189. }
  190. .card-header {
  191. display: flex;
  192. justify-content: space-between;
  193. align-items: center;
  194. .icon {
  195. font-size: 20px;
  196. cursor: pointer;
  197. }
  198.  
  199. .title {
  200. font-size: 16px;
  201. font-weight: 700;
  202. }
  203. }
  204.  
  205. .conclusion-item,
  206. .suggest-item {
  207. line-height: 1.5;
  208. }
  209. }
  210. </style>