Commit 05edf6d0e4b8d669f281dbec361a654e769deeca

Authored by ww
1 parent ed05d0e9

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

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