用户在订单后台点击导出,页面转了很久。他离开当前页面继续工作,回来却不知道任务是否还在执行;再次点击,又得到两份名称相近的文件。问题不只是等待动画太慢,而是系统没有把“提交请求”“后台生成”和“拿到文件”交代成一件可追踪的事。
异步导出的界面应该给用户一条稳定路径:知道导出的范围,找到原任务,分辨当前状态,并在文件可用时完成下载。用在线原型设计工具组织这些状态时,要把任务记录作为主线,而不是只画一个从 0 到 100 的进度条。

点击导出时,先留下一份可解释的任务快照
假设用户导出“2026年9月、已付款、华东”的订单,格式选择 CSV。提交后创建任务 EXP-0928-01,记录筛选条件、选中字段、格式与创建时间。用户随后把列表改成“华南”,这个已创建任务仍然对应原来的华东范围;不能让页面当前筛选悄悄改写后台任务的含义。
还要和研发确认取数时点。系统可能基于提交时的数据快照,也可能在实际处理时查询最新数据。两者会影响导出行数与页面当时看到的数量。界面应描述已经实现的口径,不承诺不存在的“提交瞬间全量快照”;重要报表可以在任务详情或文件说明中保留数据时间,便于复核。
范围摘要不必把所有条件塞成一段长句。主行写“9月华东已付款订单”,次行展开日期、状态、地区和字段集合;细节可展开,但关键范围在任务列表里就应能辨认。如果使用了跨页选择,提交前应明确导出的是本页、选中项还是全部筛选结果,相关范围规则可参考表格跨页选择与批量操作。
任务已受理,不等于文件已经生成
点击导出后的第一次反馈只说明系统收到了请求。Microsoft 的异步请求—回复模式区分了受理、处理状态与最终资源:界面同样不能把“请求成功”写成“导出完成”。收到明确任务记录后,可以提示“已创建导出任务,可在导出记录中查看”。
排队时说明尚未开始,生成中说明正在处理,可下载时才提供有效下载入口。若没有可信的总工作量,可以显示阶段与最近更新时间,不必硬造百分比。已处理 8,000 条、总数 10,000 条可以解释记录处理进度,却不一定包含最终文件打包耗时,不能据此直接宣布整项任务完成。
Cloudscape 的进度条规范可用于判断何时适合提供确定进度。对业务界面来说,更重要的是分母代表什么:数据读取、文件生成和可下载不是必然线性推进的三个等分阶段。未知的剩余时间可以不写,不能让一个估计值在页面上伪装成承诺。
| 状态 | 读者需要知道 | 可提供的操作 |
|---|---|---|
| 排队中 | 请求已记录,尚未开始生成 | 查看范围;支持时可取消 |
| 生成中 | 任务仍在执行,进度口径明确 | 返回工作;支持时请求取消 |
| 文件已生成 | 哪个范围、什么格式、何时过期 | 下载这份文件 |
| 生成失败 | 失败原因与可恢复路径 | 查看详情或按原条件重新导出 |
| 文件已过期 | 记录仍存在,但旧文件不可用 | 明确重新取数后再创建任务 |
允许离开之前,必须有能找回任务的入口
如果任务由服务端持续执行,就不要用“离开页面将丢失进度”的通用弹窗阻拦用户。入口可以放在本业务的“导出记录”,也可以进入产品既有任务中心,关键是用户离开当前列表后仍然找得到。一个几秒钟后消失的消息条不能承担唯一入口。
用户回到任务记录时,应读取任务真实状态,而不是重新播放本地动画。网络中断导致暂时获取不到状态,要显示“暂时无法更新状态”,保留任务编号和上次已知结果;不能把状态接口失败当成后台生成失败,也不能自动再发一次创建请求。
完成提醒可以告诉用户文件已就绪,并提供返回任务的链接。普通任务完成不应强行把焦点从正在填写的表单跳走;辅助技术如何识别这类更新,可按 W3C 状态消息要求交付。是否发送邮件或站内通知由产品实际能力决定,不把设计稿里的一句“稍后通知”当作已经接入通知服务。
取消、关闭和重试,分别改变什么
关闭任务详情只是离开当前视图;取消任务才是请求停止后台处理。两者应有不同名称和后果。用户点击取消后,如果后台需要时间确认,先显示“取消请求处理中”,得到实际结果再显示“已取消”。任务可能恰好完成,此时应保留已完成结果,而不是为了迎合按钮动作把它改成不存在的取消状态。
重复点击导出也不必一律生成新任务。若第一次提交的响应丢失,系统应先恢复或查询原任务;如果用户确实要重新取数,可以明确提供“重新导出”。二者在界面上分别回答“刚才那次怎么样了”和“现在再做一次”,不能共用一个含糊的重试按钮。
失败后按原条件重建任务时,要让用户核对条件是否仍有效。例如原字段被移除、订单访问权限改变,系统可能无法按原请求执行。保留可解释的失败记录,同时提示需要调整的条件,不把全部失败都归因于网络,也不要在用户不知情时减少导出字段。
文件过期,不等于删掉任务历史
下载按钮附近应显示产品真实的文件保留规则,最好给出可理解的具体到期时间。旧文件过期后,任务仍可保留范围、创建时间与结果摘要,让用户知道它曾经执行过。不要把整条记录消失当作清理文件的唯一做法,否则用户难以解释为什么昨天还能下载、今天却找不到。
“重新导出”会重新读取数据,结果可能不同于旧文件;“重新获取下载链接”则可能仍指向同一份有效文件。只有服务真正支持后者,界面才能这样承诺。对于权限变化,下载时也要服从当前访问控制,不能以“之前生成过”为理由继续暴露已无权访问的数据。
文件已生成与用户成功保存到本机也不是同一状态。网页通常能知道下载入口被使用,却未必能确认浏览器最终保存成功。因此任务列表可以继续保留下载操作,不应仅因按钮点过一次就把文件隐藏,或显示没有证据的“已保存到你的电脑”。
评审导出任务,不只播放一条进度动画
在 Pixso 中整理订单列表、导出记录和任务详情,分别补上排队、生成、文件可用、取消处理中与过期状态。这几张画板用同一个任务编号与筛选范围串起来,才看得出是在查看旧任务,还是重新创建了一次导出。

先演练一条正常路径:导出华东订单,离开页面修改其他工作,返回记录下载原文件。再演练一条有分歧的路径:取消请求发出时任务刚完成,界面如何解释最终状态。最后让旧文件过期,检查重建任务是否保留原条件、说明重新取数,并避免生成两条无法区分的记录。
这组原型讨论的是产品行为,后台队列、权限校验与文件存储仍需要真实实现和测试。交付时把每个状态对应的允许动作、显示文案和返回位置写清楚,用户就不必靠重复点击或守着进度条判断导出有没有在工作。