Commit da0c6ddafcd7e12075c3bc81217bd909c7386419
Merge branch 'fix/object-model-edit' into 'main_dev'
fix: 修复物模型结构体编辑时会新增 See merge request yunteng/thingskit-front!1227
Showing
2 changed files
with
12 additions
and
5 deletions
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 | }; |