dbDetails.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. console.log(res, "22222222")
  38. if (res.confirm) {
  39. _this.data.videoContext.play()
  40. }
  41. }
  42. })
  43. }
  44. console.log(_this.data.intervalTime, "我是正在加的数")
  45. },
  46. // 点击开始播放视频
  47. bindplay() {
  48. console.log("我点击开始了")
  49. this.setData({
  50. videoContext: wx.createVideoContext('myVideo')
  51. })
  52. this.setData({
  53. intervalCtx: setInterval(() => {
  54. this.calculateTime()
  55. }, 5000)
  56. })
  57. },
  58. // 视频暂停
  59. bindpause() {
  60. clearInterval(this.data.intervalCtx)
  61. console.log(this.data.intervalTime, "我是暂停时加的所有数")
  62. },
  63. // 得到录播列表
  64. getdbArr(sessionKey) {
  65. let _this = this;
  66. wx.request({
  67. method: "post",
  68. url: app.globalData.publicUrl + '/wx/course/selectRecordByCourseId',
  69. data: {
  70. sessionKey: sessionKey,
  71. courseId: _this.data.id
  72. },
  73. success: (e) => {
  74. console.log(e, "2222222222")
  75. this.setData({
  76. url: e.data.url,
  77. show: false,
  78. title: e.data.course.courseInfo,
  79. message: e.data.course.courseName,
  80. playTimes: e.data.course.playTimes
  81. })
  82. }
  83. })
  84. },
  85. // 获取学习进度
  86. getStudyLog(sessionKey) {
  87. let _this = this;
  88. wx.request({
  89. method: "post",
  90. url: app.globalData.publicUrl + '/wx/course/getStudyLog',
  91. data: {
  92. sessionKey: sessionKey,
  93. courseId: _this.data.id
  94. },
  95. success: (e) => {
  96. console.log(e, "22222222222222")
  97. if (e.data.studyLog.isDone == 1) {
  98. _this.setData({
  99. studyLog: e.data.studyLog
  100. })
  101. } else {
  102. _this.setData({
  103. studyLog: e.data.studyLog,
  104. startPlayTime: e.data.studyLog.studyTime
  105. })
  106. }
  107. }
  108. })
  109. },
  110. // 设置不可快进
  111. timeUpdate: function (e) {
  112. //实时播放进度 秒数
  113. let _this = this;
  114. let currentTime = parseInt(e.detail.currentTime) //当前播放秒数
  115. let studyTime = 'studyLog.studyTime'
  116. this.setData({
  117. [studyTime]: currentTime
  118. })
  119. let aa = 1;
  120. let jump_time;
  121. // let duration = e.detail.duration
  122. if (_this.data.video_real_time == 0) {
  123. jump_time = parseInt(_this.data.startPlayTime) + parseInt(_this.data.video_real_time)
  124. } else {
  125. jump_time = parseInt(_this.data.video_real_time)
  126. }
  127. if (aa == 1) {
  128. if (currentTime > jump_time && currentTime - jump_time > 3) {
  129. _this.data.videoContext.seek(_this.data.video_real_time)
  130. wx.showToast({
  131. title: '未完整看完该视频,不能快进',
  132. icon: 'none',
  133. duration: 2000,
  134. })
  135. }
  136. }
  137. _this.setData({
  138. video_real_time: currentTime, //实时播放进度
  139. })
  140. },
  141. // 修改学习进度
  142. chechEndStatus: function () {
  143. let _this = this;
  144. // let currentTime = parseInt(e.detail.currentTime)
  145. let isDone = 'studyLog.isDone'
  146. this.setData({
  147. [isDone]: 1
  148. })
  149. wx.request({
  150. method: "post",
  151. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  152. data: {
  153. studyLog: _this.data.studyLog
  154. },
  155. success: (e) => {
  156. console.log(e, "我修改进度成功了aaaa")
  157. }
  158. })
  159. },
  160. onUnload() {
  161. let _this = this;
  162. clearInterval(_this.data.intervalCtx)
  163. if (_this.data.startPlayTime < _this.data.studyLog.studyTime) {
  164. console.log(_this.data.studyLog)
  165. wx.request({
  166. method: "post",
  167. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  168. data: {
  169. studyLog: _this.data.studyLog
  170. },
  171. success: (e) => {
  172. console.log(e, "我修改进度成功了")
  173. }
  174. })
  175. }
  176. },
  177. onHide() {
  178. let _this = this;
  179. clearInterval(_this.data.intervalCtx)
  180. if (_this.data.studyTime < _this.data.studyLog.studyTime) {
  181. wx.request({
  182. method: "post",
  183. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  184. data: {
  185. studyLog: _this.data.studyLog
  186. },
  187. success: (e) => {
  188. console.log(e, "我修改进度成功了")
  189. }
  190. })
  191. }
  192. },
  193. async onLoad(options) {
  194. this.setData({
  195. id: options.id
  196. })
  197. const sessionKey = await tools.checkSessionAndLogin();
  198. this.getdbArr(sessionKey);
  199. this.getStudyLog(sessionKey);
  200. }
  201. })