|
|
@ -1,18 +1,344 @@ |
|
|
|
<template> |
|
|
|
<view> |
|
|
|
<view class="page"> |
|
|
|
<navbar title="分销" leftClick @leftClick="$utils.navigateBack" /> |
|
|
|
|
|
|
|
<view class="content"> |
|
|
|
<view class="overview"> |
|
|
|
<view class="title">我的推荐人</view> |
|
|
|
<view class="card flex referrer"> |
|
|
|
<!-- todo: 换回接口提供的 --> |
|
|
|
<image class="avatar" src="../static/temp-avatar.png"></image> |
|
|
|
<view class="referrer-info"> |
|
|
|
<view> |
|
|
|
<view class="nick-name">裂变星1号</view> |
|
|
|
<view>{{ `ID:${12345678}` }}</view> |
|
|
|
</view> |
|
|
|
<view> |
|
|
|
<view class="phone-label">手机号</view> |
|
|
|
<view>15234567891</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="summary"> |
|
|
|
<image class="bg" src="../static/center/overview-bg.png"></image> |
|
|
|
|
|
|
|
<view class="flex flex-column summary-info"> |
|
|
|
<!-- todo: 换回接口提供的 --> |
|
|
|
<view class="flex summary-info-total"> |
|
|
|
<view class="flex flex-column"> |
|
|
|
<view class="value">100</view> |
|
|
|
<view class="label">推荐总人数(人)</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="flex summary-info-detail"> |
|
|
|
<view class="flex flex-column"> |
|
|
|
<view class="label">直接推荐(人)</view> |
|
|
|
<view class="value">90</view> |
|
|
|
</view> |
|
|
|
<view class="flex flex-column"> |
|
|
|
<view class="label">间接推荐(人)</view> |
|
|
|
<view class="value">10</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="card" style="padding: 20rpx 10rpx 11rpx 0;"> |
|
|
|
<uv-tabs :list="tabs" |
|
|
|
:inactiveStyle="{ |
|
|
|
color: '#999999', |
|
|
|
fontSize: '30rpx', |
|
|
|
fontWeight: 500, |
|
|
|
whiteSpace: 'nowrap', |
|
|
|
}" |
|
|
|
:activeStyle="{ |
|
|
|
color: '#1B1B1B', |
|
|
|
fontSize: '38rpx', |
|
|
|
fontWeight: 900, |
|
|
|
whiteSpace: 'nowrap', |
|
|
|
}" |
|
|
|
lineHeight="13rpx" |
|
|
|
lineWidth="77rpx" |
|
|
|
:lineColor="`url('../../static/image/record/slider.png') 100% 100%`" |
|
|
|
:scrollable="false" |
|
|
|
@click="clickTabs" |
|
|
|
> |
|
|
|
<template v-slot:right> |
|
|
|
<suspendDropdown |
|
|
|
v-model="queryParams.role" |
|
|
|
:options="roleOptions" |
|
|
|
@change="onRoleChange" |
|
|
|
></suspendDropdown> |
|
|
|
</template> |
|
|
|
</uv-tabs> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="card flex list-item" |
|
|
|
v-for="item in recordList.records" |
|
|
|
:key="item.id" |
|
|
|
> |
|
|
|
<image class="avatar" :src="item.avatarUrl"></image> |
|
|
|
<view class="flex" style="flex: 1; justify-content: space-between;"> |
|
|
|
<view class="flex flex-column left"> |
|
|
|
<view class="highlight">{{ item.nickName }}</view> |
|
|
|
<view>{{ item.roleName }}</view> |
|
|
|
</view> |
|
|
|
<view class="flex flex-column right"> |
|
|
|
<view>{{ item.createTime }}</view> |
|
|
|
<view>{{ item.createDate }}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import suspendDropdown from '@/components/base/suspendDropdown.vue' |
|
|
|
|
|
|
|
export default { |
|
|
|
components: { |
|
|
|
suspendDropdown, |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return { |
|
|
|
tabs: [{ |
|
|
|
name: '直接推荐' |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: '间接推荐' |
|
|
|
}, |
|
|
|
], |
|
|
|
roleOptions: [ |
|
|
|
{ |
|
|
|
label: '普通会员', |
|
|
|
value: 0, |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: '代理商', |
|
|
|
value: 1, |
|
|
|
}, |
|
|
|
], |
|
|
|
recordList: { |
|
|
|
records: [ |
|
|
|
{ |
|
|
|
id: '001', |
|
|
|
avatarUrl: '../static/temp-avatar.png', |
|
|
|
nickName: '裂变星1号', |
|
|
|
roleName: '普通会员', |
|
|
|
createDate: '2025年2月15日', |
|
|
|
createTime: '12:56:48', |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '002', |
|
|
|
avatarUrl: '../static/temp-avatar.png', |
|
|
|
nickName: '裂变星1号', |
|
|
|
roleName: '代理商', |
|
|
|
createDate: '2025年2月15日', |
|
|
|
createTime: '12:56:48', |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '003', |
|
|
|
avatarUrl: '../static/temp-avatar.png', |
|
|
|
nickName: '裂变星1号', |
|
|
|
roleName: '普通会员', |
|
|
|
createDate: '2025年2月15日', |
|
|
|
createTime: '12:56:48', |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '004', |
|
|
|
avatarUrl: '../static/temp-avatar.png', |
|
|
|
nickName: '裂变星1号', |
|
|
|
roleName: '代理商', |
|
|
|
createDate: '2025年2月15日', |
|
|
|
createTime: '12:56:48', |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '005', |
|
|
|
avatarUrl: '../static/temp-avatar.png', |
|
|
|
nickName: '裂变星1号', |
|
|
|
roleName: '普通会员', |
|
|
|
createDate: '2025年2月15日', |
|
|
|
createTime: '12:56:48', |
|
|
|
}, |
|
|
|
], |
|
|
|
total: 0, |
|
|
|
}, |
|
|
|
// recordList: { |
|
|
|
// records: [], |
|
|
|
// total: 0, |
|
|
|
// }, |
|
|
|
state: -1, |
|
|
|
queryParams: { |
|
|
|
pageNo: 1, |
|
|
|
pageSize: 10, |
|
|
|
role: null, |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
onShow() { |
|
|
|
this.orderPage() |
|
|
|
}, |
|
|
|
//滚动到屏幕底部 |
|
|
|
onReachBottom() { |
|
|
|
if(this.queryParams.pageSize < this.recordList.total){ |
|
|
|
this.queryParams.pageSize += 10 |
|
|
|
this.orderPage() |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
orderPage(){ |
|
|
|
// todo |
|
|
|
return |
|
|
|
let queryParams = { |
|
|
|
...this.queryParams, |
|
|
|
} |
|
|
|
if(this.state != -1){ |
|
|
|
queryParams.state = this.state |
|
|
|
} |
|
|
|
this.$api('orderPage', queryParams, res => { |
|
|
|
if(res.code == 200){ |
|
|
|
this.recordList = res.result |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
//点击tab栏 |
|
|
|
clickTabs(index) { |
|
|
|
if (index == 0) { |
|
|
|
this.state = -1; |
|
|
|
} else { |
|
|
|
this.state = index - 1; |
|
|
|
} |
|
|
|
this.queryParams.pageSize = 10 |
|
|
|
this.orderPage() |
|
|
|
}, |
|
|
|
onRoleChange(role) { |
|
|
|
// todo |
|
|
|
|
|
|
|
// fetch list |
|
|
|
} |
|
|
|
}, |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style scoped lang="scss"> |
|
|
|
.page { |
|
|
|
background-color: $uni-bg-color; |
|
|
|
} |
|
|
|
|
|
|
|
.content { |
|
|
|
padding: 20rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.overview { |
|
|
|
& > .title { |
|
|
|
color: #1B1B1B; |
|
|
|
font-size: 24rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.referrer { |
|
|
|
color: #999999; |
|
|
|
font-size: 24rpx; |
|
|
|
padding: 20rpx; |
|
|
|
margin-top: 20rpx; |
|
|
|
|
|
|
|
.avatar { |
|
|
|
width: 84rpx; |
|
|
|
height: 84rpx; |
|
|
|
border-radius: 50%; |
|
|
|
margin-right: 20rpx; |
|
|
|
} |
|
|
|
|
|
|
|
&-info { |
|
|
|
flex: 1; |
|
|
|
display: inline-flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: space-between; |
|
|
|
} |
|
|
|
|
|
|
|
.nick-name { |
|
|
|
color: #1B1B1B; |
|
|
|
font-size: 32rpx; |
|
|
|
font-weight: 700; |
|
|
|
} |
|
|
|
|
|
|
|
.phone-label { |
|
|
|
color: #1B1B1B; |
|
|
|
text-align: right; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.summary { |
|
|
|
margin-top: 20rpx; |
|
|
|
position: relative; |
|
|
|
width: 100%; |
|
|
|
height: 373rpx; |
|
|
|
|
|
|
|
color: #04D6A3; |
|
|
|
|
|
|
|
& > .bg { |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
&-info { |
|
|
|
position: absolute; |
|
|
|
top: 0; |
|
|
|
left: 0; |
|
|
|
|
|
|
|
justify-content: space-between; |
|
|
|
|
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
padding: 32rpx 78rpx; |
|
|
|
box-sizing: border-box; |
|
|
|
|
|
|
|
&-detail { |
|
|
|
width: 100%; |
|
|
|
justify-content: space-between; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.label { |
|
|
|
font-size: 24rpx; |
|
|
|
font-weight: 500; |
|
|
|
} |
|
|
|
.value { |
|
|
|
font-size: 78rpx; |
|
|
|
font-weight: 900; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.card { |
|
|
|
margin-top: 20rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.list { |
|
|
|
&-item { |
|
|
|
color: #999999; |
|
|
|
font-size: 24rpx; |
|
|
|
|
|
|
|
.left { |
|
|
|
align-items: flex-start; |
|
|
|
} |
|
|
|
.right { |
|
|
|
align-items: flex-end; |
|
|
|
} |
|
|
|
|
|
|
|
.highlight { |
|
|
|
color: #1B1B1B; |
|
|
|
font-size: 32rpx; |
|
|
|
font-weight: 800; |
|
|
|
} |
|
|
|
|
|
|
|
.avatar { |
|
|
|
width: 84rpx; |
|
|
|
height: 84rpx; |
|
|
|
border-radius: 50%; |
|
|
|
margin-right: 20rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |