dbDetails.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. const app = require('../../utils/util.js');
  2. const tools = require('../../utils/tools.js');
  3. Page({
  4. data: {
  5. url: '', //播放地址
  6. title: '', //视频标题
  7. message: '', //视频信息
  8. playTimes: 0, //播放次数
  9. startPlayTime: 0, // 从这个时间点开始播放
  10. id: 0, //带过来的id
  11. studyLog: {}, //学习日志
  12. intervalTime: 0, //隔五分钟清空重新计时 弹出信息确认在不在
  13. video_real_time: 0, //实时播放进度
  14. initial_time: '', //视频跳转进度 秒
  15. intervalCtx: null,
  16. videoContext: null
  17. },
  18. // 视频出错了
  19. videoErrorCallback: function (e) {
  20. console.log('视频错误信息:', e.detail.errMsg)
  21. },
  22. // 计时 五分钟弹出一个弹框
  23. calculateTime() {
  24. let _this = this;
  25. this.setData({
  26. intervalTime: _this.data.intervalTime + 5
  27. })
  28. if (_this.data.intervalTime > 300) {
  29. _this.data.videoContext.pause()
  30. this.setData({
  31. intervalTime: 0
  32. })
  33. wx.showModal({
  34. showCancel: false,
  35. content: "您还在吗,请点击确定继续观看视频哦",
  36. success(res) {
  37. if (res.confirm) {
  38. _this.data.videoContext.play()
  39. }
  40. }
  41. })
  42. }
  43. },
  44. // 点击开始播放视频
  45. bindplay() {
  46. this.setData({
  47. videoContext: wx.createVideoContext('myVideo')
  48. })
  49. this.setData({
  50. intervalCtx: setInterval(() => {
  51. this.calculateTime()
  52. }, 5000)
  53. })
  54. },
  55. // 视频暂停
  56. bindpause() {
  57. clearInterval(this.data.intervalCtx)
  58. },
  59. // 得到录播列表
  60. getdbArr(sessionKey) {
  61. let _this = this;
  62. wx.request({
  63. method: "post",
  64. url: app.globalData.publicUrl + '/wx/course/selectRecordByCourseId',
  65. data: {
  66. sessionKey: sessionKey,
  67. courseId: _this.data.id
  68. },
  69. success: (e) => {
  70. this.setData({
  71. url: e.data.url,
  72. show: false,
  73. title: e.data.course.courseName,
  74. message: e.data.course.courseInfo,
  75. playTimes: e.data.course.playTimes
  76. })
  77. }
  78. })
  79. },
  80. // 获取学习进度
  81. getStudyLog(sessionKey) {
  82. let _this = this;
  83. wx.request({
  84. method: "post",
  85. url: app.globalData.publicUrl + '/wx/course/getStudyLog',
  86. data: {
  87. sessionKey: sessionKey,
  88. courseId: _this.data.id
  89. },
  90. success: (e) => {
  91. if (e.data.studyLog.isDone == 1) {
  92. _this.setData({
  93. studyLog: e.data.studyLog
  94. })
  95. } else {
  96. _this.setData({
  97. studyLog: e.data.studyLog,
  98. startPlayTime: e.data.studyLog.studyTime
  99. })
  100. }
  101. }
  102. })
  103. },
  104. // 设置不可快进
  105. timeUpdate: function (e) {
  106. //实时播放进度 秒数
  107. let _this = this;
  108. let currentTime = parseInt(e.detail.currentTime) //当前播放秒数
  109. let studyTime = 'studyLog.studyTime'
  110. this.setData({
  111. [studyTime]: currentTime
  112. })
  113. let aa = 1;
  114. let jump_time;
  115. // let duration = e.detail.duration
  116. if (_this.data.video_real_time == 0) {
  117. jump_time = parseInt(_this.data.startPlayTime) + parseInt(_this.data.video_real_time)
  118. } else {
  119. jump_time = parseInt(_this.data.video_real_time)
  120. }
  121. if (aa == 1) {
  122. if (currentTime > jump_time && currentTime - jump_time > 3) {
  123. _this.data.videoContext.seek(_this.data.video_real_time)
  124. wx.showToast({
  125. title: '未完整看完该视频,不能快进',
  126. icon: 'none',
  127. duration: 2000,
  128. })
  129. }
  130. }
  131. _this.setData({
  132. video_real_time: currentTime, //实时播放进度
  133. })
  134. },
  135. // 修改学习进度
  136. chechEndStatus: function () {
  137. let _this = this;
  138. // let currentTime = parseInt(e.detail.currentTime)
  139. let isDone = 'studyLog.isDone'
  140. this.setData({
  141. [isDone]: 1
  142. })
  143. wx.request({
  144. method: "post",
  145. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  146. data: {
  147. studyLog: _this.data.studyLog
  148. },
  149. success: (e) => {
  150. console.log(e, "我修改进度成功了")
  151. }
  152. })
  153. },
  154. onUnload() {
  155. let _this = this;
  156. clearInterval(_this.data.intervalCtx)
  157. if (_this.data.startPlayTime < _this.data.studyLog.studyTime) {
  158. wx.request({
  159. method: "post",
  160. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  161. data: {
  162. studyLog: _this.data.studyLog
  163. },
  164. success: (e) => {
  165. console.log(e, "我修改进度成功了")
  166. }
  167. })
  168. }
  169. },
  170. onHide() {
  171. let _this = this;
  172. clearInterval(_this.data.intervalCtx)
  173. if (_this.data.studyTime < _this.data.studyLog.studyTime) {
  174. wx.request({
  175. method: "post",
  176. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  177. data: {
  178. studyLog: _this.data.studyLog
  179. },
  180. success: (e) => {
  181. console.log(e, "我修改进度成功了")
  182. }
  183. })
  184. }
  185. },
  186. async onLoad(options) {
  187. this.setData({
  188. id: options.id
  189. })
  190. const sessionKey = await tools.checkSessionAndLogin();
  191. this.getdbArr(sessionKey);
  192. this.getStudyLog(sessionKey);
  193. }
  194. })