Commit c7a6a93cc7226dc618b5de0d24c26c4a68b8309d

Authored by ww
1 parent fb3cb170

fix: 修复产品物模型编辑时未校验标识符是否已存在

1 1 <script setup lang="ts">
2 2 import { BasicModal, useModalInner } from '/@/components/Modal';
3   - import { ref, toRaw, unref } from 'vue';
  3 + import { ref, 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,11 +20,14 @@
20 20 const emits = defineEmits(['register', 'complete']);
21 21
22 22 const currentMode = ref(DataActionModeEnum.CREATE);
23   - const currentRecord = ref<StructJSON>();
  23 + const currentEditIndex = ref<number>(-1);
24 24 const [registerModal] = useModalInner(({ mode, record }: ModalParamsType<StructJSON>) => {
25 25 unref(dataTypeFormRef)?.resetFieldsValue?.();
26 26 currentMode.value = mode;
27   - currentRecord.value = record;
  27 + currentEditIndex.value = props.value.findIndex(
  28 + (item) => item.identifier === record?.identifier
  29 + );
  30 +
28 31 if (mode === DataActionModeEnum.UPDATE) {
29 32 unref(dataTypeFormRef)?.setFieldsValue?.(record);
30 33 }
... ... @@ -34,13 +37,19 @@
34 37
35 38 const handleValidateHasSameIdentifier = (formValue?: StructJSON) => {
36 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 55 return Promise.resolve();
... ... @@ -50,7 +59,7 @@
50 59 await unref(dataTypeFormRef)?.validate?.();
51 60 const value = unref(dataTypeFormRef)?.getFieldsValue?.();
52 61 await handleValidateHasSameIdentifier(value);
53   - emits('complete', value, toRaw(unref(currentRecord)));
  62 + emits('complete', value, unref(currentEditIndex));
54 63 };
55 64 </script>
56 65
... ...
... ... @@ -50,12 +50,10 @@
50 50 }
51 51 };
52 52
53   - const handleEditComplete = (value: StructJSON, prevValue: StructJSON) => {
  53 + const handleEditComplete = (value: StructJSON, currentEditIndex: number) => {
54 54 const _value = cloneDeep(toRaw(unref(props.value)));
55   -
56   - if (prevValue) {
57   - const index = _value.findIndex((item) => item.identifier === prevValue.identifier);
58   - ~index && _value.splice(index, 1, value);
  55 + if (~currentEditIndex) {
  56 + _value.splice(currentEditIndex, 1, value);
59 57 } else {
60 58 _value.push(value);
61 59 }
... ...