From 1110c22a037b04c37a8102b97728b1ac77078b99 Mon Sep 17 00:00:00 2001 From: hwj Date: Tue, 10 Mar 2026 17:54:20 +0800 Subject: [PATCH] =?UTF-8?q?style=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E7=BB=B4=E4=BF=AE=E9=A1=B9=E7=9B=AE-=E6=96=B0?= =?UTF-8?q?=E5=A2=9E/=E7=BC=96=E8=BE=91-=E8=AE=BE=E5=A4=87=E5=A4=9A?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mes/repairItems/RepairItemsForm.vue | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/src/views/mes/repairItems/RepairItemsForm.vue b/src/views/mes/repairItems/RepairItemsForm.vue index 5846517b..8738c185 100644 --- a/src/views/mes/repairItems/RepairItemsForm.vue +++ b/src/views/mes/repairItems/RepairItemsForm.vue @@ -22,6 +22,9 @@ { if (isInitializing.value) return isSwitchingDeviceType.value = true - formData.value.deviceId = undefined + formData.value.deviceId = formData.value.deviceType === 1 ? [] : undefined deviceOptions.value = [] formData.value.componentId = undefined componentOptions.value = [] @@ -195,8 +198,9 @@ watch( if (formData.value.deviceType !== 2) return formData.value.componentId = undefined componentOptions.value = [] - if (typeof deviceId !== 'number') return - await loadComponentOptionsByDeviceId(deviceId) + const selectedId = typeof deviceId === 'number' ? deviceId : undefined + if (typeof selectedId !== 'number') return + await loadComponentOptionsByDeviceId(selectedId) } ) @@ -206,7 +210,16 @@ const validateDeviceId = (_: any, value: any, callback: any) => { return } const dt = formData.value.deviceType - if ((dt === 1 || dt === 2) && (value === undefined || value === null || value === '')) { + if (dt === 1) { + const ids = Array.isArray(value) ? value : [] + if (!ids.length) { + callback(new Error(t('EquipmentManagement.RepairItems.validatorDeviceRequired'))) + return + } + callback() + return + } + if (dt === 2 && (value === undefined || value === null || value === '')) { callback(new Error(t('EquipmentManagement.RepairItems.validatorDeviceRequired'))) return } @@ -246,12 +259,24 @@ const open = async (type: string, row?: any) => { dictReady.value = true } if (type === 'update' && row) { + const parseDeviceIds = (input: unknown) => { + if (input === undefined || input === null || input === '') return [] + if (Array.isArray(input)) return input.map((v) => Number(v)).filter((v) => !Number.isNaN(v)) + if (typeof input === 'number') return [input] + return String(input) + .split(',') + .map((v) => Number(v.trim())) + .filter((v) => !Number.isNaN(v)) + } + const deviceIds = parseDeviceIds(row.deviceId) formData.value = { id: row.id, subjectCode: row.subjectCode, subjectName: row.subjectName, deviceType: row.deviceType !== undefined && row.deviceType !== null ? Number(row.deviceType) : undefined, - deviceId: row.deviceId !== undefined && row.deviceId !== null ? Number(row.deviceId) : undefined, + deviceId: (row.deviceType !== undefined && row.deviceType !== null ? Number(row.deviceType) : undefined) === 1 + ? deviceIds + : deviceIds[0], componentId: row.componentId !== undefined && row.componentId !== null ? Number(row.componentId) : undefined, inspectionMethod: row.inspectionMethod !== undefined && row.inspectionMethod !== null ? String(row.inspectionMethod) : undefined, valueType: row.valueType !== undefined && row.valueType !== null ? String(row.valueType) : undefined, @@ -260,7 +285,14 @@ const open = async (type: string, row?: any) => { isEnable: row.isEnable !== undefined && row.isEnable !== null ? String(row.isEnable) : undefined } - if (typeof formData.value.deviceId === 'number') { + if (formData.value.deviceType === 1) { + const ids = Array.isArray(formData.value.deviceId) ? formData.value.deviceId : [] + const nameParts = row.deviceName ? String(row.deviceName).split(/[,,]/).map((v) => v.trim()).filter(Boolean) : [] + ids.forEach((id, idx) => { + const label = nameParts[idx] ? String(nameParts[idx]) : `ID:${id}` + deviceOptions.value = upsertOption(deviceOptions.value, { label, value: id }) + }) + } else if (typeof formData.value.deviceId === 'number') { const label = row.deviceName ? String(row.deviceName) : `ID:${formData.value.deviceId}` deviceOptions.value = upsertOption(deviceOptions.value, { label, value: formData.value.deviceId }) } @@ -284,12 +316,16 @@ const submitForm = async () => { await formRef.value.validate() formLoading.value = true try { + const buildDeviceIdParam = () => { + if (Array.isArray(formData.value.deviceId)) return formData.value.deviceId.join(',') + return formData.value.deviceId + } const data = { id: formType.value === 'update' ? formData.value.id : undefined, subjectCode: formData.value.subjectCode, subjectName: formData.value.subjectName, deviceType: formData.value.deviceType, - deviceId: formData.value.deviceId, + deviceId: buildDeviceIdParam(), componentId: formData.value.componentId, inspectionMethod: formData.value.inspectionMethod, valueType: formData.value.valueType,