| | |
| | | <view class="goods-link"> |
| | | <swiper @change="goodsChange" :autoplay="true" :interval="4000" style="height: 120rpx;"> |
| | | <swiper-item v-for="goods in item.goodsList" :key="goods.goodsId"> |
| | | <view class="goods-container"> |
| | | <view class="goods-container" @click="jumpToPay(item.id)"> |
| | | <!-- 商品图片 --> |
| | | <image class="goods-image" :src="goods.thumbnail" mode="aspectFill"></image> |
| | | |
| | |
| | | <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> |
| | | |
| | | </swiper-item> |
| | |
| | | <script> |
| | | import { getRecommendVideos, savePlayRecord, subscribe, getVideoComments, addVideoComment, thubmsUpComment, cancelThubmsUpComment } 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"; |
| | | export default { |
| | | computed: { |
| | | hasPlayTime() { |
| | |
| | | } |
| | | }, |
| | | onShow() { |
| | | this.loadVideos() |
| | | // const token = storage.getAccessToken(); |
| | | // if (! token) { |
| | | // this.wxSilentLogin(() => { |
| | | // this.loadVideos(); |
| | | // }) |
| | | // } else { |
| | | // this.loadVideos(); |
| | | // } |
| | | // 如果视频按下暂停后切换页面再回到页面时,只算暂停时间(因为暂停时间和离开页面时间是重复的,只算一个) |
| | | if(this.startHidenTime !== 0 && this.currentVideoIsPlaying) { |
| | | const duration = Date.now() - this.startHidenTime |
| | |
| | | onHide() { |
| | | this.startHidenTime = Date.now() |
| | | }, |
| | | onLoad() { |
| | | this.loadVideos(); |
| | | onLoad(option) { |
| | | const token = storage.getAccessToken(); |
| | | if (! token) { |
| | | this.wxSilentLogin(() => { |
| | | this.loadVideos(); |
| | | // 判断是不是点击分享链接进来的 |
| | | if (option.userId && option.videoId) { |
| | | // 保存分享点击记录 |
| | | saveShareClickRecord({refId: option.videoId, shareUserId: option.userId}) |
| | | } |
| | | }) |
| | | } else { |
| | | this.loadVideos(); |
| | | } |
| | | }, |
| | | onReady() { |
| | | // 初始化视频上下文 |
| | | this.initVideoContexts(); |
| | | }, |
| | | onShareAppMessage(e) { |
| | | const userInfo = storage.getUserInfo(); |
| | | if(!userInfo) { |
| | | console.log("未登录不能分享"); |
| | | return |
| | | } |
| | | const videoInfo = e.target.dataset.obj; |
| | | // 保存分享记录 |
| | | const data = { |
| | | shareType: 'video', |
| | | refId: videoInfo.id, |
| | | shareUser: userInfo.id |
| | | } |
| | | saveShare(data) |
| | | return { |
| | | title: videoInfo.title, |
| | | path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`, |
| | | imageUrl: videoInfo.coverUrl |
| | | } |
| | | }, |
| | | methods: { |
| | | // 静默登录 |
| | | wxSilentLogin(callback) { |
| | | //获取code |
| | | uni.login({ |
| | | success: (codeRes) => { |
| | | if(codeRes.errMsg === "login:ok") { |
| | | // 静默登录 |
| | | silentLogin({code: codeRes.code}).then(res => { |
| | | storage.setAccessToken(res.data.data.accessToken); |
| | | storage.setRefreshToken(res.data.data.refreshToken); |
| | | //获取用户信息 |
| | | getUserInfo().then((user) => { |
| | | storage.setUserInfo(user.data.result); |
| | | storage.setHasLogin(true); |
| | | callback() |
| | | }); |
| | | }) |
| | | } else { |
| | | uni.showToast({ |
| | | title: "系统异常,请联系管理员!" |
| | | }) |
| | | } |
| | | }, |
| | | }); |
| | | }, |
| | | // 点击商品跳转 |
| | | jumpToPay(videoId) { |
| | | uni.navigateTo({ |
| | | url: '/pages/video/video-goods-detail?videoId=' + videoId |
| | | }); |
| | | }, |
| | | // 轮播图变化 |
| | | imgChange(e) { |
| | | this.currentImgIndex = e.detail.current; |
| | |
| | | if (this.videoContexts[this.currentIndex]) { |
| | | this.videoContexts[this.currentIndex].play(); |
| | | } |
| | | // 设置当前播放视频的总时长 |
| | | this.duration = this.videoList[this.currentIndex].videoDuration; |
| | | this.formartDuration = this.sliderFormatTime(this.duration); |
| | | }, |
| | | |
| | | // 收藏/取消收藏 |
| | |
| | | console.log(id, index, "触发播放"); |
| | | if(index === this.currentIndex) { |
| | | this.currentVideoIsPlaying = true; |
| | | if(! this.duration) { |
| | | // 设置当前播放视频的总时长 |
| | | this.duration = this.videoList[this.currentIndex].videoDuration; |
| | | this.formartDuration = this.sliderFormatTime(this.duration); |
| | | } |
| | | } else { |
| | | this.currentVideoIsPlaying = false; |
| | | return |
| | |
| | | const duration = Date.now() - this.startPauseTime |
| | | this.totalPauseTime += duration |
| | | } |
| | | |
| | | }, |
| | | |
| | | // 视频暂停事件 |
| | |
| | | }, |
| | | // 获取视频总时长 |
| | | onLoadedMetadata(e) { |
| | | this.duration = e.detail.duration; |
| | | this.formartDuration = this.sliderFormatTime(this.duration); |
| | | console.log("视频总时长", this.duration); |
| | | // this.duration = e.detail.duration; |
| | | // this.formartDuration = this.sliderFormatTime(this.duration); |
| | | // console.log("视频总时长", this.duration); |
| | | }, |
| | | // 保存播放记录 |
| | | async savePlayRecord() { |
| | |
| | | .video-info { |
| | | width: 70%; |
| | | position: absolute; |
| | | bottom: 70px; |
| | | bottom: 20px; |
| | | left: 20px; |
| | | color: #f8f8f8; |
| | | z-index: 10; |
| | |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .custom-share-btn { |
| | | font-size: unset; |
| | | background: none; |
| | | padding: 0; |
| | | margin: 0; |
| | | line-height: normal; |
| | | border: none; |
| | | } |
| | | .custom-share-btn::after { |
| | | border: none; |
| | | } |
| | | </style> |