Merge branch 'lx-dev' of gitee.com:cabbage_qd/web-base-h5 into lx-test

This commit is contained in:
woody 2025-07-08 16:08:44 +08:00
commit ef4cd4b206
4 changed files with 641 additions and 375 deletions

View File

@ -0,0 +1,156 @@
<template>
<u-modal
:show="show"
:showConfirmButton="true"
:showCancelButton="false"
confirmText="我知道了"
@confirm="handleConfirm"
:closeOnClickOverlay="false"
width="640rpx"
:customStyle="{ 'border-radius': '16rpx' }"
>
<view class="withdrawal-guide-content">
<view class="guide-title">提现绑定操作指南</view>
<view class="guide-text">
<text>尊敬的经销商伙伴们</text>
<text
>为了让大家顺利快捷地提现符合法律法规的要求现需完成提现绑定操作步骤如下按序操作即可</text
>
</view>
<view class="guide-steps">
<view class="step-item">
<text class="step-number">1.</text>
<text class="step-text"
>微信扫码后用实际收款人本人手机号登录</text
>
</view>
<view class="step-item">
<text class="step-number">2.</text>
<text class="step-text"
>点击 "继续签约"上传本人身份证照片完成实名认证</text
>
</view>
<view class="step-item">
<text class="step-number">3.</text>
<text class="step-text"
>进入合同页面选择 "默认印章"输入收到的验证码完成签约</text
>
</view>
<view class="step-item">
<text class="step-number">4.</text>
<text class="step-text"
>返回首页点击 "提现"若显示 "开户"下拉刷新页面即可</text
>
</view>
<view class="step-item">
<text class="step-number">5.</text>
<text class="step-text"
>进入绑卡页面完成银行卡绑定后即可操作提现</text
>
</view>
</view>
<view class="guide-footer">
<text>请大家尽快办理有疑问可随时联系我们感谢配合</text>
</view>
<view class="qr-code-section">
<image
class="qr-code-image"
src="/static/images/with-drawal-mini-code.png"
mode="aspectFit"
/>
</view>
</view>
</u-modal>
</template>
<script>
export default {
name: 'WithdrawalGuide',
props: {
show: {
type: Boolean,
default: false,
},
},
methods: {
handleConfirm() {
this.$emit('confirm')
},
},
}
</script>
<style lang="scss" scoped>
.withdrawal-guide-content {
padding: 0rpx 32rpx 32rpx;
.guide-title {
font-size: 32rpx;
font-weight: bold;
color: #333333;
text-align: center;
margin-bottom: 32rpx;
}
.guide-text {
font-size: 26rpx;
color: #666666;
line-height: 40rpx;
margin-bottom: 24rpx;
text {
display: block;
margin-bottom: 16rpx;
&:last-child {
margin-bottom: 0;
}
}
}
.guide-steps {
margin-bottom: 24rpx;
.step-item {
display: flex;
align-items: flex-start;
margin-bottom: 16rpx;
.step-number {
color: #005bac;
font-size: 26rpx;
font-weight: bold;
width: 32rpx;
flex-shrink: 0;
}
.step-text {
font-size: 26rpx;
color: #666666;
line-height: 40rpx;
flex: 1;
}
}
}
.guide-footer {
font-size: 26rpx;
color: #666666;
line-height: 40rpx;
margin-bottom: 32rpx;
text-align: center;
}
.qr-code-section {
display: flex;
justify-content: center;
align-items: center;
.qr-code-image {
width: 200rpx;
height: 200rpx;
border-radius: 8rpx;
}
}
}
</style>

View File

@ -1,125 +1,210 @@
<template> <template>
<view class="content"> <view class="content">
<view class="theform"> <view class="theform">
<u--form labelPosition="left" :model="dataForm" :rules="rules" ref="uForm"> <u--form
<u-form-item label-width="200rpx" :label="'银行卡号'" prop="cardNumber" borderBottom ref="item1"> labelPosition="left"
<u--input v-if="bankData.cardNumber" v-model="bankData.cardNumber" disabled disabledColor="#F5F5F5;" :model="dataForm"
border="none"></u--input> :rules="rules"
<view v-else style="color:red" @click="goBindbank"> ref="uForm"
{{'请先绑定银行卡'}} >
<!-- <u-form-item
label-width="200rpx"
:label="'银行卡号'"
prop="cardNumber"
borderBottom
ref="item1"
>
<u--input
v-if="bankData.cardNumber"
v-model="bankData.cardNumber"
disabled
disabledColor="#F5F5F5;"
border="none"
></u--input>
<view v-else style="color: red" @click="goBindbank">
{{ '请先绑定银行卡' }}
</view> </view>
</u-form-item> -->
<u-form-item
label-width="200rpx"
:label="`${'提现金额'}(${isLocaled()})`"
prop="cashAmount"
borderBottom
ref="item1"
>
<u--input
type="number"
v-model="dataForm.cashAmount"
:placeholder="'请输入'"
border="none"
></u--input>
</u-form-item> </u-form-item>
<u-form-item label-width="200rpx" :label="`${'提现金额'}(${isLocaled()})`" prop="cashAmount" <u-form-item
borderBottom ref="item1"> label-width="200rpx"
<u--input type='number' v-model="dataForm.cashAmount" :placeholder="'请输入'" :label="'二级密码'"
border="none"></u--input> prop="payPwd"
</u-form-item> borderBottom
<u-form-item label-width="200rpx" :label="'二级密码'" prop="payPwd" borderBottom ref="item1"> ref="item1"
>
<template v-if="!ifeye"> <template v-if="!ifeye">
<u--input type='password' v-model="dataForm.payPwd" :placeholder="'请输入'" <u--input
border="none"></u--input> type="password"
<image @click="ifeye=!ifeye" slot="right" style="width: 38rpx; v-model="dataForm.payPwd"
height: 25rpx;" src="../../../static/images/my_eye.png" mode=""></image> :placeholder="'请输入'"
border="none"
></u--input>
<image
@click="ifeye = !ifeye"
slot="right"
style="width: 38rpx; height: 25rpx"
src="../../../static/images/my_eye.png"
mode=""
></image>
</template> </template>
<template v-if="ifeye"> <template v-if="ifeye">
<u--input v-model="dataForm.payPwd" :placeholder="'请输入'" border="none"></u--input> <u--input
<image @click="ifeye=!ifeye" slot="right" style="width: 38rpx; v-model="dataForm.payPwd"
height: 30rpx;" src="../../../static/images/my_eye2.png" mode=""></image> :placeholder="'请输入'"
border="none"
></u--input>
<image
@click="ifeye = !ifeye"
slot="right"
style="width: 38rpx; height: 30rpx"
src="../../../static/images/my_eye2.png"
mode=""
></image>
</template> </template>
</u-form-item> </u-form-item>
<u-form-item label-width="200rpx" :label="'备注'" prop="remarks" borderBottom ref="item1"> <u-form-item
label-width="200rpx"
:label="'备注'"
prop="remarks"
borderBottom
ref="item1"
>
<u--input v-model="dataForm.remarks" border="none"></u--input> <u--input v-model="dataForm.remarks" border="none"></u--input>
</u-form-item> </u-form-item>
<u-form-item label-width="200rpx" :label="'提现账户'" prop="pkAccountName" <u-form-item
@click="showAmount = true; " ref="item1"> label-width="200rpx"
<u--input v-model="dataForm.pkAccountName" disabled disabledColor="#ffffff" :label="'提现账户'"
:placeholder="'请选择'" border="none"></u--input> prop="pkAccountName"
@click="showAmount = true"
ref="item1"
>
<u--input
v-model="dataForm.pkAccountName"
disabled
disabledColor="#ffffff"
:placeholder="'请选择'"
border="none"
></u--input>
<u-icon slot="right" name="arrow-right"></u-icon> <u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item> </u-form-item>
<u-picker @cancel='showAmount=false' :show="showAmount" ref="uPicker" :columns="pkBdAccountList" <u-picker
@confirm="confirm" keyName='accountName'></u-picker> @cancel="showAmount = false"
:show="showAmount"
ref="uPicker"
:columns="pkBdAccountList"
@confirm="confirm"
keyName="accountName"
></u-picker>
</u--form> </u--form>
<view class="contentbox"> <view class="contentbox">
<view class="linebox"> <view class="linebox">
<view>{{'可提现金额'}}()</view> <view>{{ '可提现金额' }}()</view>
<view>{{widthDrwaData.amount||'0.00'}}</view> <view>{{ widthDrwaData.amount || '0.00' }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view>{{'账户余额'}}()</view> <view>{{ '账户余额' }}()</view>
<view>{{widthDrwaData.balance||'0.00'}}</view> <view>{{ widthDrwaData.balance || '0.00' }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view>{{'提现手续费'}}</view> <view>{{ '提现手续费' }}</view>
<view>{{widthDrwaData.srviceCharge||'0.00'}}</view> <view>{{ widthDrwaData.srviceCharge || '0.00' }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view>{{'最低提现额度'}}()</view> <view>{{ '最低提现额度' }}()</view>
<view>{{widthDrwaData.minAmount||'0.00'}}</view> <view>{{ widthDrwaData.minAmount || '0.00' }}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="btnbox"> <view class="btnbox">
<u-button :disabled="canbind" class="subbtn" @click="submit">{{'提现'}}</u-button> <u-button :disabled="canbind" class="subbtn" @click="submit">{{
'提现'
}}</u-button>
</view> </view>
<u-toast ref="uToast"></u-toast> <u-toast ref="uToast"></u-toast>
<!-- 提现引导弹窗 -->
<WithdrawalGuide
:show="showWithdrawalGuide"
@confirm="onWithdrawalGuideConfirm"
/>
</view> </view>
</template> </template>
<script> <script>
import * as bal from "@/config/balance.js" import * as bal from '@/config/balance.js'
import { import { isLocaled } from '@/util/numberToCurrency'
isLocaled import WithdrawalGuide from '@/components/withdrawalGuide/index.vue'
} from '@/util/numberToCurrency'
export default { export default {
components: {
WithdrawalGuide,
},
data() { data() {
return { return {
showAmount: false, showAmount: false,
dataForm: { dataForm: {
cardNumber: "", cardNumber: '',
cashAmount: "", cashAmount: '',
payPwd: "", payPwd: '',
remarks: "", remarks: '',
pkAccountName: "", pkAccountName: '',
pkAccount: "", pkAccount: '',
pkBank: "" pkBank: '',
}, },
pkBdAccountList: [], pkBdAccountList: [],
rules: { rules: {
cashAmount: [{ cashAmount: [
{
type: 'string', type: 'string',
required: true, required: true,
message: '请输入', message: '请输入',
trigger: ['blur', 'change'] trigger: ['blur', 'change'],
}], },
payPwd: [{ ],
payPwd: [
{
type: 'string', type: 'string',
required: true, required: true,
message: '请输入', message: '请输入',
trigger: ['blur', 'change'] trigger: ['blur', 'change'],
}], },
pkAccountName: [{ ],
pkAccountName: [
{
required: true, required: true,
message: '请选择', message: '请选择',
trigger: ['change'] trigger: ['change'],
}], },
],
}, },
bankData: {}, bankData: {},
widthDrwaData: {}, widthDrwaData: {},
ifeye: false, ifeye: false,
canbind:false canbind: false,
showWithdrawalGuide: false,
} }
}, },
watch: { watch: {
'dataForm.cashAmount': 'checkAccount' 'dataForm.cashAmount': 'checkAccount',
}, },
onNavigationBarButtonTap() { onNavigationBarButtonTap() {
uni.navigateTo({ uni.navigateTo({
url:'/pages/mine/balance/withdrawlDetail' url: '/pages/mine/balance/withdrawlDetail',
}) })
}, },
onLoad() { onLoad() {
@ -128,30 +213,31 @@
methods: { methods: {
isLocaled, isLocaled,
// //
goBindbank(){ goBindbank() {
uni.navigateTo({ uni.navigateTo({
url:'/pages/mine/bindBank/bindBank' url: '/pages/mine/bindBank/bindBank',
}) })
}, },
getList() { getList() {
bal.getPkBdAccountList({ bal
accountProperty: 3 .getPkBdAccountList({
}).then(res => { accountProperty: 3,
})
.then(res => {
res.data.forEach(ele => { res.data.forEach(ele => {
ele.name = ele.accountName ele.name = ele.accountName
}) })
this.pkBdAccountList = [res.data] this.pkBdAccountList = [res.data]
if(this.pkBdAccountList.length>0){ if (this.pkBdAccountList.length > 0) {
this.dataForm.pkAccountName = res.data[0].accountName this.dataForm.pkAccountName = res.data[0].accountName
this.dataForm.pkAccount = res.data[0].pkId this.dataForm.pkAccount = res.data[0].pkId
} }
}) })
bal.getDefaultBank().then((res) => { bal.getDefaultBank().then(res => {
this.bankData = res.data; this.bankData = res.data
this.dataForm.pkBank = res.data.pkId; this.dataForm.pkBank = res.data.pkId
}); })
// //
bal.checkIsbindBank().then(res => { bal.checkIsbindBank().then(res => {
if (res.flag == 'Y') { if (res.flag == 'Y') {
@ -160,34 +246,33 @@
this.canbind = true this.canbind = true
} }
}) })
}, },
submit() { submit() {
this.$refs.uForm.validate().then(res => { this.$refs.uForm
.validate()
.then(res => {
bal.addWithdraw(this.dataForm).then(res => { bal.addWithdraw(this.dataForm).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.$refs.uToast.show({ this.$refs.uToast.show({
message: res.msg, message: res.msg,
type: 'success' type: 'success',
}) })
//
setTimeout(() => { setTimeout(() => {
uni.navigateBack() this.showWithdrawalGuide = true
}, 1000); }, 300)
} }
}) })
})
.catch(errors => {
}).catch(errors => {
uni.$u.toast('校验失败') uni.$u.toast('校验失败')
}) })
}, },
confirm(e) { confirm(e) {
this.dataForm.pkAccountName = e.value[0].accountName this.dataForm.pkAccountName = e.value[0].accountName
this.dataForm.pkAccount = e.value[0].pkId this.dataForm.pkAccount = e.value[0].pkId
this.showAmount = false this.showAmount = false
this.checkAccount() this.checkAccount()
}, },
checkAccount() { checkAccount() {
if (!this.dataForm.cashAmount) { if (!this.dataForm.cashAmount) {
@ -197,24 +282,31 @@
uni.$u.toast('请先选择账户') uni.$u.toast('请先选择账户')
return return
} }
bal.getWidthdrawShow({ bal
.getWidthdrawShow({
pkAccount: this.dataForm.pkAccount, pkAccount: this.dataForm.pkAccount,
cashAmount: this.dataForm.cashAmount, cashAmount: this.dataForm.cashAmount,
}).then(res => { })
.then(res => {
this.widthDrwaData = res.data this.widthDrwaData = res.data
}) })
} },
} //
} onWithdrawalGuideConfirm() {
this.showWithdrawalGuide = false
uni.navigateBack()
},
},
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .content {
background: #F2F2F2; background: #f2f2f2;
.theform { .theform {
margin-top: 6rpx; margin-top: 6rpx;
background: #FFFFFF; background: #ffffff;
padding: 20rpx 23rpx 48rpx 23rpx; padding: 20rpx 23rpx 48rpx 23rpx;
.contentbox { .contentbox {
@ -234,7 +326,6 @@
margin-top: 8rpx; margin-top: 8rpx;
} }
} }
} }
.btnbox { .btnbox {
@ -242,15 +333,13 @@
padding: 0 20rpx; padding: 0 20rpx;
.subbtn { .subbtn {
background: #005BAC; background: #005bac;
border-radius: 46rpx; border-radius: 46rpx;
font-size: 30rpx; font-size: 30rpx;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 400; font-weight: 400;
color: #FFFFFF; color: #ffffff;
} }
} }
}
}
</style> </style>

View File

@ -1,79 +1,102 @@
<template> <template>
<view class="content"> <view class="content">
<view class="contentList" v-for="item,index in tableList" :key="index"> <view class="contentList" v-for="(item, index) in tableList" :key="index">
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'钱包类型'}}</view> <view class="line_title">{{ '钱包类型' }}</view>
<view class="line_content ">{{item.pkAccountVal}}</view> <view class="line_content">{{ item.pkAccountVal }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'提现金额'}}</view> <view class="line_title">{{ '提现金额' }}</view>
<view class="line_content">{{item.cashAmount| toThousandthAndKeepDecimal}}</view> <view class="line_content">{{
item.cashAmount | toThousandthAndKeepDecimal
}}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'手续费'}}</view> <view class="line_title">{{ '手续费' }}</view>
<view class="line_content">{{item.serviceCharge| toThousandthAndKeepDecimal}}</view> <view class="line_content">{{
item.serviceCharge | toThousandthAndKeepDecimal
}}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'个税'}}</view> <view class="line_title">{{ '个税' }}</view>
<view class="line_content">{{item.incomeTax| toThousandthAndKeepDecimal}}</view> <view class="line_content">{{
item.incomeTax | toThousandthAndKeepDecimal
}}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'实发金额'}}</view> <view class="line_title">{{ '实发金额' }}</view>
<view class="line_content">{{item.issuedAmount| toThousandthAndKeepDecimal}}</view> <view class="line_content">{{
item.issuedAmount | toThousandthAndKeepDecimal
}}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'银行名称'}}</view> <view class="line_title">{{ '银行名称' }}</view>
<view class="line_content">{{item.bankName}}</view> <view class="line_content">{{ item.bankName }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'银行账户'}}</view> <view class="line_title">{{ '银行账户' }}</view>
<view class="line_content">{{item.cardNumber}}</view> <view class="line_content">{{ item.cardNumber }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'开户姓名'}}</view> <view class="line_title">{{ '开户姓名' }}</view>
<view class="line_content">{{item.accountName}}</view> <view class="line_content">{{ item.accountName }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'审核状态'}}</view> <view class="line_title">{{ '审核状态' }}</view>
<view class="line_content">{{item.approveStateVal}}</view> <view class="line_content">{{ item.approveStateVal }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'申请日期'}}</view> <view class="line_title">{{ '申请日期' }}</view>
<view class="line_content">{{item.creationTime}}</view> <view class="line_content">{{ item.creationTime }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'备注'}}</view> <view class="line_title">{{ '备注' }}</view>
<view class="line_content">{{item.remarks}}</view> <view class="line_content">{{ item.remarks }}</view>
</view> </view>
<view class="linebox"> <view class="linebox">
<view class="line_title">{{'状态'}}</view> <view class="line_title">{{ '状态' }}</view>
<view class="line_content">{{item.statusVal}}</view> <view class="line_content">{{ item.statusVal }}</view>
</view>
<view v-if="item.approveState == 4" class="linebox">
<view class="line_title">驳回原因</view>
<view class="line_content">{{ item.approveRemarks }}</view>
</view> </view>
<view class="linebox" style="border-bottom: none;"> <view class="linebox" style="border-bottom: none">
<view class="line_title">{{'操作'}}</view> <view class="line_title">{{ '操作' }}</view>
<view class="line_content thesuccess" v-if="item.status==0&&item.approveState==1" @click="revoke(item)">{{'撤销'}}</view> <view
class="line_content thesuccess"
v-if="item.status == 0 && item.approveState == 1"
@click="revoke(item)"
>{{ '撤销' }}</view
>
</view> </view>
</view> </view>
<u-modal :show="revokeShow" showCancelButton @cancel="revokeShow = false" cancelText="取消" <u-modal
confirmText="确定" @confirm='confirmRevoke' :content='content'></u-modal> :show="revokeShow"
showCancelButton
@cancel="revokeShow = false"
cancelText="取消"
confirmText="确定"
@confirm="confirmRevoke"
:content="content"
></u-modal>
</view> </view>
</template> </template>
<script> <script>
import * as bal from "@/config/balance.js" import * as bal from '@/config/balance.js'
export default { export default {
data() { data() {
return { return {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 50, pageSize: 50,
}, },
tableList: [], tableList: [],
revokeShow: false, revokeShow: false,
content:'是否确认操作?', content: '是否确认操作?',
thepkId:"" thepkId: '',
} }
}, },
onLoad() { onLoad() {
@ -86,13 +109,13 @@
this.thepkId = row.pkId this.thepkId = row.pkId
this.revokeShow = true this.revokeShow = true
}, },
confirmRevoke(){ confirmRevoke() {
bal.cancelWithdraw({pkId:this.thepkId}).then(res=>{ bal.cancelWithdraw({ pkId: this.thepkId }).then(res => {
if(res.code==200){ if (res.code == 200) {
uni.showToast({ uni.showToast({
title: res.msg title: res.msg,
}) })
this.revokeShow=false this.revokeShow = false
this.getSearch() this.getSearch()
} }
}) })
@ -101,18 +124,18 @@
bal.getWithdrawList(this.queryParams).then(res => { bal.getWithdrawList(this.queryParams).then(res => {
this.tableList = res.rows this.tableList = res.rows
}) })
} },
} },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .u-popup__content { ::v-deep .u-popup__content {
overflow: auto; overflow: auto;
} }
.content { .content {
background: #F2F2F2; background: #f2f2f2;
padding: 10rpx 24rpx; padding: 10rpx 24rpx;
.contentList { .contentList {
@ -140,11 +163,9 @@
} }
.thesuccess { .thesuccess {
color: #005BAC; color: #005bac;
} }
} }
} }
}
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB