You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 regels
10 KiB

  1. import{_ as a,r as e,a1 as l,o as t,a2 as s,b as c,y as d,z as o,a as i,w as n,i as u,A as r,a3 as m,a4 as p,h,j as f,l as v,n as _,m as y,t as b,D as g,C,G as I,f as k,a5 as w,J as N,I as V,a6 as U,v as x,E as F,F as T,H as z}from"./index-BWvsB30X.js";const A=a({__name:"verify",setup(a){const A=e("idcard"),P=e(0),B=e(!1),S=e(!1),$=e({name:"",phone:""});let E=null;const j={idcard:1,child:2,temp:3},D=e("上传身份证后自动识别"),X=e("上传身份证后自动识别"),G=l({frontImage:"",backImage:"",childImage:"",name:"",idNo:"",authority:"",validity:"",gender:"",birthday:"",phone:"",smsCode:""});t((()=>{H()})),s((()=>{E&&(clearInterval(E),E=null)}));const H=async()=>{try{const a=await c("/api/mp/authInfo");if(1===a.data.authStatus){const e=a.data,l={1:"idcard",2:"child",3:"temp"};A.value=l[e.idCardType]||"idcard",G.frontImage=e.idCardFront||"",G.backImage=e.idCardBack||"",G.childImage=e.photo||"",G.name=e.realName||"",G.idNo=e.idCard||"",G.authority=e.issuingAuthority||"",G.validity=e.validPeriod||"",G.gender=e.gender||"",G.birthday=e.birthday||"",G.phone=e.phone||""}}catch(a){}},J=a=>{g({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:async e=>{const l=e.tempFilePaths[0];try{const e=await(t=l,new Promise(((a,e)=>{F({title:"上传中..."}),T("/api/mp/upload",{filePath:t,name:"file"}).then((e=>{z(),a(e.data.url)})).catch((a=>{z(),C({title:"上传失败",icon:"none"}),e(a)}))})));"front"===a?(G.frontImage=e,await(async a=>{F({title:"识别中..."});try{const e=(await I("/common/ocr/idcard",{imageUrl:a,cardSide:"FRONT"})).data;G.name=e.name||"",G.idNo=e.idNum||"",z()}catch(e){z(),C({title:"识别失败,请手动填写",icon:"none"})}})(e)):"back"===a?(G.backImage=e,await(async a=>{F({title:"识别中..."});try{const e=await I("/common/ocr/idcard",{imageUrl:a,cardSide:"BACK"});G.authority=e.data.authority||"",G.validity=e.data.validDate||"",G.authority||(D.value="请输入发证机关"),G.validity||(X.value="请输入有效期限"),z()}catch(e){z(),D.value="请输入发证机关",X.value="请输入有效期限"}})(e)):"child"===a&&(G.childImage=e)}catch(s){}var t}})},K=async()=>{if(!(P.value>0))if(G.phone&&11===G.phone.length)try{const a=await I("/api/mp/sendSmsCode",{mobile:G.phone,bizType:"real_name_auth"});a.data&&a.data.code?C({title:`验证码: ${a.data.code}`,icon:"none",duration:3e3}):C({title:"验证码已发送",icon:"none"}),P.value=60,E=setInterval((()=>{P.value--,P.value<=0&&(clearInterval(E),E=null)}),1e3)}catch(a){a&&a.msg&&C({title:a.msg,icon:"none"})}else C({title:"请输入正确的手机号码",icon:"none"})},O=async()=>{if(B.value)return;if(2===j[A.value]){if(!G.childImage)return C({title:"请上传免冠照片",icon:"none"})}else{if(!G.frontImage)return C({title:"请上传证件人像面",icon:"none"});if(!G.backImage)return C({title:"请上传证件国徽面",icon:"none"})}if(!G.name)return C({title:"请输入证件姓名",icon:"none"});if(!G.idNo)return C({title:"请输入证件号码",icon:"none"});if(!(a=>{if(!/^\d{17}[\dXx]$/.test(a))return!1;const e=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];let l=0;for(let t=0;t<17;t++)l+=parseInt(a[t])*e[t];return["1","0","X","9","8","7","6","5","4","3","2"][l%11]===a[17].toUpperCase()})(G.idNo))return C({title:"身份证号格式不正确",icon:"none"});if(18===G.idNo.length){const a=parseInt(G.idNo.charAt(16));G.gender=a%2==1?"男":"女",G.birthday=`${G.idNo.substring(6,10)}-${G.idNo.substring(10,12)}-${G.idNo.substring(12,14)}`}return G.phone&&11===G.phone.length?G.smsCode&&6===G.smsCode.length?void(await R(!1)):C({title:"请输入6位验证码",icon:"none"}):C({title:"请输入正确的手机号",icon:"none"})},R=async a=>{S.value=!1,B.value=!0;try{await I("/api/mp/authSubmit",{idCardType:j[A.value],idCardFront:G.frontImage,idCardBack:G.backImage,photo:G.childImage,realName:G.name,idCard:G.idNo,gender:G.gender,birthday:G.birthday,issuingAuthority:G.authority,validPeriod:G.validity,mobile:G.phone,code:G.smsCode,confirmBind:a||void 0});try{const a=await c("/api/mp/userinfo");k(a.data)}catch(e){}C({title:"认证成功",icon:"success"}),setTimeout((()=>{w()}),1500)}catch(e){e&&1010===e.code?($.value={name:e.data&&e.data.patientName||"",phone:e.data&&e.data.patientPhone||""},S.value=!0):e&&e.msg&&C({title:e.msg,icon:"none"})}finally{B.value=!1}};return(a,e)=>{const l=u,t=N,s=V,c=d(o("u-icon"),r),g=U,C=x,I=d(o("u-button"),m),k=d(o("u-popup"),p);return h(),i(l,{class:"page"},{default:n((()=>[f(l,{class:"page-content"},{default:n((()=>[f(l,{class:"page-title"},{default:n((()=>[v("请确认申请人信息")])),_:1}),f(l,{class:"section"},{default:n((()=>[f(l,{class:"section-header"},{default:n((()=>[f(l,{class:"step-num"},{default:n((()=>[v("1")])),_:1}),f(t,{class:"label"},{default:n((()=>[v("为谁申请")])),_:1}),f(t,{class:"tag warn"},{default:n((()=>[v("请用患者本人信息进行实名申请")])),_:1})])),_:1}),f(l,{class:"section-desc"},{default:n((()=>[v("请选择用来实名证件的类型")])),_:1}),f(l,{class:"cert-tabs"},{default:n((()=>[f(l,{class:_(["cert-tab",{active:"idcard"===A.value}]),onClick:e[0]||(e[0]=a=>A.value="idcard")},{default:n((()=>[f(t,null,{default:n((()=>[v("身份证证件")])),_:1})])),_:1},8,["class"]),f(l,{class:_(["cert-tab",{active:"child"===A.value}]),onClick:e[1]||(e[1]=a=>A.value="child")},{default:n((()=>[f(t,null,{default:n((()=>[v("无证件儿童")])),_:1})])),_:1},8,["class"]),f(l,{class:_(["cert-tab",{active:"temp"===A.value}]),onClick:e[2]||(e[2]=a=>A.value="temp")},{default:n((()=>[f(t,null,{default:n((()=>[v("临时身份证")])),_:1})])),_:1},8,["class"])])),_:1}),"idcard"===A.value||"temp"===A.value?(h(),i(l,{key:0,class:"upload-area"},{default:n((()=>[f(l,{class:"upload-item",onClick:e[3]||(e[3]=a=>J("front"))},{default:n((()=>[f(s,{src:G.frontImage||"https://cdn.csybhelp.com/images/patient/user/idcard-front.webp?v=1",mode:"aspectFill",class:"upload-img"},null,8,["src"]),f(t,{class:"upload-label"},{default:n((()=>[v("请上传证件人像面")])),_:1})])),_:1}),f(l,{class:"upload-item",onClick:e[4]||(e[4]=a=>J("back"))},{default:n((()=>[f(s,{src:G.backImage||"https://cdn.csybhelp.com/images/patient/user/idcard-back.webp?v=1",mode:"aspectFill",class:"upload-img"},null,8,["src"]),f(t,{class:"upload-label"},{default:n((()=>[v("请上传证件国徽面")])),_:1})])),_:1})])),_:1})):y("",!0),"child"===A.value?(h(),i(l,{key:1,class:"child-upload"},{default:n((()=>[f(l,{class:"child-tip"},{default:n((()=>[v("请上传近期免冠照片 "),f(t,{class:"tip-highlight"},{default:n((()=>[v("用于无证件儿童身份核验")])),_:1})])),_:1}),f(l,{class:"child-desc"},{default:n((()=>[v("为了避免增加审核时长,如已办理身份证,请走身份证件通道")])),_:1}),f(l,{class:"child-photo-box",onClick:e[5]||(e[5]=a=>J("child"))},{default:n((()=>[G.childImage?(h(),i(s,{key:0,src:G.childImage,mode:"aspectFill",class:"child-photo-img"},null,8,["src"])):(h(),i(l,{key:1,class:"child-photo-placeholder"},{default:n((()=>[f(c,{name:"camera",size:"40",color:"#ccc"})])),_:1}))])),_:1})])),_:1})):y("",!0)])),_:1}),f(l,{class:"section"},{default:n((()=>[f(l,{class:"section-header"},{default:n((()=>[f(l,{class:"step-num"},{default:n((()=>[v("2")])),_:1}),f(t,{class:"label"},{default:n((()=>[v("信息核验")])),_:1}),f(t,{class:"tag info"},{default:n((()=>[v("如姓名有误,请进行修改再提交")])),_:1})])),_:1}),f(l,{class:"section-desc"},{default:n((()=>[v("请核对证件信息是否有误")])),_:1}),f(l,{class:"form-row"},{default:n((()=>[f(t,{class:"form-label"},{default:n((()=>[v("证件姓名")])),_:1}),f(g,{class:"form-input",modelValue:G.name,"onUpdate:modelValue":e[6]||(e[6]=a=>G.name=a),placeholder:"child"===A.value?"请输入姓名":"上传身份证后自动识别"},null,8,["modelValue","placeholder"])])),_:1}),f(l,{class:"form-row"},{default:n((()=>[f(t,{class:"form-label"},{default:n((()=>[v("证件号码")])),_:1}),f(g,{class:"form-input",modelValue:G.idNo,"onUpdate:modelValue":e[7]||(e[7]=a=>G.idNo=a),placeholder:"child"===A.value?"请输入身份证":"上传身份证后自动识别"},null,8,["modelValue","placeholder"])])),_:1}),"child"!==A.value?(h(),i(l,{key:0,class:"form-row"},{default:n((()=>[f(t,{class:"form-label"},{default:n((()=>[v("发证机关")])),_:1}),f(g,{class:"form-input",modelValue:G.authority,"onUpdate:modelValue":e[8]||(e[8]=a=>G.authority=a),placeholder:D.value},null,8,["modelValue","placeholder"])])),_:1})):y("",!0),"child"!==A.value?(h(),i(l,{key:1,class:"form-row border-none"},{default:n((()=>[f(t,{class:"form-label"},{default:n((()=>[v("有效期限")])),_:1}),f(g,{class:"form-input",modelValue:G.validity,"onUpdate:modelValue":e[9]||(e[9]=a=>G.validity=a),placeholder:X.value},null,8,["modelValue","placeholder"])])),_:1})):y("",!0)])),_:1}),f(l,{class:"section"},{default:n((()=>[f(l,{class:"section-header"},{default:n((()=>[f(l,{class:"step-num"},{default:n((()=>[v("3")])),_:1}),f(t,{class:"label"},{default:n((()=>[v("手机号码绑定")])),_:1})])),_:1}),f(l,{class:"section-desc"},{default:n((()=>[v("请输入未进行过平台认证的号码进行绑定")])),_:1}),f(l,{class:"phone-row"},{default:n((()=>[f(g,{class:"phone-input",type:"number",modelValue:G.phone,"onUpdate:modelValue":e[10]||(e[10]=a=>G.phone=a),placeholder:"请输入手机号码",maxlength:"11"},null,8,["modelValue"])])),_:1}),f(l,{class:"sms-row"},{default:n((()=>[f(g,{class:"sms-input",type:"number",modelValue:G.smsCode,"onUpdate:modelValue":e[11]||(e[11]=a=>G.smsCode=a),placeholder:"请输入验证码",maxlength:"6"},null,8,["modelValue"]),f(C,{class:"sms-btn",disabled:P.value>0,onClick:K},{default:n((()=>[v(b(P.value>0?P.value+"s后重新获取":"获取验证码"),1)])),_:1},8,["disabled"])])),_:1})])),_:1})])),_:1}),f(l,{class:"submit-bar"},{default:n((()=>[f(C,{class:"submit-btn",onClick:O},{default:n((()=>[v("提交认证")])),_:1})])),_:1}),f(k,{show:S.value,mode:"center",round:"12",safeAreaInsetBottom:!1,onClose:e[14]||(e[14]=a=>S.value=!1)},{default:n((()=>[f(l,{class:"confirm-popup"},{default:n((()=>[f(l,{class:"confirm-title"},{default:n((()=>[v("提示")])),_:1}),f(l,{class:"confirm-content"},{default:n((()=>[v("检测到患者信息已存在("+b($.value.name)+" "+b($.value.phone)+"),是否确认绑定该患者信息?",1)])),_:1}),f(l,{class:"confirm-btns"},{default:n((()=>[f(I,{text:"取消",size:"normal",plain:!0,shape:"circle",onClick:e[12]||(e[12]=a=>S.value=!1)}),f(I,{text:"确认绑定",size:"normal",color:"#0E63E3",shape:"circle",onClick:e[13]||(e[13]=a=>R(!0))})])),_:1})])),_:1})])),_:1},8,["show"])])),_:1})}}},[["__scopeId","data-v-663e7f77"]]);export{A as default};