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

77 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 242 Admin:主列表支持每页 20、50、100 条
- 类型:需求
- 父级大工单:#14
- 所属 MVP / 版本:#15 Admin 四模块可用闭环
- 状态:已完成,待用户验收
- 日期:2026-08-15
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/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 构建、测试、静态检查通过 | 通过 |
## 测试
- 执行的命令:
```powershell
$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)