//index.js //获取应用实例 const app = getApp() Page({ data: { spinShow: false, buyModel:false, code_url:'', system: "", userInfo:{}, info:{}, onPlay: false, item:{}, courseId:0, mediaList: [] }, onLoad: function( options ){ let courseId = +options.courseId||35; this.setData({courseId}) app.getSystemInfo( system=>{ this.setData({system}) }) // }, onShow: function(){ let courseId = this.data.courseId app.checkLogin( userInfo =>{ this.setData({userInfo, from:0}) this.loadData( courseId ) }) }, loadData: function( courseId ) { let param ={ courseId} app.formPost('Study.GetWxCourseInfo', param).then(res => { if( res.code == 200){ let {info, list} = res.data wx.setNavigationBarTitle({ title: info.name }) this.setData({info, mediaList: list}) } }) }, onReady(res) { this.videoContext = wx.createVideoContext('myVideo') }, gotoExam(){ let courseId = this.data.courseId wx.navigateTo({ url: `/pages/study/exam/index?courseId=${courseId}`, }) }, recalcXs( ){ let medias = this.data.mediaList; let info = this.data.info let gxs = 0; for( let i in medias){ if( medias[i].isFinish == 1){ gxs+= medias[i].xs } } info.getXs = gxs this.setData({info}) }, // 拖动快进 timeUpdate( e ){ let that = this; let item = this.data.item var position = item.position var currentTime = parseInt(e.detail.currentTime) if( currentTime - position < 1 || item.isFinish ){ return } // if( currentTime - position > 5 ){ let videoContext = wx.createVideoContext('myVideo'); videoContext.seek( position ) wx.showToast({ title: '未完整看完该视频,不能快进', icon: 'none', duration: 2000, }) return; }else{ item.position= currentTime } if( item.position - item.prev_tick > 4 || item.position == item.duration ){ item.prev_tick = item.position; // 前一秒完成 if( item.prev_tick >= e.detail.duration ){ item.isFinish = 1 } this.doTick( item ) } that.setData({item}) }, doTick( item ){ let param = { id: item.id, isFinish: item.isFinish||0, position: item.position, } let mediaList = this.data.mediaList; app.formPost('study.tick', param).then( res => { if( res.code == 200){ if( !res.data.skip ){ item.position = res.data.position; return; } Object.assign( item, res.data ) mediaList[item.index] = item; if( item.isFinish){ this.recalcXs() } this.setData( {item, mediaList} ); } }) }, playMedia( e ){ let index = e.currentTarget.dataset.index; let mediaList = this.data.mediaList let item = mediaList[index]; item.index = index; item.prev_tick = item.position wx.pageScrollTo({ scrollTop: 0, duration: 1000 }) if( item.url ){ this.setData({onPlay: true, item}) return; } app.formPost('study.GetMedia', {id:item.id}).then( res => { if( res.code == 200){ if( !res.data ) return item.url = res.data mediaList[index] = item; this.setData({onPlay: true, item, mediaList}) } }); }, doWxPay( data ){ let that = this wx.requestPayment({ timeStamp: data.timeStamp, nonceStr: data.nonceStr, package: data.package, signType: data.signType, paySign: data.paySign, success: function (event) { wx.showModal({ title: '支付成功', showCancel: false, content: '本次共支付费用¥'+(data.fee/100)+'元'+ `\n\n试卷更新可能延迟,请耐心等待`, success(res) { that.indexLoad() } }) } }) }, startWxpay(e){ let groupId = +e.currentTarget.dataset.id let system = this.data.system app.formPost('User.PayExam', {groupId, system}).then(res => { if (res.code === 200) { if( res.data.payType=="free" ){ this.indexLoad() }else if (res.data.payType=="qrcode"){ this.setData({info: res.data, buyModel:true}) }else{ this.doWxPay( res.data ) } } }) } })