|
|
@@ -0,0 +1,50 @@
|
|
|
+# 报销申请列表 · 扩大每页条数选项(试点)
|
|
|
+
|
|
|
+**日期:** 2026-08-21
|
|
|
+**状态:** 设计已确认,待实现
|
|
|
+**范围:** 仅【报销申请】列表页试点;合适后再推广其它列表
|
|
|
+
|
|
|
+## 背景
|
|
|
+
|
|
|
+- 列头过滤是**当前页前端过滤**,不能像 Excel 那样滤全量。
|
|
|
+- 用户希望通过更大的「每页条数」在单页加载更多行,再配合列头过滤使用。
|
|
|
+- 曾考虑「全部」分批拉取,因进度体验与大数据量风险已放弃。
|
|
|
+- OpenSpec `api-conventions` 规定分页 `pageSize` 全局最大 **100**(超限 422)。本试点**不修改**该全局规范,仅对报销申请「我的列表」接口放宽。
|
|
|
+
|
|
|
+## 目标
|
|
|
+
|
|
|
+1. 分页选项改为:`10 / 20 / 30 / 50 / 100 / 200 / 500`
|
|
|
+2. 后端对应列表接口显式允许 `pageSize` 最大 **500**;`> 500` 仍返回 **422**
|
|
|
+3. 不做「全部」、不做分批拼接、不改列头过滤语义
|
|
|
+
|
|
|
+## 方案(已选)
|
|
|
+
|
|
|
+**只改【报销申请】前端页 + `GET /reimburses/my` 上限到 500。**
|
|
|
+
|
|
|
+| 项 | 说明 |
|
|
|
+|----|------|
|
|
|
+| 前端 | `web-admin/src/views/bx/reimburse/apply/index.vue`:`el-pagination` 的 `:page-sizes` 改为 `[10, 20, 30, 50, 100, 200, 500]` |
|
|
|
+| 数据流 | 仍用 `useServerPaged` + `reimburseApi.my`;换页大小时一次请求、沿用现有 `loading` |
|
|
|
+| 后端 | `backend/app/api/bx/reimburse.py` 的 `my_reimburses`:`pageSize` 增加显式校验 `ge=1, le=500`(建议 `Query(..., ge=1, le=500)`) |
|
|
|
+| 规范 | **不改** OpenSpec 全局「最大 100」;本接口为试点例外 |
|
|
|
+
|
|
|
+说明:当前 `my_reimburses` 的 `pageSize` **尚未**声明 `le=100`,大页码有时可能已能通过;本改动将上限**显式**定为 500,避免契约模糊,也防止后续全局中间件/规范收紧时行为不一致。
|
|
|
+
|
|
|
+## 非目标
|
|
|
+
|
|
|
+- 不改其它报销列表(审批、备用金、发放等)及其接口
|
|
|
+- 不改全局 OpenSpec `pageSize` 上限
|
|
|
+- 不引入「全部」选项、分批加载进度条
|
|
|
+- 不改变列头客户端过滤「仅当前页」行为
|
|
|
+- 不调整默认每页条数(仍沿用 `useServerPaged` / `DEFAULT_LIST_PAGE_SIZE`)
|
|
|
+
|
|
|
+## 验收
|
|
|
+
|
|
|
+- 可选 `10~500`,列表行数与分页文案(`显示 x-y / total`)正确
|
|
|
+- `pageSize=501`(或更大)→ **422**
|
|
|
+- 切换每页条数后回到第 1 页并重新请求(现有 `onSizeChange` 行为保持)
|
|
|
+- 列头过滤仍只过滤当前页已加载行
|
|
|
+
|
|
|
+## 后续(非本次)
|
|
|
+
|
|
|
+试点满意后,可按相同档位推广其它列表,并评估是否将 OpenSpec 全局上限从 100 调整为 500。
|