cda7e0a018
补齐文件管理器右键子菜单点击展开,新增拖拽上传目标确认, 并在上传完成后自动刷新当前可见目录 目录删除改为区分仅删空目录与强制递归删除,删除后自动回退 失效路径,避免文件树持续报 No such file 同步后端 sftp:rmdir 的 recursive 分支,并将关于页与版本检查 默认仓库链接切换到 Micah123321/nexus-terminal
64 lines
3.1 KiB
Markdown
64 lines
3.1 KiB
Markdown
# 变更提案: file-manager-delete-upload-stability
|
|
|
|
## 元信息
|
|
```yaml
|
|
类型: 修复增强
|
|
方案类型: implementation
|
|
优先级: P1
|
|
状态: 已完成
|
|
状态说明: 已完成子菜单点击展开、拖拽上传目标确认、目录删除模式区分与删除后无效路径自动回退
|
|
创建: 2026-03-26
|
|
```
|
|
|
|
---
|
|
|
|
## 1. 需求
|
|
|
|
### 背景
|
|
文件管理器近期完成了资源管理器树与右键菜单改造,但当前仍存在一组影响可用性的连锁问题:终端/上传/压缩子菜单点击无反应,上传后没有自动刷新且拖拽上传没有目标确认,目录删除缺少“空目录删除 / 强制递归删除”的明确选项,并且删除后树会持续触发 `读取目录失败: No such file`。
|
|
|
|
### 目标
|
|
- 修复文件右键菜单的子菜单交互。
|
|
- 上传后自动刷新,并在拖拽上传时明确目标目录。
|
|
- 目录删除提供“仅删除空目录”和“强制递归删除”二次确认。
|
|
- 删除后不再持续触发已不存在路径的目录加载错误。
|
|
|
|
### 约束条件
|
|
```yaml
|
|
范围约束: 优先收敛在 FileManager.vue、FileManagerContextMenu.vue、useFileManagerContextMenu.ts 和 useSftpActions.ts
|
|
后端约束: 可复用现有 sftp:rmdir 能力,必要时仅做最小协议扩展
|
|
交互约束: 保持当前资源管理器树和右键菜单风格,不回退到旧文件表格
|
|
兼容约束: 单文件/目录右键、多选和空白处右键仍需可用
|
|
```
|
|
|
|
### 验收标准
|
|
- [x] 终端 / 上传 / 压缩子菜单可明确展开并可点击执行
|
|
- [x] 上传完成后自动刷新,拖拽上传前能确认目标目录
|
|
- [x] 删除目录时弹二次确认并区分空目录删除与强制递归删除
|
|
- [x] 删除后不再持续报 `读取目录失败: No such file`
|
|
- [x] 前端构建通过
|
|
|
|
---
|
|
|
|
## 2. 方案
|
|
|
|
### 技术方案
|
|
在 `FileManagerContextMenu.vue` 中补桌面端点击展开二级菜单与更稳定的 hover/click 保持逻辑;在 `FileManager.vue` 中为拖拽上传新增目标目录提示与确认,并在上传成功回调后触发目标目录刷新;目录删除改成显式二次确认流程,给目录提供“仅删除空目录”和“强制递归删除”两种执行路径。`useSftpActions.ts` 与删除成功后的树更新逻辑同步修正,若当前路径或挂起加载目标落在已删除目录下,则自动回退到父目录或 `/`,避免持续请求不存在路径。
|
|
|
|
### 影响范围
|
|
```yaml
|
|
涉及模块:
|
|
- frontend: FileManager.vue
|
|
- frontend: FileManagerContextMenu.vue
|
|
- frontend: useFileManagerContextMenu.ts
|
|
- frontend: useSftpActions.ts
|
|
预计变更文件: 4-7
|
|
```
|
|
|
|
### 风险评估
|
|
| 风险 | 等级 | 应对 |
|
|
|------|------|------|
|
|
| 删除协议若需扩展 `recursive` 参数,前后端需同步 | 中 | 先核对现有后端 `sftp:rmdir` 能否透传策略,不足时做最小扩展 |
|
|
| 拖拽上传增加确认可能影响原有快捷操作感 | 低 | 仅在目标不明确时或跨目录时确认,默认场景仍快速上传 |
|
|
| 删除后自动回退目录可能与用户当前聚焦目录预期不一致 | 低 | 仅在当前路径已失效时回退到父目录,优先保证不报错 |
|