index.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. //index.js
  2. //获取应用实例
  3. const app = getApp()
  4. Page({
  5. data: {
  6. spinShow: false,
  7. buyModel:false,
  8. code_url:'',
  9. system: "",
  10. userInfo:{},
  11. info:{},
  12. onPlay: false,
  13. item:{},
  14. courseId:0,
  15. mediaList: []
  16. },
  17. onLoad: function( options ){
  18. let courseId = +options.courseId||35;
  19. this.setData({courseId})
  20. app.getSystemInfo( system=>{
  21. this.setData({system})
  22. })
  23. //
  24. },
  25. onShow: function(){
  26. app.getUserInfo( userInfo =>{
  27. this.setData({userInfo, from:0})
  28. this.loadData( courseId )
  29. })
  30. },
  31. loadData: function( courseId ) {
  32. let param ={ courseId}
  33. app.formPost('Study.GetWxCourseInfo', param).then(res => {
  34. if( res.code == 200){
  35. let {info, list} = res.data
  36. wx.setNavigationBarTitle({
  37. title: info.name
  38. })
  39. this.setData({info, mediaList: list})
  40. }
  41. })
  42. },
  43. onReady(res) {
  44. this.videoContext = wx.createVideoContext('myVideo')
  45. },
  46. gotoExam(){
  47. let courseId = this.data.courseId
  48. wx.navigateTo({
  49. url: `/pages/study/exam/index?courseId=${courseId}`,
  50. })
  51. },
  52. // 拖动快进
  53. timeUpdate( e ){
  54. let that = this;
  55. let item = this.data.item
  56. var position = item.position
  57. var currentTime = parseInt(e.detail.currentTime)
  58. if( currentTime - position < 1 || item.isFinish ){
  59. return
  60. }
  61. //
  62. if( currentTime - position > 5 ){
  63. let videoContext = wx.createVideoContext('myVideo');
  64. videoContext.seek( position )
  65. wx.showToast({
  66. title: '未完整看完该视频,不能快进',
  67. icon: 'none',
  68. duration: 2000,
  69. })
  70. return;
  71. }else{
  72. item.position= currentTime
  73. }
  74. if( item.position - item.prev_tick > 4 ){
  75. item.prev_tick = item.position;
  76. // 前一秒完成
  77. if( item.prev_tick >= e.detail.duration ){
  78. item.isFinish = 1
  79. }
  80. this.doTick( item )
  81. }
  82. that.setData({item})
  83. },
  84. doTick( item ){
  85. let param = {
  86. id: item.id,
  87. isFinish: item.isFinish||0,
  88. position: item.position,
  89. }
  90. let mediaList = this.data.mediaList;
  91. app.formPost('study.tick', param).then( res => {
  92. if( res.code == 200){
  93. item.isFinish = res.data.isFinish
  94. if( !res.data.skip ){
  95. item.position = res.data.position;
  96. }
  97. mediaList[item.index] = item;
  98. this.setData( {item, mediaList} );
  99. }
  100. })
  101. },
  102. playMedia( e ){
  103. let index = e.currentTarget.dataset.index;
  104. let mediaList = this.data.mediaList
  105. let item = mediaList[index];
  106. item.index = index;
  107. item.prev_tick = item.position
  108. wx.pageScrollTo({
  109. scrollTop: 0,
  110. duration: 1000
  111. })
  112. if( item.url ){
  113. this.setData({onPlay: true, item})
  114. return;
  115. }
  116. app.formPost('study.GetMedia', {id:item.id}).then( res => {
  117. if( res.code == 200){
  118. if( !res.data ) return
  119. item.url = res.data
  120. mediaList[index] = item;
  121. this.setData({onPlay: true, item, mediaList})
  122. }
  123. });
  124. },
  125. doWxPay( data ){
  126. let that = this
  127. wx.requestPayment({
  128. timeStamp: data.timeStamp,
  129. nonceStr: data.nonceStr,
  130. package: data.package,
  131. signType: data.signType,
  132. paySign: data.paySign,
  133. success: function (event) {
  134. wx.showModal({
  135. title: '支付成功',
  136. showCancel: false,
  137. content: '本次共支付费用¥'+(data.fee/100)+'元'+ `\n\n试卷更新可能延迟,请耐心等待`,
  138. success(res) {
  139. that.indexLoad()
  140. }
  141. })
  142. }
  143. })
  144. },
  145. startWxpay(e){
  146. let groupId = +e.currentTarget.dataset.id
  147. let system = this.data.system
  148. app.formPost('User.PayExam', {groupId, system}).then(res => {
  149. if (res.code === 200) {
  150. if( res.data.payType=="free" ){
  151. this.indexLoad()
  152. }else if (res.data.payType=="qrcode"){
  153. this.setData({info: res.data, buyModel:true})
  154. }else{
  155. this.doWxPay( res.data )
  156. }
  157. }
  158. })
  159. }
  160. })