promoter_rank.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <template>
  2. <view>
  3. <view class="CommissionRank">
  4. <view class="header">
  5. <view class="rank" v-if="position">您目前的排名第<text class="num">{{position }}</text>名</view>
  6. <view class="rank" v-else>您目前暂无排名</view>
  7. </view>
  8. <view class="wrapper">
  9. <view class="nav acea-row row-around">
  10. <view class="item" :class="active == index ? 'font-color' : ''" v-for="(item,index) in navList" :key="index" @click="switchTap(index)">
  11. {{ item }}
  12. </view>
  13. </view>
  14. <view class="list">
  15. <view class="item acea-row row-between-wrapper" v-for="(item,index) in rankList" :key="index">
  16. <view class="num" v-if="index <3">
  17. <image :src="'../../static/img/'+(index+1)+'.png'"></image>
  18. </view>
  19. <view class="num" v-else>
  20. {{index+1}}
  21. </view>
  22. <view class="picTxt acea-row row-between-wrapper">
  23. <view class="pictrue"><image :src="item.avatar ? item.avatar : '/static/images/f.png'"></image></view>
  24. <view class="text line1">{{item.nickname}}</view>
  25. </view>
  26. <view class="people font-color">¥{{item.brokerage_price}}</view>
  27. </view>
  28. </view>
  29. </view>
  30. </view>
  31. <!-- #ifdef MP -->
  32. <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
  33. <!-- #endif -->
  34. </view>
  35. </template>
  36. <script>
  37. import { getBrokerageRank } from '@/api/user.js';
  38. import {
  39. toLogin
  40. } from '@/libs/login.js';
  41. import {
  42. mapGetters
  43. } from "vuex";
  44. // #ifdef MP
  45. import authorize from '@/components/Authorize';
  46. // #endif
  47. export default {
  48. components: {
  49. // #ifdef MP
  50. authorize
  51. // #endif
  52. },
  53. data() {
  54. return {
  55. navList: ["周排行", "月排行"],
  56. active: 0,
  57. rankList:[],
  58. page:1,
  59. limit:20,
  60. loadend:false,
  61. loading:false,
  62. loadTitle:'加载更多',
  63. type:'week',
  64. position:0,
  65. };
  66. },
  67. onLoad(){
  68. this.getBrokerageRankList();
  69. },
  70. methods: {
  71. onLoadFun:function(){
  72. this.isShowAuth = false;
  73. this.getBrokerageRankList();
  74. },
  75. switchTap:function(index){
  76. this.active = index;
  77. this.type = index ? 'month': 'week';
  78. this.page = 1;
  79. this.loadend = false;
  80. this.$set(this,'rankList',[]);
  81. this.getBrokerageRankList();
  82. },
  83. getBrokerageRankList:function(){
  84. if(this.loadend) return;
  85. if(this.loading) return;
  86. this.loading = true;
  87. this.loadTitle = '';
  88. getBrokerageRank({
  89. page:this.page,
  90. limit:this.limit,
  91. type:this.type
  92. }).then(res=>{
  93. let list = res.data.rank;
  94. let loadend = list.length < this.limit;
  95. this.rankList.push.apply(this.rankList, list);
  96. this.loading = false;
  97. this.loadend = loadend;
  98. this.loadTitle = loadend ? '😕我也是有底线的':'加载更多';
  99. this.$set(this,'rankList',this.rankList);
  100. this.position = res.data.position;
  101. }).catch(err=>{
  102. this.loading = false;
  103. this.loadTitle = '加载更多';
  104. })
  105. }
  106. },
  107. onReachBottom: function () {
  108. this.page= this.page+1
  109. this.getBrokerageRankList();
  110. }
  111. }
  112. </script>
  113. <style scoped lang="scss">
  114. .rank{
  115. color: #e93323 !important;
  116. }
  117. .nav{
  118. display: flex;
  119. }
  120. .nav view{
  121. text-align: center;
  122. flex: 1;
  123. }
  124. .header{
  125. border-bottom-left-radius: 20rpx;
  126. border-bottom-right-radius: 20rpx;
  127. }
  128. .CommissionRank .header{
  129. background-image: url(../../static/img/phb.jpg);
  130. background-repeat: no-repeat;
  131. width: 100%;height: 344rpx;background-size: 100% 100%;
  132. }
  133. .CommissionRank .header .rank {font-size: 33rpx;color: #fff;position: absolute;top: 160rpx;left: 48rpx;}
  134. .CommissionRank .header .rank .num {font-size: 51rpx;font-weight: bold;margin: 0 10rpx;}
  135. .CommissionRank .wrapper {width: 710rpx;background-color: #fff;border-radius: 20rpx;margin: -76rpx auto 0 auto;}
  136. .CommissionRank .wrapper .nav {height: 99rpx;border-bottom: 2.5rpx solid #f3f3f3;font-size: 30rpx;font-weight: bold;color: #999;line-height: 99rpx;}
  137. .CommissionRank .wrapper .nav .item.font-color {border-bottom: 4rpx solid #e93323;}
  138. .CommissionRank .wrapper .list {padding: 0 30rpx;}
  139. .CommissionRank .wrapper .list .item {border-bottom: 1px solid #f3f3f3;height: 101rpx;font-size: 28rpx;}
  140. .CommissionRank .wrapper .list .item .num {color: #666;width: 70rpx;}
  141. .CommissionRank .wrapper .list .item .num image {width: 34rpx;height: 40rpx;display: block;}
  142. .CommissionRank .wrapper .list .item .picTxt {width: 350rpx;}
  143. .CommissionRank .wrapper .list .item .picTxt .pictrue {width: 68rpx;height: 68rpx;}
  144. .CommissionRank .wrapper .list .item .picTxt .pictrue image {width: 100%;height: 100%;display: block;border-radius: 50%;}
  145. .CommissionRank .wrapper .list .item .picTxt .text {width: 262rpx;color: #333;}
  146. .CommissionRank .wrapper .list .item .people {width: 175rpx;text-align: right;}
  147. </style>