const app = require('../../utils/util.js'); const tools = require('../../utils/tools.js'); Page({ data: { url: '', //播放地址 title: '', //视频标题 message: '', //视频信息 playTimes: 0, //播放次数 startPlayTime: 0, // 从这个时间点开始播放 id: 0, //带过来的id studyLog: {}, //学习日志 intervalTime: 0, //隔五分钟清空重新计时 弹出信息确认在不在 video_real_time: 0, //实时播放进度 initial_time: '', //视频跳转进度 秒 intervalCtx: null, videoContext: null }, // 视频出错了 videoErrorCallback: function (e) { console.log('视频错误信息:', e.detail.errMsg) }, // 计时 五分钟弹出一个弹框 calculateTime() { let _this = this; this.setData({ intervalTime: _this.data.intervalTime + 5 }) if (_this.data.intervalTime > 300) { _this.data.videoContext.pause() this.setData({ intervalTime: 0 }) wx.showModal({ showCancel: false, content: "您还在吗,请点击确定继续观看视频哦", success(res) { if (res.confirm) { _this.data.videoContext.play() } } }) } }, // 点击开始播放视频 bindplay() { this.setData({ videoContext: wx.createVideoContext('myVideo') }) this.setData({ intervalCtx: setInterval(() => { this.calculateTime() }, 5000) }) }, // 视频暂停 bindpause() { clearInterval(this.data.intervalCtx) }, // 得到录播列表 getdbArr(sessionKey) { let _this = this; wx.request({ method: "post", url: app.globalData.publicUrl + '/wx/course/selectRecordByCourseId', data: { sessionKey: sessionKey, courseId: _this.data.id }, success: (e) => { this.setData({ url: e.data.url, show: false, title: e.data.course.courseName, message: e.data.course.courseInfo, playTimes: e.data.course.playTimes }) } }) }, // 获取学习进度 getStudyLog(sessionKey) { let _this = this; wx.request({ method: "post", url: app.globalData.publicUrl + '/wx/course/getStudyLog', data: { sessionKey: sessionKey, courseId: _this.data.id }, success: (e) => { if (e.data.studyLog.isDone == 1) { _this.setData({ studyLog: e.data.studyLog }) } else { _this.setData({ studyLog: e.data.studyLog, startPlayTime: e.data.studyLog.studyTime }) } } }) }, // 设置不可快进 timeUpdate: function (e) { //实时播放进度 秒数 let _this = this; let currentTime = parseInt(e.detail.currentTime) //当前播放秒数 let studyTime = 'studyLog.studyTime' this.setData({ [studyTime]: currentTime }) let aa = 1; let jump_time; // let duration = e.detail.duration if (_this.data.video_real_time == 0) { jump_time = parseInt(_this.data.startPlayTime) + parseInt(_this.data.video_real_time) } else { jump_time = parseInt(_this.data.video_real_time) } if (aa == 1) { if (currentTime > jump_time && currentTime - jump_time > 3) { _this.data.videoContext.seek(_this.data.video_real_time) wx.showToast({ title: '未完整看完该视频,不能快进', icon: 'none', duration: 2000, }) } } _this.setData({ video_real_time: currentTime, //实时播放进度 }) }, // 修改学习进度 chechEndStatus: function () { let _this = this; // let currentTime = parseInt(e.detail.currentTime) let isDone = 'studyLog.isDone' this.setData({ [isDone]: 1 }) wx.request({ method: "post", url: app.globalData.publicUrl + '/wx/course/updateStudyLog', data: { studyLog: _this.data.studyLog }, success: (e) => { console.log(e, "我修改进度成功了") } }) }, onUnload() { let _this = this; clearInterval(_this.data.intervalCtx) if (_this.data.startPlayTime < _this.data.studyLog.studyTime) { wx.request({ method: "post", url: app.globalData.publicUrl + '/wx/course/updateStudyLog', data: { studyLog: _this.data.studyLog }, success: (e) => { console.log(e, "我修改进度成功了") } }) } }, onHide() { let _this = this; clearInterval(_this.data.intervalCtx) if (_this.data.studyTime < _this.data.studyLog.studyTime) { wx.request({ method: "post", url: app.globalData.publicUrl + '/wx/course/updateStudyLog', data: { studyLog: _this.data.studyLog }, success: (e) => { console.log(e, "我修改进度成功了") } }) } }, async onLoad(options) { this.setData({ id: options.id }) const sessionKey = await tools.checkSessionAndLogin(); this.getdbArr(sessionKey); this.getStudyLog(sessionKey); } })