From 41c7557b6ba2db6c48a9ebbad232b4fb6407f6d6 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 27 六月 2025 16:13:11 +0800 Subject: [PATCH] 神厨页面同步视频推荐 --- pages/kitchen/KitchenVideo.vue | 179 ++++++++++++++++++++++++++++------------------------------- 1 files changed, 85 insertions(+), 94 deletions(-) diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue index 0223187..43b3432 100644 --- a/pages/kitchen/KitchenVideo.vue +++ b/pages/kitchen/KitchenVideo.vue @@ -248,7 +248,7 @@ </scroll-view> </uni-drawer> <view v-if="videoList.length===0" style="display: flex;align-items: center;justify-content: center;background-color: #fff;height: 100%">褰撳墠娌℃湁鍙互鏌ョ湅鐨勮棰�</view> - + <custom-tabbar bgColor="#ffffff" selected="kitchen"></custom-tabbar> </view> </template> @@ -342,8 +342,6 @@ startY: 0, endY: 0 }, - - videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚� loading: false, // 鏄惁姝e湪鍔犺浇 videoQuery: { pageNumber: 1, @@ -374,10 +372,6 @@ this.getKitchenTypeList(); this.loadVideos(); }, - onReady() { - // 鍒濆鍖栬棰戜笂涓嬫枃 - this.initVideoContexts(); - }, methods: { async chooseCategory(id) { if (this.currentCategort === id) return @@ -386,7 +380,7 @@ this.videoQuery.kitchenTypeId = id; this.videoLoading = false; this.currentIndex = 0; - + await this.loadVideos() }, getKitchenTypeList() { @@ -658,14 +652,6 @@ } }) }, - // 鍒濆鍖栬棰戜笂涓嬫枃 - initVideoContexts() { - this.videoContexts = this.videoList.map((_, index) => { - let videoContent = uni.createVideoContext(`video${index}`, this); - return videoContent; - }); - }, - // 鍔犺浇瑙嗛鏁版嵁 async loadVideos() { console.log(this.loading, this.videoNoMore,this.videoQuery) @@ -686,9 +672,6 @@ ), ]; } - this.$nextTick(() => { - this.initVideoContexts(); - }); this.loading = false; if (res.data.data.length < this.videoQuery.pageSize) { this.videoNoMore = true; @@ -701,29 +684,75 @@ // 婊戝姩鍒囨崲瑙嗛 onSwiperChange(e) { + this.videoLoading = false // 濡傛灉瑙嗛澶勪簬鏆傚仠鐘舵�佸線涓嬪埛瑙嗛锛岄偅涔堥渶瑕佸啀璁$畻涓�娆℃殏鍋滄椂闂� - if (!this.currentVideoIsPlaying) { - if (this.startPauseTime !== 0) { - const duration = Date.now() - this.startPauseTime - this.totalPauseTime += duration - } + if(!this.currentVideoIsPlaying) { + if(this.startPauseTime !== 0) { + const duration = Date.now() - this.startPauseTime + this.totalPauseTime += duration + } } // 淇濆瓨涓婁竴涓棰戠殑鎾斁璁板綍 this.savePlayRecord() const oldIndex = this.currentIndex; this.currentIndex = e.detail.current; - + const videoContext = uni.createVideoContext(`video${oldIndex}`, this); // 鏆傚仠涓婁竴涓棰� - if (this.videoContexts[oldIndex]) { - this.videoContexts[oldIndex].pause(); - } - + videoContext.pause(); this.startPauseTime = 0; + + // 璁剧疆褰撳墠鎾斁瑙嗛鐨勬�绘椂闀� + this.duration = this.videoList[this.currentIndex].videoDuration; + this.formartDuration = this.sliderFormatTime(this.duration); + // 鎾斁褰撳墠瑙嗛 - if (this.videoContexts[this.currentIndex]) { - this.videoContexts[this.currentIndex].play(); - } + const videoContext1 = uni.createVideoContext(`video${this.currentIndex}`, this); + videoContext1.play() + // 濡傛灉鍓╀綑瑙嗛涓嶈冻锛岃Е鍙戣姹傝幏鍙栨洿澶氳棰� + if (this.videoList.length - 1 < this.currentIndex + this.videoLiveOffset) { + this.loadVideos() + } }, + + // 寮�濮嬭Е鎽� + handleSwiperStart(e) { + console.log("寮�濮嬭Е鎽�", e); + this.touchXY.startX = e.touches[0].pageX + this.touchXY.startY = e.touches[0].pageY + }, + // 瑙︽懜涓� + handleSwiperMove(e) { + this.touchXY.endX = e.touches[0].pageX + this.touchXY.endY = e.touches[0].pageY + }, + // 缁撴潫瑙︽懜 + handleSwiperEnd(item) { + // 闃叉婊戝姩婊氬姩鏉′篃瑙﹀彂璺宠浆 + if (this.showProcess) { + return + } + const diffX = this.touchXY.endX - this.touchXY.startX + const diffY = this.touchXY.endY - this.touchXY.startY + + // 鍒ゆ柇鏄惁鏄í鍚戞粦鍔紙X杞村彉鍖栧ぇ浜嶻杞村彉鍖栵級 + if (Math.abs(diffX) > Math.abs(diffY)) { + if (diffX > 0) { + console.log('鍙虫粦') + if (item.goodsList && item.goodsList.length > 0) { + this.jumpToPay(item.id) + } + } else { + console.log('宸︽粦') + } + } + // 閲嶇疆鍧愭爣 + this.touchXY = { + startX: 0, + endX: 0, + startY: 0, + endY: 0 + } + }, // 鏀惰棌/鍙栨秷鏀惰棌 toggleCollect(item, index) { @@ -804,7 +833,7 @@ onTimeUpdate(e) { this.videoLoading = false this.playRecord.playAt = e.detail.currentTime; - + this.currentTime = e.detail.currentTime; this.progress = (e.detail.currentTime / this.duration) * 100 }, @@ -815,53 +844,15 @@ this.startProgress = this.progress; // 璁板綍寮�濮嬫椂鐨勮繘搴� this.startX = e.touches[0].pageX; console.log("璁板綍寮�濮嬫椂鐨勮繘搴�", this.startProgress); - this.videoContexts[this.currentIndex].pause() + const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this); + videoContext.pause() // this.updateProgress(e); }, - // 寮�濮嬭Е鎽� - handleSwiperStart(e) { - console.log("寮�濮嬭Е鎽�", e); - this.touchXY.startX = e.touches[0].pageX - this.touchXY.startY = e.touches[0].pageY - }, - // 瑙︽懜涓� - handleSwiperMove(e) { - this.touchXY.endX = e.touches[0].pageX - this.touchXY.endY = e.touches[0].pageY - }, - // 缁撴潫瑙︽懜 - handleSwiperEnd(item) { - // 闃叉婊戝姩婊氬姩鏉′篃瑙﹀彂璺宠浆 - if (this.showProcess) { - return - } - const diffX = this.touchXY.endX - this.touchXY.startX - const diffY = this.touchXY.endY - this.touchXY.startY - // 鍒ゆ柇鏄惁鏄í鍚戞粦鍔紙X杞村彉鍖栧ぇ浜嶻杞村彉鍖栵級 - if (Math.abs(diffX) > Math.abs(diffY)) { - if (diffX > 0) { - console.log('鍙虫粦') - if (item.goodsList && item.goodsList.length > 0) { - this.jumpToPay(item.id) - } - } else { - console.log('宸︽粦') - } - } - // 閲嶇疆鍧愭爣 - this.touchXY = { - startX: 0, - endX: 0, - startY: 0, - endY: 0 - } - }, // 瑙︽懜绉诲姩 handleTouchMove(e) { if (!this.isDragging || !this.barWidth) return; clearTimeout(this.processHidenTimer) - this.videoContexts[this.currentIndex].pause() this.updateProgress(e); }, @@ -869,31 +860,31 @@ handleTouchEnd() { this.isDragging = false; console.log("婊戝姩缁撴潫", this.duration * this.progress); - this.videoContexts[this.currentIndex].seek(this.duration * this.progress / 100) - this.videoContexts[this.currentIndex].play() + const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this); + videoContext.seek(this.duration * this.progress / 100) + videoContext.play() this.processHidenTimer = setTimeout(() => { - this.showProcess = false; - }, 1000); + this.showProcess = false; + }, 1000); }, // 鏇存柊杩涘害 updateProgress(e) { - // 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣 - const currentX = e.touches[0].pageX; + // 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣 + const currentX = e.touches[0].pageX; - // 璁$畻婊戝姩璺濈(鍍忕礌) - const deltaX = currentX - this.startX; + // 璁$畻婊戝姩璺濈(鍍忕礌) + const deltaX = currentX - this.startX; - // 灏嗗儚绱犺窛绂昏浆鎹负杩涘害澧為噺 - const deltaProgress = (deltaX / this.barWidth) * 100; - console.log("杩涘害澧為噺", deltaProgress); - // 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺 - let newProgress = this.startProgress + deltaProgress; + // 灏嗗儚绱犺窛绂昏浆鎹负杩涘害澧為噺 + const deltaProgress = (deltaX / this.barWidth) * 100; + // 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺 + let newProgress = this.startProgress + deltaProgress; - // 闄愬埗鑼冨洿鍦�0-100涔嬮棿 - newProgress = Math.max(0, Math.min(100, newProgress)); + // 闄愬埗鑼冨洿鍦�0-100涔嬮棿 + newProgress = Math.max(0, Math.min(100, newProgress)); - this.progress = newProgress; + this.progress = newProgress; }, // 瑙嗛缂撳啿 videoWaiting(index) { @@ -904,9 +895,9 @@ }, // 鑾峰彇瑙嗛鎬绘椂闀� onLoadedMetadata(e) { - this.duration = e.detail.duration; - this.formartDuration.push(this.sliderFormatTime(this.duration)); - console.log("瑙嗛鎬绘椂闀�", this.duration); + // this.duration = e.detail.duration; + // this.formartDuration.push(this.sliderFormatTime(this.duration)); + // console.log("瑙嗛鎬绘椂闀�", this.duration); }, // 淇濆瓨鎾斁璁板綍 async savePlayRecord() { @@ -1385,7 +1376,7 @@ .progress-text { margin-top: 10px; font-size: 14px; - color: #666; + color: #fff; } .swiper-box { @@ -1432,4 +1423,4 @@ background-color: lightpink !important; } -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0