绿满眶商城微信小程序-uniapp
zxl
4 天以前 c9928dd4f6d25e2339ea1400f59ec58674a927a7
pages/tabbar/index/home.vue
@@ -134,6 +134,12 @@
            <text class="iconfont">&#xe7f7;</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">&#xe602;</text>
               </button>
        </view>
        </view>
      
      </swiper-item>
@@ -226,6 +232,10 @@
<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() {
@@ -301,7 +311,14 @@
    }
  },
  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
@@ -311,14 +328,71 @@
  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({
@@ -643,6 +717,9 @@
      if (this.videoContexts[this.currentIndex]) {
         this.videoContexts[this.currentIndex].play();
      }
      // 设置当前播放视频的总时长
      this.duration = this.videoList[this.currentIndex].videoDuration;
      this.formartDuration = this.sliderFormatTime(this.duration);
    },
    
    // 收藏/取消收藏
@@ -683,6 +760,11 @@
      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
@@ -696,6 +778,7 @@
         const duration = Date.now() - this.startPauseTime
         this.totalPauseTime += duration
      }
    },
    
    // 视频暂停事件
@@ -772,9 +855,9 @@
   },
   // 获取视频总时长
   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() {
@@ -833,7 +916,7 @@
   .video-info {
     width: 70%;
     position: absolute;
     bottom: 70px;
     bottom: 20px;
     left: 20px;
     color: #f8f8f8;
     z-index: 10;
@@ -1218,4 +1301,15 @@
     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>