You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
29 KiB

3 months ago
  1. <template>
  2. <view :data-theme="theme">
  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"
  11. @click="switchTap(index)">
  12. {{ item }}
  13. </view>
  14. </view>
  15. <view class="list">
  16. <view class="item acea-row row-between-wrapper" v-for="(item,index) in rankList" :key="index">
  17. <view class="num" v-if="index <= 2">
  18. <image :src="urlDomain+'crmebimage/perset/staticImg/medal0'+(index+1)+'.png'"></image>
  19. </view>
  20. <view class="num" v-else>
  21. {{index+1}}
  22. </view>
  23. <view class="picTxt acea-row row-between-wrapper">
  24. <view class="pictrue">
  25. <image :src="item.avatar"></image>
  26. </view>
  27. <view class="text line1">{{item.nickname}}</view>
  28. </view>
  29. <view class="people font_color">{{item.brokeragePrice}}</view>
  30. </view>
  31. </view>
  32. <view class='noCommodity' v-if="rankList.length == 0 && isShow">
  33. <emptyPage title="暂无排行~"></emptyPage>
  34. </view>
  35. </view>
  36. </view>
  37. </view>
  38. </template>
  39. <script>
  40. import {
  41. getBrokerageRank,
  42. brokerageRankNumber
  43. } from '@/api/user.js';
  44. import {toLogin} from '@/libs/login.js';
  45. import emptyPage from '@/components/emptyPage.vue'
  46. import {mapGetters} from "vuex";
  47. import {setThemeColor} from '@/utils/setTheme.js'
  48. const app = getApp();
  49. export default {
  50. components: {
  51. emptyPage
  52. },
  53. data() {
  54. return {
  55. urlDomain: this.$Cache.get("imgHost"),
  56. navList: ["周排行", "月排行"],
  57. active: 0,
  58. rankList: [],
  59. page: 1,
  60. limit: 20,
  61. loadend: false,
  62. loading: false,
  63. loadTitle: '加载更多',
  64. type: 'week',
  65. position: 0,
  66. isShow: false,
  67. isAuto: false, //没有授权的不会自动授权
  68. isShowAuth: false, //是否隐藏授权
  69. theme:app.globalData.theme,
  70. bgColor:'#e93323'
  71. };
  72. },
  73. computed: mapGetters(['isLogin']),
  74. watch:{
  75. isLogin:{
  76. handler:function(newV,oldV){
  77. if(newV){
  78. this.getBrokerageRankList();
  79. this.getBrokerageRankNumber(this.type);
  80. }
  81. },
  82. deep:true
  83. }
  84. },
  85. onLoad() {
  86. if (this.isLogin) {
  87. this.getBrokerageRankList();
  88. this.getBrokerageRankNumber(this.type);
  89. } else {
  90. toLogin();
  91. }
  92. let that = this;
  93. that.bgColor = setThemeColor();
  94. uni.setNavigationBarColor({
  95. frontColor: '#ffffff',
  96. backgroundColor:that.bgColor,
  97. });
  98. },
  99. methods: {
  100. onLoadFun: function() {
  101. this.getBrokerageRankList();
  102. this.getBrokerageRankNumber(this.type);
  103. },
  104. // 授权关闭
  105. authColse: function(e) {
  106. this.isShowAuth = e
  107. },
  108. switchTap: function(index) {
  109. this.active = index;
  110. this.type = index ? 'month' : 'week';
  111. this.page = 1;
  112. this.loadend = false;
  113. this.$set(this, 'rankList', []);
  114. this.getBrokerageRankList();
  115. this.getBrokerageRankNumber(this.type);
  116. },
  117. getBrokerageRankNumber(type) {
  118. brokerageRankNumber({
  119. type: type
  120. }).then(res => {
  121. this.position = res.data;
  122. })
  123. },
  124. getBrokerageRankList: function() {
  125. if (this.loadend) return;
  126. if (this.loading) return;
  127. this.loading = true;
  128. this.loadTitle = '';
  129. getBrokerageRank({
  130. page: this.page,
  131. limit: this.limit,
  132. type: this.type
  133. }).then(res => {
  134. let list = res.data || [];
  135. let loadend = list.length <= this.limit;
  136. this.rankList.push.apply(this.rankList, list);
  137. this.loading = false;
  138. this.loadend = loadend;
  139. this.loadTitle = loadend ? '我也是有底线的~' : '加载更多';
  140. this.$set(this, 'rankList', this.rankList);
  141. this.isShow = true;
  142. //this.position = res.data.position;
  143. }).catch(err => {
  144. this.loading = false;
  145. this.loadTitle = '加载更多';
  146. })
  147. }
  148. },
  149. onReachBottom: function() {
  150. this.getBrokerageRankList();
  151. }
  152. }
  153. </script>
  154. <style scoped lang="scss">
  155. .CommissionRank .header {
  156. background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu4AAAFZCAMAAADw5FqoAAAC/VBMVEUAAAD////////////////////////////////+1mz7wgD+ygD////8wgD8wwD7wAD+yAD+yQD8xQD9xwD8xAD+ygD9xQD8wgD+yQD7vgD////4tQD////////5uAD6ugD7vgD////////+yAD////////////////////////////4swD5tgD////5uAD////2rwD7vQD////////9xgD////9yAD8xAD+yQD1qwD7wQD+ywD1rQD5uQD6vQD4tgD8wwD+0D/3sgD2rwD7vwD2sAD3swD3tAD2rgD2sQD/yij5uwD6uwD5vwD4tAD0qQD/nQD/yyv4uAD1sgD/uAb/+OH/zTX0sAD/0UT5vQD/zzv4uwD1tQD/zC/roADzpwD/zjj3uQDyrgDzrADzqgD/0EH/zz7qngDtowD/zDL0rgDxqgD3twD/0kjpmgD/yy3wpgDwpwDyqQD/yUr/00vvpADmlQD1twD/uQn1tADnmQDxqQDtnwDrogD/007upwDxrADvogD/wy3/ykz/xTXypQDtpQD/xTHxpAD/y07vqAD/vhrtogDpnAD/wir/wSbomADnlgD/vBXrnwDonQH/1FD/xkD/yEbkkgD/ugzvoQD/uxD/xzn4ugD/1VP6wiLrnAD/uxv/1lj/yD3/wB/snQD9zzrlkwD/yUL/y1H/xTv/x0P/wjXjkAD/wCPtpgD9zTf5vzH/uhf/vCD/wTD9xDv4uCT/+eX/113/tAD0syT/ySP9yjLyrgz+zTH/twL4uBL/++r7xSb5wjfqmQD3tR/soRHtphTwrhvwqhb/vAD/y0f1tyr5uyj9xwr/vyb0sRj/02f/1VX8xh75vRT/ogD+xhT/uhD0sQzwqQnroAn3tAr9yx37wzT7xi35vQv/zVT8ySr7whnkkQD3uy/8vyz7wgnnmgf+zkX+zSX5vBn/rgDuown+yxX//PD/yB3+yw3/xB37yT//9db7whH/8sj/7bn/2mX/xCX/4Yr/pwL/5pz/3Hj/6qv/vhCX1E/RAAAANHRSTlMAIJ9Av3/fYD8GE9HuI5OA7vdW3nKsRDfBTqvUFQ67YC65jWbYbMo4TFgw3qiY9R3t6Hhzmm/h5QAAQsBJREFUeNrs2kuKAyEUQFGn8aHlv8ys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
  157. @include main_bg_color(theme);
  158. width: 100%;
  159. height: 344rpx;
  160. background-size: 100% 100%;
  161. }
  162. .CommissionRank .header .rank {
  163. font-size: 33rpx;
  164. color: #fff;
  165. position: absolute;
  166. top: 160rpx;
  167. left: 48rpx;
  168. }
  169. .CommissionRank .header .rank .num {
  170. font-size: 51rpx;
  171. font-weight: bold;
  172. margin: 0 10rpx;
  173. }
  174. .CommissionRank .wrapper {
  175. width: 710rpx;
  176. background-color: #fff;
  177. border-radius: 14rpx;
  178. margin: -76rpx auto 0 auto;
  179. }
  180. .CommissionRank .wrapper .nav {
  181. height: 99rpx;
  182. border-bottom: 2.5rpx solid #f3f3f3;
  183. font-size: 30rpx;
  184. font-weight: bold;
  185. color: #999;
  186. line-height: 99rpx;
  187. }
  188. .CommissionRank .wrapper .nav .item.font_color {
  189. @include main_color(theme);
  190. @include tab_border_bottom(theme);
  191. margin-top: -2rpx;
  192. }
  193. .CommissionRank .wrapper .list {
  194. padding: 0 30rpx;
  195. }
  196. .CommissionRank .wrapper .list .item {
  197. border-bottom: 1px solid #f3f3f3;
  198. height: 101rpx;
  199. font-size: 28rpx;
  200. }
  201. .CommissionRank .wrapper .list .item .num {
  202. color: #666;
  203. width: 70rpx;
  204. }
  205. .CommissionRank .wrapper .list .item .num image {
  206. width: 34rpx;
  207. height: 40rpx;
  208. display: block;
  209. }
  210. .CommissionRank .wrapper .list .item .picTxt {
  211. width: 350rpx;
  212. }
  213. .CommissionRank .wrapper .list .item .picTxt .pictrue {
  214. width: 68rpx;
  215. height: 68rpx;
  216. }
  217. .CommissionRank .wrapper .list .item .picTxt .pictrue image {
  218. width: 100%;
  219. height: 100%;
  220. display: block;
  221. border-radius: 50%;
  222. }
  223. .CommissionRank .wrapper .list .item .picTxt .text {
  224. width: 262rpx;
  225. color: #333;
  226. }
  227. .CommissionRank .wrapper .list .item .people {
  228. width: 175rpx;
  229. text-align: right;
  230. }
  231. .font_color{
  232. @include price_color(theme);
  233. }
  234. </style>