Commit 05edf6d0e4b8d669f281dbec361a654e769deeca

Authored by ww
1 parent ed05d0e9

fix: 修复物模型结构体编辑时会新增

1 <script setup lang="ts"> 1 <script setup lang="ts">
2 import { BasicModal, useModalInner } from '/@/components/Modal'; 2 import { BasicModal, useModalInner } from '/@/components/Modal';
3 - import { ref, unref } from 'vue'; 3 + import { ref, toRaw, unref } from 'vue';
4 import { StructJSON } from '/@/api/device/model/modelOfMatterModel'; 4 import { StructJSON } from '/@/api/device/model/modelOfMatterModel';
5 import { DataActionModeEnum } from '/@/enums/toolEnum'; 5 import { DataActionModeEnum } from '/@/enums/toolEnum';
6 import { DataTypeForm } from '../DataTypeForm'; 6 import { DataTypeForm } from '../DataTypeForm';
@@ -20,9 +20,11 @@ @@ -20,9 +20,11 @@
20 const emits = defineEmits(['register', 'complete']); 20 const emits = defineEmits(['register', 'complete']);
21 21
22 const currentMode = ref(DataActionModeEnum.CREATE); 22 const currentMode = ref(DataActionModeEnum.CREATE);
  23 + const currentRecord = ref<StructJSON>();
23 const [registerModal] = useModalInner(({ mode, record }: ModalParamsType<StructJSON>) => { 24 const [registerModal] = useModalInner(({ mode, record }: ModalParamsType<StructJSON>) => {
24 unref(dataTypeFormRef)?.resetFieldsValue?.(); 25 unref(dataTypeFormRef)?.resetFieldsValue?.();
25 currentMode.value = mode; 26 currentMode.value = mode;
  27 + currentRecord.value = record;
26 if (mode === DataActionModeEnum.UPDATE) { 28 if (mode === DataActionModeEnum.UPDATE) {
27 unref(dataTypeFormRef)?.setFieldsValue?.(record); 29 unref(dataTypeFormRef)?.setFieldsValue?.(record);
28 } 30 }
@@ -48,7 +50,7 @@ @@ -48,7 +50,7 @@
48 await unref(dataTypeFormRef)?.validate?.(); 50 await unref(dataTypeFormRef)?.validate?.();
49 const value = unref(dataTypeFormRef)?.getFieldsValue?.(); 51 const value = unref(dataTypeFormRef)?.getFieldsValue?.();
50 await handleValidateHasSameIdentifier(value); 52 await handleValidateHasSameIdentifier(value);
51 - emits('complete', value); 53 + emits('complete', value, toRaw(unref(currentRecord)));
52 }; 54 };
53 </script> 55 </script>
54 56
@@ -50,10 +50,15 @@ @@ -50,10 +50,15 @@
50 } 50 }
51 }; 51 };
52 52
53 - const handleEditComplete = (value: StructJSON) => { 53 + const handleEditComplete = (value: StructJSON, prevValue: StructJSON) => {
54 const _value = cloneDeep(toRaw(unref(props.value))); 54 const _value = cloneDeep(toRaw(unref(props.value)));
55 - const index = _value.findIndex((item) => item.identifier === value.identifier);  
56 - ~index ? _value.splice(index, 1, value) : _value.push(value); 55 +
  56 + if (prevValue) {
  57 + const index = _value.findIndex((item) => item.identifier === prevValue.identifier);
  58 + ~index && _value.splice(index, 1, value);
  59 + } else {
  60 + _value.push(value);
  61 + }
57 emits('update:value', _value); 62 emits('update:value', _value);
58 closeModal(); 63 closeModal();
59 }; 64 };