Files
frontend-app/pages/mine_my_team/mine_my_team.vue
T

522 lines
14 KiB
Vue
Raw Normal View History

2025-05-07 10:09:55 +08:00
<template>
<view class="my_team_warp">
<!-- 导航栏 -->
<view class="header_">
<view style="margin-top: 10rpx;">
<up-image src="/static/common/left_b.png" width="18" height="20" bgColor="#f1f6ff00" @click="jumpMine"/>
</view>
<view class="title_">我的团队</view>
</view>
<!-- 我的信息 -->
<view class="my_info">
<view class="left_">
<up-image src="/static/logo_y.png" width="50" height="50" bgColor="#f1f6ff00" shape="circle"/>
<view class="left_msg">
<view>{{userData.name || '三荣优品用户'}}</view>
<view class="left_msg_title">{{userData.gradeName}}</view>
</view>
</view>
<view class="right_" v-if="performanceData && performanceData.seniorId">
我的上级ID:{{performanceData.seniorId || 0}}
</view>
</view>
<!-- 我的团队 -->
<view class="card_comm my_team" @click="jumpMyTeam">
<view class="card_title_comm">
我的团队
</view>
<view class="my_team_count">
<view style="margin-right: 10rpx;">{{(performanceData && performanceData.teamCount) || 0}}人</view>
<view style="margin-top: 10rpx;">
<up-image src="/static/common/right.png" width="16" height="16" bgColor="#f1f6ff00" />
</view>
</view>
</view>
<!-- 团队业绩 -->
<view class="card_comm">
<view class="card_title_comm card_title_comm2" >
<view>团队业绩</view>
<up-image src="/static/common/tips.png" width="16" height="16" bgColor="#f1f6ff00" @click="openTeamShow=true;"/>
</view>
<view class="performance">
<view class="performance_item">
<view class="title_comm">{{performanceData && performanceData.teamAmount || 0}}</view>
<view class="data_comm">订单金额</view>
</view>
<view class="fg_comm"></view>
<view class="performance_item">
<view class="title_comm">{{performanceData && performanceData.teamNum || 0}}</view>
<view class="data_comm">订单数量</view>
</view>
<view class="fg_comm"></view>
<view class="performance_item">
<view class="title_comm">{{performanceData && performanceData.myAmount || 0}}</view>
<view class="data_comm">直购订单金额</view>
</view>
<view class="fg_comm"></view>
<view class="performance_item">
<view class="title_comm">{{performanceData && performanceData.myNum || 0}}</view>
<view class="data_comm">直购订单数</view>
</view>
</view>
</view>
<!-- 提成统计-->
<view class="royalty_warp">
<!-- 提成货币 -->
<view class="card_item_comm" @click="currencyShowCheck(true)" style="padding: 30rpx 30rpx 0;">
<view class="card_title_comm">
提成货币
</view>
<view class="commission_count">
<view style="margin-right: 10rpx;">
{{selAcctCategory && Object.keys(selAcctCategory).length !==0 ? selAcctCategory.value : '请选择'}}
</view>
<view style="margin-top: 10rpx;">
<up-image src="/static/common/right.png" width="16" height="16" bgColor="#f1f6ff00" />
</view>
</view>
</view>
<view class="card_item_comm">
<view class="card_title_comm card_title_comm2">
<view>提成统计</view>
<up-image src="/static/common/tips.png" width="16" height="16" bgColor="#f1f6ff00" @click="openTcShow=true;"/>
</view>
<view class="performance">
<view class="amount_item">
<view class="title_comm">{{(rewardSummary && rewardSummary.todayAmount) || 0}}</view>
<view class="data_comm">今日</view>
</view>
<view class="fg_comm"></view>
<view class="amount_item">
<view class="title_comm">{{(rewardSummary && rewardSummary.unSettleAmount) || 0}}</view>
<view class="data_comm">当前未结算</view>
</view>
<view class="fg_comm"></view>
<view class="amount_item">
<view class="title_comm">{{(rewardSummary && rewardSummary.settleAmount) || 0}}</view>
<view class="data_comm">已结清</view>
</view>
</view>
</view>
<view class="card_fg_comm"></view>
<view class="card_item_comm">
<view class="card_title_comm">提成来源</view>
<view class="royalty_list">
<scroll-view scroll-y="true" @scrolltolower="loadMore" :style="{'height': 'calc(100vh - 1220rpx)'}">
<view class="royalty_item" v-for="(item,index) in royaltyList" :key="index" v-if="royaltyList && royaltyList.length !==0">
<view>
<view class="royalty_title_">{{getValue(BALANCE_TYPE,item.bizType)}}</view>
<view class="royalty_data_">{{formatDate(item.ctdate)}}</view>
</view>
<view>
<view class="royalty_title_ royalty_title_amount">{{item.amount}}元</view>
<view class="royalty_data_">{{item.status ? "已结算" : "未结算"}}</view>
</view>
</view>
<view v-else class="not_order_warp">
<up-image src="/static/common/not_order.png" width="80" height="80" bgColor="#f1f6ff00"></up-image>
<view class="not_order_msg_warp">暂无相关数据</view>
</view>
<view v-if="royaltyLoading" style="text-align: center;">加载中...</view>
</scroll-view>
</view>
</view>
</view>
<up-picker
:show="currencyShow"
ref="uPickerRef"
:columns="currencyColumns"
@confirm="currencyConfirm"
:loading="currencyLoading"
keyName="value"
itemHeight="34"
@cancel="currencyShow=false"
@close="currencyShow=false"
></up-picker>
<!-- 团队业绩 -->
<up-modal :show="openTeamShow" :showConfirmButton = "false">
<view class="slot-content">
<view class="close_warp" @click="openTeamShow=false;">
<up-image src="/static/common/close.png" width="20" height="20" bgColor="#f1f6ff00"></up-image>
</view>
<view class="content_">
<view class="content_1">温馨提示</view>
<view class="content_2">1、订单金额:团队下的总业绩</view>
<view class="content_2">2、订单数量:团队下的总订单数</view>
<view class="content_2">3、直购订单金额:直推的总订单金额</view>
<view class="content_2">4、直购订单数:直推的总订单数</view>
</view>
<view class="but_">
<view class="but_copy" @click="openTeamShow=false;">确定</view>
</view>
</view>
</up-modal>
<!-- 提成统计 -->
<up-modal :show="openTcShow" :showConfirmButton = "false">
<view class="slot-content">
<view class="close_warp" @click="openTcShow=false;">
<up-image src="/static/common/close.png" width="20" height="20" bgColor="#f1f6ff00"></up-image>
</view>
<view class="content_">
<view class="content_1">温馨提示</view>
<view class="content_2">1、今日:今日0点到当前时间的数据</view>
<view class="content_2">2、当前未结算:当前所有收货后未结算的数据</view>
<view class="content_2">3、直购订单金额:直推的总订单金额</view>
<view class="content_2">4、已结算:所有已结算的数据</view>
</view>
<view class="but_">
<view class="but_copy" @click="openTcShow=false;">确定</view>
</view>
</view>
</up-modal>
</view>
</template>
<script>
import { getPerformance,getAcctCategory,getRewardSummaryRecord,getRewardSummary } from '@/api/team.js';
import { formatDate } from '@/utils/index.js';
import { BALANCE_TYPE,getValue } from '@/utils/enumUtils.js';
import { getStorageFun,USER_DATA } from '@/utils/auth.js';
import { getUserInfo } from '@/api/auth.js'
export default {
computed: {
BALANCE_TYPE() {
return BALANCE_TYPE;
},
},
data() {
return {
royaltyForm:{
page:1,
pageSize:15,
category:null,
},
royaltyList:[],// 提成来源
royaltyLoading:false,
currencyShow:false,
currencyColumns:[],
currencyLoading:false,
performanceData:{},
selAcctCategory:{},// 选择的账户
rewardSummary:{},// 提成统计
openTeamShow:false,// 团队业绩的提示
openTcShow:false,// 提成统计
userData:{},// 当前登录对象
};
},
mounted() {
this.getUserInfo();
this.getPerformance();
this.getAcctCategory();
},
methods: {
formatDate,
getValue,
jumpMine(){
uni.switchTab({// 首页
url: '/pages/mine/mine',
})
},
jumpMyTeam(){
const userData = getStorageFun(USER_DATA);
uni.navigateTo({
url: '/pages/mine_my_team_list/mine_my_team_list',
})
},
// 查询用户信息
async getUserInfo(){
const result = await getUserInfo();
if(result && result.bizcode === 100){
const data = result.data;
this.userData = result.data || {};
}
},
// 查询团队业绩
async getPerformance(){
const resp = await getPerformance();
if(resp && resp.bizcode === 100){
this.performanceData = resp.data;
}
},
// 查询账户类型
async getAcctCategory(){
const resp = await getAcctCategory();
if(resp && resp.bizcode === 100){
const data = resp.data || [];
this.currencyColumns = [data];
if(data && data.length !==0){
this.selAcctCategory = data[0];
this.royaltyForm.category = data[0].key;
this.getRewardSummary();
this.loadData();
}
}
},
// 选择地址的弹框
currencyShowCheck(status){
this.currencyShow = status;
},
// 提交地址
currencyConfirm(e){
const {
columnIndex,
value,
values,
index,
} = e;
const data = value[0];
this.royaltyList = [];
this.royaltyForm.page = 1;
this.selAcctCategory = data;
this.royaltyForm.category = data.key;
this.getRewardSummary();
this.loadData();
this.currencyShowCheck(false);
},
// 查询提成概括
async getRewardSummary(){
const params = {
category:this.royaltyForm.category,
};
const resp = await getRewardSummary(params);
if(resp && resp.bizcode === 100){
this.rewardSummary = resp.data || [];
}
},
// 加载数据的方法
async loadData() {
if (this.royaltyLoading) return; // 如果正在加载,则不重复加载
this.royaltyLoading = true; // 设置加载状态为true
try {
// 模拟异步获取数据,实际应用中应该替换为你的数据获取逻辑,例如API调用
const newData = await this.fetchData();
if(newData.entitys && newData.entitys.length !==0){
this.royaltyList = [...this.royaltyList, ...newData.entitys]; // 将新数据添加到列表中
this.royaltyForm.page++; // 页码加1
}
} catch (error) {
console.error('加载数据失败:', error);
} finally {
this.royaltyLoading = false; // 设置加载状态为false
}
},
// 模拟获取数据的方法,实际应用中应该替换为你的数据获取逻辑,例如从服务器获取数据
async fetchData() {
const params = {
...this.royaltyForm,
}
const data = await getRewardSummaryRecord(params);
if(data && data.bizcode === 100 && data.data){
return data.data
}else{
return [];
}
},
// 当滚动到底部时触发的方法
loadMore() {
this.loadData(); // 加载更多数据
},
}
}
</script>
<style lang="scss" scoped>
.my_team_warp{
background-color: $app-bt-bj;
height: calc(100vh - 144rpx);
overflow: hidden;
padding: 114rpx 30rpx 30rpx;
.header_{
display: flex;
align-items: center;
}
.title_{
font-weight: bold;
font-size: 36rpx;
color: #FFFFFF;
margin-left: 20rpx;
}
.my_info{
display: flex;
justify-content: space-between;
color: #FFFFFF;
margin-top: 30rpx;
.left_{
display: flex;
align-items: center;
}
.left_msg{
margin-left: 10rpx;
font-weight: bold;
font-size: 28rpx;
color: #FFFFFF;
}
.left_msg_title{
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
margin-top: 10rpx;
}
.right_{
// display: flex;
// align-items: center;
font-size: 23rpx;
color: rgba(255,255,255,0.9);
line-height: 33rpx;
// text-align: right;
// width: 50%;
// justify-content: space-between;
}
// .right_item{
// margin-left: 20rpx;
// }
// .right_title{
// font-size: 20rpx;
// color: #FFFFFF;
// }
// .right_data{
// background: rgba(255,255,255,0.2);
// border-radius: 10rpx;
// border: 1px solid #FFFFFF;
// font-weight: bold;
// font-size: 40rpx;
// color: #FFFFFF;
// padding: 10rpx;
// text-align: center;
// margin-top: 10rpx;
// }
}
.card_comm{
background: #FFFFFF;
border-radius: 30rpx;
padding: 30rpx;
margin-top: 20rpx;
}
.card_title_comm{
font-weight: bold;
font-size: 32rpx;
color: #111111;
}
.card_title_comm2{
display: flex;
justify-content: space-between;
}
.card_fg_comm{
height: 10rpx;
background: #EEEEEE;
width: 100%;
}
.title_comm{
font-weight: bold;
font-size: 28rpx;
color: #111111;
}
.fg_comm{
width: 1rpx;
height: 40rpx;
background: #EEEEEE;
}
.data_comm{
font-size: 24rpx;
color: #999999;
margin-top: 10rpx;
}
.card_item_comm{
padding: 30rpx;
}
.my_team{
display: flex;
justify-content: space-between;
.my_team_count{
display: flex;
align-items: center;
}
}
.performance{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20rpx;
.performance_item{
width: 24%;
text-align:center;
}
}
.royalty_warp{
border-radius: 30rpx;
margin-top: 20rpx;
background: #FFFFFF;
.amount_item{
width: 30%;
text-align:center;
}
.amount_fg{
width: 100%;
height: 1rpx;
background: #EEEEEE;
border-radius: 1rpx;
margin: 20rpx 0;
}
}
.royalty_list{
margin-top: 20rpx;
// height: 440rpx;
// overflow: auto;
.royalty_item{
display: flex;
justify-content: space-between;
background: #F5F5F5;
border-radius: 20rpx;
padding: 20rpx;
margin-bottom: 20rpx;
}
.royalty_title_{
font-weight: bold;
font-size: 28rpx;
color: #111111;
}
.royalty_title_amount{
color: $app-bt-bj;
}
.royalty_data_{
font-size: 24rpx;
color: #999999;
margin-top: 10rpx;
}
}
.content_1{
margin-bottom: 40rpx;
}
.content_2{
text-align: left;
margin-top: 10rpx;
}
}
.commission_count{
display: flex;
justify-content: space-between;
align-items: center;
background: rgba(0,0,0,0.06);
border-radius: 8rpx;
padding:16rpx 10rpx 16rpx 26rpx;
margin-top: 20rpx;
font-size: 27rpx;
color: rgba(0,0,0,0.4);
line-height: 38rpx;
}
</style>