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, toRaw, unref } from 'vue';
|
3
|
+ import { ref, 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,11 +20,14 @@ |
|
@@ -20,11 +20,14 @@ |
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 currentEditIndex = ref<number>(-1);
|
24
|
const [registerModal] = useModalInner(({ mode, record }: ModalParamsType<StructJSON>) => {
|
24
|
const [registerModal] = useModalInner(({ mode, record }: ModalParamsType<StructJSON>) => {
|
25
|
unref(dataTypeFormRef)?.resetFieldsValue?.();
|
25
|
unref(dataTypeFormRef)?.resetFieldsValue?.();
|
26
|
currentMode.value = mode;
|
26
|
currentMode.value = mode;
|
27
|
- currentRecord.value = record;
|
27
|
+ currentEditIndex.value = props.value.findIndex(
|
|
|
28
|
+ (item) => item.identifier === record?.identifier
|
|
|
29
|
+ );
|
|
|
30
|
+
|
28
|
if (mode === DataActionModeEnum.UPDATE) {
|
31
|
if (mode === DataActionModeEnum.UPDATE) {
|
29
|
unref(dataTypeFormRef)?.setFieldsValue?.(record);
|
32
|
unref(dataTypeFormRef)?.setFieldsValue?.(record);
|
30
|
}
|
33
|
}
|
|
@@ -34,13 +37,19 @@ |
|
@@ -34,13 +37,19 @@ |
34
|
|
37
|
|
35
|
const handleValidateHasSameIdentifier = (formValue?: StructJSON) => {
|
38
|
const handleValidateHasSameIdentifier = (formValue?: StructJSON) => {
|
36
|
const { identifier } = formValue || {};
|
39
|
const { identifier } = formValue || {};
|
37
|
- if (
|
|
|
38
|
- unref(currentMode) === DataActionModeEnum.CREATE &&
|
|
|
39
|
- props.value.filter((item) => item.identifier === identifier).length >= 1
|
|
|
40
|
- ) {
|
|
|
41
|
- const message = '存在一致的标识符';
|
|
|
42
|
- createMessage.warn(message);
|
|
|
43
|
- return Promise.reject(message);
|
40
|
+ const message = '存在一致的标识符';
|
|
|
41
|
+
|
|
|
42
|
+ if (unref(currentMode) === DataActionModeEnum.CREATE) {
|
|
|
43
|
+ if (props.value.filter((item) => item.identifier === identifier).length >= 1) {
|
|
|
44
|
+ createMessage.warn(message);
|
|
|
45
|
+ return Promise.reject(message);
|
|
|
46
|
+ }
|
|
|
47
|
+ } else {
|
|
|
48
|
+ const index = props.value.findIndex((item) => item.identifier === formValue?.identifier);
|
|
|
49
|
+ if (index !== unref(currentEditIndex)) {
|
|
|
50
|
+ createMessage.warn(message);
|
|
|
51
|
+ return Promise.reject(message);
|
|
|
52
|
+ }
|
44
|
}
|
53
|
}
|
45
|
|
54
|
|
46
|
return Promise.resolve();
|
55
|
return Promise.resolve();
|
|
@@ -50,7 +59,7 @@ |
|
@@ -50,7 +59,7 @@ |
50
|
await unref(dataTypeFormRef)?.validate?.();
|
59
|
await unref(dataTypeFormRef)?.validate?.();
|
51
|
const value = unref(dataTypeFormRef)?.getFieldsValue?.();
|
60
|
const value = unref(dataTypeFormRef)?.getFieldsValue?.();
|
52
|
await handleValidateHasSameIdentifier(value);
|
61
|
await handleValidateHasSameIdentifier(value);
|
53
|
- emits('complete', value, toRaw(unref(currentRecord)));
|
62
|
+ emits('complete', value, unref(currentEditIndex));
|
54
|
};
|
63
|
};
|
55
|
</script>
|
64
|
</script>
|
56
|
|
65
|
|