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"></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"></text> <text class="iconfont" v-else></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"></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