detail.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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.stationId }}
  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.decade === 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. <el-button type="primary" @click="onSubmit" size="default">{{ ruleForm.id !== 0 ? '修 改' : '添 加' }}</el-button>
  77. </span>
  78. </template>
  79. </el-dialog>
  80. </div>
  81. </template>
  82. <script lang="ts">
  83. import { reactive, toRefs, defineComponent, ref } from 'vue';
  84. import api from '/@/api/heatStation';
  85. import { ElMessage } from 'element-plus';
  86. interface Point {
  87. sort?: number;
  88. lnt: number;
  89. lat: number
  90. }
  91. interface RuleFormState {
  92. id?: number;
  93. name: string;
  94. code: string;
  95. stationId: string;
  96. loopTypes: string;
  97. energyTypes: string;
  98. heatingObject: string;
  99. heatingTypes: string;
  100. heatingArea: string;
  101. forRealArea: string;
  102. viaPoint: Array<Point>;
  103. decade: string;
  104. status: number;
  105. }
  106. export default defineComponent({
  107. name: 'headStationLoop',
  108. setup(prop, { emit }) {
  109. const formRef = ref<HTMLElement | null>(null);
  110. const state = reactive({
  111. dialogVisible: false,
  112. ruleForm: {
  113. id: 0,
  114. name: '',
  115. code: '',
  116. stationId: '',
  117. loopTypes: '',
  118. energyTypes: '',
  119. heatingObject: '',
  120. heatingTypes: '',
  121. heatingArea: '',
  122. forRealArea: '',
  123. decade: '',
  124. viaPoint: [],
  125. status: 1
  126. },
  127. treeData: [],
  128. pointList: [] as any
  129. })
  130. // 打开弹窗
  131. const openDialog = (row: RuleFormState | null) => {
  132. resetForm()
  133. queryTree()
  134. if (row) {
  135. (state.ruleForm as any).id = row.id
  136. getDetail()
  137. }
  138. state.dialogVisible = true
  139. }
  140. const resetForm = () => {
  141. state.ruleForm = {
  142. id: 0,
  143. name: '',
  144. code: '',
  145. stationId: '',
  146. loopTypes: '',
  147. energyTypes: '',
  148. heatingObject: '',
  149. heatingTypes: '',
  150. heatingArea: '',
  151. forRealArea: '',
  152. viaPoint: [],
  153. decade: '',
  154. status: 1
  155. }
  156. }
  157. // 关闭弹窗
  158. const closeDialog = () => {
  159. state.dialogVisible = false
  160. }
  161. // 取消
  162. const onCancel = () => {
  163. closeDialog()
  164. state.pointList = []
  165. }
  166. const queryTree = () => {
  167. api.heatStation.getList({
  168. name: '',
  169. code: '',
  170. status: -1
  171. })
  172. .then((res: any) => {
  173. state.treeData = res || [];
  174. });
  175. };
  176. const getDetail = () => {
  177. api.loop.detail(state.ruleForm.id)
  178. .then((res: any) => {
  179. state.ruleForm = {
  180. ...res
  181. }
  182. state.pointList = state.ruleForm.viaPoint.map((item: any) => ({
  183. ...item,
  184. editFlag: false
  185. }))
  186. })
  187. }
  188. return {
  189. openDialog,
  190. closeDialog,
  191. onCancel,
  192. formRef,
  193. ...toRefs(state)
  194. }
  195. }
  196. })
  197. </script>