{"ast":null,"code":"import wx from \"weixin-js-sdk\";\nimport { obsConfig } from \"@/utils/secret.js\";\nimport { 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 };\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 } = this.$route.query;\n this.domainId = domainId;\n this.areaCode = areaCode;\n this.isDev = isDev;\n this.token = token;\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 getFile(e) {\n let file = e.target.files[0];\n if (this.idCardType === 'face') {\n // 人脸采集\n this.uploadObs(file);\n } else {\n // 身份证采集\n this.fileChange(file);\n // this.uploadFileToV5(file);\n this.uploadObs(file);\n }\n this.$refs.leftFile.value = '';\n },\n // 上传文件到obs\n uploadObs(file) {\n const domainId = this.domainId;\n const now = new Date();\n const y = now.getFullYear();\n const m = now.getMonth() + 1 < 10 ? '0' + (now.getMonth() + 1) : now.getMonth() + 1;\n const d = now.getDate() < 10 ? '0' + now.getDate() : now.getDate();\n const md = m + '-' + d;\n const objectKey = `uploads/${y}/${md}/${domainId}/${now.getTime()}/${file.name}`;\n let _this = this;\n const obs = new ObsClient({\n access_key_id: obsConfig.ak,\n secret_access_key: obsConfig.sk,\n server: obsConfig.urlserver,\n timeout: 60 * 5\n });\n obs.putObject({\n Bucket: obsConfig.BucketName,\n Key: objectKey,\n SourceFile: file //获取file文件\n }).then(function (result) {\n if (result.CommonMsg.Status < 300) {\n const httpurl = `https://${obsConfig.BucketName}.${obsConfig.urlserver}/${objectKey}`;\n if (_this.idCardType === 'face') {\n _this.obsFilePath = httpurl;\n _this.faceCollectLabel = '已采集';\n } else {\n if (_this.idCardType === 'front') {\n _this.frontPhoto = httpurl;\n } else {\n _this.reversePhoto = httpurl;\n }\n }\n }\n });\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 async toFace() {\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","obsConfig","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","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","uploadObs","fileChange","now","Date","y","getFullYear","m","getMonth","d","getDate","md","objectKey","getTime","_this","obs","ObsClient","access_key_id","ak","secret_access_key","sk","server","urlserver","timeout","putObject","Bucket","BucketName","Key","SourceFile","CommonMsg","Status","httpurl","frontPhoto","reversePhoto","uploadFileToV5","params","filePath","statusCode","JSON","parse","status","catch","err","getWhitePortraitPhoto","Promise","resolve","reject","bStream","indexOf","fullFile","replace","$message","error","img","reader","FileReader","readAsDataURL","onload","url","split","id_card_side","detect_photo","image_status","words_result","photo","words","portrait","headPhoto","endTime","endDate","isNaN","slice","beginTime","beginDate","_endDate","today","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":[]}