u
This commit is contained in:
1 parent
ae6ccad238
commit
b2d113db38
17 files changed
+3087
-1630
No files matched your search
@@ -0,0 +1,82 @@
|
||||
# 批量操作进度通知重构计划
|
||||
|
||||
## 需求分析
|
||||
|
||||
用户要求修改批量操作(下载、上传、删除等)的通知显示逻辑:
|
||||
|
||||
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` 调用方式保持兼容
|
||||
- 任务管理方法保持向后兼容
|
||||
Reference in new issue
Block a user