edit.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. nodeId: '',
  40. number: '',
  41. remark: '',
  42. status: 1
  43. },
  44. rules: {
  45. name: [{ required: true, message: '单元名称不能为空', trigger: ['blur', 'change'] }],
  46. number: [{ required: true, message: '单元号不能为空', trigger: ['blur', 'change'] }],
  47. }
  48. })
  49. // 打开弹窗
  50. const openDialog = (row: any, params: any) => {
  51. resetForm()
  52. if (params) {
  53. state.ruleForm = {
  54. ...state.ruleForm,
  55. ...params
  56. }
  57. }
  58. if (row) {
  59. (state.ruleForm as any).id = row.id;
  60. (state.ruleForm as any).plotId = row.plotId;
  61. getDetail()
  62. }
  63. state.dialogVisible = true
  64. }
  65. const resetForm = () => {
  66. state.ruleForm = {
  67. id: 0,
  68. name: '',
  69. nodeId: '',
  70. number: '',
  71. remark: '',
  72. status: 1
  73. }
  74. }
  75. // 关闭弹窗
  76. const closeDialog = () => {
  77. state.dialogVisible = false;
  78. (formRef.value as any).clearValidate()
  79. }
  80. // 取消
  81. const onCancel = () => {
  82. closeDialog()
  83. }
  84. const getDetail = () => {
  85. api.unit.detail(state.ruleForm.id)
  86. .then((res: any) => {
  87. state.ruleForm = {
  88. ...res,
  89. heatStaId: res.heatStaId || ''
  90. }
  91. })
  92. }
  93. // 新增
  94. const onSubmit = () => {
  95. const formWrap = unref(formRef) as any
  96. if (!formWrap) return;
  97. formWrap.validate((valid: boolean) => {
  98. if (valid) {
  99. let params = { ...state.ruleForm }
  100. if (params.id) {
  101. //修改
  102. api.unit.edit(params).then(() => {
  103. ElMessage.success('单元修改成功')
  104. closeDialog() // 关闭弹窗
  105. emit('queryList')
  106. })
  107. } else {
  108. //添加
  109. api.unit.add(params).then(() => {
  110. ElMessage.success('单元添加成功')
  111. closeDialog() // 关闭弹窗
  112. emit('queryList')
  113. })
  114. }
  115. }
  116. })
  117. }
  118. return {
  119. openDialog,
  120. closeDialog,
  121. onCancel,
  122. onSubmit,
  123. formRef,
  124. ...toRefs(state)
  125. }
  126. }
  127. })
  128. </script>