index.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <template>
  2. <view class="container">
  3. <!-- #ifdef H5 -->
  4. <!-- <view style="color: #fff;">
  5. <tn-nav-bar :isBack="false" backgroundColor="#26B3A0" :bottomShadow="false" @rightClick="jumpScoreRed">数趣AI
  6. </tn-nav-bar>
  7. <view :style="{ height: tobheight + 'px' }"></view>
  8. </view> -->
  9. <!-- #endif -->
  10. <view class="content">
  11. <view class="scoreMainTitle">
  12. 课程
  13. </view>
  14. <view class="scoreMainBox" v-for="(item,index) in courseList" @click="goScoreDetail(item.id)">
  15. <view class="topImg">
  16. <image :src="item.cover_image?item.cover_image:'../../static/posImg.png'" mode=""></image>
  17. </view>
  18. <view class="bottom">
  19. <view class="labelAndPrice item">
  20. <view class="label" style="font-weight: 600;">
  21. {{item.name }}
  22. </view>
  23. <view class="right">
  24. <view class="price">
  25. ¥{{item.price }}
  26. </view>
  27. <view class="selOut" style="color:#999">
  28. 已售出:{{item.orders_count+2376 }}份
  29. </view>
  30. </view>
  31. </view>
  32. <view class="scoreDes">
  33. {{item.intro }}
  34. </view>
  35. <view class="stuBtn">
  36. 立即学习
  37. </view>
  38. </view>
  39. </view>
  40. <view class="taskTitle">
  41. 新用户专享任务
  42. </view>
  43. <ul>
  44. <li v-for="(item,index) in tuskList" @click="goDetail(item.id)">
  45. <view class="leftPicBox">
  46. <image :src="item.cover_image?item.cover_image:'../../static/posImg.png'" mode="aspectFit">
  47. </image>
  48. </view>
  49. <view class="right">
  50. <view class="title mb30" style="font-weight: 600;font-size: 34rpx;">
  51. <!-- Chat GPT应用场景 -->
  52. {{item.name }}
  53. </view>
  54. <view class="des2 mb30">
  55. <!-- 主要完成应用场景的填写,查找,上传,学习后将收获对open ai的了解更加多元。 -->
  56. {{item.intro }}
  57. </view>
  58. <view class="bottom">
  59. <view class="money">
  60. <text style="color: #666;font-size: 26rpx;">佣金:</text>¥{{item.task_commission}}
  61. </view>
  62. <view class="btn" @click="goDetail(item.id)" style="font-weight: 500;">
  63. 立即报名
  64. </view>
  65. </view>
  66. </view>
  67. </li>
  68. </ul>
  69. <!-- <button @click="test">测试</button> -->
  70. </view>
  71. <empty v-if="tuskList.length==0"></empty>
  72. <u-loadmore v-if="tuskList.length!=0" :status="status" />
  73. <wike-tabbar></wike-tabbar>
  74. </view>
  75. </template>
  76. <script>
  77. import {
  78. taskList
  79. } from '@/api/tusk/index.js'
  80. import {
  81. sendGpt
  82. } from '@/api/my/index.js'
  83. import {
  84. courseList
  85. } from '@/api/score/index.js'
  86. import http from "@/common/request/index";
  87. export default {
  88. components: {},
  89. data() {
  90. return {
  91. tobheight: 45,
  92. tuskList: [],
  93. courseList: [],
  94. page: 1,
  95. pagesize: 10,
  96. totalElements: '',
  97. // loadstatus: "noMore"
  98. status: 'nomore',
  99. };
  100. },
  101. computed: {
  102. },
  103. watch: {
  104. },
  105. async onPullDownRefresh() {
  106. // uni.reLaunch({
  107. // url: '/pages/index/index'
  108. // })
  109. let ress = await taskList({
  110. is_new: 1,
  111. page: this.page,
  112. per_page: this.pagesize
  113. })
  114. if (ress.code == 0) {
  115. this.totalElements = ress.data.total
  116. this.tuskList = ress.data.data
  117. }
  118. // console.log('课程学习页任务列表返回值', ress);
  119. let ress1 = await courseList()
  120. if (ress1.code == 0) {
  121. this.courseList = ress1.data.data
  122. }
  123. // console.log('课程学习页课程列表返回值', ress1);
  124. if (ress.code == 0 && ress1.code == 0) {
  125. uni.stopPullDownRefresh()
  126. }
  127. },
  128. async onLoad() {
  129. if (!uni.getStorageSync('token')) {
  130. uni.redirectTo({
  131. url: '/pages/user/signin'
  132. })
  133. }
  134. },
  135. async onShow() {
  136. if (uni.getStorageSync('clickStudyBtn')) {
  137. uni.removeStorageSync('clickStudyBtn')
  138. }
  139. if (uni.getStorageSync('myScoreId')) {
  140. uni.removeStorageSync('myScoreId')
  141. }
  142. let ress = await taskList({
  143. is_new: 1,
  144. page: this.page,
  145. per_page: this.pagesize
  146. })
  147. if (ress.code == 0) {
  148. this.totalElements = ress.data.total
  149. this.tuskList = ress.data.data
  150. }
  151. console.log('课程学习页任务列表返回值', ress);
  152. let ress1 = await courseList()
  153. if (ress1.code == 0) {
  154. this.courseList = ress1.data.data
  155. }
  156. console.log('课程学习页课程列表返回值', ress1);
  157. if (ress.code == 0 && ress1.code == 0) {
  158. uni.stopPullDownRefresh()
  159. }
  160. },
  161. async onReachBottom() {
  162. let allTotal = this.page * this.pagesize
  163. if (allTotal < this.totalElements) {
  164. console.log('onReachBottom()------------------');
  165. this.page++;
  166. this.status = "loading"
  167. let parms = {
  168. page: this.page,
  169. per_page: this.pagesize,
  170. name: '',
  171. type: '',
  172. is_new: 1
  173. }
  174. console.log('每次传递的参数', parms);
  175. let res = await taskList(parms)
  176. if (res.code == 0) {
  177. this.tuskList = [...this.tuskList, ...res.data.data]
  178. this.status = "nomore"
  179. }
  180. } else {
  181. this.status = "nomore"
  182. }
  183. },
  184. onReady() {
  185. },
  186. onUnload() {
  187. },
  188. methods: {
  189. async test() {
  190. let res = await sendGpt({
  191. message: '中国的首都是'
  192. })
  193. console.log('提交问答返回值', res);
  194. },
  195. goDetail(id) {
  196. uni.navigateTo({
  197. url: '/pages/tusk/tuskDetail/index?id=' + id
  198. })
  199. },
  200. goScoreDetail(id) {
  201. uni.setStorageSync('from', 'index')
  202. uni.navigateTo({
  203. url: '/pages/index/scoreDetail/index?id=' + id
  204. })
  205. },
  206. goTuskDetail() {
  207. uni.navigateTo({
  208. url: '/pages/tusk/tuskDetail/index'
  209. })
  210. }
  211. }
  212. };
  213. </script>
  214. <style lang="scss" scoped>
  215. @import './index.scss';
  216. </style>