# UI 提示系统重构计划 ## 需求分析 用户要求重新设计并实现一个轻量 UI 提示系统,包含: 1. **Toast(右上角)** - 瞬时提示,无状态设计 2. **Task Center(右下角任务中心)** - 长任务状态系统,有状态 核心要求: - 两者完全独立,不共享逻辑 - Task 必须通用化,不绑定具体业务类型 - 实现 UI Lock 机制 - 支持多语言国际化 --- ## 架构设计 ### 1. 整体架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ UI 提示系统 │ ├───────────────────────────┬─────────────────────────────────┤ │ Toast 系统 │ Task Center 系统 │ │ (右上角,无状态) │ (右下角,有状态) │ ├───────────────────────────┼─────────────────────────────────┤ │ • 自动消失 │ • 手动关闭 │ │ • 多条堆叠 │ • 单一实例 │ │ • 类型:success/error/ │ • 生命周期独立 │ │ info/warning │ • 进度追踪 │ └───────────────────────────┴─────────────────────────────────┘ ``` ### 2. Toast API ```js showToast({ title, // 标题 message, // 消息内容 type: "success | error | info | warning", duration // 显示时长(毫秒) }); ``` ### 3. Task API ```js // 创建任务 startTask({ id, // 任务ID title, // 任务标题(国际化key) total, // 总数量 current, // 当前进度 currentItem // 当前处理项 }); // 更新任务 updateTask({ id, // 任务ID current, // 当前进度 currentItem // 当前处理项 }); // 完成任务 finishTask({ id, // 任务ID total, // 总数量 success, // 成功数量 failed // 失败数量 }); // 手动关闭 closeTask(id); ``` --- ## 修改内容 ### 1. 修改 CSS 文件 (`custom-file/index.css`) **新增样式:** - Toast 容器样式(右上角固定定位) - Toast 单条样式(支持不同类型) - Toast 动画(进入/退出) - Task Center 容器样式(右下角固定定位) - Task Center 进度条样式 - Task Center 结果展示样式 - UI Lock 样式 **删除旧样式:** - 删除 `.task-dock` 相关样式(如仍存在) ### 2. 修改 JS 文件 (`custom-file/index.js`) **新增方法:** | 方法名 | 功能 | |--------|------| | `showToast` | 显示 Toast 提示 | | `startTask` | 创建并启动任务 | | `updateTask` | 更新任务进度 | | `finishTask` | 完成任务 | | `closeTask` | 关闭任务 UI | | `lockUI` | 锁定 UI | | `unlockUI` | 解锁 UI | | `isUILocked` | 检查 UI 是否锁定 | **修改方法:** - `render` - 添加 Toast 和 Task Center 的 DOM 结构 - `internalDownloadBatch` - 使用新的 Task API **删除方法:** - `addTask`(旧版本) - `updateTask`(旧版本) - `finishTask`(旧版本) - `clearTasks`(旧版本) - `updateTaskStats`(旧版本) ### 3. 新增多语言配置 ```js languages: { "zh-CN": { // ... 现有配置 toast: { success: "成功", error: "错误", info: "提示", warning: "警告" }, task: { title: { processing: "处理中" }, total: "总计", success: "成功", failed: "失败", currentItem: "当前项", close: "关闭" } }, "en-US": { // ... 现有配置 toast: { success: "Success", error: "Error", info: "Info", warning: "Warning" }, task: { title: { processing: "Processing" }, total: "Total", success: "Success", failed: "Failed", currentItem: "Current", close: "Close" } } } ``` --- ## 实施步骤 | 步骤 | 任务 | 文件 | 状态 | |------|------|------|------| | 1 | 添加 Toast 和 Task Center 的 CSS 样式 | `custom-file/index.css` | 待执行 | | 2 | 更新多语言配置 | `custom-file/index.js` | 待执行 | | 3 | 添加 Toast 相关方法 | `custom-file/index.js` | 待执行 | | 4 | 添加 Task Center 相关方法 | `custom-file/index.js` | 待执行 | | 5 | 添加 UI Lock 机制 | `custom-file/index.js` | 待执行 | | 6 | 修改 render 方法添加 DOM 结构 | `custom-file/index.js` | 待执行 | | 7 | 修改 internalDownloadBatch 使用新 API | `custom-file/index.js` | 待执行 | | 8 | 删除旧的任务管理方法 | `custom-file/index.js` | 待执行 | --- ## 风险评估 | 风险项 | 风险等级 | 处理方式 | |--------|----------|----------| | Task 状态与 UI 不同步 | 中 | 确保 task 对象独立于 UI 存在 | | Toast 堆叠过多 | 低 | 限制最大显示数量(如5条) | | UI Lock 状态异常 | 中 | 在任务完成时强制解锁 | | 多语言文案遗漏 | 低 | 统一使用 `this.language.xxx` 模式 | --- ## 兼容性 - 原有 API 调用保持兼容 - 新增 API 为可选参数 - 不影响现有文件管理功能 --- ## 最终目标 实现一个 **"通用任务系统 + Toast 提示系统 + UI Lock + i18n"** 的轻量 UI 架构,支持未来扩展: - 批量上传 - 批量下载 - 批量删除 - 任意异步任务 无需修改核心结构,仅通过 task 数据驱动。