Files
cmautobuy/docs/task/64-admin主列表统一分页.md

4.5 KiB

64 Admin:统一主列表分页并右对齐

背景与目标

Admin 各主列表的分页能力和底部位置不统一:蝦皮、顺运宝和用户管理已经有分页,PDD 商品、采集采购、客户端仍会一次读取全部结果,公共分页控件也没有稳定靠在底栏右侧。本任务统一六个主列表的分页交互,并让新增分页模块在数据库层只读取当前页数据。

最终方案

  • 六个主列表继续共用 partials/footer.html 和 service.PaginationView,每页固定 20 条。
  • 公共底栏采用左侧状态、右侧分页布局;窄窗口时允许换行并回到普通文档流,避免遮挡表格和状态文字。
  • PDD、采集采购、客户端使用共享筛选条件执行 COUNT(*) 与 LIMIT/OFFSET,Service 统一处理非法页、越界页和空数据页。
  • 翻页及新增、编辑、删除、启停、重置密码等写操作保留当前筛选条件和页码;删除末页最后一条数据后由 Service 收敛到最后一个有效页。
  • 客户端列表的在线、离线统计覆盖当前账号可见且符合搜索条件的全部客户端,并与分页查询使用同一时间基准和角色范围。
  • PDD 保留全库采集状态概览,同时单独返回筛选结果总数,避免把当前页数量当作总数。
  • 批量勾选仍仅作用于当前页;顺运宝同步记录弹窗的独立局部分页没有改动。
  • UI 方案参考项目的 UI/UX 规范检查结果,重点落实了右对齐、窄窗口回流、查询状态保留和当前页勾选边界。

实际实现与建单方案一致,没有数据库迁移,也没有改动 Client 四接口、任务业务状态或客户端归属规则。

改了哪些

  • admin/static/css/app.css、admin/templates/partials/footer.html:统一底栏和分页位置,增加窄窗口适配。
  • admin/repository/pdd.go、admin/service/pdd.go、admin/handler/web/pdd.go:实现 PDD 商品真分页、页码收敛和筛选状态保留。
  • admin/repository/task.go、admin/service/task.go、admin/handler/web/others.go:实现采集采购任务真分页及写操作后的页面状态保留。
  • admin/repository/client.go、admin/service/service.go、admin/handler/web/others.go:实现客户端真分页和按角色范围计算的全量在线统计。
  • admin/handler/web/user.go:补齐用户管理写操作后的筛选和页码保留。
  • admin/templates/pdd/、admin/templates/task/list.html、admin/templates/client/list.html、admin/templates/user/list.html、admin/static/js/app.js:传递列表查询状态,并明确当前页操作范围。
  • admin/handler/web/pagination_test.go、各层测试及 admin/main_test.go:覆盖分页、越界、角色范围、重定向状态和公共模板。
  • docs/admin/05-ui-specification.md:更新六个主列表的统一分页基线。

验收结果

验收标准 结果
六个主列表共用公共分页模板,底栏状态在左、分页在右 通过(模板与自动化测试)
PDD、采集采购、客户端使用 SQL COUNT(*) + LIMIT/OFFSET 通过
每页固定 20 条,非法、越界和空数据页码行为一致 通过
翻页保留关键词、状态、类型及客户端角色可见范围 通过
状态条统计不使用当前页行数冒充全量统计 通过
客户端角色可见范围不变,统计不包含不可见客户端 通过
写操作后保留筛选和合理页码,越界页自动收敛 通过
批量勾选只作用于当前页 通过
顺运宝同步记录弹窗局部分页保持不变 通过
不修改数据库、Client 四接口和任务业务状态 通过
Go 1.23.0 build、test、vet 通过 通过

测试

  • 执行的命令(从 admin/ 目录):
    • $env:GOTOOLCHAIN='go1.23.0'; go build ./...
    • $env:GOTOOLCHAIN='go1.23.0'; go test ./... -count=1
    • $env:GOTOOLCHAIN='go1.23.0'; go vet ./...
    • node --check static/js/app.js
  • 执行的命令(从仓库根目录):git diff --check -- admin docs/admin
  • 结果:全部通过。
  • 没验证到的部分:未在真实浏览器中人工检查 1366×768 和窄窗口的最终视觉效果;未连接外部顺运宝等真实系统,本任务不需要外部系统数据。

相关提交

  • 155dd3b 统一 Admin 主列表分页