From ef272c7b22fb7038ac022e387b6c2eb20764bbd7 Mon Sep 17 00:00:00 2001 From: Sam Xing <360338521@qq.com> Date: Sat, 25 Jan 2025 15:47:26 +0800 Subject: [PATCH] feat: enable multi-choose in FileManager --- .../views/file_manager/iframe.blade.php | 22 +++++++++++-- .../views/file_manager/main.blade.php | 33 ++++++++++++++----- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/innopacks/panel/resources/views/file_manager/iframe.blade.php b/innopacks/panel/resources/views/file_manager/iframe.blade.php index 0dc8eb53..3d6608d7 100644 --- a/innopacks/panel/resources/views/file_manager/iframe.blade.php +++ b/innopacks/panel/resources/views/file_manager/iframe.blade.php @@ -2,10 +2,28 @@ @section('title', __('panel/menu.file_manager')) +@push('footer') + +@endpush + @include('panel::file_manager.main') @section('page-bottom-btns') -
- +
+
@endsection diff --git a/innopacks/panel/resources/views/file_manager/main.blade.php b/innopacks/panel/resources/views/file_manager/main.blade.php index 828741a3..4096e070 100644 --- a/innopacks/panel/resources/views/file_manager/main.blade.php +++ b/innopacks/panel/resources/views/file_manager/main.blade.php @@ -1745,14 +1745,17 @@ class="file-card-context-menu" this.copyDialog.visible = true; }, handleFileClick(event, file) { - if (this.isDragging) return; // 如果正在拖拽,不处理点击事件 + if (this.isDragging) return; - if (this.isMultiSelectMode) { - this.toggleFileSelect(file); - } else if (this.isIframeMode && !file.is_dir) { - // 如果是 iframe 模式且点击的是文件(不是文件夹),直接选择并返回 - window.parent.fileManagerCallback(file); - parent.layer.closeAll(); + if (this.isIframeMode && !file.is_dir) { + if (window.fileManagerConfig.multiple) { + // 多选模式:切换选择状态 + this.toggleFileSelect(file); + } else { + // 单选模式:直接返回并关闭 + window.parent.fileManagerCallback(file); + parent.layer.closeAll(); + } } else { this.selectedFiles = [file.id || file.path]; } @@ -2547,7 +2550,7 @@ class="file-card-context-menu" // 处理树节点离开拖拽 handleTreeDragLeave(event, node) { - // 检查鼠��是否真的离开了目标元素及其子元素 + // 检查鼠是否真的离开了目标元素及其子元素 const relatedTarget = event.relatedTarget; const currentTarget = event.currentTarget; @@ -2749,10 +2752,22 @@ class="file-card-context-menu" // 确认选择(多选模式) confirmSelection() { if (this.isIframeMode && window.parent.fileManagerCallback) { + if (this.selectedFiles.length === 0) { + this.$message.warning('请至少选择一个文件'); + return; + } + const selectedFiles = this.files.filter(file => this.selectedFiles.includes(file.id || file.path) ); - window.parent.fileManagerCallback(selectedFiles); + + if (window.fileManagerConfig.multiple) { + // 多选模式:返回数组 + window.parent.fileManagerCallback(selectedFiles); + } else { + // 单选模式:返回单个文件 + window.parent.fileManagerCallback(selectedFiles[0]); + } parent.layer.closeAll(); } }