From b303b6945a139153688e86635346a621fe0c29b3 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期四, 17 七月 2025 18:07:18 +0800 Subject: [PATCH] 新增店员修改名称 --- pages/video/home-page.vue | 181 ++++++++++++++++++++++++++++++++++++--------- 1 files changed, 145 insertions(+), 36 deletions(-) diff --git a/pages/video/home-page.vue b/pages/video/home-page.vue index 5ce3063..4188a83 100644 --- a/pages/video/home-page.vue +++ b/pages/video/home-page.vue @@ -24,47 +24,54 @@ <text class="stat-label">鑾疯禐</text> </view> </view> - + <!-- 鍏虫敞鎸夐挳 --> <view class="follow-btn-container" v-if="!userInfo.self"> - <button - class="follow-btn" - :class="{followed: userInfo.hasSub}" + <button + class="follow-btn" + :class="{followed: userInfo.hasSub}" @click="toggleFollow" > {{userInfo.hasSub ? '鍙栨秷鍏虫敞' : '鍏虫敞'}} </button> </view> - + <view class="edit-icon" @click="editInfo" v-if="userInfo.self"> <uni-icons type="compose" size="20" color="#666"></uni-icons>缂栬緫涓婚〉淇℃伅 </view> </view> - + <!-- 浣滃搧/鍠滄鍒囨崲 --> <view class="tab-bar"> - <view - class="tab-item" - :class="{active: currentTab === 'works'}" + <view + class="tab-item" + :class="{active: currentTab === 'works'}" @click="switchTab('works')" > 浣滃搧{{`(${videoTotal})`}} </view> - <view - class="tab-item" - :class="{active: currentTab === 'likes'}" - @click="switchTab('likes')" + <view + class="tab-item" + :class="{active: currentTab === 'collect'}" + @click="switchTab('collect')" > - 鍠滄 + 鏀惰棌 </view> + <view + class="tab-item" + :class="{active: currentTab === 'likes'}" + @click="switchTab('likes')" + > + 鍠滄 + </view> </view> - + <!-- 瑙嗛鍒楄〃 --> <scroll-view class="video-list" scroll-y :show-scrollbar="false" @scrolltolower="getPage" v-show="currentTab === 'works' && videoList.length > 0"> <view class="video-container"> <view - class="video-item" - v-for="(item, index) in videoList" + class="video-item" + v-for="(item, index) in videoList" :key="item.id" > <image class="video-cover" @click="playAuthorVideo(index)" :src="item.videoContentType === 'video' ? item.coverUrl : item.imgs[0]" mode="aspectFill"></image> @@ -88,11 +95,11 @@ </view> </view> </scroll-view> - <scroll-view class="video-list" scroll-y :show-scrollbar="false" @scrolltolower="getPage" v-show="currentTab === 'likes' && collectVideoList.length > 0"> + <scroll-view class="video-list" scroll-y :show-scrollbar="false" @scrolltolower="getPage" v-show="currentTab === 'collect' && collectVideoList.length > 0"> <view class="video-container"> <view - class="video-item" - v-for="(item, index) in collectVideoList" + class="video-item" + v-for="(item, index) in collectVideoList" :key="item.id" @click="playCollectVideo(index)" > @@ -105,27 +112,52 @@ </view> </view> </view> - </view> + </view> </view> </scroll-view> - + <scroll-view class="video-list" scroll-y :show-scrollbar="false" @scrolltolower="getPage" v-show="currentTab === 'likes' && likeVideoList.length > 0"> + <view class="video-container"> + <view + class="video-item" + v-for="(item, index) in likeVideoList" + :key="item.id" + @click="playLikeVideo(index)" + > + <image class="video-cover" :src="item.videoContentType === 'video' ? item.coverUrl : item.imgs[0]" mode="aspectFill"></image> + <view class="video-info"> + <view class="video-stats"> + <view class="stat"> + <uni-icons type="heart" size="16" color="#fff"></uni-icons> + <text>{{item.collectNum}}</text> + </view> + </view> + </view> + </view> + </view> + </scroll-view> + <!-- 绌虹姸鎬� --> <view class="empty-state" v-if="videoList.length === 0 && currentTab === 'works'"> <!-- <image src="/static/images/empty.png" mode="aspectFit" class="empty-image"></image> --> <text class="empty-text">杩樻湭鍙戝竷浣滃搧鍝</text> </view> <!-- 绌虹姸鎬� --> - <view class="empty-state" v-if="collectVideoList.length === 0 && currentTab === 'likes'"> + <view class="empty-state" v-if="collectVideoList.length === 0 && currentTab === 'collect'"> + <!-- <image src="/static/images/empty.png" mode="aspectFit" class="empty-image"></image> --> + <text class="empty-text">杩樻病鏈夋敹钘忎綔鍝佸摝~</text> + </view> + <!-- 绌虹姸鎬� --> + <view class="empty-state" v-if="likeVideoList.length === 0 && currentTab === 'likes'"> <!-- <image src="/static/images/empty.png" mode="aspectFit" class="empty-image"></image> --> <text class="empty-text">杩樻病鏈夌偣璧炰綔鍝佸摝~</text> </view> - + <!-- 鍒犻櫎瑙嗛鎻愰啋妗� --> <uni-popup ref="delDialog" type="dialog"> <uni-popup-dialog type="error" cancelText="鍙栨秷" confirmText="鍒犻櫎" title="鎻愰啋" :content="`鎮ㄦ鍦ㄥ垹闄わ細${opVideo.title}`" @confirm="deleteVideo" @close="dialogClose"></uni-popup-dialog> </uni-popup> - + <!-- 涓嬫灦瑙嗛鎻愰啋妗� --> <uni-popup ref="downDialog" type="dialog"> <uni-popup-dialog type="error" cancelText="鍙栨秷" confirmText="涓嬫灦" title="鎻愰啋" :content="`鎮ㄦ鍦ㄤ笅鏋讹細${opVideo.title}`" @confirm="downVideo" @@ -137,7 +169,7 @@ <script> import DropdownMenu from '@/components/dropdown-menu.vue' -import {getAuthorInfo, getAuthorVideoPage, getAuthorCollectVideoPage} from '@/api/user.js' +import {getAuthorInfo, getAuthorVideoPage, getAuthorCollectVideoPage, getAuthorLikeVideoPage} from '@/api/user.js' import {subscribe, unSubscribe, delVideo, updateVideo, userDownVideo} from '@/api/video.js' export default { components: {DropdownMenu}, @@ -175,17 +207,40 @@ pageNumber: 1, pageSize: 10 }, + likeVideoQuery: { + authorId: '', + pageNumber: 1, + pageSize: 10 + }, videoTotal: 0, videoList: [], // 浣滃搧 collectVideoList: [], // 鏀惰棌 + likeVideoList: [], // 鐐硅禐 nomoreVideo: false, - nomoreCollectVideo: false + nomoreCollectVideo: false, + nomoreLikeVideo: false, } }, onShow() { - this.getAuthorInfo(); + if (this.authorId) { + this.getAuthorInfo(); + if (this.currentTab === 'works') { + this.videoQuery.pageNumber = 1 + this.nomoreVideo = false + this.getAuthorVideoPage(); + } else if (this.currentTab === 'collect') { + this.collectVideoQuery.pageNumber = 1 + this.nomoreCollectVideo = false + this.getAuthorCollectVideoPage() + } else if (this.currentTab === 'likes') { + this.likeVideoQuery.pageNumber = 1 + this.nomoreLikeVideo = false + this.getAuthorLikeVideoPage() + } + } }, onLoad(option) { + console.log("鏀跺埌鍙傛暟", option); this.authorId = option.authorId; this.getAuthorInfo(); this.getAuthorVideoPage(); @@ -261,7 +316,7 @@ this.videoQuery.pageNumber += 1; } }) - } else if(this.currentTab === 'likes') { + } else if(this.currentTab === 'collect') { if(this.nomoreCollectVideo) { return; } @@ -280,6 +335,27 @@ this.nomoreCollectVideo = true; } else { this.collectVideoQuery.pageNumber += 1; + } + }) + } else if(this.currentTab === 'likes') { + if(this.nomoreLikeVideo) { + return; + } + getAuthorLikeVideoPage(this.likeVideoQuery).then(res => { + if(this.likeVideoQuery.pageNumber === 1) { + this.likeVideoList = res.data.data + } else { + this.likeVideoList = [ + ...this.likeVideoList, + ...res.data.data.filter( + (newItem) => !this.likeVideoList.some((oldItem) => oldItem.id === newItem.id) + ), + ]; + } + if(res.data.data.length < this.likeVideoQuery.pageSize) { + this.nomoreLikeVideo = true; + } else { + this.likeVideoQuery.pageNumber += 1; } }) } @@ -333,14 +409,34 @@ this.currentTab = tab; if(tab === 'works') { this.collectVideoList = [] + this.likeVideoList = [] this.videoQuery.pageNumber = 1 + this.nomoreVideo = false this.getAuthorVideoPage() + } else if(tab === 'collect') { + this.videoList = [] + this.likeVideoList = [] + this.collectVideoQuery.pageNumber = 1 + this.nomoreCollectVideo = false + this.getAuthorCollectVideoPage() } else if(tab === 'likes') { this.videoList = [] - this.collectVideoQuery.pageNumber = 1 - this.getAuthorCollectVideoPage() + this.collectVideoList = [] + this.likeVideoQuery.pageNumber = 1 + this.nomoreLikeVideo = false + this.getAuthorLikeVideoPage() } }, + // 鑾峰彇浣滆�呭枩娆㈢殑瑙嗛 + async getAuthorLikeVideoPage() { + this.likeVideoQuery.authorId = this.authorId + getAuthorLikeVideoPage(this.likeVideoQuery).then(res => { + this.likeVideoList = res.data.data + if(res.data.data.length < this.likeVideoQuery.pageSize) { + this.nomoreLikeVideo = true; + } + }) + }, // 鑾峰彇浣滆�呯殑鏀惰棌瑙嗛 async getAuthorCollectVideoPage() { this.collectVideoQuery.authorId = this.authorId @@ -377,20 +473,33 @@ url: `/pages/video/video-play?authorId=${this.authorId}&videoFrom=collect` }); }, + // 鎾斁鐐硅禐瑙嗛 + playLikeVideo(index) { + const playInfo = { + videoList: this.likeVideoList, + nomore: this.nomoreLikeVideo, + pageNumber: this.likeVideoQuery.pageNumber, + playIndex: index + } + uni.setStorageSync("playInfo", playInfo) + uni.navigateTo({ + url: `/pages/video/video-play?authorId=${this.authorId}&videoFrom=like` + }); + }, // 缂栬緫涓汉璧勬枡 editInfo() { uni.navigateTo({ url: `/pages/video/home-page-edit?authorId=${this.authorId}&avatar=${this.userInfo.avatar}&motto=${this.userInfo.motto || ''}&nickName=${this.userInfo.nickName}` }); }, - + // 璺宠浆鍒扮矇涓�/鍏虫敞鍒楄〃 navigateToFollow(type) { uni.navigateTo({ url: `/pages/user/follow?type=${type}` }); }, - + // 璺宠浆鍒扮偣璧炲垪琛� navigateToLike() { uni.navigateTo({ @@ -624,15 +733,15 @@ height: 70rpx; line-height: 70rpx; padding: 0 40rpx; - + &::after { border: none; } - + &.followed { background-color: #f5f5f5; color: #666; } } -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0