mall_client/zyhs3_uniapp/pages/licai/mine/account/bindBank.vue

366 lines
9.9 KiB
Vue

<style lang="scss">
@import '@/static/scss/global.scss';
.form_wraper {
height: 100vh;
padding: 20rpx 30rpx;
}
</style>
<template>
<view class="form_wraper bg-w">
<u--form
labelPosition="left"
ref="form1"
labelWidth="100"
:model="formData"
:rules="rules"
>
<u-form-item
label="持卡人姓名"
borderBottom
prop="cardholderName"
>
<u--input
v-model="formData.cardholderName"
border="none"
placeholder="请输入持卡人姓名"
></u--input>
</u-form-item>
<u-form-item
label="持卡人证件号"
borderBottom
prop="cardholderCode"
>
<u--input
v-model="formData.cardholderCode"
border="none"
placeholder="请输入持卡人身份证号"
></u--input>
</u-form-item>
<u-form-item
label="手机号"
borderBottom
prop="cardholderPhone"
>
<u--input
v-model="formData.cardholderPhone"
border="none"
placeholder="请输入持卡人手机号"
></u--input>
</u-form-item>
<u-form-item
label="银行卡号"
borderBottom
prop="bankCardNumber"
>
<u--input
v-model="formData.bankCardNumber"
border="none"
type="number"
placeholder="请输入银行卡号"
@input="handlerInput"
v-if="!isLook"
></u--input>
<text v-else>{{formData.bankCardNumber}}</text>
</u-form-item>
<u-form-item
label="开户行"
borderBottom
@click="showBank = true"
prop="bankName"
>
<u--input
v-model="bankName"
border="none"
placeholder="请选择开户行"
disabled
disabledColor="#ffffff"
></u--input>
<u-icon
v-if="!isLook"
slot="right"
name="arrow-right"
></u-icon>
</u-form-item>
<u-form-item
label="省/市/区"
borderBottom
prop="province"
@click="!isLook && (regionVisible = true)"
>
<u--input
v-model="regionText"
border="none"
placeholder="请选择省/市/区"
disabled
disabledColor="#ffffff"
></u--input>
<u-icon
v-if="!isLook"
slot="right"
name="arrow-right"
></u-icon>
</u-form-item>
<u-form-item
label="乡/镇"
borderBottom
prop="town"
>
<u--input
v-model="formData.town"
border="none"
placeholder="请输入乡/镇"
></u--input>
</u-form-item>
<u-form-item
label="支行"
borderBottom
prop="bankSubBranch"
>
<u--input
v-model="formData.bankSubBranch"
border="none"
placeholder="请输入支行名称"
></u--input>
</u-form-item>
</u--form>
<u-gap height="140rpx"></u-gap>
<u-button v-if="!pageType" @click="handlerBind" type="primary" :text="!isLook ? '绑定银行卡':''"></u-button>
<view class="flex" v-else>
<u-button @click="handlerBack" type="primary" text="返回列表"></u-button>
<u-button style="margin-left: 20rpx;" @click="handlerBind" type="primary" text="解绑"></u-button>
</view>
<u-action-sheet
:show="showBank"
:actions="bankList"
title="请选择开户行"
@close="showBank = false"
@select="handlerBank"
>
</u-action-sheet>
<w-picker
:visible.sync="regionVisible"
ref="regionPicker"
mode="region"
:value="positionValue"
@confirm="onRegionConfirm"
themeColor="#3a2397"
></w-picker>
<u-toast ref="uToast"></u-toast>
</view>
</template>
<script>
let reg = /^([1-9]{1})(\d{15}|\d{16}|\d{18})$/;
import { getBankName, bindBank, getCardDetail, ubbindCard } from '@/api/system/user.js'
import { regIdCard, regPhone, regBank,regIdCardTaiWan,regIdCardAoMen,regIdCardHongKong } from '@/utils/regular.js';
import wPicker from "@/components/w-picker/w-picker.vue"
export default {
components: { wPicker },
data() {
return {
// formData: {
// cardholderName: '1',
// cardholderCode: '411425202202222666',
// cardholderPhone: '15666666666',
// bankCardNumber: '6227002500610735078',
// bankName: '5',
// bankSubBranch: '1',
// },
formData: {
cardholderName: '',
cardholderCode: '',
cardholderPhone: '',
bankCardNumber: '',
bankName: '',
province: '',
city: '',
district: '',
town: '',
bankSubBranch: '',
},
rules: {
cardholderName: [
{ required: true, message: '请输入持卡人姓名', trigger: ['blur','change'] }
],
cardholderCode: [
{ required: true, message: '请输入持卡人身份证号', trigger: ['blur','change'] },
{ validator: (rule, value, callback) => {
if (!value) return callback(new Error('请输入持卡人身份证号'))
if (regIdCard.test(value) || regIdCardTaiWan.test(value) || regIdCardAoMen.test(value) || regIdCardHongKong.test(value)) return callback()
return callback(new Error('请输入正确的身份证号'))
}, trigger: ['blur','change'] }
],
cardholderPhone: [
{ required: true, message: '请输入持卡手机号', trigger: ['blur','change'] },
{ pattern: regPhone, message: '请输入正确的手机号', trigger: ['blur','change'] }
],
bankCardNumber: [
{ required: true, message: '请输入银行卡号', trigger: ['blur','change'] },
{ pattern: /^([1-9]{1})(\d{15}|\d{16}|\d{18})$/, message: '请输入正确银行卡号', trigger: ['blur','change'] }
],
bankName: [
{ required: true, message: '请选择开户行', trigger: ['change'] }
],
province: [
{ required: true, message: '请输入省份', trigger: ['blur','change'] }
],
city: [
{ required: true, message: '请输入城市', trigger: ['blur','change'] }
],
district: [
{ required: true, message: '请输入区县', trigger: ['blur','change'] }
],
town: [
{ required: true, message: '请输入乡/镇', trigger: ['blur','change'] }
],
bankSubBranch: [
{ required: true, message: '请输入支行名称', trigger: ['blur','change'] }
]
},
bankList: [],
bankName: '',
showBank: false,
regionVisible: false,
regionText: "",
positionValue: [],
isLook: false,
detail: {},
pageType: ''
};
},
onLoad(e) {
if (e.use == '2') {
this.formData.use = e.use
}
this.pageType = e.type;
console.log('this.pagType', e);
if (e.type == 'detail') {
uni.setNavigationBarTitle({
title: '银行卡详情'
})
}
if (e.params) {
this.isLook = true
this.detail = JSON.parse(e.params)
this.detail.bankCardNumber = this.detail.bankCardNumber.replace(/\s/g,'').replace(/(\d{4})(?=\d)/g, "$1 ")
this.formData = this.detail;
this.formData.province = this.formData.province || ''
this.formData.city = this.formData.city || ''
this.formData.district = this.formData.district || ''
this.formData.town = this.formData.town || ''
this.regionText = `${this.formData.province}${this.formData.city}${this.formData.district}`.trim()
this.positionValue = (this.formData.province && this.formData.city && this.formData.district)
? [this.formData.province, this.formData.city, this.formData.district]
: []
this.bankName = this.detail.bankLabel
console.log('this.detail',this.detail.bankLabel)
}
this.getBankName();
},
onShow() {
this.formData.bankName = uni.getStorageSync('licaiBank') || '';
// this.bankName = uni.getStorageSync('licaiBank') || '';
uni.removeStorageSync('licaiBank')
},
methods: {
onRegionConfirm(e) {
this.regionText = e.result || ""
this.formData.province = e?.obj?.province?.label || ""
this.formData.city = e?.obj?.city?.label || ""
this.formData.district = e?.obj?.area?.label || ""
this.positionValue = (this.formData.province && this.formData.city && this.formData.district)
? [this.formData.province, this.formData.city, this.formData.district]
: []
if (this.$refs.form1 && this.$refs.form1.validateField) {
this.$refs.form1.validateField('province')
this.$refs.form1.validateField('city')
this.$refs.form1.validateField('district')
}
},
handlerBack () {
uni.navigateBack()
},
goPage () {
uni.navigateTo({
url: '/pages/user/bankList?enterType=licai'
})
},
getCardDetail () {
this.bankList.forEach((item) => {
console.log(this.detail.bankName)
if (this.detail.bankName == item.dictValue) {
console.log(this.detail.dictCode)
this.bankName = item.dictLabel
}
})
// getCardDetail(7)
},
async ubbindCard () {
console.log(this.detail.id);
uni.showLoading({
mask: true
})
let res = await ubbindCard(this.detail.id)
let { code } = res
uni.hideLoading()
if (code == 200) {
this.$toast('解绑成功', () => {
uni.navigateBack()
});
}
},
async handlerBind () {
if (this.pageType) {
uni.showModal({
title: '提示',
content: '确定解绑该银行卡吗?',
cancelColor: '取消',
confirmColor: '确定',
success: (res) => {
if (res.confirm) this.ubbindCard();
}
})
return;
}
this.$refs.form1.validate().then(async () => {
let res = await bindBank(this.formData);
if (res.code == 200) this.$toast('绑定成功', () => {
uni.navigateBack()
});
}).catch(() => {})
},
handlerInput (e) {
console.log(e)
// 6227002500610735078
if (!reg.test(e)) return;
},
handlerBank (e) {
console.log(e)
this.formData.bankName = e.dictValue;
this.bankName = e.dictLabel
if (this.$refs.form1 && this.$refs.form1.validateField) {
this.$refs.form1.validateField('bankName')
}
},
async getBankName () {
let res = await getBankName();
let { code, data } = res
if (code == 200) {
data.forEach((item) => {
item.name = item.dictLabel
})
this.bankList = data
if (this.isLook) {
this.getCardDetail();
}
}
console.log(res)
}
}
}
</script>