From bc85da49e3ec0d635f9eb5e1879adfa593abf4f9 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 7 Nov 2024 01:44:42 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=9B=BE=E7=89=87=E6=B5=8F=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PreviewImage/components/swipe.vue | 5 +---- .../PreviewImage/components/view.vue | 2 +- .../js/components/PreviewImage/state.vue | 4 ++-- resources/assets/js/components/TEditor.vue | 3 +-- .../assets/js/components/TEditorTask.vue | 3 +-- .../js/components/VMEditor/engine/preview.vue | 3 +-- .../js/pages/manage/approve/details.vue | 3 +-- .../manage/components/ComplaintManagement.vue | 2 +- .../pages/manage/components/DialogWrapper.vue | 19 ++++++++---------- .../js/pages/manage/components/TaskDetail.vue | 6 ++++-- resources/assets/js/store/actions.js | 20 ++++++++++++++++--- 11 files changed, 38 insertions(+), 32 deletions(-) diff --git a/resources/assets/js/components/PreviewImage/components/swipe.vue b/resources/assets/js/components/PreviewImage/components/swipe.vue index 028c3ac20..c2087dcb4 100644 --- a/resources/assets/js/components/PreviewImage/components/swipe.vue +++ b/resources/assets/js/components/PreviewImage/components/swipe.vue @@ -59,9 +59,6 @@ export default { this.lightbox?.destroy(); const dataSource = array.map(item => { if ($A.isJson(item)) { - if (item.src) { - item.src = $A.thumbRestore(item.src); - } if (parseInt(item.width) > 0 && parseInt(item.height) > 0) { return item } @@ -69,7 +66,7 @@ export default { } htmlZoom = true; return { - html: `
`, + html: `
`, } }) this.lightbox = new PhotoSwipeLightbox({ diff --git a/resources/assets/js/components/PreviewImage/components/view.vue b/resources/assets/js/components/PreviewImage/components/view.vue index 95394fa91..e384be409 100644 --- a/resources/assets/js/components/PreviewImage/components/view.vue +++ b/resources/assets/js/components/PreviewImage/components/view.vue @@ -218,7 +218,7 @@ export default { if ($A.isJson(item)) { item = item.src; } - return $A.thumbRestore(item); + return item; }, imgStyle() { const {scale, deg, offsetX, offsetY, enableTransition} = this.transform; diff --git a/resources/assets/js/components/PreviewImage/state.vue b/resources/assets/js/components/PreviewImage/state.vue index 9942ea081..47dbbbec3 100644 --- a/resources/assets/js/components/PreviewImage/state.vue +++ b/resources/assets/js/components/PreviewImage/state.vue @@ -35,9 +35,9 @@ export default { let position = Math.min(Math.max(this.$store.state.previewImageIndex, 0), this.$store.state.previewImageList.length - 1) let paths = l.map(item => { if ($A.isJson(item)) { - return $A.thumbRestore(item.src); + return item.src; } - return $A.thumbRestore(item) + return item }) let max = 50; if (paths.length > max) { diff --git a/resources/assets/js/components/TEditor.vue b/resources/assets/js/components/TEditor.vue index 5d7b6b871..efeac8daa 100755 --- a/resources/assets/js/components/TEditor.vue +++ b/resources/assets/js/components/TEditor.vue @@ -614,8 +614,7 @@ export default { $A.messageWarning("没有可预览的图片") return; } - let index = Math.max(0, array.findIndex(item => item.src === this.operateImg)); - this.$store.dispatch("previewImage", {index, list: array}) + this.$store.dispatch("previewImage", {index: this.operateImg, list: array}) }, addClickEvent({target}, isFull) { diff --git a/resources/assets/js/components/TEditorTask.vue b/resources/assets/js/components/TEditorTask.vue index 3aeacedc7..64ee351c3 100755 --- a/resources/assets/js/components/TEditorTask.vue +++ b/resources/assets/js/components/TEditorTask.vue @@ -303,8 +303,7 @@ export default { $A.messageWarning("没有可预览的图片") return; } - let index = Math.max(0, array.findIndex(item => item.src === this.operateMenu.img)); - this.$store.dispatch("previewImage", {index, list: array}) + this.$store.dispatch("previewImage", {index: this.operateMenu.img, list: array}) }, } } diff --git a/resources/assets/js/components/VMEditor/engine/preview.vue b/resources/assets/js/components/VMEditor/engine/preview.vue index 33523bcbc..b440fd03c 100755 --- a/resources/assets/js/components/VMEditor/engine/preview.vue +++ b/resources/assets/js/components/VMEditor/engine/preview.vue @@ -79,8 +79,7 @@ export default { if (list.length === 0) { return } - const index = Math.max(0, list.indexOf(target.src)) - this.$store.dispatch("previewImage", {index, list}) + this.$store.dispatch("previewImage", {index: target.src, list}) } } } diff --git a/resources/assets/js/pages/manage/approve/details.vue b/resources/assets/js/pages/manage/approve/details.vue index fb01fb6cb..73a350d20 100644 --- a/resources/assets/js/pages/manage/approve/details.vue +++ b/resources/assets/js/pages/manage/approve/details.vue @@ -509,8 +509,7 @@ export default { src: $A.mainUrl(src) } }); - const index = list.findIndex(({src}) => src === $A.mainUrl(currentUrl)); - this.$store.dispatch("previewImage", {index, list}) + this.$store.dispatch("previewImage", {index: $A.mainUrl(currentUrl), list}) }, // 点击头像 onAvatar(userid) { diff --git a/resources/assets/js/pages/manage/components/ComplaintManagement.vue b/resources/assets/js/pages/manage/components/ComplaintManagement.vue index be760f9f5..739439525 100644 --- a/resources/assets/js/pages/manage/components/ComplaintManagement.vue +++ b/resources/assets/js/pages/manage/components/ComplaintManagement.vue @@ -168,7 +168,7 @@ export default { }, on: { click: () => { - this.$store.dispatch("previewImage", { index: 0, list }) + this.$store.dispatch("previewImage", {index: 0, list}) } } }, [h('AutoTip', this.$L('点击查看'))]) diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 2cec27be2..24761d89b 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -3177,8 +3177,7 @@ export default { this.onViewPicture(target.currentSrc); } else { const list = $A.getTextImagesInfo(el.outerHTML) - const index = list.findIndex(item => item.src == target.currentSrc) - this.$store.dispatch("previewImage", {index, list}) + this.$store.dispatch("previewImage", {index: target.currentSrc, list}) } break; @@ -3263,9 +3262,12 @@ export default { const {msg} = data; if (msg.ext === 'mp4') { this.$store.dispatch("previewImage", { - src: msg.path, - width: msg.width, - height: msg.height, + index: 0, + list: [{ + src: msg.path, + width: msg.width, + height: msg.height, + }] }) return } @@ -3330,12 +3332,7 @@ export default { } }) // - const index = list.findIndex(({src}) => src === currentUrl); - if (index > -1) { - this.$store.dispatch("previewImage", {index, list}) - } else { - this.$store.dispatch("previewImage", currentUrl) - } + this.$store.dispatch("previewImage", {index: currentUrl, list}) }, onDownFile(data) { diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index 104733275..07e16c557 100755 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -1671,7 +1671,8 @@ export default { const index = list.findIndex(item => item.id === file.id); if (index > -1) { this.$store.dispatch("previewImage", { - index, list: list.map(item => { + index, + list: list.map(item => { return { src: item.path, width: item.width, @@ -1681,7 +1682,8 @@ export default { }) } else { this.$store.dispatch("previewImage", { - index: 0, list: [{ + index: 0, + list: [{ src: file.path, width: file.width, height: file.height, diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 327bc2103..de863e045 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -3487,11 +3487,25 @@ export default { /** * 预览图片 * @param state - * @param data + * @param data {{index: number | string, list: array} | string} */ previewImage({state}, data) { - if (!$A.isJson(data) || !$A.isArray(data.list)) { - data = {index:0, list: [data]} + if (!$A.isJson(data)) { + data = {index: 0, list: [data]} + } + data.list = data.list.map(item => { + if ($A.isJson(item)) { + item.src = $A.thumbRestore(item.src) + } else { + item = $A.thumbRestore(item) + } + return item + }) + if (typeof data.index === "string") { + const current = $A.thumbRestore(data.index) + data.index = Math.max(0, data.list.findIndex(item => { + return $A.isJson(item) ? item.src == current : item == current + })) } state.previewImageIndex = data.index; state.previewImageList = data.list;