basicTraining.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <view class="training">
  3. <image class="bg" src="../../static/img/basic-training-bg.png" mode="widthFix"></image>
  4. <view class="tab">
  5. <view class="tab-bg">
  6. <view class="tab-list">
  7. <view class="tab-item" v-for="(item, index) in tabs" :key="index" :class="{'active': tabIndex === index}" @click="tabChange(index)">{{ item.name }}</view>
  8. </view>
  9. <view class="training-data" v-if="tabIndex === 0">
  10. <view class="training-data-item">
  11. <view>已看课程</view>
  12. <view><text>{{ online.play }}</text>个</view>
  13. </view>
  14. <view class="training-data-item">
  15. <view>还需观看</view>
  16. <view><text style="color: #FF7E00;">{{ online.playNot }}</text>个</view>
  17. </view>
  18. </view>
  19. <view class="training-offline" v-if="tabIndex === 1">
  20. <view>未参加线下培训</view>
  21. <view>(注:必须参加线下培训才能通过适应性培训)</view>
  22. </view>
  23. </view>
  24. </view>
  25. <!-- 适应性培训 -->
  26. <view class="training-adaptability mt26" v-if="tabIndex === 0">
  27. <view class="training-adaptability-title">线上课程</view>
  28. </view>
  29. <view class="training-adaptability" v-if="tabIndex === 0">
  30. <view class="training-adaptability-list">
  31. <view class="training-adaptability-list-item"
  32. v-for="(item, index) in list"
  33. :key="index"
  34. @click="recordBrowseTotal(item)"
  35. >
  36. <view class="left">
  37. <u-image :src="item.titleImg" width="198" height="144"></u-image>
  38. </view>
  39. <view class="right">
  40. <view>{{ item.adaptName }}</view>
  41. <view>共{{ item.amount }}节课,已学完{{ item.finishCount }}节课,学习进度{{ item.finishPercent ? item.finishPercent : 0 }}%</view>
  42. </view>
  43. </view>
  44. </view>
  45. </view>
  46. <!-- 线下培训 -->
  47. <view class="training-offline1" v-if="tabIndex === 1">
  48. <view class="training-offline1-title">
  49. 线下培训
  50. </view>
  51. <view class="training-offline1-list">
  52. <view class="training-offline1-list-item" v-for="(item, index) in offLineList" :key="index" @click="recordBrowseTotal(item, 1)">
  53. <view class="bottom">
  54. <view>{{ item.adaptName }}</view>
  55. </view>
  56. <view class="top">
  57. <view>{{ item.adaptAddress }}</view>
  58. <view>{{ item.createTime }}</view>
  59. </view>
  60. </view>
  61. </view>
  62. </view>
  63. <view class="study-status" v-if="tabIndex === 0">学习状态:{{ online.status === 0 ? '未完成' : '已完成' }}</view>
  64. <view class="study-status" v-if="tabIndex === 1">学习状态:{{ offlineStatus === 0 ? '未完成' : '已完成'}}</view>
  65. <u-toast ref="uToast" />
  66. </view>
  67. </template>
  68. <script>
  69. export default{
  70. data(){
  71. return{
  72. tabs: [
  73. { name: '适应性培训' },
  74. { name:'线下培训' },
  75. ],
  76. tabIndex: 0,
  77. list: [],
  78. online: {
  79. status: 0,
  80. play: 0,
  81. playNot: 0
  82. },
  83. offlineStatus: 0,
  84. offLineList: []
  85. }
  86. },
  87. onShow() {
  88. this.getOnlineList(1, 200000);
  89. this.getOnlineStatus();
  90. this.getOfflineList()
  91. },
  92. methods:{
  93. // 切换菜单
  94. tabChange(index) {
  95. this.tabIndex = index;
  96. },
  97. /**
  98. * 获取在线课程
  99. * @param {Object} pageNum
  100. * @param {Object} pageSize
  101. */
  102. getOnlineList(pageNum, pageSize) {
  103. this.$u.api.training.getOnlineListApi({pageNum, pageSize}).then(res => {
  104. if (res.code === 200) {
  105. this.list = res.rows
  106. } else {
  107. this.$refs.uToast.show({
  108. title: res.msg,
  109. type: 'error'
  110. })
  111. }
  112. })
  113. },
  114. /**
  115. * 获取在线课程学习状态
  116. */
  117. getOnlineStatus() {
  118. this.$u.api.training.getOnlineStatusApi().then(res => {
  119. if (res.code === 200) {
  120. this.online.status = res.data.status
  121. this.online.play = res.data.play
  122. this.online.playNot = res.data.playNot
  123. } else {
  124. this.$refs.uToast.show({
  125. title: res.msg,
  126. type: 'error'
  127. })
  128. }
  129. })
  130. },
  131. getOfflineList() {
  132. this.$u.api.training.getOfflineListApi({
  133. pageNum: 1,
  134. paheSize: 3000
  135. }).then(res => {
  136. console.log(res)
  137. if (res.code === 200) {
  138. this.offLineList = res.rows
  139. } else {
  140. this.$refs.uToast.show({
  141. title: res.msg,
  142. type: 'error'
  143. })
  144. }
  145. })
  146. },
  147. jumpPage(url, params) {
  148. this.$u.route({
  149. url: url,
  150. params: params
  151. })
  152. },
  153. /**
  154. * 适应性培训关注度统计
  155. * @param {Object} item
  156. */
  157. recordBrowseTotal(item, type) {
  158. const query = {
  159. platform: '1', // 平台:1-H5 2-APP 3-小程序 4-PC端
  160. pages: location.href,//页面路径
  161. btnName: '查看课程详情',//按钮名称
  162. btnEvent: '1',//按钮事件: 1-点击 2-长按 3-滑动
  163. ipAddress: '',//IP地址
  164. typeName: '适应性培训关注度',//类型名称 例:学校关注度 、适应性考试等
  165. typeCode: 'SYXPXGZD',// 类型编码 例:类型名称首字母缩写(XXGZD)
  166. categoryName: item.adaptName,//类别名称 例:XX学校,SS考试
  167. }
  168. this.$u.api.postAnalysis(query).then(res => {
  169. if (type === 1) {
  170. this.jumpPage('pages/basicTraining/offlineTrainingDetails/offlineTrainingDetails', { id: item.id })
  171. } else {
  172. this.jumpPage('/pages/basicTraining/onlineTrainingDetails/onlineTrainingDetails', { id: item.id })
  173. }
  174. })
  175. }
  176. }
  177. }
  178. </script>
  179. <style lang="scss" scoped>
  180. @import './basicTraining.scss';
  181. </style>