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/kitchen/KitchenVideo.vue | 264 +++++++++++++++++++++++++++++----------------------- 1 files changed, 147 insertions(+), 117 deletions(-) diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue index 0223187..8bafd83 100644 --- a/pages/kitchen/KitchenVideo.vue +++ b/pages/kitchen/KitchenVideo.vue @@ -134,29 +134,33 @@ <!-- 鍙充晶浜掑姩鎸夐挳 --> <view class="action-buttons" v-if="false"> - <view class="avatar-container"> - <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image> - <!-- 鍏虫敞鍥炬爣 - 浣跨敤缁濆瀹氫綅 --> - <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)"> - <text class="iconfont"></text> - </view> - </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="avatar-container"> + <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image> + <!-- 鍏虫敞鍥炬爣 - 浣跨敤缁濆瀹氫綅 --> + <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)"> + <text class="iconfont"></text> + </view> + </view> + <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.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"> - <button open-type="share" class="custom-share-btn" :data-obj="item"> - <text class="iconfont"></text> - </button> - - </view> - </view> + <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> </swiper-item> </swiper> @@ -248,7 +252,7 @@ </scroll-view> </uni-drawer> <view v-if="videoList.length===0" style="display: flex;align-items: center;justify-content: center;background-color: #fff;height: 100%">褰撳墠娌℃湁鍙互鏌ョ湅鐨勮棰�</view> - + <custom-tabbar bgColor="#ffffff" selected="kitchen"></custom-tabbar> </view> </template> @@ -262,7 +266,8 @@ getVideoComments, addVideoComment, thubmsUpComment, - cancelThubmsUpComment + cancelThubmsUpComment, + changeThumbsUp } from "@/api/video.js"; import { changeCollect @@ -342,8 +347,6 @@ startY: 0, endY: 0 }, - - videoContexts: [], // 瑙嗛涓婁笅鏂囧璞¢泦鍚� loading: false, // 鏄惁姝e湪鍔犺浇 videoQuery: { pageNumber: 1, @@ -374,10 +377,6 @@ this.getKitchenTypeList(); this.loadVideos(); }, - onReady() { - // 鍒濆鍖栬棰戜笂涓嬫枃 - this.initVideoContexts(); - }, methods: { async chooseCategory(id) { if (this.currentCategort === id) return @@ -386,7 +385,7 @@ this.videoQuery.kitchenTypeId = id; this.videoLoading = false; this.currentIndex = 0; - + await this.loadVideos() }, getKitchenTypeList() { @@ -658,14 +657,6 @@ } }) }, - // 鍒濆鍖栬棰戜笂涓嬫枃 - initVideoContexts() { - this.videoContexts = this.videoList.map((_, index) => { - let videoContent = uni.createVideoContext(`video${index}`, this); - return videoContent; - }); - }, - // 鍔犺浇瑙嗛鏁版嵁 async loadVideos() { console.log(this.loading, this.videoNoMore,this.videoQuery) @@ -686,9 +677,6 @@ ), ]; } - this.$nextTick(() => { - this.initVideoContexts(); - }); this.loading = false; if (res.data.data.length < this.videoQuery.pageSize) { this.videoNoMore = true; @@ -701,29 +689,75 @@ // 婊戝姩鍒囨崲瑙嗛 onSwiperChange(e) { + this.videoLoading = false // 濡傛灉瑙嗛澶勪簬鏆傚仠鐘舵�佸線涓嬪埛瑙嗛锛岄偅涔堥渶瑕佸啀璁$畻涓�娆℃殏鍋滄椂闂� - if (!this.currentVideoIsPlaying) { - if (this.startPauseTime !== 0) { - const duration = Date.now() - this.startPauseTime - this.totalPauseTime += duration - } + 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); // 鏆傚仠涓婁竴涓棰� - if (this.videoContexts[oldIndex]) { - this.videoContexts[oldIndex].pause(); - } - + videoContext.pause(); this.startPauseTime = 0; + + // 璁剧疆褰撳墠鎾斁瑙嗛鐨勬�绘椂闀� + this.duration = this.videoList[this.currentIndex].videoDuration; + this.formartDuration = this.sliderFormatTime(this.duration); + // 鎾斁褰撳墠瑙嗛 - if (this.videoContexts[this.currentIndex]) { - this.videoContexts[this.currentIndex].play(); - } + const videoContext1 = uni.createVideoContext(`video${this.currentIndex}`, this); + videoContext1.play() + // 濡傛灉鍓╀綑瑙嗛涓嶈冻锛岃Е鍙戣姹傝幏鍙栨洿澶氳棰� + 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 + }, + // 缁撴潫瑙︽懜 + 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 (item.goodsList && item.goodsList.length > 0) { + this.jumpToPay(item.id) + } + } else { + console.log('宸︽粦') + } + } + // 閲嶇疆鍧愭爣 + this.touchXY = { + startX: 0, + endX: 0, + startY: 0, + endY: 0 + } + }, // 鏀惰棌/鍙栨秷鏀惰棌 toggleCollect(item, index) { @@ -747,6 +781,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); @@ -804,7 +860,7 @@ onTimeUpdate(e) { this.videoLoading = false this.playRecord.playAt = e.detail.currentTime; - + this.currentTime = e.detail.currentTime; this.progress = (e.detail.currentTime / this.duration) * 100 }, @@ -815,53 +871,15 @@ this.startProgress = this.progress; // 璁板綍寮�濮嬫椂鐨勮繘搴� this.startX = e.touches[0].pageX; console.log("璁板綍寮�濮嬫椂鐨勮繘搴�", this.startProgress); - this.videoContexts[this.currentIndex].pause() + const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this); + videoContext.pause() // this.updateProgress(e); }, - // 寮�濮嬭Е鎽� - 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 - }, - // 缁撴潫瑙︽懜 - 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 (item.goodsList && item.goodsList.length > 0) { - this.jumpToPay(item.id) - } - } else { - console.log('宸︽粦') - } - } - // 閲嶇疆鍧愭爣 - this.touchXY = { - startX: 0, - endX: 0, - startY: 0, - endY: 0 - } - }, // 瑙︽懜绉诲姩 handleTouchMove(e) { if (!this.isDragging || !this.barWidth) return; clearTimeout(this.processHidenTimer) - this.videoContexts[this.currentIndex].pause() this.updateProgress(e); }, @@ -869,31 +887,31 @@ handleTouchEnd() { this.isDragging = false; console.log("婊戝姩缁撴潫", this.duration * this.progress); - this.videoContexts[this.currentIndex].seek(this.duration * this.progress / 100) - this.videoContexts[this.currentIndex].play() + const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this); + videoContext.seek(this.duration * this.progress / 100) + videoContext.play() this.processHidenTimer = setTimeout(() => { - this.showProcess = false; - }, 1000); + this.showProcess = false; + }, 1000); }, // 鏇存柊杩涘害 updateProgress(e) { - // 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣 - const currentX = e.touches[0].pageX; + // 鑾峰彇褰撳墠瑙︽懜鐐筙鍧愭爣 + const currentX = e.touches[0].pageX; - // 璁$畻婊戝姩璺濈(鍍忕礌) - const deltaX = currentX - this.startX; + // 璁$畻婊戝姩璺濈(鍍忕礌) + const deltaX = currentX - this.startX; - // 灏嗗儚绱犺窛绂昏浆鎹负杩涘害澧為噺 - const deltaProgress = (deltaX / this.barWidth) * 100; - console.log("杩涘害澧為噺", deltaProgress); - // 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺 - let newProgress = this.startProgress + deltaProgress; + // 灏嗗儚绱犺窛绂昏浆鎹负杩涘害澧為噺 + const deltaProgress = (deltaX / this.barWidth) * 100; + // 璁$畻鏂拌繘搴� = 寮�濮嬫椂鐨勮繘搴� + 婊戝姩澧為噺 + let newProgress = this.startProgress + deltaProgress; - // 闄愬埗鑼冨洿鍦�0-100涔嬮棿 - newProgress = Math.max(0, Math.min(100, newProgress)); + // 闄愬埗鑼冨洿鍦�0-100涔嬮棿 + newProgress = Math.max(0, Math.min(100, newProgress)); - this.progress = newProgress; + this.progress = newProgress; }, // 瑙嗛缂撳啿 videoWaiting(index) { @@ -904,9 +922,9 @@ }, // 鑾峰彇瑙嗛鎬绘椂闀� onLoadedMetadata(e) { - this.duration = e.detail.duration; - this.formartDuration.push(this.sliderFormatTime(this.duration)); - console.log("瑙嗛鎬绘椂闀�", this.duration); + // this.duration = e.detail.duration; + // this.formartDuration.push(this.sliderFormatTime(this.duration)); + // console.log("瑙嗛鎬绘椂闀�", this.duration); }, // 淇濆瓨鎾斁璁板綍 async savePlayRecord() { @@ -1385,7 +1403,7 @@ .progress-text { margin-top: 10px; font-size: 14px; - color: #666; + color: #fff; } .swiper-box { @@ -1432,4 +1450,16 @@ background-color: lightpink !important; } -</style> \ No newline at end of file + +.custom-share-btn { + font-size: unset; + background: none; + padding: 0; + margin: 0; + line-height: normal; + border: none; +} +.custom-share-btn::after { + border: none; +} +</style> -- Gitblit v1.8.0