| | |
| | | </view> |
| | | |
| | | <view v-else class="comment-item" v-for="(comment, index) in comments" :key="comment.id"> |
| | | <view style="display: flex;"> |
| | | <view style="display: flex;" > |
| | | <image class="comment-avatar" :src="comment.userAvatar || '/static/default-avatar.png'"></image> |
| | | <view class="comment-content"> |
| | | <text class="nickname">{{comment.userNickname}} <text v-if="userId===comment.userId">(我)</text> </text> |
| | | <text class="content">{{comment.commentContent}}</text> |
| | | <view @click="replyClick(comment)"> |
| | | <text class="nickname">{{comment.userNickname}} <text v-if="userId===comment.userId">(我)</text> </text> |
| | | <text class="content">{{comment.commentContent}}</text> |
| | | </view> |
| | | <view style="position: relative;"> |
| | | <text class="time">{{formatTime(comment.createTime)}}</text> |
| | | <text @click="openReply(comment)" class="reply-btu time">回复</text> |
| | |
| | | <!-- 回复列表 --> |
| | | <view class="reply-list" v-if="comment.replies && comment.replies.length > 0"> |
| | | <view class="reply-item" v-for="(reply, replyIndex) in comment.replies" :key="reply.id"> |
| | | <view class="reply-content"> |
| | | <view class="reply-content" @click="replyClick(reply)"> |
| | | <view style="display: flex;"> |
| | | <image class="comment-reply-avatar" :src="reply.replyUserAvatar || '/static/default-avatar.png'"></image> |
| | | <text class="nickname">{{reply.userNickname}}<text v-if="userId===comment.userId">(我)</text></text> |
| | |
| | | |
| | | |
| | | <custom-tabbar bgColor="#333333" selected="index" selectedTextColor="#ffffff"></custom-tabbar> |
| | | |
| | | <ActivityPopup |
| | | :show="activityPopup.show" |
| | | :activityTitle="activityPopup.title" |
| | | :activityDesc="activityPopup.desc" |
| | | :activityImage="activityPopup.image" |
| | | :endTime="activityPopup.endTime" |
| | | :prizeActivityId="activityPopup.prizeActivityId" |
| | | @close="onClosePopup" |
| | | /> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | thubmsUpComment, |
| | | cancelThubmsUpComment, |
| | | changeThumbsUp, |
| | | getGoodsSimilarlyVideos |
| | | getGoodsSimilarlyVideos, |
| | | removeByIdVideoComment, |
| | | } from "@/api/video.js"; |
| | | |
| | | import ActivityPopup from '@/pages/ActivityPopup/ActivityPopup.vue' |
| | | import { mapState, mapMutations } from 'vuex' |
| | | import {setPopupRedisTime,getPopupAcitivty} from '@/api/popup.js' |
| | | import { changeCollect } from "@/api/collect.js"; |
| | | import { saveShare, saveShareClickRecord } from "@/api/share.js"; |
| | | import { silentLogin } from "@/api/connect.js"; |
| | |
| | | import storage from "@/utils/storage.js"; |
| | | import TopBar from "@/components/TopBar.vue"; |
| | | import { nextTick } from "vue"; |
| | | |
| | | import {getVideoCover } from "@/api/common.js" |
| | | export default { |
| | | components: {TopBar}, |
| | | components: {TopBar,ActivityPopup}, |
| | | computed: { |
| | | hasPlayTime() { |
| | | return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0); |
| | | } |
| | | }, |
| | | // 错误:没有用 ... 展开,导致 activityPopup 是函数 |
| | | ...mapState(['activityPopup']) |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | } |
| | | }, |
| | | onShow() { |
| | | |
| | | this.openActivityPopup() |
| | | |
| | | |
| | | if(!this.userId){ |
| | | this.getUserId() |
| | | } |
| | |
| | | shareUser: userInfo.id |
| | | } |
| | | saveShare(data) |
| | | return { |
| | | title: videoInfo.title, |
| | | path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`, |
| | | } |
| | | }, |
| | | // getVideoCover(videoInfo.id).then(res =>{ |
| | | // if(res.statusCode === 200){ |
| | | // imageUrl = res.data.data |
| | | // console.log(imageUrl) |
| | | // return { |
| | | // title: videoInfo.title, |
| | | // path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`, |
| | | // imageUrl: imageUrl |
| | | // } |
| | | // } |
| | | |
| | | // }) |
| | | console.log(videoInfo) |
| | | return { |
| | | title: videoInfo.title, |
| | | path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`, |
| | | imageUrl: videoInfo.coverUrl |
| | | } |
| | | // 保存分享记录 |
| | | }, |
| | | methods: { |
| | | async openActivityPopup() { |
| | | await getPopupAcitivty().then(res =>{ |
| | | if(res.statusCode === 200){ |
| | | let obj = res.data.data; |
| | | if(obj.enableStatus === 'ON'){ |
| | | setPopupRedisTime().then(res =>{ |
| | | if(res.statusCode === 200){ |
| | | if(res.data.state){ |
| | | this.showActivityPopup({ |
| | | title: obj.activityName, |
| | | desc: obj.activityDes, |
| | | image: obj.activityCoverUrl, |
| | | endTime:new Date(obj.endTime).getTime(), |
| | | prizeActivityId:obj.id |
| | | }) |
| | | }else{ |
| | | this.hideActivityPopup() |
| | | } |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | ...mapMutations(['showActivityPopup','hideActivityPopup']), // 引入Vuex的方法 |
| | | onClosePopup() { |
| | | this.hideActivityPopup() |
| | | }, |
| | | replyClick(reply){ |
| | | |
| | | if(this.userId === reply.userId){ |
| | | let that = this; |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: '你确定要删除吗', |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | console.log('确定'); |
| | | //调用删除的逻辑 |
| | | console.log(reply) |
| | | removeByIdVideoComment(reply.id).then(res =>{ |
| | | const item = { |
| | | id:reply.videoId |
| | | } |
| | | that.commentQuery.pageNumber = 1; |
| | | //重新更新评论 |
| | | that.showComments(item); |
| | | }) |
| | | |
| | | } else if (res.cancel) { |
| | | console.log('取消'); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | } |
| | | console.log(reply) |
| | | }, |
| | | // 截取视频当前帧 |
| | | captureVideoFrame(videoCtx) { |
| | | return new Promise((resolve) => { |
| | | videoCtx.requestFrame(() => { |
| | | wx.canvasToTempFilePath({ |
| | | canvasId: 'shareCanvas', |
| | | success: (res) => resolve(res), |
| | | fail: () => resolve({ tempFilePath: '/assets/default-cover.jpg' }) |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | requestFullScreen(id,item){ |
| | | console.log(item) |
| | | |
| | |
| | | this.commentQuery.pageNumber++; |
| | | }) |
| | | }, |
| | | |
| | | // 显示评论弹窗 |
| | | async showComments(item) { |
| | | this.commentForm.videoId = item.id; |
| | |
| | | |
| | | <style scoped> |
| | | .fullscreen-btn { |
| | | position: absolute; |
| | | right: 45rpx; |
| | | bottom: 70rpx; |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | border-radius: 50%; |
| | |
| | | z-index: 999; |
| | | backdrop-filter: blur(10rpx); |
| | | border: 1rpx solid rgba(255, 255, 255, 0.2); |
| | | margin-top: -90rpx; |
| | | margin-left: 15rpx; |
| | | |
| | | } |
| | | /* 图标样式 */ |
| | | .fullscreen-icon { |
| | |
| | | |
| | | .video-item { |
| | | width: 100%; |
| | | height: 70%; |
| | | height: 100%; |
| | | /* object-fit: cover; */ |
| | | } |
| | | .play-icon { |