{"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;\n this.token = token;\n this.headPhoto = headPhoto;\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.takeFile();\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 this.fileChange(file);\n // this.uploadFileToV5(file);\n const obsUrl = await uploadObs(file, this.domainId);\n if (this.idCardType === 'front') {\n this.frontPhoto = obsUrl;\n } else {\n this.reversePhoto = obsUrl;\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 },\n // 身份证OCR识别\n fileChange(e) {\n const _this = this;\n let img = e; //获取到上传文件的对象\n const reader = new FileReader();\n reader.readAsDataURL(img); //参数为上传的文件对象 传值进去就会触发以下onload方法\n reader.onload = function (e) {\n // e.target.result为转换成的base64编码\n let url = e.target.result.split(',')[1];\n if (_this.idCardType === 'front') {\n _this.rightSideUrl = e.target.result;\n } else {\n _this.reverseSideUrl = e.target.result;\n }\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 _this.userIdcardInfo.name = words_result['姓名'].words;\n _this.userIdcardInfo.idCardNum = words_result['公民身份号码'].words;\n _this.userIdcardInfo.address = words_result[\"住址\"].words;\n if (photo) {\n //有采集到身份证头像才显示\n _this.portrait = \"data:image/jpg;base64,\" + photo;\n //采集到身份证的头像,百度识别接口返回1寸白底照片\n const {\n file,\n fullFile\n } = await _this.getWhitePortraitPhoto(_this.portrait);\n _this.headPhoto = file;\n }\n } else {\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 }\n } else {\n _this.$message.error('识别失败,请重新上传清晰图片!');\n }\n });\n };\n },\n // 人脸比对\n matchFace() {\n return new Promise((resolve, reject) => {\n let oneImg = this.headPhoto;\n if (oneImg && oneImg.indexOf('http') == -1) {\n // v5文件访问路径\n const cdnFileUrl = this.isDev ? \"https://v5qy.te.baibaodun.com.cn\" : \"https://v5qy.baibaodun.cn\";\n oneImg = cdnFileUrl + '/obpm' + oneImg;\n }\n const params = {\n oneImg: oneImg,\n //身份证生成的---头像走百度生成一寸白底照片 obs地址\n twoImg: this.obsFilePath //活体图片obs地址\n };\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 const res = await this.matchFace();\n console.log(\"🚀 ~ toFace ~ res:\", res);\n if (!res) {\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 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","beforeDestroy","methods","getFaceImage","verify_token","clearInterval","then","res","success","result","image","uni","postMessage","msg","miniProgram","faceCollection","takeFile","takeIdCard","e","handleClose","selectCardType","toCollect","type","takeCamera","video","document","getElementById","canvas","context","getContext","drawImage","imgSrc","toDataURL","$refs","leftFile","click","getFile","file","target","files","obsUrl","fileChange","frontPhoto","reversePhoto","uploadFileToV5","params","filePath","statusCode","JSON","parse","status","catch","err","getWhitePortraitPhoto","Promise","resolve","reject","bStream","indexOf","fullFile","replace","$message","error","_this","img","reader","FileReader","readAsDataURL","onload","url","split","id_card_side","detect_photo","image_status","words_result","photo","words","portrait","endTime","endDate","isNaN","slice","beginTime","beginDate","_endDate","Date","getTime","today","matchFace","oneImg","cdnFileUrl","twoImg","commonBaseUrl","retType","faceMatch","toFace","certificateImage","loginFrom","number","headers","Authorization","cgiToken","navigateBack"],"sources":["src/views/face/index.vue"],"sourcesContent":["\n\t\n 请完成实名认证后进行使用\n \n \n *证件类型\n {{typeLabel}}\n \n \n *身份证人面像\n \n \n 点击采集\n \n \n \n *身份证国徽面\n \n \n 点击采集\n \n \n \n *姓名\n {{userIdcardInfo.name}}\n \n \n *身份证号\n {{userIdcardInfo.idCardNum}}\n \n \n *手机号\n \n \n \n *人脸采集\n {{faceCollectLabel}}\n \n 提交核验\n \n \n \n \n {{item.label}}\n \n \n \n \n\t\n\n \n\n \n\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}