From b185d60269102c404509156f7cf6859b9b0e034c Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 01 九月 2025 21:55:47 +0800
Subject: [PATCH] 添加左右滑动跳转相应页面功能

---
 pages/video/video-similar.vue             |  657 ++++++
 pages.json                                |  235 +
 pages/video/video-goods-detail-swiper.vue | 1081 ++++++++++
 pages/tabbar/index/home.vue               | 3239 +++++++++++++++---------------
 pages/video/components/-goods.vue         | 1022 +++++++++
 5 files changed, 4,529 insertions(+), 1,705 deletions(-)

diff --git a/pages.json b/pages.json
index 9bfa037..db9aa12 100644
--- a/pages.json
+++ b/pages.json
@@ -2,7 +2,7 @@
   "easycom": {
     "autoscan": true,
     "custom": {
-      "^u-(.*)": "@/pages/subComponents/uview-components/uview-ui/components/u-$1/u-$1.vue",	  
+      "^u-(.*)": "@/pages/subComponents/uview-components/uview-ui/components/u-$1/u-$1.vue",
       "__placeholder__": true
       //uview,
       // "^uni-(.*)": "@/uni_modules/uni-$1/components/uni-$1/uni-$1.vue" // uniapp缁勪欢
@@ -30,11 +30,10 @@
       }
     },
     {
-    	"path" : "pages/ActivityPopup/ActivityPopup",
-    	"style" : 
-    	{
-    		"navigationBarTitleText" : ""
-    	}
+      "path": "pages/ActivityPopup/ActivityPopup",
+      "style": {
+        "navigationBarTitleText": ""
+      }
     }
     // {
     // 	"path": "pages/tabbar/home/index",
@@ -84,7 +83,6 @@
     // {
     // 	// "path": "pages/tabbar/category/category",
     // 	"path": "pages/commodity-square/commoditySquare",
-
     // 	"style": {
     // 		"navigationBarTitleText": "鍟嗗搧骞垮満",
     // 		"navigationStyle": "custom", // 闅愯棌绯荤粺瀵艰埅鏍�
@@ -619,13 +617,13 @@
           "style": {
             "navigationBarTitleText": "缁戝畾鎵嬫満鍙�",
             "app-plus": {},
-			"componentPlaceholder": {
-			  "u-form": "view",
-			  "u-form-item": "view",
-			  "u-input": "view",
-			  "u-verification-code": "view",
-			  "u-icon": "view"
-			}
+            "componentPlaceholder": {
+              "u-form": "view",
+              "u-form-item": "view",
+              "u-input": "view",
+              "u-verification-code": "view",
+              "u-icon": "view"
+            }
           }
         },
         {
@@ -713,7 +711,7 @@
               "u-radio-group": "view",
               "u-radio": "view",
               "u-picker": "view",
-			  "u-icon":"view"
+              "u-icon": "view"
             }
           }
         },
@@ -852,7 +850,7 @@
               "u-button": "view",
               "u-image": "view",
               "u-loadmore": "view",
-			  "u-empty":"view"
+              "u-empty": "view"
             }
           }
         },
@@ -894,30 +892,28 @@
           "path": "shopPage",
           "style": {
             "navigationBarTitleText": "",
-			"componentPlaceholder": {
-			  "u-image": "view",
-			  "u-navbar": "view",
-			  "u-no-network": "view",
-			  "u-icon": "view",
-			  "tpl_banner": "view",
-			  "tpl_title": "view",
-			  "tpl_left_one_right_two":"view",
-			  "tpl_left_two_right_one":"view",
-			  "tpl_top_one_bottom_two":"view",
-			  "tpl_top_two_bottom_one":"view",
-			  "tpl_flex_three":"view",
-			  "tpl_flex_five":"view",
-			  "tpl_flex_four":"view",
-			  "tpl_flex_two":"view",
-			  "tpl_text_picture":"view",
-			  "tpl_menu":"view",
-			  "tpl_search":"view",
-			  "tpl_flex_one":"view",
-			  "tpl_goods":"view",
-			  "tpl_group":"view"
-			  
-			  
-			}
+            "componentPlaceholder": {
+              "u-image": "view",
+              "u-navbar": "view",
+              "u-no-network": "view",
+              "u-icon": "view",
+              "tpl_banner": "view",
+              "tpl_title": "view",
+              "tpl_left_one_right_two": "view",
+              "tpl_left_two_right_one": "view",
+              "tpl_top_one_bottom_two": "view",
+              "tpl_top_two_bottom_one": "view",
+              "tpl_flex_three": "view",
+              "tpl_flex_five": "view",
+              "tpl_flex_four": "view",
+              "tpl_flex_two": "view",
+              "tpl_text_picture": "view",
+              "tpl_menu": "view",
+              "tpl_search": "view",
+              "tpl_flex_one": "view",
+              "tpl_goods": "view",
+              "tpl_group": "view"
+            }
           }
         },
         {
@@ -1004,9 +1000,9 @@
           "path": "licencePhoto",
           "style": {
             "navigationBarTitleText": "钀ヤ笟鎵х収",
-			"componentPlaceholder": {
-			  "u-image": "view"
-			}
+            "componentPlaceholder": {
+              "u-image": "view"
+            }
           }
         },
         {
@@ -1153,8 +1149,7 @@
             "componentPlaceholder": {
               "u-empty": "view",
               "u-loadmore": "view",
-              "u-image": "view",
-              "u-empty": "view"
+              "u-image": "view"
             }
           }
         },
@@ -1212,8 +1207,44 @@
           "style": {
             "navigationBarTitleText": "瑙嗛鎺ㄨ崘鍟嗗搧",
             "componentPlaceholder": {
-              "u-button": "view"
+              "u-button": "view",
+              "u-icon": "view",
+              "u-navbar": "view",
+              "u-popup": "view"
             }
+          }
+        },
+        {
+          "path": "video-goods-detail-swiper",
+          "style": {
+            "navigationBarTitleText": "瑙嗛鎺ㄨ崘鍟嗗搧",
+            "componentPlaceholder": {
+              "u-button": "view",
+              "u-icon": "view",
+              "u-navbar": "view",
+              "u-popup": "view",
+              "popups": "view",
+              "shares": "view",
+              "promotion-layout": "view",
+              "promotion-details-layout": "view",
+              "promotion-assemble-layout": "view",
+              "promotion-assemble-list-layout": "view",
+              "promotion-coupon": "view",
+              "goods-intro": "view",
+              "goods-recommend": "view",
+              "store-layout": "view",
+              "evaluation": "view",
+              "goods-swiper": "view",
+              "popup-goods": "view",
+              "popup-address": "view",
+              "take-down-form-sale-goods": "view"
+            }
+          }
+        },
+        {
+          "path": "video-similar",
+          "style": {
+            "navigationBarTitleText": "鍟嗗搧鐩稿叧瑙嗛"
           }
         },
         {
@@ -1434,10 +1465,10 @@
           "path": "coupon/index",
           "style": {
             "navigationBarTitleText": "浼樻儬鍒�",
-			"componentPlaceholder": {
-			  "u-tabs": "view",
-			  "u-empty": "view"
-			}
+            "componentPlaceholder": {
+              "u-tabs": "view",
+              "u-empty": "view"
+            }
           }
         },
         {
@@ -1617,31 +1648,31 @@
           "path": "afterSales/applyProgress",
           "style": {
             "navigationBarTitleText": "鍞悗鏈嶅姟",
-			"componentPlaceholder": {
-			  "u-time-line": "view",
-			  "u-time-line-item": "view",
-			  "u-empty": "view"
-			}
+            "componentPlaceholder": {
+              "u-time-line": "view",
+              "u-time-line-item": "view",
+              "u-empty": "view"
+            }
           }
         },
         {
           "path": "afterSales/applyDetail",
           "style": {
             "navigationBarTitleText": "鍞悗鏈嶅姟",
-			"componentPlaceholder": {
-			  "u-icon": "view",
-			  "u-image": "view"
-			}
+            "componentPlaceholder": {
+              "u-icon": "view",
+              "u-image": "view"
+            }
           }
         },
         {
           "path": "afterSales/applySuccess",
           "style": {
             "navigationBarTitleText": "鎻愪氦鎴愬姛",
-			"componentPlaceholder": {
-			  "u-icon": "view",
-			  "u-button": "view"
-			},
+            "componentPlaceholder": {
+              "u-icon": "view",
+              "u-button": "view"
+            },
             "app-plus": {
               "bounce": "none",
               "titleNView": {
@@ -1676,17 +1707,17 @@
           "path": "afterSales/afterSalesDetail",
           "style": {
             "navigationBarTitleText": "鐢宠鍞悗",
-			"componentPlaceholder": {
-			  "u-form": "view",
-			  "u-image": "view",
-			  "u-number-box": "view",
-			  "u-form-item": "view",
-			  "u-input": "view",
-			  "u-upload": "view",
-			  "u-button": "view",
-			  "u-select": "view",
-			  "u-toast": "view"
-			}
+            "componentPlaceholder": {
+              "u-form": "view",
+              "u-image": "view",
+              "u-number-box": "view",
+              "u-form-item": "view",
+              "u-input": "view",
+              "u-upload": "view",
+              "u-button": "view",
+              "u-select": "view",
+              "u-toast": "view"
+            }
           }
         },
         {
@@ -1805,28 +1836,27 @@
           "style": {
             "navigationBarTitleText": "渚涘簲鍟嗙",
             // "navigationStyle": "custom"
-			"componentPlaceholder":{
-				"u-empty":"view",
-				"u-image":"view"
-			}
+            "componentPlaceholder": {
+              "u-empty": "view",
+              "u-image": "view"
+            }
           }
         },
         {
           "path": "order-detail",
           "style": {
             "navigationBarTitleText": "璁㈠崟璇︽儏",
-			"componentPlaceholder": {
-			  "u-icon": "view",
-			  "u-button": "view",
-			  "u-form": "view",
-			  "u-form-item": "view",
-			  "u-input": "view",
-			  "u-popup": "view",
-			  "u-search": "view",
-			  "u-upload": "view"
-			}
+            "componentPlaceholder": {
+              "u-icon": "view",
+              "u-button": "view",
+              "u-form": "view",
+              "u-form-item": "view",
+              "u-input": "view",
+              "u-popup": "view",
+              "u-search": "view",
+              "u-upload": "view"
+            }
             // "navigationStyle": "custom"
-			
           }
         }
       ]
@@ -2000,23 +2030,22 @@
               "u-navbar": "view",
               "u-search": "view",
               "u-image": "view",
-			  "u-icon": "view"
+              "u-icon": "view"
             }
           }
         },
         {
-        	"path" : "coups-goods-list",
-        	"style" : 
-        	{
-				"navigationStyle": "custom",
-        		"navigationBarTitleText" : "浼樻儬鍗峰晢鍝侀〉闈�",
-				"componentPlaceholder": {
-				  "u-navbar": "view",
-				  "u-search": "view",
-				  "u-image": "view",
-				  "u-icon": "view"
-				}
-        	}
+          "path": "coups-goods-list",
+          "style": {
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "浼樻儬鍗峰晢鍝侀〉闈�",
+            "componentPlaceholder": {
+              "u-navbar": "view",
+              "u-search": "view",
+              "u-image": "view",
+              "u-icon": "view"
+            }
+          }
         }
       ]
     },
@@ -2163,4 +2192,4 @@
     // 	"query": "" //鍚姩鍙傛暟锛屽湪椤甸潰鐨刼nLoad鍑芥暟閲岄潰寰楀埌
     // }]
   }
-}
\ No newline at end of file
+}
diff --git a/pages/tabbar/index/home.vue b/pages/tabbar/index/home.vue
index fe1fcd6..b827c82 100644
--- a/pages/tabbar/index/home.vue
+++ b/pages/tabbar/index/home.vue
@@ -1,298 +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="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 class="progress-fill" :style="{ width: progress + '%' }"></view>
+							</view>
+						</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 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-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="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>
-			</view>
-		</view>
+				</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="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>
-
-      </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 class="video-info" :style="{ bottom: marginBottom + 20 + 'px' }">
+					<view style="width: 100%; position: relative;" @click="jumpToSearch">
+						<text class="video-author">@{{ item.authorName }}</text>
+						<text class="iconfont" style="position: absolute;right: 42px;bottom: 50rpx;">&#xe64e;</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 style="width: 100%;word-wrap: break-word;white-space: normal;overflow-wrap: break-word;">
+						<text class="video-title">{{ item.title }}</text>
+						<text class="video-tag" v-for="(tag, index) in item.tagList" :key="tag.id">#{{ tag.tagName
+						}}</text>
+					</view>
+
+				</view>
+
+				<!-- 鍙充晶浜掑姩鎸夐挳 -->
+				<view class="action-buttons">
+					<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>
+
+			</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" @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>
-	</uni-popup>
+		</uni-popup>
 
 
-	<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>
+		<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,
-  removeByIdVideoComment,
+	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 { 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";
@@ -300,436 +271,448 @@
 import storage from "@/utils/storage.js";
 import TopBar from "@/components/TopBar.vue";
 import { nextTick } from "vue";
-import {getVideoCover } from "@/api/common.js"
+import { getVideoCover } from "@/api/common.js"
 export default {
-  components: {TopBar,ActivityPopup},
-  computed: {
-	    hasPlayTime() {
-	      return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
-	    },
+	components: { TopBar, ActivityPopup },
+	computed: {
+		hasPlayTime() {
+			return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0);
+		},
 		// 閿欒锛氭病鏈夌敤 ... 灞曞紑锛屽鑷� 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,
-		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: {  // 鐩戝惉宸︽粦鍙虫粦
+	},
+	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() {
-		
-	  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) {
+			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 // 搴曢儴瀹夊叏鍖哄煙
+		}
+	},
+	onShow() {
 
-	  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
+		this.openActivityPopup()
+
+
+		if (!this.userId) {
+			this.getUserId()
 		}
-	// 淇濆瓨鍒嗕韩璁板綍
-    },
-  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
+		// 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()
+								}
+
 							}
-							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{
+						});
+					}
+
+				}
+			})
+
+		},
+		...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);
@@ -744,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 {
@@ -760,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 {
@@ -774,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)
+					),
 				];
 			})
 		},
@@ -790,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;
 			})
@@ -808,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) {
@@ -924,883 +907,935 @@
 				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;
+					}
+					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;
+					}
+					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: 160px;
+	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>
diff --git a/pages/video/components/-goods.vue b/pages/video/components/-goods.vue
new file mode 100644
index 0000000..6daf1cc
--- /dev/null
+++ b/pages/video/components/-goods.vue
@@ -0,0 +1,1022 @@
+<template>
+  <div class="main-page">
+    <!-- #ifdef APP-PLUS -->
+    <view class="status_bar"></view>
+    <!-- #endif -->
+    <!-- 浠卙5鏈夋晥 鎵撳紑App -->
+
+    <!-- 鍒嗕韩 -->
+    <shares v-if="enableShare && goodsDetail.id" :skuId="this.routerVal.id" :goodsId="this.routerVal.goodsId" :link="
+      '/pages/product/goods?id=' +
+      this.routerVal.id +
+      '&goodsId=' +
+      this.routerVal.goodsId
+    " :thumbnail="goodsDetail.thumbnail" :goodsName="goodsDetail.goodsName" type="goods"
+      @close="enableShare = false" />
+    <popups v-model="popupsSwitch" @tapPopup="handleNavbarList" :popData="navbarListData" :x="navbarListX"
+      :y="navbarListY" placement="top-start" />
+   
+    <view class="product-container" :style="{ height: productRefHeight }" ref="productRef" id="productRef">
+      <scroll-view scroll-anchoring enableBackToTop="true" scroll-with-animation scroll-y class="scroll-page"
+        :scroll-top="tabScrollTop" @scroll="pageScroll">
+        <view>
+          <!-- 杞挱鍥� -->
+         
+          <GoodsSwiper id="main1" :res="imgList" :video="goodsDetail.goodsVideo" />
+
+          <!-- 淇冮攢娲诲姩鏉� -->
+          <PromotionAssembleLayout v-if="PromotionList" :detail="goodsDetail" :res="PromotionList" />
+
+          <view class="card-box top-radius-0" id="main2">
+            <!-- 娲诲姩涓嶆樉绀轰环閽� -->
+            <view v-if="isSeckill || isGroup" class="desc-bold -goods-msg">
+              <view class="-goods-flex">
+                <view class="desc-bold">
+                  {{ goodsDetail.goodsName || "" }}
+                </view>
+                <view class="favorite" @click="clickFavorite(goodsDetail.id)">
+                  <u-icon size="30" :color="favorite ? '#f2270c' : '#262626'" :name="favorite ? 'heart-fill' : 'heart'">
+                  </u-icon>
+                  <view :style="{ color: favorite ? '#f2270c' : '#262626' }">{{
+                    favorite? "宸叉敹钘�": "鏀惰棌"
+                  }}</view>
+                </view>
+              </view>
+              <!-- 鍟嗗搧鎻忚堪 -->
+              <view class="-goods-desc">
+                {{ goodsDetail.sellingPoint || "" }}
+              </view>
+            </view>
+            <view v-else class="-goods-msg">
+              <!-- 娌℃湁鎷煎洟锛岀鏉�绛夋椿鍔ㄧ殑鎯呭喌涓� -->
+              <view>
+                <view class="-goods-flex">
+                  <!-- 濡傛灉鏈夌Н鍒嗘樉绀虹Н鍒� -->
+                  <view class="-goods-price" v-if="goodsDetail.price != undefined">
+
+                    <span>
+                      <span v-if="wholesaleList.length">
+                        <span>楼</span><span class="price">{{
+                          $options.filters.goodsFormatPrice(wholesaleList[wholesaleList.length - 1].price)[0]
+                        }}</span>.{{
+                          $options.filters.goodsFormatPrice(wholesaleList[wholesaleList.length - 1].price)[1]
+                        }}
+                        ~
+                        <span>楼</span><span class="price">{{
+                          $options.filters.goodsFormatPrice(wholesaleList[0].price)[0]
+                        }}</span>.{{
+                          $options.filters.goodsFormatPrice(wholesaleList[0].price)[1]
+                        }}
+                      </span>
+                      <span v-else>
+                        <span>楼</span><span class="price">{{
+                          $options.filters.goodsFormatPrice(goodsDetail.price)[0]
+                        }}</span>.{{ $options.filters.goodsFormatPrice(goodsDetail.price)[1] }}
+                      </span>
+                    </span>
+                  </view>
+                  <view class="-goods-price" v-else>
+                    <div v-if="takeDownFromSale" class="price down-goods">
+                      鏆傛棤鎶ヤ环
+                    </div>
+                    <span v-else>
+                    楼<span class="price">0 </span>.00
+                    </span>
+                  </view>
+
+                  <view class="icons share" @click="shareChange()">
+                    <u-icon size="30" name="share-fill"></u-icon>
+                    <view>鍒嗕韩</view>
+                  </view>
+                  <view class="icons" @click="clickFavorite(goodsDetail.id)">
+                    <u-icon size="30" :color="favorite ? '#f2270c' : '#262626'"
+                      :name="favorite ? 'heart-fill' : 'heart'"></u-icon>
+                    <view :style="{ color: favorite ? '#f2270c' : '#262626' }">{{
+                      favorite? "宸叉敹钘�": "鏀惰棌"
+                    }}</view>
+                  </view>
+                </view>
+                <view class="-goods-name desc-bold">
+                  {{ goodsDetail.goodsName || "" }}
+                </view>
+                <view class="-goods-desc">
+                  {{ goodsDetail.sellingPoint || "" }}
+                </view>
+              </view>
+            </view>
+          </view>
+
+          <view class="card-box">
+            <view class="card-flex" @click="shutMask(1)">
+              <view class="card-title"> 淇冮攢 </view>
+              <view class="card-content">
+                <span v-if="PromotionList && emptyPromotion()">鏆傛棤淇冮攢淇℃伅</span>
+                <PromotionLayout v-else @shutMasks="shutMask" :res="PromotionList" />
+              </view>
+              <view class="card-bottom">
+                <u-icon name="more-dot-fill"></u-icon>
+              </view>
+            </view>
+          </view>
+
+          <!-- 鎷煎洟鐢ㄦ埛鍒楄〃 -->
+          <PromotionAssembleListLayout v-if="isGroup" @to-assemble-buy-now="toAssembleBuyNow" :res="PromotionList" />
+
+          <!-- 閰嶇疆鍦板潃 濡傛灉鏄櫄鎷熶骇鍝佺殑鏃跺�欎笉灞曠ず -->
+          <view class="card-box" v-if="goodsDetail.goodsType != 'VIRTUAL_GOODS'">
+            <view class="card-flex" @click="shutMask(4)">
+              <view class="card-title"> 鍙�夎鏍� </view>
+              <view class="card-content">
+                <span v-if="selectedGoods.spec">{{ selectedGoods.spec.specName }}-{{
+                  selectedGoods.spec.specValue
+                }}</span>
+                <span v-else>榛樿</span>
+              </view>
+              <view class="card-bottom">
+                <u-icon name="more-dot-fill"></u-icon>
+              </view>
+            </view>
+            <view class="card-flex" @click="shutMask(3)">
+              <view class="card-title"> 閫佽嚦</view>
+              <view class="card-content">
+                <span v-if="delivery">{{
+                  delivery.consigneeAddressPath | clearStrComma
+                }}</span>
+                <span v-else>鏆傛棤鍦板潃淇℃伅</span>
+              </view>
+              <view class="card-bottom">
+                <u-icon name="more-dot-fill"></u-icon>
+              </view>
+            </view>
+          </view>
+
+          <!-- 璇勪环 -->
+          <Evaluation id="main5" :goodsDetail="goodsDetail" />
+
+          <!-- 搴楅摵鎺ㄨ崘 -->
+          <storeLayout v-if="false" id="main7" :storeDetail="storeDetail" :goodsDetail="goodsDetail" :res="recommendList" />
+
+          <!-- 瀹濊礉璇︽儏 -->
+         <GoodsIntro id="main9" :res="goodsDetail" :goodsParams="goodsParams" :goodsId="goodsDetail.goodsId"
+            v-if="goodsDetail.id" />
+
+          <!-- 瀹濊礉鎺ㄨ崘 -->
+          <GoodsRecommend id="main11" :res="likeGoodsList" v-if="false" />
+        </view>
+      </scroll-view>
+
+
+      <view class="page-bottom mp-iphonex-bottom" id="pageBottom">
+        <view class="icon-btn">
+        <view class="icon-btn-item" @click="navigateToStore(goodsDetail.storeId)">
+            <u-icon size="34" class="red" name="home-fill"></u-icon>
+            <view class="red icon-btn-name">搴楅摵</view>
+          </view>
+          <view class="icon-btn-item" @click="linkMsgDetail()">
+            <u-icon size="34" name="kefu-ermai"></u-icon>
+            <view class="icon-btn-name">瀹㈡湇</view>
+          </view>
+          <view class="icon-btn-item" @click="reluchToCart()">
+            <u-icon size="34" name="storeping-cart"></u-icon>
+            <view class="icon-btn-name">璐墿杞�</view>
+            <view v-if="nums && nums > 0" class="num-icon">{{ nums }}</view>
+          </view>
+        </view>
+        <!-- 涓嬫灦灞曠ず -->
+<!--        <div class="detail-btn" v-if="takeDownFromSale">
+          <view class="to-store-car to-store-btn"  @click="reStartTakeDownSale">
+            鏌ョ湅绫讳技鍟嗗搧</view>
+        </div> -->
+        <!-- 姝e父缁撶畻椤甸潰 -->
+        <view class="detail-btn" v-if="!isGroup && !takeDownFromSale">
+          <view class="to-store-car to-store-btn" v-if="goodsDetail.goodsType != 'VIRTUAL_GOODS'" @click="shutMask(4)">
+            鍔犲叆璐墿杞�</view>
+          <view class="to-buy to-store-btn" @click="shutMask(4, 'buy')">绔嬪嵆璐拱</view>
+          <view class="to-store-car to-store-btn" v-if="startTimer">鏆傛湭寮�濮�</view>
+        </view>
+        <!-- 鎷煎洟缁撶畻 -->
+        <view class="detail-btn" v-else-if="isGroup">
+          <view class="to-store-car pt-buy to-store-btn" @click="shutMask(4, 'buy')">
+            <view>锟{ goodsDetail.price | unitPrice }}</view>
+            <view>鍗曠嫭璐拱</view>
+          </view>
+          <view class="to-buy pt-buy to-store-btn" @click="toAssembleBuyNow">
+            <view>锟{ goodsDetail.promotionPrice | unitPrice }}</view>
+            <view>鎷煎洟浠锋牸</view>
+          </view>
+        </view>
+      </view>
+      <!-- 瑙勬牸-妯℃�佸眰寮圭獥 -->
+      <view class="spec">
+        <!-- 淇冮攢寮圭獥 -->
+        <u-popup v-model="promotionShow" :height="setup.height" :mode="setup.mode" :border-radius="setup.radius"
+          @close="promotionShow = false" :mask-close-able="setup.close" closeable>
+          <view class="header-title">浼樻儬</view>
+          <view class="cuxiao">
+            <scroll-view class="scroll_mask" :scroll-y="true">
+              <view class="con-cuxiao">
+                <view class="cuxiao-title">淇冮攢娲诲姩</view>
+                <PromotionDetailsLayout :res="PromotionList" />
+              </view>
+              <view class="con-cuxiao coupons">
+                <view class="cuxiao-title">鍙浼樻儬鍒�</view>
+                <PromotionCoupon @getCoupon="getCoupon" :res="PromotionList" />
+              </view>
+            </scroll-view>
+          </view>
+        </u-popup>
+
+        <!-- 閰嶉�佸湴鍧�寮圭獥 -->
+        <popupAddress @closeAddress="closePopupAddress" @deliveryData="deliveryFun" v-if="goodsDetail.id"
+          :goodsId="goodsDetail.id" :addressFlag="addressFlag" />
+
+        <!-- 鍟嗗搧瑙勬牸  鍟嗗搧璇︽儏锛屼互鍙婇粯璁ゅ弬涓庢椿鍔ㄧ殑id-->
+        <popupGoods :addr="delivery" ref="popupGoods" @changed="changedGoods" @closeBuy="closePopupBuy"
+          @queryCart="cartCount()" :goodsDetail="goodsDetail" :goodsSpec="goodsSpec" :isGroup="isGroup" :id="productId"
+          v-if="goodsDetail.id" :pointDetail="pointDetail" :wholesaleList="wholesaleList" @handleClickSku="selectSku"
+          :buyMask="buyMask" />
+
+
+        <!-- 涓嬫灦妗� -->
+        <takeDownFormSaleGoods ref="takeDownSale" v-if="takeDownFromSale" />
+      </view>
+    </view>
+  </div>
+</template>
+
+<script>
+import '@/components/uview-components/uview-ui';
+
+
+/************鎺ュ彛API***************/
+import { getGoods, getGoodsList, getMpScene, getGoodsDistribution } from "@/api/goods.js";
+import * as API_trade from "@/api/trade.js";
+import * as API_Members from "@/api/members.js";
+import * as API_store from "@/api/store.js";
+import { getIMDetail } from "@/api/common";
+import { modelNavigateTo } from "@/pages/tabbar/home/template/tpl.js";
+/************璇锋眰瀛樺偍***************/
+import storage from "@/utils/storage.js";
+
+/************缁勪欢***************/
+import PromotionLayout from "@/pages/product/product/promotion/-promotion.vue"; //淇冮攢缁勪欢
+import PromotionDetailsLayout from "@/pages/product/product/promotion/-promotion-details.vue"; //淇冮攢娲诲姩璇︽儏
+import PromotionAssembleLayout from "@/pages/product/product/promotion/-promotion-assemble-promotions.vue"; //淇冮攢娲诲姩鏉�
+import PromotionAssembleListLayout from "@/pages/product/product/promotion/-promotion-assemble-list.vue"; //鎷煎洟鐢ㄦ埛鍒楄〃
+import PromotionCoupon from "@/pages/product/product/promotion/-promotion-coupon.vue"; //浼樻儬鍒哥粍浠�
+import GoodsIntro from "@/pages/product/product/goods/-goods-intro.vue"; //鍟嗗搧浠嬬粛缁勪欢
+import GoodsRecommend from "@/pages/product/product/goods/-goods-recommend.vue"; //瀹濊礉鎺ㄨ崘
+import storeLayout from "@/pages/product/product/shop/-shop.vue"; //搴楅摵缁勪欢
+import Evaluation from "@/pages/product/product/evaluation/-evaluation"; //璇勪环缁勪欢
+import GoodsSwiper from "@/pages/product/product/goods/-goods-swiper.vue"; //杞挱鍥剧粍浠�
+import popupGoods from "@/pages/product/m-buy/goods.vue"; //璐墿杞﹀晢鍝佺殑妯″潡
+import popupAddress from "@/pages/product/product/popup/address.vue"; //鍦板潃閫夋嫨妯″潡
+import shares from "@/pages/product/m-share/index.vue"; //鍒嗕韩
+import popups from "@/pages/product/popups/popups.vue"; //姘旀场妗�
+import takeDownFormSaleGoods from "@/pages/product/m-take-down-sale-goods/index.vue"; //涓嬫灦妗�
+import setup from "./product/popup/popup";
+	import {
+		getSTSToken
+	} from '@/api/common.js'
+export default {
+  components: {
+    popups,
+    shares,
+    PromotionLayout,
+    PromotionDetailsLayout,
+    PromotionAssembleLayout,
+    PromotionAssembleListLayout,
+    PromotionCoupon,
+    GoodsIntro,
+    GoodsRecommend,
+    storeLayout,
+    Evaluation,
+    GoodsSwiper,
+    popupGoods,
+    popupAddress,
+    takeDownFormSaleGoods
+  },
+  data () {
+    return {
+      setup,
+      promotionShow: false, //寮圭獥寮�鍏�
+      // #ifdef H5
+      navbarListX: 110, //瀵艰埅鏍忓垪琛ㄦ爮x杞�
+      navbarListY: 80, //瀵艰埅鏍忓垪琛ㄦ爮y杞�
+      // #endif
+      // #ifdef MP-WEIXIN
+      navbarListX: 100, //瀵艰埅鏍忓垪琛ㄦ爮x杞�
+      navbarListY: 140, //瀵艰埅鏍忓垪琛ㄦ爮y杞�
+      // #endif
+      // #ifdef APP-PLUS
+      navbarListX: 120, //瀵艰埅鏍忓垪琛ㄦ爮x杞�
+      navbarListY: 170, //瀵艰埅鏍忓垪琛ㄦ爮y杞�
+      // #endif
+      navbarListData: [
+        //瀵艰埅鏍忓垪琛ㄦ爮鏁版嵁
+        // {
+        //   title: "棣栭〉",
+        //   icon: "home-fill",
+        //   ___type: "other",
+        // },
+        {
+          title: "璐墿杞�",
+          icon: "bag-fill",
+          ___type: "other",
+        },
+        // {
+        //   title: "鎼滅储",
+        //   icon: "search",
+        //   ___type: "category",
+        // },
+        {
+          title: "涓汉涓績",
+          icon: "account-fill",
+          ___type: "other",
+        },
+      ],
+      popupsSwitch: false, //瀵艰埅鏍忓垪琛ㄦ爮寮�鍏�
+      enableShare: false,
+      selectedGoods: "", //閫夋嫨鐨勫晢鍝佽鏍兼樀绉�
+      isGroup: false, // 鏄惁鏄嫾鍥㈡椿鍔�
+      isSeckill: false, // 鏄惁绉掓潃娲诲姩
+      pointDetail: "", // 鏄惁鏄Н鍒嗗晢鍝�
+      assemble: "", //鎷煎洟鐨剆ku
+      navbarOnlyBack: {
+        background: "transparent",
+      },
+      navbar: {
+        background: "#fff",
+      },
+
+      productRefHeight: "",
+      header: {
+        top: 0,
+        height: 50,
+      },
+      goodsParams: [], // 鍟嗗搧鍙傛暟
+      headerFlag: false, //椤堕儴瀵艰埅鏄剧ず涓庡惁
+      headerList: [
+        //椤堕儴瀵艰埅鏂囧瓧鎸夌収瑙勫垯鏉� 璇︽儏鍏ㄥ眬鎼滅储
+        {
+          text: "鍟嗗搧",
+          id: "1",
+        },
+        {
+          text: "璇勪环",
+          id: "2",
+        },
+        {
+          text: "璇︽儏",
+          id: "3",
+        },
+        // {
+        //   text: "鎺ㄨ崘",
+        //   id: "4",
+        // },
+      ],
+      tabScrollTop: null,
+      scrollArr: [],
+      scrollId: "1",
+      scrollFlag: true,
+      current: "1", //褰撳墠鏄剧ず鐨勮疆鎾浘椤�
+      goodsDetail: {}, //鍟嗗搧鏁版嵁
+      goodsSpec: "", //瑙勬牸鏁版嵁
+      imgList: [], //杞挱鍥炬暟鎹�
+      favorite: false, //鏀惰棌涓庡惁flag
+      recommendList: [], //鎺ㄨ崘鍒楄〃
+      // maskFlag: false, //妯℃�佹樉绀轰笌鍚�
+      goodsInfo: false, //鍟嗗搧浠嬬粛寮圭獥
+      addressFlag: false, //閰嶉�佸湴鍧�寮圭獥
+      buyMask: false, //娣诲姞璐墿杞︾洿鎺ヨ喘涔帮紝鏌ョ湅宸查�� 寮圭獥
+      num: 1, //娣诲姞鍒拌喘鐗╄溅鐨勬暟閲�
+      skuId: "", //
+      storeDetail: "", //搴楅摵鍩烘湰淇℃伅,
+      // 搴楅摵淇℃伅
+      storeParams: {
+        pageNumber: 1,
+        pageSize: 10,
+      },
+
+      likeGoodsList: "", //鐩镐技鍟嗗搧鍒楄〃
+      PromotionList: "", //娲诲姩,淇冮攢锛屽垪琛�
+      specList: [],
+      selectedSpec: [],
+      nums: 0,
+      delivery: "",
+
+      exchange: {},
+      productId: 0,
+
+      startTimer: false, //鏈紑鍚� 鏄痜alse
+
+      routerVal: "",
+      IMLink: "", // IM鍦板潃
+      wholesaleList: [],
+      takeDownFromSale: false, // 涓嬫灦閿�鍞姸鎬�
+    };
+  },
+
+  computed: {
+    // udesk IM 
+    IM () {
+      return this.IMLink + this.storeDetail.merchantEuid;
+    },
+  },
+
+  props: ["id", "goodsId"],
+  mounted () {
+    const { windowHeight } = uni.getSystemInfoSync();
+    let bottomHeight = 0;
+    let topHeight = 0;
+    uni.getSystemInfo({
+      success: function (res) {
+        // res - 鍚勭鍙傛暟
+        let bottom = uni.createSelectorQuery().select(".page-bottom");
+        bottom
+          .boundingClientRect(function (data) {
+            if (data && data.height) {
+              //data - 鍚勭鍙傛暟
+              bottomHeight = data.height; // 鑾峰彇鍏冪礌瀹藉害
+            }
+          })
+          .exec();
+        let top = uni.createSelectorQuery().select(".header");
+        top
+          .boundingClientRect(function (data) {
+            if (data && data.height) {
+              //data - 鍚勭鍙傛暟
+              topHeight = data.height; // 鑾峰彇鍏冪礌瀹藉害
+            }
+          })
+          .exec();
+      },
+    });
+
+    this.productRefHeight = windowHeight - bottomHeight + "px";
+  },
+  async onLoad (options) {
+	 
+	  if(options.q){
+		  const queryParam = {
+			  id:'',
+			  goodsId:'',
+			  distributionId:''
+		  };
+		  const decodedUrl = decodeURIComponent(decodeURIComponent(options.q));
+		  console.log('鍘熷URL:', decodedUrl);
+		  const params = this.parseUrlParams(decodedUrl);
+		  const id = params.id;
+		  const gooodsId = params.goodsId;
+		  queryParam.id = id;
+		  queryParam.goodsId = gooodsId;
+		  this.routerVal = queryParam;
+	  }else{
+		  this.routerVal = options;
+	  }
+	  console.log('鎵撳嵃淇℃伅')
+	   console.log(options)
+	  console.log(this.routerVal)
+    
+    // #ifdef MP-WEIXIN
+    // 灏忕▼搴忛粯璁ゅ垎浜�
+    uni.showShareMenu({
+      withShareTicket: true,
+      menus: ["shareAppMessage", "shareTimeline"],
+    });
+    // #endif
+  },
+  async onShow () {
+    this.goodsDetail = {};
+    //濡傛灉鏈夊弬鏁癷ds璇存槑浜嬪垎閿�鐭繛鎺ワ紝闇�瑕佽幏鍙栧弬鏁�
+    if (this.routerVal.scene) {
+      getMpScene(this.routerVal.scene).then((res) => {
+        if (res.data.success) {
+          let data = res.data.result.split(","); // skuId,goodsId,distributionId
+          this.init(data[0], data[1], data[2]);
+        }
+      });
+    } else {
+      this.init(this.routerVal.id, this.routerVal.goodsId, this.routerVal.distributionId);
+    }
+  },
+
+  methods: {
+	  // 瑙f瀽URL鍙傛暟
+	  parseUrlParams(url) {
+	    const params = {};
+	    // 澶勭悊鍙兘瀛樺湪鐨刪ash锛堝鏋滄湁鐨勮瘽锛�
+	    const cleanUrl = url.split('#')[0];
+	    const queryStr = cleanUrl.split('?')[1] || '';
+	    
+	    queryStr.split('&').forEach(pair => {
+	      const [key, value] = pair.split('=');
+	      if (key) {
+	        // 濡傛灉鍊煎瓨鍦紝鍒欒В鐮侊紝鍚﹀垯璁句负绌哄瓧绗︿覆
+	        params[key] = value ? decodeURIComponent(value) : '';
+	      }
+	    });
+	    
+	    return params;
+	  },
+    // 閲嶆柊鎵撳紑涓嬫灦
+    reStartTakeDownSale(){
+      this.$refs.takeDownSale.show = true
+    },
+    share () {
+      return `/pages/product/goods?id=${this.routerVal.id}&goodsId=${this.routerVal.goodsId}`;
+    },
+    /**
+     * 瀵艰埅鏍忓垪琛ㄦ爮
+     */
+    handleNavbarList (val) {
+      modelNavigateTo({ url: val });
+    },
+
+    /**
+     * 寰幆鍑哄綋鍓嶄績閿�鏄惁涓虹┖
+     */
+    emptyPromotion () {
+      if (
+        this.PromotionList == "" ||
+        this.PromotionList == null ||
+        this.PromotionList == []
+      ) {
+        return true;
+      }
+    },
+    selectSku (idObj) {
+      this.init(idObj.skuId, idObj.goodsId);
+    },
+    /**
+     * 鍒濆鍖栦俊鎭�
+     */
+    async init (id, goodsId, distributionId = "") {
+		console.log('鎵撳嵃id:' + id)
+		console.log('鎵撳嵃goodsId:'+ goodsId)
+      this.isGroup = false; //鍒濆鍖栨嫾鍥�
+      this.productId = id; // skuId
+      // 杩欓噷璇锋眰鑾峰彇鍒伴〉闈㈡暟鎹�  瑙f瀽鏁版嵁
+
+      let response = await getGoods(id || 'undefined', goodsId);
+      
+      // 鍒ゆ柇褰撳墠鎺ュ彛杩斿洖鍐呭 
+      if (!response.data.success) {
+        // 鍟嗗搧宸蹭笅鏋�
+        if(response.data.code == 11001){
+          this.takeDownFromSale = true
+        }
+        // setTimeout(() => {
+        //   uni.navigateBack();
+        // }, 500);
+      }
+      // 杩欓噷鏄粦瀹氬垎閿�鍛�
+      if (distributionId || this.$store.state.distributionId) {
+        let disResult = await getGoodsDistribution(distributionId);
+        if (!disResult.data.success || disResult.statusCode == 403) {
+          this.$store.state.distributionId = distributionId;
+        }
+      }
+	  const sts = await getSTSToken();
+	  const stsUrl = sts.data.data.endpoint
+	  // // 澶勭悊鏁版嵁
+	  // goodsList.data.result.records.forEach(item => {
+	  // 	if (item.thumbnail !== '' && item.thumbnail !== null && item.thumbnail.indexOf('http') ===
+	  // 		-1) {
+	  // 		item.thumbnail = stsUrl + '/' + item.thumbnail
+	  // 	}
+	  // 	if (item.goodsVideo !== '' && item.goodsVideo !== null && item.goodsVideo.indexOf(
+	  // 			'http') === -1) {
+	  // 		item.goodsVideo = stsUrl + '/' + item.goodsVideo
+	  // 	}
+	  // })
+      /**鍟嗗搧淇℃伅浠ュ強瑙勬牸淇℃伅瀛樺偍 */
+	  console.log('--------------------------1>',response.data.result.data.goodsGalleryList)
+	  response.data.result.data.goodsGalleryList.forEach((item,index)=>{
+		  	if (item !== '' && item !== null && item.indexOf('http') ===
+		  		-1) {
+		  		response.data.result.data.goodsGalleryList[index] =  stsUrl + '/' + item
+				console.log('鏄惁鎵ц-------------銆�',item)
+		  	}
+	  })
+	   console.log('--------------------------2>',response.data.result.data.goodsGalleryList)
+      this.goodsDetail = response.data.result.data;
+	  if (this.goodsDetail.goodsVideo !== '' && this.goodsDetail.goodsVideo !== null && this.goodsDetail.goodsVideo.indexOf(
+	  		'http') === -1) {
+	  	this.goodsDetail.goodsVideo = stsUrl + '/' + this.goodsDetail.goodsVideo
+	  }
+	  console.log('--------------------------2>',this.goodsDetail.goodsGalleryList)
+      this.wholesaleList = response.data.result.wholesaleList;
+      this.goodsSpec = response.data.result.specs;
+      this.PromotionList = response.data.result.promotionMap;
+      this.goodsParams = response.data.result.goodsParamsDTOList || [];
+	console.log('浼樻儬鍗锋椿鍔�--------------------銆�',response.data.result.promotionMap)
+      // 鍒ゆ柇鏄惁鎷煎洟娲诲姩鎴栬�呯Н鍒嗗晢鍝� 濡傛灉鏈夊垯鏄剧ず鎷煎洟娲诲姩淇℃伅
+      this.PromotionList &&
+        Object.keys(this.PromotionList).forEach((item) => {
+          // 鎷煎洟鍟嗗搧
+          if (item.indexOf("PINTUAN") == 0) {
+            this.isGroup = true;
+          }
+
+          // 绉掓潃
+          if (item.indexOf("SECKILL") == 0) {
+            this.isSeckill = true
+          }
+        });
+      // 杞挱鍥�
+      this.imgList = this.goodsDetail.goodsGalleryList.filter(i => i.indexOf("\"url\":") === -1 && i.indexOf("\"status\":") === -1);
+
+      // 鑾峰彇搴楅摵鍩烘湰淇℃伅
+      this.getStoreBaseInfoFun(this.goodsDetail.storeId);
+
+      // 鑾峰彇璐墿杞�
+      this.cartCount();
+
+      // 鑾峰彇搴楅摵鎺ㄨ崘鍟嗗搧
+      this.getStoreRecommend();
+
+      // 鑾峰彇鍟嗗搧鍒楄〃
+      this.getOtherLikeGoods();
+      // 鑾峰彇鍟嗗搧鏄惁宸茶鏀惰棌 濡傛灉鏈櫥褰曚笉鑾峰彇
+
+      if (this.$options.filters.isLogin("auth")) {
+        this.getGoodsCollectionFun(this.goodsDetail.id);
+      }
+      // 鑾峰彇IM 闇�瑕佺殑璇濅娇鐢�
+      // this.getIMDetailMethods();
+    },
+
+    async getIMDetailMethods () {
+      let res = await getIMDetail();
+      if (res.data.success) {
+        this.IMLink = res.data.result;
+      }
+    },
+
+    linkMsgDetail () {
+      // lili 鍩虹瀹㈡湇
+      this.$options.filters.talkIm(this.goodsDetail.storeId, this.routerVal.goodsId, this.routerVal.id)
+      // uni.navigateTo({
+      //   url: `/pages/mine/im/index?userId=${this.goodsDetail.storeId}&goodsid=${this.routerVal.goodsId}&skuid=${this.routerVal.id}`
+      // });
+
+      // udesk 浠g爜  
+      // if (this.storeDetail.merchantEuid) {
+      //   uni.navigateTo({
+      //     url: `/pages/tabbar/home/web-view?src=${this.IM}`,
+      //   });
+      // }
+
+
+      // 瀹㈡湇 浜戞櫤鏈嶄唬鐮� 
+      // // #ifdef MP-WEIXIN
+      // const params = {
+      //   storeName: this.storeDetail.storeName,
+      //   goodsName: this.goodsDetail.goodsName,
+      //   goodsId: this.goodsDetail.goodsId,
+      //   goodsImg: this.goodsDetail.thumbnail,
+      //   price: this.goodsDetail.promotionPrice || this.goodsDetail.price,
+      //   // originalPrice: this.goodsDetail.original || this.goodsDetail.price,
+      //   uuid: storage.getUuid(),
+      //   token: storage.getAccessToken(),
+      //   sign: this.storeDetail.yzfSign,
+      //   mpSign: this.storeDetail.yzfMpSign,
+      // };
+      // uni.navigateTo({
+      //   url:
+      //     "/pages/product/customerservice/index?params=" +
+      //     encodeURIComponent(JSON.stringify(params)),
+      // });
+      // // #endif
+      // // #ifndef MP-WEIXIN
+      // const sign = this.storeDetail.yzfSign;
+      // uni.navigateTo({
+      //   url:
+      //     "/pages/tabbar/home/web-view?src=https://yzf.qq.com/xv/web/static/chat/index.html?sign=" +
+      //     sign,
+      // });
+      // // #endif
+
+    },
+    /**閫夋嫨鍟嗗搧 */
+    changedGoods (val) {
+      this.selectedGoods = val;
+    },
+
+    /**  鐐瑰嚮瀛愮骇鍦板潃鍥炶皟鍙傛暟*/
+    deliveryFun (val) {
+      this.delivery = val;
+    },
+    /**
+     * 鍦板潃瀛愮骇鍏抽棴鍥炶皟
+     */
+    closePopupAddress (val) {
+      this.addressFlag = val;
+      // this.maskFlag = false;
+    },
+    /**
+     * 鍟嗗搧瑙勬牸瀛愮骇鍏抽棴鍥炶皟
+     */
+    closePopupBuy (val) {
+      this.buyMask = val;
+      // this.maskFlag = false;
+    },
+
+    /** 鍙備笌鎷煎洟  鍒涘缓鎷煎洟 */
+    toAssembleBuyNow (order) {
+      this.shutMask(4, "PINTUAN", order);
+    },
+    /**
+     * 鏌ョ湅璐墿杞�
+     */
+    reluchToCart () {
+		console.log('鐐瑰嚮浜嗚喘鐗╄溅-----------------------銆�')
+      let obj = {
+        from: "product",
+        id: this.productId,
+      };
+      storage.setCartBackbtn(obj);
+      uni.redirectTo({
+        url: "/pages/cusbar/cart/cartList",
+      });
+    },
+
+    /**
+     * 鏌ヨ璐墿杞︽�绘暟閲�
+     */
+    cartCount () {
+      if (storage.getHasLogin()) {
+        API_trade.getCartNum().then((res) => {
+          this.nums = res.data.result;
+        });
+      }
+    },
+
+    /**
+     * 杩斿洖
+     */
+    back () {
+      if (getCurrentPages().length == 1) {
+        uni.redirectTo({
+            url: "/pages/commodity-square/commoditySquare",
+        });
+      } else {
+        uni.navigateBack();
+      }
+    },
+
+    /**
+     * 鑾峰彇搴楅摵淇℃伅
+     */
+    getStoreBaseInfoFun (id) {
+      API_store.getStoreBaseInfo(id).then((res) => {
+        if (res.data.success) {
+          this.storeDetail = res.data.result;
+        }
+      });
+    },
+
+    /**
+     * 鍒犻櫎鏀惰棌搴楅摵
+     */
+    deleteGoodsCollectionFun (id) {
+      API_Members.deleteGoodsCollection(id).then((res) => {
+        if (res.statusCode == 200) {
+          uni.showToast({
+            title: "鍟嗗搧宸插彇娑堟敹钘�!",
+            icon: "none",
+          });
+          this.favorite = !this.favorite;
+        }
+      });
+    },
+
+    /**
+     * 鑾峰彇鍟嗗搧鏄惁宸茶鏀惰棌
+     */
+    getGoodsCollectionFun (goodsId) {
+      if (storage.getHasLogin()) {
+        API_Members.getGoodsIsCollect("GOODS", goodsId).then((res) => {
+          this.favorite = res.data.result;
+        });
+      }
+    },
+
+    /**
+     * 鑾峰彇搴楅摵鎺ㄨ崘鍟嗗搧鍒楄〃
+     */
+    getStoreRecommend () {
+      getGoodsList({
+        pageNumber: 1,
+        pageSize: 6,
+        storeId: this.goodsDetail.storeId,
+        recommend: true,
+      }).then((res) => {
+        this.recommendList = res.data.result.records;
+      });
+    },
+
+    /**
+     * 鑾峰彇鐩镐技鍟嗗搧鍒楄〃
+     *
+     */
+    getOtherLikeGoods () {
+      getGoodsList({
+        pageNumber: 1,
+        pageSize: 10,
+        category: this.goodsDetail.categoryId,
+        keyword: this.goodsDetail.name,
+      }).then((res) => {
+        this.likeGoodsList = res.data.result.records;
+      });
+    },
+
+    /**
+     * 棰嗗彇浼樻儬鍒�
+     */
+    receiveCouponsFun (id) {
+      API_Members.receiveCoupons(id).then((res) => {
+        uni.showToast({
+          title: res.data.message,
+          icon: "none",
+        });
+      });
+    },
+
+    /**
+     * 璺宠浆鍒板簵閾洪〉闈�
+     */
+    navigateToStore (store_id) {
+      uni.navigateTo({
+        url: `/pages/product/shopPage?id=` + store_id,
+      });
+    },
+
+    /**
+     * 鑾峰彇浼樻儬鍒告寜閽�
+     */
+    getCoupon (item) {
+      this.receiveCouponsFun(item.id);
+    },
+
+    /**
+     * 瑙勬牸寮圭獥寮�鍏�
+     */
+    shutMask (flag, buyFlag, type) {
+      this.promotionShow = false;
+      this.buyMask = false;
+      this.addressFlag = false;
+      if (flag) {
+        switch (flag) {
+          case 1: //浼樻儬鍒稿脊绐�
+            this.promotionShow = true;
+
+            break;
+          case 3:
+            this.addressFlag = true;
+            break;
+          case 4: //娣诲姞璐墿杞︾洿鎺ヨ喘涔帮紝鏌ョ湅宸查�� 寮圭獥
+            // 鍒ゆ柇鏄惁鏄竴涓鏍�
+
+            this.buyMask = true;
+            if (buyFlag == "PINTUAN") {
+              if (type.orderSn) {
+                this.$refs.popupGoods.parentOrder = type;
+              }
+              this.$refs.popupGoods.buyType = "PINTUAN";
+            }
+            if (buyFlag == "buy") {
+              this.$refs.popupGoods.buyType = "";
+            }
+
+            break;
+        }
+      }
+    },
+
+    /**
+     * 鏀惰棌
+     */
+    clickFavorite (id) {
+      if (this.favorite) {
+        // 鍙栨秷鏀惰棌
+        this.deleteGoodsCollectionFun(id);
+        return false;
+      }
+      API_Members.collectionGoods("GOODS", id).then((res) => {
+        if (res.data.success) {
+          uni.showToast({
+            title: "鏀惰棌鎴愬姛!",
+            icon: "none",
+          });
+        }
+      });
+      this.favorite = !this.favorite;
+    },
+
+    /**
+     * 椤堕儴header鏄剧ず鎴栭殣钘�
+     */
+    pageScroll (e) {
+      if (this.scrollFlag) {
+        this.calcSize();
+      }
+      if (e.detail.scrollTop > 200) {
+        //褰撹窛绂诲ぇ浜�200鏃舵樉绀哄洖鍒伴《閮ㄦ寜閽�
+        this.headerFlag = true;
+      } else {
+        //褰撹窛绂诲皬浜�200鏃堕殣钘忓洖鍒伴《閮ㄦ寜閽�
+        this.headerFlag = false;
+      }
+      if (e.detail.scrollTop < this.scrollArr[0] - 10) {
+        this.scrollId = "1";
+      }
+      if (e.detail.scrollTop > this.scrollArr[1] - 10) {
+        this.scrollId = "2";
+      }
+      if (e.detail.scrollTop > this.scrollArr[2] - 10) {
+        this.scrollId = "3";
+      }
+      if (e.detail.scrollTop > this.scrollArr[3] - 10) {
+        this.scrollId = "4";
+      }
+    },
+
+    /**
+     * 璁$畻姣忎釜瑕佽烦杞埌鐨勬ā鍧楅珮搴︿俊鎭�
+     */
+    calcSize () {
+      let h = 0;
+      let that = this;
+      let arr = [
+        "main1",
+        "main2",
+        "main3",
+        "main4",
+        "main5",
+        "main6",
+        "main7",
+        "main8",
+        "main9",
+        "main10",
+        "main11",
+      ];
+      arr.forEach((item) => {
+        let view = uni.createSelectorQuery().select("#" + item);
+        view
+          .fields(
+            {
+              size: true,
+            },
+            (data) => {
+              if (
+                item === "main1" ||
+                item === "main5" ||
+                item === "main9" ||
+                item === "main11"
+              ) {
+                that.scrollArr.push(h);
+              }
+              if (data && data.height) {
+                h += data.height;
+              }
+            }
+          )
+          .exec();
+      });
+      this.scrollFlag = false;
+    },
+
+    /**
+     * 鐐瑰嚮椤堕儴璺宠浆鍒板搴斾綅缃�
+     */
+    headerTab (id) {
+      if (this.scrollFlag) {
+        this.calcSize();
+      }
+      this.scrollId = id;
+
+      this.$nextTick(() => {
+        this.tabScrollTop = this.scrollArr[id - 1];
+      });
+    },
+
+    /**
+     * 鐐瑰嚮鍒嗕韩
+     */
+    async shareChange () {
+      this.enableShare = true;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+// #ifdef MP-WEIXIN
+@import "../../../product/product/mp-goods.scss";
+// #endif
+
+@import "../../../product/product/style.scss";
+@import "../../../product/product/product.scss";
+</style>
diff --git a/pages/video/video-goods-detail-swiper.vue b/pages/video/video-goods-detail-swiper.vue
new file mode 100644
index 0000000..b3a7622
--- /dev/null
+++ b/pages/video/video-goods-detail-swiper.vue
@@ -0,0 +1,1081 @@
+<template>
+	<view class="video-container">
+		<swiper class="video-swiper" :current="currentIndex" @change="onSwiperChange" 
+			easing-function="linear">
+			<swiper-item v-for="(item, index) in goodsList" :key="item.updateKey"
+			@touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd">
+
+				<div class="main-page">
+					<!-- #ifdef APP-PLUS -->
+					<view class="status_bar"></view>
+					<!-- #endif -->
+					<!-- 浠卙5鏈夋晥 鎵撳紑App -->
+
+					<!-- 鍒嗕韩 -->
+					<shares v-if="enableShare && goodsDetail.id" :skuId="item.id" :goodsId="item.goodsId" :link="'/pages/product/goods?id=' +
+						item.id +
+						'&goodsId=' +
+						item.goodsId
+						" :thumbnail="goodsDetail.thumbnail" :goodsName="goodsDetail.goodsName" type="goods"
+						@close="enableShare = false" />
+					<popups v-model="popupsSwitch" @tapPopup="handleNavbarList" :popData="navbarListData"
+						:x="navbarListX" :y="navbarListY" placement="top-start" />
+
+					<view class="product-container" :style="{ height: productRefHeight }" ref="productRef"
+						id="productRef">
+						<scroll-view scroll-anchoring enableBackToTop="true" scroll-with-animation scroll-y
+							class="scroll-page" :scroll-top="tabScrollTop" @scroll="pageScroll">
+							<view>
+								<!-- 杞挱鍥� -->
+
+								<GoodsSwiper id="main1" :res="imgList" :video="goodsDetail.goodsVideo" />
+
+								<!-- 淇冮攢娲诲姩鏉� -->
+								<PromotionAssembleLayout v-if="PromotionList" :detail="goodsDetail"
+									:res="PromotionList" />
+
+								<view class="card-box top-radius-0" id="main2">
+									<!-- 娲诲姩涓嶆樉绀轰环閽� -->
+									<view v-if="isSeckill || isGroup" class="desc-bold -goods-msg">
+										<view class="-goods-flex">
+											<view class="desc-bold">
+												{{ goodsDetail.goodsName || "" }}
+											</view>
+											<view class="favorite" @click="clickFavorite(goodsDetail.id)">
+												<u-icon size="30" :color="favorite ? '#f2270c' : '#262626'"
+													:name="favorite ? 'heart-fill' : 'heart'">
+												</u-icon>
+												<view :style="{ color: favorite ? '#f2270c' : '#262626' }">{{
+													favorite ? "宸叉敹钘�" : "鏀惰棌"
+												}}</view>
+											</view>
+										</view>
+										<!-- 鍟嗗搧鎻忚堪 -->
+										<view class="-goods-desc">
+											{{ goodsDetail.sellingPoint || "" }}
+										</view>
+									</view>
+									<view v-else class="-goods-msg">
+										<!-- 娌℃湁鎷煎洟锛岀鏉�绛夋椿鍔ㄧ殑鎯呭喌涓� -->
+										<view>
+											<view class="-goods-flex">
+												<!-- 濡傛灉鏈夌Н鍒嗘樉绀虹Н鍒� -->
+												<view class="-goods-price" v-if="goodsDetail.price != undefined">
+
+													<span>
+														<span v-if="wholesaleList.length">
+															<span>楼</span><span class="price">{{
+																$options.filters.goodsFormatPrice(wholesaleList[wholesaleList.length
+																	- 1].price)[0]
+															}}</span>.{{
+																	$options.filters.goodsFormatPrice(wholesaleList[wholesaleList.length
+																		- 1].price)[1]
+																}}
+															~
+															<span>楼</span><span class="price">{{
+																$options.filters.goodsFormatPrice(wholesaleList[0].price)[0]
+															}}</span>.{{
+																	$options.filters.goodsFormatPrice(wholesaleList[0].price)[1]
+																}}
+														</span>
+														<span v-else>
+															<span>楼</span><span class="price">{{
+																$options.filters.goodsFormatPrice(goodsDetail.price)[0]
+															}}</span>.{{
+																	$options.filters.goodsFormatPrice(goodsDetail.price)[1] }}
+														</span>
+													</span>
+												</view>
+												<view class="-goods-price" v-else>
+													<div v-if="takeDownFromSale" class="price down-goods">
+														鏆傛棤鎶ヤ环
+													</div>
+													<span v-else>
+														楼<span class="price">0 </span>.00
+													</span>
+												</view>
+
+												<view class="icons share" @click="shareChange()">
+													<u-icon size="30" name="share-fill"></u-icon>
+													<view>鍒嗕韩</view>
+												</view>
+												<view class="icons" @click="clickFavorite(goodsDetail.id)">
+													<u-icon size="30" :color="favorite ? '#f2270c' : '#262626'"
+														:name="favorite ? 'heart-fill' : 'heart'"></u-icon>
+													<view :style="{ color: favorite ? '#f2270c' : '#262626' }">{{
+														favorite ? "宸叉敹钘�" : "鏀惰棌"
+													}}</view>
+												</view>
+											</view>
+											<view class="-goods-name desc-bold">
+												{{ goodsDetail.goodsName || "" }}
+											</view>
+											<view class="-goods-desc">
+												{{ goodsDetail.sellingPoint || "" }}
+											</view>
+										</view>
+									</view>
+								</view>
+
+								<view class="card-box">
+									<view class="card-flex" @click="shutMask(1)">
+										<view class="card-title"> 淇冮攢 </view>
+										<view class="card-content">
+											<span v-if="PromotionList && emptyPromotion()">鏆傛棤淇冮攢淇℃伅</span>
+											<PromotionLayout v-else @shutMasks="shutMask" :res="PromotionList" />
+										</view>
+										<view class="card-bottom">
+											<u-icon name="more-dot-fill"></u-icon>
+										</view>
+									</view>
+								</view>
+
+								<!-- 鎷煎洟鐢ㄦ埛鍒楄〃 -->
+								<PromotionAssembleListLayout v-if="isGroup" @to-assemble-buy-now="toAssembleBuyNow"
+									:res="PromotionList" />
+
+								<!-- 閰嶇疆鍦板潃 濡傛灉鏄櫄鎷熶骇鍝佺殑鏃跺�欎笉灞曠ず -->
+								<view class="card-box" v-if="goodsDetail.goodsType != 'VIRTUAL_GOODS'">
+									<view class="card-flex" @click="shutMask(4)">
+										<view class="card-title"> 鍙�夎鏍� </view>
+										<view class="card-content">
+											<span v-if="selectedGoods.spec">{{ selectedGoods.spec.specName }}-{{
+												selectedGoods.spec.specValue
+											}}</span>
+											<span v-else>榛樿</span>
+										</view>
+										<view class="card-bottom">
+											<u-icon name="more-dot-fill"></u-icon>
+										</view>
+									</view>
+									<view class="card-flex" @click="shutMask(3)">
+										<view class="card-title"> 閫佽嚦</view>
+										<view class="card-content">
+											<span v-if="delivery">{{
+												delivery.consigneeAddressPath | clearStrComma
+											}}</span>
+											<span v-else>鏆傛棤鍦板潃淇℃伅</span>
+										</view>
+										<view class="card-bottom">
+											<u-icon name="more-dot-fill"></u-icon>
+										</view>
+									</view>
+								</view>
+
+								<!-- 璇勪环 -->
+								<Evaluation id="main5" :goodsDetail="goodsDetail" />
+
+								<!-- 搴楅摵鎺ㄨ崘 -->
+								<storeLayout v-if="false" id="main7" :storeDetail="storeDetail"
+									:goodsDetail="goodsDetail" :res="recommendList" />
+
+								<!-- 瀹濊礉璇︽儏 -->
+								<GoodsIntro id="main9" :res="goodsDetail" :goodsParams="goodsParams"
+									:goodsId="goodsDetail.goodsId" v-if="goodsDetail.id" />
+
+								<!-- 瀹濊礉鎺ㄨ崘 -->
+								<GoodsRecommend id="main11" :res="likeGoodsList" v-if="false" />
+							</view>
+						</scroll-view>
+
+
+						<view class="page-bottom mp-iphonex-bottom" id="pageBottom">
+							<view class="icon-btn">
+								<view class="icon-btn-item" @click="navigateToStore(goodsDetail.storeId)">
+									<u-icon size="34" class="red" name="home-fill"></u-icon>
+									<view class="red icon-btn-name">搴楅摵</view>
+								</view>
+								<view class="icon-btn-item" @click="linkMsgDetail()">
+									<u-icon size="34" name="kefu-ermai"></u-icon>
+									<view class="icon-btn-name">瀹㈡湇</view>
+								</view>
+								<view class="icon-btn-item" @click="reluchToCart()">
+									<u-icon size="34" name="storeping-cart"></u-icon>
+									<view class="icon-btn-name">璐墿杞�</view>
+									<view v-if="nums && nums > 0" class="num-icon">{{ nums }}</view>
+								</view>
+							</view>
+							<!-- 涓嬫灦灞曠ず -->
+							<!--        <div class="detail-btn" v-if="takeDownFromSale">
+          <view class="to-store-car to-store-btn"  @click="reStartTakeDownSale">
+            鏌ョ湅绫讳技鍟嗗搧</view>
+        </div> -->
+							<!-- 姝e父缁撶畻椤甸潰 -->
+							<view class="detail-btn" v-if="!isGroup && !takeDownFromSale">
+								<view class="to-store-car to-store-btn" v-if="goodsDetail.goodsType != 'VIRTUAL_GOODS'"
+									@click="shutMask(4)">
+									鍔犲叆璐墿杞�</view>
+								<view class="to-buy to-store-btn" @click="shutMask(4, 'buy')">绔嬪嵆璐拱</view>
+								<view class="to-store-car to-store-btn" v-if="startTimer">鏆傛湭寮�濮�</view>
+							</view>
+							<!-- 鎷煎洟缁撶畻 -->
+							<view class="detail-btn" v-else-if="isGroup">
+								<view class="to-store-car pt-buy to-store-btn" @click="shutMask(4, 'buy')">
+									<view>锟{ goodsDetail.price | unitPrice }}</view>
+									<view>鍗曠嫭璐拱</view>
+								</view>
+								<view class="to-buy pt-buy to-store-btn" @click="toAssembleBuyNow">
+									<view>锟{ goodsDetail.promotionPrice | unitPrice }}</view>
+									<view>鎷煎洟浠锋牸</view>
+								</view>
+							</view>
+						</view>
+						<!-- 瑙勬牸-妯℃�佸眰寮圭獥 -->
+						<view class="spec">
+							<!-- 淇冮攢寮圭獥 -->
+							<u-popup v-model="promotionShow" :height="setup.height" :mode="setup.mode"
+								:border-radius="setup.radius" @close="promotionShow = false"
+								:mask-close-able="setup.close" closeable>
+								<view class="header-title">浼樻儬</view>
+								<view class="cuxiao">
+									<scroll-view class="scroll_mask" :scroll-y="true">
+										<view class="con-cuxiao">
+											<view class="cuxiao-title">淇冮攢娲诲姩</view>
+											<PromotionDetailsLayout :res="PromotionList" />
+										</view>
+										<view class="con-cuxiao coupons">
+											<view class="cuxiao-title">鍙浼樻儬鍒�</view>
+											<PromotionCoupon @getCoupon="getCoupon" :res="PromotionList" />
+										</view>
+									</scroll-view>
+								</view>
+							</u-popup>
+
+							<!-- 閰嶉�佸湴鍧�寮圭獥 -->
+							<popupAddress @closeAddress="closePopupAddress" @deliveryData="deliveryFun"
+								v-if="goodsDetail.id" :goodsId="goodsDetail.id" :addressFlag="addressFlag" />
+
+							<!-- 鍟嗗搧瑙勬牸  鍟嗗搧璇︽儏锛屼互鍙婇粯璁ゅ弬涓庢椿鍔ㄧ殑id-->
+							<popupGoods :addr="delivery" ref="popupGoods" @changed="changedGoods"
+								@closeBuy="closePopupBuy" @queryCart="cartCount()" :goodsDetail="goodsDetail"
+								:goodsSpec="goodsSpec" :isGroup="isGroup" :id="productId" v-if="goodsDetail.id"
+								:pointDetail="pointDetail" :wholesaleList="wholesaleList" @handleClickSku="selectSku"
+								:buyMask="buyMask" />
+
+
+							<!-- 涓嬫灦妗� -->
+							<takeDownFormSaleGoods ref="takeDownSale" v-if="takeDownFromSale" />
+						</view>
+					</view>
+				</div>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+<script>
+import '@/components/uview-components/uview-ui';
+
+
+/************鎺ュ彛API***************/
+import { getGoods, getGoodsList, getMpScene, getGoodsDistribution } from "@/api/goods.js";
+import * as API_trade from "@/api/trade.js";
+import * as API_Members from "@/api/members.js";
+import * as API_store from "@/api/store.js";
+import { getIMDetail } from "@/api/common";
+import { modelNavigateTo } from "@/pages/tabbar/home/template/tpl.js";
+/************璇锋眰瀛樺偍***************/
+import storage from "@/utils/storage.js";
+
+/************缁勪欢***************/
+import PromotionLayout from "@/pages/product/product/promotion/-promotion.vue"; //淇冮攢缁勪欢
+import PromotionDetailsLayout from "@/pages/product/product/promotion/-promotion-details.vue"; //淇冮攢娲诲姩璇︽儏
+import PromotionAssembleLayout from "@/pages/product/product/promotion/-promotion-assemble-promotions.vue"; //淇冮攢娲诲姩鏉�
+import PromotionAssembleListLayout from "@/pages/product/product/promotion/-promotion-assemble-list.vue"; //鎷煎洟鐢ㄦ埛鍒楄〃
+import PromotionCoupon from "@/pages/product/product/promotion/-promotion-coupon.vue"; //浼樻儬鍒哥粍浠�
+import GoodsIntro from "@/pages/product/product/goods/-goods-intro.vue"; //鍟嗗搧浠嬬粛缁勪欢
+import GoodsRecommend from "@/pages/product/product/goods/-goods-recommend.vue"; //瀹濊礉鎺ㄨ崘
+import storeLayout from "@/pages/product/product/shop/-shop.vue"; //搴楅摵缁勪欢
+import Evaluation from "@/pages/product/product/evaluation/-evaluation"; //璇勪环缁勪欢
+import GoodsSwiper from "@/pages/product/product/goods/-goods-swiper.vue"; //杞挱鍥剧粍浠�
+import popupGoods from "@/pages/product/m-buy/goods.vue"; //璐墿杞﹀晢鍝佺殑妯″潡
+import popupAddress from "@/pages/product/product/popup/address.vue"; //鍦板潃閫夋嫨妯″潡
+import shares from "@/pages/product/m-share/index.vue"; //鍒嗕韩
+import popups from "@/pages/product/popups/popups.vue"; //姘旀场妗�
+import takeDownFormSaleGoods from "@/pages/product/m-take-down-sale-goods/index.vue"; //涓嬫灦妗�
+import setup from "@/pages/product/product/popup/popup.js";
+
+import { getGoodsDetail } from "@/api/video.js"
+import {
+	getSTSToken
+} from '@/api/common.js'
+export default {
+	components: {
+		popups,
+		shares,
+		PromotionLayout,
+		PromotionDetailsLayout,
+		PromotionAssembleLayout,
+		PromotionAssembleListLayout,
+		PromotionCoupon,
+		GoodsIntro,
+		GoodsRecommend,
+		storeLayout,
+		Evaluation,
+		GoodsSwiper,
+		popupGoods,
+		popupAddress,
+		takeDownFormSaleGoods
+	},
+	data() {
+		return {
+			setup,
+			promotionShow: false, //寮圭獥寮�鍏�
+			// #ifdef H5
+			navbarListX: 110, //瀵艰埅鏍忓垪琛ㄦ爮x杞�
+			navbarListY: 80, //瀵艰埅鏍忓垪琛ㄦ爮y杞�
+			// #endif
+			// #ifdef MP-WEIXIN
+			navbarListX: 100, //瀵艰埅鏍忓垪琛ㄦ爮x杞�
+			navbarListY: 140, //瀵艰埅鏍忓垪琛ㄦ爮y杞�
+			// #endif
+			// #ifdef APP-PLUS
+			navbarListX: 120, //瀵艰埅鏍忓垪琛ㄦ爮x杞�
+			navbarListY: 170, //瀵艰埅鏍忓垪琛ㄦ爮y杞�
+			// #endif
+			navbarListData: [
+				//瀵艰埅鏍忓垪琛ㄦ爮鏁版嵁
+				// {
+				//   title: "棣栭〉",
+				//   icon: "home-fill",
+				//   ___type: "other",
+				// },
+				{
+					title: "璐墿杞�",
+					icon: "bag-fill",
+					___type: "other",
+				},
+				// {
+				//   title: "鎼滅储",
+				//   icon: "search",
+				//   ___type: "category",
+				// },
+				{
+					title: "涓汉涓績",
+					icon: "account-fill",
+					___type: "other",
+				},
+			],
+			goodsList: [],
+			currentIndex: 0,
+			popupsSwitch: false, //瀵艰埅鏍忓垪琛ㄦ爮寮�鍏�
+			enableShare: false,
+			selectedGoods: "", //閫夋嫨鐨勫晢鍝佽鏍兼樀绉�
+			isGroup: false, // 鏄惁鏄嫾鍥㈡椿鍔�
+			isSeckill: false, // 鏄惁绉掓潃娲诲姩
+			pointDetail: "", // 鏄惁鏄Н鍒嗗晢鍝�
+			assemble: "", //鎷煎洟鐨剆ku
+			navbarOnlyBack: {
+				background: "transparent",
+			},
+			navbar: {
+				background: "#fff",
+			},
+
+			productRefHeight: "",
+			header: {
+				top: 0,
+				height: 50,
+			},
+			goodsParams: [], // 鍟嗗搧鍙傛暟
+			headerFlag: false, //椤堕儴瀵艰埅鏄剧ず涓庡惁
+			headerList: [
+				//椤堕儴瀵艰埅鏂囧瓧鎸夌収瑙勫垯鏉� 璇︽儏鍏ㄥ眬鎼滅储
+				{
+					text: "鍟嗗搧",
+					id: "1",
+				},
+				{
+					text: "璇勪环",
+					id: "2",
+				},
+				{
+					text: "璇︽儏",
+					id: "3",
+				},
+				// {
+				//   text: "鎺ㄨ崘",
+				//   id: "4",
+				// },
+			],
+			tabScrollTop: null,
+			scrollArr: [],
+			scrollId: "1",
+			scrollFlag: true,
+			current: "1", //褰撳墠鏄剧ず鐨勮疆鎾浘椤�
+			goodsDetail: {}, //鍟嗗搧鏁版嵁
+			goodsSpec: "", //瑙勬牸鏁版嵁
+			imgList: [], //杞挱鍥炬暟鎹�
+			favorite: false, //鏀惰棌涓庡惁flag
+			recommendList: [], //鎺ㄨ崘鍒楄〃
+			// maskFlag: false, //妯℃�佹樉绀轰笌鍚�
+			goodsInfo: false, //鍟嗗搧浠嬬粛寮圭獥
+			addressFlag: false, //閰嶉�佸湴鍧�寮圭獥
+			buyMask: false, //娣诲姞璐墿杞︾洿鎺ヨ喘涔帮紝鏌ョ湅宸查�� 寮圭獥
+			num: 1, //娣诲姞鍒拌喘鐗╄溅鐨勬暟閲�
+			skuId: "", //
+			storeDetail: "", //搴楅摵鍩烘湰淇℃伅,
+			// 搴楅摵淇℃伅
+			storeParams: {
+				pageNumber: 1,
+				pageSize: 10,
+			},
+
+			likeGoodsList: "", //鐩镐技鍟嗗搧鍒楄〃
+			PromotionList: "", //娲诲姩,淇冮攢锛屽垪琛�
+			specList: [],
+			selectedSpec: [],
+			nums: 0,
+			delivery: "",
+
+			exchange: {},
+			productId: 0,
+
+			startTimer: false, //鏈紑鍚� 鏄痜alse
+
+			routerVal: "",
+			IMLink: "", // IM鍦板潃
+			wholesaleList: [],
+			takeDownFromSale: false, // 涓嬫灦閿�鍞姸鎬�
+			touchStartX: 0,
+			touchEndX: 0,
+			minSwipeDistance: 100, // 鏈�灏忔粦鍔ㄨ窛绂伙紝鐢ㄤ簬鍒ゆ柇鏄惁涓烘湁鏁堟粦鍔�
+		};
+	},
+
+	computed: {
+		// udesk IM 
+		IM() {
+			return this.IMLink + this.storeDetail.merchantEuid;
+		},
+	},
+
+	props: ["id", "goodsId"],
+	mounted() {
+		const { windowHeight } = uni.getSystemInfoSync();
+		let bottomHeight = 0;
+		let topHeight = 0;
+		uni.getSystemInfo({
+			success: function (res) {
+				// res - 鍚勭鍙傛暟
+				let bottom = uni.createSelectorQuery().select(".page-bottom");
+				bottom
+					.boundingClientRect(function (data) {
+						if (data && data.height) {
+							//data - 鍚勭鍙傛暟
+							bottomHeight = data.height; // 鑾峰彇鍏冪礌瀹藉害
+						}
+					})
+					.exec();
+				let top = uni.createSelectorQuery().select(".header");
+				top
+					.boundingClientRect(function (data) {
+						if (data && data.height) {
+							//data - 鍚勭鍙傛暟
+							topHeight = data.height; // 鑾峰彇鍏冪礌瀹藉害
+						}
+					})
+					.exec();
+			},
+		});
+
+		this.productRefHeight = windowHeight - bottomHeight + "px";
+	},
+	async onLoad(options) {
+		this.videoId = options.videoId;
+		this.getGoodsList();
+
+		// #ifdef MP-WEIXIN
+		// 灏忕▼搴忛粯璁ゅ垎浜�
+		uni.showShareMenu({
+			withShareTicket: true,
+			menus: ["shareAppMessage", "shareTimeline"],
+		});
+		// #endif
+	},
+	async onShow() {
+		// this.goodsDetail = {};
+		// debugger
+		// //濡傛灉鏈夊弬鏁癷ds璇存槑浜嬪垎閿�鐭繛鎺ワ紝闇�瑕佽幏鍙栧弬鏁�
+		// if (this.routerVal.scene) {
+		// 	getMpScene(this.routerVal.scene).then((res) => {
+		// 		if (res.data.success) {
+		// 			let data = res.data.result.split(","); // skuId,goodsId,distributionId
+		// 			this.init(data[0], data[1], data[2]);
+		// 		}
+		// 	});
+		// } else {
+		// 	this.init(this.routerVal.id, this.routerVal.goodsId, this.routerVal.distributionId);
+		// }
+	},
+
+	methods: {
+		// 鑾峰彇鍟嗗搧鍒楄〃
+		async getGoodsList() {
+			getGoodsDetail(this.videoId).then(res => {
+				this.goodsList = res.data.data
+				if (this.goodsList != null && this.goodsList.length > 0) {
+					var goods = this.goodsList[0]
+					this.init(goods.id, goods.goodsId)
+				}
+			})
+		},
+		// 瑙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;
+		},
+		// 閲嶆柊鎵撳紑涓嬫灦
+		reStartTakeDownSale() {
+			this.$refs.takeDownSale.show = true
+		},
+		share() {
+			return `/pages/product/goods?id=${this.routerVal.id}&goodsId=${this.routerVal.goodsId}`;
+		},
+		/**
+		 * 瀵艰埅鏍忓垪琛ㄦ爮
+		 */
+		handleNavbarList(val) {
+			modelNavigateTo({ url: val });
+		},
+
+		/**
+		 * 寰幆鍑哄綋鍓嶄績閿�鏄惁涓虹┖
+		 */
+		emptyPromotion() {
+			if (
+				this.PromotionList == "" ||
+				this.PromotionList == null ||
+				this.PromotionList == []
+			) {
+				return true;
+			}
+		},
+		selectSku(idObj) {
+			this.init(idObj.skuId, idObj.goodsId);
+		},
+		/**
+		 * 鍒濆鍖栦俊鎭�
+		 */
+		async init(id, goodsId, distributionId = "") {
+			console.log('鎵撳嵃id:' + id)
+			console.log('鎵撳嵃goodsId:' + goodsId)
+			this.isGroup = false; //鍒濆鍖栨嫾鍥�
+			this.productId = id; // skuId
+			// 杩欓噷璇锋眰鑾峰彇鍒伴〉闈㈡暟鎹�  瑙f瀽鏁版嵁
+
+			let response = await getGoods(id || 'undefined', goodsId);
+
+			// 鍒ゆ柇褰撳墠鎺ュ彛杩斿洖鍐呭 
+			if (!response.data.success) {
+				// 鍟嗗搧宸蹭笅鏋�
+				if (response.data.code == 11001) {
+					this.takeDownFromSale = true
+				}
+				// setTimeout(() => {
+				//   uni.navigateBack();
+				// }, 500);
+			}
+			// 杩欓噷鏄粦瀹氬垎閿�鍛�
+			if (distributionId || this.$store.state.distributionId) {
+				let disResult = await getGoodsDistribution(distributionId);
+				if (!disResult.data.success || disResult.statusCode == 403) {
+					this.$store.state.distributionId = distributionId;
+				}
+			}
+			const sts = await getSTSToken();
+			const stsUrl = sts.data.data.endpoint
+			// // 澶勭悊鏁版嵁
+			// goodsList.data.result.records.forEach(item => {
+			// 	if (item.thumbnail !== '' && item.thumbnail !== null && item.thumbnail.indexOf('http') ===
+			// 		-1) {
+			// 		item.thumbnail = stsUrl + '/' + item.thumbnail
+			// 	}
+			// 	if (item.goodsVideo !== '' && item.goodsVideo !== null && item.goodsVideo.indexOf(
+			// 			'http') === -1) {
+			// 		item.goodsVideo = stsUrl + '/' + item.goodsVideo
+			// 	}
+			// })
+			/**鍟嗗搧淇℃伅浠ュ強瑙勬牸淇℃伅瀛樺偍 */
+			console.log('--------------------------1>', response.data.result.data.goodsGalleryList)
+			response.data.result.data.goodsGalleryList.forEach((item, index) => {
+				if (item !== '' && item !== null && item.indexOf('http') ===
+					-1) {
+					response.data.result.data.goodsGalleryList[index] = stsUrl + '/' + item
+					console.log('鏄惁鎵ц-------------銆�', item)
+				}
+			})
+			console.log('--------------------------2>', response.data.result.data.goodsGalleryList)
+			this.goodsDetail = response.data.result.data;
+			if (this.goodsDetail.goodsVideo !== '' && this.goodsDetail.goodsVideo !== null && this.goodsDetail.goodsVideo.indexOf(
+				'http') === -1) {
+				this.goodsDetail.goodsVideo = stsUrl + '/' + this.goodsDetail.goodsVideo
+			}
+			console.log('--------------------------2>', this.goodsDetail.goodsGalleryList)
+			this.wholesaleList = response.data.result.wholesaleList;
+			this.goodsSpec = response.data.result.specs;
+			this.PromotionList = response.data.result.promotionMap;
+			this.goodsParams = response.data.result.goodsParamsDTOList || [];
+			console.log('浼樻儬鍗锋椿鍔�--------------------銆�', response.data.result.promotionMap)
+			// 鍒ゆ柇鏄惁鎷煎洟娲诲姩鎴栬�呯Н鍒嗗晢鍝� 濡傛灉鏈夊垯鏄剧ず鎷煎洟娲诲姩淇℃伅
+			this.PromotionList &&
+				Object.keys(this.PromotionList).forEach((item) => {
+					// 鎷煎洟鍟嗗搧
+					if (item.indexOf("PINTUAN") == 0) {
+						this.isGroup = true;
+					}
+
+					// 绉掓潃
+					if (item.indexOf("SECKILL") == 0) {
+						this.isSeckill = true
+					}
+				});
+			// 杞挱鍥�
+			this.imgList = this.goodsDetail.goodsGalleryList.filter(i => i.indexOf("\"url\":") === -1 && i.indexOf("\"status\":") === -1);
+
+			// 鑾峰彇搴楅摵鍩烘湰淇℃伅
+			this.getStoreBaseInfoFun(this.goodsDetail.storeId);
+
+			// 鑾峰彇璐墿杞�
+			this.cartCount();
+
+			// 鑾峰彇搴楅摵鎺ㄨ崘鍟嗗搧
+			this.getStoreRecommend();
+
+			// 鑾峰彇鍟嗗搧鍒楄〃
+			this.getOtherLikeGoods();
+			// 鑾峰彇鍟嗗搧鏄惁宸茶鏀惰棌 濡傛灉鏈櫥褰曚笉鑾峰彇
+
+			if (this.$options.filters.isLogin("auth")) {
+				this.getGoodsCollectionFun(this.goodsDetail.id);
+			}
+			// 鑾峰彇IM 闇�瑕佺殑璇濅娇鐢�
+			// this.getIMDetailMethods();
+		},
+
+		async getIMDetailMethods() {
+			let res = await getIMDetail();
+			if (res.data.success) {
+				this.IMLink = res.data.result;
+			}
+		},
+
+		linkMsgDetail() {
+			// lili 鍩虹瀹㈡湇
+			this.$options.filters.talkIm(this.goodsDetail.storeId, this.routerVal.goodsId, this.routerVal.id)
+			// uni.navigateTo({
+			//   url: `/pages/mine/im/index?userId=${this.goodsDetail.storeId}&goodsid=${this.routerVal.goodsId}&skuid=${this.routerVal.id}`
+			// });
+
+			// udesk 浠g爜  
+			// if (this.storeDetail.merchantEuid) {
+			//   uni.navigateTo({
+			//     url: `/pages/tabbar/home/web-view?src=${this.IM}`,
+			//   });
+			// }
+
+
+			// 瀹㈡湇 浜戞櫤鏈嶄唬鐮� 
+			// // #ifdef MP-WEIXIN
+			// const params = {
+			//   storeName: this.storeDetail.storeName,
+			//   goodsName: this.goodsDetail.goodsName,
+			//   goodsId: this.goodsDetail.goodsId,
+			//   goodsImg: this.goodsDetail.thumbnail,
+			//   price: this.goodsDetail.promotionPrice || this.goodsDetail.price,
+			//   // originalPrice: this.goodsDetail.original || this.goodsDetail.price,
+			//   uuid: storage.getUuid(),
+			//   token: storage.getAccessToken(),
+			//   sign: this.storeDetail.yzfSign,
+			//   mpSign: this.storeDetail.yzfMpSign,
+			// };
+			// uni.navigateTo({
+			//   url:
+			//     "/pages/product/customerservice/index?params=" +
+			//     encodeURIComponent(JSON.stringify(params)),
+			// });
+			// // #endif
+			// // #ifndef MP-WEIXIN
+			// const sign = this.storeDetail.yzfSign;
+			// uni.navigateTo({
+			//   url:
+			//     "/pages/tabbar/home/web-view?src=https://yzf.qq.com/xv/web/static/chat/index.html?sign=" +
+			//     sign,
+			// });
+			// // #endif
+
+		},
+		/**閫夋嫨鍟嗗搧 */
+		changedGoods(val) {
+			this.selectedGoods = val;
+		},
+
+		/**  鐐瑰嚮瀛愮骇鍦板潃鍥炶皟鍙傛暟*/
+		deliveryFun(val) {
+			this.delivery = val;
+		},
+		/**
+		 * 鍦板潃瀛愮骇鍏抽棴鍥炶皟
+		 */
+		closePopupAddress(val) {
+			this.addressFlag = val;
+			// this.maskFlag = false;
+		},
+		/**
+		 * 鍟嗗搧瑙勬牸瀛愮骇鍏抽棴鍥炶皟
+		 */
+		closePopupBuy(val) {
+			this.buyMask = val;
+			// this.maskFlag = false;
+		},
+
+		/** 鍙備笌鎷煎洟  鍒涘缓鎷煎洟 */
+		toAssembleBuyNow(order) {
+			this.shutMask(4, "PINTUAN", order);
+		},
+		/**
+		 * 鏌ョ湅璐墿杞�
+		 */
+		reluchToCart() {
+			console.log('鐐瑰嚮浜嗚喘鐗╄溅-----------------------銆�')
+			let obj = {
+				from: "product",
+				id: this.productId,
+			};
+			storage.setCartBackbtn(obj);
+			uni.redirectTo({
+				url: "/pages/cusbar/cart/cartList",
+			});
+		},
+
+		/**
+		 * 鏌ヨ璐墿杞︽�绘暟閲�
+		 */
+		cartCount() {
+			if (storage.getHasLogin()) {
+				API_trade.getCartNum().then((res) => {
+					this.nums = res.data.result;
+				});
+			}
+		},
+
+		/**
+		 * 杩斿洖
+		 */
+		back() {
+			if (getCurrentPages().length == 1) {
+				uni.redirectTo({
+					url: "/pages/commodity-square/commoditySquare",
+				});
+			} else {
+				uni.navigateBack();
+			}
+		},
+
+		/**
+		 * 鑾峰彇搴楅摵淇℃伅
+		 */
+		getStoreBaseInfoFun(id) {
+			API_store.getStoreBaseInfo(id).then((res) => {
+				if (res.data.success) {
+					this.storeDetail = res.data.result;
+				}
+			});
+		},
+
+		/**
+		 * 鍒犻櫎鏀惰棌搴楅摵
+		 */
+		deleteGoodsCollectionFun(id) {
+			API_Members.deleteGoodsCollection(id).then((res) => {
+				if (res.statusCode == 200) {
+					uni.showToast({
+						title: "鍟嗗搧宸插彇娑堟敹钘�!",
+						icon: "none",
+					});
+					this.favorite = !this.favorite;
+				}
+			});
+		},
+
+		/**
+		 * 鑾峰彇鍟嗗搧鏄惁宸茶鏀惰棌
+		 */
+		getGoodsCollectionFun(goodsId) {
+			if (storage.getHasLogin()) {
+				API_Members.getGoodsIsCollect("GOODS", goodsId).then((res) => {
+					this.favorite = res.data.result;
+				});
+			}
+		},
+
+		/**
+		 * 鑾峰彇搴楅摵鎺ㄨ崘鍟嗗搧鍒楄〃
+		 */
+		getStoreRecommend() {
+			getGoodsList({
+				pageNumber: 1,
+				pageSize: 6,
+				storeId: this.goodsDetail.storeId,
+				recommend: true,
+			}).then((res) => {
+				this.recommendList = res.data.result.records;
+			});
+		},
+
+		/**
+		 * 鑾峰彇鐩镐技鍟嗗搧鍒楄〃
+		 *
+		 */
+		getOtherLikeGoods() {
+			getGoodsList({
+				pageNumber: 1,
+				pageSize: 10,
+				category: this.goodsDetail.categoryId,
+				keyword: this.goodsDetail.name,
+			}).then((res) => {
+				this.likeGoodsList = res.data.result.records;
+			});
+		},
+
+		/**
+		 * 棰嗗彇浼樻儬鍒�
+		 */
+		receiveCouponsFun(id) {
+			API_Members.receiveCoupons(id).then((res) => {
+				uni.showToast({
+					title: res.data.message,
+					icon: "none",
+				});
+			});
+		},
+
+		/**
+		 * 璺宠浆鍒板簵閾洪〉闈�
+		 */
+		navigateToStore(store_id) {
+			uni.navigateTo({
+				url: `/pages/product/shopPage?id=` + store_id,
+			});
+		},
+
+		/**
+		 * 鑾峰彇浼樻儬鍒告寜閽�
+		 */
+		getCoupon(item) {
+			this.receiveCouponsFun(item.id);
+		},
+
+		/**
+		 * 瑙勬牸寮圭獥寮�鍏�
+		 */
+		shutMask(flag, buyFlag, type) {
+			this.promotionShow = false;
+			this.buyMask = false;
+			this.addressFlag = false;
+			if (flag) {
+				switch (flag) {
+					case 1: //浼樻儬鍒稿脊绐�
+						this.promotionShow = true;
+
+						break;
+					case 3:
+						this.addressFlag = true;
+						break;
+					case 4: //娣诲姞璐墿杞︾洿鎺ヨ喘涔帮紝鏌ョ湅宸查�� 寮圭獥
+						// 鍒ゆ柇鏄惁鏄竴涓鏍�
+
+						this.buyMask = true;
+						if (buyFlag == "PINTUAN") {
+							if (type.orderSn) {
+								this.$refs.popupGoods.parentOrder = type;
+							}
+							this.$refs.popupGoods.buyType = "PINTUAN";
+						}
+						if (buyFlag == "buy") {
+							this.$refs.popupGoods.buyType = "";
+						}
+
+						break;
+				}
+			}
+		},
+
+		/**
+		 * 鏀惰棌
+		 */
+		clickFavorite(id) {
+			if (this.favorite) {
+				// 鍙栨秷鏀惰棌
+				this.deleteGoodsCollectionFun(id);
+				return false;
+			}
+			API_Members.collectionGoods("GOODS", id).then((res) => {
+				if (res.data.success) {
+					uni.showToast({
+						title: "鏀惰棌鎴愬姛!",
+						icon: "none",
+					});
+				}
+			});
+			this.favorite = !this.favorite;
+		},
+
+		/**
+		 * 椤堕儴header鏄剧ず鎴栭殣钘�
+		 */
+		pageScroll(e) {
+			if (this.scrollFlag) {
+				this.calcSize();
+			}
+			if (e.detail.scrollTop > 200) {
+				//褰撹窛绂诲ぇ浜�200鏃舵樉绀哄洖鍒伴《閮ㄦ寜閽�
+				this.headerFlag = true;
+			} else {
+				//褰撹窛绂诲皬浜�200鏃堕殣钘忓洖鍒伴《閮ㄦ寜閽�
+				this.headerFlag = false;
+			}
+			if (e.detail.scrollTop < this.scrollArr[0] - 10) {
+				this.scrollId = "1";
+			}
+			if (e.detail.scrollTop > this.scrollArr[1] - 10) {
+				this.scrollId = "2";
+			}
+			if (e.detail.scrollTop > this.scrollArr[2] - 10) {
+				this.scrollId = "3";
+			}
+			if (e.detail.scrollTop > this.scrollArr[3] - 10) {
+				this.scrollId = "4";
+			}
+		},
+
+		/**
+		 * 璁$畻姣忎釜瑕佽烦杞埌鐨勬ā鍧楅珮搴︿俊鎭�
+		 */
+		calcSize() {
+			let h = 0;
+			let that = this;
+			let arr = [
+				"main1",
+				"main2",
+				"main3",
+				"main4",
+				"main5",
+				"main6",
+				"main7",
+				"main8",
+				"main9",
+				"main10",
+				"main11",
+			];
+			arr.forEach((item) => {
+				let view = uni.createSelectorQuery().select("#" + item);
+				view
+					.fields(
+						{
+							size: true,
+						},
+						(data) => {
+							if (
+								item === "main1" ||
+								item === "main5" ||
+								item === "main9" ||
+								item === "main11"
+							) {
+								that.scrollArr.push(h);
+							}
+							if (data && data.height) {
+								h += data.height;
+							}
+						}
+					)
+					.exec();
+			});
+			this.scrollFlag = false;
+		},
+
+		/**
+		 * 鐐瑰嚮椤堕儴璺宠浆鍒板搴斾綅缃�
+		 */
+		headerTab(id) {
+			if (this.scrollFlag) {
+				this.calcSize();
+			}
+			this.scrollId = id;
+
+			this.$nextTick(() => {
+				this.tabScrollTop = this.scrollArr[id - 1];
+			});
+		},
+		onSwiperChange(e) {
+			if (e.detail.current == -1) {
+				uni.navigateBack();
+			}
+			this.currentIndex = e.detail.current;
+			var goods = this.goodsList[this.currentIndex];
+			this.init(goods.id, goods.goodsId);
+		},
+		/**
+		 * 鐐瑰嚮鍒嗕韩
+		 */
+		async shareChange() {
+			this.enableShare = true;
+		},
+
+		// 娣诲姞瑙︽懜寮�濮嬩簨浠跺鐞嗗嚱鏁�
+		handleTouchStart(e) {
+			this.touchStartX = e.touches[0].clientX;
+		},
+		
+		// 娣诲姞瑙︽懜绉诲姩浜嬩欢澶勭悊鍑芥暟
+		handleTouchMove(e) {
+			// 鍙互鍦ㄨ繖閲屾坊鍔犱竴浜涜瑙夊弽棣堬紝濡傛灉闇�瑕佺殑璇�
+		},
+		
+		// 娣诲姞瑙︽懜缁撴潫浜嬩欢澶勭悊鍑芥暟
+		handleTouchEnd(e) {
+			this.touchEndX = e.changedTouches[0].clientX;
+			
+			// 璁$畻姘村钩婊戝姩璺濈
+			const swipeDistance = this.touchEndX - this.touchStartX;
+			
+			// 濡傛灉鏄湪绗竴涓晢鍝佽鎯呴〉(currentIndex=0)锛屽苟涓旀槸鍚戝彸婊戝姩(swipeDistance > minSwipeDistance)
+			if (this.currentIndex === 0 && swipeDistance > this.minSwipeDistance) {
+				// 杩斿洖棣栭〉
+				uni.navigateBack();
+			}
+		},
+	},
+};
+</script>
+
+<style lang="scss" scoped>
+.video-container {
+	width: 100%;
+	height: 100vh;
+	background-color: #000;
+}
+
+.video-swiper {
+	width: 100%;
+	height: calc(100% - 50px);
+}
+
+// #ifdef MP-WEIXIN
+@import "../product/product/mp-goods.scss";
+// #endif
+
+@import "../product/product/style.scss";
+@import "../product/product/product.scss";
+</style>
diff --git a/pages/video/video-similar.vue b/pages/video/video-similar.vue
new file mode 100644
index 0000000..6fc7b5d
--- /dev/null
+++ b/pages/video/video-similar.vue
@@ -0,0 +1,657 @@
+<template>
+	<view class="video-container">
+		<!-- 瑙嗛鍔犺浇 -->
+		<zero-loading v-show="videoLoading" type="circle" color="#0ebd57" text=""></zero-loading>
+		<!-- 瑙嗛鍒楄〃 -->
+		<swiper class="video-swiper" :current="currentIndex" @change="onSwiperChange" :duration="250"
+			easing-function="linear">
+			<swiper-item v-for="(item, index) in videoList" :key="item.updateKey" @touchstart="handleTouchStart"
+				@touchmove="handleTouchMove" @touchend="handleTouchEnd">
+				<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">
+							<!-- 鏄剧ず褰撳墠杩涘害 -->
+							<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>
+					</view>
+					<view style="width: 100%;word-wrap: break-word;white-space: normal;overflow-wrap: break-word;">
+						<text class="video-title">{{ item.title }}</text>
+						<text class="video-tag" v-for="(tag, index) in item.tagList" :key="tag.id">#{{ tag.tagName
+						}}</text>
+					</view>
+				</view>
+
+				<!-- 鍙充晶浜掑姩鎸夐挳 -->
+				<view class="action-buttons">
+					<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>
+
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import { getGoodsSimilarlyVideos, savePlayRecord, changeCollect, changeThumbsUp } from "@/api/video.js"
+
+export default {
+	data() {
+		return {
+			videoList: [], // 瑙嗛鍒楄〃
+			currentIndex: 0, // 褰撳墠鎾斁鐨勮棰戠储寮�
+			videoLoading: false, // 瑙嗛鍔犺浇鐘舵��
+			currentVideoIsPlaying: false, // 褰撳墠瑙嗛鏄惁姝e湪鎾斁
+			isControls: false, // 鏄惁鏄剧ず瑙嗛鎺у埗鏉�
+			videoLiveOffset: 1, // 棰勫姞杞借棰戞暟閲�
+			isFullScreen: false, // 鏄惁鍏ㄥ睆
+			on_screen: require('@/pages/tabbar/index/static/on_screen.png'),
+			off_screen: require('@/pages/tabbar/index/static/off_screen.png'),
+			marginBottom: 0, // 搴曢儴杈硅窛
+			progress: 0, // 瑙嗛鎾斁杩涘害
+			duration: 0, // 瑙嗛鎬绘椂闀�
+			currentTime: 0, // 褰撳墠鎾斁鏃堕棿
+			formartDuration: "00:00", // 鏍煎紡鍖栧悗鐨勬�绘椂闀�
+			hasPlayTime: "00:00", // 宸叉挱鏀炬椂闂�
+			isDragging: false, // 鏄惁姝e湪鎷栧姩杩涘害鏉�
+			isTouch: false, // 鏄惁瑙︽懜杩涘害鏉�
+			startX: 0, // 瑙︽懜寮�濮媂鍧愭爣
+			startProgress: 0, // 瑙︽懜寮�濮嬫椂鐨勮繘搴�
+			barWidth: 0, // 杩涘害鏉″搴�
+			processHidenTimer: null, // 杩涘害鏉¢殣钘忓畾鏃跺櫒
+			currentImgIndex: 0, // 褰撳墠鍥剧墖绱㈠紩
+			playRecord: { // 鎾斁璁板綍
+				videoId: null,
+				viewDuration: 0, // 瑙傜湅鏃堕暱
+				playAt: 0, // 鎾斁浣嶇疆
+				startPlayTime: 0 // 寮�濮嬫挱鏀炬椂闂�
+			},
+			totalHidenTime: 0, // 鎬婚殣钘忔椂闂�
+			totalPauseTime: 0, // 鎬绘殏鍋滄椂闂�
+			startPauseTime: 0, // 寮�濮嬫殏鍋滄椂闂�
+			// 鍙虫粦杩斿洖棣栭〉鐩稿叧
+			touchStartX: 0,
+			touchEndX: 0,
+			minSwipeDistance: 100 // 鏈�灏忔粦鍔ㄨ窛绂�
+		}
+	},
+	onLoad(options) {
+		// 鑾峰彇浼犻�掔殑鍟嗗搧淇℃伅
+		if (options.goodsId) {
+			this.loadSimilarVideos(options.goodsId, options.currentVideoId);
+		}
+	},
+	onShow() {
+		// 椤甸潰鏄剧ず鏃舵仮澶嶈棰戞挱鏀�
+		if (this.videoList.length > 0) {
+			const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this);
+			videoContext.play();
+		}
+	},
+	onHide() {
+		// 椤甸潰闅愯棌鏃舵殏鍋滆棰�
+		if (this.videoList.length > 0) {
+			const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this);
+			videoContext.pause();
+		}
+	},
+	methods: {
+		// 鍔犺浇鐩镐技瑙嗛
+		loadSimilarVideos(goodsId, currentVideoId) {
+			this.videoLoading = true;
+			const query = {
+				pageNumber: 1,
+				pageSize: 10,
+				currentVideoId: 0,
+				videoFrom: 'goodsSimilarly',
+				goodsIds: [goodsId]
+			};
+
+			getGoodsSimilarlyVideos(query).then(res => {
+				if (res.data.code === 200) {
+					if (res.data.data.length === 0) {
+						uni.navigateBack();
+					}
+					this.videoList = res.data.data;
+					this.videoLoading = false;
+				}
+			}).catch(err => {
+				console.error('鍔犺浇鐩镐技瑙嗛澶辫触', err);
+				this.videoLoading = false;
+			});
+		},
+
+		// 婊戝姩鍒囨崲瑙嗛
+		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;
+
+			// 澶勭悊鍙虫粦鍒扮涓�涓棰戞椂杩斿洖棣栭〉
+			if (e.detail.current === -1) {
+				uni.navigateBack();
+				return;
+			}
+
+			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();
+		},
+
+		// 澶勭悊瑙︽懜寮�濮嬩簨浠�
+		handleTouchStart(e) {
+			this.touchStartX = e.touches[0].clientX;
+		},
+
+		// 澶勭悊瑙︽懜绉诲姩浜嬩欢
+		handleTouchMove(e) {
+			this.touchEndX = e.touches[0].clientX;
+		},
+
+		// 澶勭悊瑙︽懜缁撴潫浜嬩欢
+		handleTouchEnd() {
+			// 璁$畻姘村钩婊戝姩璺濈
+			const swipeDistance = this.touchEndX - this.touchStartX;
+
+			// 濡傛灉鏄彸婊戜笖褰撳墠鏄涓�涓棰戯紝鍒欒繑鍥為椤�
+			if (swipeDistance > this.minSwipeDistance && this.currentIndex === 0) {
+				uni.navigateBack();
+			}
+
+			// 閲嶇疆瑙︽懜鍧愭爣
+			this.touchStartX = 0;
+			this.touchEndX = 0;
+		},
+
+		// 杩斿洖涓婁竴椤�
+		goBack() {
+			uni.navigateBack();
+		},
+
+		// 鍗曞嚮灞忓箷锛氭殏鍋滄垨缁х画鎾斁
+		togglePlay(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);
+				}
+			}
+			this.getBarRect();
+			this.progress = 0;
+			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) {
+			if (index === this.currentIndex) {
+				this.currentVideoIsPlaying = false;
+				this.startPauseTime = Date.now();
+			}
+		},
+
+		// 瑙嗛缁撴潫浜嬩欢
+		onEnded(index) {
+			// 鍙互娣诲姞瑙嗛缁撴潫鍚庣殑閫昏緫
+		},
+
+		// 璁板綍鎾斁鏃堕暱
+		onTimeUpdate(e) {
+			this.videoLoading = false;
+			this.playRecord.playAt = e.detail.currentTime;
+			this.currentTime = e.detail.currentTime;
+			this.progress = (e.detail.currentTime / this.duration) * 100;
+			this.hasPlayTime = this.sliderFormatTime(e.detail.currentTime);
+		},
+
+		// 鑾峰彇杩涘害鏉″搴�
+		getBarRect() {
+			const query = uni.createSelectorQuery().in(this);
+			query.select('#progressBar').boundingClientRect(data => {
+				if (data) {
+					this.barWidth = data.width;
+				}
+			}).exec();
+		},
+
+		// 鏍煎紡鍖栨椂闂�
+		sliderFormatTime(time) {
+			if (typeof time !== 'number' || isNaN(time)) {
+				return '00:00';
+			}
+			const minutes = Math.floor(time / 60);
+			const seconds = Math.floor(time % 60);
+			return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
+		},
+
+		// 淇濆瓨鎾斁璁板綍
+		savePlayRecord() {
+			if (!this.playRecord.videoId) return;
+
+			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);
+		},
+
+		// 鍏ㄥ睆鍒囨崲
+		onFullscreenChange(e) {
+			this.isFullScreen = e.detail.fullScreen;
+		},
+
+		// 璇锋眰鍏ㄥ睆
+		requestFullScreen(videoId, item) {
+			const videoContext = uni.createVideoContext(videoId, this);
+			if (this.isFullScreen) {
+				videoContext.exitFullScreen();
+			} else {
+				videoContext.requestFullScreen();
+			}
+		},
+
+		// 鍥剧墖杞挱鍙樺寲
+		imgChange(e) {
+			this.currentImgIndex = e.detail.current;
+		},
+
+		// 瑙嗛缂撳啿
+		videoWaiting(index) {
+			if (index === this.currentIndex) {
+				this.videoLoading = true;
+			}
+		},
+
+		// 鑾峰彇瑙嗛鎬绘椂闀�
+		onLoadedMetadata(e) {
+			// 鍙互鍦ㄨ繖閲岃幏鍙栬棰戞�绘椂闀�
+		},
+
+		// 鏀惰棌/鍙栨秷鏀惰棌
+		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;
+				}
+			});
+		},
+
+		// 璺宠浆鍒颁綔鑰呬富椤�
+		jumpToHomePage(authorId) {
+			uni.navigateTo({
+				url: `/pages/video/author-home?authorId=${authorId}`
+			});
+		},
+
+		// 鍏虫敞浣滆��
+		subscribeAuth(index, authorId) {
+			// 瀹炵幇鍏虫敞浣滆�呯殑閫昏緫
+			uni.showToast({
+				title: '鍏虫敞鎴愬姛',
+				icon: 'none'
+			});
+			this.videoList[index].subscribeThisAuthor = true;
+		},
+
+		// 鏄剧ず璇勮
+		showComments(item) {
+			// 瀹炵幇鏄剧ず璇勮鐨勯�昏緫
+			uni.showToast({
+				title: '璇勮鍔熻兘寮�鍙戜腑',
+				icon: 'none'
+			});
+		}
+	}
+}
+</script>
+
+<style scoped>
+.video-container {
+	width: 100%;
+	height: 100vh;
+	background-color: #000;
+}
+
+.video-swiper {
+	width: 100%;
+	height: calc(100% - 50px);
+}
+
+.video-item {
+	width: 100%;
+	height: 100%;
+}
+
+.play-icon {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	transform: translate(-50%, -50%);
+	width: 45px;
+	height: 45px;
+	z-index: 10;
+	opacity: 0.6;
+}
+
+.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;
+}
+
+.container {
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	width: 100%;
+	z-index: 10;
+}
+
+.process-warp {
+	position: relative;
+	width: 100%;
+	padding: 0 20rpx;
+	box-sizing: border-box;
+}
+
+.progress-text {
+	position: absolute;
+	top: -40rpx;
+	right: 20rpx;
+	color: #fff;
+	font-size: 24rpx;
+}
+
+.progress-bar {
+	width: 100%;
+	height: 4rpx;
+	background-color: rgba(255, 255, 255, 0.3);
+	border-radius: 2rpx;
+	overflow: hidden;
+}
+
+.progress-fill {
+	height: 100%;
+	background-color: #0ebd57;
+}
+
+.video-info {
+	width: 100%;
+	position: absolute;
+	bottom: 20px;
+	left: 20px;
+	color: #f8f8f8;
+	z-index: 10;
+	letter-spacing: 1px;
+}
+
+.video-author {
+	font-size: 1.2em;
+}
+
+.video-title {
+	font-size: 1em;
+	margin-top: 10rpx;
+	display: block;
+}
+
+.video-tag {
+	margin-left: 5px;
+	font-weight: bold;
+	color: #eeeeee;
+}
+
+.action-buttons {
+	position: absolute;
+	right: 20px;
+	bottom: 150px;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	z-index: 10;
+}
+
+.action-item {
+	margin-bottom: 18px;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	color: #fff;
+}
+
+.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%;
+	overflow: hidden;
+	display: block;
+}
+
+.follow-icon {
+	position: absolute;
+	bottom: 0;
+	left: 50%;
+	transform: translate(-50%, 50%);
+	width: 18px;
+	height: 18px;
+	background-color: #FF5A5F;
+	border-radius: 50%;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.custom-share-btn {
+	background: transparent;
+	padding: 0;
+	line-height: 1;
+	border: none;
+	color: #fff;
+	font-size: inherit;
+}
+
+.custom-share-btn::after {
+	border: none;
+}
+
+.back-button {
+	position: absolute;
+	top: 40px;
+	left: 20px;
+	width: 40px;
+	height: 40px;
+	border-radius: 50%;
+	background-color: rgba(0, 0, 0, 0.4);
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	z-index: 999;
+	color: #fff;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0