From 309cc3fe6303d8464951063e89fc9d623915501e Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 10 三月 2025 16:23:35 +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