Compare commits
2 Commits
caf28b0ad7
...
59ab5facd5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59ab5facd5 | ||
|
|
3ac2ed83e9 |
@ -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",
|
||||||
|
|||||||
@ -237,7 +237,8 @@
|
|||||||
"Timestamps": "UTC时标(纳秒)",
|
"Timestamps": "UTC时标(纳秒)",
|
||||||
"FormattedTimestamps": "本地时间",
|
"FormattedTimestamps": "本地时间",
|
||||||
"DevicePath": "设备路径",
|
"DevicePath": "设备路径",
|
||||||
"DeviceAddress": "设备地址",
|
"DeviceAddress": "主设备地址",
|
||||||
|
"SubDevice": "从设备地址",
|
||||||
"CacheRefresh": "缓存刷新",
|
"CacheRefresh": "缓存刷新",
|
||||||
"TelemetryLog": "遥测日志",
|
"TelemetryLog": "遥测日志",
|
||||||
"PlatformLog": "平台日志",
|
"PlatformLog": "平台日志",
|
||||||
|
|||||||
@ -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到固定字段列表,确保它被隐藏
|
||||||
|
|||||||
@ -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,
|
||||||
// 确保分页功能正常工作
|
// 确保分页功能正常工作
|
||||||
|
|||||||
@ -6,10 +6,11 @@ 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; // 允许任意额外字段
|
||||||
}
|
}
|
||||||
|
|
||||||
// 动态设备数据类型
|
// 动态设备数据类型
|
||||||
export interface DynamicDeviceData extends BaseDeviceData {
|
export interface DynamicDeviceData extends BaseDeviceData {
|
||||||
[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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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'),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user