From 16213c0f85aa3ac8317797bf4a05fd12940e16d3 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期三, 05 三月 2025 17:29:42 +0800 Subject: [PATCH] - --- src/uni_modules/uview-plus/components/u-upload/u-upload.vue | 73 ++++++++++++++++++++++-------------- 1 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/uni_modules/uview-plus/components/u-upload/u-upload.vue b/src/uni_modules/uview-plus/components/u-upload/u-upload.vue index d68b29e..c7706c2 100644 --- a/src/uni_modules/uview-plus/components/u-upload/u-upload.vue +++ b/src/uni_modules/uview-plus/components/u-upload/u-upload.vue @@ -12,7 +12,7 @@ :src="item.thumb || item.url" :mode="imageMode" class="u-upload__wrap__preview__image" - @tap="onPreviewImage(item)" + @tap="onPreviewImage(item, index)" :style="[{ width: addUnit(width), height: addUnit(height) @@ -21,7 +21,7 @@ <view v-else class="u-upload__wrap__preview__other" - @tap="onClickPreview($event, item)" + @tap="onClickPreview(item, index)" > <u-icon color="#80CBF9" @@ -334,50 +334,67 @@ ); }, // 棰勮鍥剧墖 - onPreviewImage(item) { - if (!item.isImage || !this.previewFullImage) return + onPreviewImage(previewItem, index) { + if (!previewItem.isImage || !this.previewFullImage) return + let current = 0; + const urls = []; + let imageIndex = 0; + for (var i = 0; i < this.lists.length; i++) { + const item = this.lists[i]; + if (item.isImage || (item.type && item.type === 'image')) { + urls.push(item.url || item.thumb); + if (i === index) { + current = imageIndex; + } + imageIndex += 1; + } + } + if (urls.length < 1) { + return; + } uni.previewImage({ - // 鍏坒ilter鎵惧嚭涓哄浘鐗囩殑item锛屽啀杩斿洖filter缁撴灉涓殑鍥剧墖url - urls: this.lists.filter((item) => this.accept === 'image' || test.image(item.url || item.thumb)).map((item) => item.url || item.thumb), - current: item.url || item.thumb, + urls: urls, + current: current, fail() { toast('棰勮鍥剧墖澶辫触') }, }); }, - onPreviewVideo(event) { + onPreviewVideo(index) { if (!this.previewFullImage) return; - const { - index - } = event.currentTarget.dataset; - const { - lists - } = this.data; + let current = 0; + const sources = []; + let videoIndex = 0; + for (var i = 0; i < this.lists.length; i++) { + const item = this.lists[i]; + if (item.isVideo || (item.type && item.type === 'video')) { + sources.push(Object.assign(Object.assign({}, item), { + type: 'video' + })); + if (i === index) { + current = videoIndex; + } + videoIndex += 1; + } + } + if (sources.length < 1) { + return; + } // #ifdef MP-WEIXIN wx.previewMedia({ - sources: lists - .filter((item) => isVideoFile(item)) - .map((item) => - Object.assign(Object.assign({}, item), { - type: 'video' - }) - ), - current: index, + sources: sources, + current: current, fail() { toast('棰勮瑙嗛澶辫触') }, }); // #endif }, - onClickPreview(event) { - const { - index - } = event.currentTarget.dataset; - const item = this.data.lists[index]; + onClickPreview(item, index) { if (!this.previewFullImage) return; switch (item.type) { case 'video': - this.onPreviewVideo(event); + this.onPreviewVideo(index); break; default: break; -- Gitblit v1.9.1