From 569f75e96d897e0b2270e1e139b0a8883679c650 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Thu, 8 Jan 2026 09:56:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=B8=8A=E4=B8=8B=E7=BA=BF?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicemanagement/deviceinfo/index.vue | 50 +++++++++++++++++-- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue b/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue index 3e88fe9..fbfe3ba 100644 --- a/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue +++ b/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue @@ -1378,9 +1378,37 @@ const openBindModal = async ( bindModalApi.open(); await nextTick(); + // 根据已选设备的当前绑定状态,预填表单 + // 单选设备时,直接使用该设备当前的绑定配置 + let isNeedConfigDevicMdoel = false; + let deviceThingModelDataId: string | undefined; + + if (selectedRows.length === 1) { + const row = selectedRows[0] || {}; + isNeedConfigDevicMdoel = !!row.isNeedConfigDevicMdoel; + if (row.deviceThingModelDataId) { + deviceThingModelDataId = String(row.deviceThingModelDataId); + } + } else { + // 多选时:如果所有设备都已开启配置并且绑定的是同一个物模型,则进行统一预填 + const allNeedConfig = selectedRows.every( + (row) => !!row.isNeedConfigDevicMdoel, + ); + const firstModelId = selectedRows[0]?.deviceThingModelDataId; + const allSameModel = + allNeedConfig && + !!firstModelId && + selectedRows.every( + (row) => row.deviceThingModelDataId === firstModelId, + ); + + isNeedConfigDevicMdoel = allNeedConfig; + deviceThingModelDataId = allSameModel ? String(firstModelId) : undefined; + } + await bindFormApi.setValues({ - isNeedConfigDevicMdoel: false, - deviceThingModelDataId: undefined, + isNeedConfigDevicMdoel, + deviceThingModelDataId, _ioTPlatformProductId: productId ? String(productId) : undefined, }); @@ -2047,8 +2075,22 @@ const toolbarActions = computed(() => [ 已选择 {{ bindRows.length }} 个设备: