修复错误

This commit is contained in:
ChenYi 2025-07-16 16:53:43 +08:00
parent ba7ebdb348
commit 150c5a96f5
2 changed files with 63 additions and 28 deletions

View File

@ -52,20 +52,34 @@ export const generateDynamicColumns = (data: DynamicDeviceData[]): ColumnConfig[
return fields
.filter(field => !excludeFields.includes(field))
.map(field => {
const columnConfig: any = {
field,
title: fieldNameMapping[field] || field,
// 确保字段名是有效的字符串
const safeField = String(field || '').trim();
if (!safeField) return null;
const columnConfig: ColumnConfig = {
field: safeField,
title: fieldNameMapping[safeField] || safeField,
minWidth: 150,
showOverflow: true,
};
// 应用字段类型配置
if (fieldTypeConfig[field]) {
Object.assign(columnConfig, fieldTypeConfig[field]);
// 应用字段类型配置,确保配置是安全的
if (fieldTypeConfig[safeField]) {
const typeConfig = fieldTypeConfig[safeField];
if (typeConfig.formatter && typeof typeConfig.formatter === 'function') {
columnConfig.formatter = typeConfig.formatter;
}
if (typeConfig.width !== undefined) {
columnConfig.width = typeConfig.width;
}
if (typeConfig.minWidth !== undefined) {
columnConfig.minWidth = typeConfig.minWidth;
}
}
return columnConfig;
});
})
.filter(Boolean) as ColumnConfig[]; // 过滤掉null值
};
// 获取所有可能的字段(用于预定义列)

View File

@ -59,26 +59,39 @@ const dynamicColumns = ref<any[]>([]);
// - IoTDBTreeModelDeviceDataDto
const fixedColumns = [
{ title: '序号', type: 'seq', width: 50 },
{ field: 'Timestamps', title: $t('abp.IoTDBBase.Timestamps'), minWidth: 150 },
{ field: 'SystemName', title: $t('abp.IoTDBBase.SystemName'), minWidth: 150 },
{ field: 'ProjectId', title: $t('abp.IoTDBBase.ProjectId'), minWidth: 150 },
{ field: 'DeviceType', title: $t('abp.IoTDBBase.DeviceType'), minWidth: 150 },
{ title: '序号', type: 'seq', width: 50, field: 'seq' },
{ field: 'Timestamps', title: $t('abp.IoTDBBase.Timestamps'), minWidth: 150, showOverflow: true },
{ field: 'SystemName', title: $t('abp.IoTDBBase.SystemName'), minWidth: 150, showOverflow: true },
{ field: 'ProjectId', title: $t('abp.IoTDBBase.ProjectId'), minWidth: 150, showOverflow: true },
{ field: 'DeviceType', title: $t('abp.IoTDBBase.DeviceType'), minWidth: 150, showOverflow: true },
{
field: 'IoTDataType',
title: $t('abp.IoTDBBase.IoTDataType'),
minWidth: 150,
showOverflow: true,
},
{ field: 'DeviceId', title: $t('abp.IoTDBBase.DeviceId'), minWidth: 150 },
{ field: 'DeviceId', title: $t('abp.IoTDBBase.DeviceId'), minWidth: 150, showOverflow: true },
];
// - 使
const allColumns = computed(() => [...fixedColumns, ...dynamicColumns.value]);
const allColumns = computed(() => {
const columns = [...fixedColumns];
//
if (dynamicColumns.value && Array.isArray(dynamicColumns.value)) {
const validDynamicColumns = dynamicColumns.value.filter(col =>
col && typeof col === 'object' && col.field && col.title
);
columns.push(...validDynamicColumns);
}
return columns;
});
//
const initDefaultColumns = () => {
if (dynamicColumns.value.length === 0) {
//
// dynamicColumns
if (!Array.isArray(dynamicColumns.value)) {
dynamicColumns.value = [];
}
};
@ -249,20 +262,28 @@ const gridOptions: VxeGridProps<any> = {
// 使
if (data?.items && data.items.length > 0) {
//
const generatedColumns = generateDynamicColumns(data.items);
try {
//
const generatedColumns = generateDynamicColumns(data.items);
//
dynamicColumns.value = generatedColumns;
//
dynamicColumns.value = generatedColumns;
// 使setStategridOptions
await nextTick();
gridApi.setState({
gridOptions: {
...gridOptions,
columns: allColumns.value,
},
});
// 使setStategridOptions
await nextTick();
if (gridApi && gridApi.setState) {
gridApi.setState({
gridOptions: {
...gridOptions,
columns: allColumns.value,
},
});
}
} catch (error) {
console.error('更新列定义时出错:', error);
// 使
dynamicColumns.value = [];
}
// 使totalCount
const result = {