From 1f8198b36ba33a743a8e3415392685c464c96359 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Tue, 31 May 2022 15:15:54 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF=E5=9B=BE=E7=89=87=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/FileController.php | 17 ++-- app/Models/File.php | 2 + package.json | 1 + .../PreviewImage/components/swipe.vue | 82 +++++++++++++++++++ .../PreviewImage/{ => components}/view.vue | 10 ++- .../js/components/PreviewImage/index.vue | 30 +++++-- .../manage/components/ChatInput/index.vue | 2 +- .../js/pages/manage/components/DialogView.vue | 66 ++++++++++----- resources/assets/js/pages/manage/file.vue | 11 ++- resources/assets/sass/pages/page-file.scss | 3 + 10 files changed, 190 insertions(+), 34 deletions(-) create mode 100644 resources/assets/js/components/PreviewImage/components/swipe.vue rename resources/assets/js/components/PreviewImage/{ => components}/view.vue (97%) diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php index 88666a1d4..37cfa50b2 100755 --- a/app/Http/Controllers/Api/FileController.php +++ b/app/Http/Controllers/Api/FileController.php @@ -758,14 +758,19 @@ class FileController extends AbstractController $file->saveBeforePids(); // $data = Base::uploadMove($data, "uploads/file/" . $file->type . "/" . date("Ym") . "/" . $file->id . "/"); + $content = [ + 'from' => '', + 'type' => $type, + 'ext' => $data['ext'], + 'url' => $data['path'], + ]; + if (isset($data['width'])) { + $content['width'] = $data['width']; + $content['height'] = $data['height']; + } $content = FileContent::createInstance([ 'fid' => $file->id, - 'content' => [ - 'from' => '', - 'type' => $type, - 'ext' => $data['ext'], - 'url' => $data['path'] - ], + 'content' => $content, 'text' => '', 'size' => $file->size, 'userid' => $user->userid, diff --git a/app/Models/File.php b/app/Models/File.php index b38d755f1..af294bcf9 100644 --- a/app/Models/File.php +++ b/app/Models/File.php @@ -341,6 +341,8 @@ class File extends AbstractModel $content = Base::json2array(FileContent::whereFid($item['id'])->orderByDesc('id')->value('content')); if ($content) { $item['image_url'] = Base::fillUrl($content['url']); + $item['image_width'] = intval($content['width']); + $item['image_height'] = intval($content['height']); } } return $item; diff --git a/package.json b/package.json index b5eddd8bc..79b6c3dae 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "moment": "^2.29.1", "node-sass": "^6.0.1", "notification-koro1": "^1.1.1", + "photoswipe": "^5.2.7", "postcss": "^8.4.5", "quill": "^1.3.7", "quill-mention-hi": "^3.1.0-1", diff --git a/resources/assets/js/components/PreviewImage/components/swipe.vue b/resources/assets/js/components/PreviewImage/components/swipe.vue new file mode 100644 index 000000000..8f524b147 --- /dev/null +++ b/resources/assets/js/components/PreviewImage/components/swipe.vue @@ -0,0 +1,82 @@ + + + diff --git a/resources/assets/js/components/PreviewImage/view.vue b/resources/assets/js/components/PreviewImage/components/view.vue similarity index 97% rename from resources/assets/js/components/PreviewImage/view.vue rename to resources/assets/js/components/PreviewImage/components/view.vue index d32e312f8..074037cf3 100644 --- a/resources/assets/js/components/PreviewImage/view.vue +++ b/resources/assets/js/components/PreviewImage/components/view.vue @@ -72,6 +72,10 @@ z-index: 2; transform: translateY(-50%); + @media (max-width: 640px) { + display: none; + } + &.is-disabled { cursor: no-drop; @@ -208,7 +212,11 @@ export default { return this.index === this.urlList.length - 1; }, currentImg() { - return $A.rightDelete(this.urlList[this.index], "_thumb.jpg"); + let item = this.urlList[this.index]; + if ($A.isJson(item)) { + item = item.src; + } + return $A.rightDelete(item, "_thumb.jpg"); }, imgStyle() { const {scale, deg, offsetX, offsetY, enableTransition} = this.transform; diff --git a/resources/assets/js/components/PreviewImage/index.vue b/resources/assets/js/components/PreviewImage/index.vue index 4b0eed0ef..d86de293c 100644 --- a/resources/assets/js/components/PreviewImage/index.vue +++ b/resources/assets/js/components/PreviewImage/index.vue @@ -5,16 +5,19 @@ :mask-closable="false" :footer-hide="true" :transition-names="['', '']" - fullscreen - class-name="common-preview-image"> - + :class-name="mode === 'desktop' ? 'common-preview-image-view' : 'common-preview-image-swipe'" + fullscreen> +