Commit 7c1b3d2a by 张超军

1.双指采集。

	2.解决图片下载,区别原图和压缩图的下载。
	3.解决设备刚启动时,无法立即关闭,导致下一次无法关闭出现机器后续开启的bug。
	4.掌纹回显
	5.对接保存图片,处理图片,保存分数(掌纹)
parent b9813579
/*
* @Author: your name
* @Date: 2021-09-07 09:57:48
* @LastEditTime: 2022-06-26 16:58:52
* @LastEditTime: 2022-06-28 14:32:36
* @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \指纹系统\founder_vue\babel.config.js
......@@ -18,5 +18,5 @@ module.exports = {
presets: ["@vue/cli-plugin-babel/preset"],
plugins: plugins
// presets: ['@vue/app'],
// plugins: ["@babel/plugin-proposal-optional-chaining"]
// plugins: ["@babel/plugin-proposal-optional-chaining", "transform-remove-console"]
};
<!--
* @Author: your name
* @Date: 2021-09-09 09:28:46
* @LastEditTime: 2022-05-25 17:35:35
* @LastEditTime: 2022-06-28 15:26:54
* @Description: In User Settings Edit
* @FilePath: \指纹系统\founder_vue\src\views\cxyrd\LTz.vue
-->
......@@ -3261,7 +3261,7 @@ export default {
}
}).then(res => {
if (res.data.code === 0) {
let bstr = atob(res.data.ret), //解析 base-64 编码的字符串
let bstr = atob(res.data.ret.image), //解析 base-64 编码的字符串
n = bstr.length,
u8arr = new Uint8Array(n); //创建初始化为0的,包含length个元素的无符号整型数组
while (n--) {
......@@ -3271,10 +3271,17 @@ export default {
let url = URL.createObjectURL(blob);//这个新的URL 对象表示指定的 File 对象或 Blob 对象
let a = document.createElement('a') //创建一个a标签
a.href = url;
let imageType = 'bmp'
// 返回的是原图
if (res.data.ret.imageType === 'BMP') {
imageType = 'bmp'
} else {
imageType = 'png'
}
if (type === 2) {
a.download = this.$t('ImageEd.palmprint_picture')+'.bmp'
a.download = self.$t('ImageEd.palmprint_picture')+'.'+imageType
} else {
a.download = this.$t('ImageEd.fingerprint_picture')+'.bmp';
a.download = self.$t('ImageEd.fingerprint_picture')+'.'+imageType;
}
a.click();
URL.revokeObjectURL(a.href); //释放之前创建的url对象
......
/*
* @Author: your name
* @Date: 2022-03-25 16:36:01
* @LastEditTime: 2022-06-24 18:10:42
* @LastEditTime: 2022-06-27 13:44:07
* @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \uuuz\founder_vue\src\i18n\zh-cn.js
......@@ -423,7 +423,8 @@ export default {
getting_info: '正在获取信息,请稍后',
warning: '警告',
finger_repeat_collect: '该指位采集重复',
not_correspond_roll_finger: '与滚动指位对应不上'
not_correspond_roll_finger: '与滚动指位对应不上',
finger_plane_acquisition: '连指平面采集'
},
// FPTX导入 / FPTX导入任务
FptxDr: {
......
<!--
* @Author: your name
* @Date: 2021-10-22 11:36:10
* @LastEditTime: 2022-05-26 16:54:42
* @LastEditTime: 2022-06-28 15:26:42
* @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
* @Description: In User Settings Edit
* @FilePath: \指纹系统\founder_vue\src\views\Editor\modules\imageEd.vue
......@@ -1032,7 +1032,7 @@ export default {
}).then(res => {
// console.log(res);
if (res.data.code === 0) {
let bstr = atob(res.data.ret), //解析 base-64 编码的字符串
let bstr = atob(res.data.ret.image), //解析 base-64 编码的字符串
n = bstr.length,
u8arr = new Uint8Array(n); //创建初始化为0的,包含length个元素的无符号整型数组
while (n--) {
......@@ -1042,10 +1042,17 @@ export default {
let url = URL.createObjectURL(blob);//这个新的URL 对象表示指定的 File 对象或 Blob 对象
let a = document.createElement('a') //创建一个a标签
a.href = url;
let imageType = 'bmp'
// 返回的是原图
if (res.data.ret.imageType === 'BMP') {
imageType = 'bmp'
} else {
imageType = 'png'
}
if (type === 2) {
a.download = '掌纹图片.bmp'
a.download = self.$t('ImageEd.palmprint_picture')+'.'+imageType
} else {
a.download = '指纹图片.bmp';
a.download = self.$t('ImageEd.fingerprint_picture')+'.'+imageType
}
a.click();
URL.revokeObjectURL(a.href); //释放之前创建的url对象
......
......@@ -55,7 +55,7 @@
<!-- 选择采集类型 -->
<div class="collection-type">
<el-checkbox-group v-model="checkList">
<el-checkbox disabled :label="$t('FingerPrint.quad_finger')"></el-checkbox>
<el-checkbox :label="$t('FingerPrint.finger_plane_acquisition')"></el-checkbox>
<el-checkbox :disabled="zwjcyz" :label="$t('FingerPrint.cross_verification')"></el-checkbox>
<el-checkbox disabled :label="$t('FingerPrint.stop_collection')"></el-checkbox>
</el-checkbox-group>
......@@ -1662,9 +1662,10 @@ export default {
// iB
this.pop = false
this.isAlter = false
// 如果是600U采集器,就显示掌纹采集
// 如果是600U采集器,就显示掌纹采集,自动勾选连指平面采集
if (self.deviceModel.split('-')[0] == 'LS') {
this.isShowHandsPrint = 1
this.checkList.push(this.$t('FingerPrint.finger_plane_acquisition'))
}
this.getPersonInfo()
// 获取到SN序列号,ip地址,发送到服务器
......@@ -1805,7 +1806,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -1891,11 +1892,11 @@ export default {
let md5str = self.checkMd5(img)
let params = new URLSearchParams();
params.append('rollimgstr', img);
params.append('palmimgstr', img);
params.append('md5str', md5str);
self.$axios({
method: 'post',
url: '/api/dealImgStr',
url: '/api/dealPalmImg',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
......@@ -1904,13 +1905,13 @@ export default {
let cf = self.findHandCF(self.hands[index-30].code)
//console.log(cf)
if (cf != null) {
self.handsPic[cf] = {
self.handPic[cf] = {
zhwzhwdm: self.hands[index-30].code,
zhw_txsj: res.data,
zhw_txzl: self.hands[index-30].score
}
} else {
self.fingerPic.push({ zhwzhwdm: self.hands[index-30].code, zhw_txsj: res.data, zhw_txzl: self.hands[index-30].score })
self.handPic.push({ zhwzhwdm: self.hands[index-30].code, zhw_txsj: res.data, zhw_txzl: self.hands[index-30].score })
}
self.saveScore(self.rybh, self.hands[index-30].score, self.hands[index-30].code)
//console.log(self.fingerPic)
......@@ -2010,7 +2011,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -2295,7 +2296,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -2645,19 +2646,24 @@ export default {
}
self.$set(self.hands[index-30], 'imgSrc', 'data:image/bmp;base64,' + data.handResult.saveImage)
// TODO
console.log(data.handResult.saveImage);
// 先md5校验,然后调用接口传入图片数据和md5校验
let rollMd5 = self.checkMd5(data.handResult.saveImage)
let paramsR = new URLSearchParams()
paramsR.append('rybh', self.rybh);
paramsR.append('md5str', rollMd5);
paramsR.append('filename', "" + (index + 1) + ".bmp," + (index + 10 + 1) + ".bmp");
paramsR.append('rollimgstr', data.handResult.saveImage);//这里可为null
let zhangwenIndex = index + 1
paramsR.append('filename', "zw.bmp," + "zw.bmp," + zhangwenIndex + '.bmp');
paramsR.append('rollimgstr', null);//这里可为null
paramsR.append('plaimimgstr', null);//这里可为null
paramsR.append('palmimgstr', data.handResult.saveImage)
self.$axios({
url: '/api/saveFingerImg',
method: 'post',
data: paramsR
}).then(resR => {
console.log(resR);
if (resR.status == 200) {
// self.$message.success(resR.data)
}
......@@ -2668,16 +2674,17 @@ export default {
let md5str = self.checkMd5(img)
let params = new URLSearchParams();
params.append('rollimgstr', img);
params.append('palmimgstr', img);
params.append('md5str', md5str);
self.$axios({
method: 'post',
url: '/api/dealImgStr',
url: '/api/dealPalmImg',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
data: params
}).then(res => {
console.log(res);
let cf = self.findHandCF(self.hands[index-30].code)
if (cf != null) {
self.handPic[cf] = {
......@@ -2892,6 +2899,12 @@ export default {
data["cmd"] = 102;
let json = JSON.stringify(data)
this.ws.send(json);
this.ws.onmessage = function (ev) {
let data = JSON.parse(ev.data)
if (data.message === 'Capture is not working') {
self.ws.send(json);
}
}
// socket存在延迟,因此延时
setTimeout(() => {
......@@ -2989,6 +3002,7 @@ export default {
*/
displayPics (pics) {
let self = this
console.log(pics);
pics.forEach(item => {
switch (item.seq) {
case '01':
......@@ -3312,10 +3326,67 @@ export default {
zw_txzl: item.score
})
break;
case '31':
self.hands[2].score = item.score
self.hands[2].imgSrc = "data:image/bmp;base64," + item.imageStr
if (item.score >= self.defaultScore) {
self.hands[2].status = 3
} else {
self.hands[2].status = 2
}
self.handPic.push({
zhwzhwdm: item.seq,
zhw_txsj: item.dealImageStr,
zhw_txzl: item.score
})
break;
case '32':
self.hands[0].score = item.score
self.hands[0].imgSrc = "data:image/bmp;base64," + item.imageStr
if (item.score >= self.defaultScore) {
self.hands[0].status = 3
} else {
self.hands[0].status = 2
}
self.handPic.push({
zhwzhwdm: item.seq,
zhw_txsj: item.dealImageStr,
zhw_txzl: item.score
})
break;
case '33':
self.hands[3].score = item.score
self.hands[3].imgSrc = "data:image/bmp;base64," + item.imageStr
if (item.score >= self.defaultScore) {
self.hands[3].status = 3
} else {
self.hands[3].status = 2
}
self.handPic.push({
zhwzhwdm: item.seq,
zhw_txsj: item.dealImageStr,
zhw_txzl: item.score
})
break;
case '34':
self.hands[1].score = item.score
self.hands[1].imgSrc = "data:image/bmp;base64," + item.imageStr
if (item.score >= self.defaultScore) {
self.hands[1].status = 3
} else {
self.hands[1].status = 2
}
self.handPic.push({
zhwzhwdm: item.seq,
zhw_txsj: item.dealImageStr,
zhw_txzl: item.score
})
break;
}
})
console.log(this.fingersLeft);
console.log(this.fingersRight);
// console.log(this.fingersLeft);
// console.log(this.fingersRight);
console.log(this.hands);
},
/**
* @description: 展示手指颜色
......@@ -4199,7 +4270,7 @@ export default {
}, 300)
if (self.clickTimes === 2) { //当点击次数为2
self.clickTimes = 0; //记得清零
// 触发双击事件...
// 触发双击事件...
// alert(2)
self.changeSelect(finger, index, type)
}
......@@ -6448,20 +6519,27 @@ export default {
}
this.fingerImg = ''
self.frameImage = false
if (finger.statusL == 0) {
//console.log('执行自动录指纹');
// TODO
// this.SmallAutoLuL(this.fingersLeft, this.fingersRight, index)
setTimeout(() => {
self.SmallAutoLuL(this.fingersLeft, this.fingersRight, index)
}, 200);
} else {
//console.log('录制单个');
// TODO
// 如果是平面,连指采集
if (self.checkList.indexOf(self.$t('FingerPrint.finger_plane_acquisition')) != -1) {
setTimeout(() => {
self.SmallLuLC(this.fingersLeft, this.fingersRight, index, 2, -1)
self.ContinuousFingerLu(this.fingersLeft, this.fingersRight, index)
}, 200)
// this.SmallLuLC(this.fingersLeft, this.fingersRight, index, 2, -1)
} else {
if (finger.statusL == 0) {
//console.log('执行自动录指纹');
// TODO
// this.SmallAutoLuL(this.fingersLeft, this.fingersRight, index)
setTimeout(() => {
self.SmallAutoLuL(this.fingersLeft, this.fingersRight, index)
}, 200);
} else {
//console.log('录制单个');
// TODO
setTimeout(() => {
self.SmallLuLC(this.fingersLeft, this.fingersRight, index, 2, -1)
}, 200)
}
}
}
} else {
......@@ -6557,7 +6635,7 @@ export default {
if (this.version.DeviceSn) {
this.moqiChangeSelect(finger, index)
} else {
// iB
// iB -- 600u
this.smallChangeSelect(finger, index, type)
}
// this.moqiChangeSelect(finger, index)
......@@ -6653,7 +6731,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -6845,7 +6923,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -7064,7 +7142,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -7596,7 +7674,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -8119,7 +8197,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -8643,7 +8721,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -9189,7 +9267,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -9497,7 +9575,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -9807,7 +9885,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -10115,7 +10193,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -10436,7 +10514,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -10621,7 +10699,7 @@ export default {
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0);
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
......@@ -10831,201 +10909,1222 @@ export default {
}
},
/**
* @name: 展示指纹提示
* @param {*}
* @return {*}
*/
showTip () {
setTimeout(() => {
this.tipType = 'none'
}, 2000);
},
/**
* @name: 墨奇单击事件
* @param {*}
* @description: 平面连指采集
* @param {*} leftList
* @param {*} rightList
* @param {*} index
* @return {*}
*/
moqiLookFinger (finger, index, type = 'r') {
// 是否单击了
this.dj = true
//console.log('单击')
this.stop = true
//console.log('===========================')
//console.log(this.preIndex);
//console.log(this.preStatusR);
//console.log(this.preStatusL);
//console.log('===========================')
this.checked = finger.isLackFinger
if (this.GrpcCameraService && this.preStatusR != 4 && this.preStatusL != 4 && this.preStatusR != 3 && this.preStatusL != 3 && this.preStatusR != 2 && this.preStatusL != 2) {
this.GrpcCameraService.stopVideoStream()
// this.preIndex = index
if (this.preStatusR == 1 && this.preStatusL == 1) {
this.preStatusL = 0
this.preStatusR = 0
}
// 重置相机
// this.GrpcCameraService = null
}
if (this.preIndex != null && this.preStatusL != null && this.preStatusR != null) {
if (this.preIndex >= 5) {
//console.log(5555);
//console.log('单击', this.preStatusR)
//console.log('单击', this.preStatusL)
//console.log('单击', this.preIndex)
this.$set(this.fingersLeft[this.preIndex - 5], 'statusR', this.preStatusR)
this.$set(this.fingersLeft[this.preIndex - 5], 'statusL', this.preStatusL)
// this.fingersLeft[this.preIndex - 5].status = this.preStatus
this.preCode = this.fingersLeft[this.preIndex - 5].code
} else {
//console.log('单击', this.preStatusR)
//console.log('单击', this.preStatusL)
//console.log(6666);
this.$set(this.fingersRight[this.preIndex], 'statusR', this.preStatusR)
this.$set(this.fingersRight[this.preIndex], 'statusL', this.preStatusL)
//console.log(this.fingersRight[this.preIndex]);
// //console.log(this.fingersRight[this.preIndex]);
// this.fingersRight[this.preIndex].status = this.preStatus
this.preCode = this.fingersRight[this.preIndex].code
}
}
this.preIndex = index
this.preStatusR = finger.statusR
this.preStatusL = finger.statusL
// 调用api获取finger图像 finger.code
// let result = img1
// this.fingerImg = result
if (index < 5) {
//console.log(11111);
this.$set(this.fingersRight[index], 'statusR', 1)
this.$set(this.fingersRight[index], 'statusL', 1)
if (type == 'r') {
this.fingerImg = this.fingersRight[index].imgSrcR
// //console.log(this.fingerImg);
} else {
this.fingerImg = this.fingersRight[index].imgSrcL
// //console.log(this.fingerImg);
}
this.checked = finger.isLackFinger
this.cur = index + 1
this.tipTitle = this.fingerTips[index]
*/
ContinuousFingerLu (leftList, rightList, index) {
// 拇指 -- 双指采集
if (index === 0 || index === 5) {
let model = 3
let contrast = -1
this.DoubleFingerLu(leftList, rightList, index, model, contrast)
} else {
//console.log(22222);
this.$set(this.fingersLeft[index - 5], 'statusR', 1)
this.$set(this.fingersLeft[index - 5], 'statusL', 1)
if (type == 'r') {
this.fingerImg = this.fingersLeft[index - 5].imgSrcR
// //console.log(this.fingerImg);
} else {
this.fingerImg = this.fingersLeft[index - 5].imgSrcL
// //console.log(this.fingerImg);
}
this.checked = finger.isLackFinger
this.cur = index + 1
this.tipTitle = this.fingerTips[index]
// 其他四指采集
let model = 5
let contrast = -1
this.FourFingerLu(leftList, rightList, index, model, contrast)
}
//console.log('------------------------------')
//console.log(this.preIndex);
//console.log(this.preStatusR);
//console.log(this.preStatusL);
//console.log('------------------------------')
},
/**
* @name: 小采集器单击事件
* @param {*}
* @description: 双指采集
* @param {*} leftList
* @param {*} rightList
* @param {*} index
* @param {*} model
* @param {*} contrast
* @return {*}
*/
smallLookFinger (finger, index, type) {
//console.log('单击')
//console.log('===========================')
//console.log(this.preIndexR);
//console.log(this.preIndexL);
//console.log(this.preStatusR);
//console.log(this.preStatusL);
//console.log('===========================')
// 停止采集
let data = {};
data["cmd"] = 102;
let json = JSON.stringify(data)
this.ws.send(json);
*/
DoubleFingerLu (leftList, rightList, index, model, contrast) {
console.log('双指采集');
let self = this
// socket存在延迟,因此延时
setTimeout(() => {
// 从指纹切换过来
if (self.preCode < 30) {
self.frameImage = false
if (type == 'r') {
self.checked = finger.isLackFingerR
contrast = self.contrastvalue || -1
// self.ws = new WebSocket("ws://localhost:12345/websocket")
let result = new Promise((resolve, reject) => {
let temporaryImage;
let objectURL = window.URL || window.webkitURL;
self.checked = false
// 开启视频
self.videoSrc = self.videoList[index]
self.playFn()
// 右手
if (index < 5) {
// 进入录制状态
self.$set(rightList[index], 'statusL', 1)
self.$set(rightList[index], 'scoreL', '')
self.$set(rightList[index], 'imgSrcL', '')
self.$set(rightList[index], 'isLackFingerL', false)
// 改变手指
if (self.themeType == "深色" || self.themeType == "浅色") {
this.$refs.rightFinger.children[index].setAttribute('src', self.defaultFingerArr[index])
} else {
self.checked = finger.isLackFingerL
this.$refs.rightFinger.children[index].setAttribute('src', self.whiteFingerArr[index])
}
if (self.preStatusR == 1) {
self.preStatusR = 0
}
if (self.preStatusL == 1) {
self.preStatusL = 0
}
if (self.preIndexL != null && self.preStatusL != null) {
if (self.preIndexL >= 5) {
self.$set(self.fingersLeft[self.preIndexL - 5], 'statusL', self.preStatusL)
} else {
self.$set(self.fingersRight[self.preIndexL], 'statusL', self.preStatusL)
}
}
if (self.preIndexR != null && self.preStatusR != null) {
if (self.preIndexR >= 5) {
self.$set(self.fingersLeft[self.preIndexR - 5], 'statusR', self.preStatusR)
} else {
self.$set(self.fingersRight[self.preIndexR], 'statusR', self.preStatusR)
}
}
if (type == 'r') {
self.preIndexR = index
self.preStatusR = finger.statusR
self.preCode = finger.code
} else {
self.preIndexL = index
self.preStatusL = finger.statusL
self.preCode = finger.code
}
// self.preIndex = index
// self.preStatusR = finger.statusR
// self.preStatusL = finger.statusL
// 调用api获取finger图像 finger.code
// let result = img1
// self.fingerImg = result
if (type == 'r') {
self.preType = 'r'
if (index < 5) {
self.$set(self.fingersRight[index], 'statusR', 1)
self.fingerImg = self.fingersRight[index].imgSrcR
self.checked = finger.isLackFingerR
self.cur = index + 1
self.tipTitle = self.fingerTips[index]
} else {
self.$set(self.fingersLeft[index - 5], 'statusR', 1)
self.fingerImg = self.fingersLeft[index - 5].imgSrcR
self.checked = finger.isLackFingerR
self.cur = index + 1
self.tipTitle = self.fingerTips[index]
}
} else {
self.preType = 'l'
if (index < 5) {
self.$set(self.fingersRight[index], 'statusL', 1)
self.fingerImg = self.fingersRight[index].imgSrcL
self.checked = finger.isLackFingerL
self.cur = index + 1
self.tipTitle = self.fingerTips[index]
} else {
self.$set(self.fingersLeft[index - 5], 'statusL', 1)
self.fingerImg = self.fingersLeft[index - 5].imgSrcL
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.fingerImg = ''
self.frameImage = false
self.checked = false
self.cur = index + 1
self.preIndexL = index
self.preCode = rightList[index].code
self.preType = 'l'
self.preStatusL = 1
self.tipTitle = self.fingerTips[index]
//console.log('相机开始');
// 启用相机
// self.canvas = document.getElementById("frameImage");
// self.ctx = self.canvas.getContext("2d");
// self.frameWidth = document.getElementById("frameImage").width;
// self.frameHeight = document.getElementById("frameImage").height;
self.ctx.clearRect(0, 0, 538, 478);
self.samllData = {};
self.samllData["cmd"] = 101;
self.samllData["isNewPeople"] = 0;
self.samllData["imageType"] = model;
self.samllData["contrast"] = contrast;
self.samllData["frameWidth"] = parseInt(self.frameWidth);
self.samllData["frameHeight"] = parseInt(self.frameHeight);
let json = JSON.stringify(self.samllData)
self.ws.send(json);
// 获取结果
self.ws.onmessage = async function (ev) {
let json = JSON.parse(ev.data);
if (json.code == 0) {
let data = json.data
if (data == null) {
return;
}
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
self.ctx.lineTo(data.singleRolledFinger.lineX, self.canvas.height);
self.ctx.strokeStyle = data.singleRolledFinger.lineColor;
self.ctx.lineWidth = 2;
self.ctx.stroke();
self.ctx.closePath();
}
};
if (temporaryImage) {
objectURL.revokeObjectURL(temporaryImage);
}
var imageDataBlob = self.convertDataURIToBlob("data:image/bmp;base64," + data.previewImage);
temporaryImage = objectURL.createObjectURL(imageDataBlob);
self.frameImage = true
// self.fingerImg = temporaryImage;
image.src = temporaryImage;
if (self.checked) {
// TODO
// 缺指设置为null
// let res = await self.$axios.post();
// while (!res) {
// res = await self.$axios.post();
// }
self.preStatusL = 4
resolve({ status: 'anaphora' })
}
}
if (data.phase == "Succeeded") {
if (data.hasOwnProperty("twoFlatFinger")) {
self.$set(rightList[index], 'scoreL', data.twoFlatFinger.nfiq2Score[0])
self.$set(leftList[index], 'scoreL', data.twoFlatFinger.nfiq2Score[1])
self.$set(leftList[index], 'isLackFingerL', false)
// 大于及格分
if (rightList[index].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.rightFinger.children[index].setAttribute('src', self.fingerArr[index])
} else {
self.$refs.rightFinger.children[index].setAttribute('src', self.whiteArr[index])
}
self.$set(rightList[index], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
self.preStatusL = 3
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
self.$set(rightList[index], 'statusL', 2)
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.rightFinger.children[index].setAttribute('src', self.fingerArr[index + 10])
} else {
self.$refs.rightFinger.children[index].setAttribute('src', self.whiteArr[index + 10])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.preStatusL = 2
self.tipType = 'warning'
self.showTip()
}
if (leftList[index].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[index].setAttribute('src', self.fingerArr[index + 10 - 5])
} else {
self.$refs.leftFinger.children[index].setAttribute('src', self.whiteArr[index + 10 - 5])
}
self.$set(leftList[index], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
// self.preStatusL = 3
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
self.$set(leftList[index], 'statusL', 2)
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[index].setAttribute('src', self.fingerArr[index + 10 + 10 - 5])
} else {
self.$refs.leftFinger.children[index].setAttribute('src', self.whiteArr[index + 10 + 10 - 5])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
// self.preStatusL = 2
self.tipType = 'warning'
self.showTip()
}
// TODO
// 先md5校验,然后调用接口传入图片数据和md5校验
let plainImg = ''
plainImg = data.twoFlatFinger.saveImage[0]
let plainMd5 = self.checkMd5(plainImg)
let paramsL = new URLSearchParams()
paramsL.append('rybh', self.rybh);
paramsL.append('md5str', plainMd5);
paramsL.append('filename', "" + (index + 1) + ".bmp," + (index + 10 + 1) + ".bmp");
paramsL.append('rollimgstr', null);//这里可为null
paramsL.append('plaimimgstr', plainImg);//这里可为null
self.$axios({
url: '/api/saveFingerImg',
method: 'post',
data: paramsL
}).then(resL => {
if (resL.status == 200) {
// self.$message.success(resL.data)
}
})
self.$set(rightList[index], 'imgSrcL', 'data:image/bmp;base64,' + plainImg)
// 获取图片处理的结果
let img = rightList[index].imgSrcL.replace(/^data:image\/\w+;base64,/, "");
// let img = item.imgSrcL
let md5str = self.checkMd5(img)
let params = new URLSearchParams();
params.append('rollimgstr', img);
params.append('md5str', md5str);
self.$axios({
method: 'post',
url: '/api/dealImgStr',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
data: params
}).then(res => {
let cf = self.findCF(Number(rightList[index].code) + 10)
if (cf != null) {
self.fingerPic[cf] = {
zwzwdm: Number(rightList[index].code) + 10,
zw_txsj: res.data,
zw_txzl: rightList[index].scoreL
}
} else {
self.fingerPic.push({ zwzwdm: Number(rightList[index].code) + 10, zw_txsj: res.data, zw_txzl: rightList[index].scoreL })
}
self.saveScore(self.rybh, rightList[index].scoreL, Number(rightList[index].code) + 10)
})
// 先md5校验,然后调用接口传入图片数据和md5校验
let plainImg2 = ''
plainImg2 = data.twoFlatFinger.saveImage[1]
let plainMd52 = self.checkMd5(plainImg2)
let paramsL2 = new URLSearchParams()
paramsL2.append('rybh', self.rybh);
paramsL2.append('md5str', plainMd52);
paramsL2.append('filename', "" + (index + 6) + ".bmp," + (index + 10 + 6) + ".bmp");
paramsL2.append('rollimgstr', null);//这里可为null
paramsL2.append('plaimimgstr', plainImg2);//这里可为null
self.$axios({
url: '/api/saveFingerImg',
method: 'post',
data: paramsL2
}).then(resL => {
if (resL.status == 200) {
// self.$message.success(resL.data)
}
})
self.$set(leftList[index], 'imgSrcL', 'data:image/bmp;base64,' + plainImg2)
// 获取图片处理的结果
let img2 = leftList[index].imgSrcL.replace(/^data:image\/\w+;base64,/, "");
// let img = item.imgSrcL
let md5str2 = self.checkMd5(img2)
let params2 = new URLSearchParams();
params2.append('rollimgstr', img2);
params2.append('md5str', md5str2);
self.$axios({
method: 'post',
url: '/api/dealImgStr',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
data: params2
}).then(res => {
let cf = self.findCF(Number(leftList[index].code) + 10)
if (cf != null) {
self.fingerPic[cf] = {
zwzwdm: Number(leftList[index].code) + 10,
zw_txsj: res.data,
zw_txzl: leftList[index].scoreL
}
} else {
self.fingerPic.push({ zwzwdm: Number(leftList[index].code) + 10, zw_txsj: res.data, zw_txzl: leftList[index].scoreL })
}
self.saveScore(self.rybh, leftList[index].scoreL, Number(leftList[index].code) + 10)
})
setTimeout(() => {
self.fingerImg = ''
self.frameImage = false
resolve({ status: 'ok' })
}, 500);
}
}
// 设备状态 Succeeded Running
if (data.hasOwnProperty("phase")) {
// //console.log(data.phase);
}
}
}
} else {
// 左手
// 进入录制状态
self.$set(leftList[index - 5], 'statusL', 1)
self.$set(leftList[index - 5], 'scoreL', '')
self.$set(leftList[index - 5], 'imgSrcL', '')
self.$set(leftList[index - 5], 'isLackFingerL', false)
// 改变手指
if (self.themeType == "深色" || self.themeType == "浅色") {
this.$refs.leftFinger.children[index - 5].setAttribute('src', self.defaultFingerArr[index])
} else {
this.$refs.leftFinger.children[index - 5].setAttribute('src', self.whiteFingerArr[index])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.fingerImg = ''
self.frameImage = false
self.checked = false
self.cur = index + 1
self.preIndexL = index
self.preCode = leftList[index - 5].code
self.preType = 'l'
self.preStatusL = 1
self.tipTitle = self.fingerTips[index]
//console.log('相机开始');
// 启用相机
// self.canvas = document.getElementById("frameImage");
// self.ctx = self.canvas.getContext("2d");
// self.frameWidth = document.getElementById("frameImage").width;
// self.frameHeight = document.getElementById("frameImage").height;
self.ctx.clearRect(0, 0, 538, 478);
self.samllData = {};
self.samllData["cmd"] = 101;
self.samllData["isNewPeople"] = 0;
self.samllData["imageType"] = model;
self.samllData["contrast"] = contrast;
self.samllData["frameWidth"] = parseInt(self.frameWidth);
self.samllData["frameHeight"] = parseInt(self.frameHeight);
let json = JSON.stringify(self.samllData)
self.ws.send(json);
// 获取结果
self.ws.onmessage = function (ev) {
let json = JSON.parse(ev.data);
if (json.code == 0) {
let data = json.data
if (data == null) {
return;
}
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
if (data.hasOwnProperty("singleRolledFinger")) {
self.ctx.beginPath();
self.ctx.moveTo(data.singleRolledFinger.lineX, 0);
self.ctx.lineTo(data.singleRolledFinger.lineX, self.canvas.height);
self.ctx.strokeStyle = data.singleRolledFinger.lineColor;
self.ctx.lineWidth = 2;
self.ctx.stroke();
self.ctx.closePath();
}
};
if (temporaryImage) {
objectURL.revokeObjectURL(temporaryImage);
}
var imageDataBlob = self.convertDataURIToBlob("data:image/bmp;base64," + data.previewImage);
temporaryImage = objectURL.createObjectURL(imageDataBlob);
// self.fingerImg = temporaryImage;
self.frameImage = true
image.src = temporaryImage;
if (self.checked) {
self.preStatusL = 4
resolve({ status: 'anaphora' })
}
}
if (data.phase == "Succeeded") {
if (data.hasOwnProperty("twoFlatFinger")) {
self.$set(leftList[index - 5], 'scoreL', data.twoFlatFinger.nfiq2Score[0])
self.$set(rightList[index - 5], 'scoreL', data.twoFlatFinger.nfiq2Score[1])
self.$set(rightList[index - 5], 'isLackFingerL', false)
// 大于及格分
if (leftList[index - 5].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.fingerArr[index])
} else {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.whiteArr[index])
}
self.$set(leftList[index - 5], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
self.preStatusL = 3
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
self.$set(leftList[index - 5], 'statusL', 2)
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.fingerArr[index + 10])
} else {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.whiteArr[index + 10])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.preStatusL = 2
self.tipType = 'warning'
self.showTip()
}
// 大于及格分
if (rightList[index - 5].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
console.log(self.$refs.rightFinger.children)
console.log(self.$refs.rightFinger.children[index - 5])
self.$refs.rightFinger.children[index - 5].setAttribute('src', self.fingerArr[index - 5])
} else {
self.$refs.rightFinger.children[index - 5].setAttribute('src', self.whiteArr[index - 5])
}
self.$set(rightList[index - 5], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
// self.preStatusL = 3
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
self.$set(rightList[index - 5], 'statusL', 2)
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.rightFinger.children[index - 5].setAttribute('src', self.fingerArr[index - 5 + 10])
} else {
self.$refs.rightFinger.children[index - 5].setAttribute('src', self.whiteArr[index - 5 + 10])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
// self.preStatusL = 2
self.tipType = 'warning'
self.showTip()
}
// TODO
// 先md5校验,然后调用接口传入图片数据和md5校验
let plainImg = ''
plainImg = data.twoFlatFinger.saveImage[0]
let plainMd5 = self.checkMd5(plainImg)
let paramsL = new URLSearchParams()
paramsL.append('rybh', self.rybh);
paramsL.append('md5str', plainMd5);
paramsL.append('filename', "" + (index + 1) + ".bmp," + (index + 10 + 1) + ".bmp");
paramsL.append('rollimgstr', null);//这里可为null
paramsL.append('plaimimgstr', plainImg);//这里可为null
self.$axios({
url: '/api/saveFingerImg',
method: 'post',
data: paramsL
}).then(resL => {
if (resL.status == 200) {
// self.$message.success(resL.data)
}
})
self.$set(leftList[index - 5], 'imgSrcL', 'data:image/bmp;base64,' + plainImg)
// 获取图片处理的结果
let img = leftList[index - 5].imgSrcL.replace(/^data:image\/\w+;base64,/, "");
// let img = item.imgSrcL
let md5str = self.checkMd5(img)
let params = new URLSearchParams();
params.append('rollimgstr', img);
params.append('md5str', md5str);
self.$axios({
method: 'post',
url: '/api/dealImgStr',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
data: params
}).then(res => {
let cf = self.findCF(Number(leftList[index - 5].code) + 10)
if (cf != null) {
self.fingerPic[cf] = {
zwzwdm: Number(leftList[index - 5].code) + 10,
zw_txsj: res.data, zw_txzl:
leftList[index - 5].scoreL
}
} else {
self.fingerPic.push({ zwzwdm: Number(leftList[index - 5].code) + 10, zw_txsj: res.data, zw_txzl: leftList[index - 5].scoreL })
}
self.saveScore(self.rybh, leftList[index - 5].scoreL, Number(leftList[index - 5].code) + 10)
})
// 先md5校验,然后调用接口传入图片数据和md5校验
let plainImg2 = ''
plainImg2 = data.twoFlatFinger.saveImage[1]
let plainMd52 = self.checkMd5(plainImg2)
let paramsL2 = new URLSearchParams()
paramsL2.append('rybh', self.rybh);
paramsL2.append('md5str', plainMd52);
paramsL2.append('filename', "" + (index - 5 + 1) + ".bmp," + (index - 5 + 10 + 1) + ".bmp");
paramsL2.append('rollimgstr', null);//这里可为null
paramsL2.append('plaimimgstr', plainImg2);//这里可为null
self.$axios({
url: '/api/saveFingerImg',
method: 'post',
data: paramsL2
}).then(resL => {
if (resL.status == 200) {
// self.$message.success(resL.data)
}
})
self.$set(rightList[index - 5], 'imgSrcL', 'data:image/bmp;base64,' + plainImg2)
// 获取图片处理的结果
let img2 = rightList[index - 5].imgSrcL.replace(/^data:image\/\w+;base64,/, "");
// let img = item.imgSrcL
let md5str2 = self.checkMd5(img2)
let params2 = new URLSearchParams();
params2.append('rollimgstr', img2);
params2.append('md5str', md5str2);
self.$axios({
method: 'post',
url: '/api/dealImgStr',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
data: params2
}).then(res => {
let cf = self.findCF(Number(rightList[index - 5].code) + 10)
if (cf != null) {
self.fingerPic[cf] = {
zwzwdm: Number(rightList[index - 5].code) + 10,
zw_txsj: res.data,
zw_txzl: rightList[index - 5].scoreL
}
} else {
self.fingerPic.push({ zwzwdm: Number(rightList[index - 5].code) + 10, zw_txsj: res.data, zw_txzl: rightList[index - 5].scoreL })
}
self.saveScore(self.rybh, rightList[index - 5].scoreL, Number(rightList[index - 5].code) + 10)
})
setTimeout(() => {
self.fingerImg = ''
self.frameImage = false
resolve({ status: 'ok' })
}, 500);
}
}
// 设备状态 Succeeded Running
if (data.hasOwnProperty("phase")) {
// //console.log(data.phase);
}
}
}
}
})
return result
},
/**
* @description: 四指采集
* @param {*} leftList
* @param {*} rightList
* @param {*} index
* @param {*} model
* @param {*} contrast
* @return {*}
*/
FourFingerLu (leftList, rightList, index, model, contrast) {
console.log('四指采集', index);
let self = this
contrast = self.contrastvalue || -1
let result = new Promise((resolve, reject) => {
let temporaryImage;
let objectURL = window.URL || window.webkitURL;
self.checked = false
// 右手
if (index < 5) {
// 进入录制状态
self.$set(rightList[index], 'statusL', 1)
self.$set(rightList[index], 'scoreL', '')
self.$set(rightList[index], 'imgSrcL', '')
self.$set(rightList[index], 'isLackFingerL', false)
// 改变手指
if (self.themeType == "深色" || self.themeType == "浅色") {
this.$refs.rightFinger.children[index].setAttribute('src', self.defaultFingerArr[index])
} else {
this.$refs.rightFinger.children[index].setAttribute('src', self.whiteFingerArr[index])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.fingerImg = ''
self.frameImage = false
self.checked = false
self.cur = index + 1
self.preIndexL = index
self.preCode = rightList[index].code
self.preType = 'l'
self.preStatusL = 1
self.tipTitle = self.fingerTips[index]
//console.log('相机开始');
// 启用相机
// self.canvas = document.getElementById("frameImage");
// self.ctx = self.canvas.getContext("2d");
// self.frameWidth = document.getElementById("frameImage").width;
// self.frameHeight = document.getElementById("frameImage").height;
self.ctx.clearRect(0, 0, 538, 478);
self.samllData = {};
self.samllData["cmd"] = 101;
self.samllData["isNewPeople"] = 0;
self.samllData["imageType"] = model;
self.samllData["contrast"] = contrast;
self.samllData["fingerIndex"] = 41;
self.samllData["frameWidth"] = parseInt(self.frameWidth);
self.samllData["frameHeight"] = parseInt(self.frameHeight);
let json = JSON.stringify(self.samllData)
self.ws.send(json);
// 获取结果
self.ws.onmessage = async function (ev) {
let json = JSON.parse(ev.data);
if (json.code == 0) {
let data = json.data
if (data == null) {
return;
}
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
};
if (temporaryImage) {
objectURL.revokeObjectURL(temporaryImage);
}
var imageDataBlob = self.convertDataURIToBlob("data:image/bmp;base64," + data.previewImage);
temporaryImage = objectURL.createObjectURL(imageDataBlob);
self.frameImage = true
// self.fingerImg = temporaryImage;
image.src = temporaryImage;
if (self.checked) {
// TODO
// 缺指设置为null
// let res = await self.$axios.post();
// while (!res) {
// res = await self.$axios.post();
// }
self.preStatusL = 4
resolve({ status: 'anaphora' })
}
}
if (data.phase == "Succeeded") {
if (data.hasOwnProperty("fourFlatFinger")) {
// 设置四个指头分数
self.$set(rightList[1], 'scoreL', data.fourFlatFinger.nfiq2Score[0])
self.$set(rightList[2], 'scoreL', data.fourFlatFinger.nfiq2Score[1])
self.$set(rightList[3], 'scoreL', data.fourFlatFinger.nfiq2Score[2])
self.$set(rightList[4], 'scoreL', data.fourFlatFinger.nfiq2Score[3])
// 设置四个指头缺指状态是未缺指
self.$set(rightList[1], 'isLackFingerL', false)
self.$set(rightList[2], 'isLackFingerL', false)
self.$set(rightList[3], 'isLackFingerL', false)
self.$set(rightList[4], 'isLackFingerL', false)
for (let i = 1; i <= 4; i++) {
if (rightList[i].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.rightFinger.children[i].setAttribute('src', self.fingerArr[i])
} else {
self.$refs.rightFinger.children[i].setAttribute('src', self.whiteArr[i])
}
self.$set(rightList[i], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.rightFinger.children[i].setAttribute('src', self.fingerArr[i + 10])
} else {
self.$refs.rightFinger.children[i].setAttribute('src', self.whiteArr[i + 10])
}
self.$set(rightList[i], 'statusL', 2)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.tipType = 'warning'
self.showTip()
}
}
// 大于及格分
if (rightList[index].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.rightFinger.children[index].setAttribute('src', self.fingerArr[index])
} else {
self.$refs.rightFinger.children[index].setAttribute('src', self.whiteArr[index])
}
self.$set(rightList[index], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
self.preStatusL = 3
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
self.$set(rightList[index], 'statusL', 2)
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.rightFinger.children[index].setAttribute('src', self.fingerArr[index + 10])
} else {
self.$refs.rightFinger.children[index].setAttribute('src', self.whiteArr[index + 10])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.preStatusL = 2
self.tipType = 'warning'
self.showTip()
}
// TODO
for (let i = 1; i <= 4; i++) {
// 先md5校验,然后调用接口传入图片数据和md5校验
let plainImg = ''
plainImg = data.fourFlatFinger.saveImage[i-1]
self.$set(rightList[i], 'imgSrcL', 'data:image/bmp;base64,' + plainImg)
let plainMd5 = self.checkMd5(plainImg)
let paramsL = new URLSearchParams()
paramsL.append('rybh', self.rybh);
paramsL.append('md5str', plainMd5);
paramsL.append('filename', "" + (i + 1) + ".bmp," + (i + 10 + 1) + ".bmp");
paramsL.append('rollimgstr', null);//这里可为null
paramsL.append('plaimimgstr', plainImg);//这里可为null
await self.$axios({
url: '/api/saveFingerImg',
method: 'post',
data: paramsL
}).then(resL => {
if (resL.status == 200) {
// self.$message.success(resL.data)
}
})
// 获取图片处理的结果
let img = rightList[i].imgSrcL.replace(/^data:image\/\w+;base64,/, "");
// let img = item.imgSrcL
let md5str = self.checkMd5(img)
let params = new URLSearchParams();
params.append('rollimgstr', img);
params.append('md5str', md5str);
await self.$axios({
method: 'post',
url: '/api/dealImgStr',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
data: params
}).then(async res => {
let cf = self.findCF(Number(rightList[i].code) + 10)
if (cf != null) {
self.fingerPic[cf] = {
zwzwdm: Number(rightList[i].code) + 10,
zw_txsj: res.data,
zw_txzl: rightList[i].scoreL
}
} else {
self.fingerPic.push({ zwzwdm: Number(rightList[i].code) + 10, zw_txsj: res.data, zw_txzl: rightList[i].scoreL })
}
await self.saveScore(self.rybh, rightList[i].scoreL, Number(rightList[i].code) + 10)
})
}
setTimeout(() => {
self.fingerImg = ''
self.frameImage = false
resolve({ status: 'ok' })
}, 500);
}
}
// 设备状态 Succeeded Running
if (data.hasOwnProperty("phase")) {
// //console.log(data.phase);
}
}
}
} else {
// 左手
// 进入录制状态
self.$set(leftList[index - 5], 'statusL', 1)
self.$set(leftList[index - 5], 'scoreL', '')
self.$set(leftList[index - 5], 'imgSrcL', '')
self.$set(leftList[index - 5], 'isLackFingerL', false)
// 改变手指
if (self.themeType == "深色" || self.themeType == "浅色") {
this.$refs.leftFinger.children[index - 5].setAttribute('src', self.defaultFingerArr[index])
} else {
this.$refs.leftFinger.children[index - 5].setAttribute('src', self.whiteFingerArr[index])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.fingerImg = ''
self.frameImage = false
self.checked = false
self.cur = index + 1
self.preIndexL = index
self.preCode = leftList[index - 5].code
self.preType = 'l'
self.preStatusL = 1
self.tipTitle = self.fingerTips[index]
//console.log('相机开始');
// 启用相机
// self.canvas = document.getElementById("frameImage");
// self.ctx = self.canvas.getContext("2d");
// self.frameWidth = document.getElementById("frameImage").width;
// self.frameHeight = document.getElementById("frameImage").height;
self.ctx.clearRect(0, 0, 538, 478);
self.samllData = {};
self.samllData["cmd"] = 101;
self.samllData["isNewPeople"] = 0;
self.samllData["imageType"] = model;
self.samllData["contrast"] = contrast;
self.samllData["fingerIndex"] = 42;
self.samllData["frameWidth"] = parseInt(self.frameWidth);
self.samllData["frameHeight"] = parseInt(self.frameHeight);
let json = JSON.stringify(self.samllData)
self.ws.send(json);
// 获取结果
self.ws.onmessage = async function (ev) {
let json = JSON.parse(ev.data);
if (json.code == 0) {
let data = json.data
if (data == null) {
return;
}
if (data.hasOwnProperty("previewImage")) {
let image = new Image();
image.onload = function () {
self.ctx.drawImage(image, 0, 0, parseInt(self.frameWidth), parseInt(self.frameHeight));
};
if (temporaryImage) {
objectURL.revokeObjectURL(temporaryImage);
}
var imageDataBlob = self.convertDataURIToBlob("data:image/bmp;base64," + data.previewImage);
temporaryImage = objectURL.createObjectURL(imageDataBlob);
// self.fingerImg = temporaryImage;
self.frameImage = true
image.src = temporaryImage;
if (self.checked) {
self.preStatusL = 4
resolve({ status: 'anaphora' })
}
}
if (data.phase == "Succeeded") {
if (data.hasOwnProperty("fourFlatFinger")) {
// 设置四个指头分数
self.$set(leftList[1], 'scoreL', data.fourFlatFinger.nfiq2Score[0])
self.$set(leftList[2], 'scoreL', data.fourFlatFinger.nfiq2Score[1])
self.$set(leftList[3], 'scoreL', data.fourFlatFinger.nfiq2Score[2])
self.$set(leftList[4], 'scoreL', data.fourFlatFinger.nfiq2Score[3])
// 设置四个指头缺指状态是未缺指
self.$set(leftList[1], 'isLackFingerL', false)
self.$set(leftList[2], 'isLackFingerL', false)
self.$set(leftList[3], 'isLackFingerL', false)
self.$set(leftList[4], 'isLackFingerL', false)
for (let i = 1; i <= 4; i++) {
if (leftList[i].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[i].setAttribute('src', self.fingerArr[i])
} else {
self.$refs.leftFinger.children[i].setAttribute('src', self.whiteArr[i])
}
self.$set(leftList[i], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[i].setAttribute('src', self.fingerArr[i + 10])
} else {
self.$refs.leftFinger.children[i].setAttribute('src', self.whiteArr[i + 10])
}
self.$set(leftList[i], 'statusL', 2)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.tipType = 'warning'
self.showTip()
}
}
// 大于及格分
if (leftList[index - 5].scoreL > self.defaultScore) {
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.fingerArr[index])
} else {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.whiteArr[index])
}
self.$set(leftList[index - 5], 'statusL', 3)
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#17D010');
self.preStatusL = 3
self.tipType = 'success'
self.showTip()
} else {
// 小于及格分的情况
self.$set(leftList[index - 5], 'statusL', 2)
if (self.themeType == "深色" || self.themeType == "浅色") {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.fingerArr[index + 10])
} else {
self.$refs.leftFinger.children[index - 5].setAttribute('src', self.whiteArr[index + 10])
}
document.getElementsByTagName('body')[0].style.setProperty('--finger', '#ffc005'); // #17D010 #ffc005
self.preStatusL = 2
self.tipType = 'warning'
self.showTip()
}
// TODO
for (let i = 1; i <= 4; i++) {
// 先md5校验,然后调用接口传入图片数据和md5校验
let plainImg = ''
plainImg = data.fourFlatFinger.saveImage[i-1]
let plainMd5 = self.checkMd5(plainImg)
let paramsL = new URLSearchParams()
paramsL.append('rybh', self.rybh);
paramsL.append('md5str', plainMd5);
paramsL.append('filename', "" + (i + 6) + ".bmp," + (i + 10 + 6) + ".bmp");
paramsL.append('rollimgstr', null);//这里可为null
paramsL.append('plaimimgstr', plainImg);//这里可为null
await self.$axios({
url: '/api/saveFingerImg',
method: 'post',
data: paramsL
}).then(resL => {
if (resL.status == 200) {
// self.$message.success(resL.data)
}
})
self.$set(leftList[i], 'imgSrcL', 'data:image/bmp;base64,' + plainImg)
// 获取图片处理的结果
let img = leftList[i].imgSrcL.replace(/^data:image\/\w+;base64,/, "");
// let img = item.imgSrcL
let md5str = self.checkMd5(img)
let params = new URLSearchParams();
params.append('rollimgstr', img);
params.append('md5str', md5str);
await self.$axios({
method: 'post',
url: '/api/dealImgStr',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
data: params
}).then(async res => {
let cf = self.findCF(Number(leftList[i].code) + 10)
if (cf != null) {
self.fingerPic[cf] = {
zwzwdm: Number(leftList[i].code) + 10,
zw_txsj: res.data, zw_txzl:
leftList[i].scoreL
}
} else {
self.fingerPic.push({ zwzwdm: Number(leftList[i].code) + 10, zw_txsj: res.data, zw_txzl: leftList[i].scoreL })
}
await self.saveScore(self.rybh, leftList[i].scoreL, Number(leftList[i].code) + 10)
})
}
setTimeout(() => {
self.fingerImg = ''
self.frameImage = false
resolve({ status: 'ok' })
}, 500);
}
}
// 设备状态 Succeeded Running
if (data.hasOwnProperty("phase")) {
// //console.log(data.phase);
}
}
}
}
})
return result
},
/**
* @name: 展示指纹提示
* @param {*}
* @return {*}
*/
showTip () {
setTimeout(() => {
this.tipType = 'none'
}, 2000);
},
/**
* @name: 墨奇单击事件
* @param {*}
* @return {*}
*/
moqiLookFinger (finger, index, type = 'r') {
// 是否单击了
this.dj = true
//console.log('单击')
this.stop = true
//console.log('===========================')
//console.log(this.preIndex);
//console.log(this.preStatusR);
//console.log(this.preStatusL);
//console.log('===========================')
this.checked = finger.isLackFinger
if (this.GrpcCameraService && this.preStatusR != 4 && this.preStatusL != 4 && this.preStatusR != 3 && this.preStatusL != 3 && this.preStatusR != 2 && this.preStatusL != 2) {
this.GrpcCameraService.stopVideoStream()
// this.preIndex = index
if (this.preStatusR == 1 && this.preStatusL == 1) {
this.preStatusL = 0
this.preStatusR = 0
}
// 重置相机
// this.GrpcCameraService = null
}
if (this.preIndex != null && this.preStatusL != null && this.preStatusR != null) {
if (this.preIndex >= 5) {
//console.log(5555);
//console.log('单击', this.preStatusR)
//console.log('单击', this.preStatusL)
//console.log('单击', this.preIndex)
this.$set(this.fingersLeft[this.preIndex - 5], 'statusR', this.preStatusR)
this.$set(this.fingersLeft[this.preIndex - 5], 'statusL', this.preStatusL)
// this.fingersLeft[this.preIndex - 5].status = this.preStatus
this.preCode = this.fingersLeft[this.preIndex - 5].code
} else {
//console.log('单击', this.preStatusR)
//console.log('单击', this.preStatusL)
//console.log(6666);
this.$set(this.fingersRight[this.preIndex], 'statusR', this.preStatusR)
this.$set(this.fingersRight[this.preIndex], 'statusL', this.preStatusL)
//console.log(this.fingersRight[this.preIndex]);
// //console.log(this.fingersRight[this.preIndex]);
// this.fingersRight[this.preIndex].status = this.preStatus
this.preCode = this.fingersRight[this.preIndex].code
}
}
this.preIndex = index
this.preStatusR = finger.statusR
this.preStatusL = finger.statusL
// 调用api获取finger图像 finger.code
// let result = img1
// this.fingerImg = result
if (index < 5) {
//console.log(11111);
this.$set(this.fingersRight[index], 'statusR', 1)
this.$set(this.fingersRight[index], 'statusL', 1)
if (type == 'r') {
this.fingerImg = this.fingersRight[index].imgSrcR
// //console.log(this.fingerImg);
} else {
this.fingerImg = this.fingersRight[index].imgSrcL
// //console.log(this.fingerImg);
}
this.checked = finger.isLackFinger
this.cur = index + 1
this.tipTitle = this.fingerTips[index]
} else {
//console.log(22222);
this.$set(this.fingersLeft[index - 5], 'statusR', 1)
this.$set(this.fingersLeft[index - 5], 'statusL', 1)
if (type == 'r') {
this.fingerImg = this.fingersLeft[index - 5].imgSrcR
// //console.log(this.fingerImg);
} else {
this.fingerImg = this.fingersLeft[index - 5].imgSrcL
// //console.log(this.fingerImg);
}
this.checked = finger.isLackFinger
this.cur = index + 1
this.tipTitle = this.fingerTips[index]
}
//console.log('------------------------------')
//console.log(this.preIndex);
//console.log(this.preStatusR);
//console.log(this.preStatusL);
//console.log('------------------------------')
},
/**
* @name: 小采集器单击事件
* @param {*}
* @return {*}
*/
smallLookFinger (finger, index, type) {
//console.log('单击')
//console.log('===========================')
//console.log(this.preIndexR);
//console.log(this.preIndexL);
//console.log(this.preStatusR);
//console.log(this.preStatusL);
//console.log('===========================')
// 停止采集
let data = {};
data["cmd"] = 102;
let json = JSON.stringify(data)
this.ws.send(json);
this.ws.onmessage = function (ev) {
let data = JSON.parse(ev.data)
if (data.message === 'Capture is not working') {
self.ws.send(json);
}
}
let self = this
// socket存在延迟,因此延时
setTimeout(() => {
// 从指纹切换过来
if (self.preCode < 30) {
self.frameImage = false
if (type == 'r') {
self.checked = finger.isLackFingerR
} else {
self.checked = finger.isLackFingerL
}
if (self.preStatusR == 1) {
self.preStatusR = 0
}
if (self.preStatusL == 1) {
self.preStatusL = 0
}
if (self.preIndexL != null && self.preStatusL != null) {
if (self.preIndexL >= 5) {
self.$set(self.fingersLeft[self.preIndexL - 5], 'statusL', self.preStatusL)
} else {
self.$set(self.fingersRight[self.preIndexL], 'statusL', self.preStatusL)
}
}
if (self.preIndexR != null && self.preStatusR != null) {
if (self.preIndexR >= 5) {
self.$set(self.fingersLeft[self.preIndexR - 5], 'statusR', self.preStatusR)
} else {
self.$set(self.fingersRight[self.preIndexR], 'statusR', self.preStatusR)
}
}
if (type == 'r') {
self.preIndexR = index
self.preStatusR = finger.statusR
self.preCode = finger.code
} else {
self.preIndexL = index
self.preStatusL = finger.statusL
self.preCode = finger.code
}
// self.preIndex = index
// self.preStatusR = finger.statusR
// self.preStatusL = finger.statusL
// 调用api获取finger图像 finger.code
// let result = img1
// self.fingerImg = result
if (type == 'r') {
self.preType = 'r'
if (index < 5) {
self.$set(self.fingersRight[index], 'statusR', 1)
self.fingerImg = self.fingersRight[index].imgSrcR
self.checked = finger.isLackFingerR
self.cur = index + 1
self.tipTitle = self.fingerTips[index]
} else {
self.$set(self.fingersLeft[index - 5], 'statusR', 1)
self.fingerImg = self.fingersLeft[index - 5].imgSrcR
self.checked = finger.isLackFingerR
self.cur = index + 1
self.tipTitle = self.fingerTips[index]
}
} else {
self.preType = 'l'
if (index < 5) {
self.$set(self.fingersRight[index], 'statusL', 1)
self.fingerImg = self.fingersRight[index].imgSrcL
self.checked = finger.isLackFingerL
self.cur = index + 1
self.tipTitle = self.fingerTips[index]
} else {
self.$set(self.fingersLeft[index - 5], 'statusL', 1)
self.fingerImg = self.fingersLeft[index - 5].imgSrcL
self.checked = finger.isLackFingerL
self.cur = index + 1
self.tipTitle = self.fingerTips[index]
......@@ -12432,8 +13531,8 @@ export default {
* @param {*} seq
* @return {*}
*/
saveScore (barcode, score, seq) {
axios({
async saveScore (barcode, score, seq) {
await axios({
method: 'post',
url: '/api/score/save',
data: {
......@@ -12734,10 +13833,12 @@ export default {
})
// 掌纹状态重新渲染
this.hands.forEach((item, index) => {
if (item.score >= this.defaultScore) {
this.$set(item, 'status', 3)
} else {
this.$set(item, 'status', 2)
if (item.score != '') {
if (item.score >= this.defaultScore) {
this.$set(item, 'status', 3)
} else {
this.$set(item, 'status', 2)
}
}
})
// this.lightvalue = this.settingData.lightvalue
......
/*
* @Author: your name
* @Date: 2021-09-07 09:57:48
* @LastEditTime: 2022-06-27 09:01:21
* @LastEditTime: 2022-06-28 15:29:36
* @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
* @Description: In User Settings Edit
* @FilePath: \指纹系统\founder_vue\vue.config.js
......@@ -121,7 +121,7 @@ module.exports = {
// target: "http://127.0.0.1:8099",
// target: "http://47.92.225.109:5602",
// target: "http://www.meetfood.cn:2390", // 湖南-线上
target: 'http://zwpt.xzclub.top:9333/',
// target: 'http://zwpt.xzclub.top:9333/',
// target: "http://192.168.128.104:8099", // 江
// target: "http://172.20.0.149:8099", // 北京 张
// target: "http://192.168.0.109:8099", // 西藏 张
......@@ -129,7 +129,7 @@ module.exports = {
// target: "http://192.168.0.130:8099", // 西藏 刘
// target: "http://172.18.109.63:8099", // 北京 张
// target: "http://172.18.108.163:8099", // 北京
// target: "http://172.18.110.145:8099", // 北京
target: "http://172.18.110.145:8099", // 北京
ws: true,
changeOrigin: true,
pathRewrite: {
......@@ -140,14 +140,14 @@ module.exports = {
// target: "http://192.168.128.106:8765", // 湖南-王
// target: "http://172.18.108.98:8765/", // 张 认定
// target: "http://www.meetfood.cn:2390", // 湖南-王
target: 'http://zwpt.xzclub.top:9333/',
// target: 'http://zwpt.xzclub.top:9333/',
// target: "http://192.168.128.109:8765",
// target: "http://172.18.109.63:8765", // 北京 张
// target: "http://192.168.0.165:8765", // 西藏 马
// target: "http://192.168.0.107:8765", // 西藏 张
// target: "http://172.18.109.63:8765", // 北京 张
// target: "http://172.18.108.163:8765", // 北京
// target: "http://172.18.110.145:8765", // 北京
target: "http://172.18.110.145:8765", // 北京
ws: true,
changeOrigin: true,
pathRewrite: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment