From dde28136e1e58e931f697ef483f60c22a6aa512d Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 31 Mar 2022 15:12:45 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=96=87=E4=BB=B6=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E7=9B=B4=E6=8E=A5=E5=BC=B9=E7=AA=97=E6=B5=8F?= =?UTF-8?q?=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/FileController.php | 5 +++++ app/Models/File.php | 22 +++++++++++++++++++++ resources/assets/js/pages/manage/file.vue | 17 +++++++++++++--- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php index ab5527e24..e1b9c669c 100755 --- a/app/Http/Controllers/Api/FileController.php +++ b/app/Http/Controllers/Api/FileController.php @@ -90,6 +90,10 @@ class FileController extends AbstractController } } } + // 图片直接返回预览地址 + foreach ($array as &$item) { + File::handleImageUrl($item); + } return Base::retSuccess('success', $array); } @@ -757,6 +761,7 @@ class FileController extends AbstractController // $data = $tmpRow->toArray(); $data['full_name'] = $webkitRelativePath ?: $data['name']; + File::handleImageUrl($data); return Base::retSuccess($data['name'] . ' 上传成功', $data); }); } diff --git a/app/Models/File.php b/app/Models/File.php index db85f4778..9995df685 100644 --- a/app/Models/File.php +++ b/app/Models/File.php @@ -75,6 +75,13 @@ class File extends AbstractModel 'ppt', 'pptx', ]; + /** + * 图片文件 + */ + const imageExt = [ + 'jpg', 'jpeg', 'png', 'gif', 'bmp' + ]; + /** * 本地媒体文件 */ @@ -285,6 +292,21 @@ class File extends AbstractModel Task::deliver($task); } + /** + * 处理返回图片地址 + * @param $item + * @return void + */ + public static function handleImageUrl(&$item) + { + if (in_array($item['ext'], self::imageExt) ) { + $content = Base::json2array(FileContent::whereFid($item['id'])->orderByDesc('id')->value('content')); + if ($content) { + $item['image_url'] = Base::fillUrl($content['url']); + } + } + } + /** * 获取文件并检测权限 * @param $id diff --git a/resources/assets/js/pages/manage/file.vue b/resources/assets/js/pages/manage/file.vue index 5280adb9f..3ae78b652 100644 --- a/resources/assets/js/pages/manage/file.vue +++ b/resources/assets/js/pages/manage/file.vue @@ -880,12 +880,23 @@ export default { this.searchKey = ''; this.pid = item.id; } else { + // 图片直接浏览 + if (item.image_url) { + const list = this.fileList.filter(({image_url}) => !!image_url) + if (list.length > 0) { + this.$store.state.previewImageIndex = list.findIndex(({id}) => item.id === id); + this.$store.state.previewImageList = list.map(item => item.image_url); + return; + } + } + // 客户端打开独立窗口 if (this.$Electron) { this.openSingle(item); - } else { - this.fileInfo = item; - this.fileShow = true; + return; } + // 正常显示弹窗 + this.fileInfo = item; + this.fileShow = true; } },