record.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <template>
  2. <view class="container">
  3. <swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
  4. <swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
  5. <scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
  6. <!-- 空白页 -->
  7. <empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
  8. <!-- 订单列表 -->
  9. <view v-for="(item, index) in tabItem.orderList" :key="index" class="commission flex">
  10. <view>
  11. <view class="commission_name">{{ item.title }}</view>
  12. <view class="commission_time">{{ item.add_time }}</view>
  13. </view>
  14. <view class="commission_number">+{{ item.number }}</view>
  15. </view>
  16. <uni-load-more :status="tabItem.loadingType"></uni-load-more>
  17. </scroll-view>
  18. </swiper-item>
  19. </swiper>
  20. </view>
  21. </template>
  22. <script>
  23. import { spread_commission } from '@/api/wallet.js';
  24. import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
  25. import empty from '@/components/empty';
  26. export default {
  27. components: {
  28. empty,
  29. uniLoadMore
  30. },
  31. data() {
  32. return {
  33. id: '',
  34. tabCurrentIndex: 0,
  35. navList: [
  36. {
  37. state: 0,
  38. text: '一级',
  39. loadingType: 'more',
  40. orderList: [
  41. {
  42. title:'充值',
  43. add_time:'2019-06-09 13:00:00',
  44. number:65
  45. },
  46. {
  47. title:'充值',
  48. add_time:'2019-06-09 13:00:00',
  49. number:65
  50. },
  51. {
  52. title:'充值',
  53. add_time:'2019-06-09 13:00:00',
  54. number:65
  55. }
  56. ],
  57. page: 1, //当前页数
  58. limit: 10 //每次信息条数
  59. }
  60. // {
  61. // state: 1,
  62. // text: '二级',
  63. // loadingType: 'more',
  64. // orderList: [],
  65. // page: 1, //当前页数
  66. // limit: 10 //每次信息条数
  67. // }
  68. ]
  69. };
  70. },
  71. methods: {
  72. async loadData(source) {
  73. //这里是将订单挂载到tab列表下
  74. let index = this.tabCurrentIndex;
  75. let navItem = this.navList[index];
  76. let state = navItem.state;
  77. if (source === 'tabChange' && navItem.loaded === true) {
  78. //tab切换只有第一次需要加载数据
  79. return;
  80. }
  81. if (navItem.loadingType === 'loading') {
  82. //防止重复加载
  83. return;
  84. }
  85. if (navItem.loadingType === 'noMore') {
  86. //防止重复加载
  87. return;
  88. }
  89. // 修改当前对象状态为加载中
  90. navItem.loadingType = 'loading';
  91. spread_commission(
  92. {
  93. page: navItem.page,
  94. limit: navItem.limit
  95. },
  96. 2
  97. )
  98. .then(({ data }) => {
  99. navItem.orderList = navItem.orderList.concat(data);
  100. navItem.page++;
  101. if (navItem.limit == data.length) {
  102. //判断是否还有数据, 有改为 more, 没有改为noMore
  103. navItem.loadingType = 'more';
  104. return;
  105. } else {
  106. //判断是否还有数据, 有改为 more, 没有改为noMore
  107. navItem.loadingType = 'noMore';
  108. }
  109. this.$set(navItem, 'loaded', true);
  110. })
  111. .catch(e => {
  112. console.log(e);
  113. });
  114. }
  115. },
  116. async onLoad() {
  117. this.loadData();
  118. }
  119. };
  120. </script>
  121. <style lang="scss">
  122. page {
  123. width: 100%;
  124. height: 100%;
  125. .container {
  126. height: 100%;
  127. }
  128. .swiper-box {
  129. height: 100%;
  130. }
  131. }
  132. .uni-swiper-item {
  133. height: auto;
  134. }
  135. .list-scroll-content {
  136. height: 100%;
  137. }
  138. .commission {
  139. background-color: #ffffff;
  140. border-top: 1px solid #f0f0f0;
  141. padding: 25rpx 25rpx;
  142. }
  143. .commission_name {
  144. font-size: 30rpx;
  145. color: #333333;
  146. }
  147. .commission_time {
  148. color: #999999;
  149. font-size: 22rpx;
  150. padding-top: 10rpx;
  151. }
  152. .commission_number {
  153. color: #FC4141;
  154. font-weight: bold;
  155. font-size: 30rpx;
  156. }
  157. </style>