This commit is contained in:
2025-03-21 09:38:06 +08:00
parent 8e35b74d86
commit f654e16c18
94 changed files with 22503 additions and 0 deletions
+343
View File
@@ -0,0 +1,343 @@
<template>
<view class="ithui-content">
<view class="withdraw">
<view class="withdraw-head">
<view class="withdraw-head-to">到账渠道</view>
<view class="withdraw-head-way">
<view class="withdraw-head-way-1">
<image class="way-icon" src="/static/money.png"></image>
<text class="way-text">微信零钱</text>
</view>
<view class="withdraw-head-way-2">仅支持整数,72小时内到账</view>
</view>
</view>
<view class="withdraw-body">
<text>提现金额</text>
<view class="input-money">
<text class="rmb">¥</text>
<input v-model.number="extract" type="text" @focus.prevent="stopKeyborad" class="t-input" />
</view>
<view class="info-money">
<view v-if="is_out">
<text class="info-money-num" style="color: #ff1e0f;">输入金额超过可提现余额,账户余额{{ pool }}元</text>
</view>
<view v-else-if="is_lowest">
<text class="info-money-num" style="color: #ff1e0f;">最低{{ lowest }}元起提现,账户余额{{ pool }}元</text>
</view>
<view v-else>
<text class="info-money-num">当前可提现余额{{ pool }}元,</text>
<text class="info-money-all" @click="getAll">全部提现</text>
</view>
</view>
<view :class="'tx' + (is_post ? '-active' : '')"><button @click="handleShowModel">提现</button></view>
</view>
<view :class="['keyboard', keyboradShow ? '' : 'active', isIphoneX ? 'isIphone' : '']">
<block v-for="(item, index) in 9" :key="index">
<view class="keyboard-item" @tap="keyboradKey(index + 1)">{{ index + 1 }}</view>
</block>
<view class="keyboard-item hide"></view>
<view class="keyboard-item" @tap="keyboradKey(0)"><text>0</text></view>
<view class="keyboard-item delte" @tap="keyboradDel()">
<image class="img" src="/static/del.png" mode="aspectFill" :lazy-load="true"></image>
</view>
</view>
<u-modal :show="showModal" title="提现确认" showCancelButton cancelText="我再想想" confirmColor="#ff1e0f"
confirmText="确认提现" @confirm="getMoney" @cancel="showModal = false">
<view class="slot-content">
<rich-text :nodes="content"></rich-text>
</view>
</u-modal>
</view>
</view>
</template>
<script>
export default {
data() {
return {
pool: 0,
extract: '',
service_fee: 0.0,
showModal: false,
is_out: false,
is_lowest: false,
is_post: false,
lowest: 0,
fee: 0,
money: '',
real_money: '',
keyboradShow: false,
isIphoneX: false,
isRefuse: false,
content: ""
};
},
watch: {
extract(oldVal, newVal) {}
},
onLoad() {
uni.showLoading({
title: '加载中'
});
// this.initData();
setTimeout(() => {
uni.hideLoading();
}, 500);
},
methods: {
async initData() {
// const res = await this.$api.mock('pool');
this.lowest = res.least_money;
this.fee = res.fee;
this.pool = res.pool;
this.$nextTick(() => {
this.keyboradShow = true;
});
},
stopKeyborad() {
uni.hideKeyboard();
},
keyboradKey(key) {
this.extract = this.extract * 10 + key;
this.checkMoney();
},
keyboradDel() {
if (this.extract && this.extract > 0) {
let val = parseInt(this.extract / 10);
if (val == 0) val = '';
this.extract = val;
this.checkMoney();
}
},
getAll() {
this.extract = parseInt(this.pool);
this.checkMoney();
},
checkMoney() {
if (!this.extract || this.extract < this.lowest) {
this.is_lowest = true;
this.is_post = false;
} else if (this.extract > this.pool) {
this.is_out = true;
this.is_lowest = false;
this.is_post = false;
} else {
this.is_out = false;
this.is_lowest = false;
this.is_post = true;
}
if (parseFloat(this.extract).toString() == 'NaN') {
this.is_post = false;
this.$api.msg('输入金额不合法');
}
},
handleShowModel() {
if (this.isRefuse) return;
this.checkMoney();
if (!this.is_post) return;
this.money = this.extract;
this.service_fee = Number((this.extract * (this.fee / 100)).toString().match(/^\d+(?:\.\d{0,2})?/));
this.real_money = Number((this.extract - this.service_fee).toString().match(/^\d+(?:\.\d{0,2})?/));
this.content = `<p>提现金额:<em style="font-style:normal;color:#ff1e0f">${this.money} 元</p>
<p>实际到账:<em style="font-style:normal;color:#ff1e0f">${this.real_money} 元</em></p>
<p>服务费用:<em style="font-style:normal;color:#ff1e0f">${this.service_fee} 元</em></p>
<p>服务费率:<em style="font-style:normal;color:#ff1e0f">${this.fee}%</em></p>
`
this.showModal = true;
},
getMoney() {
this.showModal = false;
if (this.isRefuse) return;
this.isRefuse = true;
setTimeout(() => {
uni.showToast({
title: "提现申请已提交,等待审核",
mask: false,
icon: 'none'
});
}, 500);
setTimeout(() => {
uni.navigateBack();
}, 1000);
}
},
onPullDownRefresh() {
this.extract = '';
// this.initData();
this.is_out = false;
this.is_lowest = false;
this.is_post = false;
setTimeout(function() {
uni.stopPullDownRefresh();
}, 500);
}
};
</script>
<style>
page {
background-color: #ededed;
}
</style>
<style lang="scss" scoped>
::v-deep .u-modal__content {
justify-content: flex-start;
}
.ithui {
&-content {
.withdraw {
padding: 40rpx;
&-head {
background-color: #f7f7f7;
display: flex;
align-content: center;
padding: 40rpx 60rpx;
font-size: 28rpx;
&-to {}
&-way {
display: flex;
flex-direction: column;
align-content: center;
margin-left: 40rpx;
&-1 {
color: #576b95;
margin-bottom: 20rpx;
.way-icon {
width: 36rpx;
height: 36rpx;
margin-right: 10rpx;
top: 4rpx;
}
}
&-2 {
color: #acacac;
font-size: 26rpx;
}
}
}
&-body {
background-color: #fff;
padding: 40rpx 60rpx;
font-size: 28rpx;
.input-money {
display: flex;
align-content: center;
font-weight: 600;
border-bottom: 1rpx solid #eaeef1;
.rmb {
font-size: 2em;
top: 20rpx;
position: relative;
}
.t-input {
height: 1.9em;
font-size: 2.5em;
border: none;
position: relative;
left: 3.5%;
outline: none;
}
}
.info-money {
margin-top: 20rpx;
font-size: 24rpx;
margin-bottom: 40rpx;
&-num {
color: #b2b2b2;
}
&-all {
color: #576b95;
}
}
.tx {
button {
color: #b2b2b2;
}
}
.tx-active {
button {
color: #fff;
background: #07c160;
}
}
}
.keyboard {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background: #ebebeb;
display: flex;
justify-content: center;
z-index: 2;
flex-wrap: wrap;
transition: all 0.2s ease-in 0.2s;
}
.active {
bottom: -400rpx;
}
.keyboard-item {
box-sizing: border-box;
width: 250rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background: #fff;
font-size: 40rpx;
color: #333;
height: 99rpx;
border: 1rpx solid #ebebeb;
border-top: none;
border-left: none;
}
.hide {
opacity: 0;
}
.delte {
background: none;
box-shadow: none;
}
.delte image {
width: 60rpx;
height: 60rpx;
}
.isIphone {
padding-bottom: 68rpx !important;
}
.fee {
em {
font-size: 0.5rem;
font-style: normal;
}
}
}
}
}
</style>