From be80b22a4a0fcd33e1b17ebdb86eba91cc7de4d2 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期三, 02 七月 2025 18:59:06 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- pages/tabbar/index/home.vue | 87 ++++++++++++++++++++++++++++++++++++++----- 1 files changed, 76 insertions(+), 11 deletions(-) diff --git a/pages/tabbar/index/home.vue b/pages/tabbar/index/home.vue index a2cf82d..4589ccd 100644 --- a/pages/tabbar/index/home.vue +++ b/pages/tabbar/index/home.vue @@ -1,5 +1,6 @@ <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> <!-- 瑙嗛鍒楄〃 --> @@ -35,7 +36,7 @@ :autoplay="index === currentIndex" :controls="false" :loop="true" - :object-fit="item.objectFit" + :object-fit="item.videoFit" :enable-progress-gesture="false" :show-center-play-btn="false" class="video-item" @@ -52,6 +53,7 @@ @touchstart.stop="handleTouchStart" @touchmove.stop="handleTouchMove" @touchend.stop="handleTouchEnd" + :style="{bottom: marginBottom + 'px'}" class="container"> <!-- 杩涘害鏉� - 鏁翠釜鍖哄煙鍙嫋鍔� --> <view class="process-warp" :style="{ opacity: showProcess ? 1 : 0 }"> @@ -117,9 +119,9 @@ <!-- 瑙嗛淇℃伅灞� --> - <view class="video-info"> + <view class="video-info" :style="{bottom: marginBottom + 20 + 'px'}"> <view> - <text class="video-author">@{{item.authorName}}</text> + <text class="video-author" @click="jumpToSearch">@{{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> @@ -127,7 +129,7 @@ </view> </view> - <!-- 鍙充晶浜掑姩鎸夐挳 --> + <!-- 鍙充晶浜掑姩鎸夐挳 --> <view class="action-buttons"> <view class="avatar-container"> <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image> @@ -136,20 +138,24 @@ <text class="iconfont"></text> </view> </view> - <view class="action-item" @click="toggleCollect(item, index)"> - <text class="iconfont" v-if="item.collected"></text> + <view class="action-item" @click="toggleThumbsUp(item, index)"> + <text class="iconfont" v-if="item.thumbsUp"></text> <text class="iconfont" v-else></text> - <text style="font-size: 10px;font-weight: lighter;">{{item.collectNum}}</text> + <text style="font-size: 10px;font-weight: lighter;">{{item.thumbsUpNum}}</text> </view> <view class="action-item" @click="showComments(item)"> <text class="iconfont"></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"></text> + <text class="iconfont" v-else></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"></text> </button> - </view> </view> @@ -241,13 +247,25 @@ </template> <script> -import { getRecommendVideos, savePlayRecord, subscribe, getVideoComments, addVideoComment, thubmsUpComment, cancelThubmsUpComment } from "@/api/video.js"; +import { + getRecommendVideos, + savePlayRecord, + subscribe, + getVideoComments, + addVideoComment, + thubmsUpComment, + cancelThubmsUpComment, + changeThumbsUp, +} from "@/api/video.js"; import { changeCollect } from "@/api/collect.js"; import { saveShare, saveShareClickRecord } from "@/api/share.js"; import { silentLogin } from "@/api/connect.js"; import { getUserInfo } from "@/api/members"; import storage from "@/utils/storage.js"; +import TopBar from "@/components/TopBar.vue"; + export default { + components: {TopBar}, computed: { hasPlayTime() { return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0); @@ -322,7 +340,8 @@ pageNumber: 1, pageSize: 10, videoFrom: 'recommend' - } + }, + marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙 } }, onShow() { @@ -344,6 +363,7 @@ this.startHidenTime = Date.now() }, onLoad(option) { + this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom const token = storage.getAccessToken(); if (! token) { this.wxSilentLogin(() => { @@ -379,6 +399,23 @@ } }, methods: { + 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 @@ -788,6 +825,28 @@ } }) }, + // 鐐硅禐/鍙栨秷鐐硅禐 + 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); @@ -1337,7 +1396,7 @@ .progress-text { margin-top: 10px; font-size: 14px; - color: #666; + color: #fff; } .swiper-box { width: 100%; @@ -1361,4 +1420,10 @@ .custom-share-btn::after { border: none; } + .topBar { + position: fixed; + top: 20rpx; + left: 20rpx; + z-index: 1000 + } </style> -- Gitblit v1.8.0