From 577042a77ff72607e2cd5de3a06f33a1c9d3f703 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期二, 16 九月 2025 10:54:17 +0800
Subject: [PATCH] Merge branch 'dev_fix_sub' into user_action

---
 pages/tabbar/index/home.vue | 3145 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 1,648 insertions(+), 1,497 deletions(-)

diff --git a/pages/tabbar/index/home.vue b/pages/tabbar/index/home.vue
index d51340e..23cbbdf 100644
--- a/pages/tabbar/index/home.vue
+++ b/pages/tabbar/index/home.vue
@@ -1,281 +1,269 @@
 <template>
-  <view class="video-container">
-	<top-bar selectedTitleIndex="home" textColor="white" @changeTab="topBarChange" class="topBar"></top-bar>
-	<!-- 瑙嗛鍔犺浇 -->
-	<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.updateKey"
-		@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="/pages/subComponents/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="isControls"
-				:loop="true"
-				:object-fit="item.videoFit"
-				:enable-progress-gesture="false"
-				:show-center-play-btn="false"
-				:show-progress="false"
-				:show-fullscreen-btn="isControls"
-				:show-play-btn="isControls"
-				:show-mute-btn="false"
-				class="video-item"
-				
-				@fullscreenchange="onFullscreenChange"
-				@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 class="fullscreen-btn">
-			        <image 
-			          class="fullscreen-icon" 
-			          :src="isFullScreen ? off_screen : on_screen"
-			          mode="aspectFit"
-					  @click="requestFullScreen('video'+index,item)"
-			        ></image>
-			    </view>
-			  <!-- 鑷畾涔夋帶鍒舵潯 -->
-			  <view
-				@touchstart.stop="handleTouchStart"
-				@touchmove.stop="handleTouchMove"
-				@touchend.stop="handleTouchEnd"
-				:style="{bottom: marginBottom + 'px'}"
-				class="container">
-				<!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
-				<!-- <view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }"> -->
-				<view class="process-warp">
-				  <!-- 鏄剧ず褰撳墠杩涘害 -->
-				  <view v-show="isTouch" 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="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">{{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 class="video-container">
+		<top-bar selectedTitleIndex="home" textColor="white" @changeTab="topBarChange" class="topBar"></top-bar>
+		<!-- 瑙嗛鍔犺浇 -->
+		<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.updateKey" @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="/pages/subComponents/static/video/play.png" style="width: 45px;height: 45px"
+							mode="aspectFit"></image>
 					</view>
-				  </view>
-				</swiper-item>
-			  </swiper>
-			</view>
-		</view>
+					<video v-if="index >= currentIndex - videoLiveOffset && index <= currentIndex + videoLiveOffset"
+						:id="'video' + index" :ref="'video' + index" :src="item.videoUrl" :autoplay="index === currentIndex"
+						:controls="isControls" :loop="true" :object-fit="item.videoFit" :enable-progress-gesture="false"
+						:show-center-play-btn="false" :show-progress="false" :show-fullscreen-btn="isControls"
+						:show-play-btn="isControls" :show-mute-btn="false" class="video-item"
+						@fullscreenchange="onFullscreenChange" @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 class="fullscreen-btn">
+						<image class="fullscreen-icon" :src="isFullScreen ? off_screen : on_screen" mode="aspectFit"
+							@click="requestFullScreen('video' + index, item)"></image>
+					</view>
+					<!-- 鑷畾涔夋帶鍒舵潯 -->
+					<view @touchstart.stop="handleTouchStart" @touchmove.stop="handleTouchMove"
+						@touchend.stop="handleTouchEnd" :style="{ bottom: marginBottom + 'px' }" class="container">
+						<!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� -->
+						<!-- <view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }"> -->
+						<view class="process-warp">
+							<!-- 鏄剧ず褰撳墠杩涘害 -->
+							<view v-show="isTouch" 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="video-info" :style="{bottom: marginBottom + 20 + 'px'}">
-		  <view style="width: 100%; position: relative;">
-			  <text class="video-author">@{{item.authorName}}</text>
-			  <text class="iconfont" @click="jumpToSearch" style="position: absolute;right: 42px;bottom: 50rpx;">&#xe64e;</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="goods-link-warp" :style="{ bottom: marginBottom + 55 + 'px' }" 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="action-buttons">
-		   <view class="avatar-container">
-			   <image class="avatar" @click="jumpToHomePage(item.authorId)" @touchend.stop :src="item.authorAvatar" mode="aspectFill"></image>
-			   <!-- 鍏虫敞鍥炬爣 - 浣跨敤缁濆瀹氫綅 -->
-			   <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)" @touchend.stop>
-				 <text class="iconfont">&#xe629;</text>
-			   </view>
-		   </view>
-          <view class="action-item" @click="toggleThumbsUp(item, index)">
-			<text class="iconfont" v-if="item.thumbsUp">&#xe605;</text>
-			<text class="iconfont" v-else>&#xe601;</text>
-			<text style="font-size: 10px;font-weight: lighter;">{{item.thumbsUpNum}}</text>
-          </view>
-         <view class="action-item" @click="showComments(item)">
-            <text class="iconfont">&#xe7f7;</text>
-            <text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
-          </view>
-		  <view class="action-item" @click="toggleCollect(item, index)">
-		     <text class="iconfont" v-if="item.collected">&#xeb9d;</text>
-		     <text class="iconfont" v-else>&#xe603;</text>
-		     <text style="font-size: 10px;font-weight: lighter;">{{item.collectNum}}</text>
-		   </view>
-		  <view class="action-item">
-			  <button open-type="share" class="custom-share-btn" :data-obj="item">
-			        <text class="iconfont">&#xe602;</text>
-			      </button>
-		  </view>
-        </view>
+									<!-- 鍟嗗搧淇℃伅 -->
+									<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>
 
-      </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>
+				<!-- 瑙嗛淇℃伅灞� -->
+				<view class="video-info" :style="{ bottom: marginBottom + 20 + 'px' }">
+					<view style="width: 100%; position: relative;">
+						<text class="video-author">@{{ item.authorName }}</text>
+						<text class="iconfont" @click="jumpToSearch"
+							style="position: absolute;right: 42px;bottom: 50rpx;">&#xe64e;</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>
 
-	    <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>
 
-	      <view v-else-if="comments.length === 0" class="empty">
-	        鏆傛棤璇勮锛屽揩鏉ュ彂琛ㄧ涓�鏉¤瘎璁哄惂~
-	      </view>
+				<!-- 鍙充晶浜掑姩鎸夐挳 -->
+				<view class="action-buttons">
+					<view class="avatar-container">
+						<image class="avatar" @click="jumpToHomePage(item.authorId)" @touchend.stop
+							:src="item.authorAvatar" mode="aspectFill"></image>
+						<!-- 鍏虫敞鍥炬爣 - 浣跨敤缁濆瀹氫綅 -->
+						<view v-if="!item.subscribeThisAuthor" class="follow-icon"
+							@click="subscribeAuth(index, item.authorId)" @touchend.stop>
+							<text class="iconfont">&#xe629;</text>
+						</view>
+					</view>
+					<view class="action-item" @click="toggleThumbsUp(item, index)">
+						<text class="iconfont" v-if="item.thumbsUp">&#xe605;</text>
+						<text class="iconfont" v-else>&#xe601;</text>
+						<text style="font-size: 10px;font-weight: lighter;">{{ item.thumbsUpNum }}</text>
+					</view>
+					<view class="action-item" @click="showComments(item)">
+						<text class="iconfont">&#xe7f7;</text>
+						<text style="font-size: 10px;font-weight: lighter;">{{ item.commentNum }}</text>
+					</view>
+					<view class="action-item" @click="toggleCollect(item, index)">
+						<text class="iconfont" v-if="item.collected">&#xeb9d;</text>
+						<text class="iconfont" v-else>&#xe603;</text>
+						<text style="font-size: 10px;font-weight: lighter;">{{ item.collectNum }}</text>
+					</view>
+					<view class="action-item">
+						<button open-type="share" class="custom-share-btn" :data-obj="item">
+							<text class="iconfont">&#xe602;</text>
+						</button>
+					</view>
+				</view>
 
-	      <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 v-if="userId===comment.userId">(鎴�)</text> </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>
+			</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>
+
+					<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">
+								<view @click="replyClick(comment)">
+									<text class="nickname">{{ comment.userNickname }} <text
+											v-if="userId === comment.userId">(鎴�)</text> </text>
+									<text class="content">{{ comment.commentContent }}</text>
+								</view>
+								<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" @click="replyClick(reply)">
+									<view style="display: flex;">
+										<image class="comment-reply-avatar"
+											:src="reply.replyUserAvatar || '/static/default-avatar.png'"></image>
+										<text class="nickname">{{ reply.userNickname }}<text
+												v-if="userId === comment.userId">(鎴�)</text></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
+												v-if="userId === comment.userId">(鎴�)</text></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>
-			<!-- 鍥炲鍒楄〃 -->
-			  <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 v-if="userId===comment.userId">(鎴�)</text></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 v-if="userId===comment.userId">(鎴�)</text></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-popup>
 
 
-	<custom-tabbar bgColor="#333333" selected="index" selectedTextColor="#ffffff"></custom-tabbar>
-  </view>
+		<custom-tabbar bgColor="#333333" selected="index" selectedTextColor="#ffffff"></custom-tabbar>
+
+		<ActivityPopup :show="activityPopup.show" :activityTitle="activityPopup.title"
+			:activityDesc="activityPopup.desc" :activityImage="activityPopup.image" :endTime="activityPopup.endTime"
+			:prizeActivityId="activityPopup.prizeActivityId" @close="onClosePopup" />
+	</view>
 </template>
 
 <script>
-import { 
+import {
 	getRecommendVideos,
 	savePlayRecord,
 	subscribe,
 	getVideoComments,
-	addVideoComment, 
-	thubmsUpComment, 
+	addVideoComment,
+	thubmsUpComment,
 	cancelThubmsUpComment,
 	changeThumbsUp,
-	getGoodsSimilarlyVideos
+	getGoodsSimilarlyVideos,
+	removeByIdVideoComment,
 } from "@/api/video.js";
+
+import ActivityPopup from '@/pages/ActivityPopup/ActivityPopup.vue'
+import { mapState, mapMutations } from 'vuex'
+import { setPopupRedisTime, getPopupAcitivty } from '@/api/popup.js'
 import { changeCollect } from "@/api/collect.js";
 import { saveShare, saveShareClickRecord } from "@/api/share.js";
 import { silentLogin } from "@/api/connect.js";
@@ -283,342 +271,448 @@
 import storage from "@/utils/storage.js";
 import TopBar from "@/components/TopBar.vue";
 import { nextTick } from "vue";
-
+import { getVideoCover } from "@/api/common.js"
 export default {
-  components: {TopBar},
-  computed: {
-	    hasPlayTime() {
-	      return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
-	    }
-  },
-  data() {
-    return {
-		isControls:false,
-		on_screen: require('@/pages/tabbar/index/static/on_screen.png'),
-		off_screen: require('@/pages/tabbar/index/static/off_screen.png'),
-		isFullScreen:false,
-		isTouch:false,
-		userId :'',
-		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: true, // 鏄惁鏄剧ず杩涘害鏉�
-		videoNoMore: false, // 鏄惁杩樻湁鏇村瑙嗛
-		commentNoMore: false, // 鏄惁杩樻湁鏇村璇勮
-		commentQuery: {
-			pageNumber: 1,
-			pageSize: 5,
-			videoId: '',
-			masterCommentId: ''
+	components: { TopBar, ActivityPopup },
+	computed: {
+		hasPlayTime() {
+			return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
 		},
-		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: {  // 鐩戝惉宸︽粦鍙虫粦
+		// 閿欒锛氭病鏈夌敤 ... 灞曞紑锛屽鑷� activityPopup 鏄嚱鏁�
+		...mapState(['activityPopup'])
+	},
+	data() {
+		return {
+			isControls: false,
+			on_screen: require('@/pages/tabbar/index/static/on_screen.png'),
+			off_screen: require('@/pages/tabbar/index/static/off_screen.png'),
+			isFullScreen: false,
+			isTouch: false,
+			userId: '',
+			currentImgIndex: 0, // 鎾斁鍒扮鍑犲紶鍥�--绱㈠紩
+			currentGoodsIndex: 0, // 鎾斁鍒扮鍑犱釜鍟嗗搧--绱㈠紩
+			currentTime: 0,
+			formartDuration: '',
+			duration: 0,
 			startX: 0,
-			endX: 0,
-			startY: 0,
-			endY: 0
-		},
-		loading: false,  // 鏄惁姝e湪鍔犺浇
-		videoQuery: {
-			pageNumber: 1,
-			pageSize: 10,
-			videoFrom: 'recommend'
-		},
-		goodsSimilarlyQuery: { // 鐩镐技瑙嗛鏌ヨ
-			pageNumber: 1,
-			pageSize: 10,
-			videoFrom: 'goodsSimilarly',
-			goodsIds: [],
-			currentVideoId: ''
-		},
-		similarlyVideoList: [], // 鐩镐技瑙嗛
-		similarlyNomore: false, // 鏄惁杩樻湁鏇村鐩镐技瑙嗛
-		similaryVideoIndex: 0, // 鐩镐技瑙嗛鐨勬挱鏀句綅缃�
-		similarlyLoading: false, // 鐩镐技瑙嗛鍔犺浇
-		marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
-    }
-  },
-  onShow() {
-	  if(!this.userId){
-		  this.getUserId()
-	  }
-	  // const token = storage.getAccessToken();
-	  // if (! token) {
-		 //  this.wxSilentLogin(() => {
-			//   this.loadVideos();
-		 //  })
-	  // } else {
-	  // 	  this.loadVideos();
-	  // }
-	  if (this.videoList.length < 1) {
-		  this.loading = false;
-		  this.videoNoMore = false;
-		  console.log('瑙﹀彂鏁版嵁鍔犺浇')
-		  this.loadVideos();
-	  }
-	  // 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
-	  if(this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
-		  const duration = Date.now() - this.startHidenTime
-		  this.totalHidenTime += duration
-	  }
-  },
-  onHide() {
-  	this.startHidenTime = Date.now()
-  },
-  onLoad(option) {
-
-	  console.log('-----------鍒嗕韩鍑虹殑鏁版嵁---------->',option)
-	  //澶勭悊鎵爜鍑烘潵鐨勮棰�
-	  this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
-	        // 妫�鏌ユ槸鍚﹀瓨鍦╭鍙傛暟
-			let queryParam = this.videoQuery;
-	        if (option.q) {
-	          // 鍙岄噸瑙g爜锛氬井淇″URL杩涜浜嗕袱娆$紪鐮�
-	          const decodedUrl = decodeURIComponent(decodeURIComponent(option.q));
-	          console.log('鍘熷URL:', decodedUrl);
-	          
-	          // 瑙f瀽URL涓殑鏌ヨ鍙傛暟
-	          const params = this.parseUrlParams(decodedUrl);
-	          const shareType = params.shareType; 
-	          const videoId = params.videoId;   
-	          queryParam.videoId = videoId
-	          console.log('瑙f瀽鍙傛暟:', { shareType, videoId });
-	        }
-	  const token = storage.getAccessToken();
-	  if (! token) {
-		  this.wxSilentLogin(() => {
-			  // 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
-			  if (option.userId && option.videoId) {
-				  queryParam.videoId = option.videoId
-				  // 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
-				  saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
-			  }
-			  console.log('------------------------>',queryParam)
-			  this.loadVideos(queryParam);
-		  })
-	  } else {
-		  if (option.userId && option.videoId) {
-			  queryParam.videoId = option.videoId
-		  				  // 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
-				saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
-		  }
-		  console.log('------------------------2>',queryParam)
-		this.loadVideos(queryParam);
-	  }
-  },
-  onShareAppMessage(e) {
-	const userInfo = storage.getUserInfo();
-	if(!userInfo) {
-		console.log("鏈櫥褰曚笉鑳藉垎浜�");
-		return
-	}
-	const videoInfo = e.target.dataset.obj;
-	// 淇濆瓨鍒嗕韩璁板綍
-	const data = {
-		shareType: 'video',
-		refId: videoInfo.id,
-		shareUser: userInfo.id
-	}
-	saveShare(data)
-  	return {
-  		title: videoInfo.title,
-  		path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
-  	}
-  },
-  methods: {
-	  requestFullScreen(id,item){
-		  console.log(item)
-		 
-		  const videoContext = uni.createVideoContext(id, this)
-		  // 鏍规嵁瑙嗛鏂瑰悜鍐冲畾鍏ㄥ睆鏂瑰悜
-		    const direction = this.shouldUseLandscape(item) ? 90 : 0;
-		    
-		    // 鍏堟殏鍋滆棰戯紙閬垮厤鍒囨崲鏃剁殑澹伴煶闂锛�
-		    // videoContext.pause();
-	
-		  // 璇锋眰鍏ㄥ睆
-		   videoContext.requestFullScreen({
-		     direction: direction,
-		   });
-		   
-		   
-	  },
-	  shouldUseLandscape(item) {
-		if(item.videoFit === 'cover'){
-			return false
+			progress: 0, // 瑙嗛杩涘害
+			startProgress: 0, // 寮�濮嬫粦鍔ㄦ椂鐨勮繘搴�
+			barLeft: 0, // 杩涘害鏉″乏杈圭晫浣嶇疆
+			barWidth: 0, // 杩涘害鏉″搴�
+			isDragging: false, // 鏄惁姝e湪鎷栧姩
+			processHidenTimer: null, // 杩涘害鏉¢殣钘忓畾鏃跺櫒
+			showProcess: true, // 鏄惁鏄剧ず杩涘害鏉�
+			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'
+			},
+			goodsSimilarlyQuery: { // 鐩镐技瑙嗛鏌ヨ
+				pageNumber: 1,
+				pageSize: 10,
+				videoFrom: 'goodsSimilarly',
+				goodsIds: [],
+				currentVideoId: ''
+			},
+			similarlyVideoList: [], // 鐩镐技瑙嗛
+			similarlyNomore: false, // 鏄惁杩樻湁鏇村鐩镐技瑙嗛
+			similaryVideoIndex: 0, // 鐩镐技瑙嗛鐨勬挱鏀句綅缃�
+			similarlyLoading: false, // 鐩镐技瑙嗛鍔犺浇
+			marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
 		}
-	    // 榛樿妯睆锛堟牴鎹笟鍔¢渶姹傝皟鏁达級
-	    return true;
-	  },
-	  // 鍏ㄥ睆鐘舵�佸彉鍖栦簨浠�
-	      onFullscreenChange(e) {
-	        console.log('鍏ㄥ睆鐘舵�佸彉鍖�:', e.detail.fullScreen)
-			if(e.detail.fullScreen){
-				 this.isControls = true;
-			}else{
+	},
+	onShow() {
+
+		this.openActivityPopup()
+
+
+		if (!this.userId) {
+			this.getUserId()
+		}
+		// const token = storage.getAccessToken();
+		// if (! token) {
+		//  this.wxSilentLogin(() => {
+		//   this.loadVideos();
+		//  })
+		// } else {
+		// 	  this.loadVideos();
+		// }
+		if (this.videoList.length < 1) {
+			this.loading = false;
+			this.videoNoMore = false;
+			console.log('瑙﹀彂鏁版嵁鍔犺浇')
+			this.loadVideos();
+		}
+		// 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
+		if (this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
+			const duration = Date.now() - this.startHidenTime
+			this.totalHidenTime += duration
+		}
+	},
+	onHide() {
+		this.startHidenTime = Date.now()
+	},
+	onLoad(option) {
+
+		console.log('-----------鍒嗕韩鍑虹殑鏁版嵁---------->', option)
+		//澶勭悊鎵爜鍑烘潵鐨勮棰�
+		this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
+		// 妫�鏌ユ槸鍚﹀瓨鍦╭鍙傛暟
+		let queryParam = this.videoQuery;
+		if (option.q) {
+			// 鍙岄噸瑙g爜锛氬井淇″URL杩涜浜嗕袱娆$紪鐮�
+			const decodedUrl = decodeURIComponent(decodeURIComponent(option.q));
+			console.log('鍘熷URL:', decodedUrl);
+
+			// 瑙f瀽URL涓殑鏌ヨ鍙傛暟
+			const params = this.parseUrlParams(decodedUrl);
+			const shareType = params.shareType;
+			const videoId = params.videoId;
+			queryParam.videoId = videoId
+			console.log('瑙f瀽鍙傛暟:', { shareType, videoId });
+		}
+		const token = storage.getAccessToken();
+		if (!token) {
+			this.wxSilentLogin(() => {
+				// 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
+				if (option.userId && option.videoId) {
+					queryParam.videoId = option.videoId
+					// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+					saveShareClickRecord({ refId: option.videoId, shareUserId: option.userId })
+				}
+				console.log('------------------------>', queryParam)
+				this.loadVideos(queryParam);
+			})
+		} else {
+			if (option.userId && option.videoId) {
+				queryParam.videoId = option.videoId
+				// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
+				saveShareClickRecord({ refId: option.videoId, shareUserId: option.userId })
+			}
+			console.log('------------------------2>', queryParam)
+			this.loadVideos(queryParam);
+		}
+	},
+	onShareAppMessage(e) {
+		const userInfo = storage.getUserInfo();
+		if (!userInfo) {
+			console.log("鏈櫥褰曚笉鑳藉垎浜�");
+			return
+		}
+		const videoInfo = e.target.dataset.obj;
+		// 淇濆瓨鍒嗕韩璁板綍
+		const data = {
+			shareType: 'video',
+			refId: videoInfo.id,
+			shareUser: userInfo.id
+		}
+		saveShare(data)
+		// getVideoCover(videoInfo.id).then(res =>{
+		// 	if(res.statusCode === 200){
+		// 		imageUrl = res.data.data
+		// 		console.log(imageUrl)
+		// 		return {
+		// 			title: videoInfo.title,
+		// 			path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
+		// 			imageUrl: imageUrl
+		// 		}
+		// 	}
+
+		// })
+		console.log(videoInfo)
+		return {
+			title: videoInfo.title,
+			path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
+			imageUrl: videoInfo.coverUrl
+		}
+		// 淇濆瓨鍒嗕韩璁板綍
+	},
+	methods: {
+		async openActivityPopup() {
+			await getPopupAcitivty().then(res => {
+				if (res.statusCode === 200) {
+					let obj = res.data.data;
+					if (obj.enableStatus === 'ON') {
+						setPopupRedisTime().then(res => {
+							if (res.statusCode === 200) {
+								if (res.data.state) {
+									this.showActivityPopup({
+										title: obj.activityName,
+										desc: obj.activityDes,
+										image: obj.activityCoverUrl,
+										endTime: new Date(obj.endTime).getTime(),
+										prizeActivityId: obj.id
+									})
+								} else {
+									this.hideActivityPopup()
+								}
+
+							}
+						});
+					}
+
+				}
+			})
+
+		},
+		...mapMutations(['showActivityPopup', 'hideActivityPopup']), // 寮曞叆Vuex鐨勬柟娉�
+		onClosePopup() {
+			this.hideActivityPopup()
+		},
+		replyClick(reply) {
+
+			if (this.userId === reply.userId) {
+				let that = this;
+				uni.showModal({
+					title: '鎻愮ず',
+					content: '浣犵‘瀹氳鍒犻櫎鍚�',
+					success: function (res) {
+						if (res.confirm) {
+							console.log('纭畾');
+							//璋冪敤鍒犻櫎鐨勯�昏緫
+							console.log(reply)
+							removeByIdVideoComment(reply.id).then(res => {
+								const item = {
+									id: reply.videoId
+								}
+								that.commentQuery.pageNumber = 1;
+								//閲嶆柊鏇存柊璇勮
+								that.showComments(item);
+							})
+
+						} else if (res.cancel) {
+							console.log('鍙栨秷');
+						}
+					}
+				});
+
+			}
+			console.log(reply)
+		},
+		// 鎴彇瑙嗛褰撳墠甯�
+		captureVideoFrame(videoCtx) {
+			return new Promise((resolve) => {
+				videoCtx.requestFrame(() => {
+					wx.canvasToTempFilePath({
+						canvasId: 'shareCanvas',
+						success: (res) => resolve(res),
+						fail: () => resolve({ tempFilePath: '/assets/default-cover.jpg' })
+					});
+				});
+			});
+		},
+		requestFullScreen(id, item) {
+			console.log(item)
+
+			const videoContext = uni.createVideoContext(id, this)
+			// 鏍规嵁瑙嗛鏂瑰悜鍐冲畾鍏ㄥ睆鏂瑰悜
+			const direction = this.shouldUseLandscape(item) ? 90 : 0;
+
+			// 鍏堟殏鍋滆棰戯紙閬垮厤鍒囨崲鏃剁殑澹伴煶闂锛�
+			// videoContext.pause();
+
+			// 璇锋眰鍏ㄥ睆
+			videoContext.requestFullScreen({
+				direction: direction,
+			});
+
+
+		},
+		shouldUseLandscape(item) {
+			if (item.videoFit === 'cover') {
+				return false
+			}
+			// 榛樿妯睆锛堟牴鎹笟鍔¢渶姹傝皟鏁达級
+			return true;
+		},
+		// 鍏ㄥ睆鐘舵�佸彉鍖栦簨浠�
+		onFullscreenChange(e) {
+			console.log('鍏ㄥ睆鐘舵�佸彉鍖�:', e.detail.fullScreen)
+			if (e.detail.fullScreen) {
+				this.isControls = true;
+			} else {
 				this.isControls = false;
 			}
-	      },
-	  getUserId(){
-		  const {id} = uni.getStorageSync('user_info_obj_dev')
-		  this.userId = id;
-	  },
-	  // 瑙f瀽URL鍙傛暟
-    parseUrlParams(url) {
-      const params = {};
-      // 澶勭悊鍙兘瀛樺湪鐨刪ash锛堝鏋滄湁鐨勮瘽锛�
-      const cleanUrl = url.split('#')[0];
-      const queryStr = cleanUrl.split('?')[1] || '';
-      
-      queryStr.split('&').forEach(pair => {
-        const [key, value] = pair.split('=');
-        if (key) {
-          // 濡傛灉鍊煎瓨鍦紝鍒欒В鐮侊紝鍚﹀垯璁句负绌哄瓧绗︿覆
-          params[key] = value ? decodeURIComponent(value) : '';
-        }
-      });
-      
-      return params;
-    },
-	  // 鏌ヨ褰撳墠瑙嗛鐨勫叧鑱旇棰戯紙鎸備簡鍚屼竴鍟嗗搧鐨勶級
-	  async getGoodsSimilarly() {
-		  if (this.similarlyLoading || this.similarlyNomore) return Promise.resolve();;
-		  const video = this.videoList[this.currentIndex];
-		  if (video.goodsList && video.goodsList.length > 0) {
-			  this.goodsSimilarlyQuery.goodsIds = video.goodsList.map(goods => goods.goodsId);
-			  this.goodsSimilarlyQuery.currentVideoId = video.id;
-			  if (this.similarlyVideoList.length < 1) {
-				  this.similarlyVideoList.push(video); // 纭繚鍘熻棰戞槸妯悜瑙嗛鐨勭涓�涓厓绱�
-			  }
-			  this.similarlyLoading = true;
-			  return getGoodsSimilarlyVideos(this.goodsSimilarlyQuery).then(res => {
-			  			  
-			  			  this.similarlyVideoList = [
-			  			    ...this.similarlyVideoList,
-			  			    ...res.data.data.filter(
-			  				  (newItem) => !this.similarlyVideoList.some((oldItem) => oldItem.id === newItem.id)
-			  			    ),
-			  			  ];
-			  			  
-			  			  this.similarlyLoading = false;
-			  			  if(res.data.data.length < this.goodsSimilarlyQuery.pageSize) {
-			  				  this.similarlyNomore = true;
-			  				  return;
-			  			  }
-			  			  this.goodsSimilarlyQuery.pageNumber++;
-			  })
-		  }
-	  },
-	  // 璺宠浆鍒版悳绱㈤〉
-	  jumpToSearch() {
-		  uni.navigateTo({
-		  	url: '/pages/video/video-search'
-		  });
-	  },
-	  // 鍒囨崲椤堕儴瀵艰埅鏍�
-	  topBarChange(titleObj) {
-		if (titleObj.index === 'home') {
-			uni.switchTab({
-				url: titleObj.pagePath
+		},
+		getUserId() {
+			const { id } = uni.getStorageSync('user_info_obj_dev')
+			this.userId = id;
+		},
+		// 瑙f瀽URL鍙傛暟
+		parseUrlParams(url) {
+			const params = {};
+			// 澶勭悊鍙兘瀛樺湪鐨刪ash锛堝鏋滄湁鐨勮瘽锛�
+			const cleanUrl = url.split('#')[0];
+			const queryStr = cleanUrl.split('?')[1] || '';
+
+			queryStr.split('&').forEach(pair => {
+				const [key, value] = pair.split('=');
+				if (key) {
+					// 濡傛灉鍊煎瓨鍦紝鍒欒В鐮侊紝鍚﹀垯璁句负绌哄瓧绗︿覆
+					params[key] = value ? decodeURIComponent(value) : '';
+				}
 			});
-		} else {
-			uni.redirectTo({
-				url: titleObj.pagePath
-			});
-		}
-	  },
-	  // 闈欓粯鐧诲綍
-	  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()
-					});
+
+			return params;
+		},
+		// 鏌ヨ褰撳墠瑙嗛鐨勫叧鑱旇棰戯紙鎸備簡鍚屼竴鍟嗗搧鐨勶級
+		async getGoodsSimilarly() {
+			if (this.similarlyLoading || this.similarlyNomore) return Promise.resolve();;
+			const video = this.videoList[this.currentIndex];
+			if (video.goodsList && video.goodsList.length > 0) {
+				this.goodsSimilarlyQuery.goodsIds = video.goodsList.map(goods => goods.goodsId);
+				this.goodsSimilarlyQuery.currentVideoId = video.id;
+				if (this.similarlyVideoList.length < 1) {
+					this.similarlyVideoList.push(video); // 纭繚鍘熻棰戞槸妯悜瑙嗛鐨勭涓�涓厓绱�
+				}
+				this.similarlyLoading = true;
+				return getGoodsSimilarlyVideos(this.goodsSimilarlyQuery).then(res => {
+
+					this.similarlyVideoList = [
+						...this.similarlyVideoList,
+						...res.data.data.filter(
+							(newItem) => !this.similarlyVideoList.some((oldItem) => oldItem.id === newItem.id)
+						),
+					];
+
+					this.similarlyLoading = false;
+					if (res.data.data.length < this.goodsSimilarlyQuery.pageSize) {
+						this.similarlyNomore = true;
+						return;
+					}
+					this.goodsSimilarlyQuery.pageNumber++;
 				})
-		      } 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();
-	  },
+			}
+		},
+		// 璺宠浆鍒版悳绱㈤〉
+		jumpToSearch() {
+			uni.navigateTo({
+				url: '/pages/video/video-search'
+			});
+		},
+		// 鍒囨崲椤堕儴瀵艰埅鏍�
+		topBarChange(titleObj) {
+			if (titleObj.index === 'home') {
+				uni.switchTab({
+					url: titleObj.pagePath
+				});
+			} else {
+				uni.redirectTo({
+					url: titleObj.pagePath
+				});
+			}
+		},
+		// 闈欓粯鐧诲綍
+		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
+			});
+		},
+		// 鐐瑰嚮鍟嗗搧璺宠浆
+		jumpToPayVideo(videoId) {
+			uni.navigateTo({
+				url: '/pages/video/video-goods-detail-swiper?videoId=' + videoId
+			});
+		},
+		// 璺宠浆绫讳技瑙嗛椤甸潰
+		jumpToSimilarVideo(goods, currentVideoId) {
+			uni.navigateTo({
+				url: '/pages/video/video-similar?goodsId=' + goods.goodsId + '&currentVideoId=' + currentVideoId
+			});
+		},
+		// 杞挱鍥惧彉鍖�
+		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) {
 			console.log("浣滆�卛d", authorId);
@@ -633,7 +727,7 @@
 				thumbsUpType: 'video_comment'
 			}
 			cancelThubmsUpComment(data).then(res => {
-				if(replyIndex != null) {
+				if (replyIndex != null) {
 					this.comments[commentIndex].replies[replyIndex].hasThumbsUp = false;
 					this.comments[commentIndex].replies[replyIndex].thumbsUpNum -= 1;
 				} else {
@@ -649,7 +743,7 @@
 				thumbsUpType: 'video_comment'
 			}
 			thubmsUpComment(data).then(res => {
-				if(replyIndex != null) {
+				if (replyIndex != null) {
 					this.comments[commentIndex].replies[replyIndex].hasThumbsUp = true;
 					this.comments[commentIndex].replies[replyIndex].thumbsUpNum += 1;
 				} else {
@@ -663,10 +757,10 @@
 			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)
-				  ),
+					...this.comments[index].replies,
+					...res.data.data.filter(
+						(newItem) => !this.comments[index].replies.some((oldItem) => oldItem.id === newItem.id)
+					),
 				];
 			})
 		},
@@ -679,7 +773,7 @@
 		loadRepliesPage(comment, index) {
 			this.replyCommentQuery.pageNumber = 1;
 			this.replyCommentQuery.masterCommentId = comment.id
-		    getVideoComments(this.replyCommentQuery).then(res => {
+			getVideoComments(this.replyCommentQuery).then(res => {
 				this.comments[index].replies = res.data.data;
 				this.comments[index].expandReply = true;
 			})
@@ -697,113 +791,113 @@
 				masterCommentId: null
 			}
 		},
-	    // 鍙栨秷鍥炲
-	    cancelReply() {
-	        this.resetCommentForm()
-	      },
+		// 鍙栨秷鍥炲
+		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();
-		  });
+			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')}`;
+			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); // 绉�
+		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()}鏃;
-	    },
+			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()
+		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;
-	    },
+					// 濡傛灉鏄瘎璁哄埆浜虹殑鍥炲锛岄偅涔堝氨灏嗚繖涓彂甯冨埌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) {
+			if (this.commentNoMore) {
 				return;
 			}
 			getVideoComments(this.commentQuery).then(res => {
-				if(this.commentQuery.pageNumber === 1) {
+				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)
-					  ),
+						...this.comments,
+						...res.data.data.filter(
+							(newItem) => !this.comments.some((oldItem) => oldItem.id === newItem.id)
+						),
 					];
 				}
 				if (res.data.data.length < this.commentQuery.pageSize) {
@@ -813,882 +907,939 @@
 				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;
-			  console.log('------------------------>',this.comments)
-			  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) {
+
+		// 鏄剧ず璇勮寮圭獥
+		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;
+				console.log('------------------------>', this.comments)
+				this.commentQuery.pageNumber += 2;
+				this.commentQuery.pageSize /= 2;
+			}).catch(() => {
 				uni.showToast({
-				  title: '鍏虫敞鎴愬姛~',
-				  icon: 'none'
+					title: '鑾峰彇璇勮澶辫触',
+					icon: 'none'
 				});
-			} else {
-				this.videoList.forEach(video => {
-					if(video.authorId === authorId) {
-						video.subscribeThisAuthor = false
+			}).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
+						}
+					})
+				}
+			})
+		},
+
+		// 鍔犺浇瑙嗛鏁版嵁
+		async loadVideos(param) {
+			if (this.loading || this.videoNoMore) return;
+			this.loading = true;
+			if (param) {
+				getRecommendVideos(param).then(res => {
+					// 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
+					const data = res.data.data.map(item => {
+						return {
+							...item,
+							updateKey: item.id
+						}
+					})
+					if (this.videoQuery.pageNumber === 1) {
+						this.videoList = data;
+					} else {
+						this.videoList = [
+							...this.videoList,
+							...data.filter(
+								(newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
+							),
+						];
+
 					}
+					this.loading = false;
+					if (res.data.data.length < this.videoQuery.pageSize) {
+						this.videoNoMore = true;
+						return;
+					}
+					if (res.data.code === 200) {
+						this.videoQuery.pageNumber++;
+					}
+
+				})
+			} else {
+				getRecommendVideos(this.videoQuery).then(res => {
+					// 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
+					const data = res.data.data.map(item => {
+						return {
+							...item,
+							updateKey: item.id
+						}
+					})
+					if (this.videoQuery.pageNumber === 1) {
+						this.videoList = data;
+					} else {
+						this.videoList = [
+							...this.videoList,
+							...data.filter(
+								(newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
+							),
+						];
+
+					}
+					this.loading = false;
+					if (res.data.data.length < this.videoQuery.pageSize) {
+						this.videoNoMore = true;
+						return;
+					}
+					if (res.data.code === 200) {
+						this.videoQuery.pageNumber++;
+					}
+
 				})
 			}
-		})
-	  },
+		},
 
-    // 鍔犺浇瑙嗛鏁版嵁
-    async loadVideos(param) {
-      if (this.loading || this.videoNoMore) return;
-      this.loading = true;
-		if(param){
-			getRecommendVideos(param).then(res => {
-					  // 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
-					  const data = res.data.data.map(item => {
-					  	return {
-					  		...item,
-					  		updateKey: item.id
-					  	}
-					  })
-					  if (this.videoQuery.pageNumber === 1) {
-					    this.videoList = data;
-					  } else {
-						this.videoList = [
-						  ...this.videoList,
-						  ...data.filter(
-						    (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
-						  ),
-						];
-						
-					  }
-					  this.loading = false;
-					  if(res.data.data.length < this.videoQuery.pageSize) {
-						  this.videoNoMore = true;
-						  return;
-					  }
-					  this.videoQuery.pageNumber++;
-			
+		// 婊戝姩鍒囨崲瑙嗛
+		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.similaryVideoIndex !== 0) {
+				this.videoList[oldIndex] = this.similarlyVideoList[0]
+			}
+			this.similarlyVideoList = [];
+			this.similaryVideoIndex = 0;
+			this.similarlyNomore = false;
+			this.similarlyLoading = false;
+			this.goodsSimilarlyQuery = {
+				pageNumber: 1,
+				pageSize: 6,
+				videoFrom: 'goodsSimilarly',
+				goodsIds: [],
+				currentVideoId: ''
+			}
+
+			// 濡傛灉鍓╀綑瑙嗛涓嶈冻锛岃Е鍙戣姹傝幏鍙栨洿澶氳棰�
+			if (this.videoList.length - 1 < this.currentIndex + this.videoLiveOffset) {
+				this.loadVideos()
+			}
+
+		},
+
+		// 寮�濮嬭Е鎽�
+		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
+		},
+		// 缁撴潫瑙︽懜
+		async 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 (this.similaryVideoIndex !== 0) {
+						// 濡傛灉婊戝姩浜嗘í鍚戣棰戯紝閭d箞鍙虫粦灏卞仛瑙嗛鍒囨崲鑰屼笉鏄烦杞晢鍝侀〉
+						// 鍒囨崲涓嬩竴涓棰�
+						const oldIndex = this.similaryVideoIndex;
+						this.similaryVideoIndex = Math.max(this.similaryVideoIndex - 1, 0);
+						if (this.similaryVideoIndex < oldIndex) {
+							// 鎶婄珫鍚戣棰戠殑褰撳墠鎾斁浣嶇疆鏇挎崲涓烘í鍚戣棰戠殑褰撳墠绱㈠紩鍏冪礌
+							const video = this.similarlyVideoList[this.similaryVideoIndex];
+							video["updateKey"] = video.id + this.similaryVideoIndex
+							this.videoList.splice(this.currentIndex, 1, video);
+							// this.videoList[this.currentIndex] = video
+						}
+					}
+					else if (item.goodsList && item.goodsList.length > 0) {
+						this.jumpToPayVideo(item.id)
+					}
+					// else if (item.goodsList && item.goodsList.length == 1) {
+					// 	// 璺宠浆鐩稿叧鍟嗗搧瑙嗛
+					// 	this.jumpToSimilarVideo(item.goodsList[0], item.id)
+					// }
+				} else {
+					console.log('宸︽粦')
+					// if (this.similarlyVideoList.length < 1 || this.similarlyVideoList.length - this.similaryVideoIndex - 1 <= 3) {
+					// 	// 鐩稿叧瑙嗛涓虹┖鎴栬�呭墿浣欒棰戜笉瓒筹紝瑙﹀彂鍔犺浇鐩稿叧瑙嗛
+					// 	await this.getGoodsSimilarly()
+					// }
+					// // 鍒囨崲涓嬩竴涓棰�
+					// const oldIndex = this.similaryVideoIndex;
+					// this.similaryVideoIndex = Math.min(this.similaryVideoIndex + 1, this.similarlyVideoList.length - 1);
+					// if (this.similaryVideoIndex > oldIndex) {
+					// 	// 鎶婄珫鍚戣棰戠殑褰撳墠鎾斁浣嶇疆鏇挎崲涓烘í鍚戣棰戠殑褰撳墠绱㈠紩鍏冪礌
+					// 	const video = this.similarlyVideoList[this.similaryVideoIndex];
+					// 	video["updateKey"] = video.id + this.similaryVideoIndex
+					// 	this.videoList.splice(this.currentIndex, 1, video);
+					// }
+					if (item.goodsList && item.goodsList.length > 0)
+						this.jumpToSimilarVideo(item.goodsList[0], item.id)
+				}
+			}
+			// 閲嶇疆鍧愭爣
+			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
+				}
 			})
-		}else{
-	  getRecommendVideos(this.videoQuery).then(res => {
-		  // 鏂板涓�涓瓧娈电敤浜庡惊鐜椂鐨刱ey
-		  const data = res.data.data.map(item => {
-		  	return {
-		  		...item,
-		  		updateKey: item.id
-		  	}
-		  })
-		  if (this.videoQuery.pageNumber === 1) {
-		    this.videoList = data;
-		  } else {
-			this.videoList = [
-			  ...this.videoList,
-			  ...data.filter(
-			    (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
-			  ),
-			];
-			
-		  }
-		  this.loading = false;
-		  if(res.data.data.length < this.videoQuery.pageSize) {
-			  this.videoNoMore = true;
-			  return;
-		  }
-		  this.videoQuery.pageNumber++;
-
-	  })
-	  }
-    },
-
-    // 婊戝姩鍒囨崲瑙嗛
-    onSwiperChange(e) {
-		this.videoLoading = false
-		// 濡傛灉瑙嗛澶勪簬鏆傚仠鐘舵�佸線涓嬪埛瑙嗛锛岄偅涔堥渶瑕佸啀璁$畻涓�娆℃殏鍋滄椂闂�
-		if(!this.currentVideoIsPlaying) {
-			if(this.startPauseTime !== 0) {
+		},
+		// 鐐硅禐/鍙栨秷鐐硅禐
+		toggleThumbsUp(item, index) {
+			let data = {
+				refId: item.id,
+				thumbsUpType: 'video'
+			}
+			const beforeThumbsUp = item.thumbsUp
+			const beforeThumbsUpNum = item.thumbsUpNum
+			if (item.thumbsUp) {
+				this.videoList[index].thumbsUp = false
+				this.videoList[index].thumbsUpNum -= 1
+			} else {
+				this.videoList[index].thumbsUp = true
+				this.videoList[index].thumbsUpNum += 1
+			}
+			changeThumbsUp(data).then(res => {
+				if (res.data.code !== 200) {
+					this.videoList[index].thumbsUp = beforeThumbsUp
+					this.videoList[index].thumbsUpNum = beforeThumbsUpNum
+				}
+			})
+		},
+		// 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
+		togglePlay(index) {
+			console.log("鍗曞嚮瑙嗛", index);
+			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.savePlayRecord()
-		const oldIndex = this.currentIndex;
-		this.currentIndex = e.detail.current;
-		const videoContext = uni.createVideoContext(`video${oldIndex}`, this);
-		// 鏆傚仠涓婁竴涓棰�
-		videoContext.pause();
-		this.startPauseTime = 0;
+			this.videoLoading = false
+		},
 
-		// 璁剧疆褰撳墠鎾斁瑙嗛鐨勬�绘椂闀�
-		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.similaryVideoIndex !== 0) {
-			this.videoList[oldIndex] = this.similarlyVideoList[0]
-		}
-		this.similarlyVideoList = [];
-		this.similaryVideoIndex = 0;
-		this.similarlyNomore = false;
-		this.similarlyLoading = false;
-		this.goodsSimilarlyQuery = {
-			pageNumber: 1,
-			pageSize: 6,
-			videoFrom: 'goodsSimilarly',
-			goodsIds: [],
-			currentVideoId: ''
-		}
-		
-		// 濡傛灉鍓╀綑瑙嗛涓嶈冻锛岃Е鍙戣姹傝幏鍙栨洿澶氳棰�
-		if (this.videoList.length - 1 < this.currentIndex + this.videoLiveOffset) {
-			this.loadVideos()
-		}
-		
-    },
-
-	// 寮�濮嬭Е鎽�
-	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
-	},
-	// 缁撴潫瑙︽懜
-	async 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 (this.similaryVideoIndex !== 0) {
-				// 濡傛灉婊戝姩浜嗘í鍚戣棰戯紝閭d箞鍙虫粦灏卞仛瑙嗛鍒囨崲鑰屼笉鏄烦杞晢鍝侀〉
-				// 鍒囨崲涓嬩竴涓棰�
-				const oldIndex = this.similaryVideoIndex;
-				this.similaryVideoIndex = Math.max(this.similaryVideoIndex - 1, 0);
-				if (this.similaryVideoIndex < oldIndex) {
-					// 鎶婄珫鍚戣棰戠殑褰撳墠鎾斁浣嶇疆鏇挎崲涓烘í鍚戣棰戠殑褰撳墠绱㈠紩鍏冪礌
-					const video = this.similarlyVideoList[this.similaryVideoIndex];
-					video["updateKey"] = video.id + this.similaryVideoIndex
-					this.videoList.splice(this.currentIndex, 1, video);
-					// this.videoList[this.currentIndex] = video
-				}
+		// 瑙嗛鏆傚仠浜嬩欢
+		onPause(index) {
+			console.log(index, "瑙﹀彂鏆傚仠");
+			if (index === this.currentIndex) {
+				this.currentVideoIsPlaying = false;
+				this.startPauseTime = Date.now()
 			}
-			else if (item.goodsList && item.goodsList.length > 0) {
-				this.jumpToPay(item.id)
+		},
+		// 瑙嗛缁撴潫浜嬩欢
+		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.isTouch = 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 = true;
+				this.isTouch = 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;
 			}
-	      } else {
-	        console.log('宸︽粦')
-			if (this.similarlyVideoList.length < 1 || this.similarlyVideoList.length - this.similaryVideoIndex - 1 <= 3) {
-				// 鐩稿叧瑙嗛涓虹┖鎴栬�呭墿浣欒棰戜笉瓒筹紝瑙﹀彂鍔犺浇鐩稿叧瑙嗛
-				await this.getGoodsSimilarly()
+		},
+		// 鑾峰彇瑙嗛鎬绘椂闀�
+		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
 			}
-			// 鍒囨崲涓嬩竴涓棰�
-			const oldIndex = this.similaryVideoIndex;
-			this.similaryVideoIndex = Math.min(this.similaryVideoIndex + 1, this.similarlyVideoList.length - 1);
-			if (this.similaryVideoIndex > oldIndex) {
-				// 鎶婄珫鍚戣棰戠殑褰撳墠鎾斁浣嶇疆鏇挎崲涓烘í鍚戣棰戠殑褰撳墠绱㈠紩鍏冪礌
-				const video = this.similarlyVideoList[this.similaryVideoIndex];
-				video["updateKey"] = video.id + this.similaryVideoIndex
-				this.videoList.splice(this.currentIndex, 1, video);
+			this.playRecord = {
+				videoId: null,
+				viewDuration: 0, // 杩欎釜瑙嗛鎬诲叡瑙傜湅浜嗗涔�
+				playAt: 0,// 杩欎釜瑙嗛鎾斁鍒板摢浜�
+				startPlayTime: 0 // 杩欎釜瑙嗛浠庝粈涔堟椂鍊欏紑濮嬫挱鏀剧殑
 			}
-	      }
-	    }
-	    // 閲嶇疆鍧愭爣
-	    this.touchXY = {
-			startX: 0,
-			endX: 0,
-			startY: 0,
-			endY: 0
+			this.totalHidenTime = 0
+			this.totalPauseTime = 0
+			savePlayRecord(data)
 		}
-	},
-
-    // 鏀惰棌/鍙栨秷鏀惰棌
-    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
-		  }
-	  })
-    },
-	// 鐐硅禐/鍙栨秷鐐硅禐
-	toggleThumbsUp(item, index) {
-	  let data = {
-	  		  refId: item.id,
-	  		  thumbsUpType: 'video'
-	  }
-	  const beforeThumbsUp = item.thumbsUp
-	  const beforeThumbsUpNum = item.thumbsUpNum
-	  if(item.thumbsUp) {
-	  		  this.videoList[index].thumbsUp = false
-	  		  this.videoList[index].thumbsUpNum -= 1
-	  } else {
-	  		  this.videoList[index].thumbsUp = true
-	  		  this.videoList[index].thumbsUpNum += 1
-	  }
-	  changeThumbsUp(data).then(res => {
-	  		  if(res.data.code !== 200) {
-	  			  this.videoList[index].thumbsUp = beforeThumbsUp
-	  			  this.videoList[index].thumbsUpNum = beforeThumbsUpNum
-	  		  }
-	  })
-	},
-    // 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
-	togglePlay(index) {
-		console.log("鍗曞嚮瑙嗛", index);
-		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.isTouch = 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 = true;
-		  this.isTouch = 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>
-	.fullscreen-btn {
-		position: absolute;
-		right: 45rpx;
-		bottom: 70rpx;
-	  width: 60rpx;
-	  height: 60rpx;
-	  border-radius: 50%;
-	  background-color: rgba(0, 0, 0, 0.4);
-	  display: flex;
-	  justify-content: center;
-	  align-items: center;
-	  z-index: 999;
-	  backdrop-filter: blur(10rpx);
-	  border: 1rpx solid rgba(255, 255, 255, 0.2);
+.fullscreen-btn {
+	position: absolute;
+	right: 45rpx;
+	bottom: 70rpx;
+	width: 60rpx;
+	height: 60rpx;
+	border-radius: 50%;
+	background-color: rgba(0, 0, 0, 0.4);
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	z-index: 999;
+	backdrop-filter: blur(10rpx);
+	border: 1rpx solid rgba(255, 255, 255, 0.2);
 
-	}
-	/* 鍥炬爣鏍峰紡 */
-	.fullscreen-icon {
-	  width: 36rpx;
-	  height: 36rpx;
-	  opacity: 0.9;
-	}
-	::v-deep .custom-tabbar {
-		border-top: none !important;
-	}
-	.video-container {
-	  width: 100%;
-	  height: 100vh;
-	  background-color: #000;
-	}
+}
 
-	.video-swiper {
-	  width: 100%;
-	  height: calc(100% - 50px);
-	}
+/* 鍥炬爣鏍峰紡 */
+.fullscreen-icon {
+	width: 36rpx;
+	height: 36rpx;
+	opacity: 0.9;
+}
 
-	.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;
-	}
+::v-deep .custom-tabbar {
+	border-top: none !important;
+}
 
-	.video-info {
-	  width: 100%;
-	  position: absolute;
-	  bottom: 20px;
-	  left: 20px;
-	  color: #f8f8f8;
-	  z-index: 10;
-	  letter-spacing: 1px;
-	}
+.video-container {
+	width: 100%;
+	height: 100vh;
+	background-color: #000;
+}
 
-	.action-buttons {
-	  position: absolute;
-	  right: 20px;
-	  bottom: 150px;
-	  display: flex;
-	  flex-direction: column;
-	  align-items: center;
-	  z-index: 10;
-	}
+.video-swiper {
+	width: 100%;
+	height: calc(100% - 50px);
+}
 
-	.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 {
-	  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% */
+.video-item {
+	width: 100%;
+	height: 100%;
+	/* object-fit: cover; */
+}
 
-	  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;
-		bottom: 160px;
-		left: 20px;
-		color: #f8f8f8;
-		z-index: 10;
-	}
-	.goods-link {
-	  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);
-	}
+.play-icon {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	transform: translate(-50%, -50%);
+	width: 45px;
+	height: 45px;
+	z-index: 10;
+	opacity: 0.6;
+}
 
-	.goods-container {
-	  width: 100%;
-	  display: flex;
-	  align-items: center;
-	}
+.video-info {
+	width: 100%;
+	position: absolute;
+	bottom: 20px;
+	left: 20px;
+	color: #f8f8f8;
+	z-index: 10;
+	letter-spacing: 1px;
+}
 
-	.goods-image {
-	  width: 120rpx;
-	  height: 120rpx;
-	  border-radius: 8rpx;
-	  margin-right: 20rpx;
-	}
+.action-buttons {
+	position: absolute;
+	right: 20px;
+	bottom: 150px;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	z-index: 10;
+}
 
-	.goods-info {
-	  flex: 1;
-	  display: flex;
-	  flex-direction: column;
-	  justify-content: center;
-	}
+.action-item {
+	margin-bottom: 18px;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	color: #fff;
+}
 
-	.goods-name {
-	  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;
-	}
+.avatar-container {
+	margin-bottom: 27px;
+	position: relative;
+	/* 涓虹粷瀵瑰畾浣嶇殑瀛愬厓绱犳彁渚涘畾浣嶄笂涓嬫枃 */
+	width: 40px;
+	height: 40px;
+	display: inline-block;
+	/* 浣垮鍣ㄦ牴鎹唴瀹硅皟鏁村ぇ灏� */
+}
 
-	.price-section {
-	  display: flex;
-	  align-items: center;
-	  margin-bottom: 6rpx;
-	}
+.avatar {
+	border: 2px solid #FFFFFF;
+	box-sizing: border-box;
+	width: 100%;
+	height: 100%;
+	border-radius: 50%;
+	/* 鍏抽敭灞炴�э紝璁剧疆涓�50%鍗冲彲瀹炵幇鍦嗗舰 */
+	overflow: hidden;
+	/* 纭繚鍥剧墖涓嶄細瓒呭嚭鍦嗗舰杈圭晫 */
+	display: block;
+}
 
-	.current-price {
-	  font-size: 32rpx;
-	  color: #ff2e4d;
-	  font-weight: bold;
-	  margin-right: 12rpx;
-	}
+.follow-icon {
+	position: absolute;
+	bottom: 0;
+	/* 瀹氫綅鍒板簳閮� */
+	left: 50%;
+	/* 姘村钩灞呬腑寮�濮嬩綅缃� */
+	transform: translate(-50%, 50%);
+	/* 姘村钩灞呬腑骞跺悜涓嬬Щ鍔�50% */
 
-	.original-price {
-	  font-size: 28rpx;
-	  color: #999;
-	  text-decoration: line-through;
-	}
+	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);
+	/* 杞诲井闃村奖 */
+}
 
-	.sales-count {
-	  font-size: 22rpx;
-	  color: #999;
-	}
+.video-tag {
+	margin-left: 5px;
+	font-weight: bold;
+	color: #eeeeee;
+}
 
-	.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;
-	}
+.video-author {
+	font-size: 1.2em;
+}
 
-	.popup-header {
-	  padding: 30rpx;
-	  display: flex;
-	  justify-content: space-between;
-	  align-items: center;
-	  border-bottom: 1rpx solid #f5f5f5;
-	}
+/* 鍟嗗搧閾炬帴鎮寕灞傛牱寮� */
+.goods-link-warp {
+	position: absolute;
+	bottom: 100px;
+	left: 20px;
+	color: #f8f8f8;
+	z-index: 10;
+}
 
-	.popup-title {
-	  font-size: 32rpx;
-	  font-weight: bold;
-	}
+.goods-link {
+	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);
+}
 
-	.close-icon {
-	  /* font-size: 36rpx; */
-	  color: #999;
-	}
+.goods-container {
+	width: 100%;
+	display: flex;
+	align-items: center;
+}
 
-	.comment-list {
-	  flex: 1;
-	  padding: 0rpx 20rpx 20rpx 20rpx;
-	  box-sizing: border-box;
-	  height: calc(60vh - 260rpx);
-	}
+.goods-image {
+	width: 120rpx;
+	height: 120rpx;
+	border-radius: 8rpx;
+	margin-right: 20rpx;
+}
 
-	.comment-item {
-	  display: flex;
-	  flex-direction: column;
-	  padding: 10rpx 0 20rpx 0;
-	}
+.goods-info {
+	flex: 1;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+}
 
-	.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;
-	}
+.goods-name {
+	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;
+}
 
-	.comment-content {
-	  flex: 1;
-	}
+.price-section {
+	display: flex;
+	align-items: center;
+	margin-bottom: 6rpx;
+}
 
-	.nickname {
-	  font-size: 28rpx;
-	  color: #666;
-	  display: block;
-	  margin-bottom: 10rpx;
-	}
+.current-price {
+	font-size: 32rpx;
+	color: #ff2e4d;
+	font-weight: bold;
+	margin-right: 12rpx;
+}
 
-	.content {
-	  font-size: 28rpx;
-	  color: #333;
-	  display: block;
-	  margin-bottom: 10rpx;
-	}
+.original-price {
+	font-size: 28rpx;
+	color: #999;
+	text-decoration: line-through;
+}
 
-	.time {
-	  font-size: 28rpx;
-	  color: #999;
-	}
+.sales-count {
+	font-size: 22rpx;
+	color: #999;
+}
 
-	.comment-input-area {
-	  display: flex;
-	  padding: 20rpx 30rpx;
-	  align-items: center;
-	}
+.buy-button {
+	background: linear-gradient(to right, #ff5a5f, #ff2e4d);
+	color: white;
+	padding: 10rpx 28rpx;
+	border-radius: 20rpx;
+	font-size: 26rpx;
+	font-weight: bold;
+}
 
-	.comment-input {
-	  flex: 1;
-	  background-color: #fff;
-	  height: 80rpx;
-	  border: 1px solid #dcdcdc;
-	  border-radius: 40rpx;
-	  padding: 0 30rpx;
-	  font-size: 28rpx;
-	}
+/* 璇勮寮圭獥鏍峰紡 */
+.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;
+}
 
-	.placeholder {
-	  color: #ccc;
-	}
+.popup-header {
+	padding: 30rpx;
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	border-bottom: 1rpx solid #f5f5f5;
+}
 
-	.submit-btn {
-	  margin-left: 20rpx;
-	  background-color: #07c160;
-	  color: #fff;
-	  border-radius: 40rpx;
-	  padding: 0 30rpx;
-	  height: 80rpx;
-	  line-height: 80rpx;
-	  font-size: 28rpx;
-	}
+.popup-title {
+	font-size: 32rpx;
+	font-weight: bold;
+}
 
-	.loading, .empty {
-	  padding: 40rpx 0;
-	  text-align: center;
-	  color: #999;
-	}
-	.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-item {
-		display: flex;
-		align-items: center;
-		height: 40rpx;
-	}
+.close-icon {
+	/* font-size: 36rpx; */
+	color: #999;
+}
 
-	.reply-item {
-	  display: flex;
-	  margin-bottom: 20rpx;
-	}
+.comment-list {
+	flex: 1;
+	padding: 0rpx 20rpx 20rpx 20rpx;
+	box-sizing: border-box;
+	height: calc(60vh - 260rpx);
+}
 
-	.reply-content {
-	  flex: 1;
-	}
+.comment-item {
+	display: flex;
+	flex-direction: column;
+	padding: 10rpx 0 20rpx 0;
+}
 
-	.reply-to {
-	  color: #576b95;
-	  margin: 0 10rpx;
-	  font-size: 28rpx;
-	}
-	.reply-title {
-	  display: flex;
-	  align-items: center;
-	  font-size: 28rpx;
-	  color: #333;
-	}
+.comment-avatar {
+	width: 70rpx;
+	height: 70rpx;
+	border-radius: 50%;
+	margin-right: 10rpx;
+}
 
-	.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;
-	}
-	.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%;
-	}
+.comment-reply-avatar {
+	width: 40rpx;
+	height: 40rpx;
+	border-radius: 50%;
+	margin-right: 10rpx;
+}
 
-	.progress-bar {
-	  position: relative;
-	  width: 100%;
-	  height: 5px;
-	  background-color: rgba(255, 255, 255, 0.2); /* 鍗婇�忔槑鑳屾櫙 */
-	  overflow: hidden;
-	  border-radius: 1.5px;
-	  cursor: pointer;
-	  transition: height 0.2s;
-	}
+.comment-content {
+	flex: 1;
+}
 
-	.progress-fill {
-		
-	  position: absolute;
-	  left: 0;
-	  top: 0;
-	  height: 100%;
-	  border-radius: 2px;
-	  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: #fff;
-	}
-	.swiper-box {
-	  width: 100%;
-	  height: 1400rpx;
-	}
-	.swiper-item {
-	  display: flex;
-	  justify-content: center;
-	  align-items: center;
-	  width: 100%;
-	  height: 100%;
-	}
-	.custom-share-btn {
-	  font-size: unset;
-	  background: none;
-	  padding: 0;
-	  margin: 0;
-	  line-height: normal;
-	  border: none;
-	}
-	.custom-share-btn::after {
-	  border: none;
-	}
-	.topBar {
-		position: fixed;
-		top: 20rpx;
-		left: 20rpx;
-		z-index: 1000
-	}
+.nickname {
+	font-size: 28rpx;
+	color: #666;
+	display: block;
+	margin-bottom: 10rpx;
+}
+
+.content {
+	font-size: 28rpx;
+	color: #333;
+	display: block;
+	margin-bottom: 10rpx;
+}
+
+.time {
+	font-size: 28rpx;
+	color: #999;
+}
+
+.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;
+}
+
+.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;
+}
+
+.loading,
+.empty {
+	padding: 40rpx 0;
+	text-align: center;
+	color: #999;
+}
+
+.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-item {
+	display: flex;
+	align-items: center;
+	height: 40rpx;
+}
+
+.reply-item {
+	display: flex;
+	margin-bottom: 20rpx;
+}
+
+.reply-content {
+	flex: 1;
+}
+
+.reply-to {
+	color: #576b95;
+	margin: 0 10rpx;
+	font-size: 28rpx;
+}
+
+.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;
+}
+
+.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;
+}
+
+.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%;
+}
+
+.progress-bar {
+	position: relative;
+	width: 100%;
+	height: 5px;
+	background-color: rgba(255, 255, 255, 0.2);
+	/* 鍗婇�忔槑鑳屾櫙 */
+	overflow: hidden;
+	border-radius: 1.5px;
+	cursor: pointer;
+	transition: height 0.2s;
+}
+
+.progress-fill {
+
+	position: absolute;
+	left: 0;
+	top: 0;
+	height: 100%;
+	border-radius: 2px;
+	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: #fff;
+}
+
+.swiper-box {
+	width: 100%;
+	height: 1400rpx;
+}
+
+.swiper-item {
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	width: 100%;
+	height: 100%;
+}
+
+.custom-share-btn {
+	font-size: unset;
+	background: none;
+	padding: 0;
+	margin: 0;
+	line-height: normal;
+	border: none;
+}
+
+.custom-share-btn::after {
+	border: none;
+}
+
+.topBar {
+	position: fixed;
+	top: 20rpx;
+	left: 20rpx;
+	z-index: 1000
+}
 </style>

--
Gitblit v1.8.0