status: done created: 2026-07-21 complexity: 🟢简单
/ai/prompt-template 与 /ai/dashboard-generate-record 接口已有数据,但表格正文区域不可见;无数据时,共享空状态也无法显示。目标是让两个页面恢复 Forge 通用 AiCrudPage 列表的完整高度、数据行、分页与空状态表现。
forge-admin-ui/src/views/ai/prompt-template.vue:提示词模板列表入口,调用 GET /ai/prompt-template/page。forge-admin-ui/src/views/ai/dashboard-generate-record.vue:大屏生成记录列表入口,调用 GET /ai/dashboard-generate-record/page。forge-admin-ui/src/components/ai-form/AiCrudPage.vue:解析分页 records/total,并把数据交给 AiTable。forge-admin-ui/src/components/ai-form/AiTable.vue:使用 Naive UI NDataTable 的 Flex 高度模式,并提供统一 NEmpty 空状态。min-height: 100%,没有为依赖 Flex 高度的 AiCrudPage 提供明确高度。max-height="calc(100vh - 300px)" 和固定 scroll-x。views/ai/provider.vue、views/system/excel-export-config.vue)根容器使用 height: 100%。AiCrudPage 已支持 MyBatis-Plus Page.records,数据协议无需调整。AiCrudPage、AiTable 和 NDataTable flex-height 需要从父容器获得可计算高度;当前 min-height 会使表格正文 Flex 区域塌陷,数据行与空状态一起不可见。scroll-x 与共享组件按列宽自动计算的滚动宽度重复,页面列变化后容易产生固定列和正文宽度错位。AiCrudPage/AiTable 的统一文案与样式。无数据库变更。
无接口变更。
forge-admin-ui/src/views/ai/prompt-template.vueforge-admin-ui/src/views/ai/dashboard-generate-record.vueAiCrudPage 自动计算滚动宽度,操作列继续固定在右侧。无。用户已明确要求开始实现并指定两个页面。
height: 100%、min-height: 0 和 Flex 纵向布局。max-height 与固定 scroll-x,复用共享组件的可用高度和列宽计算。| Task | 状态 | 实际改动文件 | 备注 |
|---|---|---|---|
| 页面布局修复 | 完成 | prompt-template.vue、dashboard-generate-record.vue |
恢复完整高度链路并移除固定滚动配置 |
| 增量验证 | 完成 | test-spec.md、execution-log.md |
测试、Lint、构建与静态检查通过;浏览器受沙箱限制 |
代码改动符合 Forge 通用列表布局:不修改接口和共享表格,两个页面根容器提供明确高度,AiCrudPage 占满剩余空间;固定 max-height/scroll-x 已清除。定向测试、目标 ESLint、生产构建和差异检查通过。浏览器自动化因当前沙箱禁止 Chromium 注册 MachPort 未执行成功,属于环境限制,需在本机浏览器刷新页面做最终视觉确认。