多租户商城-商户小程序端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

303 lines
7.6 KiB

<template>
<view class="container flex-center flex-column">
<view class="addressBack-box">
<view class="consignee-box bor-line-F7F7F7">
<input type="number" v-model="balance" maxlength="9" @input="applycheck" class="fs28" placeholder-class="consignee" placeholder="提现金额(元)" />
</view>
<view @click="bankTagClick" class="bankTag-box bor-line-F7F7F7 flex-row-plus flex-sp-between flex-items">
<view class="fs28 addressTag">{{$t('page.bankcard')}}</view>
<view>
<label v-model="cardNum">{{cardNum}}</label>
<image class="arrow mar-left-20" src="https://ceres.zkthink.com/static/img/user/arrow.png"></image>
</view>
</view>
<view class="apply-box">
<view class="apply-withdraw" @click="applyWithdraw">{{$t('common.applywithdraw')}}</view>
</view>
</view>
<view class="withdraw-history">
<view class="history-list">
<view class="history-head">
<label class="history-label fs30 font-color-333">{{$t('common.historyrecord')}}</label>
</view>
<view class="history-content" v-for="(item, index) in withdrawHistoryList" :key="index">
<view class="withdraw-detail flex-items flex-sp-between">
<view class="detail-top">
<view class="detail-bottom">
<label class="status fs28 font-color-333" v-if="item.state==0">{{$t('common.shz')}}</label>
<label class="status fs28 font-color-333" v-else-if="item.state==1">{{$t('common.agree')}}</label>
<label class="status fs28 font-color-333" v-else-if="item.state==2">{{$t('common.reject')}}</label>
</view>
<view>
<label class="cardnum fs24 font-color-999">{{$t('common.bankaccount')}}{{item.bankCard}}</label>
</view>
</view>
<view>
<label class="apply-balance">{{item.withdrawalMoney}}</label>
</view>
</view>
</view>
</view>
</view>
<!-- 弹窗 -->
<u-select v-model="bankTagShowFlag" mode="single-column" :title="$t('page.bankcard')" :list="bankcardselectList" @confirm="bankcardConfirm"></u-select>
<!-- <u-select v-model="bankTagShowFlag" :default-value="choosedValueList" mode="single-column" :list="list"
@confirm="bankcardConfirm" title="银行卡" value-name="id" label-name="cardNum"></u-select> -->
</view>
</template>
<script>
const NET = require('../../utils/request')
const API = require('../../config/api')
export default {
data() {
return {
balance: '',
cardNum: '',
bankcardId: 0,
bankName:'',
bankTagShowFlag: false,
choosedValueList: [0],
bankcardList: [],
withdrawHistoryList: [],
bankcardselectList:[{value:'',label:''}],
price:0
}
},
onLoad(options) {
this.initBankcardList()
this.getBalance()
},
onShow() {
},
methods: {
getBalance(){
const _ = this
NET.request(API.GetDistributor,{},"GET").then(res => {
_.price = res.data.price
_.withdrawHistoryList = res.data.withdrawals
}).catch(res => {
})
},
initBankcardList() {
this.bankcardselectList = []
NET.request(API.QueryBankcardList, {
page: 1,
pageSize:100
}, 'GET').then(res => {
this.bankcardList = res.data
for(let i=0;i<this.bankcardList.total;i++){
this.bankcardselectList.push({value:this.bankcardList.list[i].bankName,label:this.bankcardList.list[i].bankCard})
}
}).catch(res => {
})
},
applycheck(e) {
//正则表达试
e.target.value = (e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
//重新赋值给input
this.$nextTick(() => {
this.balance= e.target.value
})
},
applyWithdraw() {
const _ = this
if (this.balance === '') {
uni.showToast({
title: "提现金额不能为空",
duration: 2000,
icon: 'none'
})
return
}else if (this.balance > this.price ) {
uni.showToast({
title: "余额不足,请重新输入申请金额",
duration: 2000,
icon: 'none'
})
return
} else if (parseFloat(this.balance) > 1000000) {
uni.showToast({
title: "提现金额不能超过1000000",
duration: 2000,
icon: 'none'
})
return
} else if(this.bankName == "" || this.bankName == null) {
uni.showToast({
title: '请选择银行卡',
duration: 2000,
icon: 'none'
})
return
}else{
NET.request(API.MemberAccountWithdraw, {
bankName: this.bankName,
bankCard: this.cardNum,
withdrawalMoney: this.balance
}, 'POST').then(res => {
uni.showToast({
title: '申请成功',
duration: 2000,
icon: 'none'
})
this.balance = ''
this.getBalance()
this.initBankcardList()
}).catch(res => {
if (res.data && res.data.code == 40001) {
uni.navigateTo({
url: 'login'
})
} else if (res.data) {
uni.showToast({
title: res.data.msg,
duration: 2000,
icon: 'none'
})
}
})
}
// else {
// let dotPos = this.balance.indexOf(".")
// let length = this.balance.length
// console.log(dotPos,222)
// console.log(length,333)
// if (length - dotPos > 3) {
// uni.showToast({
// title: "提现金额只能精确到小数点后两位",
// duration: 2000,
// icon: 'none'
// })
// return
// }
// }
},
bankTagClick() {
if(this.bankcardList.total > 0){
this.bankTagShowFlag = true
}else{
uni.showToast({
title: '你还没有添加银行卡~',
duration: 2000,
icon: 'none'
})
setTimeout(function(){
uni.navigateTo({
url:'addBankcard?withdraw=1'
})
},3000)
}
},
bankcardConfirm(e) {
this.cardNum = e[0].label
this.bankName = e[0].value
}
},
filters: {
parseMoney(money) {
return parseFloat(money/100).toFixed(2)
},
parseStatus(status) {
if(status == 0) {
return "审核中"
} else if (status == 1) {
return "已通过"
} else {
return "已拒绝"
}
}
}
}
</script>
<style lang="scss">
page {
background-color: #F8F8F8;
}
.container {
padding: 20rpx;
.addressBack-box {
background-color: #FFFFFF;
padding: 30upx 30upx;
.consignee-box {
padding-bottom: 36upx;
width: 690upx;
margin-top: 20upx;
.consignee {
color: #999999;
font-size: 28upx;
}
}
.apply-withdraw {
width: 100%;
height: 100upx;
line-height: 100upx;
color: #FFEBC4;
text-align: center;
background: #333333;
margin: 0 auto;
margin-top: 20rpx;
}
.bankTag-box {
margin-top: 19px;
padding-bottom: 19px;
.addressTag {
color: #999999
}
.arrow {
width: 16upx;
height: 24upx;
}
}
}
.withdraw-history {
margin-top: 14rpx;
.history-list {
background: white;
padding: 30rpx;
.history-label {
height: 92rpx;
line-height: 92rpx;
}
.history-content {
border-top: 2rpx solid #F3F4F5;
.withdraw-detail {
height: 150rpx;
.apply-balance {
width: 160rpx;
height: 58rpx;
line-height: 58rpx;
font-size: 24rpx;
background: #EEEEEE;
display: block;
text-align: center;
color: #999999;
}
}
}
}
}
}
.content {
font-size: 35rpx;
width: 500rpx;
.btn {
margin-bottom: 20rpx;
width: 200rpx;
background-image: linear-gradient(135deg, #FFA100 10%, #FF7911 100%);
}
}
</style>