123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- //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 )
- }
- }
- })
- }
- })
|