Files
cmautobuy/docs/task/242-主列表支持可选每页条数.md
T
2026-08-15 15:16:30 +08:00

3.7 KiB
Raw Blame History

242 Admin:主列表支持每页 20、50、100 条

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 状态:已完成,待用户验收
  • 日期:2026-08-15
  • Gitea 工单:#242

背景与目标

Admin 主列表原来固定每页 20 条。数据增多后,采购员批量查看和勾选时需要频繁翻页。 本任务在保留默认 20 条的前提下,统一增加 50、100 条选项,并确保筛选、翻页、 写操作跳转和模块状态恢复不会丢失选择。

最终方案

  • 公共分页使用 page_size 查询参数,后端只接受 20、50、100,非法值回退为 20。
  • 公共底栏使用带可见标签的原生 GET 表单;提交时不携带 page,因此切换容量自动 回到第 1 页,同时保留当前有效筛选。
  • 八个使用公共分页的列表都把归一化页容量传入 Service 和 Repository 的 LIMIT/OFFSET:蝦皮、PDD、顺运宝、采集采购、客户端、用户、商品目录导入记录、 档口入库码。
  • 搜索表单、详情弹窗和写操作跳转携带 page_size;URL 可用于 F5、书签、浏览器 前进后退和既有模块状态恢复。
  • 顺运宝同步记录弹窗继续固定每页 10 条;顺运宝上游接口抓取页容量不变。
  • 档口入库码把本地删除和顺运宝远程操作上限从页面容量中拆开:本地删除最多 100 条, 远程匹配和回写仍单次最多 20 条。
  • UI 评审后保留原生控件和可见标签,并让窄窗口分页组换行;现有蝦皮和顺运宝缩略图 已使用懒加载,无需增加额外前端框架或脚本。

改了哪些

  • admin/service/pagination.go:增加页容量白名单、总页数计算和公共分页表单视图。
  • admin/service/{shopee_list,pdd,syb,task,service,user,catalog_history,inner_code_page}.go: 各列表按选定容量执行服务端分页。
  • admin/handler/web/:解析、归一化并在筛选、详情和写操作跳转中保留 page_size。
  • admin/templates/partials/footer.html、八个列表及相关详情模板:增加公共选择器和状态字段。
  • admin/static/css/app.css:增加紧凑分页表单和窄窗口换行样式。
  • admin/service/inner_code_apply.go、inner_code_delete.go:使用独立批量安全上限。
  • admin/service/*test.go、admin/handler/web/*test.go 及模板测试:补充分页容量、 URL 状态和远程上限回归。
  • docs/admin/05-ui-specification.md:把固定 20 条规则更新为默认 20、可选 50/100。

验收结果

验收标准 结果
公共分页显示 20、50、100,默认及非法值使用 20 通过
50/100 条使用对应 LIMIT/OFFSET,总页数和越界正确 通过
切换容量回到第 1 页,翻页和筛选保留容量 通过
URL、F5、前进后退、模块状态恢复及写操作跳转保留容量 通过(URL 与既有状态机制)
同步记录仍为每页 10 条,上游抓取分页不变 通过
档口入库码远程匹配和回写仍最多 20 条 通过
窄窗口底栏可换行且不引入横向溢出 通过(模板与 CSS 检查)
固定 Go 1.23.0 构建、测试、静态检查通过 通过

测试

  • 执行的命令:
$env:GOTOOLCHAIN="go1.23.0"
go test ./... -count=1
go build ./...
go vet ./...
Remove-Item Env:GOTOOLCHAIN
  • 结果:全部通过;git diff --check 通过。
  • 没验证到的部分:未在登录后的真实浏览器中执行 1366×768 人工视觉验收; 未连接生产 MySQL 做页面查询,因为本任务没有数据库结构和生产数据变更。

相关提交

  • b455853 feat: 支持主列表选择每页条数 (#242)