From 572cad895a0077ef31645b28d206ab440c5d2037 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Thu, 18 Sep 2025 13:45:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=AE=BE=E5=A4=87=E6=95=B0?= =?UTF-8?q?=E5=88=97=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deviceData/dynamicColumns.ts | 23 +++++---- .../iotdbdatamanagement/deviceData/index.vue | 51 ++++++++++--------- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/dynamicColumns.ts b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/dynamicColumns.ts index a6103b4..b1273d9 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/dynamicColumns.ts +++ b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/dynamicColumns.ts @@ -13,22 +13,22 @@ export const fieldNameMapping: FieldMapping = { IoTDataType: 'IoT数据类型', DeviceType: '设备类型', DeviceAddress: '设备ID', - Timestamps: '时间戳', + // Timestamps: '时间戳', // 已隐藏,使用TimestampStr替代 // 可以根据需要添加更多映射 }; // 字段类型配置 export const fieldTypeConfig: FieldTypeConfig = { - Timestamps: { - formatter: (value: string) => { - if (!value) return ''; - try { - return new Date(value).toLocaleString(); - } catch { - return value; - } - }, - }, + // Timestamps: { // 已隐藏,使用TimestampStr替代 + // formatter: (value: string) => { + // if (!value) return ''; + // try { + // return new Date(value).toLocaleString(); + // } catch { + // return value; + // } + // }, + // }, // 可以根据需要添加更多类型配置 }; @@ -40,6 +40,7 @@ const FIXED_FIELDS = [ 'DeviceAddress', 'TimestampStr', 'FormattedTimestamps', + 'Timestamps', // 添加Timestamps到固定字段列表,确保它被隐藏 'DeviceAddress', ]; diff --git a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue index 99225a6..3df9407 100644 --- a/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue +++ b/apps/web-antd/src/views/iotdbdatamanagement/deviceData/index.vue @@ -8,8 +8,10 @@ import { useRoute } from 'vue-router'; import { Page } from '@vben/common-ui'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; -import { postDeviceInfoPage } from '#/api-client'; -import { postTreeModelDeviceDataInfoPage } from '#/api-client'; +import { + postDeviceInfoPage, + postTreeModelDeviceDataInfoPage, +} from '#/api-client'; import { $t } from '#/locales'; import { generateDynamicColumns } from './dynamicColumns'; @@ -44,10 +46,16 @@ const fetchDeviceOptions = async () => { // 根据设备地址获取设备信息对象 const getDeviceInfoByAddress = (deviceAddress: string) => { - if (!deviceAddress || !deviceOptions.value || deviceOptions.value.length === 0) { + if ( + !deviceAddress || + !deviceOptions.value || + deviceOptions.value.length === 0 + ) { return null; } - return deviceOptions.value.find((device) => device.deviceAddress === deviceAddress); + return deviceOptions.value.find( + (device) => device.deviceAddress === deviceAddress, + ); }; // 格式化日期为 yyyy-MM-dd HH:mm:ss 格式 @@ -77,7 +85,7 @@ const dynamicColumns = ref([]); const fixedColumns = [ { title: '序号', type: 'seq', width: 50, field: 'seq', slots: {} }, { - field: 'Timestamps', + field: 'TimestampStr', title: $t('abp.IoTDBBase.Timestamps'), minWidth: 150, showOverflow: true, @@ -273,20 +281,20 @@ const gridOptions: VxeGridProps = { formValues || (gridApi?.formApi ? await gridApi.formApi.getValues() : {}) || {}; - + // 如果表单中没有DeviceAddress,但有路由参数,使用路由参数 if (!currentFormValues.DeviceAddress && DeviceAddress) { currentFormValues.DeviceAddress = DeviceAddress as string; } - + // 如果表单中没有IoTDataType,但有路由参数,使用路由参数 if (!currentFormValues.IoTDataType && IoTDataType) { currentFormValues.IoTDataType = IoTDataType as string; } - + // 处理IoTDataType,保持字符串类型 const ioTDataTypeValue = currentFormValues.IoTDataType; - + // 调试:打印表单值和路由参数 console.log('表单值:', currentFormValues); console.log('路由参数:', { IoTDataType, DeviceAddress }); @@ -328,7 +336,7 @@ const gridOptions: VxeGridProps = { EndCreationTime: endCreationTime, }); console.log('调用来源:', new Error().stack); - + const { data } = await postTreeModelDeviceDataInfoPage({ body: { pageIndex: page.currentPage, @@ -451,21 +459,21 @@ const initializeGrid = async () => { // 确保表单值正确设置 const currentValues = await gridApi.formApi.getValues(); const updatedValues = { ...currentValues }; - + if (!currentValues.DeviceAddress && DeviceAddress) { updatedValues.DeviceAddress = DeviceAddress as string; } - + if (!currentValues.IoTDataType && IoTDataType) { updatedValues.IoTDataType = IoTDataType as string; } - + if (updatedValues !== currentValues) { await gridApi.formApi.setValues(updatedValues); // 等待表单值更新完成 await nextTick(); } - + // 延迟清除初始化标志,让表单值变化监听来处理查询 setTimeout(() => { isInitializing.value = false; @@ -486,19 +494,18 @@ const initializeGrid = async () => { // 监听路由参数变化,当有路由参数时自动触发查询 watch( - () => [IoTDataType, DeviceAddress], + () => [IoTDataType, DeviceAddress], async (newValues, oldValues) => { // 如果正在初始化,不触发额外的查询 if (isInitializing.value || !isGridInitialized.value) { return; } - + // 只有当路由参数真正发生变化时才触发查询 - const hasChanged = oldValues && ( - newValues[0] !== oldValues[0] || - newValues[1] !== oldValues[1] - ); - + const hasChanged = + oldValues && + (newValues[0] !== oldValues[0] || newValues[1] !== oldValues[1]); + if (hasChanged && newValues.some(Boolean) && gridApi) { // 延迟一下确保表单值已经设置 setTimeout(() => { @@ -509,8 +516,6 @@ watch( { immediate: false }, // 改为false,避免立即触发 ); - - // 页面初始化时,延迟初始化表格 onMounted(async () => { // 延迟初始化,确保VXE表格组件已完全挂载