529 lines
11 KiB
Vue
529 lines
11 KiB
Vue
<template>
|
||
<view class="page">
|
||
<u-navbar title="账户明细" :border-bottom="false" :background="bgc" title-color='#000' title-size='36' height='45'
|
||
back-icon-color='#000'></u-navbar>
|
||
|
||
<view class="account_box">
|
||
<view class="li_box">
|
||
<view class="txt">
|
||
账户总余额
|
||
</view>
|
||
<view class="num">
|
||
{{info.balance}}元
|
||
</view>
|
||
</view>
|
||
<view class="li_box">
|
||
<view class="txt">
|
||
待结算金额
|
||
</view>
|
||
<view class="num">
|
||
{{info.settlementAmount}}元
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
<view class="ipt_box">
|
||
<view class="ipt">
|
||
<u-input v-model="amount" :border="border" placeholder='请输入提现金额'
|
||
placeholder-style="font-size: 32rpx;color: #A6A6A6;" @input="ckinpt()" />
|
||
</view>
|
||
|
||
<view class="txt" style="margin-left: auto;margin-right: 20rpx;">
|
||
元
|
||
</view>
|
||
</view>
|
||
<view class="" style="margin: 0 auto;
|
||
margin-top: 38rpx;
|
||
width: 676rpx;color: #ccc;" >
|
||
可提现金额:{{info.withdrawableAmount}}元
|
||
</view>
|
||
<view class="info_card">
|
||
<view class="info_li">
|
||
<view class="text">提现金额:{{price}}元</view>
|
||
<view class="txt">
|
||
|
||
</view>
|
||
</view>
|
||
|
||
<view class="info_li">
|
||
<view class="text">实际到账:{{realprice}}元</view>
|
||
<!-- <view class="txt" @click="showtip=!showtip">
|
||
查看明细 <u-icon name="arrow-down" v-show="showtip"></u-icon> <u-icon name="arrow-up" v-show="showtip==false"></u-icon>
|
||
</view> -->
|
||
</view>
|
||
<view class="info_li">
|
||
<view class="text">提现手续费:{{Quantity}}元</view>
|
||
<!-- <view class="txt">
|
||
(单价{{eleprice}}元/度)
|
||
</view> -->
|
||
</view>
|
||
<view class="tip" v-if="showtip">
|
||
<view class="tip_txt">
|
||
手续费:{{xsf}}
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
<view class="patBtn" @click="payBtn()">
|
||
立即提现
|
||
</view>
|
||
<view class="licot">
|
||
<view class="li_box" v-for="(item,index) in list" :key="index">
|
||
<view class="box_top">
|
||
<view class="top_left">
|
||
{{status(item.busType)}}
|
||
</view>
|
||
<view class="top_right" v-if="item.type==1">
|
||
+{{item.operatorDividend}}
|
||
</view>
|
||
<view class="top_right" v-if="item.type==2" style="color: #3D3D3D;">
|
||
{{item.operatorDividend}}
|
||
</view>
|
||
</view>
|
||
<view class="box_bot">
|
||
<view class="bot_left">
|
||
{{formatDate(item.createTime)}}
|
||
</view>
|
||
<view class="bot_right">
|
||
余额{{item.operatorBalance}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
bgc: {
|
||
backgroundColor: "#fff",
|
||
},
|
||
showtip: false,
|
||
areaId: null,
|
||
amount: '',
|
||
list: [],
|
||
pageNum: 1,
|
||
pageSize: 25,
|
||
info: {},
|
||
price: 0,
|
||
realprice: 0,
|
||
Quantity: 0,
|
||
border: false,
|
||
isThrottled: false,
|
||
moneyInfo:{},
|
||
ownerInfo:{}
|
||
}
|
||
},
|
||
onLoad(e) {
|
||
|
||
|
||
},
|
||
onShow() {
|
||
if (uni.getStorageSync('adminAreaid')) {
|
||
this.areaId = uni.getStorageSync('adminAreaid')
|
||
|
||
this.getowner()
|
||
}
|
||
this.getareaInfo()
|
||
},
|
||
onReachBottom() {
|
||
// 触底时增加 pageNum 并调用 getlist 获取更多数据
|
||
this.pageNum++;
|
||
this.getlist();
|
||
},
|
||
methods: {
|
||
getowner(){
|
||
this.$u.get('/appVerify/ownerType' ).then((res) => {
|
||
if (res.code == 200) {
|
||
this.ownerInfo=res.data
|
||
console.log(this.ownerInfo,'ownerTypownerTypownerTypownerTyp');
|
||
this.getlist()
|
||
}
|
||
}).catch(error => {
|
||
console.error("Error fetching area data:", error);
|
||
});
|
||
},
|
||
ckinpt() {
|
||
|
||
if (parseFloat(this.amount) > parseFloat(this.info.withdrawableAmount)) {
|
||
|
||
uni.showToast({
|
||
title: '提现金额不能大于可提现金额',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
this.amount = ''
|
||
}
|
||
const floatValue = parseFloat(this.amount);
|
||
const decimalPart = this.amount.split('.')[1];
|
||
if (decimalPart && decimalPart.length > 2) {
|
||
// 如果小数点后三位之后存在值,则截取小数点后三位之前的部分
|
||
uni.showToast({
|
||
title: '金额只能精确到小数点后两位',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
this.amount = floatValue.toFixed(2).slice(0, -1);
|
||
}
|
||
|
||
// 调用 checkPrice() 方法
|
||
this.checkPrice();
|
||
},
|
||
checkPrice() {
|
||
if (this.amount != '') {
|
||
this.price = parseFloat(this.amount);
|
||
} else {
|
||
this.price = 0.00
|
||
}
|
||
|
||
|
||
let abb = this.amount * (parseFloat(this.info.handlingCharge) / 1000)
|
||
this.Quantity = abb.toFixed(2)
|
||
let aaa = this.amount - this.Quantity
|
||
this.realprice = aaa.toFixed(2)
|
||
},
|
||
status(type) {
|
||
if (type == 1) {
|
||
return '骑行订单'
|
||
} else if (type == 2) {
|
||
return '押金订单'
|
||
} else if (type == 3) {
|
||
return '押金订单退款'
|
||
} else if (type == 4) {
|
||
return '骑行订单退款'
|
||
} else if (type == 5) {
|
||
return '提现'
|
||
} else if (type == 6) {
|
||
return '提现失败'
|
||
} else if (type == 7) {
|
||
return '车损收入'
|
||
}else if (type == 8) {
|
||
return '短信扣费'
|
||
}
|
||
|
||
},
|
||
formatDate(value) {
|
||
if (!value) return '';
|
||
let date = new Date(value);
|
||
let month = date.getMonth() + 1; // 月份从0开始计数,所以加1
|
||
let day = date.getDate();
|
||
let hours = date.getHours();
|
||
let minutes = date.getMinutes();
|
||
|
||
// 确保月份、日期、小时和分钟都是两位数
|
||
month = month < 10 ? '0' + month : month;
|
||
day = day < 10 ? '0' + day : day;
|
||
hours = hours < 10 ? '0' + hours : hours;
|
||
minutes = minutes < 10 ? '0' + minutes : minutes;
|
||
|
||
return `${month}-${day} ${hours}:${minutes}`;
|
||
},
|
||
payBtn() {
|
||
if (this.realprice != 0) {
|
||
// 检查是否已经在等待三秒的时间内
|
||
if (this.isThrottled) {
|
||
uni.showToast({
|
||
title: '请勿重复点击',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
return;
|
||
}
|
||
|
||
// 设置节流标志位
|
||
this.isThrottled = true;
|
||
|
||
if (parseFloat(this.realprice) > parseFloat(this.info.withdrawableAmount)) {
|
||
|
||
uni.showToast({
|
||
title: '提现金额不能大于可提现金额',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
|
||
}
|
||
let data = {
|
||
amount: this.realprice,
|
||
areaId: this.areaId
|
||
}
|
||
this.$u.post('/appVerify/admin/withdraw', data).then((res) => {
|
||
if (res.code == 200) {
|
||
this.amount = ''
|
||
this.Quantity = 0
|
||
this.realprice = 0
|
||
this.price = 0
|
||
this.list = []
|
||
this.pageNum = 1
|
||
this.getareaInfo()
|
||
this.getlist()
|
||
uni.showToast({
|
||
title: '提现成功',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: res.msg,
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
}
|
||
}).catch(error => {
|
||
console.error("Error fetching area data:", error);
|
||
}).finally(() => {
|
||
// 三秒后解除节流
|
||
setTimeout(() => {
|
||
this.isThrottled = false;
|
||
}, 3000);
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: '提现金额不能为0',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
}
|
||
|
||
},
|
||
getareaInfo() {
|
||
let data = {
|
||
areaId: this.areaId
|
||
}
|
||
this.$u.get('/appVerify/getDept?', data).then((res) => {
|
||
if (res.code == 200) {
|
||
this.info = res.data
|
||
}
|
||
}).catch(error => {
|
||
console.error("Error fetching area data:", error);
|
||
});
|
||
this.$u.get('index/statistics?', data).then((res) => {
|
||
if (res.code == 200) {
|
||
this.moneyInfo = res.data
|
||
|
||
}
|
||
}).catch(error => {
|
||
console.error("Error fetching area data:", error);
|
||
});
|
||
},
|
||
getlist() {
|
||
let data = {
|
||
pageNum: this.pageNum,
|
||
pageSize: this.pageSize,
|
||
ownerId: this.ownerInfo.ownerId,
|
||
ownerType: this.ownerInfo.ownerType,
|
||
|
||
};
|
||
if( this.ownerInfo.ownerId==1){
|
||
data.areaId=this.areaId
|
||
}
|
||
this.$u.get('/appVerify/flowList?', data).then((res) => {
|
||
if (res.code == 200) {
|
||
// 确保合并新获取的数据
|
||
this.list = this.list.concat(res.rows);
|
||
}
|
||
}).catch(error => {
|
||
console.error("Error fetching area data:", error);
|
||
});
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
<style lang="scss">
|
||
page {
|
||
background-color: #F7FAFE;
|
||
}
|
||
|
||
.page {
|
||
|
||
// width: 750rpx;
|
||
.licot {
|
||
margin-top: 38rpx;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
width: 100%;
|
||
|
||
.li_box {
|
||
|
||
padding: 38rpx 28rpx;
|
||
width: 100%;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
border-bottom: #ccc 2rpx solid;
|
||
background: #FFFFFF;
|
||
|
||
.box_top {
|
||
width: 100%;
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
justify-content: space-between;
|
||
|
||
.top_left {
|
||
font-weight: 400;
|
||
font-size: 32rpx;
|
||
color: #3D3D3D;
|
||
}
|
||
|
||
.top_right {
|
||
font-weight: 400;
|
||
font-size: 32rpx;
|
||
color: #12D2AC;
|
||
}
|
||
}
|
||
|
||
.box_bot {
|
||
margin-top: 12rpx;
|
||
width: 100%;
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
justify-content: space-between;
|
||
|
||
.bot_left {
|
||
font-weight: 400;
|
||
font-size: 28rpx;
|
||
color: #909090;
|
||
}
|
||
|
||
.bot_right {
|
||
font-weight: 400;
|
||
font-size: 28rpx;
|
||
color: #909090;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
.account_box {
|
||
padding: 38rpx;
|
||
margin: 0 auto;
|
||
margin-top: 38rpx;
|
||
width: 676rpx;
|
||
height: 196rpx;
|
||
background: #12D2AC;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
.li_box{
|
||
.txt {
|
||
width: 100%;
|
||
font-weight: 400;
|
||
font-size: 32rpx;
|
||
color: #FFFFFF;
|
||
}
|
||
|
||
.num {
|
||
margin-top: 10rpx;
|
||
width: 100%;
|
||
font-weight: 400;
|
||
font-size: 48rpx;
|
||
color: #FFFFFF;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
.patBtn {
|
||
margin: 0 auto;
|
||
margin-top: 38rpx;
|
||
// position: fixed;
|
||
// bottom: 100rpx;
|
||
// left: 80rpx;
|
||
// margin-top: 152rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 590rpx;
|
||
height: 84rpx;
|
||
background: #12D2AC;
|
||
border-radius: 50rpx;
|
||
font-weight: 400;
|
||
font-size: 36rpx;
|
||
color: #FFFFFF
|
||
}
|
||
|
||
.info_card {
|
||
margin: 0 auto;
|
||
margin-top: 38rpx;
|
||
// margin-top: 46rpx;
|
||
padding: 20rpx 28rpx 40rpx 36rpx;
|
||
width: 676rpx;
|
||
// height: 266rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx;
|
||
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
|
||
.info_li {
|
||
margin-top: 30rpx;
|
||
width: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
|
||
.text {
|
||
font-weight: 400;
|
||
font-size: 28rpx;
|
||
color: #383838;
|
||
}
|
||
|
||
.txt {
|
||
font-weight: 400;
|
||
font-size: 20rpx;
|
||
color: #383838;
|
||
}
|
||
}
|
||
|
||
.tip {
|
||
padding-top: 15rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
width: 576rpx;
|
||
height: 70rpx;
|
||
background-image: url('https://api.ccttiot.com/smartmeter/img/static/uGcjoIs6xOPFWN6mJT8l');
|
||
background-size: 100% 100%;
|
||
background-repeat: no-repeat;
|
||
|
||
.tip_txt {
|
||
|
||
margin-left: 38rpx;
|
||
font-weight: 400;
|
||
font-size: 20rpx;
|
||
color: #3D3D3D;
|
||
}
|
||
}
|
||
}
|
||
|
||
.ipt_box {
|
||
margin: 0 auto;
|
||
margin-top: 50rpx;
|
||
width: 676rpx;
|
||
height: 122rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx;
|
||
margin-top: 40rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
font-weight: 400;
|
||
font-size: 32rpx;
|
||
color: #A6A6A6;
|
||
|
||
.ipt {
|
||
margin-left: 20rpx;
|
||
margin-right: 10rpx;
|
||
|
||
/deep/.u-input__input {
|
||
font-size: 32rpx !important;
|
||
color: #A6A6A6 !important;
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
</style> |