fourPayProject/51pay-uni/homePages/merchantsMerchant/debitCard.vue
2025-03-31 10:14:11 +08:00

554 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="content">
<u-overlay :show="overlayShow"></u-overlay>
<view class="container">
<headers :titles="titles"><uni-icons type="arrow-left" color="#fff" size="22px"></uni-icons></headers>
<view class="box_">
<view class="bs_img">
<view class="fifty">
<u-upload :fileList="fileList1" @afterRead="addInfoImg" @delete="deletePic" name="1" multiple
:maxCount="1" width="150" height="100">
<image src="/static/imgs/yhkzm.png" mode="widthFix" style="width: 150px;height: 100px;">
</image>
</u-upload>
<view class="" style="margin-top: 10px;">银行卡正面</view>
</view>
<view class="fifty">
<u-upload :fileList="fileList2" @afterRead="addInfoImg" @delete="deletePic" name="2" multiple
:maxCount="1" width="150" height="100">
<image src="/static/imgs/yhkfm.png" mode="widthFix" style="width: 150px;height: 100px;">
</image>
</u-upload>
<view class="" style="margin-top: 10px;">银行卡反面</view>
</view>
</view>
<view class="box_bs">
<view class="">法人储蓄卡号</view>
<view class="right_size">
<input type="text" v-model="formData.bankAccountNo" placeholder="请输入" />
</view>
</view>
<view class="box_bs">
<view class="">银行预留手机号</view>
<view class="right_size">
<input type="number" v-model="formData.settleMobile" placeholder="请输入" />
</view>
</view>
<view class="box_bs">
<view class="">持有人姓名</view>
<view class="right_size">
<input type="text" v-model="formData.settleAccName" placeholder="请输入" />
</view>
</view>
<view class="box_bs">
<view class="">银行名称</view>
<view class="dis_" @click="gobankList()">
<view class="size_" v-if="formData.issBankIdName">{{formData.issBankIdName}}</view>
<view class="size_" v-else>请选择</view>
<u-icon name="arrow-right" color="#ececec" size="18"></u-icon>
</view>
</view>
<view class="box_bs">
<view class="">开户行</view>
<view class="dis_" @click="selectKh()">
<view class="size_" v-if="formData.bankProvinceName">
{{formData.bankProvinceName+formData.bankCityName}}
</view>
<view class="size_" v-else>请选择</view>
<u-icon name="arrow-right" color="#ececec" size="18"></u-icon>
</view>
</view>
<view class="box_bs" v-if="formData.issBankIdName&&formData.bankCityName">
<view class=""></view>
<view class="dis_" @click="selectBranch()">
<view class="size_" v-if="formData.bankOutletsName">
{{formData.bankOutletsName}}
</view>
<view class="size_" v-else>请选择支行</view>
<u-icon name="arrow-right" color="#ececec" size="18"></u-icon>
</view>
</view>
<view class="box_bs">
<view class="">结算周期</view>
<view class="dis_" @click="selectSettle()">
<view v-if="!formData.settlementCycle" class="size_">请选择</view>
<view v-else class="size_">
{{this.formData.settlementCycleName}}
</view>
<u-icon name="arrow-right" color="#ececec" size="18"></u-icon>
</view>
</view>
<view class="box_bs" style="border: none;">
<view class="">签约期限</view>
<view class="dis_" v-if="this.formData.openAccEffectDate">
<view class="size_">{{this.formData.openAccEffectDate+'-'+this.formData.openAccExpDate}}</view>
</view>
</view>
<view class="right-box">(期满双方如无异议自动续签一年)</view>
</view>
<view class="button_p" @click="nextStep()">
<view class="">下一步</view>
</view>
<u-picker :show="pickData.show" :columns="pickData.columns" :title="pickData.title" keyName="label"
@confirm="confirm" @cancel="cancel" @close="cancel"></u-picker>
<level-linkage valueName="code" keyName="name" ref="selectKind" :pickerValueDefault="kindDefault"
@onConfirm="kindConfirm" themeColor='#007AFF'></level-linkage>
</view>
</view>
</template>
<script>
import headers from '../../components/header/headers.vue'
import request from '../../utils/request.js'
import upload from '@/utils/upload.js'
import levelLinkage from "@/components/three-level-linkage/linkage.nvue"
export default {
data() {
return {
titles: "结算卡信息录入",
msg: "1",
overlayShow: false,
dataList: [],
fileList1: [],
fileList2: [],
value1: '',
pickData: {
columns: [],
show: false,
pickType: null, //下部选择器类型certSelect 证件选择
title: ""
},
show: false,
status: 'loading',
select: '',
formData: {
areaType: "7", //商户类型 7 小微 写死
openAccEffectDate: "",
openAccExpDate: "",
legalPerson: {
address: "",
backPic: "",
backPicUrl: "",
certEffectDate: "",
certExaDate: "",
certNo: "",
certType: "11",
certTypeName: "身份证",
city: "",
cityName: "",
county: "",
countyName: "",
email: "",
facePic: "",
facePicUrl: "",
firstCareerName: "",
firstCareerNo: "",
gender: "1",
mobileNo: "",
nation: "CHN",
nationLabel: "中国",
participantName: "",
province: "",
provinceName: "",
secondCareerName: "",
secondCareerNo: "",
sort: 0,
thirdCareerName: "",
thirdCareerNo: ""
},
openAccount: "",
openAccountUrl: "",
rate: "0.25",
steps: "3" //步骤当前页面写死第一页
},
options: [{
value: "1",
label: "人民币"
}, {
value: "2",
label: "刀乐"
}, {
value: "3",
label: "英镑",
disabled: true
}],
merchantId: 1000022008,
kindDefault: [0, 0],
bankArea: []
}
},
onLoad(options) {
if (options && options.merchantId) {
this.merchantId = options.merchantId
}
this.getMerchantInfo()
this.getSettleCycles()
this.getBankArea()
let that = this
uni.$on("chooseBankZcy", function(data) {
that.chooseBankOk(data)
})
uni.$on("chooseBranchZcy", function(data) {
that.chooseBranchOk(data)
})
},
components: {
headers,
levelLinkage
},
methods: {
selectBranch() {
uni.navigateTo({
url: '/homePages/merchantsMerchant/bankBranchList?bankCode=' + this.formData.issBankId +
"&code=" + this.formData.bankCity
})
},
kindConfirm(data) {
// 银行地址选择
this.formData.bankProvinceName = data.firstPick.name
this.formData.bankProvince = data.firstPick.code
this.formData.bankCityName = data.secondPick.name
this.formData.bankCity = data.secondPick.code
},
async getBankArea() {
let res = await request({
url: 'app/drop/getBankArea',
method: 'get'
})
if (res.code == 0) {
this.bankArea = res.data
this.$refs.selectKind.init(res.data);
}
},
selectKh() {
this.$refs.selectKind.open();
},
chooseBranchOk(data) {
this.formData.bankOutletsName = data.bankBranchName
this.formData.bankOutlets = data.bankBranchCode
},
chooseBankOk(data) {
this.formData.issBankIdName = data.bankName
this.formData.issBankId = data.bankCode
this.formData.bankOutletsName = null
this.formData.bankOutlets = null
},
gobankList() {
uni.navigateTo({
url: '/homePages/merchantsMerchant/bankList'
})
},
// 性别点击取消
cancel() {
this.pickData.show = false
},
// 弹窗确认
confirm(e) {
this.pickData.show = false
this.formData.settlementCycle = e.value[0].value
this.formData.settlementCycleName = e.value[0].label
},
selectSettle() {
this.pickData.title = "请选择结算周期"
this.pickData.show = true
},
async getSettleCycles() {
this.pickData.columns = []
let tempData = await this.$getDictList('pos_merchant_settlement_cycle')
this.pickData.columns.push(tempData)
},
async getMerchantInfo() {
uni.showLoading({
title: '加载中'
});
this.overlayShow = true
let ress = await request({
url: 'app/report/newBaseInfo',
method: 'post',
data: {
objectId: this.merchantId
}
})
this.formData = ress.data
this.formData.settleAccType = '0010'
this.formData.steps = '3'
const date = new Date();
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
//签约有效期
this.formData.openAccEffectDate = year + month + day
this.formData.openAccExpDate = (year + 1) + month + day
//处理图片问题
if (this.formData.bankPhotoFrontUrl) {
this.fileList1 = []
let tempImg1 = {
url: this.formData.bankPhotoFrontUrl,
}
this.fileList1.push(tempImg1)
}
if (this.formData.bankPhotoBackUrl) {
this.fileList2 = []
let tempImg2 = {
url: this.formData.bankPhotoBackUrl
}
this.fileList2.push(tempImg2)
}
uni.hideLoading()
this.overlayShow = false
},
async uploadFile(url, fileName, type) {
uni.showLoading({
title: '上传中'
});
this.overlayShow = true
upload({
url: 'app/report/fileUplod',
filePath: url,
formData: {
type: 3,
fileName: fileName
}
}).then((res) => {
let that = this
if (res.code == 0) {
if (type == 1) {
this.formData.bankPhotoFront = res.data.externalKey
this.formData.bankPhotoFrontUrl = res.data.imgUrl
//银行卡正面
let bankCardData = JSON.parse(res.data.bankCardData)
if (bankCardData && bankCardData.code == '0' && bankCardData.data) {
//卡号
this.formData.bankAccountNo = bankCardData.data.cardNo
//处理code
request({
url: 'app/drop/getBankByName?bankName=' + bankCardData.data
.bankName,
method: 'get'
}).then((resss) => {
if (resss.code == 0) {
//银行名称
that.formData.issBankIdName = resss.data.bankName
that.formData.issBankId = resss.data.bankCode
this.formData.bankOutletsName = null
this.formData.bankOutlets = null
}
})
}
} else if (type == 2) {
//银行卡反面
this.formData.bankPhotoBack = res.data.externalKey
this.formData.bankPhotoBackUrl = res.data.imgUrl
}
}
}).finally((res) => {
this.overlayShow = false
uni.hideLoading();
})
},
deletePic(event) {
this[`fileList${event.name}`].splice(event.index, 1)
},
//银行卡信息
async addInfoImg(event) {
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
let lists = [].concat(event.file)
let fileListLen = this[`fileList${event.name}`].length
lists.map((item) => {
this[`fileList${event.name}`].push({
...item,
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFile(lists[i].url, lists[i].url.split('/').pop(), event.name)
let item = this[`fileList${event.name}`][fileListLen]
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}))
fileListLen++
}
},
change(e) {
console.log('select = ', this.select)
},
async nextStep() {
uni.showLoading({
title: '提交中'
});
this.overlayShow = true
let res = await request({
url: 'app/report/newBaseInfoSaveOrUpdate',
method: 'post',
data: this.formData
})
if (res.code == 0) {
uni.hideLoading()
this.overlayShow = false
uni.navigateTo({
url: '/homePages/merchantsMerchant/BusinessPhotos?merchantId=' + res
.merchantId
})
}
},
goback() {
uni.navigateBack()
}
}
}
</script>
<style scoped lang="scss">
.content {
background: #f4f5f6;
height: 100vh;
}
.container {
width: 100%;
background: #f4f5f6;
box-sizing: border-box;
padding-top: 88px;
padding-bottom: 88px;
}
.box_ {
width: 95%;
border-radius: 8px;
box-sizing: border-box;
padding: 10px;
background: #fff;
margin: 15px auto;
}
.box_bs {
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 10px 0px;
color: #aeaeae;
border-bottom: 1px solid #eeeeee;
}
.dis_ {
display: flex;
}
.size_ {
margin-right: 5px;
color: #000;
}
.title_ {
font-size: 18px;
font-weight: bold;
margin: 10px 0px;
margin-bottom: 20px;
}
.upload-box {
width: 100%;
margin: 5px 0px;
display: flex;
text-align: center;
justify-content: space-between;
margin-bottom: 20px;
}
.upload-title {
font-size: 16px;
margin-right: 10%;
}
.right_size {
text-align: right;
}
.input_color {
width: 100px;
display: flex;
align-items: center;
height: 36px;
border: 2px solid #efefef;
border-radius: 4px;
box-sizing: border-box;
padding: 5px;
margin-left: 10px;
}
.button_p {
width: 100%;
background: #E4612E;
height: 55px;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
border-radius: 4px;
position: fixed;
bottom: 0px;
}
.right-box {
width: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
color: #aeaeae;
font-size: 14px;
margin: 10px 0px;
}
.bs_img {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.fifty {
width: 50%;
text-align: center;
box-sizing: border-box;
padding-left: 15px;
font-size: 14px;
}
</style>