From b8452670a1e2b3f415f8111a3c179f3a9a838b11 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期二, 16 九月 2025 10:52:17 +0800
Subject: [PATCH] 页面调整

---
 pages/kitchen/KitchenVideo.vue |  261 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 232 insertions(+), 29 deletions(-)

diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue
index 0017aaf..f69b41b 100644
--- a/pages/kitchen/KitchenVideo.vue
+++ b/pages/kitchen/KitchenVideo.vue
@@ -39,7 +39,7 @@
               @click="togglePlay(index)"
               v-show="!currentVideoIsPlaying"
           >
-            <image src="/static/video/play.png" style="width: 45px;height: 45px" mode="aspectFit"></image>
+            <image src="/pages/subComponents/static/video/play.png" style="width: 45px;height: 45px" mode="aspectFit"></image>
           </view>
           <video
               v-if="index >= currentIndex - videoLiveOffset && index <= currentIndex + videoLiveOffset"
@@ -145,9 +145,9 @@
         <!-- 鍙充晶浜掑姩鎸夐挳 -->
         <view class="action-buttons" v-if="false">
 		   <view class="avatar-container">
-			   <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image>
+			   <image class="avatar" @click="jumpToHomePage(item.authorId)" @touchend.stop :src="item.authorAvatar" mode="aspectFill"></image>
 			   <!-- 鍏虫敞鍥炬爣 - 浣跨敤缁濆瀹氫綅 -->
-			   <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)">
+			   <view v-if="!item.subscribeThisAuthor" class="follow-icon" @touchend.stop @click="subscribeAuth(index, item.authorId)">
 				 <text class="iconfont">&#xe629;</text>
 			   </view>
 		   </view>
@@ -277,11 +277,15 @@
   addVideoComment,
   thubmsUpComment,
   cancelThubmsUpComment,
-  changeThumbsUp
+  changeThumbsUp,
+  getGoodsSimilarlyVideos
 } from "@/api/video.js";
 import {
   changeCollect
 } from "@/api/collect.js";
+import { saveShare, saveShareClickRecord } from "@/api/share.js";
+import storage from "@/utils/storage.js";
+
 export default {
   computed: {
     hasPlayTime() {
@@ -366,11 +370,23 @@
       },
       loading: false, // 鏄惁姝e湪鍔犺浇
       videoQuery: {
+		source: 'system',
         pageNumber: 1,
         pageSize: 6,
         videoFrom: 'recommend',
         videoType: 'cook'
       },
+	  goodsSimilarlyQuery: { // 鐩镐技瑙嗛鏌ヨ
+	  	pageNumber: 1,
+	  	pageSize: 10,
+	  	videoFrom: 'goodsSimilarly',
+	  	goodsIds: [],
+	  	currentVideoId: ''
+	  },
+	  similarlyVideoList: [], // 鐩镐技瑙嗛
+	  similarlyNomore: false, // 鏄惁杩樻湁鏇村鐩镐技瑙嗛
+	  similaryVideoIndex: 0, // 鐩镐技瑙嗛鐨勬挱鏀句綅缃�
+	  similarlyLoading: false, // 鐩镐技瑙嗛鍔犺浇
 	  marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
     }
   },
@@ -386,23 +402,126 @@
   onHide() {
     this.startHidenTime = Date.now()
   },
-  onLoad() {
-	  this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
-	  // 鑾峰彇鐘舵�佹爮楂樺害
-	  const systemInfo = uni.getSystemInfoSync();
-	  console.log('systemInfo------------------------>',systemInfo.windowHeight)
-	  const menuButtonInfo =  uni.getMenuButtonBoundingClientRect()
-	  console.log('menuButtonInfo--------------------------->',menuButtonInfo)
-	  const {top,height} = menuButtonInfo
-	  this.buttonHeight = systemInfo.statusBarHeight+height;
-	  this.menueButton = top;
-	  console.log('systemInfo.safeAreaInsets.bottom>',systemInfo.safeAreaInsets.bottom)
-	  this.leftHeight = systemInfo.windowHeight - top -50 - systemInfo.safeAreaInsets.bottom -22;
-	  console.log('-------------leftHeight------------------------>',this.leftHeight)
-	this.getKitchenTypeList();
-	this.loadVideos();
+  onLoad(option) {
+		this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom;
+		// 鑾峰彇鐘舵�佹爮楂樺害
+	    const systemInfo = uni.getSystemInfoSync();
+	    console.log('systemInfo------------------------>',systemInfo.windowHeight)
+	    const menuButtonInfo =  uni.getMenuButtonBoundingClientRect()
+	    console.log('menuButtonInfo--------------------------->',menuButtonInfo)
+	    const {top,height} = menuButtonInfo
+	    this.buttonHeight = systemInfo.statusBarHeight+height;
+	    this.menueButton = top;
+	    console.log('systemInfo.safeAreaInsets.bottom>',systemInfo.safeAreaInsets.bottom)
+	    this.leftHeight = systemInfo.windowHeight - top -50 - systemInfo.safeAreaInsets.bottom -22;
+	    console.log('-------------leftHeight------------------------>',this.leftHeight)
+		let queryParam = this.videoQuery;
+		if(option.q){
+			const decodedUrl = decodeURIComponent(decodeURIComponent(option.q));
+			console.log('鍘熷URL:', decodedUrl);
+			
+			// 瑙f瀽URL涓殑鏌ヨ鍙傛暟
+			const params = this.parseUrlParams(decodedUrl);
+			const shareType = params.shareType; 
+			const videoId = params.videoId;  
+			const source = params.source;
+			queryParam.videoId = videoId
+			queryParam.shareType = shareType
+			queryParam.source = source
+			console.log('瑙f瀽鍙傛暟:', { shareType, videoId,source });
+		}
+		const token = storage.getAccessToken();
+		if(!token){
+			this.wxSilentLogin(() => {
+				// 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
+				if (option.userId && option.videoId) {
+					queryParam.videoId = option.videoId
+					// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+					saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
+				}
+					this.getKitchenTypeList();
+					this.loadVideos(queryParam);
+					
+			})
+		}else{
+			if (option.userId && option.videoId) {
+				queryParam.videoId = option.videoId
+				// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+				saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
+		}
+		this.getKitchenTypeList();
+		this.loadVideos(queryParam);
+	}
+	
+  }, 
+   onShareAppMessage(e) {
+	const userInfo = storage.getUserInfo();
+	if(!userInfo) {
+		console.log("鏈櫥褰曚笉鑳藉垎浜�");
+		return
+	}
+	const videoInfo = e.target.dataset.obj;
+	// 淇濆瓨鍒嗕韩璁板綍
+	const data = {
+		shareType: 'video',
+		refId: videoInfo.id,
+		shareUser: userInfo.id
+	}
+	saveShare(data)
+  	return {
+  		title: videoInfo.title,
+  		path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
+  		imageUrl: videoInfo.coverUrl
+  	}
   },
   methods: {
+	  // 瑙f瀽URL鍙傛暟
+	  parseUrlParams(url) {
+	    const params = {};
+	    // 澶勭悊鍙兘瀛樺湪鐨刪ash锛堝鏋滄湁鐨勮瘽锛�
+	    const cleanUrl = url.split('#')[0];
+	    const queryStr = cleanUrl.split('?')[1] || '';
+	    
+	    queryStr.split('&').forEach(pair => {
+	      const [key, value] = pair.split('=');
+	      if (key) {
+	        // 濡傛灉鍊煎瓨鍦紝鍒欒В鐮侊紝鍚﹀垯璁句负绌哄瓧绗︿覆
+	        params[key] = value ? decodeURIComponent(value) : '';
+	      }
+	    });
+	    
+	    return params;
+	  },
+	  
+	// 鏌ヨ褰撳墠瑙嗛鐨勫叧鑱旇棰戯紙鎸備簡鍚屼竴鍟嗗搧鐨勶級
+	async getGoodsSimilarly() {
+			  if (this.similarlyLoading || this.similarlyNomore) return Promise.resolve();;
+			  const video = this.videoList[this.currentIndex];
+			  if (video.goodsList && video.goodsList.length > 0) {
+				  this.goodsSimilarlyQuery.goodsIds = video.goodsList.map(goods => goods.goodsId);
+				  this.goodsSimilarlyQuery.currentVideoId = video.id;
+				  if (this.similarlyVideoList.length < 1) {
+					  this.similarlyVideoList.push(video); // 纭繚鍘熻棰戞槸妯悜瑙嗛鐨勭涓�涓厓绱�
+				  }
+				  this.similarlyLoading = true;
+				  return getGoodsSimilarlyVideos(this.goodsSimilarlyQuery).then(res => {
+				  			  
+				  			  this.similarlyVideoList = [
+				  			    ...this.similarlyVideoList,
+				  			    ...res.data.data.filter(
+				  				  (newItem) => !this.similarlyVideoList.some((oldItem) => oldItem.id === newItem.id)
+				  			    ),
+				  			  ];
+				  			  
+				  			  this.similarlyLoading = false;
+				  			  if(res.data.data.length < this.goodsSimilarlyQuery.pageSize) {
+				  				  this.similarlyNomore = true;
+				  				  return;
+				  			  }
+				  			  this.goodsSimilarlyQuery.pageNumber++;
+				  })
+			  }
+	},
     async chooseCategory(id) {
       if (this.currentCategort === id) return
       this.currentCategort = id
@@ -683,33 +802,74 @@
       })
     },
     // 鍔犺浇瑙嗛鏁版嵁
-    async loadVideos() {
+    async loadVideos(param) {
       console.log(this.loading, this.videoNoMore,this.videoQuery)
       if (this.videoQuery.pageNumber == 1) {
 
       } else if (this.loading || this.videoNoMore) return;
       this.loading = true;
-
+		if(param){
+			console.log("浜岀淮鐮佹壂鐮佹暟鎹墽琛屽湪姝ゅ1")
+			console.log(this.videoQuery)
+			getkitchenVideoList(this.videoQuery).then(res => {
+				console.log(res)
+			  // 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
+			  const data = res.data.data.map(item => {
+			  	return {
+			  		...item,
+			  		updateKey: item.id
+			  	}
+			  })
+			  if (this.videoQuery.pageNumber === 1) {
+			    this.videoList = data;
+			  } else {
+			    this.videoList = [
+			      ...this.videoList,
+			      ...data.filter(
+			          (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
+			      ),
+			    ];
+			  }
+			  this.loading = false;
+			  if (data.length < this.videoQuery.pageSize) {
+			    this.videoNoMore = true;
+			    return;
+			  }
+			  this.videoQuery.pageNumber++;
+			
+			})
+		}else{
+			
+		console.log("浜岀淮鐮佹壂鐮佹暟鎹墽琛屽湪姝ゅ2")
+		console.log(this.videoQuery)
       getkitchenVideoList(this.videoQuery).then(res => {
-        console.log(res, "瑙嗛鏁版嵁");
+		  console.log(res)
+        // 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
+        const data = res.data.data.map(item => {
+        	return {
+        		...item,
+        		updateKey: item.id
+        	}
+        })
         if (this.videoQuery.pageNumber === 1) {
-          this.videoList = res.data.data;
+          this.videoList = data;
         } else {
           this.videoList = [
             ...this.videoList,
-            ...res.data.data.filter(
+            ...data.filter(
                 (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
             ),
           ];
         }
         this.loading = false;
-        if (res.data.data.length < this.videoQuery.pageSize) {
+        if (data.length < this.videoQuery.pageSize) {
           this.videoNoMore = true;
           return;
         }
         this.videoQuery.pageNumber++;
 
       })
+	  }
     },
 
     // 婊戝姩鍒囨崲瑙嗛
@@ -738,6 +898,23 @@
       // 鎾斁褰撳墠瑙嗛
       const videoContext1 = uni.createVideoContext(`video${this.currentIndex}`, this);
       videoContext1.play()
+	  
+	  // 涓嬫粦鏃讹紝闇�瑕佸皢涓婁竴涓棰戦噸缃负鍘熷瑙嗛(濡傛灉妯悜婊戝姩浜嗙浉鍏宠棰�)
+	  if (this.similaryVideoIndex !== 0) {
+	  	this.videoList[oldIndex] = this.similarlyVideoList[0]
+	  }
+	  this.similarlyVideoList = [];
+	  this.similaryVideoIndex = 0;
+	  this.similarlyNomore = false;
+	  this.similarlyLoading = false;
+	  this.goodsSimilarlyQuery = {
+	  	pageNumber: 1,
+	  	pageSize: 6,
+	  	videoFrom: 'goodsSimilarly',
+	  	goodsIds: [],
+	  	currentVideoId: ''
+	  }
+	  
 	  // 濡傛灉鍓╀綑瑙嗛涓嶈冻锛岃Е鍙戣姹傝幏鍙栨洿澶氳棰�
 	  if (this.videoList.length - 1 < this.currentIndex + this.videoLiveOffset) {
 	  	this.loadVideos()
@@ -756,7 +933,7 @@
 	    this.touchXY.endY = e.touches[0].pageY
 	},
 	// 缁撴潫瑙︽懜
-	handleSwiperEnd(item) {
+	async handleSwiperEnd(item) {
 		// 闃叉婊戝姩婊氬姩鏉′篃瑙﹀彂璺宠浆
 		if (this.showProcess) {
 			return
@@ -768,11 +945,37 @@
 	    if (Math.abs(diffX) > Math.abs(diffY)) {
 	      if (diffX > 0) {
 	        console.log('鍙虫粦')
-			if (item.goodsList && item.goodsList.length > 0) {
-				this.jumpToPay(item.id)
-			}
+	    	if (this.similaryVideoIndex !== 0) {
+	    		// 濡傛灉婊戝姩浜嗘í鍚戣棰戯紝閭d箞鍙虫粦灏卞仛瑙嗛鍒囨崲鑰屼笉鏄烦杞晢鍝侀〉
+	    		// 鍒囨崲涓嬩竴涓棰�
+	    		const oldIndex = this.similaryVideoIndex;
+	    		this.similaryVideoIndex = Math.max(this.similaryVideoIndex - 1, 0);
+	    		if (this.similaryVideoIndex < oldIndex) {
+	    			// 鎶婄珫鍚戣棰戠殑褰撳墠鎾斁浣嶇疆鏇挎崲涓烘í鍚戣棰戠殑褰撳墠绱㈠紩鍏冪礌
+	    			const video = this.similarlyVideoList[this.similaryVideoIndex];
+	    			video["updateKey"] = video.id + this.similaryVideoIndex
+	    			this.videoList.splice(this.currentIndex, 1, video);
+	    			// this.videoList[this.currentIndex] = video
+	    		}
+	    	}
+	    	else if (item.goodsList && item.goodsList.length > 0) {
+	    		this.jumpToPay(item.id)
+	    	}
 	      } else {
 	        console.log('宸︽粦')
+	    	if (this.similarlyVideoList.length < 1 || this.similarlyVideoList.length - this.similaryVideoIndex - 1 <= 3) {
+	    		// 鐩稿叧瑙嗛涓虹┖鎴栬�呭墿浣欒棰戜笉瓒筹紝瑙﹀彂鍔犺浇鐩稿叧瑙嗛
+	    		await this.getGoodsSimilarly()
+	    	}
+	    	// 鍒囨崲涓嬩竴涓棰�
+	    	const oldIndex = this.similaryVideoIndex;
+	    	this.similaryVideoIndex = Math.min(this.similaryVideoIndex + 1, this.similarlyVideoList.length - 1);
+	    	if (this.similaryVideoIndex > oldIndex) {
+	    		// 鎶婄珫鍚戣棰戠殑褰撳墠鎾斁浣嶇疆鏇挎崲涓烘í鍚戣棰戠殑褰撳墠绱㈠紩鍏冪礌
+	    		const video = this.similarlyVideoList[this.similaryVideoIndex];
+	    		video["updateKey"] = video.id + this.similaryVideoIndex
+	    		this.videoList.splice(this.currentIndex, 1, video);
+	    	}
 	      }
 	    }
 	    // 閲嶇疆鍧愭爣

--
Gitblit v1.8.0