Compare commits

..

2 Commits

Author SHA1 Message Date
ChenYi
59ab5facd5 设备数据表格优化 2026-03-09 11:35:09 +08:00
ChenYi
3ac2ed83e9 优化数据列表展示,子设备新增地址列 2026-03-05 14:25:28 +08:00
6 changed files with 65 additions and 18 deletions

View File

@ -244,7 +244,8 @@
"Timestamps": "Timestamps", "Timestamps": "Timestamps",
"FormattedTimestamps": "Formatted Timestamps", "FormattedTimestamps": "Formatted Timestamps",
"DevicePath": "DevicePath", "DevicePath": "DevicePath",
"DeviceAddress": "Device Address", "DeviceAddress": "MasterDeviceAddress",
"SubDevice": "SubDevice",
"CacheRefresh": "Cache Refresh", "CacheRefresh": "Cache Refresh",
"TelemetryLog": "Telemetry Log", "TelemetryLog": "Telemetry Log",
"PlatformLog": "Platform Log", "PlatformLog": "Platform Log",

View File

@ -237,7 +237,8 @@
"Timestamps": "UTC时标(纳秒)", "Timestamps": "UTC时标(纳秒)",
"FormattedTimestamps": "本地时间", "FormattedTimestamps": "本地时间",
"DevicePath": "设备路径", "DevicePath": "设备路径",
"DeviceAddress": "设备地址", "DeviceAddress": "主设备地址",
"SubDevice": "从设备地址",
"CacheRefresh": "缓存刷新", "CacheRefresh": "缓存刷新",
"TelemetryLog": "遥测日志", "TelemetryLog": "遥测日志",
"PlatformLog": "平台日志", "PlatformLog": "平台日志",

View File

@ -1,3 +1,9 @@
/*
* @Description:
* @Author:
* @Date: 2025-09-18 10:20:19
* @LastEditors:
*/
import type { import type {
ColumnConfig, ColumnConfig,
DynamicDeviceData, DynamicDeviceData,
@ -37,7 +43,7 @@ const FIXED_FIELDS = [
// 'DataBaseName', // 'DataBaseName',
'DeviceType', 'DeviceType',
'IoTDataType', 'IoTDataType',
'DeviceAddress', 'SubDevice',
'TimestampStr', 'TimestampStr',
'FormattedTimestamps', 'FormattedTimestamps',
'Timestamps', // 添加Timestamps到固定字段列表确保它被隐藏 'Timestamps', // 添加Timestamps到固定字段列表确保它被隐藏

View File

@ -81,8 +81,11 @@ const { IoTDataType, DeviceAddress } = route.query;
// //
const dynamicColumns = ref<any[]>([]); const dynamicColumns = ref<any[]>([]);
// - IoTDBTreeModelDeviceDataDto // Sub_Device
const fixedColumns = [ const showSubDeviceColumn = ref(false);
// - IoTDBTreeModelDeviceDataDto
const fixedBaseColumns = [
{ title: '序号', type: 'seq', width: 50, field: 'seq', slots: {} }, { title: '序号', type: 'seq', width: 50, field: 'seq', slots: {} },
{ {
field: 'TimestampStr', field: 'TimestampStr',
@ -121,14 +124,32 @@ const fixedColumns = [
}, },
]; ];
// Sub_Device
const subDeviceColumn = {
field: 'SubDevice',
title: $t('abp.IoTDBBase.SubDevice'),
minWidth: 150,
showOverflow: true,
slots: {},
};
// - 使 // - 使
const allColumns = computed(() => { const allColumns = computed(() => {
// //
if (!isGridInitialized.value) { 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)) { if (dynamicColumns.value && Array.isArray(dynamicColumns.value)) {
@ -150,6 +171,9 @@ const initDefaultColumns = () => {
if (!Array.isArray(dynamicColumns.value)) { if (!Array.isArray(dynamicColumns.value)) {
dynamicColumns.value = []; dynamicColumns.value = [];
} }
// Sub_Device
showSubDeviceColumn.value = false;
}; };
// //
@ -176,13 +200,21 @@ const formOptions: VbenFormProps = {
return; 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([ const relevantFields = new Set([
'DeviceAddress', 'DeviceAddress',
'DeviceType',
'EndCreationTime', 'EndCreationTime',
'IoTDataType', 'IoTDataType',
'StartCreationTime', 'StartCreationTime',
'DeviceType',
]); ]);
const hasRelevantChange = changedFields.some((field) => const hasRelevantChange = changedFields.some((field) =>
relevantFields.has(field), relevantFields.has(field),
@ -252,7 +284,7 @@ const gridOptions: VxeGridProps<any> = {
highlight: true, highlight: true,
labelField: 'name', labelField: 'name',
}, },
columns: fixedColumns, // 使 columns: fixedBaseColumns, // 使
height: 'auto', height: 'auto',
keepSource: true, keepSource: true,
// //

View File

@ -6,6 +6,7 @@ export interface BaseDeviceData {
IoTDataType?: string; IoTDataType?: string;
DeviceType?: string; DeviceType?: string;
DeviceId?: string; DeviceId?: string;
SubDevice?: string;
Timestamps?: string; Timestamps?: string;
[key: string]: any; // 允许任意额外字段 [key: string]: any; // 允许任意额外字段
} }
@ -17,7 +18,7 @@ export interface DynamicDeviceData extends BaseDeviceData {
// 分页响应类型 // 分页响应类型
export interface DynamicPageResponse<T = DynamicDeviceData> { export interface DynamicPageResponse<T = DynamicDeviceData> {
items?: T[] | null; items?: null | T[];
totalCount?: number; totalCount?: number;
[key: string]: any; // 允许任意额外字段 [key: string]: any; // 允许任意额外字段
} }
@ -26,8 +27,8 @@ export interface DynamicPageResponse<T = DynamicDeviceData> {
export interface ColumnConfig { export interface ColumnConfig {
field: string; field: string;
title: string; title: string;
minWidth?: string | number; minWidth?: number | string;
width?: string | number; width?: number | string;
showOverflow?: boolean; showOverflow?: boolean;
formatter?: (value: any) => string; formatter?: (value: any) => string;
slots?: Record<string, any>; // 添加slots属性 slots?: Record<string, any>; // 添加slots属性
@ -42,10 +43,10 @@ export interface FieldMapping {
// 字段类型配置类型 // 字段类型配置类型
export interface FieldTypeConfig { export interface FieldTypeConfig {
[key: string]: { [key: string]: {
formatter?: (value: any) => string;
width?: string | number;
minWidth?: string | number;
slots?: Record<string, any>;
[key: string]: any; [key: string]: any;
formatter?: (value: any) => string;
minWidth?: number | string;
slots?: Record<string, any>;
width?: number | string;
}; };
} }

View File

@ -107,6 +107,12 @@ export const tableSchema: any = computed((): VxeGridProps['columns'] => [
minWidth: '120', minWidth: '120',
slots: {}, slots: {},
}, },
{
field: 'subDevice',
title: $t('abp.IoTDBBase.SubDevice'),
minWidth: '120',
slots: {},
},
{ {
field: 'messageType', field: 'messageType',
title: $t('abp.OneNETLog.MessageType'), title: $t('abp.OneNETLog.MessageType'),