Commit 05d0a6b7 authored by drigle's avatar drigle

fix: center table loading state

parent 3cc706f5
......@@ -74,9 +74,7 @@ export function DataTableEmptyState({ title = '暂无数据', size = 'md' }) {
function DataTableLoadingState() {
return (
<div className="flex min-h-48 items-center justify-center" aria-label="数据加载中">
<Spinner size="sm" />
</div>
<div className="min-h-48 w-full" aria-hidden="true" />
);
}
......@@ -264,7 +262,7 @@ export function DataTable({
return (
<div className={['relative min-w-0 w-full', className].filter(Boolean).join(' ')}>
<div ref={gridViewportRef} className="relative min-w-0 w-full">
{isLoading && rows.length > 0 ? (
{isLoading ? (
<div
className="absolute inset-0 z-10 grid place-items-center"
aria-label="数据加载中"
......
......@@ -130,6 +130,9 @@ export default function SubjectRecordWorkbench({
safePage * pageSize,
(safePage + 1) * pageSize,
);
const displayRecords = loading ? [] : pageRecords;
const displaySelectedIds = loading ? [] : selectedIds;
const displayPage = loading ? 0 : safePage;
useEffect(() => {
if (safePage !== page) {
......@@ -311,8 +314,8 @@ export default function SubjectRecordWorkbench({
description={description}
columns={visibleColumns}
columnGroups={activeView?.settings?.groups || []}
records={pageRecords}
selectedIds={selectedIds}
records={displayRecords}
selectedIds={displaySelectedIds}
onSelectionChange={setSelectedIds}
toolbarActions={builtToolbarActions}
bulkActions={builtBulkActions}
......@@ -345,10 +348,10 @@ export default function SubjectRecordWorkbench({
: '当前账号未获得该对象 Grid 视图的查看权限。',
}}
pagination={{
page: safePage,
page: displayPage,
pageSize,
pageSizeOptions: PAGE_SIZE_OPTIONS,
totalRecords: filteredRecords.length,
totalRecords: loading ? 0 : filteredRecords.length,
totalPages,
onPageChange: (nextPage) => {
setPage(nextPage);
......
......@@ -28,7 +28,7 @@
1. 页面通过 `loadSubject`、`getSubjectView` 和 `POST /record/query` 读取字段、视图和记录。
2. 表格列、视图限制、排序、选择字段选项和字段分组来自服务端配置;字段分组读取当前 Grid View 的 `settings.groups`,按配置展示分组表头并支持展开或收起。当前 Grid View 的 `settings.shortTitle === true` 时只隐藏通用 `title` 展示列;`false` 或未配置时正常展示。`title` 数据仍参与关键词搜索、排序、详情和保存,详情入口保留在项目名称和固定操作列。
切换 Grid View 时立即切换当前视图、清空跨视图选择并回到第一页,同时重新读取 Subject、视图配置和 `/record/query` 数据;项目状态不再单独提供下拉筛选,按顶部 Grid View Tabs 切换。
切换 Grid View 时立即切换当前视图、清空跨视图选择并回到第一页,同时重新读取 Subject、视图配置和 `/record/query` 数据;项目状态不再单独提供下拉筛选,按顶部 Grid View Tabs 切换;刷新期间不展示上一次请求的记录行,表格在当前可视区域中心显示加载状态,失败时保留错误反馈并清空不可确认的旧数据。
View 中兼容历史字段 `metadata.project_finish_time` 时按数据定义显示为“项目完成时间”;
内部 `metadata.*` 路径不作为可见表头,字段取值路径和服务端配置保持不变。
3. 新建和编辑时业务字段统一写入 `metadata`;引用和用户字段只提交 ID,日期提交 ISO 8601。
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment