From be80b22a4a0fcd33e1b17ebdb86eba91cc7de4d2 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期三, 02 七月 2025 18:59:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 pages/kitchen/KitchenVideo.vue |  264 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 147 insertions(+), 117 deletions(-)

diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue
index 0223187..8bafd83 100644
--- a/pages/kitchen/KitchenVideo.vue
+++ b/pages/kitchen/KitchenVideo.vue
@@ -134,29 +134,33 @@
 
         <!-- 鍙充晶浜掑姩鎸夐挳 -->
         <view class="action-buttons" v-if="false">
-          <view class="avatar-container">
-            <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image>
-            <!-- 鍏虫敞鍥炬爣 - 浣跨敤缁濆瀹氫綅 -->
-            <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)">
-              <text class="iconfont">&#xe629;</text>
-            </view>
-          </view>
-          <view class="action-item" @click="toggleCollect(item, index)">
-            <text class="iconfont" v-if="item.collected">&#xe605;</text>
-            <text class="iconfont" v-else>&#xe601;</text>
-            <text style="font-size: 10px;font-weight: lighter;">{{item.collectNum}}</text>
-          </view>
+		   <view class="avatar-container">
+			   <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image>
+			   <!-- 鍏虫敞鍥炬爣 - 浣跨敤缁濆瀹氫綅 -->
+			   <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)">
+				 <text class="iconfont">&#xe629;</text>
+			   </view>
+		   </view>
+           <view class="action-item" @click="toggleThumbsUp(item, index)">
+        			<text class="iconfont" v-if="item.thumbsUp">&#xe605;</text>
+        			<text class="iconfont" v-else>&#xe601;</text>
+        			<text style="font-size: 10px;font-weight: lighter;">{{item.thumbsUpNum}}</text>
+           </view>
           <view class="action-item" @click="showComments(item)">
-            <text class="iconfont">&#xe7f7;</text>
-            <text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
-          </view>
-          <view class="action-item">
-            <button open-type="share" class="custom-share-btn" :data-obj="item">
-              <text class="iconfont">&#xe602;</text>
-            </button>
-
-          </view>
-        </view>
+             <text class="iconfont">&#xe7f7;</text>
+             <text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
+           </view>
+		  <view class="action-item" @click="toggleCollect(item, index)">
+			 <text class="iconfont" v-if="item.collected">&#xeb9d;</text>
+			 <text class="iconfont" v-else>&#xe603;</text>
+			 <text style="font-size: 10px;font-weight: lighter;">{{item.collectNum}}</text>
+		   </view>
+		  <view class="action-item">
+			  <button open-type="share" class="custom-share-btn" :data-obj="item">
+				<text class="iconfont">&#xe602;</text>
+			  </button>
+		  </view>
+         </view>
 
       </swiper-item>
     </swiper>
@@ -248,7 +252,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>
@@ -262,7 +266,8 @@
   getVideoComments,
   addVideoComment,
   thubmsUpComment,
-  cancelThubmsUpComment
+  cancelThubmsUpComment,
+  changeThumbsUp
 } from "@/api/video.js";
 import {
   changeCollect
@@ -342,8 +347,6 @@
         startY: 0,
         endY: 0
       },
-
-      videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚�
       loading: false, // 鏄惁姝e湪鍔犺浇
       videoQuery: {
         pageNumber: 1,
@@ -374,10 +377,6 @@
 	this.getKitchenTypeList();
 	this.loadVideos();
   },
-  onReady() {
-    // 鍒濆鍖栬棰戜笂涓嬫枃
-    this.initVideoContexts();
-  },
   methods: {
     async chooseCategory(id) {
       if (this.currentCategort === id) return
@@ -386,7 +385,7 @@
           this.videoQuery.kitchenTypeId = id;
       this.videoLoading = false;
 	  this.currentIndex = 0;
-	  
+
       await this.loadVideos()
     },
     getKitchenTypeList() {
@@ -658,14 +657,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 +677,6 @@
             ),
           ];
         }
-        this.$nextTick(() => {
-          this.initVideoContexts();
-        });
         this.loading = false;
         if (res.data.data.length < this.videoQuery.pageSize) {
           this.videoNoMore = true;
@@ -701,29 +689,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) {
@@ -747,6 +781,28 @@
         }
       })
     },
+	// 鐐硅禐/鍙栨秷鐐硅禐
+	toggleThumbsUp(item, index) {
+	  let data = {
+		  refId: item.id,
+		  thumbsUpType: 'video'
+	  }
+	  const beforeThumbsUp = item.thumbsUp
+	  const beforeThumbsUpNum = item.thumbsUpNum
+	  if(item.thumbsUp) {
+		  this.videoList[index].thumbsUp = false
+		  this.videoList[index].thumbsUpNum -= 1
+	  } else {
+		  this.videoList[index].thumbsUp = true
+		  this.videoList[index].thumbsUpNum += 1
+	  }
+	  changeThumbsUp(data).then(res => {
+		  if(res.data.code !== 200) {
+			  this.videoList[index].thumbsUp = beforeThumbsUp
+			  this.videoList[index].thumbsUpNum = beforeThumbsUpNum
+		  }
+	  })
+	},
     // 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
     togglePlay(index) {
       console.log("鍗曞嚮瑙嗛", index);
@@ -804,7 +860,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 +871,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 +887,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 +922,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 +1403,7 @@
 .progress-text {
   margin-top: 10px;
   font-size: 14px;
-  color: #666;
+  color: #fff;
 }
 
 .swiper-box {
@@ -1432,4 +1450,16 @@
   background-color: lightpink !important;
 
 }
-</style>
\ No newline at end of file
+
+.custom-share-btn {
+  font-size: unset;
+  background: none;
+  padding: 0;
+  margin: 0;
+  line-height: normal;
+  border: none;
+}
+.custom-share-btn::after {
+  border: none;
+}
+</style>

--
Gitblit v1.8.0