diff --git a/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue b/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue index a3047b19..416a52c2 100644 --- a/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue +++ b/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue @@ -23,7 +23,12 @@

- PLC地址: {{ - InitAddress[formData.configuration.function] + - Number(formData.pointKey) || 0 - }} + PLC地址: {{ plc }}

(); const id = props.data.id; const collectorId = props.data.collectorId; const provider = props.data.provider; -const oldPointKey = props.data.pointKey; +const oldPointKey = props.data?.configuration?.parameter?.address; const InitAddress = { Coils: 1, @@ -305,7 +308,7 @@ const formData = ref({ quantity: 1, writeByteCount: '', byteCount: 2, - address: '', + address: undefined, }, codec: { provider: undefined, @@ -315,6 +318,7 @@ const formData = ref({ }, }, }, + address: undefined, pointKey: undefined, accessModes: [], nspwc: false, @@ -322,6 +326,11 @@ const formData = ref({ description: '', }); +const plc = computed(() =>{ + const configuration = formData.value.configuration + return configuration.function !== undefined && formData.value.address !== undefined ? InitAddress[configuration.function] + Number(formData.value.address) : 0 +}) + const handleOk = async () => { const data = await formRef.value?.validate(); delete data?.nspwc; @@ -337,15 +346,16 @@ const handleOk = async () => { provider, collectorId, interval, + pointKey: plc.value, }; - // address是多余字段,但是react版本上使用到了这个字段 params.configuration.parameter = { - ...params.configuration.parameter, - address: data?.pointKey, + ...params.configuration.parameter, + address: data?.address, }; loading.value = true; + const response = !id ? await savePointBatch(params).catch(() => {}) : await updatePoint(id, { ...props.data, ...params }).catch(() => {}); @@ -394,13 +404,23 @@ const checkProvider = (_rule: Rule, value: string): Promise => } }); +const checkFunction = (_: any, value: string) => { + if (value) { + formRef.value!.validateFields('address') + } + return Promise.resolve(''); +} const checkPointKey = (_rule: Rule, value: string): Promise => new Promise(async (resolve, reject) => { + console.log(value, formData.value!.configuration?.function) if (value || Number(value) === 0) { if (Number(oldPointKey) === Number(value)) return resolve(''); if (typeof value === 'object') return resolve(''); + if (!formData.value!.configuration?.function) return resolve(''); + + const plc = InitAddress[formData.value!.configuration?.function] + Number(value) const res: any = await _validateField(collectorId, { - pointKey: value, + pointKey: plc, }); return res.result?.passed ? resolve('') : reject(res.result.reason); } else { @@ -443,6 +463,7 @@ watch( const { writeByteCount, byteCount } = _value.configuration.parameter; formData.value = _value; + formData.value.address = _value.configuration?.parameter?.address if (!!_value.accessModes[0]?.value) { formData.value.accessModes = value.accessModes.map( (i: any) => i.value,