From 59ab5facd538323182cbda2e1f6410431f35a1c6 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Mon, 9 Mar 2026 11:35:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=95=B0=E6=8D=AE=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iotdbdatamanagement/deviceData/index.vue | 49 ++++++++++++++----- .../iotdbdatamanagement/onenetLog/schema.ts | 6 +++ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue index 2240e66..6076c15 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue +++ b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue @@ -81,8 +81,11 @@ const { IoTDataType, DeviceAddress } = route.query; // 动态列定义 const dynamicColumns = ref([]); -// 固定列定义(始终显示)- 基于 IoTDBTreeModelDeviceDataDto 类型 -const fixedColumns = [ +// 是否显示 Sub_Device 列 +const showSubDeviceColumn = ref(false); + +// 固定列定义(基础列,始终显示)- 基于 IoTDBTreeModelDeviceDataDto 类型 +const fixedBaseColumns = [ { title: '序号', type: 'seq', width: 50, field: 'seq', slots: {} }, { field: 'TimestampStr', @@ -119,23 +122,34 @@ const fixedColumns = [ showOverflow: true, slots: {}, }, - { - field: 'SubDevice', - title: $t('abp.IoTDBBase.SubDevice'), - minWidth: 150, - showOverflow: true, - slots: {}, - }, ]; +// Sub_Device 固定列定义 +const subDeviceColumn = { + field: 'SubDevice', + title: $t('abp.IoTDBBase.SubDevice'), + minWidth: 150, + showOverflow: true, + slots: {}, +}; + // 合并固定列和动态列 - 使用计算属性确保响应式 const allColumns = computed(() => { // 如果表格未初始化,只返回固定列 if (!isGridInitialized.value) { - return [...fixedColumns]; + const baseColumns = [...fixedBaseColumns]; + if (showSubDeviceColumn.value) { + baseColumns.push(subDeviceColumn); + } + return baseColumns; } - const columns = [...fixedColumns]; + const columns = [...fixedBaseColumns]; + + // 根据 DeviceType 控制 Sub_Device 列是否显示 + if (showSubDeviceColumn.value) { + columns.push(subDeviceColumn); + } // 安全地添加动态列 if (dynamicColumns.value && Array.isArray(dynamicColumns.value)) { @@ -157,6 +171,9 @@ const initDefaultColumns = () => { if (!Array.isArray(dynamicColumns.value)) { dynamicColumns.value = []; } + + // 默认不显示 Sub_Device 列,后续由表单值控制 + showSubDeviceColumn.value = false; }; // 表格是否已初始化 @@ -183,6 +200,14 @@ const formOptions: VbenFormProps = { return; } + // 根据 DeviceType 控制 Sub_Device 列是否显示 + if (changedFields.includes('DeviceType')) { + // DeviceTypeEnum: 未知=0, 网关设备=1, 直连设备=2, 子设备=3 + const deviceType = values.DeviceType; + showSubDeviceColumn.value = + deviceType === 3 || deviceType === '3'; + } + // 当任何相关字段发生变化时,刷新表格数据 const relevantFields = new Set([ 'DeviceAddress', @@ -259,7 +284,7 @@ const gridOptions: VxeGridProps = { highlight: true, labelField: 'name', }, - columns: fixedColumns, // 初始化时只使用固定列 + columns: fixedBaseColumns, // 初始化时只使用基础固定列 height: 'auto', keepSource: true, // 确保分页功能正常工作 diff --git a/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts b/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts index c4e60b3..59fb1b9 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts +++ b/apps/web-antd/src/views/iotdbdatamanagement/onenetLog/schema.ts @@ -107,6 +107,12 @@ export const tableSchema: any = computed((): VxeGridProps['columns'] => [ minWidth: '120', slots: {}, }, + { + field: 'subDevice', + title: $t('abp.IoTDBBase.SubDevice'), + minWidth: '120', + slots: {}, + }, { field: 'messageType', title: $t('abp.OneNETLog.MessageType'),