544 lines
16 KiB
Vue
544 lines
16 KiB
Vue
<template>
|
||
<view :style="viewColor">
|
||
<view class='cash-withdrawal'>
|
||
<!--顶部账号选择-->
|
||
<view class='nav acea-row row-between-wrapper'>
|
||
<view class='name'>提现至</view>
|
||
<view class='input'>
|
||
<view class="more-content" @click="selectAccount()">
|
||
<view class="more-content-left">
|
||
<template v-if="use_account.extract_type == 0">
|
||
<view class="type-icon" :style="[{backgroundColor: '#FE960F'}]">
|
||
<view class="iconfont bankicon icon-yinhangqia"></view>
|
||
</view>
|
||
<text>银行卡</text>
|
||
</template>
|
||
<template v-else-if="use_account.extract_type == 1">
|
||
<view class="type-icon" :style="[{backgroundColor: '#41B035'}]">
|
||
<view class="iconfont bankicon icon-weixin2"></view>
|
||
</view>
|
||
<text>微信</text>
|
||
</template>
|
||
<template v-else-if="use_account.extract_type == 2">
|
||
<view class="type-icon" :style="[{backgroundColor: '#00A9F2'}]">
|
||
<view class="iconfont bankicon icon-icon34"></view>
|
||
</view>
|
||
<text>支付宝</text>
|
||
</template>
|
||
<template v-else-if="use_account.extract_type == 3">
|
||
<view class="type-icon" :style="[{backgroundColor: '#41B035'}]">
|
||
<view class="iconfont bankicon icon-weixin2"></view>
|
||
</view>
|
||
<text>微信零钱</text>
|
||
</template>
|
||
<template v-else="use_account.extract_type == 3">
|
||
<text>请选择提现账号</text>
|
||
</template>
|
||
</view>
|
||
<view class="moreicon">
|
||
<view class='iconfont icon-jiantou'></view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!--账号信息 提现金额-->
|
||
<view class='wrapper' v-if="use_account">
|
||
<view class='list bank-list'>
|
||
<form @submit="subCash" report-submit='true'>
|
||
<!-- 提现账号信息 -->
|
||
<template v-if="use_account.extract_type == 0">
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>账户类型</view>
|
||
<view class='input'>{{ use_account.bank_type == 1 ? '企业账户' : '个人账户'}}</view>
|
||
</view>
|
||
<template v-if="use_account.bank_type == 0">
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>持卡人</view>
|
||
<view class='input'>{{ use_account.real_name }}</view>
|
||
</view>
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>卡号</view>
|
||
<view class='input'>{{ use_account.bank_code }}</view>
|
||
</view>
|
||
<view class='item acea-row row-between-wrapper' v-if="use_account.bank_name">
|
||
<view class='name'>银行</view>
|
||
<view class='input'>{{ use_account.bank_name }}</view>
|
||
</view>
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>支行信息</view>
|
||
<view class='input'>{{ use_account.bank_address }}</view>
|
||
</view>
|
||
</template>
|
||
<template v-if="use_account.bank_type == 1">
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>开户名称</view>
|
||
<view class='input'>{{ use_account.real_name }}</view>
|
||
</view>
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>开户行</view>
|
||
<view class='input'>{{ use_account.bank_address }}</view>
|
||
</view>
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>账号</view>
|
||
<view class='input'>{{ use_account.bank_code }}</view>
|
||
</view>
|
||
</template>
|
||
</template>
|
||
<template v-if="use_account.extract_type == 1">
|
||
<view v-if="!sys_extension_type" class="">
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>账号</view>
|
||
<view class='input'>{{ use_account.wechat }}</view>
|
||
</view>
|
||
<view class='item acea-row row-between-wrapper uploadItem'>
|
||
<view class='name'>收款码</view>
|
||
<view class='input upload acea-row row-middle'>
|
||
<view class='picture' v-if="use_account.extract_pic">
|
||
<image :src='use_account.extract_pic'></image>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view v-else class="auto_arrival">
|
||
<!--微信零钱-->
|
||
</view>
|
||
</template>
|
||
<template v-if="use_account.extract_type == 2">
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>账号</view>
|
||
<view class='input'>{{ use_account.alipay_code }}</view>
|
||
</view>
|
||
<view class='item acea-row row-between-wrapper uploadItem'>
|
||
<view class='name'>收款码</view>
|
||
<view class='input upload acea-row row-middle'>
|
||
<view class='picture' v-if="use_account.extract_pic">
|
||
<image :src='use_account.extract_pic'></image>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<!--公共内容-->
|
||
<view class='item acea-row row-between-wrapper'>
|
||
<view class='name'>提现</view>
|
||
<view class='input'>
|
||
<input :placeholder='"最低提现金额"+minPrice' name="extract_price" type='digit' v-model="extract_price" :max="userInfo.brokerage_price" />
|
||
</view>
|
||
</view>
|
||
<view class='tip mt25'>
|
||
当前可提现金额:<text class="price">¥{{userInfo.brokerage_price}},</text>
|
||
<text v-if="Number(userInfo.lock_brokerage)">冻结佣金:¥{{userInfo.lock_brokerage}}</text>
|
||
</view>
|
||
<view class='tip' v-if="Number(userInfo.broken_day) > 0">
|
||
说明: 每笔佣金的冻结期为{{userInfo.broken_day}}天,到期后可提现
|
||
</view>
|
||
<view class='tip mt25' v-if="Number(withdraw_commission) > 0">
|
||
提现手续费为: <text class="price">{{ withdraw_commission.toFixed(2) }}%</text>
|
||
</view>
|
||
<view class='tip mt25' v-if="Number(extract_price) > 0">
|
||
实际到账:<text class="price">{{ (extract_price - (extract_price * withdraw_commission / 100)).toFixed(2) }}</text>;
|
||
手续费: <text class="price">{{ (extract_price * withdraw_commission / 100).toFixed(2) }}</text>
|
||
</view>
|
||
<!-- 提现提交按钮 -->
|
||
<view class="btn-submit">
|
||
<button formType="submit" :disabled="load" class='bnt b-color' :class="load ? 'disabled' : ''" >提现</button>
|
||
</view>
|
||
</form>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authClose"></authorize>
|
||
<!--提现账号列表-->
|
||
<account-list ref="accountList" @use="useAccount"></account-list>
|
||
|
||
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {extractCash, spreadInfo } from '@/api/user.js';
|
||
import { mapGetters } from "vuex";
|
||
import authorize from '@/components/Authorize';
|
||
import { configMap } from '@/utils';
|
||
import accountList from './account_list';
|
||
|
||
export default {
|
||
components: {
|
||
authorize,
|
||
accountList
|
||
},
|
||
data() {
|
||
return {
|
||
use_account: {},// 使用的账号
|
||
userInfo: [],
|
||
isAuto: false, //没有授权的不会自动授权
|
||
isShowAuth: false, //是否隐藏授权
|
||
extract_price: '',
|
||
minPrice: 0.00, //最低提现金额
|
||
load: false,
|
||
withdraw_commission: 0,// 手续费比例
|
||
};
|
||
},
|
||
computed: {
|
||
...mapGetters(['isLogin','uid','viewColor']),
|
||
... configMap(['sys_extension_type', 'withdraw_type'])
|
||
},
|
||
onLoad(options) {
|
||
// 判断:是否登录
|
||
if (!this.isLogin) {
|
||
// 未登录 授权登录
|
||
this.isAuto = true;
|
||
this.isShowAuth = true
|
||
}else{
|
||
// 已登录 获取信息
|
||
this.init();
|
||
}
|
||
},
|
||
methods: {
|
||
// 授权回调
|
||
onLoadFun() {
|
||
if(this.isLogin){
|
||
this.isShowAuth = false;
|
||
this.init();
|
||
}
|
||
},
|
||
// 授权关闭
|
||
authClose(e) {
|
||
this.isShowAuth = e
|
||
},
|
||
// 授权成功 初始化
|
||
init () {
|
||
this.getUserInfo();
|
||
},
|
||
// 获取个人信息
|
||
getUserInfo() {
|
||
let that = this;
|
||
spreadInfo().then(res => {
|
||
that.userInfo = res.data;
|
||
that.withdraw_commission = res.data.withdraw_commission || 0;
|
||
that.minPrice = res.data.user_extract_min;
|
||
});
|
||
},
|
||
// 选择提现账号
|
||
selectAccount() {
|
||
this.$refs.accountList.accountStatusChange();
|
||
},
|
||
// 确认使用账号
|
||
useAccount(item){
|
||
this.$set(this, 'use_account', item);
|
||
},
|
||
// 提交申请
|
||
subCash(e) {
|
||
let that = this, value = e.detail.value, account = Object.assign({}, this.use_account);
|
||
// 判断:是否选择账号
|
||
if(Object.values(account).length <= 0){
|
||
that.$util.Tips({title: '请选择账号'});
|
||
return false;
|
||
}
|
||
// 信息合并
|
||
account.extract_price = value.extract_price || 0;
|
||
if(that.load) return;
|
||
if (account.extract_type == 0) {
|
||
//银行卡
|
||
if (account.real_name.length == 0) return this.$util.Tips({title: '请填写持卡人姓名'});
|
||
if (account.bank_code.length == 0) return this.$util.Tips({title: '请填写卡号'});
|
||
}
|
||
else if (account.extract_type == 1) {
|
||
//微信
|
||
if(!this.sys_extension_type){
|
||
if (account.wechat.length == 0) return this.$util.Tips({title: '请填写微信号'});
|
||
if (account.extract_pic.length == 0) return this.$util.Tips({title: '请上传收款码'});
|
||
}
|
||
}
|
||
else if (account.extract_type == 2) {
|
||
//支付宝
|
||
if (account.alipay_code.length == 0) return this.$util.Tips({title: '请填写账号'});
|
||
if (account.extract_pic.length == 0) return this.$util.Tips({title: '请上传收款码'});
|
||
}
|
||
if (account.extract_price.length == 0) return this.$util.Tips({title: '请填写提现金额'});
|
||
if (Number(account.extract_price) < that.minPrice) return this.$util.Tips({title: '提现金额不能低于' + that.minPrice});
|
||
that.load = true;
|
||
if(that.sys_extension_type && account.extract_type == 1){
|
||
account = {
|
||
extract_price: value.extract_price,
|
||
extract_type: 3
|
||
}
|
||
}
|
||
// 提交申请
|
||
extractCash(account).then(res => {
|
||
that.getUserInfo();
|
||
that.load = false;
|
||
uni.showModal({
|
||
title: '提示',
|
||
content: res.message,
|
||
success: function (res) {
|
||
uni.navigateTo({
|
||
url: '/pages/users/user_spread_user/index'
|
||
});
|
||
}
|
||
});
|
||
}).catch(err => {
|
||
that.load = false;
|
||
return that.$util.Tips({title: err});
|
||
});
|
||
},
|
||
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.bank-list{
|
||
padding-top: 30rpx!important;
|
||
.bank-tabs{
|
||
display: inline-flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
flex-wrap: nowrap;
|
||
width: 100%;
|
||
background: #f9f9f9;
|
||
border-radius: 15rpx;
|
||
.bank-tab{
|
||
width: 50%;
|
||
text-align: center;
|
||
height: 80rpx;
|
||
line-height: 80rpx;
|
||
font-size: 28rpx;
|
||
font-weight: bold
|
||
}
|
||
.bank-tab-active{
|
||
position: relative;
|
||
}
|
||
.bank-tab-active{
|
||
color: #87171c;
|
||
}
|
||
.bank-tab-active:after{
|
||
content: "";
|
||
position: absolute;
|
||
bottom: 8rpx;
|
||
left: calc((100% - 100rpx) / 2 );
|
||
background: #87171c;
|
||
width: 100rpx;
|
||
height: 6rpx;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|
||
page {
|
||
background-color: #F5F5F5 !important;
|
||
}
|
||
.mt25 {
|
||
margin-top: 25rpx;
|
||
}
|
||
.cash-withdrawal .nav {
|
||
height: 130rpx;
|
||
padding: 0 30rpx;
|
||
font-size: 30rpx;
|
||
margin-bottom: 20rpx;
|
||
background-color: #fff;
|
||
}
|
||
.b-color {
|
||
background-color: var(--view-theme);
|
||
}
|
||
.cash-withdrawal .nav .input {
|
||
width: 505rpx;
|
||
|
||
.more-content {
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.more-content-left {
|
||
width: 90%;
|
||
|
||
.type-icon {
|
||
display: inline-block;
|
||
width: 56rpx;
|
||
height: 56rpx;
|
||
text-align: center;
|
||
line-height: 56rpx;
|
||
background-color: #FE960F;
|
||
margin-right: 20rpx;
|
||
border-radius: 50%;
|
||
|
||
.bankicon {
|
||
font-size: 36rpx;
|
||
color: #FFFFFF;
|
||
}
|
||
}
|
||
}
|
||
|
||
.moreicon {
|
||
width: 10%;
|
||
text-align: right;
|
||
}
|
||
}
|
||
}
|
||
.cash-withdrawal .nav .item {
|
||
font-size: 26rpx;
|
||
flex: 1;
|
||
text-align: center;
|
||
}
|
||
.cash-withdrawal .nav .item ~ .item {
|
||
border-left: 1px solid #f0f0f0;
|
||
}
|
||
.cash-withdrawal .nav .item .iconfont {
|
||
width: 40rpx;
|
||
height: 40rpx;
|
||
border-radius: 50%;
|
||
border: 2rpx solid #e93323;
|
||
text-align: center;
|
||
line-height: 37rpx;
|
||
margin: 0 auto 6rpx auto;
|
||
font-size: 22rpx;
|
||
box-sizing: border-box;
|
||
}
|
||
.cash-withdrawal .nav .item .iconfont.on {
|
||
background-color: #e93323;
|
||
color: #fff;
|
||
border-color: #e93323;
|
||
}
|
||
.cash-withdrawal .nav .item .line {
|
||
width: 2rpx;
|
||
height: 20rpx;
|
||
margin: 0 auto;
|
||
transition: height 0.3s;
|
||
}
|
||
.cash-withdrawal .nav .item .line.on {
|
||
height: 39rpx;
|
||
}
|
||
.cash-withdrawal .wrapper .list {
|
||
padding: 0 30rpx;
|
||
background-color: #fff;
|
||
}
|
||
.cash-withdrawal .wrapper .list .item {
|
||
border-bottom: 1px solid #eee;
|
||
height: 107rpx;
|
||
font-size: 30rpx;
|
||
color: #333;
|
||
|
||
&.uploadItem {
|
||
border-bottom: none;
|
||
height: auto;
|
||
|
||
.name {
|
||
height: 107rpx;;
|
||
}
|
||
}
|
||
}
|
||
.picture {
|
||
width: 70px;
|
||
height: 70px;
|
||
margin: 0 0 17px 0;
|
||
position: relative;
|
||
font-size: 11px;
|
||
color: #bbb;
|
||
border: 0.5px solid #ddd;
|
||
box-sizing: border-box;
|
||
margin-top: 40rpx;
|
||
|
||
uni-image, image {
|
||
width: 100%;
|
||
height: 100%;
|
||
border-radius: 1px;
|
||
}
|
||
|
||
.icon-guanbi1 {
|
||
font-size: 22px;
|
||
position: absolute;
|
||
top: -10px;
|
||
right: -10px;
|
||
color: #fc4141;
|
||
}
|
||
}
|
||
.cash-withdrawal .wrapper .list .item .name {
|
||
width: 130rpx;
|
||
}
|
||
.cash-withdrawal .wrapper .list .item .input {
|
||
width: 505rpx;
|
||
}
|
||
.cash-withdrawal .wrapper .list .item .input .placeholder {
|
||
color: #bbb;
|
||
}
|
||
.cash-withdrawal .placeholder1 {
|
||
font-size: 46rpx;
|
||
}
|
||
.cash-withdrawal .wrapper .list .tip {
|
||
font-size: 26rpx;
|
||
color: #999;
|
||
margin-bottom: 25rpx;
|
||
}
|
||
.cash-withdrawal .wrapper .list .btn-submit {
|
||
background-color: #F5F5F5;
|
||
margin: 0 -30rpx;
|
||
padding: 64rpx 30rpx;
|
||
}
|
||
.cash-withdrawal .wrapper .list .bnt {
|
||
font-size: 32rpx;
|
||
color: #fff;
|
||
width: 690rpx;
|
||
height: 90rpx;
|
||
text-align: center;
|
||
border-radius: 50rpx;
|
||
line-height: 90rpx;
|
||
|
||
/deep/ &.disabled {
|
||
background: #E3E3E3 !important;
|
||
pointer-events: none;
|
||
}
|
||
}
|
||
.cash-withdrawal .wrapper .list .tip2 {
|
||
font-size: 26rpx;
|
||
color: #999;
|
||
text-align: center;
|
||
margin: 44rpx 0 20rpx 0;
|
||
}
|
||
.cash-withdrawal .wrapper .list .value {
|
||
height: 135rpx;
|
||
line-height: 135rpx;
|
||
border-bottom: 1px solid #eee;
|
||
width: 690rpx;
|
||
margin: 0 auto;
|
||
}
|
||
.cash-withdrawal .wrapper .list .value input {
|
||
font-size: 80rpx;
|
||
color: #282828;
|
||
height: 135rpx;
|
||
text-align: center;
|
||
}
|
||
.cash-withdrawal .wrapper .list .value .placeholder2 {
|
||
color: #bbb;
|
||
}
|
||
.price {
|
||
color: var(--view-priceColor);
|
||
}
|
||
.Bank {
|
||
display: block;
|
||
width: 100%;
|
||
text-overflow: ellipsis;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
}
|
||
.auto_arrival {
|
||
text-align: center;
|
||
padding: 20rpx 0 0 0;
|
||
|
||
.input {
|
||
width: 100%;
|
||
border-bottom: 1px solid #eee;
|
||
margin-top: 10rpx;
|
||
color: #999;
|
||
height: 120rpx;
|
||
|
||
/deep/ uni-input, input {
|
||
height: 120rpx;
|
||
font-size: 40rpx;
|
||
}
|
||
}
|
||
}
|
||
uni-toast.uni-mask {
|
||
background-color: rgba(0, 0, 0, 0.5) !important;
|
||
}
|
||
</style>
|