68 lines
4.5 KiB
Markdown
68 lines
4.5 KiB
Markdown
# 64 Admin:统一主列表分页并右对齐
|
|
|
|
- 类型:需求
|
|
- 父级大工单:#14
|
|
- 所属 MVP / 版本:#15 Admin 四模块可用闭环
|
|
- 状态:已完成
|
|
- 日期:2026-08-09
|
|
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/64>
|
|
|
|
## 背景与目标
|
|
|
|
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 主列表分页
|