{"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 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 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.baibaodun.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 || _this.headPhoto == 'undefined') {\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 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 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","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","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","indexOf","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","cdnFileUrl","twoImg","commonBaseUrl","retType","faceMatch","toFace","test","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":[]}