# 功能测试报告_汇总大表进度弹窗优化_2026-09-22 ## 一、功能说明 用户问题:「汇总表的进度条弹窗的『保存』会使下载的汇总表再次下载;这个弹窗可以怎么优化一下呢?」 **原因**:任务完成时 `downloadTaskFile(true)` 会自动下载一次;而弹窗底部一直挂着「保存文件」(缓存命中时是「下载」),点一下会**再次请求后端拿同一个文件并第二次下载**,看起来像「保存又下了一遍」。同时弹窗标题始终是「正在生成汇总大表」,完成/失败后不变化。 **改动**(`traffic-audit-web/src/views/ReportExport.vue`): | # | 改动 | 说明 | | --- | --- | --- | | 1 | 完成后显示「已自动下载」 | `已自动下载:<文件名>(<大小>),文件在浏览器默认下载目录。` | | 2 | **已自动下载后不再显示下载按钮** | 完成后底部只剩「重新生成 / 关闭」;只有**自动下载失败**时才出现「保存文件」兜底按钮(见 §六 变更记录) | | 3 | 自动下载失败兜底 | `taskDownloaded=false` 时提示「自动下载没成功,可点『保存文件』再存一次」,并显示「保存文件」按钮 | | 4 | 弹窗标题随状态变化 | 正在生成汇总大表 / **汇总大表已生成** / 汇总大表生成失败 | | 5 | 完成态主按钮改为「关闭」 | 生成中仍是「后台运行」,完成后主按钮是「关闭」(下载按钮降为次要) | | 6 | 每次新任务重置状态 | `taskDownloaded/taskFileName/taskFileSize/taskBlob` 在 `startSummaryTask` 里清零 | ## 二、测试环境 - 前端:`npm run serve`(8080),改后热编译 `Compiled successfully in 592ms`(10:00:24) - 后端:Spring Boot 8090(今日运行中);数据库 MySQL 3308 / `traffic_audit` - 浏览器:Codex 内置浏览器(视口 1280×720),登录 `admin/123456` - 报表期:2026-08(月报,汇总大表《道路运输量汇总表(整本)》数据状态=数据就绪) - 生成耗时:**13.5 秒**(未命中缓存),产物 `生成_道路运输量汇总表_2026-08.xlsx`,**1.15 MB** ## 三、用例表 | # | 用例 | 输入/操作 | 预期 | 实际 | 结论 | | --- | --- | --- | --- | --- | --- | | T01 | 生成中弹窗状态(正向) | 选 2026-08 → 点「导出」 | 标题「正在生成汇总大表」;进度递增;按钮「保存文件(禁用)/重新生成(禁用)/后台运行」 | 标题正确;进度 6%→45%;步骤文字「读取母版工作簿」→「刷新排名页与跨页合成页」;按钮状态与预期一致 | 通过 | | T02 | 完成后自动下载 + 提示(正向) | 等待任务结束 | 标题变「汇总大表已生成」;显示「已自动下载:文件名(大小)」;按钮变「再次下载/重新生成/关闭」 | 进度 100%、「完成」、已用 13.5 秒;提示「已自动下载:生成_道路运输量汇总表_2026-08.xlsx (1.15 MB)」;按钮已变更 | 通过 | | T03 | 完成后**不再提供下载按钮**(正向,核心) | 任务完成 | 底部只有「重新生成 / 关闭」 | 底部按钮为「重新生成 / 关闭」,无下载按钮 | 通过 | | T04 | 关闭按钮(正向) | 点「关闭」 | 弹窗消失、列表页可继续操作 | `.el-dialog__wrapper` display=none,列表正常 | 通过 | | T05 | 控制台无报错(回归) | 读取 dev logs(error/warn) | 无新增错误 | 0 条 | 通过 | | T06 | 其它报表导出路径未受影响(回归,静态) | —— | 单张/批量导出仍走原 `downloadBlob` | 本次只改汇总大表异步任务分支,`exportChecked` 中其它分支未动 | 通过(静态) | ## 四、发现的问题与处置 | # | 问题 | 处置 | | --- | --- | --- | | P1 | 弹窗标题与按钮文案和真实状态不符(已完成仍写「正在生成」;已自动下载仍写「保存文件」) | 已修(标题随状态、按钮文案随下载状态) | | P2 | 同一份文件被重复下载/重复请求后端(1.15 MB) | 已修:自动下载后不再显示下载按钮,从根上消除重复下载;自动下载失败时才出现「保存文件」兜底 | | P3 | 验证方法记录:Element UI 月份选择框是 **readonly** 输入框,自动化不能用 fill/type,必须先点开弹层再选月份;`setValue` 对该控件无效 | 仅记录为测试方法备注,非系统缺陷 | ## 五、结论 - 弹窗现在能明确告诉用户「已自动下载了什么文件、多大」,按钮语义与行为一致(「再次下载」= 再存一份,走本地缓存); - 重复下载不再重复请求后端,体验与带宽都改善; - 生成中/已完成/失败三种状态在标题、进度、按钮上都有区分; - 浏览器端实测 6 条用例通过,无控制台报错。 测试人:Codex(AI) 测试日期:2026-09-22 ## 六、变更记录(用户反馈后调整) | 版本 | 行为 | 说明 | | --- | --- | --- | | v1(09-22 上午) | 完成后自动下载一次,按钮变「再次下载」(走内存缓存,0 请求) | 解决了「重复请求后端」,但用户反馈:**「已经下载过了就不需要了,为什么还要有一个再次下载」** | | **v2(09-22 下午,最终)** | 完成后自动下载一次,**底部只保留「重新生成 / 关闭」**;仅当自动下载失败(`taskDownloaded=false`)时才显示「保存文件」兜底按钮 | 已删除「再次下载」按钮与内存 Blob 缓存;提示语改为「已自动下载:<文件名>(<大小>),文件在浏览器默认下载目录。」 | **v2 浏览器复验**(admin/123456,2026-08,未命中缓存 13.6 秒):生成中底部为「重新生成(禁用)/后台运行」;完成后标题「汇总大表已生成」、提示「已自动下载:生成_道路运输量汇总表_2026-08.xlsx (1.15 MB),文件在浏览器默认下载目录。」、底部为「重新生成/**关闭**」;控制台 0 报错;点「关闭」后弹窗 `display:none`。