detail.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <div class="system-edit-dic-container">
  3. <el-dialog :title="'环路详情'" v-model="dialogVisible" width="950px">
  4. <el-form :model="ruleForm" ref="formRef" size="default" label-width="110px">
  5. <el-form-item label="环路名称" prop="name">
  6. {{ ruleForm.name }}
  7. </el-form-item>
  8. <el-form-item label="环路编号" prop="code">
  9. {{ ruleForm.code }}
  10. </el-form-item>
  11. <el-form-item label="所属换热站" prop="stationId">
  12. {{ ruleForm.stationInfo?.name }}
  13. <!-- <el-tree-select
  14. v-model="ruleForm.stationId"
  15. :data="treeData"
  16. :props="{
  17. label: 'name',
  18. children: 'children'
  19. }"
  20. node-key="id"
  21. :clearable="true"
  22. check-strictly
  23. style="width: 100%;"
  24. :render-after-expand="true"
  25. /> -->
  26. </el-form-item>
  27. <el-form-item label="环路类型" prop="loopTypes">
  28. {{ ruleForm.loopTypes === 1 ? '一网' : '二网' }}
  29. </el-form-item>
  30. <el-form-item label="节能类型" prop="energyTypes">
  31. {{ ruleForm.energyTypes === 1 ? '节能' : '非节能' }}
  32. </el-form-item>
  33. <el-row :gutter="10">
  34. <el-col :span="12">
  35. <el-form-item label="供暖对象" prop="heatingObject">
  36. {{ ruleForm.heatingObject === 1 ? '公建' : '居民' }}
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="12">
  40. <el-form-item label="供暖类型" prop="heatingTypes">
  41. {{ ruleForm.heatingTypes === 1 ? '地暖' : '暖气片' }}
  42. </el-form-item>
  43. </el-col>
  44. </el-row>
  45. <el-row :gutter="10">
  46. <el-col :span="12">
  47. <el-form-item label="实供面积" prop="heatingArea">
  48. {{ ruleForm.heatingArea }}
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="12">
  52. <el-form-item label="联网面积" prop="forRealArea">
  53. {{ ruleForm.forRealArea }}
  54. </el-form-item>
  55. </el-col>
  56. </el-row>
  57. <el-form-item label="环路年代" prop="decade">
  58. {{ ruleForm.decade }}
  59. </el-form-item>
  60. <el-form-item label="状态" prop="status">
  61. {{ ruleForm.status === 1 ? '启用' : '禁用' }}
  62. </el-form-item>
  63. <el-form-item label="路线信息" prop="">
  64. <div class="mb10" style="width: 100%">
  65. <div style="display: flex;" class="mb10" v-for="(item, index) in pointList" :key="index">
  66. <el-input v-model="item.position" :disabled="!item.editFalg" @keydown="onLocalChange(item, index)" @change="onLocalChange(item, index)" placeholder="请输入关键字进行搜索" clearable style="flex: 1; margin-right: 10px"></el-input>
  67. <span>排序:</span>
  68. <el-input-number v-model="item.sort" :controls="false" :disabled="!item.editFalg" placeholder="排序" clearable style="width: 100px; margin-right: 10px"></el-input-number>
  69. </div>
  70. </div>
  71. </el-form-item>
  72. </el-form>
  73. <template #footer>
  74. <span class="dialog-footer">
  75. <el-button @click="onCancel" size="default">取 消</el-button>
  76. </span>
  77. </template>
  78. </el-dialog>
  79. </div>
  80. </template>
  81. <script lang="ts">
  82. import { reactive, toRefs, defineComponent, ref } from 'vue';
  83. import api from '/@/api/heatStation';
  84. import { ElMessage } from 'element-plus';
  85. interface Point {
  86. sort?: number;
  87. lnt: number;
  88. lat: number
  89. }
  90. interface RuleFormState {
  91. id?: number;
  92. name: string;
  93. code: string;
  94. stationId: string;
  95. loopTypes: string;
  96. energyTypes: string;
  97. heatingObject: string;
  98. heatingTypes: string;
  99. heatingArea: string;
  100. forRealArea: string;
  101. viaPoint: Array<Point>;
  102. decade: string;
  103. status: number;
  104. }
  105. export default defineComponent({
  106. name: 'headStationLoop',
  107. setup(prop, { emit }) {
  108. const formRef = ref<HTMLElement | null>(null);
  109. const state = reactive({
  110. dialogVisible: false,
  111. ruleForm: {
  112. id: 0,
  113. name: '',
  114. code: '',
  115. stationId: '',
  116. loopTypes: '',
  117. energyTypes: '',
  118. heatingObject: '',
  119. heatingTypes: '',
  120. heatingArea: '',
  121. forRealArea: '',
  122. decade: '',
  123. viaPoint: [],
  124. status: 1
  125. },
  126. treeData: [],
  127. pointList: [] as any
  128. })
  129. // 打开弹窗
  130. const openDialog = (row: RuleFormState | null) => {
  131. resetForm()
  132. queryTree()
  133. if (row) {
  134. (state.ruleForm as any).id = row.id
  135. getDetail()
  136. }
  137. state.dialogVisible = true
  138. }
  139. const resetForm = () => {
  140. state.ruleForm = {
  141. id: 0,
  142. name: '',
  143. code: '',
  144. stationId: '',
  145. loopTypes: '',
  146. energyTypes: '',
  147. heatingObject: '',
  148. heatingTypes: '',
  149. heatingArea: '',
  150. forRealArea: '',
  151. viaPoint: [],
  152. decade: '',
  153. status: 1
  154. }
  155. }
  156. // 关闭弹窗
  157. const closeDialog = () => {
  158. state.dialogVisible = false
  159. }
  160. // 取消
  161. const onCancel = () => {
  162. closeDialog()
  163. state.pointList = []
  164. }
  165. const queryTree = () => {
  166. api.heatStation.getList({
  167. name: '',
  168. code: '',
  169. status: -1
  170. })
  171. .then((res: any) => {
  172. state.treeData = res || [];
  173. });
  174. };
  175. const getDetail = () => {
  176. api.loop.detail(state.ruleForm.id)
  177. .then((res: any) => {
  178. state.ruleForm = {
  179. ...res
  180. }
  181. state.pointList = state.ruleForm.viaPoint.map((item: any) => ({
  182. ...item,
  183. editFlag: false
  184. }))
  185. })
  186. }
  187. return {
  188. openDialog,
  189. closeDialog,
  190. onCancel,
  191. formRef,
  192. ...toRefs(state)
  193. }
  194. }
  195. })
  196. </script>