From 3a6f47aae0ca4566a7f39c98c30bcc5545dd1216 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 21 八月 2025 09:58:32 +0800
Subject: [PATCH] feat: 实名

---
 apps/cMiniApp/src/subpackages/authentication/authenticationRealName/InnerPage.vue |   96 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 64 insertions(+), 32 deletions(-)

diff --git a/apps/cMiniApp/src/subpackages/authentication/authenticationRealName/InnerPage.vue b/apps/cMiniApp/src/subpackages/authentication/authenticationRealName/InnerPage.vue
index 2ab5db4..277373a 100644
--- a/apps/cMiniApp/src/subpackages/authentication/authenticationRealName/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/authentication/authenticationRealName/InnerPage.vue
@@ -3,18 +3,14 @@
     <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"
-          >
+          <nut-form-item label=" " class="bole-form-item" prop="identityImg" label-width="0px">
             <Uploader
-              v-model:file-list="form.legalPersonIdFrontImgUrl"
+              v-model:file-list="form.identityImg"
               :maximum="1"
               :limitFileSize="10"
               class="bole-uploader nopaddingtop"
               @my-success="handleFrontImgUrlChange"
+              @delete="handleFrontImgUrlDelete"
             >
               <template #upload-icon>
                 <div class="photograph-wrapper">
@@ -24,14 +20,9 @@
               </template>
             </Uploader>
           </nut-form-item>
-          <nut-form-item
-            label=" "
-            class="bole-form-item"
-            prop="legalPersonIdBackImgUrl"
-            label-width="0px"
-          >
+          <nut-form-item label=" " class="bole-form-item" prop="identityBackImg" label-width="0px">
             <Uploader
-              v-model:file-list="form.legalPersonIdBackImgUrl"
+              v-model:file-list="form.identityBackImg"
               :maximum="1"
               :limitFileSize="10"
               class="bole-uploader nopaddingtop"
@@ -83,9 +74,9 @@
             </template>
           </nut-input>
         </nut-form-item>
-        <nut-form-item label="鐭俊楠岃瘉鐮�:" class="bole-form-item" prop="verificationCode" required>
+        <nut-form-item label="鐭俊楠岃瘉鐮�:" class="bole-form-item" prop="verifyCode" required>
           <nut-input
-            v-model.trim="form.verificationCode"
+            v-model.trim="form.verifyCode"
             class="nut-input-text bole-input-text"
             placeholder="璇疯緭鍏ラ獙璇佺爜"
             type="number"
@@ -102,7 +93,6 @@
 </template>
 
 <script setup lang="ts">
-import { VerificationCodeBusinessType } from '@12333/constants';
 import { ProFormCaptcha, ProFormItemCell } from 'senin-mini/components';
 import * as electronSignServices from '@12333/services/apiV2/electronSign';
 import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type';
@@ -110,6 +100,8 @@
 import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
 import { FormValidator } from '@12333/utils';
 import Taro from '@tarojs/taro';
+import { userCredentialVerifyOcrIDCard } from '@12333/hooks';
+import { EnumOcrAccess } from '@12333/constants';
 
 defineOptions({
   name: 'InnerPage',
@@ -119,12 +111,12 @@
 const type = router.params?.type ?? '';
 
 const form = reactive({
-  legalPersonIdFrontImgUrl: [] as FileItem[],
-  legalPersonIdBackImgUrl: [] as FileItem[],
+  identityImg: [] as FileItem[],
+  identityBackImg: [] as FileItem[],
   name: '',
   identity: '',
   phoneNumber: '',
-  verificationCode: '',
+  verifyCode: '',
 });
 
 const formRef = ref<any>(null);
@@ -132,21 +124,21 @@
 
 const rules: FormRules = {
   name: [{ required: true, message: '璇峰~鍐欏鍚�' }],
-  legalPersonIdFrontImgUrl: [
+  identityImg: [
     { required: true, message: '璇蜂笂浼犺韩浠借瘉浜哄儚闈�', validator: FormValidator.validatorArray },
   ],
-  legalPersonIdBackImgUrl: [
+  identityBackImg: [
     { required: true, message: '璇蜂笂浼犺韩浠借瘉鍥藉窘闈�', validator: FormValidator.validatorArray },
   ],
   identity: [
     { required: true, message: '璇峰~鍐欒韩浠借瘉鍙风爜' },
     { message: '璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�', validator: FormValidator.validatorIDCard },
   ],
-  legalPersonContactPhone: [
+  phoneNumber: [
     { required: true, message: '璇峰~鍐欐墜鏈哄彿鐮�' },
     { message: '璇疯緭鍏ユ纭殑鎵嬫満鍙风爜', validator: FormValidator.validatorPhoneNumber },
   ],
-  verificationCode: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }],
+  verifyCode: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }],
 };
 
 async function onGetCaptcha(phoneNumber: string) {
@@ -161,12 +153,15 @@
 }
 
 function handleFrontImgUrlChange(response: FileItem) {
-  // userCredentialVerifyOcrIDCard(response, {
-  //   onSuccess(res) {
-  //     if (res.realName) form.legalPersonName = res.realName;
-  //     if (res.idcardNum) form.legalPersonIdNumber = res.idcardNum;
-  //   },
-  // });
+  userCredentialVerifyOcrIDCard({
+    response: response,
+    access: EnumOcrAccess.Baidu,
+    isOssUrl: true,
+    onSuccess(res) {
+      if (res.model?.name) form.name = res.model?.name;
+      if (res.model?.identity) form.identity = res.model?.identity;
+    },
+  });
 }
 
 function handleSubmit() {
@@ -187,8 +182,45 @@
   }
 }
 
-async function personalUserFaceReal() {}
-async function personalUserIdentity3Real() {}
+async function personalUserIdentity3Real() {
+  try {
+    let params: API.PersonalUserIdentity3RealCommand = {
+      name: form.name,
+      phoneNumber: form.phoneNumber,
+      identity: form.identity,
+      identityImg: form.identityImg?.[0]?.path ?? '',
+      identityBackImg: form.identityBackImg?.[0]?.path ?? '',
+      verifyCode: form.verifyCode,
+    };
+    let res = await electronSignServices.personalUserIdentity3Real(params);
+    if (res) {
+      Taro.navigateTo({ url: `${RouterPath.authenticationResult}` });
+    }
+  } catch (error) {}
+}
+
+async function personalUserFaceReal() {
+  try {
+    let params: API.PersonalUserFaceRealCommand = {
+      name: form.name,
+      identity: form.identity,
+      identityImg: form.identityImg?.[0]?.path ?? '',
+      identityBackImg: form.identityBackImg?.[0]?.path ?? '',
+    };
+    let res = await electronSignServices.personalUserFaceReal(params);
+    if (res) {
+      const encodedUrl = encodeURIComponent(res);
+      Taro.navigateTo({ url: `${RouterPath.extraPage}?url=${encodedUrl}` });
+    }
+  } catch (error) {}
+}
+
+function handleFrontImgUrlDelete({ files, fileList, index }) {
+  if (fileList?.length === 0) {
+    form.name = '';
+    form.identity = '';
+  }
+}
 </script>
 
 <style lang="scss">

--
Gitblit v1.9.1