dingdong-mall/pages/my/my-team-member.vue

146 lines
4.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<!-- 顶部操作条 -->
<cu-custom :bgColor="'bg-main-color'" :isBack="true">
<block slot="backText">返回</block>
<block slot="content">查看{{placeStatus == '2' ? '团队' : '客户'}}{{totalMembers}}</block>
</cu-custom>
<!-- 团队成员信息 -->
<view class="margin-top-sm margin-lr-sm padding bg-white name-card shadow-warp"
v-for="(member, index) in members">
<!-- 个人名片 -->
<view class="flex justify-start">
<view class="cu-avatar round"
:style="'background-image:url(' + member.customerLogoUrl + '); width: 130rpx; height: 130rpx;'">
</view>
<view class="margin-left-sm flex-column-around">
<view class="text-black text-xl">{{member.name}}</view>
<view class="">
<text class="margin-right-xs">角色:{{placeStatus == '2' ? '合伙人' : '消费者'}}</text>
</view>
</view>
</view>
<!-- 实名及公告图标 -->
<view class="flex justify-end oper-bar">
<view class="text-center margin-right-sm text-orange" @click="makePhoneCall(member.phone)">
<view class="cuIcon-phone"></view>
</view>
</view>
<!-- 人员下辖团队统计 -->
<!-- <view class="cu-list grid no-border col-4 solid-top margin-top-sm">
<view class="cu-item" :class="index == 2 ? 'solid-left' : ''" v-for="(item, index) in member.analyseItems" v-if="index < 4 && item.type === 'common'">
<view class="margin-bottom-xs">{{item.title}}</view>
<view class="text-red" v-if="item.unit === 'yuan'">
¥{{item.value}}
</view>
<view v-else class="text-red">
{{item.value}}{{item.unit}}
</view>
</view>
</view> -->
<view class="cu-list grid no-border col-4 solid-top margin-top-sm">
<view class="cu-item" v-for="(item, index) in member.analyseItems" v-if="index >= 4 && item.type === 'common'">
<view class="margin-bottom-xs">{{item.title}}</view>
<view class="text-red" v-if="item.unit === 'yuan'">
¥{{item.value}}
</view>
<view v-else class="text-red">
{{item.value}}{{item.unit}}
</view>
</view>
</view>
</view>
<load-status-bar class="margin-tb-xl" ref="loadStatusBar" @loadMore="loadMyOperaMembers"></load-status-bar>
</view>
</template>
<script>
import horizontalNameCard from '@/components/common-card/horizontal-name-card.vue';
import loadStatusBar from '@/components/custom-bar/load-status-bar.vue';
export default {
components: {
horizontalNameCard,
loadStatusBar
},
data() {
return {
totalMembers: 0,
members: [],
curUserInfo: {},
pageNum: 0,
pageSize: 0,
placeStatus: null
}
},
onLoad(option) {
this.loadData(option);
},
methods: {
async loadData(option) {
if (option && option.placeStatus != undefined) {
this.placeStatus = option.placeStatus
}
this.curUserInfo = this.$request.getCurUserInfo();
this.resetData();
// this.myOperaMembers = await this.$api.data('myOperaMembers');
this.loadMyOperaMembers();
},
resetData() {
this.pageNum = this.$globalData.initPageNum;
this.pageSize = this.$globalData.initPageSize;
},
makePhoneCall(phoneNum) {
uni.makePhoneCall({
phoneNumber: phoneNum
})
},
async loadMyOperaMembers(params = {}) {
params.pageNum = this.pageNum;
params.pageSize = this.pageSize;
params.customerPlace = this.curUserInfo.customerId;
params.isDistributor = true;
if (this.placeStatus != null && this.placeStatus != undefined) {
params.placeStatus = this.placeStatus;
}
params.status = 0;
this.$refs.loadStatusBar.showLoading();
try {
let res = await this.$request.qryCustomerList(params);
let rowsLength = res.rows.length;
if (rowsLength > 0) {
this.members = this.members.concat(res.rows);
this.totalMembers = res.total;
this.pageNum++;
if (rowsLength === this.pageSize) {
this.$refs.loadStatusBar.showLoadMore();
return;
}
}
this.$refs.loadStatusBar.showLoadOver();
} catch (e) {
console.error(e)
this.$refs.loadStatusBar.showLoadErr();
}
}
}
}
</script>
<style scoped>
.name-card {
position: relative;
}
.name-card .oper-bar {
position: absolute;
top: 20rpx;
right: 20rpx;
font-size: 50rpx;
}
.cu-list+.cu-list {
margin-top: unset;
}
</style>