2.6 KiB
2.6 KiB
批量操作进度通知重构计划
需求分析
用户要求修改批量操作(下载、上传、删除等)的通知显示逻辑:
- 单一通知:批量操作只显示一个 notification
- 手动关闭:通知不会自动关闭,需要用户手动关闭
- 实时更新:显示当前正在处理的文件名和进度
- 结果统计:操作完成后显示总数、成功数、失败数
- 多语言支持:使用现有语言配置,不写死文字
- 通用设计:支持批量下载、上传、删除等多种操作类型
- UI锁定:操作进行时自动锁定UI,操作结束后自动解锁(与通知关闭无关)
修改内容
1. 新增任务组概念
在实例中添加 currentTaskGroup 来管理当前批量操作的通知状态:
this.currentTaskGroup = null; // 当前任务组 { taskType, notificationId, total }
2. 修改 addTask 方法
- 检查是否已有同类型的任务组
- 如果没有,创建新的任务组和通知
- 如果有,复用已有的通知
3. 修改 updateTask 方法
- 更新通知中的当前文件名和进度百分比
- 显示格式:
正在下载:文件名 (进度%)
4. 修改 finishTask 方法
- 所有任务完成后更新通知显示结果统计
- 解锁 UI(与通知关闭无关)
- 通知保持显示,等待用户手动关闭
5. 修改 clearTasks 方法
- 不自动关闭通知(用户手动关闭)
- 只是重置任务状态
6. 修改 closeNotification 方法
- 关闭通知时清理对应的任务组
7. 更新多语言配置
确保以下语言键存在:
batchDownload: 批量下载batchUpload: 批量上传batchDelete: 批量删除downloading: 正在下载uploading: 正在上传deleting: 正在删除downloadResult: 结果统计格式
修改步骤
- 在
init或构造函数中添加currentTaskGroup状态 - 修改
addTask方法支持任务组概念 - 修改
updateTask方法更新进度显示 - 修改
finishTask方法显示最终结果并解锁UI - 修改
clearTasks方法不自动关闭通知 - 修改
closeNotification方法清理任务组 - 验证多语言支持
风险评估
| 风险项 | 风险等级 | 处理方式 |
|---|---|---|
| 任务组状态管理 | 中 | 使用单一任务组管理同一类型的批量操作 |
| 通知重复创建 | 低 | 添加检查逻辑,避免重复创建 |
| UI锁定与通知生命周期不一致 | 中 | 分离 UI 锁定和通知关闭逻辑 |
兼容性
- 原有
showNotification调用方式保持兼容 - 任务管理方法保持向后兼容