shangfutong-ui/jeepay-ui-uapp-agent/pageApply/channel/dgpay/dgEvent.vue

278 lines
9.4 KiB
Vue
Raw Permalink 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="title-center"> 开通业务 </view>
<view style="margin-bottom: 20px">
<JeePayForm text="商户类型">
{{ openService.merchantType == '1' ? '个人' : '企业' }}
</JeePayForm>
<template v-if="openService.merchantType != '1'">
<JeePayForm text="法人身份证人像面照片">
<JeepayUpLoad :imgUrl="openService.idcard1Img" @uploadSuccess="uploadSuccess($event, 'idcard1Img')" @clear="clear('idcard1Img')" />
</JeePayForm>
<JeePayForm text="法人身份证国徽面照片">
<JeepayUpLoad :imgUrl="openService.idcard2Img" @uploadSuccess="uploadSuccess($event, 'idcard2Img')" @clear="clear('idcard2Img')" />
</JeePayForm>
<JeePayForm text="营业执照照片">
<JeepayUpLoad :imgUrl="openService.licenseImg" @uploadSuccess="uploadSuccess($event, 'licenseImg')" @clear="clear('licenseImg')" />
</JeePayForm>
<JeePayForm text="门头照">
<JeepayUpLoad :imgUrl="openService.storeOuterImg" @uploadSuccess="uploadSuccess($event, 'storeOuterImg')" @clear="clear('storeOuterImg')" />
</JeePayForm>
<JeePayForm text="店内环境照">
<JeepayUpLoad :imgUrl="openService.storeInnerImg" @uploadSuccess="uploadSuccess($event, 'storeInnerImg')" @clear="clear('storeInnerImg')" />
</JeePayForm>
<JeePayForm text="收银台照">
<JeepayUpLoad :imgUrl="openService.storeCashierImg" @uploadSuccess="uploadSuccess($event, 'storeCashierImg')" @clear="clear('storeCashierImg')" />
</JeePayForm>
<JeePayForm text="开户许可证照片">
<JeepayUpLoad :imgUrl="openService.companyAccountLicenseImg" @uploadSuccess="uploadSuccess($event, 'companyAccountLicenseImg')" @clear="clear('companyAccountLicenseImg')" />
</JeePayForm>
</template>
<template v-if="openService.settAccountType == 'C'">
<JeePayForm text="结算卡正面照片">
<JeepayUpLoad :imgUrl="openService.settAccountLicenseImg" @uploadSuccess="uploadSuccess($event, 'settAccountLicenseImg')" @clear="clear('settAccountLicenseImg')" />
</JeePayForm>
<JeePayForm text="结算卡反面照片">
<JeepayUpLoad :imgUrl="openService.settBankCardBackImg" @uploadSuccess="uploadSuccess($event, 'settBankCardBackImg')" @clear="clear('settBankCardBackImg')" />
</JeePayForm>
<JeePayForm text="结算人身份证人像照片">
<JeepayUpLoad :imgUrl="openService.settAccountIdcard1Img" @uploadSuccess="uploadSuccess($event, 'settAccountIdcard1Img')" @clear="clear('settAccountIdcard1Img')" />
</JeePayForm>
<JeePayForm text="结算人身份证国徽面照片">
<JeepayUpLoad :imgUrl="openService.settAccountIdcard2Img" @uploadSuccess="uploadSuccess($event, 'settAccountIdcard2Img')" @clear="clear('settAccountIdcard2Img')" />
</JeePayForm>
</template>
<JeePayForm text="授权委托书" v-if="openService.settAccountType == 'D'">
<JeepayUpLoad :imgUrl="openService.authEnturstPic" @uploadSuccess="uploadSuccess($event, 'authEnturstPic')" @clear="clear('authEnturstPic')" />
</JeePayForm>
<JeePayForm text="商务协议" v-if="openService.settAccountType == '3'" :start="false">
<JeepayUpLoad :imgUrl="openService.bankPic" @uploadSuccess="uploadSuccess($event, 'bankPic')" @clear="clear('bankPic')" />
</JeePayForm>
<JeePayForm text="支付宝商户经营类目">
<jeeDataPicker :localdata="aliMcc" :code="openService.aliFeeMcc" @change="publicSelect($event, 'aliFeeMcc')" paramType="oneLevel" />
</JeePayForm>
</view>
<!-- 费率组件 -->
<defaultRate ref="defaultRateRef" @autoPos="autoPosHandle" />
<view class="authentication-btn" @click="onSubmitWxRealName">发起认证</view>
<!-- 商户实名认证 -->
<view class="authentication">
<view class="title">
<text>商户实名认证</text>
<view v-if="vdata.wxOpenInfo.signUrl" @click="refreshWxOpenInfo" class="btn">刷新</view>
</view>
<view>{{vdata.wxOpenInfo.state || "异常[" + vdata.wxOpenInfo.errInfo + "]"}}</view>
</view>
<view class="reject" v-if="vdata.wxOpenInfo.errInfo">
<text class="title">驳回原因</text>
<view style="color: #fd2821">{{ vdata.wxOpenInfo.errInfo }}</view>
</view>
<view class="code-box" v-if="vdata.wxOpenInfo.signUrl">
<view>商户联系人使用已绑定银行卡的微信扫下面的二维码:</view>
<image :src="tool.drawQRcode(vdata.wxOpenInfo.signUrl)" />
<view class="jeepay-tip-text">(温馨提示:自助认证不限制谁来操作认证,但建议是商户联系人进行认证,以免后期需要扫码找不到微信认证管理员)</view>
</view>
</template>
<script setup>
import JeePayForm from "@/components/applyComponents/JeePayForm.vue"; // 通用左右结构布局
import JeepayUpLoad from "@/components/JeepayUpLoad/JeepayUpLoad.vue"; // 图片上传
import { ref, reactive, inject, toRaw } from 'vue'
import { $mchApplymentsInfo, $getMchApplymentWxOpenInfo, $dgpayWxRealName, } from "@/http/apiManager.js";
import tool from "@/util/tool.js"; // 工具类函数
import jeeDataPicker from "@/components/applyComponents/dataPicker.vue"; // 通用级联选择
import wxMcc from "@/components/applyJson/jeepayMcc.json"; // 微信mcc
import defaultRate from "../../components/defaultRate.vue"; // 默认费率
/*
开通业务板块 只在进件成功后开启 state:2
*/
let vdata = reactive({
wxOpenInfo: {}, // 微信开户意愿信息
});
let openService = reactive({ // 进件信息
// aliConfList:[], // 支付宝业务
// wxConfList: [], // 微信业务
})
let defaultRateRef = ref(null); // 费率组件
const channelInfo = inject('channelInfo')
// 支付宝经营类目
const aliMcc = reactive([
{ value: '2015050700000000', text: '美食' },
{ value: '2015091000052157', text: '超市便利店' },
{ value: '2015062600004525', text: '休闲娱乐' },
{ value: '2015062600002758', text: '购物' },
{ value: '2016062900190124', text: '爱车' },
{ value: '2015063000020189', text: '生活服务' },
{ value: '2016042200000148', text: '教育培训' },
{ value: '2016062900190296', text: '医疗健康' },
{ value: '2015080600000001', text: '航旅' },
{ value: '2016062900190337', text: '专业销售/批发' },
{ value: '2016062900190371', text: '政府/社会组织' },
])
// 通用选择器回调
const publicSelect = (e, name) => {
openService[name] = e.detail.value
}
// 请求微信实名认证查询
const getWxOpenInfo = () => {
$getMchApplymentWxOpenInfo(channelInfo.applyId)
.then((res) => {
if (vdata.isRefresh) {
uni.showToast({ title: "已刷新", icon: "none" });
vdata.isRefresh = false;
}
vdata.wxOpenInfo = res.bizData;
})
};
// 刷新微信实名认证
const refreshWxOpenInfo = () => {
vdata.isRefresh = true;
getWxOpenInfo();
};
if (channelInfo.state == 2) {
// 请求非加密的进件信息
let originData = 1
$mchApplymentsInfo(channelInfo.applyId, originData)
.then(({ bizData }) => {
Object.assign(openService, JSON.parse(bizData.applyDetailInfo));
}).catch((err) => console.log(err));
// 请求微信实名认证查询
getWxOpenInfo();
}
// 上传图片成功 及OCR识别回显
const uploadSuccessOS = (res, name) => {
openService[name] = res.data;
if (res.ocrInfo && Object.keys(res.ocrInfo).length < 1) return false;
// OCR图片识别 idCard-身份证 idcard1Imgidcard2Img license-营业执照 licenseImg
if (name == "idcard1Img") {
openService.idcardName = res.ocrInfo.idcardName; // 法人身份证姓名
openService.idcardNo = res.ocrInfo.idcardNo; // 法人身份证号
}
};
// 清除图片 仅前端
const clear = (name, url) => openService[name] = ""
// 发起认证
const onSubmitWxRealName = () => {
// 有费率的进件渠道,要在发起进件之前,获取所选择的费率信息
openService.paywayFeeList = defaultRateRef.value.getList(false)
uni.showLoading({ title: "提交中..." });
$dgpayWxRealName(channelInfo.applyId, toRaw(openService)).then((res) => {
uni.hideLoading();
uni.showToast({ title: "提交成功", icon: "none" })
uni.navigateBack()
})
}
</script>
<style scoped lang="scss">
@import "../../static/information.scss";
// 微信实名认证
.authentication {
padding: 35rpx 30rpx 35rpx 30rpx;
box-sizing: border-box;
border-bottom: 1rpx solid #e8e8e8;
.title {
display: flex;
justify-content: space-between;
margin-bottom: 30rpx;
}
}
// 驳回原因
.reject {
padding: 35rpx 30rpx 35rpx 30rpx;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: space-between;
border-bottom: 1rpx solid #e8e8e8;
.title {
margin-right: 30rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom: 30rpx;
}
}
// 发起认证
.authentication-btn {
display: flex;
justify-content: center;
margin: 30rpx auto;
width: 380rpx;
height: 90rpx;
line-height: 90rpx;
border-radius: 10rpx;
background: #0041c4;
font-weight: 500;
font-size: 30rpx;
color: #fff;
}
// 图片
.code-box {
box-sizing: border-box;
padding: 35rpx 30rpx 35rpx 30rpx;
display: flex;
flex-direction: column;
image {
margin: 40rpx auto;
width: 200px;
height: 200px;
}
}
.btn {
border-radius: 10rpx;
background: #3981FF;
color: #fff;
padding: 5rpx 15rpx;
}
.title-center {
padding: 30rpx;
text-align: center;
background-color: #fafbfc;
border-top: 1rpx solid #e8e8e8;
}
.business-title {
padding: 30rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
}
.business-content {
margin: 0 30rpx 30rpx ;
border: 1rpx solid #e8e8e8;
box-sizing: border-box;
border-radius: 10rpx;
}
</style>