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