gain_task.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <view class="total-page page-box gain-task">
  3. <Nav :title="'领取任务'" :genre="1" is_fixed></Nav>
  4. <view class="m-lr20 r-20">
  5. <k-tabs-swiper class="r-20" v-model="current" :tabs="tabs" :field="'name'" bgColor="#fff" color="#444444"
  6. activeColor="#10B261" fontSize="28rpx" :bold="true" :scroll="true" height="100rpx" lineHeight="10rpx"
  7. @change="changeTab" paddingItem="0 50rpx">
  8. </k-tabs-swiper>
  9. </view>
  10. <EnScroll ref="scroll" :navHeight="110" class="main" @onRefresh="onRefresh" @onScrollBottom="onScrollBottom">
  11. <TaskItem :type="2" :task-list="taskList" is_bottom @takeTask="setTakeTask"></TaskItem>
  12. </EnScroll>
  13. </view>
  14. </template>
  15. <script>
  16. import TaskItem from "@/common/task/task-item.vue"
  17. import {
  18. getTaskReceiving, getTaskType,
  19. takeTask
  20. } from "@/api/task"
  21. import tools from "@/service/tools"
  22. export default {
  23. components: {
  24. TaskItem
  25. },
  26. data() {
  27. return {
  28. current: 0,
  29. tabs: [
  30. {
  31. id: 0,
  32. name: '全部(0)',
  33. product_name: '全部',
  34. icon: '/static/img/task/task-all.png',
  35. num:0
  36. }
  37. ],
  38. taskList: [],
  39. page: 1,
  40. totalNum: 9999,
  41. isAjax: false,
  42. productId: 0
  43. }
  44. },
  45. mounted() {
  46. this.getTaskType()
  47. this.getTaskReceiving()
  48. },
  49. methods: {
  50. getTaskType() {
  51. getTaskType({'numType':1}).then(res => {
  52. if (res.code === 1) {
  53. res.data.forEach(item=>{
  54. item.name=item.product_name+'('+item.num+')'
  55. this.tabs[0].num+=item.num
  56. this.tabs[0].name=this.tabs[0].product_name+'('+ this.tabs[0].num+')'
  57. this.tabs.push(item)
  58. })
  59. }
  60. })
  61. },
  62. changeTab(index) {
  63. this.current = index
  64. console.log(index)
  65. this.setProductId(this.tabs[index].id)
  66. },
  67. setProductId(productId) {
  68. console.log('productId:' + productId)
  69. this.productId = productId
  70. this.startList()
  71. },
  72. // 下拉刷新
  73. startList() {
  74. this.taskList = [];
  75. this.page = 1
  76. this.totalNum = 99999
  77. this.getTaskReceiving()
  78. },
  79. async getTaskReceiving() {
  80. if (this.totalNum <= this.taskList.length) {
  81. return;
  82. }
  83. const res = await getTaskReceiving({
  84. 'page': this.page,
  85. 'productId': this.productId
  86. })
  87. if (res.code === 1) {
  88. this.totalNum = res.data.totalNum
  89. this.taskList.push(...res.data.items)
  90. ++this.page
  91. }
  92. },
  93. setTakeTask(index) {
  94. console.log('index:' + index)
  95. this.taskList.splice(index, 1)
  96. uni.$emit('updateMemberInfo')
  97. },
  98. onRefresh() {
  99. uni.showLoading({
  100. title: '数据加载中'
  101. })
  102. setTimeout(() => {
  103. uni.showToast({
  104. title: '加载完成',
  105. icon: 'none'
  106. })
  107. this.$refs.scroll.onEndPulling()
  108. this.startList()
  109. }, 1000)
  110. console.log("下拉刷新");
  111. },
  112. // 滚动到底部
  113. onScrollBottom() {
  114. uni.showLoading({
  115. title: '数据加载中'
  116. })
  117. this.getTaskReceiving()
  118. setTimeout(() => {
  119. uni.showToast({
  120. title: '加载完成',
  121. icon: 'none'
  122. })
  123. }, 1000)
  124. console.log("到底部了");
  125. },
  126. }
  127. }
  128. </script>
  129. <style lang="scss" scoped>
  130. .gain-task {
  131. display: flex;
  132. flex-direction: column;
  133. min-height: 100%;
  134. background-image: url('https://wealfavor-1257406827.cos.ap-beijing.myqcloud.com/new-xcx/task/task-nav-bg.png');
  135. background-repeat: no-repeat;
  136. background-size: 100% auto;
  137. }
  138. </style>