index.js 3.5 KB

1
  1. "use strict";const i=require("../../common/vendor.js"),d=require("../../api/list.js"),_=require("../../uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js"),u={mixins:[_.MescrollMixin],data(){return{list:[],downOption:{offset:80,use:!0,auto:!1},upOption:{use:!0,auto:!0,page:{num:0,size:10}},mescroll:null,observer:null}},onLoad(){i.index.getStorageSync("AppToken")||i.index.navigateTo({url:"/pages/auth/login"})},onUnload(){this.cleanupAllVideos()},methods:{onVideoError(e,r){this.$set(e,"_error",!0),this.pauseVideo(e)},onVideoLoaded(e){console.log("视频元数据加载完成:",e.liveId),this.$set(e,"_error",!1)},initAllVideoObservers(){this.cleanupAllVideos(),setTimeout(()=>{this.list.forEach(e=>{e.liveId&&this.initVideoObserver(e)})},300)},initVideoObserver(e){const r=`myVideo_${e.liveId}`,a=i.index.createIntersectionObserver(this);a.relativeToViewport({top:100,bottom:100}).observe(`#${r}`,n=>{const s=n.intersectionRatio>0;s!==e._isInView&&this.$set(e,"_isInView",s),s?this.playVideo(e):this.pauseVideo(e)}),this.$set(e,"_observer",a)},playVideo(e){if(!e._isInView||e._isPlaying||e._error)return;const r=`myVideo_${e.liveId}`,a=e.liveType==1;i.index.createSelectorQuery().in(this).select(`#${r}`).fields({context:!0}).exec(n=>{if(n&&n[0]&&n[0].context){const s=n[0].context;try{if(a)s.play();else{const l=()=>{s.play().then(()=>{console.log("录播视频播放成功:",e.liveId),this.$set(e,"_isPlaying",!0),this.$set(e,"_videoContext",s)}).catch(o=>{console.error("录播视频播放失败:",o),this.$set(e,"_error",!0)})};s.duration>0?l():s.onloadedmetadata=l}this.$set(e,"_isPlaying",!0),this.$set(e,"_videoContext",s)}catch(l){console.error(`播放失败 ${r}:`,l),this.$set(e,"_error",!0)}}})},pauseVideo(e){e._isPlaying&&(e._videoContext&&e._videoContext.pause(),this.$set(e,"_isPlaying",!1))},cleanupAllVideos(){this.list.forEach(e=>{this.pauseVideo(e),this.$set(e,"_isInView",!1),e._observer&&(e._observer.disconnect(),this.$set(e,"_observer",null))})},mescrollInit(e){this.mescroll=e},downCallback(e){this.cleanupAllVideos(),this.list=[],e.resetUpScroll()},upCallback(e){const r=e.num;let n={pageSize:e.size,page:r};d.liveList(n).then(s=>{if(s.code==200){let l=s.rows||[];console.log("curPageData在这里>>>>",l);let o=s.total||0;l=l.map(t=>({...t,_error:!1,_isPlaying:!1,_isInView:!1})),r===1&&(this.list=[]),this.list=this.list.concat(l),console.log("list在这里>>>>",list),this.$nextTick(()=>{this.initAllVideoObservers()}),e.endBySize(l.length,o)}else e.endErr(),i.index.showToast({title:s.msg,icon:"none"})}).catch(s=>{e.endErr()})},goLive(e){i.index.navigateTo({url:`/pages/home/living?liveId=${e.liveId}&immediate=true`})}}};Array||i.resolveComponent("mescroll-body")();const v=()=>"../../uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.js";Math||v();function h(e,r,a,n,s,l){return{a:i.f(s.list,(o,t,f)=>i.e({a:!o._isInView&&o.liveImgUrl},!o._isInView&&o.liveImgUrl?{b:o.liveImgUrl}:{},{c:o._isInView&&o.liveType==1&&o.flvHlsUrl},o._isInView&&o.liveType==1&&o.flvHlsUrl?{d:"myVideo_"+o.liveId,e:o.flvHlsUrl,f:i.o(c=>l.onVideoError(o,c),t)}:{},{g:o._isInView&&o.liveType==2&&o.videoUrl},o._isInView&&o.liveType==2&&o.videoUrl?{h:"myVideo_"+o.liveId,i:o.videoUrl,j:i.o(c=>l.onVideoError(o,c),t),k:i.o(c=>l.onVideoLoaded(o),t)}:{},{l:i.t(o.liveName),m:i.o(c=>l.goLive(o),t),n:t})),b:i.sr("mescrollRef","7bd28468-0"),c:i.o(l.mescrollInit),d:i.o(l.downCallback),e:i.o(l.upCallback),f:i.p({bottom:"0",down:s.downOption,up:s.upOption})}}const p=i._export_sfc(u,[["render",h],["__scopeId","data-v-7bd28468"]]);wx.createPage(p);