691 lines
18 KiB
Vue
691 lines
18 KiB
Vue
<template>
|
||
<view>
|
||
<loading-view v-if="showLoading"></loading-view>
|
||
<u-notice-bar :show="showTips" mode="horizontal" :list="list" :font-size="26" :close-icon="true" :speed="100"
|
||
@close="showTips=false"></u-notice-bar>
|
||
<view class="user-spread">
|
||
<view class="header p-t-40 m-b-50">
|
||
<view class="user-info flex m-l-30">
|
||
<view class="user-avatar">
|
||
<u-image width="110rpx" height="110rpx" border-radius="60" :src="userInfo.user.avatar" />
|
||
</view>
|
||
<view class="user-message m-l-20 white">
|
||
<view class="m-b-10">
|
||
<view class="xxl bold m-r-20">{{userInfo.user.nickname}}</view>
|
||
</view>
|
||
<view class="avatar-tag white xxs text-center m-b-10" v-if="distributionInfo.level_name">{{distributionInfo.level_name}}</view>
|
||
<view class="xs flex">
|
||
上级分销商:{{userInfo.leader.nickname ? userInfo.leader.nickname : '无'}}
|
||
<view v-if="!userInfo.leader.nickname"
|
||
class="br60 white write-btn flex row-center m-l-30 xxs" @tap="showInvitePop">填写
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="main">
|
||
<!-- 填表格 -->
|
||
<view v-if="vipState == 0" class="user-apply-box">
|
||
<view class="user-apply-vip flex-col col-center">
|
||
<view class="user-apply-header flex-col col-center">
|
||
<view class="title xxl normal">申请成为分销会员</view>
|
||
</view>
|
||
<view class="vip-form">
|
||
<view class="form-item">
|
||
<u-field v-model="realName" :label-width="150" label="真实姓名:" :border-bottom="false"
|
||
placeholder="请输入您的真实姓名">
|
||
</u-field>
|
||
</view>
|
||
|
||
<view class="form-item">
|
||
<u-field v-model="mobile" :label-width="150" label="手机号码:" :border-bottom="false"
|
||
placeholder="请输入您的手机号码">
|
||
</u-field>
|
||
</view>
|
||
<view class="form-item" @tap="showRegion=true">
|
||
<u-field v-model="region" disabled right-icon="arrow-right" :label-width="150"
|
||
label="现住省份:" :border-bottom="false" placeholder="请选择省、市、区">
|
||
</u-field>
|
||
</view>
|
||
<view class="form-item">
|
||
<u-field v-model="reason" :label-width="150" type="textarea" label="申请原因:"
|
||
placeholder="(必填)" :field-style="{ height: '250rpx'}" />
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<button class="apply-btn bg-primary white md m-t-20 flex row-center br60" @tap="formSubmit">
|
||
立即申请
|
||
</button>
|
||
<view class="m-t-20 xxs lighter flex row-center">提交成功后,我们将会在1-2个工作日内给您回复</view>
|
||
</view>
|
||
|
||
<!-- 申请状态 -->
|
||
<view v-if="vipState==1" class="user-result-box">
|
||
<view class="user-result flex-col col-center">
|
||
<view class="user-result-header flex-col col-center">
|
||
<view class="title xxl normal">申请成为分销会员</view>
|
||
</view>
|
||
<view class="user-result-content flex-col col-center">
|
||
<image class="apply-result-img"
|
||
:src="applyObject.status == 2 ? '/static/images/icon_fail.png' : '/static/images/icon_success.png'" />
|
||
<view class="m-t-10 nr" style="line-height: 40rpx">{{applyObject.status_str}}</view>
|
||
<view class="apply-fail-reason sm"
|
||
:style="applyObject == 2 ? 'visibility: none' : 'visibility: hidden'">
|
||
{{applyObject.reason}}
|
||
</view>
|
||
</view>
|
||
<view class="user-result-info">
|
||
<view class="info-item flex nr">
|
||
<view class="label">真实姓名:</view>
|
||
<view class="info-text ml20">{{applyObject.real_name}}</view>
|
||
</view>
|
||
<view class="info-item flex nr">
|
||
<view class="label">手机号码:</view>
|
||
<view class="info-text ml20">{{applyObject.mobile}}</view>
|
||
</view>
|
||
<view class="info-item flex nr">
|
||
<view class="label">现住省份:</view>
|
||
<view class="info-text ml20">{{applyObject.province}} {{applyObject.city}}
|
||
{{applyObject.district}}
|
||
</view>
|
||
</view>
|
||
<view class="info-item flex nr">
|
||
<view class="label">申请原因:</view>
|
||
<view class="info-text ml20">{{applyObject.reason ? applyObject.reason : '-'}}</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view :class="'white m-t-20 br60 apply-btn flex row-center md bg-primary'" @tap="reApply">重新申请
|
||
</view>
|
||
<view class="m-t-20 xxs lighter flex row-center">提交成功后,我们将会在1-2个工作日内给您回复</view>
|
||
</view>
|
||
|
||
<!-- 已申请 -->
|
||
<view v-if="vipState==2" class="user-vip">
|
||
<view class="user-assets-box">
|
||
<view class="user-assets-header flex row-between">
|
||
<view class="flex nr bold" style="line-height: 80rpx;color: #8F430E;">
|
||
可提现佣金:
|
||
<price-format weight="bold" :first-size="36" :subscript-size="26" :second-size="36"
|
||
:price="distributionInfo.able_withdrawal" :color="colorConfig.primary" />
|
||
</view>
|
||
<navigator hover-class="none" class="primary-btn white flex row-center"
|
||
url="/bundle/pages/user_withdraw/user_withdraw">立即提现</navigator>
|
||
</view>
|
||
<view class="user-assets-content flex flex-wrap">
|
||
<view class="user-item flex-col col-center">
|
||
<tool-tip v-if="false" class="m-t-20" id="today-profit" content="今日预估收益金额"
|
||
style="position: absolute;right: -66rpx;"></tool-tip>
|
||
<view class="nr user-assets-name flex" style="color: #8F430E">
|
||
今日预估收益
|
||
<!-- <u-icon class="ml10" name="question-circle" size="30rpx" color="#D88D5A" /> -->
|
||
</view>
|
||
<view class="assets m-l-20">
|
||
<price-format weight="bold" :first-size="36" :subscript-size="26" :second-size="36"
|
||
:price="distributionInfo.today_earnings" :color="colorConfig.primary" />
|
||
</view>
|
||
</view>
|
||
<view class="user-item flex-col col-center">
|
||
<view class="nr user-assets-name flex" style="color: #8F430E">
|
||
本月预估收益
|
||
<!-- <u-icon class="ml10" name="question-circle" size="30rpx" color="#D88D5A" /> -->
|
||
</view>
|
||
<view class="assets m-l-20">
|
||
<price-format weight="bold" :first-size="36" :subscript-size="26" :second-size="36"
|
||
:price="distributionInfo.month_earnings" :color="colorConfig.primary" />
|
||
</view>
|
||
</view>
|
||
<view class="user-item flex-col col-center">
|
||
<view class="nr user-assets-name flex" style="color: #8F430E">
|
||
累计获得收益
|
||
<!-- <u-icon class="ml10" name="question-circle" size="30rpx" color="#D88D5A" /> -->
|
||
</view>
|
||
<view class="assets">
|
||
<price-format weight="bold" :first-size="36" :subscript-size="26" :second-size="36"
|
||
:price="distributionInfo.history_earnings" :color="colorConfig.primary" />
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="mt20 fans-msg-box flex bg-white md">
|
||
<router-link class="flex-1" to="/bundle/pages/user_fans/user_fans">
|
||
<view class="my-fans flex row-center normal">
|
||
我的粉丝 <view class="primary m-l-10">{{distributionInfo.fans}}</view>
|
||
<u-icon class="m-l-10" name="arrow-right" size="28rpx" color="#666" />
|
||
</view>
|
||
</router-link>
|
||
|
||
|
||
</view>
|
||
<view class="my-invite-box m-t-20 bg-white flex-col col-center">
|
||
<view class="my-invite-title sm normal">我的邀请码</view>
|
||
<view class="flex bold m-t-20" style="font-size: 42rpx;line-height: 30rpx">
|
||
{{userInfo.user.distribution_code}}
|
||
<view class="invite-copy-btn m-l-10 xxs" @click="onCopy">点击复制</view>
|
||
</view>
|
||
<!-- <view class="row-center my-promote-banner bg-primary white">我的推广海报</view> -->
|
||
</view>
|
||
<view class="usual-tools-box bg-white m-t-20">
|
||
<view class="usual-tools-header flex lg bold">
|
||
常用工具
|
||
</view>
|
||
<view class="usual-content flex">
|
||
|
||
<router-link class="usual-item" to="/bundle/pages/user_spread_order/user_spread_order">
|
||
<view class="flex-col col-center">
|
||
<image src="/bundle/static/icon_fenxiao.png" class="usual-item-img"></image>
|
||
<view class="nr normal m-t-20" style="line-height: 40rpx">分销订单</view>
|
||
</view>
|
||
</router-link>
|
||
<router-link class="usual-item" to="/bundle/pages/commission_details/commission_details">
|
||
<view class="flex-col col-center">
|
||
<image src="/bundle/static/icon_yongjin.png" class="usual-item-img"></image>
|
||
<view class="nr normal m-t-20" style="line-height: 40rpx">佣金明细</view>
|
||
</view>
|
||
</router-link>
|
||
<router-link class="usual-item" to="/bundle/pages/monthly_bill/monthly_bill">
|
||
<view class="flex-col col-center">
|
||
<image src="/bundle/static/icon_zhangdan.png" class="usual-item-img"></image>
|
||
<view class="nr normal m-t-20" style="line-height: 40rpx">月度账单</view>
|
||
</view>
|
||
</router-link>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<u-popup v-model="showPop" mode="center" closeable border-radius="30">
|
||
<view class="inviteform-contain flex-col col-center">
|
||
<view class="title xl">填写邀请人</view>
|
||
<view class="input-row flex">
|
||
<view style="width: 140rpx;">邀请码:</view>
|
||
<u-input :clearable="false" v-model="inviteCode" placeholder="请输入邀请码" ></u-input>
|
||
</view>
|
||
<view class="btn bg-primary white flex row-center" @tap="bindSuperiorFun">确定</view>
|
||
</view>
|
||
</u-popup>
|
||
<u-select v-model="showRegion" mode="mutil-column-auto" @confirm="regionChange" :list="regionLists">
|
||
</u-select>
|
||
</view>
|
||
</view>
|
||
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
bindSuperior,
|
||
applyDistribute,
|
||
applyDetail,
|
||
getSuperiorInfo,
|
||
getDistribution,
|
||
veryfiyDistribute
|
||
} from "@/api/user";
|
||
import area from '@/utils/area'
|
||
import {
|
||
copy
|
||
} from '@/utils/tools'
|
||
export default {
|
||
data() {
|
||
return {
|
||
list: ['成为分销会员,推广下级可获得额外收益,推广越多收益越多'],
|
||
showTips: true,
|
||
showLoading: true,
|
||
// 弹窗展示
|
||
showPop: false,
|
||
inviteCode: '',
|
||
mobile: '',
|
||
realName: '',
|
||
reason: '',
|
||
region: '',
|
||
// 省id
|
||
provinceId: -1,
|
||
// 市id
|
||
cityId: -1,
|
||
// 区ID
|
||
districtId: -1,
|
||
// 推销状态 0 ==> 未申请 1 ==> 申请进度 2 ==> 已申请
|
||
vipState: 0,
|
||
userInfo: {
|
||
user: {},
|
||
leader: {}
|
||
},
|
||
// 审核信息对象
|
||
applyObject: {},
|
||
// 邀请人状态
|
||
inviteStatus: false,
|
||
showRegion: false,
|
||
regionLists: area,
|
||
distributionInfo: {}
|
||
};
|
||
},
|
||
onLoad(options) {
|
||
// 获取上级及个人信息
|
||
this.getSuperiorInfoFun()
|
||
// 判断是否是分销会员
|
||
this.veryfiyDistributeFun()
|
||
},
|
||
|
||
|
||
methods: {
|
||
// 分销会员信息
|
||
async getDistributionFun() {
|
||
const {
|
||
data,
|
||
code
|
||
} = await getDistribution()
|
||
if (code == 1) {
|
||
this.showLoading = false
|
||
this.distributionInfo = data
|
||
}
|
||
},
|
||
|
||
veryfiyDistributeFun() {
|
||
veryfiyDistribute().then(res => {
|
||
if (res.code == 10001) {
|
||
// 分销会员
|
||
this.vipState = 2
|
||
this.getDistributionFun()
|
||
} else if (res.code == 20001) {
|
||
// 非分销会员
|
||
this.vipState = 0;
|
||
this.applyDetailFun()
|
||
} else if (res.code == 0) {
|
||
// 返回上一页
|
||
setTimeout(() => {
|
||
uni.navigateBack()
|
||
}, 500)
|
||
}
|
||
})
|
||
},
|
||
|
||
// 最新分销会员申请详情
|
||
async applyDetailFun() {
|
||
const {
|
||
data,
|
||
code
|
||
} = await applyDetail()
|
||
if (code == 1) {
|
||
this.showLoading = false
|
||
switch (data.status) {
|
||
case 0:
|
||
// 待审核
|
||
case 2:
|
||
// 审核不通过
|
||
this.vipState = 1;
|
||
this.applyObject = data
|
||
break;
|
||
}
|
||
}
|
||
},
|
||
|
||
reApply() {
|
||
this.vipState = 0
|
||
},
|
||
|
||
regionChange(region) {
|
||
this.region = region[0].label + " " + region[1].label + " " + region[2].label
|
||
this.provinceId = region[0].value;
|
||
this.cityId = region[1].value;
|
||
this.districtId = region[2].value
|
||
},
|
||
|
||
async formSubmit() {
|
||
let {
|
||
provinceId,
|
||
cityId,
|
||
districtId,
|
||
reason,
|
||
mobile,
|
||
realName,
|
||
region
|
||
} = this;
|
||
|
||
if (!realName) {
|
||
this.$toast({
|
||
title: "请填写真实姓名"
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (!region.length) {
|
||
this.$toast({
|
||
title: "请选择省市区"
|
||
});
|
||
return;
|
||
}
|
||
|
||
let params = {
|
||
real_name: realName,
|
||
province: provinceId,
|
||
city: cityId,
|
||
district: districtId,
|
||
reason: reason,
|
||
mobile
|
||
};
|
||
const {
|
||
data,
|
||
code,
|
||
msg
|
||
} = await applyDistribute(params)
|
||
if (code == 1) {
|
||
this.$toast({
|
||
title: msg
|
||
});
|
||
this.applyDetailFun();
|
||
}
|
||
},
|
||
|
||
|
||
// 填写邀请码
|
||
bindSuperiorFun() {
|
||
bindSuperior({
|
||
code: this.inviteCode
|
||
}).then(res => {
|
||
this.$toast({
|
||
title: res.msg
|
||
})
|
||
if (res.code == 1) {
|
||
this.showPop = false
|
||
this.getSuperiorInfoFun();
|
||
}
|
||
});
|
||
},
|
||
|
||
showInvitePop() {
|
||
this.showPop = true;
|
||
},
|
||
|
||
// 获取邀请人信息
|
||
async getSuperiorInfoFun() {
|
||
const {
|
||
data,
|
||
code
|
||
} = await getSuperiorInfo()
|
||
if (code == 1) {
|
||
this.userInfo = data
|
||
}
|
||
},
|
||
onCopy() {
|
||
copy(this.userInfo.user.distribution_code)
|
||
},
|
||
|
||
}
|
||
};
|
||
</script>
|
||
<style lang="scss">
|
||
.user-spread {
|
||
background-image: url(../../static/spread_top_bg.png);
|
||
background-repeat: no-repeat;
|
||
background-size: 100% auto;
|
||
|
||
.header {
|
||
|
||
.user-info {
|
||
.user-avatar {
|
||
position: relative;
|
||
|
||
|
||
}
|
||
.avatar-tag {
|
||
display: inline-block;
|
||
background-color: #F79C0C;
|
||
border: 1rpx solid #FFFFFF;
|
||
border-radius: 100rpx;
|
||
line-height: 32rpx;
|
||
padding: 0 10rpx;
|
||
}
|
||
.user-message {
|
||
.write-btn {
|
||
height: 42rpx;
|
||
width: 100rpx;
|
||
background-color: #FF838D;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.main {
|
||
padding: 0 20rpx;
|
||
|
||
.user-vip {
|
||
.user-assets-box {
|
||
background-color: #fff;
|
||
border-radius: 20rpx;
|
||
padding: 10rpx 20rpx 22rpx;
|
||
background: linear-gradient(90deg, #FBEFDB 0%, #FED09E 100%);
|
||
|
||
.user-assets-header {
|
||
border-bottom: 1rpx dashed #8F430E;
|
||
padding-bottom: 4rpx;
|
||
|
||
.primary-btn {
|
||
height: 54rpx;
|
||
border-radius: 120rpx;
|
||
width: 144rpx;
|
||
background: linear-gradient(180deg, #FF3067 0%, #FF2C3C 100%);
|
||
}
|
||
}
|
||
|
||
.user-assets-content {
|
||
margin-top: 30rpx;
|
||
|
||
.user-item {
|
||
flex: 1;
|
||
position: relative;
|
||
|
||
.user-assets-name {
|
||
text-align: left;
|
||
align-self: flex-start;
|
||
}
|
||
|
||
.assets {
|
||
margin-top: 14rpx;
|
||
text-align: left;
|
||
align-self: flex-start;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.fans-msg-box {
|
||
border-radius: 10rpx;
|
||
line-height: 42rpx;
|
||
|
||
.my-fans {
|
||
height: 120rpx;
|
||
}
|
||
|
||
.line {
|
||
width: 3rpx;
|
||
height: 60rpx;
|
||
background-color: #E5E5E5;
|
||
}
|
||
|
||
.invite-fans {
|
||
height: 120rpx;
|
||
}
|
||
}
|
||
|
||
.my-invite-box {
|
||
padding: 26rpx 0 57rpx;
|
||
border-radius: 10rpx;
|
||
|
||
.invite-copy-btn {
|
||
line-height: 30rpx;
|
||
padding: 10rpx;
|
||
background: linear-gradient(90deg, #FEE4B4 0%, #FBCB96 100%);
|
||
color: #8F430E;
|
||
border-radius: 4rpx;
|
||
}
|
||
|
||
.my-promote-banner {
|
||
margin-top: 30rpx;
|
||
height: 148rpx;
|
||
width: 542rpx;
|
||
border-radius: 10rpx;
|
||
}
|
||
}
|
||
|
||
.usual-tools-box {
|
||
border-radius: 10rpx;
|
||
padding: 0 25rpx;
|
||
|
||
.usual-tools-header {
|
||
height: 100rpx;
|
||
line-height: 44rpx;
|
||
border-bottom: $-solid-border;
|
||
}
|
||
|
||
.usual-content {
|
||
padding: 40rpx 0;
|
||
|
||
.usual-item {
|
||
width: 25%;
|
||
|
||
.usual-item-img {
|
||
width: 56rpx;
|
||
height: 56rpx;
|
||
flex: none;
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.user-apply-box {
|
||
.user-apply-vip {
|
||
background-color: white;
|
||
padding: 40rpx 0 0rpx;
|
||
border-radius: 20rpx;
|
||
|
||
.title {
|
||
line-height: 30rpx;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.explain {
|
||
margin-top: 20rpx;
|
||
|
||
image {
|
||
width: 24rpx;
|
||
height: 24rpx;
|
||
flex: none;
|
||
}
|
||
|
||
span {
|
||
font-size: 20rpx;
|
||
line-height: 30rpx;
|
||
}
|
||
}
|
||
|
||
.vip-form {
|
||
width: 100%;
|
||
margin-top: 60rpx;
|
||
|
||
.form-item {
|
||
border: $-solid-border;
|
||
margin: 0 30rpx 30rpx;
|
||
}
|
||
}
|
||
}
|
||
|
||
.apply-btn {
|
||
line-height: 30rpx;
|
||
height: 82rpx;
|
||
}
|
||
}
|
||
|
||
.user-result-box {
|
||
.user-result {
|
||
background-color: white;
|
||
padding: 36rpx 14rpx 50rpx;
|
||
border-radius: 20rpx;
|
||
|
||
.user-result-header {
|
||
.title {
|
||
line-height: 30rpx;
|
||
font-weight: bold;
|
||
}
|
||
|
||
}
|
||
.user-result-content {
|
||
padding: 60rpx 0 22rpx;
|
||
width: 100%;
|
||
border-bottom: $-solid-border;
|
||
|
||
.apply-result-img {
|
||
width: 100rpx;
|
||
height: 100rpx;
|
||
}
|
||
}
|
||
|
||
.user-result-info {
|
||
margin-top: 42rpx;
|
||
width: 100%;
|
||
|
||
.info-item {
|
||
margin-left: 60rpx;
|
||
margin-bottom: 28rpx;
|
||
line-height: 30rpx;
|
||
|
||
.label {
|
||
width: 140rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.apply-btn {
|
||
line-height: 30rpx;
|
||
height: 82rpx;
|
||
}
|
||
|
||
.bg-gray {
|
||
background-color: #CCCCCC;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
.main .user-apply-box .apply-btn {
|
||
line-height: 30rpx;
|
||
height: 82rpx;
|
||
}
|
||
|
||
.main .user-result-box .user-result-content .apply-fail-reason {
|
||
color: $-color-primary;
|
||
line-height: 36rpx;
|
||
margin-top: 10rpx;
|
||
}
|
||
|
||
/* 弹窗 */
|
||
.inviteform-contain {
|
||
padding-left: 30rpx;
|
||
padding-right: 30rpx;
|
||
padding-bottom: 30rpx;
|
||
width: 580rpx;
|
||
border-radius: 6rpx;
|
||
background-color: $-color-white;
|
||
}
|
||
|
||
.inviteform-contain .title {
|
||
padding: 26rpx 0rpx;
|
||
}
|
||
|
||
.inviteform-contain .modify-row {
|
||
padding: 32rpx 0px;
|
||
width: 100%;
|
||
border-bottom: 1rpx solid #E5E5E5;
|
||
}
|
||
|
||
.inviteform-contain .btn {
|
||
height: 80rpx;
|
||
padding: 0 180rpx;
|
||
border-radius: 10rpx;
|
||
margin-top: 60rpx;
|
||
}
|
||
|
||
</style>
|