dbDetails.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  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. playVideoDuration: 0, // 从这个时间点开始播放
  10. id: 0, //带过来的id
  11. studyLog: {}, //我得到的学习日志
  12. intervalTime: 0, //隔五分钟清空重新计时 弹出信息确认在不在
  13. video_real_time: 0, //实时播放进度
  14. intervalCtx: null,
  15. videoContext: null,
  16. classInfo: {},
  17. showWW: false
  18. },
  19. isClass(sessionKey) {
  20. wx.request({
  21. url: app.globalData.publicUrl + '/wx/student/selMyClas',
  22. method: "post",
  23. data: {
  24. sessionKey
  25. },
  26. success: (res) => {
  27. if (res.data.code == 0) {
  28. this.setData({
  29. classInfo: res.data.data
  30. })
  31. } else {
  32. if (res.data.msg == "运行时异常:学员不可同时存在两个班级中。") {
  33. wx.showModal({
  34. content: "学员不可同时存在多个班级中哦",
  35. showCancel: false,
  36. success(res) {
  37. if (res.confirm) {
  38. wx.switchTab({
  39. url: '../index/index'
  40. })
  41. }
  42. }
  43. })
  44. return false;
  45. } else {
  46. wx.showModal({
  47. content: "您当前还没有正在开放的班级!",
  48. showCancel: false,
  49. success(res) {
  50. if (res.confirm) {
  51. wx.switchTab({
  52. url: '../index/index'
  53. })
  54. }
  55. }
  56. })
  57. return false;
  58. }
  59. }
  60. }
  61. })
  62. },
  63. // 视频出错了
  64. videoErrorCallback: function (e) {
  65. console.log('视频错误信息:', e.detail.errMsg)
  66. },
  67. // 计时 五分钟弹出一个弹框
  68. calculateTime() {
  69. console.log(this.data.intervalTime)
  70. let _this = this;
  71. this.setData({
  72. intervalTime: _this.data.intervalTime + 5
  73. })
  74. if (_this.data.intervalTime > 300) {
  75. _this.data.videoContext.pause()
  76. this.setData({
  77. intervalTime: 0,
  78. showWW: true
  79. })
  80. // wx.showModal({
  81. // showCancel: false,
  82. // content: "您还在吗,请点击确定继续观看视频哦",
  83. // success(res) {
  84. // if (res.confirm) {
  85. // _this.data.videoContext.play()
  86. // }
  87. // }
  88. // })
  89. }
  90. },
  91. // 点击开始播放视频
  92. bindplay() {
  93. this.setData({
  94. intervalCtx: setInterval(() => {
  95. this.calculateTime()
  96. }, 5000)
  97. })
  98. },
  99. startbf() {
  100. this.setData({
  101. showWW: false
  102. })
  103. this.data.videoContext.play()
  104. },
  105. // 视频暂停
  106. bindpause() {
  107. clearInterval(this.data.intervalCtx)
  108. },
  109. // 得到录播列表
  110. getdbArr(sessionKey) {
  111. let _this = this;
  112. wx.request({
  113. method: "post",
  114. url: app.globalData.publicUrl + '/wx/course/selectRecordByCourseId',
  115. data: {
  116. sessionKey: sessionKey,
  117. courseId: _this.data.id
  118. },
  119. success: (e) => {
  120. console.log(e, "888888888888888888")
  121. this.setData({
  122. url: e.data.url,
  123. show: false,
  124. title: e.data.course.courseName,
  125. message: e.data.course.courseInfo,
  126. playTimes: e.data.course.playTimes
  127. })
  128. }
  129. })
  130. },
  131. // 获取学习进度
  132. getStudyLog(sessionKey) {
  133. let _this = this;
  134. wx.request({
  135. method: "post",
  136. url: app.globalData.publicUrl + '/wx/course/getStudyLog',
  137. data: {
  138. sessionKey: sessionKey,
  139. courseId: _this.data.id
  140. },
  141. success: (e) => {
  142. if (e.data.studyLog.isDone == 1) {
  143. _this.setData({
  144. studyLog: e.data.studyLog
  145. })
  146. } else {
  147. _this.setData({
  148. studyLog: e.data.studyLog,
  149. playVideoDuration: e.data.studyLog.studyTime
  150. })
  151. }
  152. }
  153. })
  154. },
  155. // 设置不可快进
  156. timeUpdate: function (e) {
  157. //实时播放进度 秒数
  158. let _this = this;
  159. let currentTime = parseInt(e.detail.currentTime) //当前播放秒数
  160. let studyTime = 'studyLog.studyTime'
  161. this.setData({
  162. [studyTime]: currentTime
  163. })
  164. if (this.data.classInfo.id != -1) {
  165. let aa = 1;
  166. let jump_time;
  167. if (_this.data.video_real_time == 0) {
  168. jump_time = parseInt(_this.data.playVideoDuration) + parseInt(_this.data.video_real_time)
  169. } else {
  170. jump_time = parseInt(_this.data.video_real_time)
  171. }
  172. if (aa == 1) {
  173. if (currentTime > jump_time && currentTime - jump_time > 3) {
  174. _this.data.videoContext.seek(_this.data.video_real_time)
  175. wx.showToast({
  176. title: '未完整看完该视频,不能快进',
  177. icon: 'none',
  178. duration: 2000,
  179. })
  180. }
  181. }
  182. }
  183. _this.setData({
  184. video_real_time: currentTime, //实时播放进度
  185. })
  186. },
  187. // 修改学习进度
  188. chechEndStatus: function () {
  189. let _this = this;
  190. // let currentTime = parseInt(e.detail.currentTime)
  191. let isDone = 'studyLog.isDone'
  192. this.setData({
  193. [isDone]: 1
  194. })
  195. wx.request({
  196. method: "post",
  197. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  198. data: {
  199. studyLog: _this.data.studyLog
  200. },
  201. success: (e) => {
  202. wx.showModal({
  203. showCancel: false,
  204. content: "该录播视频已经看完啦,快去完成其他任务吧!",
  205. success(res) {
  206. if (res.confirm) {
  207. wx.navigateBack({
  208. delta: 1
  209. })
  210. }
  211. }
  212. })
  213. }
  214. })
  215. },
  216. onUnload() {
  217. let _this = this;
  218. clearInterval(_this.data.intervalCtx)
  219. let stydyrecord = _this.data.playVideoDuration;
  220. if (stydyrecord == null) {
  221. stydyrecord == 0
  222. }
  223. if (_this.data.studyLog.studyTime > stydyrecord) {
  224. wx.request({
  225. method: "post",
  226. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  227. data: {
  228. studyLog: _this.data.studyLog
  229. },
  230. success: (e) => {
  231. console.log(e, "我修改进度成功了")
  232. }
  233. })
  234. }
  235. },
  236. onHide() {
  237. let _this = this;
  238. clearInterval(_this.data.intervalCtx)
  239. let stydyrecord = _this.data.playVideoDuration;
  240. if (stydyrecord == null) {
  241. stydyrecord == 0
  242. }
  243. if (_this.data.studyLog.studyTime > _this.data.playVideoDuration) {
  244. wx.request({
  245. method: "post",
  246. url: app.globalData.publicUrl + '/wx/course/updateStudyLog',
  247. data: {
  248. studyLog: _this.data.studyLog
  249. },
  250. success: (e) => {
  251. console.log(e, "我修改进度成功了")
  252. }
  253. })
  254. }
  255. },
  256. async onLoad(options) {
  257. this.setData({
  258. id: options.id,
  259. videoContext: wx.createVideoContext('myVideo')
  260. })
  261. const sessionKey = await tools.checkSessionAndLogin();
  262. this.isClass(sessionKey);
  263. this.getStudyLog(sessionKey);
  264. this.getdbArr(sessionKey);
  265. }
  266. })