{"ast":null,"code":"import wx from \"weixin-js-sdk\";\nimport { uploadObs } from \"@/utils/utils.js\";\nimport { matchFaceApi, uploadBase64ImgToV5Api, confirmCheckStatus, uploadFileToV5Api, getBaiduFace, getBaiduIdcard, getBaiduResultSimple, getBaiduFaceDetail } from \"@/api/common\";\nexport default {\n name: 'Face',\n data() {\n return {\n token: '',\n areaCode: '',\n credentialType: '',\n domainId: '',\n obsFilePath: '',\n faceCollectLabel: '未采集',\n videoWidth: 640,\n videoHeight: 480,\n typeLabel: '',\n idCardType: '',\n rightSideUrl: '',\n reverseSideUrl: '',\n drawer: false,\n cardTypeShow: false,\n userIdcardInfo: {\n name: '根据认证信息自动读取',\n idCardNum: '根据认证信息自动读取',\n address: '',\n validDateFrom: '',\n validDateTo: ''\n },\n phone: '',\n cardTypeArr: [{\n label: \"居民身份证(户口簿)\",\n value: \"IdCard\"\n }, {\n label: \"香港特区护照/身份证明\",\n value: \"IdCardOfXiangGang\"\n }, {\n label: \"澳门特区护照/身份证明\",\n value: \"IdCardOfAoMen\"\n }, {\n label: \"台湾居民来往大陆通行证\",\n value: \"IdCardOfTaiwan\"\n }, {\n label: \"外国人护照\",\n value: \"Passport\"\n }, {\n label: \"警号\",\n value: \"PoliceNo\"\n }],\n faceImage: '',\n isDev: true,\n timer: null,\n headPhoto: ''\n };\n },\n computed: {},\n mounted() {\n console.log(\"🚀 ~ mounted ~ this.$route.query:\", this.$route.query);\n const {\n domainId,\n areaCode,\n isDev,\n token,\n headPhoto\n } = this.$route.query;\n this.domainId = domainId;\n this.areaCode = areaCode;\n this.isDev = isDev === \"false\" ? false : true;\n localStorage.setItem(\"__isDev__\", isDev);\n this.token = token;\n if (headPhoto && headPhoto !== 'undefined') {\n if (headPhoto.indexOf('http') == -1) {\n const cdnFileUrl = this.isDev ? \"https://v5qy.te.baibaodun.com.cn\" : \"https://v5qy.baibaodun.cn\";\n this.headPhoto = cdnFileUrl + '/obpm' + headPhoto;\n } else {\n this.headPhoto = headPhoto;\n }\n }\n // this.timer = setInterval(()=>{\n // this.getFaceImage();\n // },500)\n },\n beforeDestroy() {\n //\n },\n methods: {\n getFaceImage() {\n // document.addEventListener('UniAppJSBridgeReady', function() {\n const {\n verify_token\n } = this.$route.query;\n if (verify_token) {\n clearInterval(this.timer);\n getBaiduResultSimple({\n verify_token: verify_token\n }).then(res => {\n if (res.success) {\n this.faceImage = res?.result?.image;\n uni.postMessage({\n data: {\n faceImage: res?.result?.image,\n msg: '身份核验成功'\n }\n });\n wx.miniProgram.postMessage({\n data: {\n faceImage: res?.result?.image,\n msg: '身份核验成功'\n }\n });\n }\n });\n // getBaiduFaceDetail({verify_token: verify_token}).then(res=>{\n // console.log(\"🚀 ~ getBaiduFaceDetail ~ res:\", res);\n // });\n }\n // })\n },\n faceCollection() {\n this.idCardType = 'face';\n this.handleClose();\n this.$refs.faceFile.click();\n // wx.miniProgram.postMessage({ \n // data: { faceImage: 99999 } \n // });\n\n // getBaiduFace({plan_id: '22574'}).then(async res => {\n // if(res.success) {\n // const { verify_token } = res.result;\n // location.href = `https://brain.baidu.com/face/print/?token=${verify_token}&successUrl=${encodeURIComponent(`https://v5qy.te.baibaodun.com.cn/static/signon/access/#/face?verify_token=${verify_token}`)}&failedUrl=${encodeURIComponent(`https://v5qy.te.baibaodun.com.cn/static/signon/access/#/face?verify_token=${verify_token}`)}`;\n // }\n // });\n },\n takeIdCard(e) {\n this.handleClose();\n this.credentialType = e.value;\n this.typeLabel = e.label;\n },\n selectCardType() {\n this.cardTypeShow = true;\n },\n toCollect(type) {\n // this.drawer = true;\n this.idCardType = type;\n this.takeFile();\n },\n handleClose(e) {\n this.drawer = false;\n this.cardTypeShow = false;\n },\n takeCamera() {\n this.handleClose();\n const video = document.getElementById('videoCamera');\n const canvas = document.getElementById('canvasCamera');\n const context = canvas.getContext('2d');\n context.drawImage(video, 0, 0, this.videoWidth, this.videoHeight);\n this.imgSrc = canvas.toDataURL('image/png');\n },\n takeFile() {\n this.handleClose();\n this.$refs.leftFile.click();\n },\n async getFile(e) {\n let file = e.target.files[0];\n if (this.idCardType === 'face') {\n // 人脸采集\n const obsUrl = await uploadObs(file, this.domainId);\n this.obsFilePath = obsUrl;\n this.faceCollectLabel = '已采集';\n } else {\n // 身份证采集\n const loading = this.$loading({\n lock: true,\n text: '身份证识别中...',\n spinner: 'el-icon-loading',\n background: 'rgba(0, 0, 0, 0.7)',\n customClass: 'createLoading' // 局部class名称\n });\n try {\n // this.uploadFileToV5(file);\n const obsUrl = await uploadObs(file, this.domainId);\n console.log('obsUrl: ', obsUrl);\n const res = await this.fileChange(file);\n loading.close();\n if (res) {\n if (this.idCardType === 'front') {\n this.frontPhoto = obsUrl;\n } else {\n this.reversePhoto = obsUrl;\n }\n } else {\n this.$message.error('身份证识别失败,请重新上传清晰图片!');\n }\n } catch {\n loading.close();\n }\n }\n this.$refs.leftFile.value = '';\n },\n // 上传文件到v5\n uploadFileToV5(file) {\n const params = {\n filePath: file,\n name: \"file\"\n };\n // let params = new FormData();\n // formData.append('filePath', file);\n // formData.append('name', 'file');\n uploadFileToV5Api(params).then(res => {\n if (res.statusCode == 200) {\n let data = res.data && JSON.parse(res.data);\n if (data.status == 200) {\n // let fullFile = \"https://v5qy.te.baibaodun.com.cn\" + data.data;\n // resolve({\n // file: data.data, //相对文件地址\n // fullFile, //完整文件地址\n // });\n }\n }\n }).catch(err => {\n // console.log(\"🚀 ~ uploadFileToV5Api ~ err:\", err)\n });\n },\n // 把base64位身份证头像生成白底照片在上传v5\n getWhitePortraitPhoto(file) {\n return new Promise((resolve, reject) => {\n uploadBase64ImgToV5Api({\n bStream: file\n }).then(res => {\n console.log(\"base64位图片\", res);\n if (res.status == 200) {\n if (res.data) {\n if (res.data.indexOf(\"/uploads\") > -1) {\n let fullFile, file;\n if (!this.isDev) {\n fullFile = res.data.replace(\"/uploads\", \"https://02obs.baibaodun.cn\");\n file = res.data.replace(\"/uploads\", \"https://02obs.baibaodun.cn\");\n } else {\n fullFile = `https://v5qy.te.baibaodun.com.cn/obpm/${res.data}`;\n file = res.data;\n }\n return resolve({\n file: file,\n fullFile\n });\n }\n }\n }\n this.$message.error('网络异常,请重试');\n }).catch(err => {\n this.$message.error('身份证采集失败,请重试');\n });\n });\n },\n // 身份证OCR识别\n fileChange(file) {\n return new Promise((resolve, reject) => {\n const _this = this;\n const reader = new FileReader();\n reader.readAsDataURL(file); //参数为上传的文件对象 传值进去就会触发以下onload方法\n reader.onload = function (e) {\n const imgUrl = e.target.result;\n // e.target.result为转换成的base64编码\n const url = e.target.result.split(',')[1];\n getBaiduIdcard({\n image: url,\n id_card_side: _this.idCardType,\n detect_photo: true\n }).then(async res => {\n if (res.image_status === 'normal') {\n const {\n words_result,\n photo\n } = res;\n if (_this.idCardType === 'front') {\n if (photo) {\n //有采集到身份证头像才显示\n try {\n _this.portrait = \"data:image/jpg;base64,\" + photo;\n //采集到身份证的头像,百度识别接口返回1寸白底照片\n if (!_this.headPhoto) {\n const {\n file,\n fullFile\n } = await _this.getWhitePortraitPhoto(_this.portrait);\n _this.headPhoto = fullFile;\n console.log('file, fullFile: ', file, fullFile);\n }\n _this.userIdcardInfo.name = words_result['姓名'].words;\n _this.userIdcardInfo.idCardNum = words_result['公民身份号码'].words;\n _this.userIdcardInfo.address = words_result[\"住址\"].words;\n _this.rightSideUrl = imgUrl;\n resolve(true);\n } catch {\n resolve(false);\n }\n } else {\n resolve(false);\n }\n } else {\n resolve(true);\n let endTime = words_result[\"失效日期\"].words;\n let endDate = \"\";\n if (isNaN(endTime)) {\n //如果时间为长期,传null\n endDate = null;\n } else {\n endDate = endTime.slice(0, 4) + \"-\" + endTime.slice(4, 6) + \"-\" + endTime.slice(-2);\n }\n let beginTime = words_result[\"签发日期\"].words;\n let beginDate = \"\";\n if (isNaN(beginTime)) {\n beginDate = null;\n } else {\n beginDate = beginTime.slice(0, 4) + \"-\" + beginTime.slice(4, 6) + \"-\" + beginTime.slice(-2);\n }\n if (endDate) {\n let _endDate = new Date(endDate).getTime();\n let today = new Date().getTime();\n if (today > _endDate) {\n _this.$message.error('该证件已过期,请证件补办后再提交核验!');\n }\n }\n _this.userIdcardInfo.validDateFrom = beginDate;\n _this.userIdcardInfo.validDateTo = endDate;\n _this.reverseSideUrl = imgUrl;\n }\n } else {\n _this.$message.error('身份证识别失败,请重新上传清晰图片!');\n reject();\n }\n }).catch(err => {\n reject(err);\n });\n };\n });\n },\n // 人脸比对\n matchFace() {\n return new Promise((resolve, reject) => {\n const params = {\n oneImg: this.headPhoto,\n //身份证生成的---头像走百度生成一寸白底照片 obs地址\n twoImg: this.obsFilePath //活体图片obs地址\n };\n console.log('params:-人脸比对参数 ', params);\n // 公共服务\n const commonBaseUrl = this.isDev ? \"https://identify.test.bcxin.com.cn\" : \"https://identify.qiye.baibaodun.com.cn:14433\";\n matchFaceApi(params, commonBaseUrl).then(res => {\n console.log(\"🚀 ~ matchFaceApi ~ res:\", res);\n if (res.retType == 0) {\n let faceMatch = res.data.result;\n if (faceMatch == 1) {\n return resolve(true);\n }\n }\n resolve(false);\n }).catch(err => {\n console.log(\"🚀 ~ matchFaceApi ~ err:\", err);\n reject(false);\n });\n });\n },\n async toFace() {\n if (!this.typeLabel) {\n return this.$message.error('请选择证件类型');\n }\n if (!this.rightSideUrl) {\n return this.$message.error('请先采集身份证人面像');\n }\n if (!this.userIdcardInfo.address) {\n return this.$message.error('身份证人面信息识别失败,请重新上传');\n }\n if (!this.userIdcardInfo.validDateFrom) {\n return this.$message.error('请先采集身份证国徽面');\n }\n if (this.faceCollectLabel === '未采集') {\n return this.$message.error('请先采集人脸信息');\n }\n if (!this.phone) {\n return this.$message.error('请输入手机号');\n }\n if (!/^[1][3,4,5,7,8,9][0-9]{9}$/.test(this.phone)) {\n return this.$message.error('请输入正确的手机号');\n }\n const res = await this.matchFace();\n if (!res) {\n return this.$message.error('人脸比对失败');\n }\n const params = {\n address: this.userIdcardInfo.address,\n areaCode: this.areaCode,\n certificateImage: this.obsFilePath,\n credentialType: this.credentialType,\n loginFrom: \"BBD\",\n name: this.userIdcardInfo.name,\n number: this.userIdcardInfo.idCardNum,\n phone: this.phone,\n frontPhoto: this.frontPhoto,\n headPhoto: this.headPhoto,\n reversePhoto: this.reversePhoto,\n validDateFrom: this.userIdcardInfo.validDateFrom,\n validDateTo: this.userIdcardInfo.validDateTo\n // wgtVersion: \"1.0.0\"\n };\n const headers = {\n Authorization: \"Bearer \" + this.token\n };\n confirmCheckStatus(params, headers).then(res => {\n console.log(\"🚀 ~ confirmCheckStatus ~ res:\", res);\n this.$message.success('核验成功');\n wx.miniProgram.postMessage({\n data: {\n msg: '身份核验成功',\n cgiToken: res.data.cgiToken,\n token: res.data.token\n }\n });\n wx.miniProgram.navigateBack();\n }).catch(err => {\n // this.$message.error('核验失败!');\n });\n }\n }\n};","map":{"version":3,"names":["wx","uploadObs","matchFaceApi","uploadBase64ImgToV5Api","confirmCheckStatus","uploadFileToV5Api","getBaiduFace","getBaiduIdcard","getBaiduResultSimple","getBaiduFaceDetail","name","data","token","areaCode","credentialType","domainId","obsFilePath","faceCollectLabel","videoWidth","videoHeight","typeLabel","idCardType","rightSideUrl","reverseSideUrl","drawer","cardTypeShow","userIdcardInfo","idCardNum","address","validDateFrom","validDateTo","phone","cardTypeArr","label","value","faceImage","isDev","timer","headPhoto","computed","mounted","console","log","$route","query","localStorage","setItem","indexOf","cdnFileUrl","beforeDestroy","methods","getFaceImage","verify_token","clearInterval","then","res","success","result","image","uni","postMessage","msg","miniProgram","faceCollection","handleClose","$refs","faceFile","click","takeIdCard","e","selectCardType","toCollect","type","takeFile","takeCamera","video","document","getElementById","canvas","context","getContext","drawImage","imgSrc","toDataURL","leftFile","getFile","file","target","files","obsUrl","loading","$loading","lock","text","spinner","background","customClass","fileChange","close","frontPhoto","reversePhoto","$message","error","uploadFileToV5","params","filePath","statusCode","JSON","parse","status","catch","err","getWhitePortraitPhoto","Promise","resolve","reject","bStream","fullFile","replace","_this","reader","FileReader","readAsDataURL","onload","imgUrl","url","split","id_card_side","detect_photo","image_status","words_result","photo","portrait","words","endTime","endDate","isNaN","slice","beginTime","beginDate","_endDate","Date","getTime","today","matchFace","oneImg","twoImg","commonBaseUrl","retType","faceMatch","toFace","test","certificateImage","loginFrom","number","headers","Authorization","cgiToken","navigateBack"],"sources":["src/views/face/index.vue"],"sourcesContent":["\n \n\n \n\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}