edit.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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="name">
  6. <el-input v-model="ruleForm.name" placeholder="请输入单元名称" />
  7. </el-form-item>
  8. <el-form-item label="单元号" prop="number">
  9. <el-input v-model="ruleForm.number" placeholder="请输入单元号" />
  10. </el-form-item>
  11. <el-form-item label="状态" prop="status">
  12. <el-radio v-model="ruleForm.status" :label="1">启用</el-radio>
  13. <el-radio v-model="ruleForm.status" :label="0">禁用</el-radio>
  14. </el-form-item>
  15. </el-form>
  16. <template #footer>
  17. <span class="dialog-footer">
  18. <el-button @click="onCancel" size="default">取 消</el-button>
  19. <el-button type="primary" @click="onSubmit" size="default">{{ ruleForm.id !== 0 ? '修 改' : '添 加' }}</el-button>
  20. </span>
  21. </template>
  22. </el-dialog>
  23. </div>
  24. </template>
  25. <script lang="ts">
  26. import { reactive, toRefs, defineComponent, ref, unref, nextTick } from 'vue';
  27. import api from '/@/api/heatingDistrict';
  28. import heatApi from '/@/api/heatStation';
  29. import { ElMessage } from 'element-plus';
  30. export default defineComponent({
  31. name: 'edit',
  32. setup(prop, { emit }) {
  33. const formRef = ref<HTMLElement | null>(null);
  34. const state = reactive({
  35. dialogVisible: false,
  36. ruleForm: {
  37. id: 0,
  38. name: '',
  39. organizationId: '',
  40. plotId: '',
  41. floorId: '',
  42. heatStaId: '',
  43. number: '',
  44. remark: '',
  45. status: 1
  46. },
  47. rules: {
  48. name: [{ required: true, message: '单元名称不能为空', trigger: ['blur', 'change'] }],
  49. number: [{ required: true, message: '单元号不能为空', trigger: ['blur', 'change'] }],
  50. }
  51. })
  52. // 打开弹窗
  53. const openDialog = (row: any, params: any) => {
  54. resetForm()
  55. if (params) {
  56. state.ruleForm = {
  57. ...state.ruleForm,
  58. ...params
  59. }
  60. }
  61. if (row) {
  62. (state.ruleForm as any).id = row.id;
  63. (state.ruleForm as any).plotId = row.plotId;
  64. getDetail()
  65. }
  66. state.dialogVisible = true
  67. }
  68. const resetForm = () => {
  69. state.ruleForm = {
  70. id: 0,
  71. name: '',
  72. organizationId: '',
  73. plotId: '',
  74. floorId: '',
  75. heatStaId: '',
  76. number: '',
  77. remark: '',
  78. status: 1
  79. }
  80. }
  81. // 关闭弹窗
  82. const closeDialog = () => {
  83. state.dialogVisible = false;
  84. (formRef.value as any).clearValidate()
  85. }
  86. // 取消
  87. const onCancel = () => {
  88. closeDialog()
  89. }
  90. const getDetail = () => {
  91. api.unit.detail(state.ruleForm.id)
  92. .then((res: any) => {
  93. state.ruleForm = {
  94. ...res,
  95. heatStaId: res.heatStaId || ''
  96. }
  97. })
  98. }
  99. // 新增
  100. const onSubmit = () => {
  101. const formWrap = unref(formRef) as any
  102. if (!formWrap) return;
  103. formWrap.validate((valid: boolean) => {
  104. if (valid) {
  105. let params = { ...state.ruleForm }
  106. if (params.id) {
  107. //修改
  108. api.unit.edit(params).then(() => {
  109. ElMessage.success('单元修改成功')
  110. closeDialog() // 关闭弹窗
  111. emit('queryList')
  112. })
  113. } else {
  114. //添加
  115. api.unit.add(params).then(() => {
  116. ElMessage.success('单元添加成功')
  117. closeDialog() // 关闭弹窗
  118. emit('queryList')
  119. })
  120. }
  121. }
  122. })
  123. }
  124. return {
  125. openDialog,
  126. closeDialog,
  127. onCancel,
  128. onSubmit,
  129. formRef,
  130. ...toRefs(state)
  131. }
  132. }
  133. })
  134. </script>