61 lines
3.0 KiB
Markdown
61 lines
3.0 KiB
Markdown
# 156 Admin:切换模块时保持各列表筛选和分页状态
|
|||
|
|
|
||
|
|
- 类型:需求
|
||
|
|
- 父级大工单:#14
|
||
|
|
- 所属 MVP / 版本:#15 / Admin 六模块统一列表体验
|
||
|
|
- 状态:已完成
|
||
|
|
- 日期:2026-08-11
|
||
|
|
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/156>
|
||
|
|
|
||
|
|
## 背景与目标
|
||
|
|
|
||
|
|
顶部导航原来固定进入各模块根地址。采购员在列表中搜索、筛选或翻页后,
|
||
|
|
切换模块再返回会丢失这些状态,需要重复操作。本任务让六个主模块在当前
|
||
|
|
浏览器标签页内分别记住最后一次稳定列表状态。
|
||
|
|
|
||
|
|
## 最终方案
|
||
|
|
|
||
|
|
筛选和分页继续使用现有 URL 查询参数,不增加数据库状态。公共导航为六个
|
||
|
|
模块标记根路径,公共原生 JavaScript 使用 sessionStorage,按当前用户 ID 和
|
||
|
|
模块路径保存经过白名单清理的相对 URL。
|
||
|
|
|
||
|
|
只保留搜索、筛选、页码及顺运宝日期输入等稳定参数;临时消息、错误、弹窗、
|
||
|
|
同步登录状态、勾选项和未提交表单不会保存。读取时核对同源、模块路径和 URL
|
||
|
|
长度,浏览器禁用存储或数据异常时继续使用模板中的模块根地址。退出登录会
|
||
|
|
清理当前账号在该标签页的记录。
|
||
|
|
|
||
|
|
## 改了哪些
|
||
|
|
|
||
|
|
- `admin/templates/partials/header.html`:增加账号隔离键和六个模块导航标识,
|
||
|
|
保留原始根地址作为无 JavaScript 回退。
|
||
|
|
- `admin/static/js/app.js`:保存、校验和恢复每个模块的稳定 URL,登出时清理。
|
||
|
|
- `admin/main_test.go`:增加导航标识、查询参数白名单、同源路径校验和清理契约测试。
|
||
|
|
- `docs/admin/05-ui-specification.md`:记录跨模块状态保持范围和禁止保存的临时状态。
|
||
|
|
|
||
|
|
## 验收结果
|
||
|
|
|
||
|
|
| 验收标准 | 结果 |
|
||
|
|
|---|---|
|
||
|
|
| 六个主模块具备独立的搜索、筛选和页码恢复入口 | 通过 |
|
||
|
|
| 使用真实 URL,不改写浏览器前进、后退、F5 和复制链接语义 | 通过 |
|
||
|
|
| 勾选、弹窗、临时反馈和未提交表单不进入白名单 | 通过 |
|
||
|
|
| 按用户 ID 隔离,退出时清理当前账号记录 | 通过 |
|
||
|
|
| 异常 URL、跨源 URL、错误路径和存储异常安全回退 | 通过 |
|
||
|
|
| JavaScript 失效时链接仍进入模块根页面 | 通过 |
|
||
|
|
| 未修改数据库、Admin/Client 接口和业务状态 | 通过 |
|
||
|
|
| Go 1.23.0 build、test、vet 通过 | 通过 |
|
||
|
|
|
||
|
|
## 测试
|
||
|
|
|
||
|
|
- 执行的命令:
|
||
|
|
- `node --check static/js/app.js`
|
||
|
|
- `$env:GOTOOLCHAIN="go1.23.0"; go test ./... -run 'TestModuleNavigation|TestTemplates|TestStatic' -count=1`
|
||
|
|
- `$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1; go vet ./...`
|
||
|
|
- 结果:JavaScript 语法检查通过;Admin 全包构建、测试和静态检查通过。
|
||
|
|
- **没验证到的部分**:尚未在真实浏览器中使用两个账号逐项人工验证六模块交叉切换、
|
||
|
|
禁用 sessionStorage 和禁用 JavaScript 的实际交互;对应安全回退已由静态契约和代码检查覆盖。
|
||
|
|
|
||
|
|
## 相关提交
|
||
|
|
|
||
|
|
- `cd1fc8a` feat: 保持模块列表筛选和分页状态 (#156)
|