index.js 4.0 KB

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