<template>
|
<ContentScrollView :paddingH="false">
|
<nut-form :model-value="form" ref="formRef" :rules="rules">
|
<ProFormItemCell label="身份证照片:" required>
|
<div class="id-imgUrl-wrapper">
|
<nut-form-item
|
label=" "
|
class="bole-form-item"
|
prop="legalPersonIdFrontImgUrl"
|
label-width="0px"
|
>
|
<Uploader
|
v-model:file-list="form.legalPersonIdFrontImgUrl"
|
:maximum="1"
|
:limitFileSize="10"
|
class="bole-uploader nopaddingtop"
|
@my-success="handleFrontImgUrlChange"
|
>
|
<template #upload-icon>
|
<div class="photograph-wrapper">
|
<Photograph color="#808080" />
|
<div>身份证人像面</div>
|
</div>
|
</template>
|
</Uploader>
|
</nut-form-item>
|
<nut-form-item
|
label=" "
|
class="bole-form-item"
|
prop="legalPersonIdBackImgUrl"
|
label-width="0px"
|
>
|
<Uploader
|
v-model:file-list="form.legalPersonIdBackImgUrl"
|
:maximum="1"
|
:limitFileSize="10"
|
class="bole-uploader nopaddingtop"
|
>
|
<template #upload-icon>
|
<div class="photograph-wrapper">
|
<Photograph color="#808080" />
|
<div>身份证国徽面</div>
|
</div>
|
</template>
|
</Uploader>
|
</nut-form-item>
|
</div>
|
|
<div class="pro-form-item-tips">
|
请上传身份证的正反面照片,确保身份证清晰可见,支持png/jpg/jpeg格式,文件大小不超过10MB
|
</div>
|
</ProFormItemCell>
|
<nut-form-item label="姓名:" class="bole-form-item" prop="name" required>
|
<nut-input
|
v-model.trim="form.name"
|
class="nut-input-text bole-input-text"
|
placeholder="请填写姓名"
|
type="text"
|
/>
|
</nut-form-item>
|
<nut-form-item label="身份证号:" class="bole-form-item" prop="idNumber" required>
|
<nut-input
|
v-model.trim="form.idNumber"
|
class="nut-input-text bole-input-text"
|
placeholder="请填写身份证号码"
|
type="text"
|
/>
|
</nut-form-item>
|
<nut-form-item label="手机号:" class="bole-form-item" prop="contactPhone" required>
|
<nut-input
|
v-model.trim="form.contactPhone"
|
class="nut-input-text bole-input-text"
|
placeholder="请填写手机号码"
|
type="text"
|
>
|
<template #right>
|
<ProFormCaptcha
|
:onGetCaptcha="() => onGetCaptcha(form.contactPhone)"
|
:phonePropName="['contactPhone', 'name', 'idNumber']"
|
:validateField="formRef?.validate"
|
></ProFormCaptcha>
|
</template>
|
</nut-input>
|
</nut-form-item>
|
<nut-form-item label="短信验证码:" class="bole-form-item" prop="verificationCode" required>
|
<nut-input
|
v-model.trim="form.verificationCode"
|
class="nut-input-text bole-input-text"
|
placeholder="请输入验证码"
|
type="number"
|
/>
|
</nut-form-item>
|
</nut-form>
|
</ContentScrollView>
|
<PageFooter :isOnlyAction="false">
|
<PageFooterBtn type="primary" @click="handleSubmit()" :loading="loading"
|
>提交认证</PageFooterBtn
|
>
|
</PageFooter>
|
</template>
|
|
<script setup lang="ts">
|
import { VerificationCodeBusinessType } from '@12333/constants';
|
import { ProFormCaptcha, ProFormItemCell } from 'senin-mini/components';
|
import * as commonServices from '@12333/services/api/Common';
|
import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type';
|
import { Photograph } from '@nutui/icons-vue-taro';
|
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
|
import { FormValidator } from '@12333/utils';
|
|
defineOptions({
|
name: 'InnerPage',
|
});
|
|
const form = reactive({
|
legalPersonIdFrontImgUrl: [] as FileItem[],
|
legalPersonIdBackImgUrl: [] as FileItem[],
|
name: '',
|
idNumber: '',
|
contactPhone: '',
|
verificationCode: '',
|
});
|
|
const formRef = ref<any>(null);
|
const loading = ref(false);
|
|
const rules: FormRules = {
|
name: [{ required: true, message: '请填写姓名' }],
|
legalPersonIdFrontImgUrl: [
|
{ required: true, message: '请上传身份证人像面', validator: FormValidator.validatorArray },
|
],
|
legalPersonIdBackImgUrl: [
|
{ required: true, message: '请上传身份证国徽面', validator: FormValidator.validatorArray },
|
],
|
idNumber: [
|
{ required: true, message: '请填写身份证号码' },
|
{ message: '请输入正确的身份证号码', validator: FormValidator.validatorIDCard },
|
],
|
legalPersonContactPhone: [
|
{ required: true, message: '请填写手机号码' },
|
{ message: '请输入正确的手机号码', validator: FormValidator.validatorPhoneNumber },
|
],
|
verificationCode: [{ required: true, message: '请输入验证码' }],
|
};
|
|
async function onGetCaptcha(phoneNumber: string) {
|
await commonServices.sendPhoneCertificationVerificationCode(
|
{
|
name: form.name,
|
identity: form.idNumber,
|
mobile: form.contactPhone,
|
businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification,
|
},
|
{ showLoading: false }
|
);
|
}
|
|
function handleFrontImgUrlChange(response: FileItem) {
|
// userCredentialVerifyOcrIDCard(response, {
|
// onSuccess(res) {
|
// if (res.realName) form.legalPersonName = res.realName;
|
// if (res.idcardNum) form.legalPersonIdNumber = res.idcardNum;
|
// },
|
// });
|
}
|
|
function handleSubmit() {
|
if (!formRef.value) return;
|
formRef.value.validate().then(({ valid, errors }: any) => {
|
if (valid) {
|
// submit();
|
}
|
});
|
}
|
</script>
|
|
<style lang="scss">
|
@import '@/styles/common.scss';
|
|
.authenticationRealName-page-wrapper {
|
.photograph-wrapper {
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
justify-content: center;
|
}
|
}
|
</style>
|