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

327 lines
8.8 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"
>
<u-form-item
label="持卡人姓名"
borderBottom
>
<u--input
v-model="formData.cardholderName"
border="none"
placeholder="请输入持卡人姓名"
></u--input>
</u-form-item>
<u-form-item
label="持卡人证件号"
borderBottom
>
<u--input
v-model="formData.cardholderCode"
border="none"
placeholder="请输入持卡人身份证号"
></u--input>
</u-form-item>
<u-form-item
label="手机号"
borderBottom
>
<u--input
v-model="formData.cardholderPhone"
border="none"
placeholder="请输入持卡人手机号"
></u--input>
</u-form-item>
<u-form-item
label="银行卡号"
borderBottom
>
<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"
>
<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
@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
>
<u--input
v-model="formData.town"
border="none"
placeholder="请输入乡/镇"
></u--input>
</u-form-item>
<u-form-item
label="支行"
borderBottom
>
<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})$/;
let code = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
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: '',
},
bankList: [],
bankName: '',
showBank: false,
regionVisible: false,
regionText: "",
positionValue: [],
isLook: false,
detail: {},
pageType: ''
};
},
onLoad(e) {
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('chiliBank') || '';
// this.bankName = uni.getStorageSync('chiliBank') || '';
uni.removeStorageSync('chiliBank')
},
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]
: []
},
handlerBack () {
uni.navigateBack()
},
goPage () {
uni.navigateTo({
url: '/pages/user/bankList?enterType=chili'
})
},
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;
}
let { formData } = this.$data;
if (!formData.cardholderName) return this.$toast('请输入持卡人姓名');
// if (!formData.cardholderCode) return this.$toast('请输入持卡人身份证号');
if (formData.cardholderCode) {
if (regIdCard.test(formData.cardholderCode) || regIdCardTaiWan.test(formData.cardholderCode) || regIdCardAoMen.test(formData.cardholderCode) || regIdCardHongKong.test(formData.cardholderCode)) {
console.log("验证通过")
}else{
return this.$toast("请输入正确的身份证号")
}
}else{
return this.$toast('请输入持卡人身份证号');
}
// if (!code.test(formData.cardholderCode)) return this.$toast("请输入正确的证件号");
if (!formData.cardholderPhone) return this.$toast('请输入持卡手机号');
if (!formData.bankCardNumber) return this.$toast('请输入银行卡号');
if (!reg.test(formData.bankCardNumber)) return this.$toast('请输入正确银行卡号');
if (!formData.bankName) return this.$toast('请选择开户行');
if (!formData.province || !formData.city || !formData.district) return this.$toast('请选择省/市/区');
if (!formData.town) return this.$toast('请输入乡/镇');
if (!formData.bankSubBranch) return this.$toast('请输入支行名称');
let res = await bindBank(formData);
if (res.code == 200) this.$toast('绑定成功', () => {
uni.navigateBack()
});
},
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
},
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>