web-retail-h5/pages/pay/bindBank.vue

279 lines
7.1 KiB
Vue
Raw Permalink Normal View History

2025-03-23 09:29:40 +08:00
<!--
* @Descripttion:
* @version:
* @Author: kBank
* @Date: 2022-11-21 15:11:22
-->
<template>
<view class="content">
<view class="index_header">
</view>
<view class="contxt">
<view class="kuang">
<u-form :model="form"
labelWidth="auto"
:rules="rules"
ref="uForm">
<u-form-item :label="$t('MY_WAL_24')"
required
prop="bankNo">
<u-input v-model="form.bankNo"
:placeholder="$t('w_0188')" />
</u-form-item>
<u-form-item :label="$t('PER_DA_14')"
required
prop="name">
<u-input v-model="form.name"
:placeholder="$t('w_0300')" />
</u-form-item>
<u-form-item :label="$t('ENU_I_T_1')"
required
prop="idCard">
<u-input v-model="form.idCard"
:placeholder="$t('w_0190')" />
</u-form-item>
<u-form-item :label="$t('w_0180')"
required
prop="phone">
<u-input v-model="form.phone"
maxlength="20"
type="number"
:placeholder="$t('w_0341')" />
</u-form-item>
<u-form-item label="有效期">
<u-input v-model="form.validdate"
:placeholder="$t('S_C_70')" />
</u-form-item>
<u-form-item label="安全码">
<u-input v-model="form.cvv2"
:placeholder="$t('S_C_70')" />
</u-form-item>
<u-form-item :label="$t('w_0043')"
required
prop="smsCode">
<u-input v-model="form.smsCode"
:placeholder="$t('w_0057')">
<template slot="suffix">
<view class="getCode"
@tap="submitForm">{{ getCode }}</view>
</template>
</u-input>
</u-form-item>
</u-form>
<div class="tips" v-if="bank=='hf'">
<p>1目前汇付支付支持绑定信用卡储蓄卡</p>
<p>2当绑定信用卡时安全码有效期两栏为必填项</p>
<p>3安全码为信用卡背面签名栏后3位数字</p>
<p>4信用卡有效期格式不加/例信用卡有效期10/24请输入1024</p>
</div>
<u-button type="success"
class="uBtn"
shape="circle"
color="linear-gradient(to right, #fb3024, #fb3024 )"
:loading="isLoading"
:loadingText="$t('w_0342')"
@click="toBind">{{ $t('w_0343') }}</u-button>
</view>
</view>
</view>
</template>
<script>
import * as pay from '@/config/pay.js'
export default {
data() {
return {
form: {
bankNo: '',
},
isLoading: false,
getCode: this.$t('w_0055'),
isSend: false,
beginTime: 60,
bankCode: '',
timer: '',
bank: '',
rules: {
bankNo: [
{
required: true,
message: this.$t('w_0188'),
trigger: ['change', 'blur'],
},
],
idCard: [
{
required: true,
message: this.$t('w_0190'),
trigger: ['change', 'blur'],
},
],
phone: [
{
required: true,
message: this.$t('w_0053'),
trigger: ['change', 'blur'],
},
],
name: [
{
required: true,
message: this.$t('w_0300'),
trigger: ['change', 'blur'],
},
],
},
}
},
onLoad(options) {
this.bank = options.bank
// this.getInfo()
},
onShow() {},
methods: {
toBind() {
if (!this.bankCode) {
uni.showToast({
title: this.$t('w_0057'),
icon: 'none',
duration: 1500,
})
return
}
let url = ''
if (this.bank == 'tl') {
url = pay.bindTlConfirm
} else if (this.bank == 'jd') {
url = pay.bindJdConfirm
} else if (this.bank == 'hf') {
url = pay.bindHfConfirm
}
url({
bindCode: this.bankCode,
smsCode: this.form.smsCode,
}).then((res) => {
if (res.code == 200) {
uni.showToast({
title: this.$t('w_0344'),
icon: 'none',
duration: 1500,
})
setTimeout(() => {
uni.navigateBack()
}, 1500)
}
})
},
areBothValuesSet(val1, val2) {
return (
((val1 === null || val1 === undefined || val1 === '') &&
(val2 === null || val2 === undefined || val2 === '')) ||
(val1 !== null &&
val1 !== undefined &&
val1 !== '' &&
val2 !== null &&
val2 !== undefined &&
val2 !== '')
)
},
// 绑卡获取验证码
submitForm() {
this.$refs.uForm.validate().then((res) => {
if (!this.areBothValuesSet(this.form.validdate, this.form.cvv2)) {
uni.showToast({
title: '请输入安全码及有效期',
icon: 'none',
duration: 1500,
})
return
}
for (let key in this.form) {
if (this.form[key] == '') {
delete this.form[key]
}
}
this.startTime()
let url = ''
if (this.bank == 'tl') {
url = pay.bindTl
} else if (this.bank == 'jd') {
url = pay.bindJd
} else if (this.bank == 'hf') {
url = pay.bindHf
}
url(this.form)
.then((res) => {
if(res.code == 200){
this.bankCode = res.data
}else{
this.beginTime = 0
}
})
})
},
// 倒计时
startTime() {
if (this.isSend) return
this.isSend = true
this.getCode = this.beginTime + ' s'
let that = this
this.timer = setInterval(() => {
this.beginTime--
this.getCode = this.beginTime + ' s'
if (this.beginTime < 0) {
clearInterval(this.timer)
this.getCode = this.$t('w_0055')
this.beginTime = 60
this.isSend = false
}
}, 1000)
},
},
}
</script>
<style lang="scss" scoped>
.content {
background: #f9f9f9;
}
.index_header {
background: #f9f9f9;
height: 330rpx;
}
.contxt {
margin-top: -320rpx;
padding: 0 26rpx;
}
.kuang {
// margin-top: 20rpx;
padding: 20rpx;
height: 90vh;
background: #fff;
box-shadow: 0px 2px 10px 0px rgba(204, 204, 204, 0.5);
border-radius: 10px 10px 10px 10px;
}
.getCode {
font-size: 10px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #18acff;
}
::v-deep .u-form-item__body__left {
margin-left: 20rpx;
}
::v-deep .u-form-item__body__right__message {
margin-left: 80px !important;
}
.uBtn {
margin-top: 120rpx;
}
.tips{
font-size: 12px;
p{
// line-height: 10px;
}
color: #d5251d;
}
</style>