From 50f5de6601fe38513970d506916948e1c67d7b61 Mon Sep 17 00:00:00 2001 From: linxi <957440651@qq.com> Date: Thu, 2 Apr 2026 19:31:41 +0800 Subject: [PATCH] =?UTF-8?q?Fix=EF=BC=9A5043=20=E3=80=90=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E3=80=91=E4=BD=93=E9=AA=8C=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=AE=80=E4=BB=8B=E5=86=85=E5=AE=B9=E8=BF=87=E9=95=BF?= =?UTF-8?q?=E4=BC=9A=E8=A2=AB=E9=81=AE=E6=8C=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg_product/views/experienceProjectDetail.vue | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/pkg_product/views/experienceProjectDetail.vue b/pkg_product/views/experienceProjectDetail.vue index 2afac84..89ff974 100644 --- a/pkg_product/views/experienceProjectDetail.vue +++ b/pkg_product/views/experienceProjectDetail.vue @@ -92,20 +92,23 @@ - + @@ -191,7 +194,9 @@ export default { projectList: [], userLatitude: null, userLongitude: null, - distanceText: '' + distanceText: '', + currentExperienceIndex: 0, + experienceSwiperHeight: 0 } }, computed: { @@ -268,6 +273,24 @@ export default { this.videoContext.play() } }, + handleExperienceSwiperChange(e) { + this.currentExperienceIndex = e.detail.current || 0 + this.updateExperienceSwiperHeight(this.currentExperienceIndex) + }, + onExperienceImageLoad() { + this.updateExperienceSwiperHeight(this.currentExperienceIndex) + }, + updateExperienceSwiperHeight(index) { + const targetIndex = Number.isInteger(index) ? index : this.currentExperienceIndex + this.$nextTick(() => { + const query = uni.createSelectorQuery().in(this) + query.select('#experience-card-' + targetIndex).boundingClientRect(rect => { + if (rect && rect.height) { + this.experienceSwiperHeight = rect.height + } + }).exec() + }) + }, fetchProjectDetail() { if (!this.experienceMerchantId) { return @@ -317,10 +340,15 @@ export default { } if (project.projectList && project.projectList.length) { this.projectList = project.projectList + this.currentExperienceIndex = 0 this.detailList = project.projectList.map(item => ({ name: item.projectName || '', count: item.projectIntro || '' })) + this.updateExperienceSwiperHeight(0) + setTimeout(() => { + this.updateExperienceSwiperHeight(0) + }, 200) } } }).finally(() => { @@ -620,7 +648,6 @@ export default { .experience-swiper { margin-top: 16rpx; width: 100%; - height: 520rpx; } .experience-image { width: 100%;