来源:票 57(维护者 2026-10-17 反馈 5)。上位规格:2026-10-17-monitoring-feedback.md §5。
凡可能包含表格或卡片列表、且新增数据会无限拉长页面的区域,统一分页行为:
PAGE_SIZE = 10),前端展示窗口恒 ≤10 条;排除(不是条目清单,或数量契约有界,详见盘点表):聚合图表(柱/环/堆叠/趋势/饼/维度柱)、KPI 行、键值行块、一张图顶部状态栏图例、地图重叠聚合 fan(渲染层)、契约有界小清单(管理信息片区×行业明细、预警分析重点识别)、地图摘要点位装载(渐进保护,见三分法)。
PAGE_SIZE = 10。任何接入区域的展示窗口每页 ≤10 条。上一页|页码|下一页 + 计数行「第 X/Y 页 · 共 N 条」。页码直达=页码按钮:当前页不可点并标 aria-current="page";总页数 >7 时收缩为「1 … c−1 c c+1 … Y」窗口(恒含首末页与省略号)。disabled 且保留占位(按钮消失会让计数行跳动,读起来像出错——票 46 既有语义)。pageCount <= 1 时整个 pager 不渲染(短列表不多出两个死按钮)。pagination.total;前端集合分页读过滤后集合长度;渐进装载用「已装载 M · 共 N」双口径。任何区域不得用「当前页 × 页大小」反推总数。正在取数…(分区 pending 语义);翻页请求进行中保持旧内容或同一占位,不闪空白;当前没有记录 vs 当前分类下没有记录(换一个分类或点「全部」));role="group" + aria-label="「列表名」分页";页码当前项 aria-current="page";计数行是随页码更新的文本。page/pageSize 参数名暴露到界面文案(上位规格 §5 原文);只说「页」「条」。domain/pagination.js,自 equipmentDetailView.pagedRows 升格,HISTORY_PAGE_SIZE/pagedRows 原名保留导出兼容),pager 控件只有一份(PagerNav.vue)。禁止任何组件重写翻页算术或另画一套 pager。page+pageSize=10 进查询串):
预警处置·当前事件表(/events/current);预警处置·历史事件单窗范围(/events/history-analysis 近 7 天)。historyWindows 分窗合并后不存在「全局页」,回退已加载合并集合分页并在页脚如实说明;全局服务端分页需后端另立票,不在本图范围)。page 参数发请求);多窗合并范围的回退规则见三分法。| 区域 | 代码接缝 | 数据源 · 现状 | 目标 | 批次 |
|---|---|---|---|---|
| 设备详情 · 预警信息 / 报警信息 | EquipmentDetailSections.vue(data-event-list)、domain/equipmentDetailView.js |
设备详情聚合两分区;已每页 10、先分类后翻、一页无控件 | 迁共享 pager,补页码直达 | 一 |
| 设备详情 · 工单状态 | 同上(data-work-order-list) |
设备详情聚合 workOrders;全量直渲 | 前端集合分页 10/页 | 一 |
| 预警处置 · 当前事件表 | EventListPane.vue(data-event-table)、stores/eventStore.js |
/events/current(后端默认 100、上限 1000);前端砍最新 12 条 |
服务端页码分页(pageSize=10);mode/筛选/范围变化回第 1 页 |
三 |
| 预警处置 · 历史事件 | domain/warningResponsePanels.js historyAnalysisPanel(PanelBlocks list 块) |
/events/history-analysis 分窗合并;events.slice(0,12) |
单窗(近 7 天)服务端分页;多窗(近 30/90 天)合并集合分页 + 页脚如实说明 | 三 |
| 运行概况 · 异常设备清单 | domain/monitoringPanels.js operationOverview(list 块) |
/monitoring/situation 一次响应;全量直渲 |
前端集合分页 10/页(页脚用 pagination.total) |
四 |
| 运行监测 · 监测点台账 | domain/monitoringPanels.js monitoringPointLedger、stores/monitoringStore.js loadMoreLedger、PanelBlocks data-ledger-more |
/monitoring/distribution 服务端分页 + 快照 token(票 23);「加载下一页」每次追加后端一页 ≈500 卡 |
装载保持自动渐进(同地图链路);UI 对已装载集合页码分页 10/页;按钮退役 | 四 |
| 点位摘要 · 设备卡片 | PointDetailCard.vue(data-device-cards) |
设备详情端点 devices[];全量直渲 |
前端集合分页 10/页 | 二 |
| 点位摘要 · 关联设备图层清单 | PointDetailCard.vue(data-device-layer-list,票 42) |
地图快照 deviceCodes,保留全部编码(含待确认) |
前端集合分页 10/页(数据仍保留全部,窗口化渲染;互斥归类与差额口径不变) | 二 |
| 基础设施 · 运行信息指标列表 | domain/infrastructurePanels.js operationPanel → listBlock('运行指标', …, { paginate: true, pageScope }) |
/infrastructure/operating-information 一次回全部行业指标;实测 6772 条(供水 2497/排水 3576/燃气 699),响应 2.3 MB;原全量直渲、块标题「指标占位」与实际内容不符 |
前端集合分页 10/页(本票 57 曾误列为排除项,2026-10-19 由维护者反馈纠正);块标题改为如实说法 —— 已由票 64 落地 | 五 ✅ |
| 基础设施 · 管理信息片区×行业明细 | managementPanel(list 块) |
districtIndustry[],实测 9 行,组合数契约有界(片区×行业) |
排除(有界小清单,实测 <10) | — |
| 基础设施 · 应急保障三段 | domain/infrastructurePanels.js emergencySectionBlock(list 块) |
/infrastructure/emergency-support 三段 items;实测 8+0+20=28 条(防护目标 20 条已超一页) |
前端集合分页 10/页(一页时无控件) | 五 |
| 预警分析 · 重点识别 | eventAnalysisPanel(list 块) |
后端聚合重点,数量少 | 排除 | — |
| 一张图 · 地图摘要点位装载 | stores/mapStore.js、domain/mapSummary.js |
/map/snapshot 快照自动链 |
排除:保持自动渐进装载,不改页码 | — |
| 其余 | 图表块(bars/donut/stacked/trend/pie/dimbars)、KPI、键值行、状态栏图例、地图重叠聚合 fan | 非条目清单 | 排除 | — |
页码直达按钮之外,pager 还必须提供输入框跳页:
pageCount 时夹回合法范围(1..pageCount),不报错、不发请求、不清空列表;placeholder = 当前页),aria-label="跳转到指定页";每批一张执行票(本票只收口规范与盘点,不实施):
domain/pagination.js + PagerNav.vue,含页码直达与输入框跳页)+ 设备详情三清单接入(预警/报警迁移、工单状态新接入)。执行票:见票 57 正文(批次五已按 2026-10-19 维护者反馈扩为两张:运行信息指标列表 + 应急保障)。
PointDetailCard 的三处 pager 一律省略——PagerNav 新增 show-count 开关(默认 true,批次一既有消费方形态不变);该组件上方已各有权威总数(设备合计 KPI 读后端统计;清单标题「总数 X 台(已上图 Y)」只认当前快照),并排再画「共 N 条」就成了窗口口径的第二个总数。