编辑 | blame | 历史 | 原始文档

功能测试报告_汇总大表进度弹窗优化_2026-09-22

一、功能说明

用户问题:「汇总表的进度条弹窗的『保存』会使下载的汇总表再次下载;这个弹窗可以怎么优化一下呢?」

原因:任务完成时 downloadTaskFile(true) 会自动下载一次;而弹窗底部一直挂着「保存文件」(缓存命中时是「下载」),点一下会**再次请求后端拿同一个文件并第二次下载**,看起来像「保存又下了一遍」。同时弹窗标题始终是「正在生成汇总大表」,完成/失败后不变化。

改动(traffic-audit-web/src/views/ReportExport.vue):

# 改动 说明
1 完成后显示「已自动下载」 已自动下载:<文件名>(<大小>) + 提示「浏览器没弹出下载时可点『再次下载』——用本地缓存保存,不会重新请求服务器」
2 按钮文案随状态变化 已下载 → 再次下载;未下载(缓存命中场景)→ 下载;生成中 → 保存文件(禁用)
3 再次下载走**内存缓存** 首次下载后把 Blob 存进 taskBlob,再次点击直接本地另存(提示「已从本地缓存保存」),**不再请求后端**
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 再次下载走本地缓存(正向,核心) 点「再次下载」 提示走缓存、且**不再请求后端** 提示「已从本地缓存保存:生成_道路运输量汇总表_2026-08.xlsx」,未出现「报表导出成功」(该文案只在走后端接口时出现)→ 走的是缓存分支 通过
T04 关闭按钮(正向) 点「关闭」 弹窗消失、列表页可继续操作 弹窗容器从可访问性树中移除,列表正常 通过
T05 控制台无报错(回归) 读取 dev logs(error/warn) 无新增错误 0 条 通过
T06 其它报表导出路径未受影响(回归,静态) —— 单张/批量导出仍走原 downloadBlob 本次只改汇总大表异步任务分支,exportChecked 中其它分支未动 通过(静态)

四、发现的问题与处置

# 问题 处置
P1 弹窗标题与按钮文案和真实状态不符(已完成仍写「正在生成」;已自动下载仍写「保存文件」) 已修(标题随状态、按钮文案随下载状态)
P2 同一份文件被重复请求后端(1.15 MB × 次数) 已修(内存 Blob 缓存,重复保存 0 请求)
P3 验证方法记录:Element UI 月份选择框是 readonly 输入框,自动化不能用 fill/type,必须先点开弹层再选月份;setValue 对该控件无效 仅记录为测试方法备注,非系统缺陷

五、结论

  • 弹窗现在能明确告诉用户「已自动下载了什么文件、多大」,按钮语义与行为一致(「再次下载」= 再存一份,走本地缓存);
  • 重复下载不再重复请求后端,体验与带宽都改善;
  • 生成中/已完成/失败三种状态在标题、进度、按钮上都有区分;
  • 浏览器端实测 6 条用例通过,无控制台报错。

测试人:Codex(AI) 测试日期:2026-09-22