From cad6ad80c86eba4663d84fd78042c1173361f600 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期三, 25 六月 2025 19:08:56 +0800
Subject: [PATCH] update 修改厨神大健康视频页

---
 pages/kitchen/KitchenVideo.vue | 2538 ++++++++++++++++---------------
 pages/health/healthVideo.vue   | 2128 ++++++++++++++------------
 2 files changed, 2,438 insertions(+), 2,228 deletions(-)

diff --git a/pages/health/healthVideo.vue b/pages/health/healthVideo.vue
index 60167e1..34d7f92 100644
--- a/pages/health/healthVideo.vue
+++ b/pages/health/healthVideo.vue
@@ -1,910 +1,1034 @@
 <template>
-	<view class="video-container">
-		<!-- 瑙嗛鍒楄〃 -->
-		<swiper class="video-swiper" vertical circular :current="currentIndex" @change="onSwiperChange">
-			<swiper-item v-for="(item, index) in videoList" :key="item.id">
-				<view style="width: 100%;height: 100%;" v-if="item.videoContentType === 'video'">
-					<!-- 鎾斁鎸夐挳锛堜粎褰撹棰戞殏鍋滄椂鏄剧ず锛� -->
-					<view class="play-icon" @click="togglePlay(index)" v-if="!currentVideoIsPlaying">
-						<image src="/static/video/play.png" style="width: 45px;height: 45px" mode="aspectFit"></image>
-					</view>
-					<video :id="'video'+index" :ref="'video'+index" :src="item.videoUrl"
-						:autoplay="currentIndex === index" :controls="false" :loop="true" :object-fit="item.objectFit"
-						:enable-progress-gesture="false" class="video-item" @play="onPlay(item.id, index)"
-						@pause="onPause(index)" @ended="onEnded(index)" @click="togglePlay(index)"
-						@timeupdate="onTimeUpdate($event)" @loadedmetadata="onLoadedMetadata($event)"></video>
-					<!-- 鑷畾涔夋帶鍒舵潯 -->
-					<view @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd"
-						class="container">
-						<!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
-						<view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }">
-							<!-- 鏄剧ず褰撳墠杩涘害 -->
-							<view class="progress-text">{{ hasPlayTime }}/{{formartDuration[index]}}</view>
-							<view class="progress-bar" id="progressBar">
+  <view class="video-container">
+	<!-- 瑙嗛鍔犺浇 -->
+	<zero-loading v-show="videoLoading" type="circle" color="#0ebd57" text=""></zero-loading>
+    <!-- 瑙嗛鍒楄〃 -->
+    <swiper
+      class="video-swiper"
+      vertical
+      :current="currentIndex"
+      @change="onSwiperChange"
+	  :duration="250"
+	  easing-function="linear"
+    >
+      <swiper-item
+		v-for="(item, index) in videoList"
+		:key="item.id"
+		@touchstart="handleSwiperStart"
+		@touchmove="handleSwiperMove"
+		@touchend="handleSwiperEnd(item)"
+		 >
+		<view style="width: 100%;height: 100%;" v-if="item.videoContentType === 'video'">
+			  <!-- 鎾斁鎸夐挳锛堜粎褰撹棰戞殏鍋滄椂鏄剧ず锛� -->
+			  <view
+				class="play-icon"
+				@click="togglePlay(index)"
+				v-show="!currentVideoIsPlaying"
+			  >
+				<image src="/static/video/play.png" style="width: 45px;height: 45px" mode="aspectFit"></image>
+			  </view>
+			  <video
+				v-if="index >= currentIndex - videoLiveOffset && index <= currentIndex + videoLiveOffset"
+				:id="'video'+index"
+				:ref="'video'+index"
+				:src="item.videoUrl"
+				:autoplay="index === currentIndex"
+				:controls="false"
+				:loop="true"
+				:object-fit="item.objectFit"
+				:enable-progress-gesture="false"
+				:show-center-play-btn="false"
+				class="video-item"
+				@play="onPlay(item.id, index)"
+				@pause="onPause(index)"
+				@ended="onEnded(index)"
+				@click="togglePlay(index)"
+				@timeupdate="onTimeUpdate($event)"
+				@loadedmetadata="onLoadedMetadata($event)"
+				@waiting="videoWaiting(index)"
+			  ></video>
+			  <!-- 鑷畾涔夋帶鍒舵潯 -->
+			  <view
+				@touchstart.stop="handleTouchStart"
+				@touchmove.stop="handleTouchMove"
+				@touchend.stop="handleTouchEnd"
+				class="container">
+				<!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
+				<view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }">
+				  <!-- 鏄剧ず褰撳墠杩涘害 -->
+				  <view class="progress-text">{{ hasPlayTime }}/{{formartDuration}}</view>
+				  <view
+					class="progress-bar"
+					id="progressBar"
+				  >
 
-								<!-- 宸插~鍏呴儴鍒� -->
-								<view class="progress-fill" :style="{ width: progress + '%' }"></view>
-							</view>
-						</view>
-					</view>
+					<!-- 宸插~鍏呴儴鍒� -->
+					<view class="progress-fill" :style="{ width: progress + '%' }"></view>
+				  </view>
 				</view>
-				<view style="width: 100%; height: 100%;" v-else-if="item.videoContentType === 'img'">
-					<uni-swiper-dot :info="item.imgs" :current="currentImgIndex" mode="round"
-						style="width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;"
-						:dots-styles="{width: 24, bottom: 24,selectedBackgroundColor: 'green', backgroundColor: 'gray'}">
-						<swiper class="swiper-box" @change="imgChange" :autoplay="true" :interval="3000">
-							<swiper-item v-for="img in item.imgs" :key="img">
-								<view class="swiper-item">
-									<!-- 璋冩暣 image 鏍峰紡锛屼娇鍏跺眳涓笖鎸夋瘮渚嬬缉鏀� -->
-									<image :src="img" mode="aspectFit"
-										style="width: 100%; height: 100%; display: block; margin: 0 auto;"></image>
-								</view>
-							</swiper-item>
-						</swiper>
-					</uni-swiper-dot>
-				</view>
+			  </view>
+		</view>
+		<view style="width: 100%; height: 100%;" v-else-if="item.videoContentType === 'img'">
+		  <uni-swiper-dot
+			:info="item.imgs"
+			:current="currentImgIndex"
+			mode="round"
+			style="width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;"
+			:dots-styles="{width: 24, bottom: 24,selectedBackgroundColor: 'green', backgroundColor: 'gray'}"
+			>
+		    <swiper class="swiper-box" @change="imgChange" :autoplay="true" :interval="3000">
+		      <swiper-item v-for="img in item.imgs" :key="img">
+		        <view class="swiper-item">
+		          <!-- 璋冩暣 image 鏍峰紡锛屼娇鍏跺眳涓笖鎸夋瘮渚嬬缉鏀� -->
+		          <image
+		            :src="img"
+		            mode="aspectFit"
+		            style="width: 100%; height: 100%; display: block; margin: 0 auto;"
+		          ></image>
+		        </view>
+		      </swiper-item>
+		    </swiper>
+		  </uni-swiper-dot>
+		</view>
 
 
-				<!-- 鎮寕鍟嗗搧閾炬帴灞� -->
-				<view class="goods-link-warp" v-if="false">
-					<view class="goods-link">
-						<view class="goods-container">
-							<!-- 鍟嗗搧鍥剧墖 -->
-							<image class="goods-image" :src="item.goods.imageUrl" mode="aspectFill"></image>
+		<!-- 鎮寕鍟嗗搧閾炬帴灞� -->
+		<view class="goods-link-warp" v-if="item.goodsList.length > 0">
+			<view class="goods-link">
+			  <swiper @change="goodsChange" :autoplay="true" :interval="4000" style="height: 120rpx;">
+				<swiper-item v-for="goods in item.goodsList" :key="goods.goodsId">
+				  <view class="goods-container" @click="jumpToPay(item.id)">
+					<!-- 鍟嗗搧鍥剧墖 -->
+					<image class="goods-image" :src="goods.thumbnail" mode="aspectFill"></image>
 
-							<!-- 鍟嗗搧淇℃伅 -->
-							<view class="goods-info">
-								<text class="goods-name">{{item.goods.name}}</text>
-								<view class="price-section">
-									<text class="current-price">楼{{item.goods.price}}</text>
-									<text class="original-price"
-										v-if="item.goods.originalPrice">楼{{item.goods.originalPrice}}</text>
-								</view>
-								<text class="sales-count">{{item.goods.saleNum}}浜哄凡璐�</text>
-							</view>
-
-							<!-- 璐拱鎸夐挳 -->
-							<view class="buy-button">
-								<text>璐拱</text>
-							</view>
-						</view>
+					<!-- 鍟嗗搧淇℃伅 -->
+					<view class="goods-info">
+					  <text class="goods-name">{{goods.goodsName}}</text>
+					  <view class="price-section">
+						<text class="current-price">楼{{goods.price}}</text>
+						<text class="original-price" v-if="goods.originalPrice">楼{{goods.originalPrice}}</text>
+					  </view>
 					</view>
-				</view>
+				  </view>
+				</swiper-item>
+			  </swiper>
+			</view>
+		</view>
 
 
-				<!-- 瑙嗛淇℃伅灞� -->
-				<view class="video-info">
-					<view>
-						<text class="video-author">@{{item.authorName}}</text>
-					</view>
-					<view style="width: 100%;word-wrap: break-word;white-space: normal;overflow-wrap: break-word;">
-						<text class="video-title">{{item.title}}</text>
-						<text class="video-tag" v-for="(tag, index) in item.tagList"
-							:key="tag.id">#{{tag.tagName}}</text>
-					</view>
-				</view>
+        <!-- 瑙嗛淇℃伅灞� -->
+        <view class="video-info">
+		  <view>
+			  <text class="video-author">@{{item.authorName}}</text>
+		  </view>
+          <view style="width: 100%;word-wrap: break-word;white-space: normal;overflow-wrap: break-word;">
+			  <text class="video-title">{{item.title}}</text>
+			  <text class="video-tag" v-for="(tag, index) in item.tagList" :key="tag.id">#{{tag.tagName}}</text>
+		  </view>
+        </view>
 
-				<!-- 鍙充晶浜掑姩鎸夐挳 -->
-				<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="action-item" @click="showComments(item)">
-						<text class="iconfont">&#xe7f7;</text>
-						<text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
-					</view>
-				</view>
+        <!-- 鍙充晶浜掑姩鎸夐挳 -->
+       <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="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>
 
-			</swiper-item>
-		</swiper>
+		  </view>
+        </view>
 
-		<!-- 璇勮寮圭獥 -->
-		<uni-popup ref="commentPopup" type="bottom" :is-mask-click="true" @maskClick="closeCommentPopup">
-			<view class="comment-popup">
-				<view class="popup-header">
-					<text class="popup-title" v-if="!commentForm.replyId">璇勮({{commentsTotal}})</text>
-					<view class="reply-title" v-else>
-						<text>鍥炲 @{{commentForm.replyUserNickname}}</text>
-						<text class="cancel-reply" @click="cancelReply">鍙栨秷</text>
-					</view>
-					<text class="iconfont close-icon" @click="closeCommentPopup">&#xe675;</text>
-				</view>
+      </swiper-item>
+    </swiper>
 
-				<scroll-view class="comment-list" scroll-y :show-scrollbar="false" @scrolltolower="getCommentPage">
-					<view v-if="commentLoading" class="loading">
-						<uni-load-more status="loading"></uni-load-more>
-					</view>
+	<!-- 璇勮寮圭獥 -->
+	<uni-popup ref="commentPopup" type="bottom" :is-mask-click="true" @maskClick="closeCommentPopup">
+	  <view class="comment-popup">
+	    <view class="popup-header">
+	      <text class="popup-title" v-if="!commentForm.replyId">璇勮({{commentsTotal}})</text>
+		  <view class="reply-title" v-else>
+		    <text>鍥炲 @{{commentForm.replyUserNickname}}</text>
+		    <text class="cancel-reply" @click="cancelReply">鍙栨秷</text>
+		  </view>
+	      <text class="iconfont close-icon" @click="closeCommentPopup">&#xe675;</text>
+	    </view>
 
-					<view v-else-if="comments.length === 0" class="empty">
-						鏆傛棤璇勮锛屽揩鏉ュ彂琛ㄧ涓�鏉¤瘎璁哄惂~
-					</view>
+	    <scroll-view class="comment-list" scroll-y :show-scrollbar="false" @scrolltolower="getCommentPage">
+	      <view v-if="commentLoading" class="loading">
+	        <uni-load-more status="loading"></uni-load-more>
+	      </view>
 
-					<view v-else class="comment-item" v-for="(comment, index) in comments" :key="comment.id">
-						<view style="display: flex;">
-							<image class="comment-avatar" :src="comment.userAvatar || '/static/default-avatar.png'">
-							</image>
-							<view class="comment-content">
-								<text class="nickname">{{comment.userNickname}}</text>
-								<text class="content">{{comment.commentContent}}</text>
-								<view style="position: relative;">
-									<text class="time">{{formatTime(comment.createTime)}}</text>
-									<text @click="openReply(comment)" class="reply-btu time">鍥炲</text>
-									<text v-if="!comment.hasThumbsUp" class="thumbs-up time iconfont"
-										@click="thubmsUp(comment.id, index, null)">&#xe614;<text
-											v-show="comment.thumbsUpNum > 0"
-											class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
-									<text v-else class="thumbs-up time iconfont"
-										@click="cancelThumbsUp(comment.id, index, null)">&#xe607;<text
-											v-show="comment.thumbsUpNum > 0"
-											class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
-								</view>
-							</view>
-						</view>
-						<!-- 鍥炲鍒楄〃 -->
-						<view class="reply-list" v-if="comment.replies && comment.replies.length > 0">
-							<view class="reply-item" v-for="(reply, replyIndex) in comment.replies" :key="reply.id">
-								<view class="reply-content">
-									<view style="display: flex;">
-										<image class="comment-reply-avatar"
-											:src="reply.replyUserAvatar || '/static/default-avatar.png'"></image>
-										<text class="nickname">{{reply.userNickname}}</text>
-										<text v-if="reply.replyUserId && reply.masterCommentId !== reply.replyId"
-											class="reply-to"><text style="margin-right: 10rpx;font-size: 28rpx;"
-												class="iconfont">&#xe666;</text>{{reply.replyUserNickname}}</text>
-									</view>
-									<text class="content">{{reply.commentContent}}</text>
-									<view class="reply-footer">
-										<text class="time">{{formatTime(reply.createTime)}}</text>
-										<text @click="openReply(comment, reply)" class="reply-btu time">鍥炲</text>
-										<text v-if="!reply.hasThumbsUp" class="thumbs-up time iconfont"
-											@click="thubmsUp(reply.id, index, replyIndex)">&#xe614;<text
-												v-show="reply.thumbsUpNum > 0"
-												class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
-										<text v-else class="thumbs-up time iconfont"
-											@click="cancelThumbsUp(reply.id, index, replyIndex)">&#xe607;<text
-												v-show="reply.thumbsUpNum > 0"
-												class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
-									</view>
-								</view>
-							</view>
-						</view>
-						<view class="view-more-replies" v-if="comment.replyTotalCount > 0 && !comment.expandReply"
-							@click="loadRepliesPage(comment, index)">
-							<text class="line">鈥斺��</text>灞曞紑{{comment.replyTotalCount}}鏉″洖澶� 鈫�
-						</view>
-						<view class="reply-op"
-							v-if="comment.replyTotalCount > replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
-							<view @click="loadNextPageReply(index)" class="reply-op-item"><text
-									class="line">鈥斺��</text>灞曞紑鏇村<text class="iconfont textSideIcon">&#xeb8d;</text></view>
-							<view @click="retractReplyComment(index)" class="reply-op-item" style="margin-left: 50rpx;">
-								鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
-						</view>
-						<view class="reply-op"
-							v-else-if="comment.replyTotalCount <= replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
-							<view @click="retractReplyComment(index)" class="reply-op-item"><text
-									class="line">鈥斺��</text>鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
-						</view>
-					</view>
-				</scroll-view>
-				<view class="comment-input-area">
-					<input ref="commentInput" class="comment-input" v-model="commentForm.commentContent"
-						:placeholder="commentForm.replyId ? `鍥炲 @${commentForm.replyUserNickname}` : '鍐欎笅浣犵殑璇勮...'"
-						placeholder-class="placeholder" />
-					<button class="submit-btn" @click="submitComment"
-						:disabled="!commentForm.commentContent.trim()">鍙戦��</button>
+	      <view v-else-if="comments.length === 0" class="empty">
+	        鏆傛棤璇勮锛屽揩鏉ュ彂琛ㄧ涓�鏉¤瘎璁哄惂~
+	      </view>
+
+	      <view v-else class="comment-item" v-for="(comment, index) in comments" :key="comment.id">
+			<view style="display: flex;">
+				<image class="comment-avatar" :src="comment.userAvatar || '/static/default-avatar.png'"></image>
+				<view class="comment-content">
+				  <text class="nickname">{{comment.userNickname}}</text>
+				  <text class="content">{{comment.commentContent}}</text>
+				  <view style="position: relative;">
+					<text class="time">{{formatTime(comment.createTime)}}</text>
+					<text @click="openReply(comment)" class="reply-btu time">鍥炲</text>
+					<text v-if="!comment.hasThumbsUp" class="thumbs-up time iconfont" @click="thubmsUp(comment.id, index, null)">&#xe614;<text v-show="comment.thumbsUpNum > 0" class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
+					<text v-else class="thumbs-up time iconfont" @click="cancelThumbsUp(comment.id, index, null)">&#xe607;<text v-show="comment.thumbsUpNum > 0" class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
+				  </view>
 				</view>
 			</view>
-		</uni-popup>
+			<!-- 鍥炲鍒楄〃 -->
+			  <view class="reply-list" v-if="comment.replies && comment.replies.length > 0">
+				<view class="reply-item" v-for="(reply, replyIndex) in comment.replies" :key="reply.id">
+				  <view class="reply-content">
+					<view style="display: flex;">
+						<image class="comment-reply-avatar" :src="reply.replyUserAvatar || '/static/default-avatar.png'"></image>
+						<text class="nickname">{{reply.userNickname}}</text>
+						<text v-if="reply.replyUserId && reply.masterCommentId !== reply.replyId" class="reply-to"><text style="margin-right: 10rpx;font-size: 28rpx;" class="iconfont">&#xe666;</text>{{reply.replyUserNickname}}</text>
+					</view>
+					<text class="content">{{reply.commentContent}}</text>
+					<view class="reply-footer">
+					  <text class="time">{{formatTime(reply.createTime)}}</text>
+					  <text @click="openReply(comment, reply)" class="reply-btu time">鍥炲</text>
+					  <text v-if="!reply.hasThumbsUp" class="thumbs-up time iconfont" @click="thubmsUp(reply.id, index, replyIndex)">&#xe614;<text v-show="reply.thumbsUpNum > 0" class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
+					  <text v-else class="thumbs-up time iconfont" @click="cancelThumbsUp(reply.id, index, replyIndex)">&#xe607;<text v-show="reply.thumbsUpNum > 0" class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
+					</view>
+				  </view>
+				</view>
+			  </view>
+			  <view class="view-more-replies" v-if="comment.replyTotalCount > 0 && !comment.expandReply" @click="loadRepliesPage(comment, index)">
+				<text class="line">鈥斺��</text>灞曞紑{{comment.replyTotalCount}}鏉″洖澶� 鈫�
+			  </view>
+			  <view class="reply-op" v-if="comment.replyTotalCount > replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
+			  	<view @click="loadNextPageReply(index)" class="reply-op-item"><text class="line">鈥斺��</text>灞曞紑鏇村<text class="iconfont textSideIcon">&#xeb8d;</text></view>
+			  	<view @click="retractReplyComment(index)" class="reply-op-item" style="margin-left: 50rpx;">鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
+			  </view>
+			  <view class="reply-op" v-else-if="comment.replyTotalCount <= replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
+			  	<view @click="retractReplyComment(index)" class="reply-op-item"><text class="line">鈥斺��</text>鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
+			  </view>
+	      </view>
+	    </scroll-view>
+	    <view class="comment-input-area">
+		  <input
+			ref="commentInput"
+			class="comment-input"
+			v-model="commentForm.commentContent"
+			:placeholder="commentForm.replyId ? `鍥炲 @${commentForm.replyUserNickname}` : '鍐欎笅浣犵殑璇勮...'"
+			placeholder-class="placeholder"
+		  />
+		  <button class="submit-btn" @click="submitComment" :disabled="!commentForm.commentContent.trim()">鍙戦��</button>
+		</view>
+	  </view>
+	</uni-popup>
 
 
-	</view>
+	<custom-tabbar bgColor="#333333" selected="index" selectedTextColor="#ffffff"></custom-tabbar>
+  </view>
 </template>
 
 <script>
-	import {
-		getHealthRecommendVideos,
-		savePlayRecord,
-		subscribe,
-		getVideoComments,
-		addVideoComment,
-		thubmsUpComment,
-		cancelThubmsUpComment
-	} from "@/api/video.js";
-	import {
-		changeCollect
-	} from "@/api/collect.js";
-	export default {
-		computed: {
-			hasPlayTime() {
-				return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
+import { getHealthRecommendVideos, savePlayRecord, subscribe, getVideoComments, addVideoComment, thubmsUpComment, cancelThubmsUpComment } from "@/api/video.js";
+import { changeCollect } from "@/api/collect.js";
+import { saveShare, saveShareClickRecord } from "@/api/share.js";
+import { silentLogin } from "@/api/connect.js";
+import { getUserInfo } from "@/api/members";
+import storage from "@/utils/storage.js";
+export default {
+  computed: {
+	    hasPlayTime() {
+	      return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
+	    }
+  },
+  data() {
+    return {
+		currentImgIndex: 0, // 鎾斁鍒扮鍑犲紶鍥�--绱㈠紩
+		currentGoodsIndex: 0, // 鎾斁鍒扮鍑犱釜鍟嗗搧--绱㈠紩
+		currentTime: 0,
+		formartDuration: '',
+		duration: 0,
+		startX: 0,
+		progress: 0, // 瑙嗛杩涘害
+		startProgress : 0, // 寮�濮嬫粦鍔ㄦ椂鐨勮繘搴�
+		barLeft: 0, // 杩涘害鏉″乏杈圭晫浣嶇疆
+		barWidth: 0, // 杩涘害鏉″搴�
+		isDragging: false, // 鏄惁姝e湪鎷栧姩
+		processHidenTimer: null, // 杩涘害鏉¢殣钘忓畾鏃跺櫒
+		showProcess: false, // 鏄惁鏄剧ず杩涘害鏉�
+		videoNoMore: false, // 鏄惁杩樻湁鏇村瑙嗛
+		commentNoMore: false, // 鏄惁杩樻湁鏇村璇勮
+		commentQuery: {
+			pageNumber: 1,
+			pageSize: 5,
+			videoId: '',
+			masterCommentId: ''
+		},
+		replyCommentQuery: {
+			pageNumber: 1,
+			pageSize: 5,
+			videoId: '',
+			masterCommentId: ''
+		},
+		commentForm: { // 璇勮琛ㄥ崟鏁版嵁
+			id: '',
+			videoId: '',
+			commentContent: '',
+			replyId: '',
+			replyUserId: '',
+			replyUserNickname: '',
+			replyUserAvatar: '',
+			masterCommentId: null
+		},
+		comments: [],            // 璇勮鍒楄〃
+		commentsTotal: 0,            // 璇勮鎬绘潯鏁�
+		commentLoading: false,   // 璇勮鍔犺浇鐘舵��
+		startHidenTime: 0, // 璁板綍鍒囨崲鑷冲叾瀹冮〉闈㈢殑鏃堕棿锛岀敤浜庤绠楄棰戣鐪嬫椂闂村噺鍘荤殑閮ㄥ垎
+		totalHidenTime: 0, // 鎬诲叡闅愯棌椤甸潰鐨勬椂闂�
+		startPauseTime: 0, // 寮�濮嬫殏鍋滅殑鏃堕棿
+		totalPauseTime: 0, // 鎬诲叡鏆傚仠鐨勬椂闂�
+		playRecord: {
+			videoId: null,
+			viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
+			playAt: 0 ,// 杩欎釜瑙嗛鎾斁鍒板摢浜�
+			startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
+		},
+		currentVideoIsPlaying: true, // 褰撳墠瑙嗛鏄惁姝e湪鎾斁
+		currentIndex: 0, // 褰撳墠鎾斁鐨勮棰戠储寮�
+		videoLoading: false, // 瑙嗛缂撳啿涓�
+		videoList: [],   // 瑙嗛鍒楄〃鏁版嵁
+		videoBufferOffset: 0.1 ,// 瑙嗛棰勫姞杞藉弬鏁�
+		videoLiveOffset: 2, // 淇濈暀褰撳墠瑙嗛鍓嶅悗鍚勫灏戜釜瑙嗛涓婁笅鏂�
+		touchXY: {  // 鐩戝惉宸︽粦鍙虫粦
+			startX: 0,
+			endX: 0,
+			startY: 0,
+			endY: 0
+		},
+		loading: false,  // 鏄惁姝e湪鍔犺浇
+		videoQuery: {
+			pageNumber: 1,
+			pageSize: 10,
+			videoFrom: 'recommend'
+		}
+    }
+  },
+  onShow() {
+	  // const token = storage.getAccessToken();
+	  // if (! token) {
+		 //  this.wxSilentLogin(() => {
+			//   this.loadVideos();
+		 //  })
+	  // } else {
+	  // 	  this.loadVideos();
+	  // }
+	  // 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
+	  if(this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
+		  const duration = Date.now() - this.startHidenTime
+		  this.totalHidenTime += duration
+	  }
+  },
+  onHide() {
+  	this.startHidenTime = Date.now()
+  },
+  onLoad(option) {
+	  const token = storage.getAccessToken();
+	  if (! token) {
+		  this.wxSilentLogin(() => {
+			  this.loadVideos();
+			  // 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
+			  if (option.userId && option.videoId) {
+				  // 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+				  saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
+			  }
+		  })
+	  } else {
+		this.loadVideos();
+	  }
+  },
+  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: {
+	  // 闈欓粯鐧诲綍
+	  wxSilentLogin(callback) {
+		  //鑾峰彇code
+		  uni.login({
+		    success: (codeRes) => {
+		      if(codeRes.errMsg === "login:ok") {
+				// 闈欓粯鐧诲綍
+				silentLogin({code: codeRes.code}).then(res => {
+					storage.setAccessToken(res.data.data.accessToken);
+					storage.setRefreshToken(res.data.data.refreshToken);
+					//鑾峰彇鐢ㄦ埛淇℃伅
+					getUserInfo().then((user) => {
+					  storage.setUserInfo(user.data.result);
+					  storage.setHasLogin(true);
+					  callback()
+					});
+				})
+		      } else {
+		        uni.showToast({
+		          title: "绯荤粺寮傚父锛岃鑱旂郴绠$悊鍛橈紒"
+		        })
+		      }
+		    },
+		  });
+	  },
+	  // 鐐瑰嚮鍟嗗搧璺宠浆
+	  jumpToPay(videoId) {
+		uni.navigateTo({
+			url: '/pages/video/video-goods-detail?videoId=' + videoId
+		});
+	  },
+	  // 杞挱鍥惧彉鍖�
+	  imgChange(e) {
+		  this.currentImgIndex = e.detail.current;
+	  },
+	  // 鍟嗗搧杞挱鍥惧彉鍖�
+	  goodsChange(e) {
+		  this.currentGoodsIndex = e.detail.current;
+	  },
+	  // 鑾峰彇杩涘害鏉$殑浣嶇疆鍜屽昂瀵�
+	  getBarRect() {
+	    const query = uni.createSelectorQuery().in(this);
+	    query.select('#progressBar').boundingClientRect(rect => {
+	      if (rect) {
+	        this.barLeft = rect.left;
+	        this.barWidth = rect.width;
+	      }
+	    }).exec();
+	  },
+		// 璺宠浆涓汉涓婚〉
+		jumpToHomePage(authorId) {
+			uni.navigateTo({
+				url: "/pages/video/home-page?authorId=" + authorId
+			})
+		},
+		// 鍙栨秷鐐硅禐
+		async cancelThumbsUp(id, commentIndex, replyIndex) {
+			const data = {
+				refId: id,
+				thumbsUpType: 'video_comment'
+			}
+			cancelThubmsUpComment(data).then(res => {
+				if(replyIndex != null) {
+					this.comments[commentIndex].replies[replyIndex].hasThumbsUp = false;
+					this.comments[commentIndex].replies[replyIndex].thumbsUpNum -= 1;
+				} else {
+					this.comments[commentIndex].hasThumbsUp = false;
+					this.comments[commentIndex].thumbsUpNum -= 1;
+				}
+			})
+		},
+		// 璇勮鐐硅禐
+		async thubmsUp(id, commentIndex, replyIndex) {
+			const data = {
+				refId: id,
+				thumbsUpType: 'video_comment'
+			}
+			thubmsUpComment(data).then(res => {
+				if(replyIndex != null) {
+					this.comments[commentIndex].replies[replyIndex].hasThumbsUp = true;
+					this.comments[commentIndex].replies[replyIndex].thumbsUpNum += 1;
+				} else {
+					this.comments[commentIndex].hasThumbsUp = true;
+					this.comments[commentIndex].thumbsUpNum += 1;
+				}
+			})
+		},
+		// 鍔犺浇涓嬩竴椤靛洖澶�
+		loadNextPageReply(index) {
+			this.replyCommentQuery.pageNumber++;
+			getVideoComments(this.replyCommentQuery).then(res => {
+				this.comments[index].replies = [
+				  ...this.comments[index].replies,
+				  ...res.data.data.filter(
+				    (newItem) => !this.comments[index].replies.some((oldItem) => oldItem.id === newItem.id)
+				  ),
+				];
+			})
+		},
+		// 鏀惰捣鍥炲
+		retractReplyComment(index) {
+			this.comments[index].expandReply = false;
+			this.comments[index].replies = [];
+		},
+		// 鍔犺浇鍥炲
+		loadRepliesPage(comment, index) {
+			this.replyCommentQuery.pageNumber = 1;
+			this.replyCommentQuery.masterCommentId = comment.id
+		    getVideoComments(this.replyCommentQuery).then(res => {
+				this.comments[index].replies = res.data.data;
+				this.comments[index].expandReply = true;
+			})
+		},
+		resetCommentForm() {
+			const videoId = this.commentForm.videoId;
+			this.commentForm = { // 璇勮琛ㄥ崟鏁版嵁
+				id: '',
+				videoId: videoId,
+				commentContent: '',
+				replyId: '',
+				replyUserId: '',
+				replyUserNickname: '',
+				replyUserAvatar: '',
+				masterCommentId: null
 			}
 		},
-		data() {
-			return {
-				currentImgIndex: 0, // 鎾斁鍒扮鍑犲紶鍥�--绱㈠紩
-				currentTime: 0,
-				formartDuration: [],
-				duration: 0,
-				startX: 0,
-				progress: 0, // 瑙嗛杩涘害
-				startProgress: 0, // 寮�濮嬫粦鍔ㄦ椂鐨勮繘搴�
-				barLeft: 0, // 杩涘害鏉″乏杈圭晫浣嶇疆
-				barWidth: 0, // 杩涘害鏉″搴�
-				isDragging: false, // 鏄惁姝e湪鎷栧姩
-				processHidenTimer: null, // 杩涘害鏉¢殣钘忓畾鏃跺櫒
-				showProcess: false, // 鏄惁鏄剧ず杩涘害鏉�
-				videoNoMore: false, // 鏄惁杩樻湁鏇村瑙嗛
-				commentNoMore: false, // 鏄惁杩樻湁鏇村璇勮
-				commentQuery: {
-					pageNumber: 1,
-					pageSize: 5,
-					videoId: '',
-					masterCommentId: ''
-				},
-				replyCommentQuery: {
-					pageNumber: 1,
-					pageSize: 5,
-					videoId: '',
-					masterCommentId: ''
-				},
-				commentForm: { // 璇勮琛ㄥ崟鏁版嵁
-					id: '',
-					videoId: '',
-					commentContent: '',
-					replyId: '',
-					replyUserId: '',
-					replyUserNickname: '',
-					replyUserAvatar: '',
-					masterCommentId: null
-				},
-				comments: [], // 璇勮鍒楄〃
-				commentsTotal: 0, // 璇勮鎬绘潯鏁�
-				commentLoading: false, // 璇勮鍔犺浇鐘舵��
-				startHidenTime: 0, // 璁板綍鍒囨崲鑷冲叾瀹冮〉闈㈢殑鏃堕棿锛岀敤浜庤绠楄棰戣鐪嬫椂闂村噺鍘荤殑閮ㄥ垎
-				totalHidenTime: 0, // 鎬诲叡闅愯棌椤甸潰鐨勬椂闂�
-				startPauseTime: 0, // 寮�濮嬫殏鍋滅殑鏃堕棿
-				totalPauseTime: 0, // 鎬诲叡鏆傚仠鐨勬椂闂�
-				playRecord: {
-					videoId: null,
-					viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
-					playAt: 0, // 杩欎釜瑙嗛鎾斁鍒板摢浜�
-					startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
-				},
-				currentVideoIsPlaying: true, // 褰撳墠瑙嗛鏄惁姝e湪鎾斁
-				isFullScreen: false,
-				windowHeight: 0,
-				currentIndex: 0, // 褰撳墠鎾斁鐨勮棰戠储寮�
-				videoList: [
+	    // 鍙栨秷鍥炲
+	    cancelReply() {
+	        this.resetCommentForm()
+	      },
+		// 鎵撳紑鍥炲妗�
+		openReply(comment, reply = null) {
+		  if(reply) {
+			comment = reply
+		  }
+		  this.commentForm.masterCommentId = comment.masterCommentId ? comment.masterCommentId : comment.id;
+		  this.commentForm.replyId = comment.id;
+		  this.commentForm.replyUserId = comment.userId;
+		  this.commentForm.replyUserNickname = comment.userNickname;
+		  this.commentForm.replyUserAvatar = comment.userAvatar;
+		  // 鑷姩鑱氱劍杈撳叆妗�
+		  this.$nextTick(() => {
+			const input = this.$refs.commentInput;
+			if (input) input.focus();
+		  });
+		},
+		// 杩涘害鏉℃椂闂存牸寮忓寲 (00:00)
+		sliderFormatTime(seconds) {
+		  const mins = Math.floor(seconds / 60);
+		  const secs = Math.floor(seconds % 60);
+		  return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
+		},
+		// 鏍煎紡鍖栨椂闂�
+	    formatTime(time) {
+	      const date = new Date(time);
+	      const now = new Date();
+	      const diff = Math.floor((now - date) / 1000); // 绉�
 
-				], // 瑙嗛鍒楄〃鏁版嵁
-				videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚�
-				loading: false, // 鏄惁姝e湪鍔犺浇
-				videoQuery: {
-					pageNumber: 1,
-					pageSize: 6,
-					videoFrom: 'recommend',
-					videoType: 'health'
-				}
+	      if (diff < 60) return '鍒氬垰';
+	      if (diff < 3600) return `${Math.floor(diff / 60)}鍒嗛挓鍓峘;
+	      if (diff < 86400) return `${Math.floor(diff / 3600)}灏忔椂鍓峘;
+
+	      return `${date.getMonth() + 1}鏈�${date.getDate()}鏃;
+	    },
+		// 鎻愪氦璇勮
+	    async submitComment() {
+	      if (!this.commentForm.commentContent.trim()) {
+	        uni.showToast({
+	          title: '璇勮鍐呭涓嶈兘涓虹┖',
+	          icon: 'none'
+	        });
+	        return;
+	      }
+		  // 鍙戣〃璇勮
+	      addVideoComment(this.commentForm).then(res => {
+			  if(res.data.code === 200) {
+				  this.resetCommentForm()
+
+				  // 濡傛灉鏄瘎璁哄埆浜虹殑鍥炲锛岄偅涔堝氨灏嗚繖涓彂甯冨埌replies閲岄潰
+				  if(res.data.data.replyId) {
+					  for (const [index, item] of this.comments.entries()) {
+					    if (item.id === res.data.data.replyId) {
+					      item.replies.unshift(res.data.data);
+					      // this.loadRepliesPage(item, index)
+					      break; // 璺冲嚭寰幆
+					    }
+					  }
+				  } else {
+					this.comments.unshift(res.data.data);
+				  }
+				  console.log("鏂板鍚�",this.comments);
+				  uni.showToast({
+				    title: '璇勮鎴愬姛'
+				  });
+				  // 褰撳墠瑙嗛璇勮鏁板姞涓�
+				  this.commentsTotal += 1;
+				  this.videoList[this.currentIndex].commentNum += 1;
+			  } else {
+				  uni.showToast({
+				          title: res.data.msg,
+				          icon: 'none'
+				        });
+			  }
+		  }).catch(() => {
+			  uni.showToast({
+			          title: '璇勮澶辫触',
+			          icon: 'none'
+			        });
+		  })
+	    },
+	    // 鍏抽棴璇勮寮圭獥
+	    closeCommentPopup() {
+		  this.$refs.commentPopup.close()
+	      this.showCommentPopup = false;
+	      this.comments = [];
+	      this.resetCommentForm()
+		  this.commentQuery.pageNumber = 1;
+		  this.commentNoMore = false;
+	    },
+		// 涓嬫粦璇勮鍖哄姞杞借瘎璁�
+		async getCommentPage() {
+			if(this.commentNoMore) {
+				return;
 			}
-		},
-		onShow() {
-			this.loadVideos()
-			// 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
-			if (this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
-				const duration = Date.now() - this.startHidenTime
-				this.totalHidenTime += duration
-			}
-		},
-		onHide() {
-			this.startHidenTime = Date.now()
-		},
-		onLoad() {
-			this.loadVideos();
-		},
-		onReady() {
-			// 鍒濆鍖栬棰戜笂涓嬫枃
-			this.initVideoContexts();
-		},
-		methods: {
-			// 杞挱鍥惧彉鍖�
-			imgChange(e) {
-				this.currentImgIndex = e.detail.current;
-			},
-			// 鑾峰彇杩涘害鏉$殑浣嶇疆鍜屽昂瀵�
-			getBarRect() {
-				const query = uni.createSelectorQuery().in(this);
-				query.select('#progressBar').boundingClientRect(rect => {
-					if (rect) {
-						this.barLeft = rect.left;
-						this.barWidth = rect.width;
-					}
-				}).exec();
-			},
-			// 璺宠浆涓汉涓婚〉
-			jumpToHomePage(authorId) {
-				uni.navigateTo({
-					url: "/pages/video/home-page?authorId=" + authorId
-				})
-			},
-			// 鍙栨秷鐐硅禐
-			async cancelThumbsUp(id, commentIndex, replyIndex) {
-				const data = {
-					refId: id,
-					thumbsUpType: 'video_comment'
-				}
-				cancelThubmsUpComment(data).then(res => {
-					if (replyIndex != null) {
-						this.comments[commentIndex].replies[replyIndex].hasThumbsUp = false;
-						this.comments[commentIndex].replies[replyIndex].thumbsUpNum -= 1;
-					} else {
-						this.comments[commentIndex].hasThumbsUp = false;
-						this.comments[commentIndex].thumbsUpNum -= 1;
-					}
-				})
-			},
-			// 璇勮鐐硅禐
-			async thubmsUp(id, commentIndex, replyIndex) {
-				const data = {
-					refId: id,
-					thumbsUpType: 'video_comment'
-				}
-				thubmsUpComment(data).then(res => {
-					if (replyIndex != null) {
-						this.comments[commentIndex].replies[replyIndex].hasThumbsUp = true;
-						this.comments[commentIndex].replies[replyIndex].thumbsUpNum += 1;
-					} else {
-						this.comments[commentIndex].hasThumbsUp = true;
-						this.comments[commentIndex].thumbsUpNum += 1;
-					}
-				})
-			},
-			// 鍔犺浇涓嬩竴椤靛洖澶�
-			loadNextPageReply(index) {
-				this.replyCommentQuery.pageNumber++;
-				getVideoComments(this.replyCommentQuery).then(res => {
-					this.comments[index].replies = [
-						...this.comments[index].replies,
-						...res.data.data.filter(
-							(newItem) => !this.comments[index].replies.some((oldItem) => oldItem.id === newItem
-								.id)
-						),
+			getVideoComments(this.commentQuery).then(res => {
+				if(this.commentQuery.pageNumber === 1) {
+					this.comments = res.data.data
+				} else {
+					this.comments = [
+					  ...this.comments,
+					  ...res.data.data.filter(
+					    (newItem) => !this.comments.some((oldItem) => oldItem.id === newItem.id)
+					  ),
 					];
-				})
-			},
-			// 鏀惰捣鍥炲
-			retractReplyComment(index) {
-				this.comments[index].expandReply = false;
-				this.comments[index].replies = [];
-			},
-			// 鍔犺浇鍥炲
-			loadRepliesPage(comment, index) {
-				this.replyCommentQuery.pageNumber = 1;
-				this.replyCommentQuery.masterCommentId = comment.id
-				getVideoComments(this.replyCommentQuery).then(res => {
-					this.comments[index].replies = res.data.data;
-					this.comments[index].expandReply = true;
-				})
-			},
-			resetCommentForm() {
-				const videoId = this.commentForm.videoId;
-				this.commentForm = { // 璇勮琛ㄥ崟鏁版嵁
-					id: '',
-					videoId: videoId,
-					commentContent: '',
-					replyId: '',
-					replyUserId: '',
-					replyUserNickname: '',
-					replyUserAvatar: '',
-					masterCommentId: null
 				}
-			},
-			// 鍙栨秷鍥炲
-			cancelReply() {
-				this.resetCommentForm()
-			},
-			// 鎵撳紑鍥炲妗�
-			openReply(comment, reply = null) {
-				if (reply) {
-					comment = reply
+				if (res.data.data.length < this.commentQuery.pageSize) {
+					this.commentNoMore = true;
+					return;
 				}
-				this.commentForm.masterCommentId = comment.masterCommentId ? comment.masterCommentId : comment.id;
-				this.commentForm.replyId = comment.id;
-				this.commentForm.replyUserId = comment.userId;
-				this.commentForm.replyUserNickname = comment.userNickname;
-				this.commentForm.replyUserAvatar = comment.userAvatar;
-				// 鑷姩鑱氱劍杈撳叆妗�
-				this.$nextTick(() => {
-					const input = this.$refs.commentInput;
-					if (input) input.focus();
+				this.commentQuery.pageNumber++;
+			})
+		},
+	    // 鏄剧ず璇勮寮圭獥
+	    async showComments(item) {
+	      this.commentForm.videoId = item.id;
+	      this.$refs.commentPopup.open();
+	      this.commentLoading = true;
+	      this.commentQuery.videoId = item.id
+	      this.replyCommentQuery.videoId = item.id
+		  // 棣栨鍔犺浇璇勮鍒嗛〉澶у皬澧炲姞涓�鍊嶏紝浠ヤ骇鐢熸粴鍔ㄦ潯锛屽悗缁彲瑙﹀彂
+		  this.commentQuery.pageSize *= 2;
+		  getVideoComments(this.commentQuery).then(res => {
+			  this.commentsTotal = res.data.total;
+			  this.comments = res.data.data;
+			  this.commentQuery.pageNumber += 2;
+			  this.commentQuery.pageSize /= 2;
+		  }).catch(() => {
+			  uni.showToast({
+			    title: '鑾峰彇璇勮澶辫触',
+			    icon: 'none'
+			  });
+		  }).finally(() => {
+			  this.commentLoading = false;
+		  })
+	    },
+	  // 鍏虫敞浣滆��
+	  subscribeAuth(index, authorId) {
+		this.videoList.forEach(video => {
+			if(video.authorId === authorId) {
+				video.subscribeThisAuthor = true
+			}
+		})
+		subscribe(authorId).then(res => {
+			if(res.data.code === 200) {
+				uni.showToast({
+				  title: '鍏虫敞鎴愬姛~',
+				  icon: 'none'
 				});
-			},
-			// 杩涘害鏉℃椂闂存牸寮忓寲 (00:00)
-			sliderFormatTime(seconds) {
-				const mins = Math.floor(seconds / 60);
-				const secs = Math.floor(seconds % 60);
-				return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
-			},
-			// 鏍煎紡鍖栨椂闂�
-			formatTime(time) {
-				const date = new Date(time);
-				const now = new Date();
-				const diff = Math.floor((now - date) / 1000); // 绉�
-
-				if (diff < 60) return '鍒氬垰';
-				if (diff < 3600) return `${Math.floor(diff / 60)}鍒嗛挓鍓峘;
-				if (diff < 86400) return `${Math.floor(diff / 3600)}灏忔椂鍓峘;
-
-				return `${date.getMonth() + 1}鏈�${date.getDate()}鏃;
-			},
-			// 鎻愪氦璇勮
-			async submitComment() {
-				if (!this.commentForm.commentContent.trim()) {
-					uni.showToast({
-						title: '璇勮鍐呭涓嶈兘涓虹┖',
-						icon: 'none'
-					});
-					return;
-				}
-				// 鍙戣〃璇勮
-				addVideoComment(this.commentForm).then(res => {
-					if (res.data.code === 200) {
-						this.resetCommentForm()
-
-						// 濡傛灉鏄瘎璁哄埆浜虹殑鍥炲锛岄偅涔堝氨灏嗚繖涓彂甯冨埌replies閲岄潰
-						if (res.data.data.replyId) {
-							for (const [index, item] of this.comments.entries()) {
-								if (item.id === res.data.data.replyId) {
-									item.replies.unshift(res.data.data);
-									// this.loadRepliesPage(item, index)
-									break; // 璺冲嚭寰幆
-								}
-							}
-						} else {
-							this.comments.unshift(res.data.data);
-						}
-						console.log("鏂板鍚�", this.comments);
-						uni.showToast({
-							title: '璇勮鎴愬姛'
-						});
-						// 褰撳墠瑙嗛璇勮鏁板姞涓�
-						this.commentsTotal += 1;
-						this.videoList[this.currentIndex].commentNum += 1;
-					} else {
-						uni.showToast({
-							title: res.data.msg,
-							icon: 'none'
-						});
-					}
-				}).catch(() => {
-					uni.showToast({
-						title: '璇勮澶辫触',
-						icon: 'none'
-					});
-				})
-			},
-			// 鍏抽棴璇勮寮圭獥
-			closeCommentPopup() {
-				this.$refs.commentPopup.close()
-				this.showCommentPopup = false;
-				this.comments = [];
-				this.resetCommentForm()
-				this.commentQuery.pageNumber = 1;
-				this.commentNoMore = false;
-			},
-			// 涓嬫粦璇勮鍖哄姞杞借瘎璁�
-			async getCommentPage() {
-				if (this.commentNoMore) {
-					return;
-				}
-				getVideoComments(this.commentQuery).then(res => {
-					if (this.commentQuery.pageNumber === 1) {
-						this.comments = res.data.data
-					} else {
-						this.comments = [
-							...this.comments,
-							...res.data.data.filter(
-								(newItem) => !this.comments.some((oldItem) => oldItem.id === newItem.id)
-							),
-						];
-					}
-					if (res.data.data.length < this.commentQuery.pageSize) {
-						this.commentNoMore = true;
-						return;
-					}
-					this.commentQuery.pageNumber++;
-				})
-			},
-			// 鏄剧ず璇勮寮圭獥
-			async showComments(item) {
-				this.commentForm.videoId = item.id;
-				this.$refs.commentPopup.open();
-				this.commentLoading = true;
-				this.commentQuery.videoId = item.id
-				this.replyCommentQuery.videoId = item.id
-				// 棣栨鍔犺浇璇勮鍒嗛〉澶у皬澧炲姞涓�鍊嶏紝浠ヤ骇鐢熸粴鍔ㄦ潯锛屽悗缁彲瑙﹀彂
-				this.commentQuery.pageSize *= 2;
-				getVideoComments(this.commentQuery).then(res => {
-					this.commentsTotal = res.data.total;
-					this.comments = res.data.data;
-					this.commentQuery.pageNumber += 2;
-					this.commentQuery.pageSize /= 2;
-				}).catch(() => {
-					uni.showToast({
-						title: '鑾峰彇璇勮澶辫触',
-						icon: 'none'
-					});
-				}).finally(() => {
-					this.commentLoading = false;
-				})
-			},
-			// 鍏虫敞浣滆��
-			subscribeAuth(index, authorId) {
+			} else {
 				this.videoList.forEach(video => {
-					if (video.authorId === authorId) {
-						video.subscribeThisAuthor = true
+					if(video.authorId === authorId) {
+						video.subscribeThisAuthor = false
 					}
 				})
-				subscribe(authorId).then(res => {
-					if (res.data.code === 200) {
-						uni.showToast({
-							title: '鍏虫敞鎴愬姛~',
-							icon: 'none'
-						});
-					} else {
-						this.videoList.forEach(video => {
-							if (video.authorId === authorId) {
-								video.subscribeThisAuthor = false
-							}
-						})
-					}
-				})
-			},
-			// 鍒濆鍖栬棰戜笂涓嬫枃
-			initVideoContexts() {
-				this.videoContexts = this.videoList.map((_, index) => {
-					let videoContent = uni.createVideoContext(`video${index}`, this);
-					return videoContent;
-				});
-			},
+			}
+		})
+	  },
 
-			// 鍔犺浇瑙嗛鏁版嵁
-			async loadVideos() {
-				if (this.loading || this.videoNoMore) return;
-				this.loading = true;
+    // 鍔犺浇瑙嗛鏁版嵁
+    async loadVideos() {
+      if (this.loading || this.videoNoMore) return;
+      this.loading = true;
 
-				getHealthRecommendVideos(this.videoQuery).then(res => {
-					console.log(res, "瑙嗛鏁版嵁");
-					if (this.videoQuery.pageNumber === 1) {
-						this.videoList = res.data.data;
-					} else {
-						this.videoList = [
-							...this.videoList,
-							...res.data.data.filter(
-								(newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
-							),
-						];
-					}
-					this.$nextTick(() => {
-						this.initVideoContexts();
-					});
-					this.loading = false;
-					if (res.data.data.length < this.videoQuery.pageSize) {
-						this.videoNoMore = true;
-						return;
-					}
-					this.videoQuery.pageNumber++;
+      getHealthRecommendVideos(this.videoQuery).then(res => {
+		  console.log(res, "瑙嗛鏁版嵁");
+		  if (this.videoQuery.pageNumber === 1) {
+		    this.videoList = res.data.data;
+		  } else {
+			this.videoList = [
+			  ...this.videoList,
+			  ...res.data.data.filter(
+			    (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
+			  ),
+			];
+		  }
+		  this.loading = false;
+		  if(res.data.data.length < this.videoQuery.pageSize) {
+			  this.videoNoMore = true;
+			  return;
+		  }
+		  this.videoQuery.pageNumber++;
 
-				})
-			},
+	  })
+    },
 
-			// 婊戝姩鍒囨崲瑙嗛
-			onSwiperChange(e) {
-				// 濡傛灉瑙嗛澶勪簬鏆傚仠鐘舵�佸線涓嬪埛瑙嗛锛岄偅涔堥渶瑕佸啀璁$畻涓�娆℃殏鍋滄椂闂�
-				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;
-
-				// 鏆傚仠涓婁竴涓棰�
-				if (this.videoContexts[oldIndex]) {
-					this.videoContexts[oldIndex].pause();
-				}
-
-				this.startPauseTime = 0;
-				// 鎾斁褰撳墠瑙嗛
-				if (this.videoContexts[this.currentIndex]) {
-					this.videoContexts[this.currentIndex].play();
-				}
-			},
-
-			// 鏀惰棌/鍙栨秷鏀惰棌
-			toggleCollect(item, index) {
-				let data = {
-					refId: item.id,
-					collectType: 'video'
-				}
-				const beforeCollected = item.collected
-				const beforeCollectNum = item.collectNum
-				if (item.collected) {
-					this.videoList[index].collected = false
-					this.videoList[index].collectNum -= 1
-				} else {
-					this.videoList[index].collected = true
-					this.videoList[index].collectNum += 1
-				}
-				changeCollect(data).then(res => {
-					if (res.data.code !== 200) {
-						this.videoList[index].collected = beforeCollected
-						this.videoList[index].collectNum = beforeCollectNum
-					}
-				})
-			},
-			// 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
-			togglePlay(index) {
-				console.log("鍗曞嚮瑙嗛", index, this.videoContexts);
-				if (this.currentVideoIsPlaying) {
-					this.videoContexts[index].pause();
-				} else {
-					this.videoContexts[index].play();
-				}
-			},
-			// 瑙嗛鎾斁浜嬩欢
-			onPlay(id, index) {
-				this.getBarRect()
-				this.progress = 0
-				console.log(id, index, "瑙﹀彂鎾斁");
-				if (index === this.currentIndex) {
-					this.currentVideoIsPlaying = true;
-				} else {
-					this.currentVideoIsPlaying = false;
-					return
-				}
-				this.playRecord.videoId = id;
-				// 娌″垵濮嬪寲鎵嶈祴鍊硷紝鍥犱负涓�涓棰戦噸澶嶆挱鏀緊nPlay浼氶噸澶嶈Е鍙�
-				if (this.playRecord.startPlayTime === 0) {
-					this.playRecord.startPlayTime = Date.now();
-				}
-				if (this.startPauseTime !== 0) {
-					const duration = Date.now() - this.startPauseTime
-					this.totalPauseTime += duration
-				}
-			},
-
-			// 瑙嗛鏆傚仠浜嬩欢
-			onPause(index) {
-				console.log(index, "瑙﹀彂鏆傚仠");
-				if (index === this.currentIndex) {
-					this.currentVideoIsPlaying = false;
-				} else {
-					this.currentVideoIsPlaying = true;
-					return
-				}
-				this.startPauseTime = Date.now()
-			},
-			// 瑙嗛缁撴潫浜嬩欢
-			onEnded(index) {
-				// this.currentVideoIsPlaying = false;
-			},
-
-			// 璁板綍鎾斁鏃堕暱
-			onTimeUpdate(e) {
-				this.playRecord.playAt = e.detail.currentTime;
-
-				this.currentTime = e.detail.currentTime;
-				this.progress = (e.detail.currentTime / this.duration) * 100
-			},
-			// 瑙︽懜寮�濮�
-			handleTouchStart(e) {
-				this.isDragging = true;
-				this.showProcess = true;
-				this.startProgress = this.progress; // 璁板綍寮�濮嬫椂鐨勮繘搴�
-				this.startX = e.touches[0].pageX;
-				console.log("璁板綍寮�濮嬫椂鐨勮繘搴�", this.startProgress);
-				this.videoContexts[this.currentIndex].pause()
-				// this.updateProgress(e);
-			},
-
-			// 瑙︽懜绉诲姩
-			handleTouchMove(e) {
-				if (!this.isDragging || !this.barWidth) return;
-				clearTimeout(this.processHidenTimer)
-				this.videoContexts[this.currentIndex].pause()
-				this.updateProgress(e);
-			},
-
-			// 瑙︽懜缁撴潫
-			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()
-				this.processHidenTimer = setTimeout(() => {
-					this.showProcess = false;
-				}, 1000);
-			},
-
-			// 鏇存柊杩涘害
-			updateProgress(e) {
-				// 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣
-				const currentX = e.touches[0].pageX;
-
-				// 璁$畻婊戝姩璺濈(鍍忕礌)
-				const deltaX = currentX - this.startX;
-
-				// 灏嗗儚绱犺窛绂昏浆鎹负杩涘害澧為噺
-				const deltaProgress = (deltaX / this.barWidth) * 100;
-				console.log("杩涘害澧為噺", deltaProgress);
-				// 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺
-				let newProgress = this.startProgress + deltaProgress;
-
-				// 闄愬埗鑼冨洿鍦�0-100涔嬮棿
-				newProgress = Math.max(0, Math.min(100, newProgress));
-
-				this.progress = newProgress;
-			},
-			// 鑾峰彇瑙嗛鎬绘椂闀�
-			onLoadedMetadata(e) {
-				this.duration = e.detail.duration;
-				this.formartDuration.push(this.sliderFormatTime(this.duration));
-				console.log("瑙嗛鎬绘椂闀�", this.duration);
-			},
-			// 淇濆瓨鎾斁璁板綍
-			async savePlayRecord() {
-				console.log(Date.now(), this.playRecord.startPlayTime, this.totalHidenTime);
-
-				const data = {
-					videoId: this.playRecord.videoId,
-					viewDuration: Date.now() - this.playRecord.startPlayTime - this.totalHidenTime - this
-						.totalPauseTime,
-					playAt: this.playRecord.playAt
-				}
-				this.playRecord = {
-					videoId: null,
-					viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
-					playAt: 0, // 杩欎釜瑙嗛鎾斁鍒板摢浜�
-					startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
-				}
-				this.totalHidenTime = 0
-				this.totalPauseTime = 0
-				savePlayRecord(data)
+    // 婊戝姩鍒囨崲瑙嗛
+    onSwiperChange(e) {
+		this.videoLoading = false
+		// 濡傛灉瑙嗛澶勪簬鏆傚仠鐘舵�佸線涓嬪埛瑙嗛锛岄偅涔堥渶瑕佸啀璁$畻涓�娆℃殏鍋滄椂闂�
+		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);
+		// 鏆傚仠涓婁竴涓棰�
+		videoContext.pause();
+		this.startPauseTime = 0;
+
+		// 璁剧疆褰撳墠鎾斁瑙嗛鐨勬�绘椂闀�
+		this.duration = this.videoList[this.currentIndex].videoDuration;
+		this.formartDuration = this.sliderFormatTime(this.duration);
+
+		// 鎾斁褰撳墠瑙嗛
+		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) {
+	  let data = {
+		  refId: item.id,
+		  collectType: 'video'
+	  }
+	  const beforeCollected = item.collected
+	  const beforeCollectNum = item.collectNum
+	  if(item.collected) {
+		  this.videoList[index].collected = false
+		  this.videoList[index].collectNum -= 1
+	  } else {
+		  this.videoList[index].collected = true
+		  this.videoList[index].collectNum += 1
+	  }
+      changeCollect(data).then(res => {
+		  if(res.data.code !== 200) {
+			  this.videoList[index].collected = beforeCollected
+			  this.videoList[index].collectNum = beforeCollectNum
+		  }
+	  })
+    },
+    // 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
+	togglePlay(index) {
+		console.log("鍗曞嚮瑙嗛", index);
+		const videoContext = uni.createVideoContext(`video${index}`, this);
+		if(this.currentVideoIsPlaying) {
+			videoContext.pause();
+		} else {
+			videoContext.play();
+		}
+	},
+    // 瑙嗛鎾斁浜嬩欢
+    onPlay(id, index) {
+		if(index === this.currentIndex) {
+			this.currentVideoIsPlaying = true;
+			if(! this.duration) {
+				// 璁剧疆褰撳墠鎾斁瑙嗛鐨勬�绘椂闀�
+				this.duration = this.videoList[this.currentIndex].videoDuration;
+				this.formartDuration = this.sliderFormatTime(this.duration);
+			}
+		} else {
+			return
+		}
+		this.getBarRect()
+		this.progress = 0
+		console.log(id, index, "瑙﹀彂鎾斁");
+		this.playRecord.videoId = id;
+		// 娌″垵濮嬪寲鎵嶈祴鍊硷紝鍥犱负涓�涓棰戦噸澶嶆挱鏀緊nPlay浼氶噸澶嶈Е鍙�
+		if(this.playRecord.startPlayTime === 0) {
+			this.playRecord.startPlayTime = Date.now();
+		}
+		if(this.startPauseTime !== 0) {
+			const duration = Date.now() - this.startPauseTime
+			this.totalPauseTime += duration
+		}
+		this.videoLoading = false
+    },
+
+    // 瑙嗛鏆傚仠浜嬩欢
+    onPause(index) {
+		console.log(index, "瑙﹀彂鏆傚仠");
+		if(index === this.currentIndex) {
+			this.currentVideoIsPlaying = false;
+			this.startPauseTime = Date.now()
+		}
+    },
+    // 瑙嗛缁撴潫浜嬩欢
+    onEnded(index) {
+      // this.currentVideoIsPlaying = false;
+    },
+
+	// 璁板綍鎾斁鏃堕暱
+	onTimeUpdate(e) {
+		this.videoLoading = false
+		this.playRecord.playAt = e.detail.currentTime;
+
+		this.currentTime = e.detail.currentTime;
+		this.progress = (e.detail.currentTime / this.duration) * 100
+	},
+	// 瑙︽懜寮�濮�
+	handleTouchStart(e) {
+	  this.isDragging = true;
+	  this.showProcess = true;
+	  this.startProgress = this.progress; // 璁板綍寮�濮嬫椂鐨勮繘搴�
+	  this.startX = e.touches[0].pageX;
+	  console.log("璁板綍寮�濮嬫椂鐨勮繘搴�", this.startProgress);
+	  const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this);
+	  videoContext.pause()
+	  // this.updateProgress(e);
+	},
+
+	// 瑙︽懜绉诲姩
+	handleTouchMove(e) {
+	  if (!this.isDragging || !this.barWidth) return;
+	  clearTimeout(this.processHidenTimer)
+	  this.updateProgress(e);
+	},
+
+	// 瑙︽懜缁撴潫
+	handleTouchEnd() {
+	  this.isDragging = false;
+	  console.log("婊戝姩缁撴潫", this.duration * this.progress);
+	  const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this);
+	  videoContext.seek(this.duration * this.progress / 100)
+	  videoContext.play()
+	  this.processHidenTimer = setTimeout(() => {
+		  this.showProcess = false;
+		}, 1000);
+	},
+
+	// 鏇存柊杩涘害
+	updateProgress(e) {
+		// 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣
+		const currentX = e.touches[0].pageX;
+
+		// 璁$畻婊戝姩璺濈(鍍忕礌)
+		const deltaX = currentX - this.startX;
+
+		// 灏嗗儚绱犺窛绂昏浆鎹负杩涘害澧為噺
+		const deltaProgress = (deltaX / this.barWidth) * 100;
+		// 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺
+		let newProgress = this.startProgress + deltaProgress;
+
+		// 闄愬埗鑼冨洿鍦�0-100涔嬮棿
+		newProgress = Math.max(0, Math.min(100, newProgress));
+
+		this.progress = newProgress;
+	},
+	// 瑙嗛缂撳啿
+	videoWaiting(index) {
+		if (index === this.currentIndex) {
+			console.log("瑙嗛缂撳啿涓�傘�傘��");
+			this.videoLoading = true;
+		}
+	},
+	// 鑾峰彇瑙嗛鎬绘椂闀�
+	onLoadedMetadata(e) {
+	  // this.duration = e.detail.duration;
+	  // this.formartDuration = this.sliderFormatTime(this.duration);
+	  // console.log("瑙嗛鎬绘椂闀�", this.duration);
+	},
+	// 淇濆瓨鎾斁璁板綍
+	async savePlayRecord() {
+		console.log(Date.now(), this.playRecord.startPlayTime, this.totalHidenTime);
+
+		const data = {
+			videoId: this.playRecord.videoId,
+			viewDuration: Date.now() - this.playRecord.startPlayTime - this.totalHidenTime - this.totalPauseTime,
+			playAt: this.playRecord.playAt
+		}
+		this.playRecord = {
+			videoId: null,
+			viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
+			playAt: 0 ,// 杩欎釜瑙嗛鎾斁鍒板摢浜�
+			startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
+		}
+		this.totalHidenTime = 0
+		this.totalPauseTime = 0
+		savePlayRecord(data)
 	}
+  }
+}
 </script>
 
 <style scoped>
 	::v-deep .custom-tabbar {
 		border-top: none !important;
 	}
-
 	.video-container {
-		width: 100%;
-		height: 100vh;
-		background-color: #000;
+	  width: 100%;
+	  height: 100vh;
+	  background-color: #000;
 	}
 
 	.video-swiper {
-		width: 100%;
-		height: calc(100% - 50px);
+	  width: 100%;
+	  height: calc(100% - 50px);
 	}
 
 	.video-item {
-		width: 100%;
-		height: 100%;
-		object-fit: cover;
+	  width: 100%;
+	  height: 100%;
+	  /* object-fit: cover; */
 	}
-
 	.play-icon {
-		position: absolute;
-		top: 50%;
-		left: 50%;
-		transform: translate(-50%, -50%);
-		width: 45px;
-		height: 45px;
-		z-index: 10;
-		opacity: 0.6;
+	  position: absolute;
+	  top: 50%;
+	  left: 50%;
+	  transform: translate(-50%, -50%);
+	  width: 45px;
+	  height: 45px;
+	  z-index: 10;
+	  opacity: 0.6;
 	}
 
 	.video-info {
-		width: 70%;
-		position: absolute;
-		bottom: 70px;
-		left: 20px;
-		color: #f8f8f8;
-		z-index: 10;
-		letter-spacing: 1px;
+	  width: 70%;
+	  position: absolute;
+	  bottom: 20px;
+	  left: 20px;
+	  color: #f8f8f8;
+	  z-index: 10;
+	  letter-spacing: 1px;
 	}
 
 	.action-buttons {
-		position: absolute;
-		right: 20px;
-		bottom: 150px;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		z-index: 10;
+	  position: absolute;
+	  right: 20px;
+	  bottom: 150px;
+	  display: flex;
+	  flex-direction: column;
+	  align-items: center;
+	  z-index: 10;
 	}
 
 	.action-item {
-		margin-bottom: 18px;
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		color: #fff;
+	  margin-bottom: 18px;
+	  display: flex;
+	  flex-direction: column;
+	  justify-content: center;
+	  align-items: center;
+	  color: #fff;
 	}
-
 	.avatar-container {
-		margin-bottom: 27px;
-		position: relative;
-		/* 涓虹粷瀵瑰畾浣嶇殑瀛愬厓绱犳彁渚涘畾浣嶄笂涓嬫枃 */
-		width: 40px;
-		height: 40px;
-		display: inline-block;
-		/* 浣垮鍣ㄦ牴鎹唴瀹硅皟鏁村ぇ灏� */
+	  margin-bottom: 27px;
+	  position: relative;  /* 涓虹粷瀵瑰畾浣嶇殑瀛愬厓绱犳彁渚涘畾浣嶄笂涓嬫枃 */
+	  width: 40px;
+	  height: 40px;
+	  display: inline-block; /* 浣垮鍣ㄦ牴鎹唴瀹硅皟鏁村ぇ灏� */
 	}
-
 	.avatar {
-		border: 2px solid #FFFFFF;
-		box-sizing: border-box;
-		width: 100%;
-		height: 100%;
-		border-radius: 50%;
-		/* 鍏抽敭灞炴�э紝璁剧疆涓�50%鍗冲彲瀹炵幇鍦嗗舰 */
-		overflow: hidden;
-		/* 纭繚鍥剧墖涓嶄細瓒呭嚭鍦嗗舰杈圭晫 */
-		display: block;
+	  border: 2px solid #FFFFFF;
+	  box-sizing: border-box;
+	  width: 100%;
+	  height: 100%;
+	  border-radius: 50%;  /* 鍏抽敭灞炴�э紝璁剧疆涓�50%鍗冲彲瀹炵幇鍦嗗舰 */
+	  overflow: hidden;    /* 纭繚鍥剧墖涓嶄細瓒呭嚭鍦嗗舰杈圭晫 */
+	  display: block;
 	}
-
 	.follow-icon {
-		position: absolute;
-		bottom: 0;
-		/* 瀹氫綅鍒板簳閮� */
-		left: 50%;
-		/* 姘村钩灞呬腑寮�濮嬩綅缃� */
-		transform: translate(-50%, 50%);
-		/* 姘村钩灞呬腑骞跺悜涓嬬Щ鍔�50% */
+	  position: absolute;
+	  bottom: 0;  /* 瀹氫綅鍒板簳閮� */
+	  left: 50%;  /* 姘村钩灞呬腑寮�濮嬩綅缃� */
+	  transform: translate(-50%, 50%); /* 姘村钩灞呬腑骞跺悜涓嬬Щ鍔�50% */
 
-		width: 18px;
-		/* 鍥炬爣澶у皬 */
-		height: 18px;
-		background-color: #FF5A5F;
-		/* 鍥炬爣鑳屾櫙鑹� */
-		border-radius: 50%;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-		/* 杞诲井闃村奖 */
+	  width: 18px;  /* 鍥炬爣澶у皬 */
+	  height: 18px;
+	  background-color: #FF5A5F; /* 鍥炬爣鑳屾櫙鑹� */
+	  border-radius: 50%;
+	  display: flex;
+	  justify-content: center;
+	  align-items: center;
+	  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 杞诲井闃村奖 */
 	}
-
 	.video-tag {
 		margin-left: 5px;
 		font-weight: bold;
 		color: #eeeeee;
 	}
-
 	.video-author {
 		font-size: 1.2em;
 	}
-
 	/* 鍟嗗搧閾炬帴鎮寕灞傛牱寮� */
 	.goods-link-warp {
 		position: absolute;
@@ -913,127 +1037,128 @@
 		color: #f8f8f8;
 		z-index: 10;
 	}
-
 	.goods-link {
-		position: relative;
-		margin: 20rpx 0;
-		padding: 12rpx;
-		background-color: rgba(255, 255, 255, 0.9);
-		border-radius: 12rpx;
-		box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
+	  position: relative;
+	  width: 450rpx;
+	  margin: 20rpx 0;
+	  padding: 12rpx;
+	  background-color: rgba(255, 255, 255, 0.9);
+	  border-radius: 12rpx;
+	  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
 	}
 
 	.goods-container {
-		display: flex;
-		align-items: center;
+	  width: 100%;
+	  display: flex;
+	  align-items: center;
 	}
 
 	.goods-image {
-		width: 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-right: 20rpx;
+	  width: 120rpx;
+	  height: 120rpx;
+	  border-radius: 8rpx;
+	  margin-right: 20rpx;
 	}
 
 	.goods-info {
-		flex: 1;
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
+	  flex: 1;
+	  display: flex;
+	  flex-direction: column;
+	  justify-content: center;
 	}
 
 	.goods-name {
-		font-size: 28rpx;
-		color: #333;
-		font-weight: bold;
-		display: -webkit-box;
-		-webkit-line-clamp: 2;
-		-webkit-box-orient: vertical;
-		overflow: hidden;
-		margin-bottom: 8rpx;
+	  font-size: 28rpx;
+	  color: #333;
+	  font-weight: bold;
+	  -webkit-line-clamp: 2;
+	  -webkit-box-orient: vertical;
+	  margin-bottom: 8rpx;
+	  width: 280rpx; /* 闇�瑕佹寚瀹氬搴� */
+	  overflow: hidden;
+	  white-space: nowrap;
+	  text-overflow: ellipsis;
 	}
 
 	.price-section {
-		display: flex;
-		align-items: center;
-		margin-bottom: 6rpx;
+	  display: flex;
+	  align-items: center;
+	  margin-bottom: 6rpx;
 	}
 
 	.current-price {
-		font-size: 32rpx;
-		color: #ff2e4d;
-		font-weight: bold;
-		margin-right: 12rpx;
+	  font-size: 32rpx;
+	  color: #ff2e4d;
+	  font-weight: bold;
+	  margin-right: 12rpx;
 	}
 
 	.original-price {
-		font-size: 28rpx;
-		color: #999;
-		text-decoration: line-through;
+	  font-size: 28rpx;
+	  color: #999;
+	  text-decoration: line-through;
 	}
 
 	.sales-count {
-		font-size: 22rpx;
-		color: #999;
+	  font-size: 22rpx;
+	  color: #999;
 	}
 
 	.buy-button {
-		background: linear-gradient(to right, #ff5a5f, #ff2e4d);
-		color: white;
-		padding: 10rpx 28rpx;
-		border-radius: 20rpx;
-		font-size: 26rpx;
-		font-weight: bold;
+	  background: linear-gradient(to right, #ff5a5f, #ff2e4d);
+	  color: white;
+	  padding: 10rpx 28rpx;
+	  border-radius: 20rpx;
+	  font-size: 26rpx;
+	  font-weight: bold;
 	}
-
 	/* 璇勮寮圭獥鏍峰紡 */
 	.comment-popup {
-		background-color: #fff;
-		border-radius: 20rpx 20rpx 0 0;
-		padding-bottom: env(safe-area-inset-bottom);
-		height: 60vh;
-		display: flex;
-		flex-direction: column;
+	  background-color: #fff;
+	  border-radius: 20rpx 20rpx 0 0;
+	  padding-bottom: env(safe-area-inset-bottom);
+	  height: 60vh;
+	  display: flex;
+	  flex-direction: column;
 	}
 
 	.popup-header {
-		padding: 30rpx;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		border-bottom: 1rpx solid #f5f5f5;
+	  padding: 30rpx;
+	  display: flex;
+	  justify-content: space-between;
+	  align-items: center;
+	  border-bottom: 1rpx solid #f5f5f5;
 	}
 
 	.popup-title {
-		font-size: 32rpx;
-		font-weight: bold;
+	  font-size: 32rpx;
+	  font-weight: bold;
 	}
 
 	.close-icon {
-		/* font-size: 36rpx; */
-		color: #999;
+	  /* font-size: 36rpx; */
+	  color: #999;
 	}
 
 	.comment-list {
-		flex: 1;
-		padding: 0rpx 20rpx 20rpx 20rpx;
-		box-sizing: border-box;
-		height: calc(60vh - 260rpx);
+	  flex: 1;
+	  padding: 0rpx 20rpx 20rpx 20rpx;
+	  box-sizing: border-box;
+	  height: calc(60vh - 260rpx);
 	}
 
 	.comment-item {
-		display: flex;
-		flex-direction: column;
-		padding: 10rpx 0 20rpx 0;
+	  display: flex;
+	  flex-direction: column;
+	  padding: 10rpx 0 20rpx 0;
 	}
 
 	.comment-avatar {
-		width: 70rpx;
-		height: 70rpx;
-		border-radius: 50%;
-		margin-right: 10rpx;
+	  width: 70rpx;
+	  height: 70rpx;
+	  border-radius: 50%;
+	  margin-right: 10rpx;
 	}
-
 	.comment-reply-avatar {
 		width: 40rpx;
 		height: 40rpx;
@@ -1042,71 +1167,68 @@
 	}
 
 	.comment-content {
-		flex: 1;
+	  flex: 1;
 	}
 
 	.nickname {
-		font-size: 28rpx;
-		color: #666;
-		display: block;
-		margin-bottom: 10rpx;
+	  font-size: 28rpx;
+	  color: #666;
+	  display: block;
+	  margin-bottom: 10rpx;
 	}
 
 	.content {
-		font-size: 28rpx;
-		color: #333;
-		display: block;
-		margin-bottom: 10rpx;
+	  font-size: 28rpx;
+	  color: #333;
+	  display: block;
+	  margin-bottom: 10rpx;
 	}
 
 	.time {
-		font-size: 28rpx;
-		color: #999;
+	  font-size: 28rpx;
+	  color: #999;
 	}
 
 	.comment-input-area {
-		display: flex;
-		padding: 20rpx 30rpx;
-		align-items: center;
+	  display: flex;
+	  padding: 20rpx 30rpx;
+	  align-items: center;
 	}
 
 	.comment-input {
-		flex: 1;
-		background-color: #fff;
-		height: 80rpx;
-		border: 1px solid #dcdcdc;
-		border-radius: 40rpx;
-		padding: 0 30rpx;
-		font-size: 28rpx;
+	  flex: 1;
+	  background-color: #fff;
+	  height: 80rpx;
+	  border: 1px solid #dcdcdc;
+	  border-radius: 40rpx;
+	  padding: 0 30rpx;
+	  font-size: 28rpx;
 	}
 
 	.placeholder {
-		color: #ccc;
+	  color: #ccc;
 	}
 
 	.submit-btn {
-		margin-left: 20rpx;
-		background-color: #07c160;
-		color: #fff;
-		border-radius: 40rpx;
-		padding: 0 30rpx;
-		height: 80rpx;
-		line-height: 80rpx;
-		font-size: 28rpx;
+	  margin-left: 20rpx;
+	  background-color: #07c160;
+	  color: #fff;
+	  border-radius: 40rpx;
+	  padding: 0 30rpx;
+	  height: 80rpx;
+	  line-height: 80rpx;
+	  font-size: 28rpx;
 	}
 
-	.loading,
-	.empty {
-		padding: 40rpx 0;
-		text-align: center;
-		color: #999;
+	.loading, .empty {
+	  padding: 40rpx 0;
+	  text-align: center;
+	  color: #999;
 	}
-
 	.reply-list {
-		margin-top: 20rpx;
-		padding-left: 80rpx;
+	  margin-top: 20rpx;
+	  padding-left: 80rpx;
 	}
-
 	.reply-op {
 		margin-top: 10rpx;
 		padding-left: 80rpx;
@@ -1114,7 +1236,6 @@
 		font-size: 28rpx;
 		color: #333;
 	}
-
 	.reply-op-item {
 		display: flex;
 		align-items: center;
@@ -1122,125 +1243,122 @@
 	}
 
 	.reply-item {
-		display: flex;
-		margin-bottom: 20rpx;
+	  display: flex;
+	  margin-bottom: 20rpx;
 	}
 
 	.reply-content {
-		flex: 1;
+	  flex: 1;
 	}
 
 	.reply-to {
-		color: #576b95;
-		margin: 0 10rpx;
-		font-size: 28rpx;
+	  color: #576b95;
+	  margin: 0 10rpx;
+	  font-size: 28rpx;
 	}
-
 	.reply-title {
-		display: flex;
-		align-items: center;
-		font-size: 28rpx;
-		color: #333;
+	  display: flex;
+	  align-items: center;
+	  font-size: 28rpx;
+	  color: #333;
 	}
 
 	.cancel-reply {
-		margin-left: 20rpx;
-		color: #576b95;
-		font-size: 28rpx;
-		padding: 6rpx 12rpx;
-		background: #f5f5f5;
-		border-radius: 20rpx;
+	  margin-left: 20rpx;
+	  color: #576b95;
+	  font-size: 28rpx;
+	  padding: 6rpx 12rpx;
+	  background: #f5f5f5;
+	  border-radius: 20rpx;
 	}
-
 	.view-more-replies {
-		color: #576b95;
-		font-size: 28rpx;
-		padding: 10rpx 0;
-		padding-left: 80rpx;
+	  color: #576b95;
+	  font-size: 28rpx;
+	  padding: 10rpx 0;
+	  padding-left: 80rpx;
 	}
-
-	.comment-footer,
-	.reply-footer {
-		display: flex;
-		align-items: center;
-		font-size: 28rpx;
-		color: #999;
+	.comment-footer, .reply-footer {
+	  display: flex;
+	  align-items: center;
+	  font-size: 28rpx;
+	  color: #999;
 	}
-
 	.reply-btu {
 		margin-left: 30rpx;
 	}
-
 	.thumbs-up {
 		position: absolute;
 		right: 20rpx;
 		font-size: 32rpx;
 		width: 120rpx;
 	}
-
 	.textSideIcon {
 		font-size: 36rpx;
 		margin-left: 5rpx;
 	}
-
 	.line {
 		margin-right: 10rpx;
 		color: #cccccc;
 	}
-
 	.thumbs-num {
 		margin-left: 4rpx;
 	}
-
 	.container {
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		position: absolute;
-		bottom: 0;
-		width: 100%;
+	  display: flex;
+	  flex-direction: column;
+	  align-items: center;
+	  position: absolute;
+	  bottom: 0;
+	  width: 100%;
 	}
 
 	.progress-bar {
-		position: relative;
-		width: 100%;
-		height: 16px;
-		background-color: #eee;
-		overflow: hidden;
+	  position: relative;
+	  width: 100%;
+	  height: 16px;
+	  background-color: #eee;
+	  overflow: hidden;
 	}
 
 	.progress-fill {
-		position: absolute;
-		left: 0;
-		top: 0;
-		height: 100%;
-		background-color: lightgray;
-		transition: width 0.1s;
+	  position: absolute;
+	  left: 0;
+	  top: 0;
+	  height: 100%;
+	  background-color: lightgray;
+	  transition: width 0.1s;
 	}
-
 	.process-warp {
 		width: 100%;
 		display: flex;
 		flex-direction: column;
 		align-items: center;
 	}
-
 	.progress-text {
-		margin-top: 10px;
-		font-size: 14px;
-		color: #666;
+	  margin-top: 10px;
+	  font-size: 14px;
+	  color: #666;
 	}
-
 	.swiper-box {
-		width: 100%;
-		height: 1400rpx;
+	  width: 100%;
+	  height: 1400rpx;
 	}
-
 	.swiper-item {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		width: 100%;
-		height: 100%;
+	  display: flex;
+	  justify-content: center;
+	  align-items: center;
+	  width: 100%;
+	  height: 100%;
 	}
-</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>
diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue
index b982f72..adb9b71 100644
--- a/pages/kitchen/KitchenVideo.vue
+++ b/pages/kitchen/KitchenVideo.vue
@@ -1,1336 +1,1428 @@
 <template>
-	<view class="video-container">
-		<!-- 瑙嗛鍒楄〃 -->
-		<swiper class="video-swiper" vertical circular :current="currentIndex" @change="onSwiperChange">
-			<view class="showLeft" @click="showDrawer('showLeft')" v-if="!showLeft">
-				<uni-icons type="right" size="30"></uni-icons>
-			</view>
-			<swiper-item v-for="(item, index) in videoList" :key="item.id">
-				<view style="width: 100%;height: 100%;" v-if="item.videoContentType === 'video'">
-					<!-- 鎾斁鎸夐挳锛堜粎褰撹棰戞殏鍋滄椂鏄剧ず锛� -->
-					<view class="play-icon" @click="togglePlay(index)" v-if="!currentVideoIsPlaying">
-						<image src="/static/video/play.png" style="width: 45px;height: 45px" mode="aspectFit"></image>
-					</view>
-					<video :id="'video'+index" :ref="'video'+index" :src="item.videoUrl"
-						:autoplay="currentIndex === index" :controls="false" :loop="true" :object-fit="item.objectFit"
-						:enable-progress-gesture="false" class="video-item" @play="onPlay(item.id, index)"
-						@pause="onPause(index)" @ended="onEnded(index)" @click="togglePlay(index)"
-						@timeupdate="onTimeUpdate($event)" @loadedmetadata="onLoadedMetadata($event)"></video>
-					<!-- 鑷畾涔夋帶鍒舵潯 -->
-					<view @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd"
-						class="container">
-						<!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
-						<view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }">
-							<!-- 鏄剧ず褰撳墠杩涘害 -->
-							<view class="progress-text">{{ hasPlayTime }}/{{formartDuration[index]}}</view>
-							<view class="progress-bar" id="progressBar">
+  <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">
+      <uni-icons type="right" size="30"></uni-icons>
+    </view>
+    <!-- 瑙嗛鍒楄〃 -->
+    <swiper v-if="videoList.length > 0"
+            class="video-swiper"
+            vertical
+            :current="currentIndex"
+            @change="onSwiperChange"
+            :duration="250"
+            easing-function="linear"
+    >
 
-								<!-- 宸插~鍏呴儴鍒� -->
-								<view class="progress-fill" :style="{ width: progress + '%' }"></view>
-							</view>
-						</view>
-					</view>
-				</view>
-				<view style="width: 100%; height: 100%;" v-else-if="item.videoContentType === 'img'">
-					<uni-swiper-dot :info="item.imgs" :current="currentImgIndex" mode="round"
-						style="width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;"
-						:dots-styles="{width: 24, bottom: 24,selectedBackgroundColor: 'green', backgroundColor: 'gray'}">
-						<swiper class="swiper-box" @change="imgChange" :autoplay="true" :interval="3000">
-							<swiper-item v-for="img in item.imgs" :key="img">
-								<view class="swiper-item">
-									<!-- 璋冩暣 image 鏍峰紡锛屼娇鍏跺眳涓笖鎸夋瘮渚嬬缉鏀� -->
-									<image :src="img" mode="aspectFit"
-										style="width: 100%; height: 100%; display: block; margin: 0 auto;"></image>
-								</view>
-							</swiper-item>
-						</swiper>
-					</uni-swiper-dot>
-				</view>
+      <swiper-item
+          v-for="(item, index) in videoList"
+          :key="item.id"
+          @touchstart="handleSwiperStart"
+          @touchmove="handleSwiperMove"
+          @touchend="handleSwiperEnd(item)"
+      >
+        <view style="width: 100%;height: 100%;" v-if="item.videoContentType === 'video'">
+          <!-- 鎾斁鎸夐挳锛堜粎褰撹棰戞殏鍋滄椂鏄剧ず锛� -->
+          <view
+              class="play-icon"
+              @click="togglePlay(index)"
+              v-show="!currentVideoIsPlaying"
+          >
+            <image src="/static/video/play.png" style="width: 45px;height: 45px" mode="aspectFit"></image>
+          </view>
+          <video
+              v-if="index >= currentIndex - videoLiveOffset && index <= currentIndex + videoLiveOffset"
+              :id="'video'+index"
+              :ref="'video'+index"
+              :src="item.videoUrl"
+              :autoplay="index === currentIndex"
+              :controls="false"
+              :loop="true"
+              :object-fit="item.objectFit"
+              :enable-progress-gesture="false"
+              :show-center-play-btn="false"
+              class="video-item"
+              @play="onPlay(item.id, index)"
+              @pause="onPause(index)"
+              @ended="onEnded(index)"
+              @click="togglePlay(index)"
+              @timeupdate="onTimeUpdate($event)"
+              @loadedmetadata="onLoadedMetadata($event)"
+              @waiting="videoWaiting(index)"
+          ></video>
+          <!-- 鑷畾涔夋帶鍒舵潯 -->
+          <view
+              @touchstart.stop="handleTouchStart"
+              @touchmove.stop="handleTouchMove"
+              @touchend.stop="handleTouchEnd"
+              class="container">
+            <!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
+            <view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }">
+              <!-- 鏄剧ず褰撳墠杩涘害 -->
+              <view class="progress-text">{{ hasPlayTime }}/{{formartDuration}}</view>
+              <view
+                  class="progress-bar"
+                  id="progressBar"
+              >
+
+                <!-- 宸插~鍏呴儴鍒� -->
+                <view class="progress-fill" :style="{ width: progress + '%' }"></view>
+              </view>
+            </view>
+          </view>
+        </view>
+        <view style="width: 100%; height: 100%;" v-else-if="item.videoContentType === 'img'">
+          <uni-swiper-dot
+              :info="item.imgs"
+              :current="currentImgIndex"
+              mode="round"
+              style="width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;"
+              :dots-styles="{width: 24, bottom: 24,selectedBackgroundColor: 'green', backgroundColor: 'gray'}"
+          >
+            <swiper class="swiper-box" @change="imgChange" :autoplay="true" :interval="3000">
+              <swiper-item v-for="img in item.imgs" :key="img">
+                <view class="swiper-item">
+                  <!-- 璋冩暣 image 鏍峰紡锛屼娇鍏跺眳涓笖鎸夋瘮渚嬬缉鏀� -->
+                  <image
+                      :src="img"
+                      mode="aspectFit"
+                      style="width: 100%; height: 100%; display: block; margin: 0 auto;"
+                  ></image>
+                </view>
+              </swiper-item>
+            </swiper>
+          </uni-swiper-dot>
+        </view>
 
 
-				<!-- 鎮寕鍟嗗搧閾炬帴灞� -->
-				<view class="goods-link-warp" v-if="false">
-					<view class="goods-link">
-						<view class="goods-container">
-							<!-- 鍟嗗搧鍥剧墖 -->
-							<image class="goods-image" :src="item.goods.imageUrl" mode="aspectFill"></image>
+        <!-- 鎮寕鍟嗗搧閾炬帴灞� -->
+        <view class="goods-link-warp" v-if="item.goodsList.length > 0">
+          <view class="goods-link">
+            <swiper @change="goodsChange" :autoplay="true" :interval="4000" style="height: 120rpx;">
+              <swiper-item v-for="goods in item.goodsList" :key="goods.goodsId">
+                <view class="goods-container" @click="jumpToPay(item.id)">
+                  <!-- 鍟嗗搧鍥剧墖 -->
+                  <image class="goods-image" :src="goods.thumbnail" mode="aspectFill"></image>
 
-							<!-- 鍟嗗搧淇℃伅 -->
-							<view class="goods-info">
-								<text class="goods-name">{{item.goods.name}}</text>
-								<view class="price-section">
-									<text class="current-price">楼{{item.goods.price}}</text>
-									<text class="original-price"
-										v-if="item.goods.originalPrice">楼{{item.goods.originalPrice}}</text>
-								</view>
-								<text class="sales-count">{{item.goods.saleNum}}浜哄凡璐�</text>
-							</view>
-
-							<!-- 璐拱鎸夐挳 -->
-							<view class="buy-button">
-								<text>璐拱</text>
-							</view>
-						</view>
-					</view>
-				</view>
+                  <!-- 鍟嗗搧淇℃伅 -->
+                  <view class="goods-info">
+                    <text class="goods-name">{{goods.goodsName}}</text>
+                    <view class="price-section">
+                      <text class="current-price">楼{{goods.price}}</text>
+                      <text class="original-price" v-if="goods.originalPrice">楼{{goods.originalPrice}}</text>
+                    </view>
+                  </view>
+                </view>
+              </swiper-item>
+            </swiper>
+          </view>
+        </view>
 
 
-				<!-- 瑙嗛淇℃伅灞� -->
-				<view class="video-info">
-					<view>
-						<text class="video-author">@{{item.authorName}}</text>
-					</view>
-					<view style="width: 100%;word-wrap: break-word;white-space: normal;overflow-wrap: break-word;">
-						<text class="video-title">{{item.title}}</text>
-						<text class="video-tag" v-for="(tag, index) in item.tagList"
-							:key="tag.id">#{{tag.tagName}}</text>
-					</view>
-				</view>
+        <!-- 瑙嗛淇℃伅灞� -->
+        <view class="video-info">
+          <view>
+            <text class="video-author">@{{item.authorName}}</text>
+          </view>
+          <view style="width: 100%;word-wrap: break-word;white-space: normal;overflow-wrap: break-word;">
+            <text class="video-title">{{item.title}}</text>
+            <text class="video-tag" v-for="(tag, index) in item.tagList" :key="tag.id">#{{tag.tagName}}</text>
+          </view>
+        </view>
 
-				<!-- 鍙充晶浜掑姩鎸夐挳 -->
-				<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="action-item" @click="showComments(item)">
-						<text class="iconfont">&#xe7f7;</text>
-						<text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
-					</view>
-				</view>
+        <!-- 鍙充晶浜掑姩鎸夐挳 -->
+        <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="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>
 
-			</swiper-item>
-		</swiper>
+          </view>
+        </view>
 
-		<!-- 璇勮寮圭獥 -->
-		<uni-popup ref="commentPopup" type="bottom" :is-mask-click="true" @maskClick="closeCommentPopup">
-			<view class="comment-popup">
-				<view class="popup-header">
-					<text class="popup-title" v-if="!commentForm.replyId">璇勮({{commentsTotal}})</text>
-					<view class="reply-title" v-else>
-						<text>鍥炲 @{{commentForm.replyUserNickname}}</text>
-						<text class="cancel-reply" @click="cancelReply">鍙栨秷</text>
-					</view>
-					<text class="iconfont close-icon" @click="closeCommentPopup">&#xe675;</text>
-				</view>
+      </swiper-item>
+    </swiper>
+    <!-- 璇勮寮圭獥 -->
+    <uni-popup ref="commentPopup" type="bottom" :is-mask-click="true" @maskClick="closeCommentPopup">
+      <view class="comment-popup">
+        <view class="popup-header">
+          <text class="popup-title" v-if="!commentForm.replyId">璇勮({{commentsTotal}})</text>
+          <view class="reply-title" v-else>
+            <text>鍥炲 @{{commentForm.replyUserNickname}}</text>
+            <text class="cancel-reply" @click="cancelReply">鍙栨秷</text>
+          </view>
+          <text class="iconfont close-icon" @click="closeCommentPopup">&#xe675;</text>
+        </view>
 
-				<scroll-view class="comment-list" scroll-y :show-scrollbar="false" @scrolltolower="getCommentPage">
-					<view v-if="commentLoading" class="loading">
-						<uni-load-more status="loading"></uni-load-more>
-					</view>
+        <scroll-view class="comment-list" scroll-y :show-scrollbar="false" @scrolltolower="getCommentPage">
+          <view v-if="commentLoading" class="loading">
+            <uni-load-more status="loading"></uni-load-more>
+          </view>
 
-					<view v-else-if="comments.length === 0" class="empty">
-						鏆傛棤璇勮锛屽揩鏉ュ彂琛ㄧ涓�鏉¤瘎璁哄惂~
-					</view>
+          <view v-else-if="comments.length === 0" class="empty">
+            鏆傛棤璇勮锛屽揩鏉ュ彂琛ㄧ涓�鏉¤瘎璁哄惂~
+          </view>
 
-					<view v-else class="comment-item" v-for="(comment, index) in comments" :key="comment.id">
-						<view style="display: flex;">
-							<image class="comment-avatar" :src="comment.userAvatar || '/static/default-avatar.png'">
-							</image>
-							<view class="comment-content">
-								<text class="nickname">{{comment.userNickname}}</text>
-								<text class="content">{{comment.commentContent}}</text>
-								<view style="position: relative;">
-									<text class="time">{{formatTime(comment.createTime)}}</text>
-									<text @click="openReply(comment)" class="reply-btu time">鍥炲</text>
-									<text v-if="!comment.hasThumbsUp" class="thumbs-up time iconfont"
-										@click="thubmsUp(comment.id, index, null)">&#xe614;<text
-											v-show="comment.thumbsUpNum > 0"
-											class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
-									<text v-else class="thumbs-up time iconfont"
-										@click="cancelThumbsUp(comment.id, index, null)">&#xe607;<text
-											v-show="comment.thumbsUpNum > 0"
-											class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
-								</view>
-							</view>
-						</view>
-						<!-- 鍥炲鍒楄〃 -->
-						<view class="reply-list" v-if="comment.replies && comment.replies.length > 0">
-							<view class="reply-item" v-for="(reply, replyIndex) in comment.replies" :key="reply.id">
-								<view class="reply-content">
-									<view style="display: flex;">
-										<image class="comment-reply-avatar"
-											:src="reply.replyUserAvatar || '/static/default-avatar.png'"></image>
-										<text class="nickname">{{reply.userNickname}}</text>
-										<text v-if="reply.replyUserId && reply.masterCommentId !== reply.replyId"
-											class="reply-to"><text style="margin-right: 10rpx;font-size: 28rpx;"
-												class="iconfont">&#xe666;</text>{{reply.replyUserNickname}}</text>
-									</view>
-									<text class="content">{{reply.commentContent}}</text>
-									<view class="reply-footer">
-										<text class="time">{{formatTime(reply.createTime)}}</text>
-										<text @click="openReply(comment, reply)" class="reply-btu time">鍥炲</text>
-										<text v-if="!reply.hasThumbsUp" class="thumbs-up time iconfont"
-											@click="thubmsUp(reply.id, index, replyIndex)">&#xe614;<text
-												v-show="reply.thumbsUpNum > 0"
-												class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
-										<text v-else class="thumbs-up time iconfont"
-											@click="cancelThumbsUp(reply.id, index, replyIndex)">&#xe607;<text
-												v-show="reply.thumbsUpNum > 0"
-												class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
-									</view>
-								</view>
-							</view>
-						</view>
-						<view class="view-more-replies" v-if="comment.replyTotalCount > 0 && !comment.expandReply"
-							@click="loadRepliesPage(comment, index)">
-							<text class="line">鈥斺��</text>灞曞紑{{comment.replyTotalCount}}鏉″洖澶� 鈫�
-						</view>
-						<view class="reply-op"
-							v-if="comment.replyTotalCount > replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
-							<view @click="loadNextPageReply(index)" class="reply-op-item"><text
-									class="line">鈥斺��</text>灞曞紑鏇村<text class="iconfont textSideIcon">&#xeb8d;</text></view>
-							<view @click="retractReplyComment(index)" class="reply-op-item" style="margin-left: 50rpx;">
-								鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
-						</view>
-						<view class="reply-op"
-							v-else-if="comment.replyTotalCount <= replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
-							<view @click="retractReplyComment(index)" class="reply-op-item"><text
-									class="line">鈥斺��</text>鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
-						</view>
-					</view>
-				</scroll-view>
-				<view class="comment-input-area">
-					<input ref="commentInput" class="comment-input" v-model="commentForm.commentContent"
-						:placeholder="commentForm.replyId ? `鍥炲 @${commentForm.replyUserNickname}` : '鍐欎笅浣犵殑璇勮...'"
-						placeholder-class="placeholder" />
-					<button class="submit-btn" @click="submitComment"
-						:disabled="!commentForm.commentContent.trim()">鍙戦��</button>
-				</view>
-			</view>
-		</uni-popup>
-		<uni-drawer ref="showLeft" mode="left" width="120" :cus-style="true" height="93vh"
-			@change="change($event,'showLeft')" class="navigationLeft">
-			<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">
-					{{item.typeName}}
-				</view>
-			</scroll-view>
-		</uni-drawer>
-
-	</view>
+          <view v-else class="comment-item" v-for="(comment, index) in comments" :key="comment.id">
+            <view style="display: flex;">
+              <image class="comment-avatar" :src="comment.userAvatar || '/static/default-avatar.png'"></image>
+              <view class="comment-content">
+                <text class="nickname">{{comment.userNickname}}</text>
+                <text class="content">{{comment.commentContent}}</text>
+                <view style="position: relative;">
+                  <text class="time">{{formatTime(comment.createTime)}}</text>
+                  <text @click="openReply(comment)" class="reply-btu time">鍥炲</text>
+                  <text v-if="!comment.hasThumbsUp" class="thumbs-up time iconfont" @click="thubmsUp(comment.id, index, null)">&#xe614;<text v-show="comment.thumbsUpNum > 0" class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
+                  <text v-else class="thumbs-up time iconfont" @click="cancelThumbsUp(comment.id, index, null)">&#xe607;<text v-show="comment.thumbsUpNum > 0" class="thumbs-num">{{comment.thumbsUpNum}}</text></text>
+                </view>
+              </view>
+            </view>
+            <!-- 鍥炲鍒楄〃 -->
+            <view class="reply-list" v-if="comment.replies && comment.replies.length > 0">
+              <view class="reply-item" v-for="(reply, replyIndex) in comment.replies" :key="reply.id">
+                <view class="reply-content">
+                  <view style="display: flex;">
+                    <image class="comment-reply-avatar" :src="reply.replyUserAvatar || '/static/default-avatar.png'"></image>
+                    <text class="nickname">{{reply.userNickname}}</text>
+                    <text v-if="reply.replyUserId && reply.masterCommentId !== reply.replyId" class="reply-to"><text style="margin-right: 10rpx;font-size: 28rpx;" class="iconfont">&#xe666;</text>{{reply.replyUserNickname}}</text>
+                  </view>
+                  <text class="content">{{reply.commentContent}}</text>
+                  <view class="reply-footer">
+                    <text class="time">{{formatTime(reply.createTime)}}</text>
+                    <text @click="openReply(comment, reply)" class="reply-btu time">鍥炲</text>
+                    <text v-if="!reply.hasThumbsUp" class="thumbs-up time iconfont" @click="thubmsUp(reply.id, index, replyIndex)">&#xe614;<text v-show="reply.thumbsUpNum > 0" class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
+                    <text v-else class="thumbs-up time iconfont" @click="cancelThumbsUp(reply.id, index, replyIndex)">&#xe607;<text v-show="reply.thumbsUpNum > 0" class="thumbs-num">{{reply.thumbsUpNum}}</text></text>
+                  </view>
+                </view>
+              </view>
+            </view>
+            <view class="view-more-replies" v-if="comment.replyTotalCount > 0 && !comment.expandReply" @click="loadRepliesPage(comment, index)">
+              <text class="line">鈥斺��</text>灞曞紑{{comment.replyTotalCount}}鏉″洖澶� 鈫�
+            </view>
+            <view class="reply-op" v-if="comment.replyTotalCount > replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
+              <view @click="loadNextPageReply(index)" class="reply-op-item"><text class="line">鈥斺��</text>灞曞紑鏇村<text class="iconfont textSideIcon">&#xeb8d;</text></view>
+              <view @click="retractReplyComment(index)" class="reply-op-item" style="margin-left: 50rpx;">鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
+            </view>
+            <view class="reply-op" v-else-if="comment.replyTotalCount <= replyCommentQuery.pageNumber * replyCommentQuery.pageSize && comment.expandReply">
+              <view @click="retractReplyComment(index)" class="reply-op-item"><text class="line">鈥斺��</text>鏀惰捣<text class="iconfont textSideIcon">&#xeb9b;</text></view>
+            </view>
+          </view>
+        </scroll-view>
+        <view class="comment-input-area">
+          <input
+              ref="commentInput"
+              class="comment-input"
+              v-model="commentForm.commentContent"
+              :placeholder="commentForm.replyId ? `鍥炲 @${commentForm.replyUserNickname}` : '鍐欎笅浣犵殑璇勮...'"
+              placeholder-class="placeholder"
+          />
+          <button class="submit-btn" @click="submitComment" :disabled="!commentForm.commentContent.trim()">鍙戦��</button>
+        </view>
+      </view>
+    </uni-popup>
+    <uni-drawer ref="showLeft" mode="left" width="120" :cus-style="true" height="93vh"
+                @change="change($event,'showLeft')" class="navigationLeft">
+      <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">
+          {{item.typeName}}
+        </view>
+      </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>
+  </view>
 </template>
 
 <script>
-	import {
-		getkitchenTypeList,
-		getkitchenVideoList,
-		savePlayRecord,
-		subscribe,
-		getVideoComments,
-		addVideoComment,
-		thubmsUpComment,
-		cancelThubmsUpComment
-	} from "@/api/video.js";
-	import {
-		changeCollect
-	} from "@/api/collect.js";
-	export default {
-		computed: {
-			hasPlayTime() {
-				return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
-			}
-		},
-		data() {
-			return {
-				currentCategort: '',
-				categoryList: [],
-				currentImgIndex: 0, // 鎾斁鍒扮鍑犲紶鍥�--绱㈠紩
-				currentTime: 0,
-				formartDuration: [],
-				duration: 0,
-				startX: 0,
-				progress: 0, // 瑙嗛杩涘害
-				startProgress: 0, // 寮�濮嬫粦鍔ㄦ椂鐨勮繘搴�
-				barLeft: 0, // 杩涘害鏉″乏杈圭晫浣嶇疆
-				barWidth: 0, // 杩涘害鏉″搴�
-				isDragging: false, // 鏄惁姝e湪鎷栧姩
-				processHidenTimer: null, // 杩涘害鏉¢殣钘忓畾鏃跺櫒
-				showProcess: false, // 鏄惁鏄剧ず杩涘害鏉�
-				videoNoMore: false, // 鏄惁杩樻湁鏇村瑙嗛
-				commentNoMore: false, // 鏄惁杩樻湁鏇村璇勮
-				commentQuery: {
-					pageNumber: 1,
-					pageSize: 5,
-					videoId: '',
-					masterCommentId: ''
-				},
-				replyCommentQuery: {
-					pageNumber: 1,
-					pageSize: 5,
-					videoId: '',
-					masterCommentId: ''
-				},
-				commentForm: { // 璇勮琛ㄥ崟鏁版嵁
-					id: '',
-					videoId: '',
-					commentContent: '',
-					replyId: '',
-					replyUserId: '',
-					replyUserNickname: '',
-					replyUserAvatar: '',
-					masterCommentId: null
-				},
-				comments: [], // 璇勮鍒楄〃
-				commentsTotal: 0, // 璇勮鎬绘潯鏁�
-				commentLoading: false, // 璇勮鍔犺浇鐘舵��
-				startHidenTime: 0, // 璁板綍鍒囨崲鑷冲叾瀹冮〉闈㈢殑鏃堕棿锛岀敤浜庤绠楄棰戣鐪嬫椂闂村噺鍘荤殑閮ㄥ垎
-				totalHidenTime: 0, // 鎬诲叡闅愯棌椤甸潰鐨勬椂闂�
-				startPauseTime: 0, // 寮�濮嬫殏鍋滅殑鏃堕棿
-				totalPauseTime: 0, // 鎬诲叡鏆傚仠鐨勬椂闂�
-				playRecord: {
-					videoId: null,
-					viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
-					playAt: 0, // 杩欎釜瑙嗛鎾斁鍒板摢浜�
-					startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
-				},
-				currentVideoIsPlaying: true, // 褰撳墠瑙嗛鏄惁姝e湪鎾斁
-				isFullScreen: false,
-				windowHeight: 0,
-				currentIndex: 0, // 褰撳墠鎾斁鐨勮棰戠储寮�
-				videoList: [
+import {
+  getkitchenTypeList,
+  getkitchenVideoList,
+  savePlayRecord,
+  subscribe,
+  getVideoComments,
+  addVideoComment,
+  thubmsUpComment,
+  cancelThubmsUpComment
+} from "@/api/video.js";
+import {
+  changeCollect
+} from "@/api/collect.js";
+export default {
+  computed: {
+    hasPlayTime() {
+      return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
+    }
+  },
+  data() {
+    return {
+      showLeft:false,
+      currentCategort: '',
+      categoryList: [],
+      currentImgIndex: 0, // 鎾斁鍒扮鍑犲紶鍥�--绱㈠紩
+      currentTime: 0,
+      formartDuration: [],
+      duration: 0,
+      startX: 0,
+      progress: 0, // 瑙嗛杩涘害
+      startProgress: 0, // 寮�濮嬫粦鍔ㄦ椂鐨勮繘搴�
+      barLeft: 0, // 杩涘害鏉″乏杈圭晫浣嶇疆
+      barWidth: 0, // 杩涘害鏉″搴�
+      isDragging: false, // 鏄惁姝e湪鎷栧姩
+      processHidenTimer: null, // 杩涘害鏉¢殣钘忓畾鏃跺櫒
+      showProcess: false, // 鏄惁鏄剧ず杩涘害鏉�
+      videoNoMore: false, // 鏄惁杩樻湁鏇村瑙嗛
+      commentNoMore: false, // 鏄惁杩樻湁鏇村璇勮
+      commentQuery: {
+        pageNumber: 1,
+        pageSize: 5,
+        videoId: '',
+        masterCommentId: ''
+      },
+      replyCommentQuery: {
+        pageNumber: 1,
+        pageSize: 5,
+        videoId: '',
+        masterCommentId: ''
+      },
+      commentForm: { // 璇勮琛ㄥ崟鏁版嵁
+        id: '',
+        videoId: '',
+        commentContent: '',
+        replyId: '',
+        replyUserId: '',
+        replyUserNickname: '',
+        replyUserAvatar: '',
+        masterCommentId: null
+      },
+      comments: [], // 璇勮鍒楄〃
+      commentsTotal: 0, // 璇勮鎬绘潯鏁�
+      commentLoading: false, // 璇勮鍔犺浇鐘舵��
+      startHidenTime: 0, // 璁板綍鍒囨崲鑷冲叾瀹冮〉闈㈢殑鏃堕棿锛岀敤浜庤绠楄棰戣鐪嬫椂闂村噺鍘荤殑閮ㄥ垎
+      totalHidenTime: 0, // 鎬诲叡闅愯棌椤甸潰鐨勬椂闂�
+      startPauseTime: 0, // 寮�濮嬫殏鍋滅殑鏃堕棿
+      totalPauseTime: 0, // 鎬诲叡鏆傚仠鐨勬椂闂�
+      playRecord: {
+        videoId: null,
+        viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
+        playAt: 0, // 杩欎釜瑙嗛鎾斁鍒板摢浜�
+        startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
+      },
+      currentVideoIsPlaying: true,
+      isFullScreen: false,
+      windowHeight: 0,
+      currentIndex: 0, // 褰撳墠鎾斁鐨勮棰戠储寮�
+      videoLoading: false, // 瑙嗛缂撳啿涓�// 褰撳墠瑙嗛鏄惁姝e湪鎾斁
+      videoList: [], // 瑙嗛鍒楄〃鏁版嵁
+      videoBufferOffset: 0.1 ,// 瑙嗛棰勫姞杞藉弬鏁�
+      videoLiveOffset: 2, // 淇濈暀褰撳墠瑙嗛鍓嶅悗鍚勫灏戜釜瑙嗛涓婁笅鏂�
+      touchXY: {  // 鐩戝惉宸︽粦鍙虫粦
+        startX: 0,
+        endX: 0,
+        startY: 0,
+        endY: 0
+      },
 
-				], // 瑙嗛鍒楄〃鏁版嵁
-				videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚�
-				loading: false, // 鏄惁姝e湪鍔犺浇
-				videoQuery: {
-					pageNumber: 1,
-					pageSize: 6,
-					videoFrom: 'recommend',
-					videoType: 'cook'
-				}
-			}
-		},
-		onShow() {
-			this.showDrawer('showLeft')
-			this.loadVideos()
-			// 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
-			if (this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
-				const duration = Date.now() - this.startHidenTime
-				this.totalHidenTime += duration
-			}
-		},
-		onHide() {
-			this.startHidenTime = Date.now()
-		},
-		onLoad() {
-			this.getKitchenTypeList();
-			this.loadVideos();
-		},
-		onReady() {
-			// 鍒濆鍖栬棰戜笂涓嬫枃
-			this.initVideoContexts();
-		},
-		methods: {
-			async chooseCategory(id) {
-				if (this.currentCategort === id) return
-				this.currentCategort = id
-				this.videoQuery.pageNumber = 1,
-				this.videoQuery.kitchenTypeId = id;
-				await this.loadVideos()
-			},
-			getKitchenTypeList() {
-				getkitchenTypeList().then(res => {
-					this.categoryList = res.data.data
-				})
-			},
-			showDrawer(e) {
-				this.$refs[e].open()
-			},
-			// 鍏抽棴绐楀彛
-			closeDrawer(e) {
-				this.$refs[e].close()
-			},
-			// 鎶藉眽鐘舵�佸彂鐢熷彉鍖栬Е鍙�
-			change(e, type) {
-				this[type] = e
-			},
-			// 杞挱鍥惧彉鍖�
-			imgChange(e) {
-				this.currentImgIndex = e.detail.current;
-			},
-			// 鑾峰彇杩涘害鏉$殑浣嶇疆鍜屽昂瀵�
-			getBarRect() {
-				const query = uni.createSelectorQuery().in(this);
-				query.select('#progressBar').boundingClientRect(rect => {
-					if (rect) {
-						this.barLeft = rect.left;
-						this.barWidth = rect.width;
-					}
-				}).exec();
-			},
-			// 璺宠浆涓汉涓婚〉
-			jumpToHomePage(authorId) {
-				uni.navigateTo({
-					url: "/pages/video/home-page?authorId=" + authorId
-				})
-			},
-			// 鍙栨秷鐐硅禐
-			async cancelThumbsUp(id, commentIndex, replyIndex) {
-				const data = {
-					refId: id,
-					thumbsUpType: 'video_comment'
-				}
-				cancelThubmsUpComment(data).then(res => {
-					if (replyIndex != null) {
-						this.comments[commentIndex].replies[replyIndex].hasThumbsUp = false;
-						this.comments[commentIndex].replies[replyIndex].thumbsUpNum -= 1;
-					} else {
-						this.comments[commentIndex].hasThumbsUp = false;
-						this.comments[commentIndex].thumbsUpNum -= 1;
-					}
-				})
-			},
-			// 璇勮鐐硅禐
-			async thubmsUp(id, commentIndex, replyIndex) {
-				const data = {
-					refId: id,
-					thumbsUpType: 'video_comment'
-				}
-				thubmsUpComment(data).then(res => {
-					if (replyIndex != null) {
-						this.comments[commentIndex].replies[replyIndex].hasThumbsUp = true;
-						this.comments[commentIndex].replies[replyIndex].thumbsUpNum += 1;
-					} else {
-						this.comments[commentIndex].hasThumbsUp = true;
-						this.comments[commentIndex].thumbsUpNum += 1;
-					}
-				})
-			},
-			// 鍔犺浇涓嬩竴椤靛洖澶�
-			loadNextPageReply(index) {
-				this.replyCommentQuery.pageNumber++;
-				getVideoComments(this.replyCommentQuery).then(res => {
-					this.comments[index].replies = [
-						...this.comments[index].replies,
-						...res.data.data.filter(
-							(newItem) => !this.comments[index].replies.some((oldItem) => oldItem.id === newItem
-								.id)
-						),
-					];
-				})
-			},
-			// 鏀惰捣鍥炲
-			retractReplyComment(index) {
-				this.comments[index].expandReply = false;
-				this.comments[index].replies = [];
-			},
-			// 鍔犺浇鍥炲
-			loadRepliesPage(comment, index) {
-				this.replyCommentQuery.pageNumber = 1;
-				this.replyCommentQuery.masterCommentId = comment.id
-				getVideoComments(this.replyCommentQuery).then(res => {
-					this.comments[index].replies = res.data.data;
-					this.comments[index].expandReply = true;
-				})
-			},
-			resetCommentForm() {
-				const videoId = this.commentForm.videoId;
-				this.commentForm = { // 璇勮琛ㄥ崟鏁版嵁
-					id: '',
-					videoId: videoId,
-					commentContent: '',
-					replyId: '',
-					replyUserId: '',
-					replyUserNickname: '',
-					replyUserAvatar: '',
-					masterCommentId: null
-				}
-			},
-			// 鍙栨秷鍥炲
-			cancelReply() {
-				this.resetCommentForm()
-			},
-			// 鎵撳紑鍥炲妗�
-			openReply(comment, reply = null) {
-				if (reply) {
-					comment = reply
-				}
-				this.commentForm.masterCommentId = comment.masterCommentId ? comment.masterCommentId : comment.id;
-				this.commentForm.replyId = comment.id;
-				this.commentForm.replyUserId = comment.userId;
-				this.commentForm.replyUserNickname = comment.userNickname;
-				this.commentForm.replyUserAvatar = comment.userAvatar;
-				// 鑷姩鑱氱劍杈撳叆妗�
-				this.$nextTick(() => {
-					const input = this.$refs.commentInput;
-					if (input) input.focus();
-				});
-			},
-			// 杩涘害鏉℃椂闂存牸寮忓寲 (00:00)
-			sliderFormatTime(seconds) {
-				const mins = Math.floor(seconds / 60);
-				const secs = Math.floor(seconds % 60);
-				return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
-			},
-			// 鏍煎紡鍖栨椂闂�
-			formatTime(time) {
-				const date = new Date(time);
-				const now = new Date();
-				const diff = Math.floor((now - date) / 1000); // 绉�
+      videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚�
+      loading: false, // 鏄惁姝e湪鍔犺浇
+      videoQuery: {
+        pageNumber: 1,
+        pageSize: 6,
+        videoFrom: 'recommend',
+        videoType: 'cook'
+      }
+    }
+  },
+  onShow() {
+    this.showDrawer('showLeft')
+    this.loadVideos()
+    // 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
+    if (this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
+      const duration = Date.now() - this.startHidenTime
+      this.totalHidenTime += duration
+    }
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+  },
+  onLoad() {
+    this.getKitchenTypeList();
+    this.loadVideos();
+  },
+  onReady() {
+    // 鍒濆鍖栬棰戜笂涓嬫枃
+    this.initVideoContexts();
+  },
+  methods: {
+    async chooseCategory(id) {
+      if (this.currentCategort === id) return
+      this.currentCategort = id
+      this.videoQuery.pageNumber = 1
+          this.videoQuery.kitchenTypeId = id;
+      this.videoLoading = false;
+	  this.currentIndex = 0;
+	  
+      await this.loadVideos()
+    },
+    getKitchenTypeList() {
+      getkitchenTypeList().then(res => {
+        this.categoryList = res.data.data
+      })
+    },
+    showDrawer(e) {
+      this.$refs[e].open()
+    },
+    // 鍏抽棴绐楀彛
+    closeDrawer(e) {
+      this.$refs[e].close()
+    },
+    // 鎶藉眽鐘舵�佸彂鐢熷彉鍖栬Е鍙�
+    change(e, type) {
+      this[type] = e
+    },
+    // 杞挱鍥惧彉鍖�
+    imgChange(e) {
+      this.currentImgIndex = e.detail.current;
+    },
+    // 鑾峰彇杩涘害鏉$殑浣嶇疆鍜屽昂瀵�
+    getBarRect() {
+      const query = uni.createSelectorQuery().in(this);
+      query.select('#progressBar').boundingClientRect(rect => {
+        if (rect) {
+          this.barLeft = rect.left;
+          this.barWidth = rect.width;
+        }
+      }).exec();
+    },
+    // 璺宠浆涓汉涓婚〉
+    jumpToHomePage(authorId) {
+      uni.navigateTo({
+        url: "/pages/video/home-page?authorId=" + authorId
+      })
+    },
+    // 鍙栨秷鐐硅禐
+    async cancelThumbsUp(id, commentIndex, replyIndex) {
+      const data = {
+        refId: id,
+        thumbsUpType: 'video_comment'
+      }
+      cancelThubmsUpComment(data).then(res => {
+        if (replyIndex != null) {
+          this.comments[commentIndex].replies[replyIndex].hasThumbsUp = false;
+          this.comments[commentIndex].replies[replyIndex].thumbsUpNum -= 1;
+        } else {
+          this.comments[commentIndex].hasThumbsUp = false;
+          this.comments[commentIndex].thumbsUpNum -= 1;
+        }
+      })
+    },
+    // 璇勮鐐硅禐
+    async thubmsUp(id, commentIndex, replyIndex) {
+      const data = {
+        refId: id,
+        thumbsUpType: 'video_comment'
+      }
+      thubmsUpComment(data).then(res => {
+        if (replyIndex != null) {
+          this.comments[commentIndex].replies[replyIndex].hasThumbsUp = true;
+          this.comments[commentIndex].replies[replyIndex].thumbsUpNum += 1;
+        } else {
+          this.comments[commentIndex].hasThumbsUp = true;
+          this.comments[commentIndex].thumbsUpNum += 1;
+        }
+      })
+    },
+    // 鍔犺浇涓嬩竴椤靛洖澶�
+    loadNextPageReply(index) {
+      this.replyCommentQuery.pageNumber++;
+      getVideoComments(this.replyCommentQuery).then(res => {
+        this.comments[index].replies = [
+          ...this.comments[index].replies,
+          ...res.data.data.filter(
+              (newItem) => !this.comments[index].replies.some((oldItem) => oldItem.id === newItem
+                  .id)
+          ),
+        ];
+      })
+    },
+    // 鏀惰捣鍥炲
+    retractReplyComment(index) {
+      this.comments[index].expandReply = false;
+      this.comments[index].replies = [];
+    },
+    // 鍔犺浇鍥炲
+    loadRepliesPage(comment, index) {
+      this.replyCommentQuery.pageNumber = 1;
+      this.replyCommentQuery.masterCommentId = comment.id
+      getVideoComments(this.replyCommentQuery).then(res => {
+        this.comments[index].replies = res.data.data;
+        this.comments[index].expandReply = true;
+      })
+    },
+    resetCommentForm() {
+      const videoId = this.commentForm.videoId;
+      this.commentForm = { // 璇勮琛ㄥ崟鏁版嵁
+        id: '',
+        videoId: videoId,
+        commentContent: '',
+        replyId: '',
+        replyUserId: '',
+        replyUserNickname: '',
+        replyUserAvatar: '',
+        masterCommentId: null
+      }
+    },
+    // 鍙栨秷鍥炲
+    cancelReply() {
+      this.resetCommentForm()
+    },
+    // 鎵撳紑鍥炲妗�
+    openReply(comment, reply = null) {
+      if (reply) {
+        comment = reply
+      }
+      this.commentForm.masterCommentId = comment.masterCommentId ? comment.masterCommentId : comment.id;
+      this.commentForm.replyId = comment.id;
+      this.commentForm.replyUserId = comment.userId;
+      this.commentForm.replyUserNickname = comment.userNickname;
+      this.commentForm.replyUserAvatar = comment.userAvatar;
+      // 鑷姩鑱氱劍杈撳叆妗�
+      this.$nextTick(() => {
+        const input = this.$refs.commentInput;
+        if (input) input.focus();
+      });
+    },
+    // 杩涘害鏉℃椂闂存牸寮忓寲 (00:00)
+    sliderFormatTime(seconds) {
+      const mins = Math.floor(seconds / 60);
+      const secs = Math.floor(seconds % 60);
+      return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
+    },
+    // 鏍煎紡鍖栨椂闂�
+    formatTime(time) {
+      const date = new Date(time);
+      const now = new Date();
+      const diff = Math.floor((now - date) / 1000); // 绉�
 
-				if (diff < 60) return '鍒氬垰';
-				if (diff < 3600) return `${Math.floor(diff / 60)}鍒嗛挓鍓峘;
-				if (diff < 86400) return `${Math.floor(diff / 3600)}灏忔椂鍓峘;
+      if (diff < 60) return '鍒氬垰';
+      if (diff < 3600) return `${Math.floor(diff / 60)}鍒嗛挓鍓峘;
+      if (diff < 86400) return `${Math.floor(diff / 3600)}灏忔椂鍓峘;
 
-				return `${date.getMonth() + 1}鏈�${date.getDate()}鏃;
-			},
-			// 鎻愪氦璇勮
-			async submitComment() {
-				if (!this.commentForm.commentContent.trim()) {
-					uni.showToast({
-						title: '璇勮鍐呭涓嶈兘涓虹┖',
-						icon: 'none'
-					});
-					return;
-				}
-				// 鍙戣〃璇勮
-				addVideoComment(this.commentForm).then(res => {
-					if (res.data.code === 200) {
-						this.resetCommentForm()
+      return `${date.getMonth() + 1}鏈�${date.getDate()}鏃;
+    },
+    // 鎻愪氦璇勮
+    async submitComment() {
+      if (!this.commentForm.commentContent.trim()) {
+        uni.showToast({
+          title: '璇勮鍐呭涓嶈兘涓虹┖',
+          icon: 'none'
+        });
+        return;
+      }
+      // 鍙戣〃璇勮
+      addVideoComment(this.commentForm).then(res => {
+        if (res.data.code === 200) {
+          this.resetCommentForm()
 
-						// 濡傛灉鏄瘎璁哄埆浜虹殑鍥炲锛岄偅涔堝氨灏嗚繖涓彂甯冨埌replies閲岄潰
-						if (res.data.data.replyId) {
-							for (const [index, item] of this.comments.entries()) {
-								if (item.id === res.data.data.replyId) {
-									item.replies.unshift(res.data.data);
-									// this.loadRepliesPage(item, index)
-									break; // 璺冲嚭寰幆
-								}
-							}
-						} else {
-							this.comments.unshift(res.data.data);
-						}
-						console.log("鏂板鍚�", this.comments);
-						uni.showToast({
-							title: '璇勮鎴愬姛'
-						});
-						// 褰撳墠瑙嗛璇勮鏁板姞涓�
-						this.commentsTotal += 1;
-						this.videoList[this.currentIndex].commentNum += 1;
-					} else {
-						uni.showToast({
-							title: res.data.msg,
-							icon: 'none'
-						});
-					}
-				}).catch(() => {
-					uni.showToast({
-						title: '璇勮澶辫触',
-						icon: 'none'
-					});
-				})
-			},
-			// 鍏抽棴璇勮寮圭獥
-			closeCommentPopup() {
-				this.$refs.commentPopup.close()
-				this.showCommentPopup = false;
-				this.comments = [];
-				this.resetCommentForm()
-				this.commentQuery.pageNumber = 1;
-				this.commentNoMore = false;
-			},
-			// 涓嬫粦璇勮鍖哄姞杞借瘎璁�
-			async getCommentPage() {
-				if (this.commentNoMore) {
-					return;
-				}
-				getVideoComments(this.commentQuery).then(res => {
-					if (this.commentQuery.pageNumber === 1) {
-						this.comments = res.data.data
-					} else {
-						this.comments = [
-							...this.comments,
-							...res.data.data.filter(
-								(newItem) => !this.comments.some((oldItem) => oldItem.id === newItem.id)
-							),
-						];
-					}
-					if (res.data.data.length < this.commentQuery.pageSize) {
-						this.commentNoMore = true;
-						return;
-					}
-					this.commentQuery.pageNumber++;
-				})
-			},
-			// 鏄剧ず璇勮寮圭獥
-			async showComments(item) {
-				this.commentForm.videoId = item.id;
-				this.$refs.commentPopup.open();
-				this.commentLoading = true;
-				this.commentQuery.videoId = item.id
-				this.replyCommentQuery.videoId = item.id
-				// 棣栨鍔犺浇璇勮鍒嗛〉澶у皬澧炲姞涓�鍊嶏紝浠ヤ骇鐢熸粴鍔ㄦ潯锛屽悗缁彲瑙﹀彂
-				this.commentQuery.pageSize *= 2;
-				getVideoComments(this.commentQuery).then(res => {
-					this.commentsTotal = res.data.total;
-					this.comments = res.data.data;
-					this.commentQuery.pageNumber += 2;
-					this.commentQuery.pageSize /= 2;
-				}).catch(() => {
-					uni.showToast({
-						title: '鑾峰彇璇勮澶辫触',
-						icon: 'none'
-					});
-				}).finally(() => {
-					this.commentLoading = false;
-				})
-			},
-			// 鍏虫敞浣滆��
-			subscribeAuth(index, authorId) {
-				this.videoList.forEach(video => {
-					if (video.authorId === authorId) {
-						video.subscribeThisAuthor = true
-					}
-				})
-				subscribe(authorId).then(res => {
-					if (res.data.code === 200) {
-						uni.showToast({
-							title: '鍏虫敞鎴愬姛~',
-							icon: 'none'
-						});
-					} else {
-						this.videoList.forEach(video => {
-							if (video.authorId === authorId) {
-								video.subscribeThisAuthor = false
-							}
-						})
-					}
-				})
-			},
-			// 鍒濆鍖栬棰戜笂涓嬫枃
-			initVideoContexts() {
-				this.videoContexts = this.videoList.map((_, index) => {
-					let videoContent = uni.createVideoContext(`video${index}`, this);
-					return videoContent;
-				});
-			},
+          // 濡傛灉鏄瘎璁哄埆浜虹殑鍥炲锛岄偅涔堝氨灏嗚繖涓彂甯冨埌replies閲岄潰
+          if (res.data.data.replyId) {
+            for (const [index, item] of this.comments.entries()) {
+              if (item.id === res.data.data.replyId) {
+                item.replies.unshift(res.data.data);
+                // this.loadRepliesPage(item, index)
+                break; // 璺冲嚭寰幆
+              }
+            }
+          } else {
+            this.comments.unshift(res.data.data);
+          }
+          console.log("鏂板鍚�", this.comments);
+          uni.showToast({
+            title: '璇勮鎴愬姛'
+          });
+          // 褰撳墠瑙嗛璇勮鏁板姞涓�
+          this.commentsTotal += 1;
+          this.videoList[this.currentIndex].commentNum += 1;
+        } else {
+          uni.showToast({
+            title: res.data.msg,
+            icon: 'none'
+          });
+        }
+      }).catch(() => {
+        uni.showToast({
+          title: '璇勮澶辫触',
+          icon: 'none'
+        });
+      })
+    },
+    // 鍏抽棴璇勮寮圭獥
+    closeCommentPopup() {
+      this.$refs.commentPopup.close()
+      this.showCommentPopup = false;
+      this.comments = [];
+      this.resetCommentForm()
+      this.commentQuery.pageNumber = 1;
+      this.commentNoMore = false;
+    },
+    // 涓嬫粦璇勮鍖哄姞杞借瘎璁�
+    async getCommentPage() {
+      if (this.commentNoMore) {
+        return;
+      }
+      getVideoComments(this.commentQuery).then(res => {
+        if (this.commentQuery.pageNumber === 1) {
+          this.comments = res.data.data
+        } else {
+          this.comments = [
+            ...this.comments,
+            ...res.data.data.filter(
+                (newItem) => !this.comments.some((oldItem) => oldItem.id === newItem.id)
+            ),
+          ];
+        }
+        if (res.data.data.length < this.commentQuery.pageSize) {
+          this.commentNoMore = true;
+          return;
+        }
+        this.commentQuery.pageNumber++;
+      })
+    },
+    // 鏄剧ず璇勮寮圭獥
+    async showComments(item) {
+      this.commentForm.videoId = item.id;
+      this.$refs.commentPopup.open();
+      this.commentLoading = true;
+      this.commentQuery.videoId = item.id
+      this.replyCommentQuery.videoId = item.id
+      // 棣栨鍔犺浇璇勮鍒嗛〉澶у皬澧炲姞涓�鍊嶏紝浠ヤ骇鐢熸粴鍔ㄦ潯锛屽悗缁彲瑙﹀彂
+      this.commentQuery.pageSize *= 2;
+      getVideoComments(this.commentQuery).then(res => {
+        this.commentsTotal = res.data.total;
+        this.comments = res.data.data;
+        this.commentQuery.pageNumber += 2;
+        this.commentQuery.pageSize /= 2;
+      }).catch(() => {
+        uni.showToast({
+          title: '鑾峰彇璇勮澶辫触',
+          icon: 'none'
+        });
+      }).finally(() => {
+        this.commentLoading = false;
+      })
+    },
+    // 鍏虫敞浣滆��
+    subscribeAuth(index, authorId) {
+      this.videoList.forEach(video => {
+        if (video.authorId === authorId) {
+          video.subscribeThisAuthor = true
+        }
+      })
+      subscribe(authorId).then(res => {
+        if (res.data.code === 200) {
+          uni.showToast({
+            title: '鍏虫敞鎴愬姛~',
+            icon: 'none'
+          });
+        } else {
+          this.videoList.forEach(video => {
+            if (video.authorId === authorId) {
+              video.subscribeThisAuthor = false
+            }
+          })
+        }
+      })
+    },
+    // 鍒濆鍖栬棰戜笂涓嬫枃
+    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)
-				if (this.videoQuery.pageNumber == 1) {
+    // 鍔犺浇瑙嗛鏁版嵁
+    async loadVideos() {
+      console.log(this.loading, this.videoNoMore,this.videoQuery)
+      if (this.videoQuery.pageNumber == 1) {
 
-				} else if (this.loading || this.videoNoMore) return;
-				this.loading = true;
+      } else if (this.loading || this.videoNoMore) return;
+      this.loading = true;
 
-				getkitchenVideoList(this.videoQuery).then(res => {
-					console.log(res, "瑙嗛鏁版嵁");
-					if (this.videoQuery.pageNumber === 1) {
-						this.videoList = res.data.data;
-					} else {
-						this.videoList = [
-							...this.videoList,
-							...res.data.data.filter(
-								(newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
-							),
-						];
-					}
-					this.$nextTick(() => {
-						this.initVideoContexts();
-					});
-					this.loading = false;
-					if (res.data.data.length < this.videoQuery.pageSize) {
-						this.videoNoMore = true;
-						return;
-					}
-					this.videoQuery.pageNumber++;
+      getkitchenVideoList(this.videoQuery).then(res => {
+        console.log(res, "瑙嗛鏁版嵁");
+        if (this.videoQuery.pageNumber === 1) {
+          this.videoList = res.data.data;
+        } else {
+          this.videoList = [
+            ...this.videoList,
+            ...res.data.data.filter(
+                (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
+            ),
+          ];
+        }
+        this.$nextTick(() => {
+          this.initVideoContexts();
+        });
+        this.loading = false;
+        if (res.data.data.length < this.videoQuery.pageSize) {
+          this.videoNoMore = true;
+          return;
+        }
+        this.videoQuery.pageNumber++;
 
-				})
-			},
+      })
+    },
 
-			// 婊戝姩鍒囨崲瑙嗛
-			onSwiperChange(e) {
-				// 濡傛灉瑙嗛澶勪簬鏆傚仠鐘舵�佸線涓嬪埛瑙嗛锛岄偅涔堥渶瑕佸啀璁$畻涓�娆℃殏鍋滄椂闂�
-				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;
+    // 婊戝姩鍒囨崲瑙嗛
+    onSwiperChange(e) {
+      // 濡傛灉瑙嗛澶勪簬鏆傚仠鐘舵�佸線涓嬪埛瑙嗛锛岄偅涔堥渶瑕佸啀璁$畻涓�娆℃殏鍋滄椂闂�
+      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;
 
-				// 鏆傚仠涓婁竴涓棰�
-				if (this.videoContexts[oldIndex]) {
-					this.videoContexts[oldIndex].pause();
-				}
+      // 鏆傚仠涓婁竴涓棰�
+      if (this.videoContexts[oldIndex]) {
+        this.videoContexts[oldIndex].pause();
+      }
 
-				this.startPauseTime = 0;
-				// 鎾斁褰撳墠瑙嗛
-				if (this.videoContexts[this.currentIndex]) {
-					this.videoContexts[this.currentIndex].play();
-				}
-			},
+      this.startPauseTime = 0;
+      // 鎾斁褰撳墠瑙嗛
+      if (this.videoContexts[this.currentIndex]) {
+        this.videoContexts[this.currentIndex].play();
+      }
+    },
 
-			// 鏀惰棌/鍙栨秷鏀惰棌
-			toggleCollect(item, index) {
-				let data = {
-					refId: item.id,
-					collectType: 'video'
-				}
-				const beforeCollected = item.collected
-				const beforeCollectNum = item.collectNum
-				if (item.collected) {
-					this.videoList[index].collected = false
-					this.videoList[index].collectNum -= 1
-				} else {
-					this.videoList[index].collected = true
-					this.videoList[index].collectNum += 1
-				}
-				changeCollect(data).then(res => {
-					if (res.data.code !== 200) {
-						this.videoList[index].collected = beforeCollected
-						this.videoList[index].collectNum = beforeCollectNum
-					}
-				})
-			},
-			// 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
-			togglePlay(index) {
-				console.log("鍗曞嚮瑙嗛", index, this.videoContexts);
-				if (this.currentVideoIsPlaying) {
-					this.videoContexts[index].pause();
-				} else {
-					this.videoContexts[index].play();
-				}
-			},
-			// 瑙嗛鎾斁浜嬩欢
-			onPlay(id, index) {
-				this.getBarRect()
-				this.progress = 0
-				console.log(id, index, "瑙﹀彂鎾斁");
-				if (index === this.currentIndex) {
-					this.currentVideoIsPlaying = true;
-				} else {
-					this.currentVideoIsPlaying = false;
-					return
-				}
-				this.playRecord.videoId = id;
-				// 娌″垵濮嬪寲鎵嶈祴鍊硷紝鍥犱负涓�涓棰戦噸澶嶆挱鏀緊nPlay浼氶噸澶嶈Е鍙�
-				if (this.playRecord.startPlayTime === 0) {
-					this.playRecord.startPlayTime = Date.now();
-				}
-				if (this.startPauseTime !== 0) {
-					const duration = Date.now() - this.startPauseTime
-					this.totalPauseTime += duration
-				}
-			},
+    // 鏀惰棌/鍙栨秷鏀惰棌
+    toggleCollect(item, index) {
+      let data = {
+        refId: item.id,
+        collectType: 'video'
+      }
+      const beforeCollected = item.collected
+      const beforeCollectNum = item.collectNum
+      if (item.collected) {
+        this.videoList[index].collected = false
+        this.videoList[index].collectNum -= 1
+      } else {
+        this.videoList[index].collected = true
+        this.videoList[index].collectNum += 1
+      }
+      changeCollect(data).then(res => {
+        if (res.data.code !== 200) {
+          this.videoList[index].collected = beforeCollected
+          this.videoList[index].collectNum = beforeCollectNum
+        }
+      })
+    },
+    // 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
+    togglePlay(index) {
+      console.log("鍗曞嚮瑙嗛", index);
+      const videoContext = uni.createVideoContext(`video${index}`, this);
+      if(this.currentVideoIsPlaying) {
+        videoContext.pause();
+      } else {
+        videoContext.play();
+      }
+    },
+    // 瑙嗛鎾斁浜嬩欢
+    onPlay(id, index) {
+      if(index === this.currentIndex) {
+        this.currentVideoIsPlaying = true;
+        if(! this.duration) {
+          // 璁剧疆褰撳墠鎾斁瑙嗛鐨勬�绘椂闀�
+          this.duration = this.videoList[this.currentIndex].videoDuration;
+          this.formartDuration = this.sliderFormatTime(this.duration);
+        }
+      } else {
+        return
+      }
+      this.getBarRect()
+      this.progress = 0
+      console.log(id, index, "瑙﹀彂鎾斁");
+      this.playRecord.videoId = id;
+      // 娌″垵濮嬪寲鎵嶈祴鍊硷紝鍥犱负涓�涓棰戦噸澶嶆挱鏀緊nPlay浼氶噸澶嶈Е鍙�
+      if(this.playRecord.startPlayTime === 0) {
+        this.playRecord.startPlayTime = Date.now();
+      }
+      if(this.startPauseTime !== 0) {
+        const duration = Date.now() - this.startPauseTime
+        this.totalPauseTime += duration
+      }
+      this.videoLoading = false
+    },
 
-			// 瑙嗛鏆傚仠浜嬩欢
-			onPause(index) {
-				console.log(index, "瑙﹀彂鏆傚仠");
-				if (index === this.currentIndex) {
-					this.currentVideoIsPlaying = false;
-				} else {
-					this.currentVideoIsPlaying = true;
-					return
-				}
-				this.startPauseTime = Date.now()
-			},
-			// 瑙嗛缁撴潫浜嬩欢
-			onEnded(index) {
-				// this.currentVideoIsPlaying = false;
-			},
+    // 瑙嗛鏆傚仠浜嬩欢
+    onPause(index) {
+      console.log(index, "瑙﹀彂鏆傚仠");
+      if (index === this.currentIndex) {
+        this.currentVideoIsPlaying = false;
+      } else {
+        this.currentVideoIsPlaying = true;
+        return
+      }
+      this.startPauseTime = Date.now()
+    },
+    // 瑙嗛缁撴潫浜嬩欢
+    onEnded(index) {
+      // this.currentVideoIsPlaying = false;
+    },
 
-			// 璁板綍鎾斁鏃堕暱
-			onTimeUpdate(e) {
-				this.playRecord.playAt = e.detail.currentTime;
+    // 璁板綍鎾斁鏃堕暱
+    onTimeUpdate(e) {
+      this.videoLoading = false
+      this.playRecord.playAt = e.detail.currentTime;
 
-				this.currentTime = e.detail.currentTime;
-				this.progress = (e.detail.currentTime / this.duration) * 100
-			},
-			// 瑙︽懜寮�濮�
-			handleTouchStart(e) {
-				this.isDragging = true;
-				this.showProcess = true;
-				this.startProgress = this.progress; // 璁板綍寮�濮嬫椂鐨勮繘搴�
-				this.startX = e.touches[0].pageX;
-				console.log("璁板綍寮�濮嬫椂鐨勮繘搴�", this.startProgress);
-				this.videoContexts[this.currentIndex].pause()
-				// this.updateProgress(e);
-			},
+      this.currentTime = e.detail.currentTime;
+      this.progress = (e.detail.currentTime / this.duration) * 100
+    },
+    // 瑙︽懜寮�濮�
+    handleTouchStart(e) {
+      this.isDragging = true;
+      this.showProcess = true;
+      this.startProgress = this.progress; // 璁板綍寮�濮嬫椂鐨勮繘搴�
+      this.startX = e.touches[0].pageX;
+      console.log("璁板綍寮�濮嬫椂鐨勮繘搴�", this.startProgress);
+      this.videoContexts[this.currentIndex].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
 
-			// 瑙︽懜绉诲姩
-			handleTouchMove(e) {
-				if (!this.isDragging || !this.barWidth) return;
-				clearTimeout(this.processHidenTimer)
-				this.videoContexts[this.currentIndex].pause()
-				this.updateProgress(e);
-			},
+      // 鍒ゆ柇鏄惁鏄í鍚戞粦鍔紙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);
+    },
 
-			// 瑙︽懜缁撴潫
-			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()
-				this.processHidenTimer = setTimeout(() => {
-					this.showProcess = false;
-				}, 1000);
-			},
+    // 瑙︽懜缁撴潫
+    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()
+      this.processHidenTimer = setTimeout(() => {
+        this.showProcess = false;
+      }, 1000);
+    },
 
-			// 鏇存柊杩涘害
-			updateProgress(e) {
-				// 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣
-				const currentX = e.touches[0].pageX;
+    // 鏇存柊杩涘害
+    updateProgress(e) {
+      // 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣
+      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;
+      console.log("杩涘害澧為噺", deltaProgress);
+      // 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺
+      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;
-			},
-			// 鑾峰彇瑙嗛鎬绘椂闀�
-			onLoadedMetadata(e) {
-				this.duration = e.detail.duration;
-				this.formartDuration.push(this.sliderFormatTime(this.duration));
-				console.log("瑙嗛鎬绘椂闀�", this.duration);
-			},
-			// 淇濆瓨鎾斁璁板綍
-			async savePlayRecord() {
-				console.log(Date.now(), this.playRecord.startPlayTime, this.totalHidenTime);
+      this.progress = newProgress;
+    },
+    // 瑙嗛缂撳啿
+    videoWaiting(index) {
+      if (index === this.currentIndex) {
+        console.log("瑙嗛缂撳啿涓�傘�傘��");
+        this.videoLoading = true;
+      }
+    },
+    // 鑾峰彇瑙嗛鎬绘椂闀�
+    onLoadedMetadata(e) {
+      this.duration = e.detail.duration;
+      this.formartDuration.push(this.sliderFormatTime(this.duration));
+      console.log("瑙嗛鎬绘椂闀�", this.duration);
+    },
+    // 淇濆瓨鎾斁璁板綍
+    async savePlayRecord() {
+      console.log(Date.now(), this.playRecord.startPlayTime, this.totalHidenTime);
 
-				const data = {
-					videoId: this.playRecord.videoId,
-					viewDuration: Date.now() - this.playRecord.startPlayTime - this.totalHidenTime - this
-						.totalPauseTime,
-					playAt: this.playRecord.playAt
-				}
-				this.playRecord = {
-					videoId: null,
-					viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
-					playAt: 0, // 杩欎釜瑙嗛鎾斁鍒板摢浜�
-					startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
-				}
-				this.totalHidenTime = 0
-				this.totalPauseTime = 0
-				savePlayRecord(data)
-			}
-		}
-	}
+      const data = {
+        videoId: this.playRecord.videoId,
+        viewDuration: Date.now() - this.playRecord.startPlayTime - this.totalHidenTime - this
+            .totalPauseTime,
+        playAt: this.playRecord.playAt
+      }
+      this.playRecord = {
+        videoId: null,
+        viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
+        playAt: 0, // 杩欎釜瑙嗛鎾斁鍒板摢浜�
+        startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
+      }
+      this.totalHidenTime = 0
+      this.totalPauseTime = 0
+      savePlayRecord(data)
+    }
+  }
+}
 </script>
 
 <style scoped>
-	::v-deep .custom-tabbar {
-		border-top: none !important;
-	}
+::v-deep .custom-tabbar {
+  border-top: none !important;
+}
 
-	.video-container {
-		position: relative;
-		width: 100%;
-		height: 100vh;
-		background-color: #000;
-	}
+.video-container {
+  position: relative;
+  width: 100%;
+  height: 100vh;
+  background-color: #000;
+}
 
-	.showLeft {
-		display: flex;
-		top: 50rpx;
-		left: 0;
-		align-items: center;
-		justify-content: flex-start;
-		background-color: #b6b6b6;
-		opacity: 0.8;
-		position: fixed;
-		z-index: 999;
-		height: 70rpx;
-		width: 50rpx;
-		border-radius: 0 50% 50% 0;
-	}
+.showLeft {
+  display: flex;
+  top: 50rpx;
+  left: 0;
+  align-items: center;
+  justify-content: flex-start;
+  background-color: #b6b6b6;
+  opacity: 0.8;
+  position: fixed;
+  z-index: 999;
+  height: 70rpx;
+  width: 50rpx;
+  border-radius: 0 50% 50% 0;
+}
 
-	.video-swiper {
-		width: 100%;
-		height: calc(100% - 50px);
-	}
+.video-swiper {
+  width: 100%;
+  height: calc(100% - 50px);
+}
 
-	.video-item {
-		width: 100%;
-		height: 100%;
-		object-fit: cover;
-	}
+.video-item {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+}
 
-	.play-icon {
-		position: absolute;
-		top: 50%;
-		left: 50%;
-		transform: translate(-50%, -50%);
-		width: 45px;
-		height: 45px;
-		z-index: 10;
-		opacity: 0.6;
-	}
+.play-icon {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 45px;
+  height: 45px;
+  z-index: 10;
+  opacity: 0.6;
+}
 
-	.video-info {
-		width: 70%;
-		position: absolute;
-		bottom: 70px;
-		left: 20px;
-		color: #f8f8f8;
-		z-index: 10;
-		letter-spacing: 1px;
-	}
+.video-info {
+  width: 70%;
+  position: absolute;
+  bottom: 70px;
+  left: 20px;
+  color: #f8f8f8;
+  z-index: 10;
+  letter-spacing: 1px;
+}
 
-	.action-buttons {
-		position: absolute;
-		right: 20px;
-		bottom: 150px;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		z-index: 10;
-	}
+.action-buttons {
+  position: absolute;
+  right: 20px;
+  bottom: 150px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  z-index: 10;
+}
 
-	.action-item {
-		margin-bottom: 18px;
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		color: #fff;
-	}
+.action-item {
+  margin-bottom: 18px;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  color: #fff;
+}
 
-	.avatar-container {
-		margin-bottom: 27px;
-		position: relative;
-		/* 涓虹粷瀵瑰畾浣嶇殑瀛愬厓绱犳彁渚涘畾浣嶄笂涓嬫枃 */
-		width: 40px;
-		height: 40px;
-		display: inline-block;
-		/* 浣垮鍣ㄦ牴鎹唴瀹硅皟鏁村ぇ灏� */
-	}
+.avatar-container {
+  margin-bottom: 27px;
+  position: relative;
+  /* 涓虹粷瀵瑰畾浣嶇殑瀛愬厓绱犳彁渚涘畾浣嶄笂涓嬫枃 */
+  width: 40px;
+  height: 40px;
+  display: inline-block;
+  /* 浣垮鍣ㄦ牴鎹唴瀹硅皟鏁村ぇ灏� */
+}
 
-	.avatar {
-		border: 2px solid #FFFFFF;
-		box-sizing: border-box;
-		width: 100%;
-		height: 100%;
-		border-radius: 50%;
-		/* 鍏抽敭灞炴�э紝璁剧疆涓�50%鍗冲彲瀹炵幇鍦嗗舰 */
-		overflow: hidden;
-		/* 纭繚鍥剧墖涓嶄細瓒呭嚭鍦嗗舰杈圭晫 */
-		display: block;
-	}
+.avatar {
+  border: 2px solid #FFFFFF;
+  box-sizing: border-box;
+  width: 100%;
+  height: 100%;
+  border-radius: 50%;
+  /* 鍏抽敭灞炴�э紝璁剧疆涓�50%鍗冲彲瀹炵幇鍦嗗舰 */
+  overflow: hidden;
+  /* 纭繚鍥剧墖涓嶄細瓒呭嚭鍦嗗舰杈圭晫 */
+  display: block;
+}
 
-	.follow-icon {
-		position: absolute;
-		bottom: 0;
-		/* 瀹氫綅鍒板簳閮� */
-		left: 50%;
-		/* 姘村钩灞呬腑寮�濮嬩綅缃� */
-		transform: translate(-50%, 50%);
-		/* 姘村钩灞呬腑骞跺悜涓嬬Щ鍔�50% */
+.follow-icon {
+  position: absolute;
+  bottom: 0;
+  /* 瀹氫綅鍒板簳閮� */
+  left: 50%;
+  /* 姘村钩灞呬腑寮�濮嬩綅缃� */
+  transform: translate(-50%, 50%);
+  /* 姘村钩灞呬腑骞跺悜涓嬬Щ鍔�50% */
 
-		width: 18px;
-		/* 鍥炬爣澶у皬 */
-		height: 18px;
-		background-color: #FF5A5F;
-		/* 鍥炬爣鑳屾櫙鑹� */
-		border-radius: 50%;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-		/* 杞诲井闃村奖 */
-	}
+  width: 18px;
+  /* 鍥炬爣澶у皬 */
+  height: 18px;
+  background-color: #FF5A5F;
+  /* 鍥炬爣鑳屾櫙鑹� */
+  border-radius: 50%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+  /* 杞诲井闃村奖 */
+}
 
-	.video-tag {
-		margin-left: 5px;
-		font-weight: bold;
-		color: #eeeeee;
-	}
+.video-tag {
+  margin-left: 5px;
+  font-weight: bold;
+  color: #eeeeee;
+}
 
-	.video-author {
-		font-size: 1.2em;
-	}
+.video-author {
+  font-size: 1.2em;
+}
 
-	/* 鍟嗗搧閾炬帴鎮寕灞傛牱寮� */
-	.goods-link-warp {
-		position: absolute;
-		bottom: 160px;
-		left: 20px;
-		color: #f8f8f8;
-		z-index: 10;
-	}
+/* 鍟嗗搧閾炬帴鎮寕灞傛牱寮� */
+.goods-link-warp {
+  position: absolute;
+  bottom: 160px;
+  left: 20px;
+  color: #f8f8f8;
+  z-index: 10;
+}
 
-	.goods-link {
-		position: relative;
-		margin: 20rpx 0;
-		padding: 12rpx;
-		background-color: rgba(255, 255, 255, 0.9);
-		border-radius: 12rpx;
-		box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
-	}
+.goods-link {
+  position: relative;
+  margin: 20rpx 0;
+  padding: 12rpx;
+  background-color: rgba(255, 255, 255, 0.9);
+  border-radius: 12rpx;
+  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
+}
 
-	.goods-container {
-		display: flex;
-		align-items: center;
-	}
+.goods-container {
+  display: flex;
+  align-items: center;
+}
 
-	.goods-image {
-		width: 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-right: 20rpx;
-	}
+.goods-image {
+  width: 120rpx;
+  height: 120rpx;
+  border-radius: 8rpx;
+  margin-right: 20rpx;
+}
 
-	.goods-info {
-		flex: 1;
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-	}
+.goods-info {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+}
 
-	.goods-name {
-		font-size: 28rpx;
-		color: #333;
-		font-weight: bold;
-		display: -webkit-box;
-		-webkit-line-clamp: 2;
-		-webkit-box-orient: vertical;
-		overflow: hidden;
-		margin-bottom: 8rpx;
-	}
+.goods-name {
+  font-size: 28rpx;
+  color: #333;
+  font-weight: bold;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+  margin-bottom: 8rpx;
+}
 
-	.price-section {
-		display: flex;
-		align-items: center;
-		margin-bottom: 6rpx;
-	}
+.price-section {
+  display: flex;
+  align-items: center;
+  margin-bottom: 6rpx;
+}
 
-	.current-price {
-		font-size: 32rpx;
-		color: #ff2e4d;
-		font-weight: bold;
-		margin-right: 12rpx;
-	}
+.current-price {
+  font-size: 32rpx;
+  color: #ff2e4d;
+  font-weight: bold;
+  margin-right: 12rpx;
+}
 
-	.original-price {
-		font-size: 28rpx;
-		color: #999;
-		text-decoration: line-through;
-	}
+.original-price {
+  font-size: 28rpx;
+  color: #999;
+  text-decoration: line-through;
+}
 
-	.sales-count {
-		font-size: 22rpx;
-		color: #999;
-	}
+.sales-count {
+  font-size: 22rpx;
+  color: #999;
+}
 
-	.buy-button {
-		background: linear-gradient(to right, #ff5a5f, #ff2e4d);
-		color: white;
-		padding: 10rpx 28rpx;
-		border-radius: 20rpx;
-		font-size: 26rpx;
-		font-weight: bold;
-	}
+.buy-button {
+  background: linear-gradient(to right, #ff5a5f, #ff2e4d);
+  color: white;
+  padding: 10rpx 28rpx;
+  border-radius: 20rpx;
+  font-size: 26rpx;
+  font-weight: bold;
+}
 
-	/* 璇勮寮圭獥鏍峰紡 */
-	.comment-popup {
-		background-color: #fff;
-		border-radius: 20rpx 20rpx 0 0;
-		padding-bottom: env(safe-area-inset-bottom);
-		height: 60vh;
-		display: flex;
-		flex-direction: column;
-	}
+/* 璇勮寮圭獥鏍峰紡 */
+.comment-popup {
+  background-color: #fff;
+  border-radius: 20rpx 20rpx 0 0;
+  padding-bottom: env(safe-area-inset-bottom);
+  height: 60vh;
+  display: flex;
+  flex-direction: column;
+}
 
-	.popup-header {
-		padding: 30rpx;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		border-bottom: 1rpx solid #f5f5f5;
-	}
+.popup-header {
+  padding: 30rpx;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  border-bottom: 1rpx solid #f5f5f5;
+}
 
-	.popup-title {
-		font-size: 32rpx;
-		font-weight: bold;
-	}
+.popup-title {
+  font-size: 32rpx;
+  font-weight: bold;
+}
 
-	.close-icon {
-		/* font-size: 36rpx; */
-		color: #999;
-	}
+.close-icon {
+  /* font-size: 36rpx; */
+  color: #999;
+}
 
-	.comment-list {
-		flex: 1;
-		padding: 0rpx 20rpx 20rpx 20rpx;
-		box-sizing: border-box;
-		height: calc(60vh - 260rpx);
-	}
+.comment-list {
+  flex: 1;
+  padding: 0rpx 20rpx 20rpx 20rpx;
+  box-sizing: border-box;
+  height: calc(60vh - 260rpx);
+}
 
-	.comment-item {
-		display: flex;
-		flex-direction: column;
-		padding: 10rpx 0 20rpx 0;
-	}
+.comment-item {
+  display: flex;
+  flex-direction: column;
+  padding: 10rpx 0 20rpx 0;
+}
 
-	.comment-avatar {
-		width: 70rpx;
-		height: 70rpx;
-		border-radius: 50%;
-		margin-right: 10rpx;
-	}
+.comment-avatar {
+  width: 70rpx;
+  height: 70rpx;
+  border-radius: 50%;
+  margin-right: 10rpx;
+}
 
-	.comment-reply-avatar {
-		width: 40rpx;
-		height: 40rpx;
-		border-radius: 50%;
-		margin-right: 10rpx;
-	}
+.comment-reply-avatar {
+  width: 40rpx;
+  height: 40rpx;
+  border-radius: 50%;
+  margin-right: 10rpx;
+}
 
-	.comment-content {
-		flex: 1;
-	}
+.comment-content {
+  flex: 1;
+}
 
-	.nickname {
-		font-size: 28rpx;
-		color: #666;
-		display: block;
-		margin-bottom: 10rpx;
-	}
+.nickname {
+  font-size: 28rpx;
+  color: #666;
+  display: block;
+  margin-bottom: 10rpx;
+}
 
-	.content {
-		font-size: 28rpx;
-		color: #333;
-		display: block;
-		margin-bottom: 10rpx;
-	}
+.content {
+  font-size: 28rpx;
+  color: #333;
+  display: block;
+  margin-bottom: 10rpx;
+}
 
-	.time {
-		font-size: 28rpx;
-		color: #999;
-	}
+.time {
+  font-size: 28rpx;
+  color: #999;
+}
 
-	.comment-input-area {
-		display: flex;
-		padding: 20rpx 30rpx;
-		align-items: center;
-	}
+.comment-input-area {
+  display: flex;
+  padding: 20rpx 30rpx;
+  align-items: center;
+}
 
-	.comment-input {
-		flex: 1;
-		background-color: #fff;
-		height: 80rpx;
-		border: 1px solid #dcdcdc;
-		border-radius: 40rpx;
-		padding: 0 30rpx;
-		font-size: 28rpx;
-	}
+.comment-input {
+  flex: 1;
+  background-color: #fff;
+  height: 80rpx;
+  border: 1px solid #dcdcdc;
+  border-radius: 40rpx;
+  padding: 0 30rpx;
+  font-size: 28rpx;
+}
 
-	.placeholder {
-		color: #ccc;
-	}
+.placeholder {
+  color: #ccc;
+}
 
-	.submit-btn {
-		margin-left: 20rpx;
-		background-color: #07c160;
-		color: #fff;
-		border-radius: 40rpx;
-		padding: 0 30rpx;
-		height: 80rpx;
-		line-height: 80rpx;
-		font-size: 28rpx;
-	}
+.submit-btn {
+  margin-left: 20rpx;
+  background-color: #07c160;
+  color: #fff;
+  border-radius: 40rpx;
+  padding: 0 30rpx;
+  height: 80rpx;
+  line-height: 80rpx;
+  font-size: 28rpx;
+}
 
-	.loading,
-	.empty {
-		padding: 40rpx 0;
-		text-align: center;
-		color: #999;
-	}
+.loading,
+.empty {
+  padding: 40rpx 0;
+  text-align: center;
+  color: #999;
+}
 
-	.reply-list {
-		margin-top: 20rpx;
-		padding-left: 80rpx;
-	}
+.reply-list {
+  margin-top: 20rpx;
+  padding-left: 80rpx;
+}
 
-	.reply-op {
-		margin-top: 10rpx;
-		padding-left: 80rpx;
-		display: flex;
-		font-size: 28rpx;
-		color: #333;
-	}
+.reply-op {
+  margin-top: 10rpx;
+  padding-left: 80rpx;
+  display: flex;
+  font-size: 28rpx;
+  color: #333;
+}
 
-	.reply-op-item {
-		display: flex;
-		align-items: center;
-		height: 40rpx;
-	}
+.reply-op-item {
+  display: flex;
+  align-items: center;
+  height: 40rpx;
+}
 
-	.reply-item {
-		display: flex;
-		margin-bottom: 20rpx;
-	}
+.reply-item {
+  display: flex;
+  margin-bottom: 20rpx;
+}
 
-	.reply-content {
-		flex: 1;
-	}
+.reply-content {
+  flex: 1;
+}
 
-	.reply-to {
-		color: #576b95;
-		margin: 0 10rpx;
-		font-size: 28rpx;
-	}
+.reply-to {
+  color: #576b95;
+  margin: 0 10rpx;
+  font-size: 28rpx;
+}
 
-	.reply-title {
-		display: flex;
-		align-items: center;
-		font-size: 28rpx;
-		color: #333;
-	}
+.reply-title {
+  display: flex;
+  align-items: center;
+  font-size: 28rpx;
+  color: #333;
+}
 
-	.cancel-reply {
-		margin-left: 20rpx;
-		color: #576b95;
-		font-size: 28rpx;
-		padding: 6rpx 12rpx;
-		background: #f5f5f5;
-		border-radius: 20rpx;
-	}
+.cancel-reply {
+  margin-left: 20rpx;
+  color: #576b95;
+  font-size: 28rpx;
+  padding: 6rpx 12rpx;
+  background: #f5f5f5;
+  border-radius: 20rpx;
+}
 
-	.view-more-replies {
-		color: #576b95;
-		font-size: 28rpx;
-		padding: 10rpx 0;
-		padding-left: 80rpx;
-	}
+.view-more-replies {
+  color: #576b95;
+  font-size: 28rpx;
+  padding: 10rpx 0;
+  padding-left: 80rpx;
+}
 
-	.comment-footer,
-	.reply-footer {
-		display: flex;
-		align-items: center;
-		font-size: 28rpx;
-		color: #999;
-	}
+.comment-footer,
+.reply-footer {
+  display: flex;
+  align-items: center;
+  font-size: 28rpx;
+  color: #999;
+}
 
-	.reply-btu {
-		margin-left: 30rpx;
-	}
+.reply-btu {
+  margin-left: 30rpx;
+}
 
-	.thumbs-up {
-		position: absolute;
-		right: 20rpx;
-		font-size: 32rpx;
-		width: 120rpx;
-	}
+.thumbs-up {
+  position: absolute;
+  right: 20rpx;
+  font-size: 32rpx;
+  width: 120rpx;
+}
 
-	.textSideIcon {
-		font-size: 36rpx;
-		margin-left: 5rpx;
-	}
+.textSideIcon {
+  font-size: 36rpx;
+  margin-left: 5rpx;
+}
 
-	.line {
-		margin-right: 10rpx;
-		color: #cccccc;
-	}
+.line {
+  margin-right: 10rpx;
+  color: #cccccc;
+}
 
-	.thumbs-num {
-		margin-left: 4rpx;
-	}
+.thumbs-num {
+  margin-left: 4rpx;
+}
 
-	.container {
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		position: absolute;
-		bottom: 0;
-		width: 100%;
-	}
+.container {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+}
 
-	.progress-bar {
-		position: relative;
-		width: 100%;
-		height: 16px;
-		background-color: #eee;
-		overflow: hidden;
-	}
+.progress-bar {
+  position: relative;
+  width: 100%;
+  height: 16px;
+  background-color: #eee;
+  overflow: hidden;
+}
 
-	.progress-fill {
-		position: absolute;
-		left: 0;
-		top: 0;
-		height: 100%;
-		background-color: lightgray;
-		transition: width 0.1s;
-	}
+.progress-fill {
+  position: absolute;
+  left: 0;
+  top: 0;
+  height: 100%;
+  background-color: lightgray;
+  transition: width 0.1s;
+}
 
-	.process-warp {
-		width: 100%;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-	}
+.process-warp {
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
 
-	.progress-text {
-		margin-top: 10px;
-		font-size: 14px;
-		color: #666;
-	}
+.progress-text {
+  margin-top: 10px;
+  font-size: 14px;
+  color: #666;
+}
 
-	.swiper-box {
-		width: 100%;
-		height: 1400rpx;
-	}
+.swiper-box {
+  width: 100%;
+  height: 1400rpx;
+}
 
-	.swiper-item {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		width: 100%;
-		height: 100%;
-	}
+.swiper-item {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 100%;
+  height: 100%;
+}
 
-	.currentCategort {
-		padding: 10rpx;
-	}
+.currentCategort {
+  padding: 10rpx;
+}
 
-	.typeNavigation {
-		height: 100%;
-		padding: 10rpx;
-		box-sizing: border-box;
-	}
+.typeNavigation {
+  height: 100%;
+  padding: 10rpx;
+  box-sizing: border-box;
+}
 
-	.typeNavigationItem {
-		padding: 24rpx;
-		font-size: 28rpx;
-		color: black;
-		margin-top: 10rpx;
-		border-radius: 12rpx;
-		border: 1rpx solid gray;
-	}
+.typeNavigationItem {
+  padding: 24rpx;
+  font-size: 28rpx;
+  color: black;
+  margin-top: 10rpx;
+  border-radius: 12rpx;
+  border: 1rpx solid gray;
+}
 
-	.typeNavigationItemCheck {
-		background-color: #42b993;
-		color: #fff;
-		border: 0;
-	}
+.typeNavigationItemCheck {
+  background-color: #42b993;
+  color: #fff;
+  border: 0;
+}
 
-	.container ::v-deep .navigationLeft .uni-drawer__content {
-		height: 300rpx !important;
-		top: 100rpx !important;
-		background-color: lightpink !important;
+.container ::v-deep .navigationLeft .uni-drawer__content {
+  height: 300rpx !important;
+  top: 100rpx !important;
+  background-color: lightpink !important;
 
-	}
+}
 </style>
\ No newline at end of file

--
Gitblit v1.8.0