| | |
| | | </basic-container> |
| | | </el-col> |
| | | <div |
| | | v-show="haveSEL == 'noDrive'" |
| | | :class="[ |
| | | $store.state.control.windowWidth >= 1024 |
| | | ? 'downSFZqudong' |
| | | : 'downSFZqudongS', |
| | | ]" |
| | | > |
| | | <a |
| | | href="http://223.82.109.183:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar" |
| | | >未安装身份证驱动,点击下载</a |
| | | <el-checkbox v-model="radio" :disabled="SFZloding" |
| | | >使用身份证设备</el-checkbox |
| | | > |
| | | <el-button |
| | | type="text" |
| | | v-show="haveSEL == 'noDrive' || haveSEL == 'noEquipment'" |
| | | @click="SFZopens" |
| | | :loading="SFZloding" |
| | | >{{ sfzButTitle }}</el-button |
| | | > |
| | | <!-- <div style="font-size: 14px">连接身份证设备失败</div> --> |
| | | <!-- v-show="haveSEL == 'noDrive'" --> |
| | | <!-- href="http://223.82.109.183:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar" --> |
| | | <!-- <a href="javascript;">未安装身份证驱动,点击下载</a> --> |
| | | </div> |
| | | </el-row> |
| | | </template> |
| | |
| | | oldm, |
| | | oldd, |
| | | ok = false; |
| | | |
| | | const validatePassCardid = (rule, value, callback) => { |
| | | // console.log(oldy, oldm, oldd, year - oldy, mouth, day); |
| | | var test = |
| | | /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; |
| | | if (!test.test(value)) { |
| | | callback(new Error("请输入正确身份证号码")); |
| | | } else { |
| | | // //加入校验18岁到60岁的 |
| | | // oldy = +value.slice(6, 10); |
| | | // oldm = +value.slice(10, 12); |
| | | // oldd = +value.slice(12, 14); |
| | | // ok = |
| | | // year - oldy < 18 || year - oldy > 60 |
| | | // ? false |
| | | // : year - oldy == 18 |
| | | // ? mouth < oldm |
| | | // ? false |
| | | // : mouth > oldm |
| | | // ? true |
| | | // : day < oldd |
| | | // ? false |
| | | // : true |
| | | // : year - oldy == 60 |
| | | // ? mouth < oldm |
| | | // ? true |
| | | // : mouth > oldm |
| | | // ? false |
| | | // : day <= oldd |
| | | // ? false |
| | | // : true |
| | | // : true; |
| | | // if (ok) { |
| | | callback(); |
| | | // } else { |
| | | // // callback(new Error("根据国家要求,需在18岁至60岁")); |
| | | // callback(new Error("年龄不符")); |
| | | // } |
| | | var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // 加权因子 |
| | | var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // 身份证验证位值.10代表X |
| | | /** |
| | | * 判断身份证号码为18位时最后的验证位是否正确 |
| | | * @param a_idCard 身份证号码数组 |
| | | * @return |
| | | */ |
| | | function isTrueValidateCodeBy18IdCard(a_idCard) { |
| | | var sum = 0; // 声明加权求和变量 |
| | | if (a_idCard[17].toLowerCase() == "x") { |
| | | a_idCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作 |
| | | } |
| | | for (var i = 0; i < 17; i++) { |
| | | sum += Wi[i] * a_idCard[i]; // 加权求和 |
| | | } |
| | | let valCodePosition = sum % 11; // 得到验证码所位置 |
| | | if (a_idCard[17] == ValideCode[valCodePosition]) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | } |
| | | /** |
| | | * 验证18位数身份证号码中的生日是否是有效生日 |
| | | * @param idCard 18位书身份证字符串 |
| | | * @return |
| | | */ |
| | | function isValidityBrithBy18IdCard(idCard18) { |
| | | var year = idCard18.substring(6, 10); |
| | | var month = idCard18.substring(10, 12); |
| | | var day = idCard18.substring(12, 14); |
| | | var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); |
| | | // 这里用getFullYear()获取年份,避免千年虫问题 |
| | | if ( |
| | | temp_date.getFullYear() != parseFloat(year) || |
| | | temp_date.getMonth() != parseFloat(month) - 1 || |
| | | temp_date.getDate() != parseFloat(day) |
| | | ) { |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | } |
| | | //去掉字符串头尾空格 |
| | | function trim(str) { |
| | | return str.replace(/(^\s*)|(\s*$)/g, ""); |
| | | } |
| | | const validatePassCardid = (rule, value, callback) => { |
| | | let ok = false; |
| | | if (value.length == 18) { |
| | | let idCard = trim(value.replace(/ /g, "")); |
| | | var a_idCard = idCard.split(""); |
| | | if ( |
| | | isValidityBrithBy18IdCard(idCard) && |
| | | isTrueValidateCodeBy18IdCard(a_idCard) |
| | | ) { |
| | | //进行18位身份证的基本验证和第18位的验证 |
| | | ok = true; |
| | | } else { |
| | | ok = false; |
| | | } |
| | | } else { |
| | | ok = false; |
| | | } |
| | | |
| | | if (ok) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("身份证错误")); |
| | | } |
| | | // console.log(oldy, oldm, oldd, year - oldy, mouth, day); |
| | | // var test = |
| | | // /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; |
| | | // if (!test.test(value)) { |
| | | // callback(new Error("请输入正确身份证号码")); |
| | | // } else { |
| | | // // //加入校验18岁到60岁的 |
| | | // // oldy = +value.slice(6, 10); |
| | | // // oldm = +value.slice(10, 12); |
| | | // // oldd = +value.slice(12, 14); |
| | | // // ok = |
| | | // // year - oldy < 18 || year - oldy > 60 |
| | | // // ? false |
| | | // // : year - oldy == 18 |
| | | // // ? mouth < oldm |
| | | // // ? false |
| | | // // : mouth > oldm |
| | | // // ? true |
| | | // // : day < oldd |
| | | // // ? false |
| | | // // : true |
| | | // // : year - oldy == 60 |
| | | // // ? mouth < oldm |
| | | // // ? true |
| | | // // : mouth > oldm |
| | | // // ? false |
| | | // // : day <= oldd |
| | | // // ? false |
| | | // // : true |
| | | // // : true; |
| | | // // if (ok) { |
| | | // callback(); |
| | | // // } else { |
| | | // // // callback(new Error("根据国家要求,需在18岁至60岁")); |
| | | // // callback(new Error("年龄不符")); |
| | | // } |
| | | |
| | | // } |
| | | }; |
| | | const validatePassPhone = (rule, value, callback) => { |
| | | var test = /^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9]|19[0-9])\d{8}$/g; |
| | |
| | | // 表格数据 |
| | | defaults: {}, |
| | | // 身份证设备数据 |
| | | SFZloding: false, |
| | | sfzButTitle: "", |
| | | radio: false, //选择状态 |
| | | haveSEL: "", //设备状态 |
| | | cardShebei: "", |
| | | intTime: "", //自动获取身份证; |
| | | haveCardid: true, //读卡开关 |
| | | haveCardid: false, //读卡开关 |
| | | // 指纹数据 |
| | | isopen: false, //识别是否需要传指纹进去(解决异步传递后指纹DOM不存在的问题) |
| | | zhiwenImg: "", |
| | |
| | | }; |
| | | }, |
| | | watch: { |
| | | radio() { |
| | | if (this.radio) { |
| | | this.SFZloding = true; |
| | | this.olondSFZ(); |
| | | } else { |
| | | if (this.haveSEL != "noDrive" && this.haveSEL != "noEquipment") { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "关闭身份证设备识别!", |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | "form.tenantId"() { |
| | | if (this.form.tenantId !== "" && this.initFlag) { |
| | | this.initData(this.form.tenantId); |
| | |
| | | this.search["userType"] = 7; |
| | | this.search["hold"] = "1"; |
| | | } |
| | | this.userInfo.rname.forEach((roleName) => { |
| | | var roleName = this.userInfo.role_name; |
| | | // console.log(this.userInfo,52252); |
| | | // this.userInfo.rname.forEach((roleName) => { |
| | | if ( |
| | | roleName == "保安公司管理员" || |
| | | roleName == "保安" || |
| | |
| | | //默认全部展开 |
| | | column.dicUrl = "/api/blade-system/dept/security_lazy-tree"; |
| | | } |
| | | }); |
| | | // }); |
| | | |
| | | if ( |
| | | this.userInfo.account == "南昌市保安服务总公司" || |
| | |
| | | this.deptIds = this.userInfo.dept_id; |
| | | |
| | | // this.beginzhiwen(); |
| | | this.olondSFZ(); //检查身份证设备是否存在 |
| | | // this.olondSFZ(); //检查身份证设备是否存在 |
| | | }, |
| | | methods: { |
| | | openccc() { |
| | |
| | | } |
| | | } |
| | | }, |
| | | SFZopens() { |
| | | if (this.haveSEL == "noDrive") { |
| | | let url = |
| | | "http://223.82.109.183:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar"; |
| | | window.open(url, "_self"); |
| | | } else if (this.haveSEL == "noEquipment") { |
| | | this.radio = true; |
| | | } |
| | | }, |
| | | olondSFZ() { |
| | | // console.log(123456); |
| | | var that = this; |
| | | // // 开始连接设备 |
| | | // //调用对应的连接方法,并赋值给result |
| | | let lodings = (val) => { |
| | | setTimeout((res) => { |
| | | that.SFZloding = val; |
| | | }, 1000); |
| | | }; |
| | | this.cardShebei = CertCtl.connect((res) => { |
| | | let k = ""; |
| | | try { |
| | |
| | | } catch (error) { |
| | | k = res; |
| | | } |
| | | // console.log(k); |
| | | // console.log(res); |
| | | if (k == "") { |
| | | that.haveSEL = "noDrive"; |
| | | console.log("连接身份证设备失败,请安装驱动"); |
| | | // console.log("连接身份证设备失败,请安装驱动"); |
| | | that.sfzButTitle = "未安装身份证驱动,点击下载"; |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "连接身份证设备失败,请重新连接设备!", |
| | | }); |
| | | that.radio = false; |
| | | lodings(false); |
| | | return; |
| | | } |
| | | if (k.resultFlag == 0) { |
| | | that.haveSEL = "connectionSucceeded"; |
| | | console.log("连接身份证设备成功"); |
| | | // console.log("连接身份证设备成功"); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "连接身份证设备成功!", |
| | | }); |
| | | lodings(false); |
| | | } else { |
| | | that.haveSEL = "noEquipment"; |
| | | console.log("连接身份证设备失败,请重新连接设备"); |
| | | that.sfzButTitle = "连接身份证设备失败,请重试"; |
| | | // console.log("连接身份证设备失败,请重新连接设备!"); |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "连接身份证设备失败,请重新连接设备!", |
| | | }); |
| | | that.radio = false; |
| | | lodings(false); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | }, 2000); |
| | | }, |
| | | beginSFZ() { |
| | | if (this.haveSEL == "connectionSucceeded") { |
| | | if (this.haveSEL == "connectionSucceeded" && this.radio) { |
| | | this.haveCardid = false; |
| | | if (this.intTime) { |
| | | clearInterval(this.intTime); |
| | |
| | | } else { |
| | | this.setIntervals(); |
| | | } |
| | | } else { |
| | | clearInterval(this.intTime); |
| | | } |
| | | }, |
| | | closeSFZ(val) { |