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