From 86cbf346204232ba9a4ffea6fbcb4d9d2b521916 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 26 五月 2025 14:33:59 +0800
Subject: [PATCH] 分包之uview组件的引入方式调整

---
 pages/tabbar/index/home.vue |  141 +++++++++++++++++++----------------------------
 1 files changed, 57 insertions(+), 84 deletions(-)

diff --git a/pages/tabbar/index/home.vue b/pages/tabbar/index/home.vue
index bbbe33b..418f1c7 100644
--- a/pages/tabbar/index/home.vue
+++ b/pages/tabbar/index/home.vue
@@ -11,7 +11,7 @@
       <swiper-item v-for="(item, index) in videoList" :key="item.id">
         <video 
           :id="'video'+index"
-          :src="item.url"
+          :src="item.videoUrl"
           :autoplay="currentIndex === index"
           :controls="false"
           :loop="true"
@@ -27,7 +27,7 @@
 			<view class="goods-link">
 			  <view class="goods-container">
 			    <!-- 鍟嗗搧鍥剧墖 -->
-			    <image class="goods-image" :src="item.goods.image" mode="aspectFill"></image>
+			    <image class="goods-image" :src="item.goods.imageUrl" mode="aspectFill"></image>
 			    
 			    <!-- 鍟嗗搧淇℃伅 -->
 			    <view class="goods-info">
@@ -36,7 +36,7 @@
 			        <text class="current-price">楼{{item.goods.price}}</text>
 			        <text class="original-price" v-if="item.goods.originalPrice">楼{{item.goods.originalPrice}}</text>
 			      </view>
-			      <text class="sales-count">{{item.goods.sales}}浜哄凡璐�</text>
+			      <text class="sales-count">{{item.goods.saleNum}}浜哄凡璐�</text>
 			    </view>
 			    
 			    <!-- 璐拱鎸夐挳 -->
@@ -51,11 +51,11 @@
         <!-- 瑙嗛淇℃伅灞� -->
         <view class="video-info">
 		  <view>
-			  <text class="video-author">@{{item.author}}</text>
+			  <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.tags" :key="tag">#{{tag}}</text>
+			  <text class="video-tag" v-for="(tag, index) in item.tagList" :key="tag">#{{tag.tagName}}</text>
 		  </view>
         </view>
         
@@ -68,15 +68,14 @@
 				 <text class="iconfont">&#xe629;</text>
 			   </view>
 		   </view>
-          <view class="action-item" @click="toggleCollect(item)">
-            <!-- <image :src="item.isCollected ? '/static/collected.png' : '/static/collect.png'"></image> -->
+          <view class="action-item" @click="toggleCollect(item, index)">
 			<text class="iconfont" v-if="item.collected">&#xe605;</text>
 			<text class="iconfont" v-else>&#xe601;</text>
-			<text style="font-size: 10px;font-weight: lighter;">{{item.collectCount}}</text>
+			<text style="font-size: 10px;font-weight: lighter;">{{item.collectNum}}</text>
           </view>
          <view class="action-item" @click="showComments(item)">
             <text class="iconfont">&#xe7f7;</text>
-            <text style="font-size: 10px;font-weight: lighter;">{{item.commentCount}}</text>
+            <text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
           </view>
         </view>
       </swiper-item>
@@ -86,6 +85,8 @@
 </template>
 
 <script>
+import { getRecommendVideos } from "@/api/video.js";
+import { changeCollect } from "@/api/collect.js";
 export default {
   data() {
     return {
@@ -93,42 +94,7 @@
 	  windowHeight: 0,
       currentIndex: 0, // 褰撳墠鎾斁鐨勮棰戠储寮�
       videoList: [
-		  {
-			   url: 'http://vjs.zencdn.net/v/oceans.mp4',
-			   objectFit: 'contain',
-			   title: '鎴戜簡涓�',
-			   author: 'xp',
-			   authorAvatar: 'https://picsum.photos/200/200?random=2',
-			   collected: true,
-			   commentCount: 12,
-			   collectCount: 45,
-			   tags: ["浜斾竴", "鐖辩編椋�", "澹ぇ澶�熷害鍜岀矇绾㈣壊鐨勬仮澶嶉�熷害鐨勫彛琚嬬┖绌�"],
-			   goods: {
-				   name: '鎺ㄦ祦',
-				   price: '10',
-				   originalPrice: '48.9',
-				   sales: 1988,
-				   image: 'https://picsum.photos/200/200?random=2'
-			   }
-			},
-		  {
-			  url: 'https://videos.pexels.com/video-files/30900524/13210612_1080_1920_30fps.mp4',
-			  objectFit: 'cover',
-			   title: '鎴戜簡涓�',
-				author: 'xp',
-				 authorAvatar: 'https://picsum.photos/200/200?random=2',
-				  collected: false,
-				   commentCount: 6,
-					collectCount: 45,
-					 tags: ["鎴戝枩娆�"],
-					 goods: {
-					 				   name: '鎺ㄦ祦',
-					 				   price: '10',
-					 				   originalPrice: '48.9',
-					 				   sales: 1988,
-									   image: 'https://picsum.photos/200/200?random=2'
-					 }
-			 },
+		  
 	  ],   // 瑙嗛鍒楄〃鏁版嵁
       videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚�
       loading: false,  // 鏄惁姝e湪鍔犺浇
@@ -136,8 +102,14 @@
       pageSize: 10     // 姣忛〉鏁伴噺
     }
   },
+  onShow() {
+    this.loadVideos();
+  },
   onLoad() {
-    // this.loadVideos();
+	  if(!this.videoList || this.videoList.length < 1) {
+		  this.loadVideos();
+	  }
+    
   },
   onReady() {
     // 鍒濆鍖栬棰戜笂涓嬫枃
@@ -148,7 +120,6 @@
     initVideoContexts() {
       this.videoContexts = this.videoList.map((_, index) => {
 		  let videoContent = uni.createVideoContext(`video${index}`, this);
-		  // videoContent.requestFullScreen({ direction: 0 });
 		  return videoContent;
       });
     },
@@ -158,30 +129,20 @@
       if (this.loading) return;
       this.loading = true;
       
-      try {
-        const res = await uni.request({
-          url: 'https://your-api.com/videos',
-          data: {
-            page: this.page,
-            pageSize: this.pageSize
-          }
-        });
-        
-        if (this.page === 1) {
-          this.videoList = res.data.list;
-        } else {
-          this.videoList = [...this.videoList, ...res.data.list];
-        }
-        
-        this.page++;
-        this.$nextTick(() => {
-          this.initVideoContexts();
-        });
-      } catch (e) {
-        console.error('鍔犺浇瑙嗛澶辫触', e);
-      } finally {
-        this.loading = false;
-      }
+	  getRecommendVideos({pageNumber: this.page, pageSize: this.pageSize}).then(res => {
+		  console.log(res, "瑙嗛鏁版嵁");
+		  if (this.page === 1) {
+		    this.videoList = res.data.data;
+		  } else {
+		    this.videoList = [...this.videoList, ...res.data.data];
+		  }
+		  
+		  this.page++;
+		  this.$nextTick(() => {
+		    this.initVideoContexts();
+		  });
+		  this.loading = false;
+	  })
     },
     
     // 婊戝姩鍒囨崲瑙嗛
@@ -200,15 +161,27 @@
       }
     },
     
-    // 鐐硅禐/鍙栨秷鐐硅禐
-    toggleLike(item) {
-      item.isLiked = !item.isLiked;
-      item.likeCount += item.isLiked ? 1 : -1;
-      
-      uni.request({
-        url: `https://your-api.com/video/${item.id}/like`,
-        method: item.isLiked ? 'POST' : 'DELETE'
-      });
+    // 鏀惰棌/鍙栨秷鏀惰棌
+    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
+		  }
+	  })
     },
     
     // 瑙嗛鎾斁浜嬩欢
@@ -224,10 +197,10 @@
     // 瑙嗛缁撴潫浜嬩欢
     onEnded(index) {
       console.log(`瑙嗛 ${index} 鎾斁缁撴潫`);
-      // 鑷姩鎾斁涓嬩竴涓紙濡傛灉涓嶅湪鏈�鍚庝竴涓級
-      if (index < this.videoList.length - 1) {
-        this.currentIndex = index + 1;
-      }
+      // // 鑷姩鎾斁涓嬩竴涓紙濡傛灉涓嶅湪鏈�鍚庝竴涓級
+      // if (index < this.videoList.length - 1) {
+      //   this.currentIndex = index + 1;
+      // }
     }
   }
 }

--
Gitblit v1.8.0