修复错误

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 return fields
.filter(field => !excludeFields.includes(field)) .filter(field => !excludeFields.includes(field))
.map(field => { .map(field => {
const columnConfig: any = { // 确保字段名是有效的字符串
field, const safeField = String(field || '').trim();
title: fieldNameMapping[field] || field, if (!safeField) return null;
const columnConfig: ColumnConfig = {
field: safeField,
title: fieldNameMapping[safeField] || safeField,
minWidth: 150, minWidth: 150,
showOverflow: true, showOverflow: true,
}; };
// 应用字段类型配置 // 应用字段类型配置,确保配置是安全的
if (fieldTypeConfig[field]) { if (fieldTypeConfig[safeField]) {
Object.assign(columnConfig, fieldTypeConfig[field]); 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; return columnConfig;
}); })
.filter(Boolean) as ColumnConfig[]; // 过滤掉null值
}; };
// 获取所有可能的字段(用于预定义列) // 获取所有可能的字段(用于预定义列)

View File

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