260 lines
8.7 KiB
Vue
260 lines
8.7 KiB
Vue
<template>
|
|
<div class="content">
|
|
<div class="navBar">
|
|
<van-nav-bar
|
|
title="实名认证"
|
|
left-arrow
|
|
left-arrow-color="#FFFFFF"
|
|
:border="false"
|
|
:fixed="true"
|
|
:safe-area-inset-top="true"
|
|
@click-left="h5GoBack"
|
|
/>
|
|
</div>
|
|
<tip-bar :title="'应国家政策要求:从事货运行业的司机用户,身份证照片、驾驶证信息、行驶证信息、人车合影及承运资质信息必须进行实名认证。'"></tip-bar>
|
|
<photo-item title="个人头像" v-if="type != 'simple'" :show="show" :left-url="form.icon ||headerUrl" @leftImg="headerHandler"></photo-item>
|
|
<photo-item title="身份证正反面" :show="show" :left-url="form.identityCardFront || idFront" :right-url="form.identityCardContrary || idBack"
|
|
@leftImg="idFrontHandler" @rightImg="idBackHandler" ></photo-item>
|
|
<div class="carInfo">
|
|
<div class="left_wrap title">
|
|
<span class="mar_left">注册手机号</span>
|
|
<div>
|
|
<span class="star">*</span>
|
|
<span>本人姓名</span>
|
|
</div>
|
|
<div>
|
|
<span class="star">*</span>
|
|
<span>本人性别</span>
|
|
</div>
|
|
<div>
|
|
<span class="star">*</span>
|
|
<span>本人身份证号</span>
|
|
</div>
|
|
</div>
|
|
<div class="right_wrap">
|
|
<span class="phone">{{form.phone}}</span>
|
|
<input type="text" disabled placeholder="请输入持卡人姓名" v-model="form.name">
|
|
<input type="text" disabled placeholder="请输入持卡人性别" v-model="form.sex">
|
|
<input type="text" placeholder="请输入持卡人身份证号" v-model="form.identityCardNumber">
|
|
</div>
|
|
</div>=
|
|
<fixed-button title="实名认证" @myClick="goRealName" v-if="showFun() && !esignFlag"></fixed-button>
|
|
<fixed-button @myClick="clickHandler" v-if="showFun() && esignFlag"></fixed-button>
|
|
<!-- <protocol-dialog></protocol-dialog>-->
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
// import protocolDialog from "./component/protocolDialog";
|
|
import fixedButton from "./component/fixedButton";
|
|
import photoItem from "./component/photoItem";
|
|
import tipBar from "./component/tipBar";
|
|
import {
|
|
ocrRecognize,
|
|
driverInfoVerify,
|
|
driverInfoVerifyDetail,
|
|
driverRealName,
|
|
infoVerifyProgress
|
|
} from '@/api/authentication'
|
|
import { leftCopy } from '@/utils/common.js'
|
|
import { myMixins } from '@/utils/myMixins.js'
|
|
// import {version} from "@/utils/baseUrl"
|
|
export default {
|
|
name: "personAudit",
|
|
components: {
|
|
tipBar,
|
|
photoItem,
|
|
fixedButton,
|
|
// protocolDialog
|
|
},
|
|
mixins: [myMixins],
|
|
data() {
|
|
return {
|
|
form: {
|
|
phone: localStorage.getItem('phone'),
|
|
name: '',
|
|
sex: '',
|
|
identityCardNumber: '',
|
|
icon: '',
|
|
identityCardFront: '',
|
|
identityCardContrary: '',
|
|
idCardAuthority: '', // 发证机关
|
|
idCardValidStartTime: '', // 有效期开始
|
|
idCardValidEndTime: '', // 有效期结束
|
|
},
|
|
validPeriod: '', // 有效期
|
|
headerUrl: require('@/assets/authentication/person_header.png'),
|
|
idFront: require('@/assets/authentication/person_idcard1.png'),
|
|
idBack: require('@/assets/authentication/person_idcard2.png'),
|
|
show: undefined,
|
|
type: 'full',
|
|
esignFlag: false,
|
|
}
|
|
},
|
|
async mounted() {
|
|
this.show = true
|
|
if( this.show ) {
|
|
await this.getDetail()
|
|
}
|
|
const urlParams = new URLSearchParams(window.location.search);
|
|
this.esignFlag = localStorage.setItem("esignFlag") || urlParams.get('esignFlag') || false;
|
|
localStorage.setItem("esignFlag",this.esignFlag )
|
|
console.log("this.esignFlag ",this.esignFlag )
|
|
},
|
|
methods: {
|
|
async getDetail() {
|
|
let res = await driverInfoVerifyDetail( {
|
|
verifyType: 1
|
|
})
|
|
leftCopy(this.form, {...res?.data?.personalInfoData})
|
|
let personAuditInfo=localStorage.getItem("personAuditInfo") ? JSON.parse(localStorage.getItem("personAuditInfo")) : ''
|
|
if(!personAuditInfo){
|
|
return
|
|
}
|
|
console.log('personAuditInfo.form',personAuditInfo.form)
|
|
this.form={...personAuditInfo.form}
|
|
},
|
|
async headerHandler(data) {
|
|
this.form.icon = data
|
|
},
|
|
async idFrontHandler(data) { // 身份证正面
|
|
this.form.identityCardFront = data
|
|
await this.idOrcHandler(this.form.identityCardFront)
|
|
},
|
|
async idBackHandler(data) {
|
|
this.form.identityCardContrary = data
|
|
await this.idBackOrcHandler(this.form.identityCardContrary)
|
|
},
|
|
initForm() {
|
|
this.form.name = ''
|
|
this.form.sex = ''
|
|
this.form.identityCardNumber = ''
|
|
},
|
|
backInit() {
|
|
this.validPeriod = ''
|
|
},
|
|
async idBackOrcHandler(url) {
|
|
let res = await ocrRecognize( {
|
|
ocrType: 1,
|
|
imageUrl: url
|
|
});
|
|
let idInfo = res?.data?.data?.back?.data
|
|
let validPeriod = idInfo?.validPeriod; // 有效期
|
|
this.form.idCardAuthority = idInfo?.issueAuthority
|
|
let dateArr = validPeriod.split('-');
|
|
let startDate = dateArr[0];
|
|
let endDate = dateArr[1];
|
|
this.form.idCardValidStartTime = startDate.replace(/\./g, '/') + ' 00:00:00';
|
|
if( endDate.indexOf('长期') != -1 ) {
|
|
this.form.idCardValidEndTime = '2099/01/01 00:00:00'
|
|
} else {
|
|
this.form.idCardValidEndTime = endDate.replace(/\./g, '/') + ' 00:00:00';
|
|
}
|
|
},
|
|
async idOrcHandler(url) {
|
|
await this.initForm()
|
|
let res = await ocrRecognize({
|
|
ocrType: 1,
|
|
imageUrl: url
|
|
});
|
|
let idInfo = res?.data?.data?.face?.data
|
|
this.form.name = idInfo?.name
|
|
this.form.sex = idInfo?.sex
|
|
this.form.identityCardNumber = idInfo?.idNumber
|
|
},
|
|
async goRealName() {
|
|
if (!this.form.identityCardContrary) {
|
|
this.$toast('身份证反面照片未上传')
|
|
return
|
|
}
|
|
if( !this.form.idCardValidStartTime ) {
|
|
this.$toast('身份证反面识别错误')
|
|
return
|
|
}
|
|
if (!this.form.identityCardFront) {
|
|
this.$toast('身份证正面照片未上传')
|
|
return
|
|
}
|
|
const urlParams = new URLSearchParams(window.location.search);
|
|
let token = urlParams.get('token');
|
|
if(this.form.name && this.form.identityCardNumber) {
|
|
let res = await driverRealName( {
|
|
phone: this.form.phone,
|
|
name: this.form.name,
|
|
idNo: this.form.identityCardNumber,
|
|
token:token
|
|
})
|
|
let info = res?.data
|
|
console.log('info', info)
|
|
localStorage.setItem("personAuditInfo",JSON.stringify({form:this.form}))
|
|
window.location.href=info?.shortLink
|
|
} else {
|
|
this.$toast('身份证信息识别错误')
|
|
}
|
|
},
|
|
async clickHandler() {
|
|
if (!this.form.identityCardContrary) {
|
|
this.$toast('身份证反面照片未上传')
|
|
return
|
|
}
|
|
if( !this.form.idCardValidStartTime ) {
|
|
this.$toast('身份证反面识别错误')
|
|
return
|
|
}
|
|
if (!this.form.identityCardFront) {
|
|
this.$toast('身份证正面照片未上传')
|
|
return
|
|
}
|
|
if(this.form.name && this.form.identityCardNumber) {
|
|
await driverInfoVerify( {
|
|
verifyType: 1,
|
|
type: this.type || 'full',
|
|
...this.form,
|
|
})
|
|
this.$toast('操作成功')
|
|
await this.getRegisterInfo({
|
|
verifyType: 1
|
|
})
|
|
localStorage.setItem("personAuditInfo",'')
|
|
setTimeout(() => {
|
|
// this.h5GoBack()
|
|
this.goPage('auditList',{
|
|
token:localStorage.getItem('token')
|
|
})
|
|
}, 100)
|
|
} else {
|
|
this.$toast('身份证信息识别错误')
|
|
}
|
|
},
|
|
async getRegisterInfo(data) {
|
|
let res = await infoVerifyProgress( data)
|
|
// console.log("res",res)
|
|
localStorage.setItem('infoVerify', res?.data?.infoVerify?.code)
|
|
localStorage.setItem('failReason', res?.data?.verifyRemark)
|
|
localStorage.setItem('authIsSuccess', res?.data?.authIsSuccess)
|
|
localStorage.setItem('name', res?.data?.name)
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
@import "@/styles/common.scss";
|
|
@import "@/styles/infoShow.scss";
|
|
page {
|
|
background: #F4F5F7;
|
|
}
|
|
.navBar{
|
|
margin-bottom: 46px;
|
|
}
|
|
.empty{
|
|
width: 100%;
|
|
height:151px;
|
|
}
|
|
.content {
|
|
padding-bottom: 86px;
|
|
height: 90%;
|
|
overflow-y: auto;
|
|
}
|
|
</style>
|