Commit b481e3199bdb2f3a6bb745ede38d7704ffaf469d

Authored by ww
1 parent 7be76707

fix: 产品详情物模型,新增验证结构体中的标识符是否存在一致的情况

@@ -110,6 +110,7 @@ @@ -110,6 +110,7 @@
110 <StructFormModel 110 <StructFormModel
111 :has-struct-form="$props.hasStructForm!" 111 :has-struct-form="$props.hasStructForm!"
112 :disabled="$props.disabled" 112 :disabled="$props.disabled"
  113 + :value-list="getValue"
113 @register="registerModal" 114 @register="registerModal"
114 @submit="handleSaveStruct" 115 @submit="handleSaveStruct"
115 /> 116 />
@@ -7,21 +7,28 @@ @@ -7,21 +7,28 @@
7 import { BasicForm, useForm } from '/@/components/Form'; 7 import { BasicForm, useForm } from '/@/components/Form';
8 import { formSchemas } from './config'; 8 import { formSchemas } from './config';
9 import { BasicModal, useModalInner } from '/@/components/Modal'; 9 import { BasicModal, useModalInner } from '/@/components/Modal';
10 - import { OpenModalMode, OpenModalParams } from './type'; 10 + import { OpenModalMode, OpenModalParams, StructRecord } from './type';
11 import { ref, unref } from 'vue'; 11 import { ref, unref } from 'vue';
12 import { transfromToStructJSON } from './util'; 12 import { transfromToStructJSON } from './util';
13 import { cloneDeep } from 'lodash-es'; 13 import { cloneDeep } from 'lodash-es';
14 import { DataType, StructJSON } from '/@/api/device/model/modelOfMatterModel'; 14 import { DataType, StructJSON } from '/@/api/device/model/modelOfMatterModel';
15 import { isArray } from '/@/utils/is'; 15 import { isArray } from '/@/utils/is';
  16 + import { useMessage } from '/@/hooks/web/useMessage';
16 17
17 const modalReceiveRecord = ref<OpenModalParams>({ 18 const modalReceiveRecord = ref<OpenModalParams>({
18 mode: OpenModalMode.CREATE, 19 mode: OpenModalMode.CREATE,
19 }); 20 });
20 21
21 - const props = defineProps<{ disabled: boolean; hasStructForm: boolean }>(); 22 + const props = defineProps<{
  23 + disabled: boolean;
  24 + hasStructForm: boolean;
  25 + valueList: StructRecord[];
  26 + }>();
22 27
23 const emit = defineEmits(['register', 'submit']); 28 const emit = defineEmits(['register', 'submit']);
24 29
  30 + const { createMessage } = useMessage();
  31 +
25 const [register, { validate, setFieldsValue, setProps }] = useForm({ 32 const [register, { validate, setFieldsValue, setProps }] = useForm({
26 labelWidth: 100, 33 labelWidth: 100,
27 schemas: formSchemas(props.hasStructForm), 34 schemas: formSchemas(props.hasStructForm),
@@ -52,6 +59,10 @@ @@ -52,6 +59,10 @@
52 setProps({ disabled: props.disabled }); 59 setProps({ disabled: props.disabled });
53 }); 60 });
54 61
  62 + const validateRepeat = (value: StructRecord, valueList: StructRecord[]) => {
  63 + return valueList.filter((item) => item.identifier === value.identifier).length >= 1;
  64 + };
  65 +
55 const handleSubmit = async () => { 66 const handleSubmit = async () => {
56 try { 67 try {
57 const _value = await validate(); 68 const _value = await validate();
@@ -62,6 +73,12 @@ @@ -62,6 +73,12 @@
62 ? { id: unref(modalReceiveRecord)?.record?.id } 73 ? { id: unref(modalReceiveRecord)?.record?.id }
63 : {}), 74 : {}),
64 }; 75 };
  76 +
  77 + if (validateRepeat(_value, props.valueList)) {
  78 + createMessage.error('存在一致的标识符');
  79 + return;
  80 + }
  81 +
65 emit('submit', unref(modalReceiveRecord).mode, cloneDeep(value)); 82 emit('submit', unref(modalReceiveRecord).mode, cloneDeep(value));
66 closeModal(); 83 closeModal();
67 } catch (error) {} 84 } catch (error) {}