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