修复数据查询分页异常的问题
This commit is contained in:
parent
e4fcf728b8
commit
3384c9de4e
@ -23,8 +23,7 @@ const { DeviceType, DeviceId, FocusAddress } = route.query;
|
|||||||
// 动态列定义
|
// 动态列定义
|
||||||
const dynamicColumns = ref<any[]>([]);
|
const dynamicColumns = ref<any[]>([]);
|
||||||
|
|
||||||
// 缓存实际的数据总量
|
|
||||||
const actualTotalCount = ref<number>(0);
|
|
||||||
|
|
||||||
// 固定列定义(始终显示)- 基于 IoTDBTreeModelDeviceDataDto 类型
|
// 固定列定义(始终显示)- 基于 IoTDBTreeModelDeviceDataDto 类型
|
||||||
const fixedColumns = [
|
const fixedColumns = [
|
||||||
@ -156,15 +155,12 @@ const gridOptions: VxeGridProps<any> = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 简化处理逻辑,先确保基本功能正常
|
// 简化处理逻辑,直接使用接口返回的数据
|
||||||
if (data?.items && data.items.length > 0) {
|
if (data?.items && data.items.length > 0) {
|
||||||
console.log('原始items数据:', data.items);
|
console.log('原始items数据:', data.items);
|
||||||
|
|
||||||
// 直接使用原始数据,不进行复杂处理
|
|
||||||
const items = data.items;
|
|
||||||
|
|
||||||
// 动态生成列定义
|
// 动态生成列定义
|
||||||
const generatedColumns = generateDynamicColumns(items);
|
const generatedColumns = generateDynamicColumns(data.items);
|
||||||
console.log('生成的列定义:', generatedColumns);
|
console.log('生成的列定义:', generatedColumns);
|
||||||
|
|
||||||
// 更新动态列
|
// 更新动态列
|
||||||
@ -179,63 +175,19 @@ const gridOptions: VxeGridProps<any> = {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// 由于API没有返回totalCount,我们需要特殊处理分页
|
// 直接使用接口返回的totalCount
|
||||||
const currentPageSize = page.pageSize;
|
|
||||||
const currentItemsCount = data.items ? data.items.length : 0;
|
|
||||||
|
|
||||||
// 简化的总数估算逻辑
|
|
||||||
let estimatedTotalCount = 0;
|
|
||||||
|
|
||||||
// 如果是第一页,使用保守的估算
|
|
||||||
if (page.currentPage === 1) {
|
|
||||||
if (currentItemsCount === currentPageSize) {
|
|
||||||
// 第一页满了,说明可能还有更多数据
|
|
||||||
// 使用一个保守的估算:假设至少还有一页数据
|
|
||||||
estimatedTotalCount = currentPageSize * 2;
|
|
||||||
} else {
|
|
||||||
// 第一页没满,说明总共就只有这么多数据
|
|
||||||
estimatedTotalCount = currentItemsCount;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 不是第一页,使用更准确的逻辑
|
|
||||||
if (currentItemsCount === currentPageSize) {
|
|
||||||
// 当前页满了,说明可能还有更多数据
|
|
||||||
estimatedTotalCount =
|
|
||||||
page.currentPage * currentPageSize + currentPageSize;
|
|
||||||
} else {
|
|
||||||
// 当前页没满,说明这是最后一页
|
|
||||||
estimatedTotalCount =
|
|
||||||
(page.currentPage - 1) * currentPageSize + currentItemsCount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 确保总数至少等于当前页的数据量
|
|
||||||
estimatedTotalCount = Math.max(
|
|
||||||
estimatedTotalCount,
|
|
||||||
currentItemsCount,
|
|
||||||
);
|
|
||||||
|
|
||||||
// 如果当前页数据量小于页面大小,说明这是最后一页,更新缓存
|
|
||||||
if (currentItemsCount < currentPageSize) {
|
|
||||||
actualTotalCount.value = estimatedTotalCount;
|
|
||||||
console.log('更新缓存的实际总数:', estimatedTotalCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = {
|
const result = {
|
||||||
items: data.items || [],
|
items: data.items || [],
|
||||||
totalCount: estimatedTotalCount,
|
totalCount: data.totalCount || 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log('返回给表格的数据:', result);
|
console.log('返回给表格的数据:', result);
|
||||||
console.log(
|
console.log('总数:', result.totalCount, '当前页数据量:', result.items.length);
|
||||||
'估算总数:',
|
|
||||||
result.totalCount,
|
|
||||||
'当前页数据量:',
|
|
||||||
result.items.length,
|
|
||||||
);
|
|
||||||
console.log('分页信息:', {
|
console.log('分页信息:', {
|
||||||
currentPage: page.currentPage,
|
currentPage: page.currentPage,
|
||||||
pageSize: currentPageSize,
|
pageSize: page.pageSize,
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,11 +221,6 @@ watch(
|
|||||||
console.log('页面大小变化:', { newSize, oldSize });
|
console.log('页面大小变化:', { newSize, oldSize });
|
||||||
if (newSize !== oldSize && oldSize) {
|
if (newSize !== oldSize && oldSize) {
|
||||||
console.log('页面大小从', oldSize, '变为', newSize, ',重置到第一页');
|
console.log('页面大小从', oldSize, '变为', newSize, ',重置到第一页');
|
||||||
// 如果新的页面大小大于缓存的总数,清除缓存
|
|
||||||
if (actualTotalCount.value > 0 && newSize > actualTotalCount.value) {
|
|
||||||
console.log('新页面大小大于缓存总数,清除缓存');
|
|
||||||
actualTotalCount.value = 0;
|
|
||||||
}
|
|
||||||
// 重置到第一页
|
// 重置到第一页
|
||||||
gridApi.pagerApi.currentPage = 1;
|
gridApi.pagerApi.currentPage = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user