ch-tgr/src/views/User/Team.vue
2026-05-18 11:39:48 +08:00

247 lines
7.8 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>
<BasePage :title="title ? $substring(title, 0, 8) + '的好友' : '我的好友'">
<div class="team">
<div class="count">
<div class="top">
<div class="left box-align-center">
<b>
我的好友
</b>
<van-icon style="margin-left: 1.2vw;" :name="cansee ? 'eye-o' : 'closed-eye'"
@click="cansee = !cansee"> </van-icon>
<!-- <span>
{{ total.TotalTreeQty }}
</span> -->
</div>
<div class="right_btn r" @click="$navigate('/Invite')">
<img src="/img/team-i1.png" alt="">
<span>
邀请好友
</span>
</div>
</div>
<div class="num">
<b>
{{ !cansee ? (total.allfriendcount || 0) : '***' }}
</b>
</div>
<!-- <div class="count_box">
<div class="item">
<div>
<img src="/img/team_i1.png" alt="">
<span>
直推好友
</span>
</div>
<div>
<b>{{ total.TotalCount }}</b>
</div>
</div>
<div class="item">
<div>
<img src="/img/team_i2.png" alt="">
<span>
团队好友
</span>
</div>
<div>
<b>{{ total.TotalTreeQty }}</b>
</div>
</div>
<div class="item">
<div>
<span>
全部好友
</span>
</div>
<div>
<b>{{ total.allfriendcount }}</b>
</div>
</div>
<hr>
<div class="item">
<div>
<span>
网体会员
</span>
</div>
<div>
<b>{{ total.allfriendcount }}</b>
</div>
</div>
</div> -->
</div>
<div class="list_title">
<!-- 直推好友列表({{ total.TotalCount }}) -->
<van-tabs v-model:active="active" background="transparent" color="#ad9573">
<van-tab :title="'分享的好友(' + total.friendcount + ')'"></van-tab>
<van-tab :title="'拓展的商家'"></van-tab>
<van-tab :title="'我的推荐人'"></van-tab>
</van-tabs>
</div>
<BaseList ref="baseList" :url="listUrl" :parseData="parseData" class="list_box">
<template #default="{ item }">
<div class="list" :key="item.id">
<div class="user_box">
<img class="icon" :src="$file(item.userimg)" alt="">
<div class="info">
<div>
<b>{{ item.nickname }}</b>
<span class="vip">{{ item.userlevelname }}</span>
</div>
<div class="box">
<p>账号:{{ item.cellphone ? item.cellphone.substring(0, 3) + '****' +
item.cellphone.substring(7) : '' }}</p>
</div>
<!-- <div>
<p>ID {{ item.UserID }}</p>
<img src="/img/copy.png" @click="$copyText(item.UserID); $showSuccessToast('复制ID成功')"
alt="">
</div> -->
<div>
<span>{{ $formatGMT(item.addtime, 'yyyy-MM-dd HH:mm:ss') }}</span>
<span class="r" v-if="item.isshop" @click="openshop(item.id)">
商家信息 <van-icon name="arrow"></van-icon>
</span>
<!-- <span class="r">
Ta的好友
<van-icon name="arrow"></van-icon>
</span> -->
</div>
</div>
</div>
</div>
</template>
</BaseList>
<van-popup v-model:show="show" style="padding: 4vw 3.33vw;border-radius: 2.67vw;">
<!-- 该账号商家信息 -->
<div class="merchantinfo">
<img :src="$file(shopinfo.shopimg)" alt="">
<div class="inf">
<b>{{ shopinfo.shopname }}</b>
<span>账号{{ shopinfo.shopphone }}</span>
</div>
</div>
</van-popup>
</div>
</BasePage>
</template>
<script>
export default {
name: 'Team',
// watch: {
// title(val, old) {
// document.title = this.$substring(val, 0, 8) + '的好友';
// },
// },
mounted() {
this.init()
},
data() {
return {
active: 0,
cansee: true,
show: false,
data: [
],
total: {
},
shopinfo: {},
title: this.$route.query.title || null,
};
},
methods: {
init() {
this.$get('/v1/client/DUsersClient/friendstatistics').then(data => {
this.total = data.data;
})
},
updateList() {
this.$refs.baseList.refresh()
},
parseData(res) {
if (this.active === 2) {
return res.data ? [res.data] : []
} else {
return res.data.items || []
}
},
openshop(e) {
this.$get(`/v1/client/DShopsClient/${e}`).then(res => {
// console.log(res);
this.shopinfo = res.data;
this.show = true;
})
}
},
computed: {
listUrl() {
if (this.active === 0) {
return '/v1/client/DUsersClient/friend'
} else if (this.active === 1) {
return '/v1/client/DUsersClient/shop'
} else {
return '/v1/client/DUsersClient/referrer'
}
}
},
};
</script>
<style scoped>
.d-bg {
background: #f5f5f5;
}
.f14 {
font-size: 14px;
}
.p10 {
padding: 10px;
}
.r10 {
border-radius: 10px;
}
.merchantinfo {
display: flex;
}
.merchantinfo img {
width: 12vw;
height: 12vw;
border-radius: 50%;
}
.merchantinfo .inf {
display: flex;
flex-direction: column;
justify-content: space-between;
margin-left: 3.33vw;
height: 12vw;
}
.merchantinfo .inf b {
font-size: 4vw;
color: #000000;
}
.merchantinfo .inf span {
font-size: 3.67vw;
color: #333;
}
</style>