edit.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <div class="system-edit-dic-container">
  3. <el-dialog :title="(ruleForm.id !== 0 ? '修改' : '添加') + '小区'" v-model="dialogVisible" width="550px">
  4. <el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
  5. <el-form-item label="所属组织" prop="organizationId">
  6. <el-tree-select
  7. v-model="ruleForm.organizationId"
  8. :data="orgList"
  9. :props="{
  10. label: 'name',
  11. children: 'children'
  12. }"
  13. node-key="id"
  14. :clearable="true"
  15. check-strictly
  16. style="width: 100%;"
  17. :render-after-expand="true"
  18. />
  19. </el-form-item>
  20. <!-- heatStaId -->
  21. <el-form-item label="所属换热站" prop="heatStaId">
  22. <el-tree-select
  23. v-model="ruleForm.heatStaId"
  24. :data="heatList"
  25. :props="{
  26. label: 'name',
  27. children: 'children'
  28. }"
  29. node-key="id"
  30. :clearable="true"
  31. check-strictly
  32. style="width: 100%;"
  33. :render-after-expand="true"
  34. />
  35. </el-form-item>
  36. <el-form-item label="小区名称" prop="name">
  37. <el-input v-model="ruleForm.name" placeholder="请输入小区名称" />
  38. </el-form-item>
  39. <el-form-item label="状态" prop="status">
  40. <el-radio v-model="ruleForm.status" :label="1">启用</el-radio>
  41. <el-radio v-model="ruleForm.status" :label="0">禁用</el-radio>
  42. </el-form-item>
  43. </el-form>
  44. <template #footer>
  45. <span class="dialog-footer">
  46. <el-button @click="onCancel" size="default">取 消</el-button>
  47. <el-button type="primary" @click="onSubmit" size="default">{{ ruleForm.id !== 0 ? '修 改' : '添 加' }}</el-button>
  48. </span>
  49. </template>
  50. </el-dialog>
  51. </div>
  52. </template>
  53. <script lang="ts">
  54. import { reactive, toRefs, defineComponent, ref, unref, nextTick } from 'vue';
  55. import api from '/@/api/heatingDistrict';
  56. import heatApi from '/@/api/heatStation';
  57. import { ElMessage } from 'element-plus';
  58. interface RuleFormState {
  59. id?: number;
  60. name: string;
  61. organizationId: string;
  62. }
  63. export default defineComponent({
  64. name: 'edit',
  65. setup(prop, { emit }) {
  66. const formRef = ref<HTMLElement | null>(null);
  67. const state = reactive({
  68. dialogVisible: false,
  69. ruleForm: {
  70. id: 0,
  71. name: '',
  72. organizationId: '',
  73. status: 1
  74. },
  75. rules: {
  76. name: [{ required: true, message: '小区名称不能为空', trigger: ['blur', 'change'] }],
  77. organizationId: [{ required: true, message: '所属组织不能为空', trigger: ['blur', 'change'] }]
  78. },
  79. orgList: [],
  80. heatList: []
  81. })
  82. // 打开弹窗
  83. const openDialog = (row: RuleFormState | null) => {
  84. resetForm()
  85. queryTree()
  86. if (row) {
  87. (state.ruleForm as any).id = row.id
  88. getDetail()
  89. }
  90. state.dialogVisible = true
  91. }
  92. const resetForm = () => {
  93. state.ruleForm = {
  94. id: 0,
  95. name: '',
  96. organizationId: '',
  97. status: 1
  98. }
  99. }
  100. // 关闭弹窗
  101. const closeDialog = () => {
  102. state.dialogVisible = false;
  103. (formRef.value as any).clearValidate()
  104. }
  105. // 取消
  106. const onCancel = () => {
  107. closeDialog()
  108. }
  109. const queryTree = () => {
  110. heatApi.heatStation.getList({
  111. name: '',
  112. code: '',
  113. status: -1
  114. })
  115. .then((res: any) => {
  116. state.heatList = res || [];
  117. });
  118. };
  119. const getDetail = () => {
  120. api.regionalManage.detail(state.ruleForm.id)
  121. .then((res: any) => {
  122. state.ruleForm = {
  123. ...res
  124. }
  125. })
  126. }
  127. // 新增
  128. const onSubmit = () => {
  129. const formWrap = unref(formRef) as any
  130. if (!formWrap) return;
  131. formWrap.validate((valid: boolean) => {
  132. if (valid) {
  133. let params = { ...state.ruleForm }
  134. if (params.id) {
  135. //修改
  136. api.regionalManage.edit(params).then(() => {
  137. ElMessage.success('小区修改成功')
  138. closeDialog() // 关闭弹窗
  139. emit('queryList')
  140. })
  141. } else {
  142. //添加
  143. api.regionalManage.add(params).then(() => {
  144. ElMessage.success('小区添加成功')
  145. closeDialog() // 关闭弹窗
  146. emit('queryList')
  147. })
  148. }
  149. }
  150. })
  151. }
  152. return {
  153. openDialog,
  154. closeDialog,
  155. onCancel,
  156. onSubmit,
  157. formRef,
  158. ...toRefs(state)
  159. }
  160. }
  161. })
  162. </script>