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 }} 个设备:
-
- {{ index + 1 }}. {{ row.deviceName || row.deviceAddress || row.id }} +
+
+ {{ index + 1 }}. + {{ row.deviceName || row.deviceAddress || row.id }} +
+
+ 当前是否需要配置设备模型: + {{ row.isNeedConfigDevicMdoel ? '是' : '否' }} + | + 当前已绑定设备端物模型: + {{ row.deviceThingModelName || '未绑定' }} +