|
@@ -0,0 +1,179 @@
|
|
|
|
+//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 )
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+})
|