From c00d8077c191ad2488db9191039576370e59d484 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Thu, 10 Jul 2025 10:36:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=88=97=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataManger/deviceData/dynamicColumns.ts | 1 - .../views/dataManger/deviceData/example.ts | 12 -- .../src/views/dataManger/deviceData/index.vue | 58 +++++++--- .../src/views/dataManger/deviceData/test.vue | 108 ++++++++++++++++++ .../src/views/dataManger/deviceData/types.ts | 1 - 5 files changed, 152 insertions(+), 28 deletions(-) create mode 100644 apps/web-antd/src/views/dataManger/deviceData/test.vue diff --git a/apps/web-antd/src/views/dataManger/deviceData/dynamicColumns.ts b/apps/web-antd/src/views/dataManger/deviceData/dynamicColumns.ts index 501fedb..db18a38 100644 --- a/apps/web-antd/src/views/dataManger/deviceData/dynamicColumns.ts +++ b/apps/web-antd/src/views/dataManger/deviceData/dynamicColumns.ts @@ -9,7 +9,6 @@ export const fieldNameMapping: FieldMapping = { DeviceType: '设备类型', DeviceId: '设备ID', Timestamps: '时间戳', - APPData: '应用数据', // 可以根据需要添加更多映射 }; diff --git a/apps/web-antd/src/views/dataManger/deviceData/example.ts b/apps/web-antd/src/views/dataManger/deviceData/example.ts index 870e56b..0967bda 100644 --- a/apps/web-antd/src/views/dataManger/deviceData/example.ts +++ b/apps/web-antd/src/views/dataManger/deviceData/example.ts @@ -64,18 +64,6 @@ export const validateAndCleanData = (data: any[]): DynamicDeviceData[] => { case 'DeviceId': cleaned[key] = value ? String(value) : ''; break; - case 'APPData': - // 尝试解析JSON数据 - try { - if (typeof value === 'string') { - cleaned[key] = JSON.parse(value); - } else { - cleaned[key] = value; - } - } catch { - cleaned[key] = value; - } - break; default: // 对于未知字段,保持原值 cleaned[key] = value; diff --git a/apps/web-antd/src/views/dataManger/deviceData/index.vue b/apps/web-antd/src/views/dataManger/deviceData/index.vue index 4bb681f..37b0fb0 100644 --- a/apps/web-antd/src/views/dataManger/deviceData/index.vue +++ b/apps/web-antd/src/views/dataManger/deviceData/index.vue @@ -31,10 +31,28 @@ const fixedColumns = computed(() => [ ]); // 合并固定列和动态列 -const allColumns = computed(() => [ - ...fixedColumns.value, - ...dynamicColumns.value, -]); +const allColumns = computed(() => { + const columns = [ + ...fixedColumns.value, + ...dynamicColumns.value, + ]; + console.log('当前所有列定义:', columns); + return columns; +}); + +// 初始化默认列(防止表格空白) +const initDefaultColumns = () => { + if (dynamicColumns.value.length === 0) { + dynamicColumns.value = [ + { field: 'SystemName', title: '系统名称', minWidth: '150' }, + { field: 'DeviceType', title: '设备类型', minWidth: '150' }, + { field: 'DeviceId', title: '设备ID', minWidth: '150' }, + ]; + } +}; + +// 初始化默认列 +initDefaultColumns(); const formOptions: VbenFormProps = { schema: querySchema.value, @@ -67,7 +85,10 @@ const gridOptions: VxeGridProps = { columns: allColumns, height: 'auto', keepSource: true, - pagerConfig: {}, + pagerConfig: { + currentPage: 1, + pageSize: 20, + }, toolbarConfig: { custom: true, search: true, @@ -89,21 +110,30 @@ const gridOptions: VxeGridProps = { }, }); - // 处理数据并动态生成列定义 + console.log('API返回的原始数据:', data); + + // 简化处理逻辑,先确保基本功能正常 if (data?.items && data.items.length > 0) { - // 验证和清理数据 - const cleanedData = validateAndCleanData(data.items); + console.log('原始items数据:', data.items); + + // 直接使用原始数据,不进行复杂处理 + const items = data.items; // 动态生成列定义 - dynamicColumns.value = generateDynamicColumns(cleanedData); + const generatedColumns = generateDynamicColumns(items); + console.log('生成的列定义:', generatedColumns); - // 返回处理后的数据 - return { - ...data, - items: cleanedData, - }; + // 更新动态列 + dynamicColumns.value = generatedColumns; + + // 强制更新列定义 + await nextTick(); + + console.log('返回给表格的数据:', data); + return data; } + console.log('没有数据或数据为空'); return data; }, }, diff --git a/apps/web-antd/src/views/dataManger/deviceData/test.vue b/apps/web-antd/src/views/dataManger/deviceData/test.vue new file mode 100644 index 0000000..265d4cb --- /dev/null +++ b/apps/web-antd/src/views/dataManger/deviceData/test.vue @@ -0,0 +1,108 @@ + + + diff --git a/apps/web-antd/src/views/dataManger/deviceData/types.ts b/apps/web-antd/src/views/dataManger/deviceData/types.ts index ac1904f..4f3b044 100644 --- a/apps/web-antd/src/views/dataManger/deviceData/types.ts +++ b/apps/web-antd/src/views/dataManger/deviceData/types.ts @@ -7,7 +7,6 @@ export interface BaseDeviceData { DeviceType?: string; DeviceId?: string; Timestamps?: string; - APPData?: string; [key: string]: any; // 允许任意额外字段 }