basicTraining.vue 5.4 KB

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