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 | 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 | }; | ... | ... |