分佣:promoter-list 迁移

pull/1/MERGE
YunaiV 2023-09-05 23:49:24 +08:00
parent b15fb02ecf
commit 27321bda16
3 changed files with 90 additions and 104 deletions

View File

@ -5,6 +5,11 @@ export function getBrokerageUserSummary() {
return request.get('app-api/trade/brokerage-user/get-summary'); return request.get('app-api/trade/brokerage-user/get-summary');
} }
// 获得下级分销统计分页
export function getBrokerageUserChildSummaryPage(data) {
return request.get('app-api/trade/brokerage-user/child-summary-page', data);
}
// 获得分销用户排行分页(基于用户量) // 获得分销用户排行分页(基于用户量)
export function getBrokerageUserRankPageByUserCount(data) { export function getBrokerageUserRankPageByUserCount(data) {
return request.get('app-api/trade/brokerage-user/rank-page-by-user-count', data); return request.get('app-api/trade/brokerage-user/rank-page-by-user-count', data);

View File

@ -5,50 +5,50 @@
<view class='headerCon acea-row row-between'> <view class='headerCon acea-row row-between'>
<view> <view>
<view class='name'>推广人数</view> <view class='name'>推广人数</view>
<view><text class='num'>{{peopleData.count}}</text></view> <view><text class='num'>{{peopleData.firstBrokerageUserCount + peopleData.secondBrokerageUserCount}}</text></view>
</view> </view>
<view class='iconfont icon-tuandui'></view> <view class='iconfont icon-tuandui'></view>
</view> </view>
</view> </view>
<view class="pad30"> <view class="pad30">
<view class='nav acea-row row-around'> <view class='nav acea-row row-around'>
<view :class="grade == 0 ? 'item on' : 'item'" @click='setType(0)'>一级({{peopleData.total}})</view> <view :class="level === 1 ? 'item on' : 'item'" @click='setType(1)'>一级({{peopleData.firstBrokerageUserCount}})</view>
<view :class="grade == 1 ? 'item on' : 'item'" @click='setType(1)'>二级({{peopleData.totalLevel}}) <view :class="level === 2 ? 'item on' : 'item'" @click='setType(2)'>二级({{peopleData.secondBrokerageUserCount}})
</view> </view>
</view> </view>
<view class='search acea-row row-between-wrapper'> <view class='search acea-row row-between-wrapper'>
<view class='input'><input placeholder='点击搜索会员名称' placeholder-class='placeholder' v-model="keyword" <view class='input'><input placeholder='点击搜索会员名称' placeholder-class='placeholder' v-model="nickname"
@confirm="submitForm" confirm-type='search' name="search"></input></view> @confirm="submitForm" confirm-type='search' name="search"></input></view>
<button class='iconfont icon-sousuo2' @click="submitForm"></button> <button class='iconfont icon-sousuo2' @click="submitForm"></button>
</view> </view>
<view class='list'> <view class='list'>
<view class="sortNav acea-row row-middle"> <view class="sortNav acea-row row-middle">
<view class="sortItem" @click='setSort("childCount","ASC")' v-if="sort == 'childCountDESC'"> <view class="sortItem" @click='setSort("userCount","asc")' v-if="sort === 'userCountDESC'">
<image src='/static/images/sort1.png'></image> <image src='/static/images/sort1.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("childCount")' v-else-if="sort == 'childCountASC'">团队排序 <view class="sortItem" @click='setSort("userCount", "desc")' v-else-if="sort === 'userCountASC'">团队排序
<image src='/static/images/sort3.png'></image> <image src='/static/images/sort3.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("childCount","DESC")' v-else> <view class="sortItem" @click='setSort("userCount","desc")' v-else>
<image src='/static/images/sort2.png'></image> <image src='/static/images/sort2.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("numberCount","ASC")' v-if="sort == 'numberCountDESC'"> <view class="sortItem" @click='setSort("price","asc")' v-if="sort === 'priceDESC'">
金额排序 金额排序
<image src='/static/images/sort1.png'></image> <image src='/static/images/sort1.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("numberCount")' v-else-if="sort == 'numberCountASC'">金额排序 <view class="sortItem" @click='setSort("price", "desc")' v-else-if="sort === 'priceASC'">金额排序
<image src='/static/images/sort3.png'></image> <image src='/static/images/sort3.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("numberCount","DESC")' v-else> <view class="sortItem" @click='setSort("price","desc")' v-else>
<image src='/static/images/sort2.png'></image> <image src='/static/images/sort2.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("orderCount","ASC")' v-if="sort == 'orderCountDESC'"> <view class="sortItem" @click='setSort("orderCount","asc")' v-if="sort === 'orderCountDESC'">
<image src='/static/images/sort1.png'></image> <image src='/static/images/sort1.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("orderCount")' v-else-if="sort == 'orderCountASC'">订单排序 <view class="sortItem" @click='setSort("orderCount", "desc")' v-else-if="sort === 'orderCountASC'">订单排序
<image src='/static/images/sort3.png'></image> <image src='/static/images/sort3.png'></image>
</view> </view>
<view class="sortItem" @click='setSort("orderCount","DESC")' v-else> <view class="sortItem" @click='setSort("orderCount","desc")' v-else>
<image src='/static/images/sort2.png'></image> <image src='/static/images/sort2.png'></image>
</view> </view>
</view> </view>
@ -60,83 +60,70 @@
</view> </view>
<view class='text'> <view class='text'>
<view class='name line1'>{{item.nickname}}</view> <view class='name line1'>{{item.nickname}}</view>
<view>加入时间: {{item.time.split(' ')[0]}}</view> <view>加入时间: {{ formatDate(item.brokerageTime) }}</view>
</view> </view>
</view> </view>
<view class="right"> <view class="right">
<view><text class='num font-color'>{{item.childCount ? item.childCount : 0}}</text> <view><text class='num font-color'>{{ item.brokerageUserCount || 0}}</text>
</view> </view>
<view><text class="num">{{item.orderCount ? item.orderCount : 0}}</text></view> <view><text class="num">{{ item.orderCount|| 0}}</text></view>
<view><text class="num">{{item.numberCount ? item.numberCount : 0}}</text></view> <view><text class="num">{{ fen2yuan(item.brokeragePrice || 0) }}</text></view>
</view> </view>
</view> </view>
</block> </block>
<Loading :loaded="status" :loading="loadingList"></Loading> <Loading :loaded="status" :loading="loadingList"></Loading>
<block v-if="recordList.length == 0 && isShow"> <block v-if="recordList.length === 0 && isShow">
<emptyPage title="暂无推广人数~"></emptyPage> <emptyPage title="暂无推广人数~"></emptyPage>
</block> </block>
</view> </view>
</view> </view>
</view> </view>
<!-- #ifdef MP -->
<!-- <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize> -->
<!-- #endif -->
<home></home> <home></home>
</view> </view>
</template> </template>
<script> <script>
import { import { toLogin } from '@/libs/login.js';
spreadPeople, import { mapGetters } from "vuex";
spreadPeoCount
} from '@/api/user.js';
import {
toLogin
} from '@/libs/login.js';
import {
mapGetters
} from "vuex";
import emptyPage from '@/components/emptyPage.vue' import emptyPage from '@/components/emptyPage.vue'
import Loading from "@/components/Loading"; import Loading from "@/components/Loading";
// #ifdef MP
import authorize from '@/components/Authorize';
// #endif
import home from '@/components/home'; import home from '@/components/home';
export default { import * as BrokerageAPI from '@/api/trade/brokerage.js'
import * as Util from '@/utils/util.js';
import dayjs from "@/plugin/dayjs/dayjs.min.js";
export default {
components: { components: {
Loading, Loading,
emptyPage, emptyPage,
// #ifdef MP
authorize,
// #endif
home home
}, },
data() { data() {
return { return {
page: 1, peopleData: {
firstBrokerageUserCount: 0,
secondBrokerageUserCount: 0
},
recordList: [],
page: 1,
limit: 20, limit: 20,
keyword: '', nickname: '',
sort: '', isAsc: 'desc',
isAsc: '', sortKey: 'userCount',
sortKey: '', sort: 'userCountDESC',
grade: 0, level: 1,
status: false, status: false,
loadingList: false, loadingList: false,
recordList: [],
peopleData: {},
isShow: false, isShow: false,
isAuto: false, //
isShowAuth: false //
}; };
}, },
computed: mapGetters(['isLogin']), computed: mapGetters(['isLogin']),
onLoad() { onLoad() {
if (this.isLogin) { if (!this.isLogin) {
this.userSpreadNewList(); toLogin();
this.spreadPeoCount(); return;
} else {
toLogin();
} }
this.userSpreadNewList();
this.spreadPeoCount();
}, },
onShow: function() { onShow: function() {
if (this.is_show) this.userSpreadNewList(); if (this.is_show) this.userSpreadNewList();
@ -145,23 +132,15 @@
this.is_show = true; this.is_show = true;
}, },
methods: { methods: {
onLoadFun: function(e) {
this.userSpreadNewList();
},
//
authColse: function(e) {
this.isShowAuth = e
},
setSort: function(sortKey, isAsc) { setSort: function(sortKey, isAsc) {
let that = this; this.isAsc = isAsc;
that.isAsc = isAsc; this.sort = sortKey + isAsc.toUpperCase();
that.sort = sortKey + isAsc; this.sortKey = sortKey;
that.sortKey = sortKey; this.page = 1;
that.page = 1; this.limit = 20;
that.limit = 20; this.status = false;
that.status = false; this.$set(this, 'recordList', []);
that.$set(that, 'recordList', []); this.userSpreadNewList();
that.userSpreadNewList();
}, },
submitForm: function() { submitForm: function() {
this.page = 1; this.page = 1;
@ -171,14 +150,12 @@
this.userSpreadNewList(); this.userSpreadNewList();
}, },
setType: function(grade) { setType: function(level) {
if (this.grade != grade) { if (this.level !== level) {
this.grade = grade; this.level = level;
this.page = 1; this.page = 1;
this.limit = 20; this.limit = 20;
this.keyword = ''; this.nickname = '';
this.sort = '';
this.isAsc = '';
this.status = false; this.status = false;
this.loadingList = false; this.loadingList = false;
this.$set(this, 'recordList', []); this.$set(this, 'recordList', []);
@ -186,41 +163,45 @@
} }
}, },
spreadPeoCount() { spreadPeoCount() {
spreadPeoCount().then(res => { BrokerageAPI.getBrokerageUserSummary().then(res => {
this.peopleData = res.data; this.peopleData = res.data;
}); });
}, },
userSpreadNewList: function() { userSpreadNewList: function() {
let that = this; let page = this.page;
let page = that.page; let limit = this.limit;
let limit = that.limit; let status = this.status;
let status = that.status; let recordList = this.recordList;
let keyword = that.keyword;
let isAsc = that.isAsc;
let sortKey = that.sortKey;
let grade = that.grade;
let recordList = that.recordList;
let recordListNew = []; let recordListNew = [];
if (that.loadingList) return; if (this.loadingList || status) {
if (status == true) return; return;
spreadPeople({ }
page: page, BrokerageAPI.getBrokerageUserChildSummaryPage({
limit: limit, pageNo: page,
keyword: keyword, pageSize: limit,
grade: grade, nickname: this.nickname,
sortKey: sortKey, level: this.level,
isAsc: isAsc 'sortingField.field': this.sortKey,
'sortingField.order': this.isAsc,
}).then(res => { }).then(res => {
let recordListData = res.data.list ? res.data.list : []; let recordListData = res.data.list ? res.data.list : [];
let len = recordListData.length; let len = recordListData.length;
recordListNew = recordList.concat(recordListData); recordListNew = recordList.concat(recordListData);
that.status = limit > len; this.status = limit > len;
that.page = page + 1; this.page = page + 1;
that.$set(that, 'recordList', recordListNew || []); this.$set(this, 'recordList', recordListNew || []);
that.loadingList = false; this.loadingList = false;
if(that.recordList.length===0) that.isShow = true; if (this.recordList.length === 0) {
this.isShow = true;
}
}); });
} },
fen2yuan(price) {
return Util.fen2yuan(price)
},
formatDate: function(date) {
return dayjs(date).format("YYYY-MM-DD HH:mm:ss");
},
}, },
onReachBottom: function() { onReachBottom: function() {
this.userSpreadNewList(); this.userSpreadNewList();

View File

@ -11,21 +11,21 @@
</view> </view>
<!-- top3 排名 --> <!-- top3 排名 -->
<view class="rank acea-row row-bottom row-around"> <view class="rank acea-row row-bottom row-around">
<view class="item" v-show="Two.userId"> <view class="item" v-show="Two.id">
<view class="pictrue"> <view class="pictrue">
<image :src="Two.avatar"></image> <image :src="Two.avatar"></image>
</view> </view>
<view class="name line1">{{Two.nickname}}</view> <view class="name line1">{{Two.nickname}}</view>
<view class="num">{{ Two.brokerageUserCount }}</view> <view class="num">{{ Two.brokerageUserCount }}</view>
</view> </view>
<view class="item" v-show="One.userId"> <view class="item" v-show="One.id">
<view class="pictrue"> <view class="pictrue">
<image :src="One.avatar"></image> <image :src="One.avatar"></image>
</view> </view>
<view class="name line1">{{One.nickname}}</view> <view class="name line1">{{One.nickname}}</view>
<view class="num">{{ One.brokerageUserCount }}</view> <view class="num">{{ One.brokerageUserCount }}</view>
</view> </view>
<view class="item" v-show="Three.userId"> <view class="item" v-show="Three.id">
<view class="pictrue"> <view class="pictrue">
<image :src="Three.avatar"></image> <image :src="Three.avatar"></image>
</view> </view>