From ca1ce1acc217be0b510e7ee44fcdd3ee85558fde Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期日, 29 六月 2025 20:00:25 +0800
Subject: [PATCH] 视频发布、编辑页面优化、绿满筐名字更换

---
 pages/kitchen/KitchenVideo.vue |  220 +++++++++++++++++++++++++++----------------------------
 1 files changed, 108 insertions(+), 112 deletions(-)

diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue
index 3a50db6..43b3432 100644
--- a/pages/kitchen/KitchenVideo.vue
+++ b/pages/kitchen/KitchenVideo.vue
@@ -2,7 +2,7 @@
   <view class="video-container">
     <!-- 瑙嗛鍔犺浇 -->
     <zero-loading v-show="videoLoading" type="circle" color="#0ebd57" text=""></zero-loading>
-    <view class="showLeft" @click="showDrawer('showLeft')" v-if="!showLeft">
+    <view class="showLeft" @click="showDrawer('showLeft')" v-if="!showLeft" :style="{top: buttonHeight+'px'}">
       <uni-icons type="right" size="30"></uni-icons>
     </view>
     <!-- 瑙嗛鍒楄〃 -->
@@ -39,7 +39,7 @@
               :autoplay="index === currentIndex"
               :controls="false"
               :loop="true"
-              :object-fit="item.objectFit"
+              :object-fit="item.videoFit"
               :enable-progress-gesture="false"
               :show-center-play-btn="false"
               class="video-item"
@@ -56,6 +56,7 @@
               @touchstart.stop="handleTouchStart"
               @touchmove.stop="handleTouchMove"
               @touchend.stop="handleTouchEnd"
+			  :style="{bottom: marginBottom + 'px'}"
               class="container">
             <!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
             <view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }">
@@ -121,7 +122,7 @@
 
 
         <!-- 瑙嗛淇℃伅灞� -->
-        <view class="video-info">
+        <view class="video-info" :style="{bottom: marginBottom + 20 + 'px'}">
           <view>
             <text class="video-author">@{{item.authorName}}</text>
           </view>
@@ -238,7 +239,7 @@
       </view>
     </uni-popup>
     <uni-drawer ref="showLeft" mode="left" width="120" :cus-style="true" height="80vh"
-                @change="change($event,'showLeft')" class="navigationLeft">
+                @change="change($event,'showLeft')" class="navigationLeft" :drawerTop="buttonHeight">
       <scroll-view class="typeNavigation" :scroll-y="true" :show-scrollbar="false">
         <view class="typeNavigationItem" :class="{typeNavigationItemCheck:currentCategort ==item.id}"
               @click="chooseCategory(item.id)" v-for="item in categoryList" :key="item.id">
@@ -247,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>
@@ -274,6 +275,7 @@
   },
   data() {
     return {
+	  buttonHeight:0,
       showLeft:false,
       currentCategort: '',
       categoryList: [],
@@ -340,15 +342,14 @@
         startY: 0,
         endY: 0
       },
-
-      videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚�
       loading: false, // 鏄惁姝e湪鍔犺浇
       videoQuery: {
         pageNumber: 1,
         pageSize: 6,
         videoFrom: 'recommend',
         videoType: 'cook'
-      }
+      },
+	  marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
     }
   },
   onShow() {
@@ -364,12 +365,12 @@
     this.startHidenTime = Date.now()
   },
   onLoad() {
-    this.getKitchenTypeList();
-    this.loadVideos();
-  },
-  onReady() {
-    // 鍒濆鍖栬棰戜笂涓嬫枃
-    this.initVideoContexts();
+	this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
+	// 鑾峰彇鐘舵�佹爮楂樺害
+	const systemInfo = uni.getSystemInfoSync();
+	this.buttonHeight = systemInfo.statusBarHeight;
+	this.getKitchenTypeList();
+	this.loadVideos();
   },
   methods: {
     async chooseCategory(id) {
@@ -379,7 +380,7 @@
           this.videoQuery.kitchenTypeId = id;
       this.videoLoading = false;
 	  this.currentIndex = 0;
-	  
+
       await this.loadVideos()
     },
     getKitchenTypeList() {
@@ -651,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)
@@ -679,9 +672,6 @@
             ),
           ];
         }
-        this.$nextTick(() => {
-          this.initVideoContexts();
-        });
         this.loading = false;
         if (res.data.data.length < this.videoQuery.pageSize) {
           this.videoNoMore = true;
@@ -694,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) {
@@ -797,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
     },
@@ -808,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);
     },
 
@@ -862,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) {
@@ -897,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() {
@@ -939,7 +937,6 @@
 
 .showLeft {
   display: flex;
-  top: 50rpx;
   left: 0;
   align-items: center;
   justify-content: flex-start;
@@ -960,7 +957,6 @@
 .video-item {
   width: 100%;
   height: 100%;
-  object-fit: cover;
 }
 
 .play-icon {
@@ -1380,7 +1376,7 @@
 .progress-text {
   margin-top: 10px;
   font-size: 14px;
-  color: #666;
+  color: #fff;
 }
 
 .swiper-box {
@@ -1407,18 +1403,18 @@
 }
 
 .typeNavigationItem {
-  padding: 24rpx;
-  font-size: 28rpx;
-  color: black;
-  margin-top: 10rpx;
-  border-radius: 12rpx;
-  border: 1rpx solid gray;
+	padding: 24rpx;
+	font-size: 28rpx;
+	color: black;
+	margin-top: 10rpx;
 }
 
+
 .typeNavigationItemCheck {
-  background-color: #42b993;
-  color: #fff;
-  border: 0;
+	color: #ef321e;
+	font-size: 32rpx;
+	font-weight: bold;
+	border: 0;
 }
 
 .container ::v-deep .navigationLeft .uni-drawer__content {
@@ -1427,4 +1423,4 @@
   background-color: lightpink !important;
 
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0