# 操作日志分页需求 ## 背景 操作日志会持续增长,如果一次性展示全部日志,页面会变长,查找和点击都不方便。日志列表需要分页展示,并且页码数量较多时不能把所有页码全部铺开。 ## 功能目标 1. 操作日志列表每页显示 20 条。 2. 日志列表上方和下方都显示分页控件。 3. 支持上一页、下一页和指定页码跳转。 4. 页码超过 10 页时,远离当前页的页码用省略号折叠。 5. 分页需要和现有筛选条件联动: - 操作类型。 - 对象类型。 - 风险等级。 - 关键词。 6. 切换筛选条件后,从第 1 页重新查询。 7. 导出日志不受当前页限制,仍按当前筛选条件导出全部匹配日志。 ## 页码展示规则 分页控件始终显示: - 第 1 页。 - 最后一页。 - 当前页前后 2 页。 - 中间缺失页码用 `...` 表示。 示例: - 当前第 1 页,共 3 页:`1 2 3` - 当前第 6 页,共 20 页:`1 ... 4 5 6 7 8 ... 20` - 当前第 19 页,共 20 页:`1 ... 17 18 19 20` ## 接口约定 日志列表接口支持: - `page`:页码,从 1 开始,默认 1。 - `page_size`:每页数量,默认 20。 返回: ```json { "items": [], "total": 0, "page": 1, "page_size": 20, "total_pages": 1 } ``` ## 自行决策记录 - 默认每页 20 条,兼顾浏览效率和页面密度。 - 页码折叠规则采用“首页 + 尾页 + 当前页前后 2 页”,避免页码过多时挤压布局。 - 上下各放一组分页控件,避免用户滚动到底部后还要回到顶部翻页。