# 功能测试报告:报表生成-汇总大表预览弹窗删除「中口径」之后的明细表 2026-09-16 ## 功能说明 - 位置:报表生成页 → 报表类型「汇总大表」→ 选月份 → 列表行「预览」→ 弹窗「预览数据 - 汇总大表(YYYY-MM)」。 - 现象(改动前):弹窗里出现**两张表**——第一张是「指标 / 数据 / 同比」三列的汇总表(含道路货运、城市客运、中口径三段),第二张是中口径之后重复渲染的一张明细表,信息冗余。 - 需求:把汇总大表预览里**中口径后面的表格全部删掉**,只保留上面那张汇总表。 - 改动后:弹窗内只剩第一张表(`class="preview-summary wb-table"`),表格下方是两条同比缺失提示与「关闭」按钮。 ## 涉及改动 - 前端 `traffic-audit-web/src/views/ReportExport.vue`,**单行改动**(第 133 行): - 原:`` - 现:`
` - 原因说明:`previewItems` 里 `summaryWorkbook` 这一项同时带有 `summary` 数据,而上面的汇总表(第 115 行 `v-if="it.key === 'summaryWorkbook' && it.summary && it.summary.length"`)已经是 `v-if`;原来的第二种表用的是 `v-else-if`,会跟在前一个 `v-if` 之后,于是对 `summaryWorkbook` 也照样渲染出第二张表。改成带 `it.key !== 'summaryWorkbook'` 条件的独立 `v-if` 后,汇总大表不再渲染第二张表,而其它报表类型(如有 `summary` 的)行为保持不变。 - 第 115–132 行的汇总表(含「部分指标缺少上年同期…」提示)**未改动**。 - 未改后端、未改接口、未改导出。 ## 测试环境 - 前端:traffic-audit-web 8080 dev(改动后 `Compiled successfully`)。 - 后端:traffic-audit-server 8090(本次不涉及后端)。 - 浏览器:Codex 应用内浏览器,`admin` 登录,地址 `http://localhost:8080/#/report`。 - 被测数据:报表类型「汇总大表」、月份 `2026年8月`(源数据已由本次多年度导入保证)。 ## 测试方法(重要说明) - **上一轮的截图不能作为证据**:早期截图 `_qa_out/preview_summaryWorkbook_2026-08_after_fix.png` 是在弹窗尚未渲染/取景不当时拍的,画面里没有弹窗内容,属于无效证据;同时依赖可访问性树(AX)读取也不可靠(本机 `getAXState()` 返回缓存,会读到过期内容)。 - 本轮改用**直接读 DOM**作为唯一判据:`tab.playwright.evaluate(() => {...})` 统计弹窗内 `table` 元素的数量、类名与行数。 - 关键操作坑(已避开):`el-select` 下拉项 `isVisible()` 恒为 false,无法用文本点击选月份,改用键盘 `ArrowDown`/`Enter`;行内「预览」按钮必须用 `locator('.el-table__row button').nth(1)`(`has-text` 会命中禁用的「批量预览」);页面上常驻 3 个 `.el-dialog__wrapper`,需按 `getComputedStyle(w).display !== 'none'` 找当前打开的那个;改 `.vue` 后必须 `tab.reload()` 才能拿到最新页面。 - 有效截图:`_qa_out/preview_summaryWorkbook_2026-08_verified_20260916.png`(54006 字节)与 `_qa_out/preview_summaryWorkbook_2026-08_verified2_20260916.png`(54006 字节,本轮复核时重拍)。 ## 用例表 | # | 用例 | 输入 | 预期 | 实际 | 结论 | |---|---|---|---|---|---| | 1 | 正向-弹窗可打开 | 汇总大表 / 2026年8月 / 点行内「预览」 | 弹出「预览数据 - 汇总大表(2026-08)」 | 弹窗正常打开,标题与预期一致 | 通过 | | 2 | 正向-表格数量 | DOM 统计当前可见弹窗内 `table` 数量 | 只剩 1 张(中口径之后的表已删除) | `visible` 弹窗仅 1 个,其中 `body.querySelectorAll('table').length === 1` | 通过 | | 3 | 正向-表格标识 | 读取该表 class 与行数 | 为汇总表(`preview-summary wb-table`),12 行指标 | `cls="preview-summary wb-table"`,`tbody tr` 计 12 行 | 通过 | | 4 | 正向-内容完整 | 读取 12 行文本 | 道路货运/城市客运/中口径各 4 项,数值与同比齐全 | 道路货运:当月货运量 16888.76、当月货物周转量 2270010.6(同比 4.8%)、累计货运量 130311.89、累计货物周转量 17492129.05(同比 0%);城市客运:29575.09 / 212391.4 / 254440.17 / 1806719.08;中口径:1628.65 / 115847.35 / 12691.45 / 900177.92 | 通过 | | 5 | 正向-表格下方内容 | 读取表格之后的节点 | 只剩提示与关闭按钮,无第二张表 | 依次为「· 2025-08 同期城市客运数据未导入库,城市客运同比暂不显示…」「· 2025-08 同期公路旅客数据未导入库,中口径同比暂不显示…」与「关闭」按钮 | 通过 | | 6 | 回归-其它条件不回归 | 检查第 115–132 行汇总表与 `wbMissing` 提示 | 未被改动 | 与改动前一致(`git diff` 仅第 133 行 1 行变更) | 通过 | | 7 | 回归-其它报表类型 | 检查 `v-if` 条件对非 `summaryWorkbook` 项 | 行为不变(仍按 `summary` 渲染) | 条件为 `it.key !== 'summaryWorkbook' && it.summary && it.summary.length`,非汇总大表项行为不变 | 通过 | ## 发现的问题与处置 1. **上一轮取证无效(已修正)**:早期截图未拍到弹窗、AX 树为缓存,已在本报告中作废;本轮以 DOM 实测 + 有效截图重新取证。 2. **弹窗内「共 0 行」与上方「月度覆盖:1~8月均有数据」口径不同**:`rowCount` 表示的是明细行数(汇总大表不含明细行,故为 0),这是既有展示口径,非本次改动引入,本次未改;如用户觉得易误解,可另行调整文案。 3. 两条同比缺失提示(2025-08 城市客运 / 公路旅客同期数据未入库)为数据侧现状,非本次改动引起,待 2025 年定稿数据导入后自动消失。 ## 结论 - 通过。汇总大表预览弹窗中「中口径」之后的那张表已彻底移除,DOM 实测弹窗内有且仅有 1 张表(`preview-summary wb-table`,12 行汇总指标),表格内容与改动前一致、无信息丢失;其它报表类型的预览行为不受影响。 - 待用户在自己的浏览器上打开「报表生成 → 汇总大表 → 2026年8月 → 预览」做一次目视验收。