From 14f21a19a240b672eb89e76c448b45f74610ef0f Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Mon, 22 Nov 2021 15:46:43 +0800
Subject: [PATCH] +
---
src/views/securityGuard/sfzJS.js | 676 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 676 insertions(+), 0 deletions(-)
diff --git a/src/views/securityGuard/sfzJS.js b/src/views/securityGuard/sfzJS.js
new file mode 100644
index 0000000..5a006d3
--- /dev/null
+++ b/src/views/securityGuard/sfzJS.js
@@ -0,0 +1,676 @@
+var clearFormData = '';
+var urls = '';
+//创建读卡控件
+var CertCtl = new IDCertCtl();
+//身份证读卡控件创建
+function IDCertCtl(clearForms) {
+ clearFormData = clearForms;
+ //创建用于与服务交换数据的对象
+ this.xhr = createXmlHttp();
+ this.type = "CertCtl";
+ this.height = 0;
+ this.width = 0;
+ //连接
+ this.connect = CertCtl_connect;
+ //断开
+ this.disconnect = CertCtl_disconnect;
+ //获取状态
+ this.getStatus = CertCtl_getStatus;
+ //读卡
+ this.readCert = CertCtl_readCert;
+ //读IC卡序列号
+ this.readICCardSN = CertCtl_readICCardSN;
+ //读身份证物理卡号
+ this.readIDCardSN = CertCtl_readIDCardSN;
+ //读安全模块接口
+ this.getSAMID = CertCtl_getSAMID;
+ //读M1卡扇区内容
+ this.readM1Card = CertCtl_readM1Card;
+ //写M1卡扇区内容
+ this.writeM1Card = CertCtl_writeM1Card;
+ //处理CPU卡APDU指令
+ this.handleAPDUCMD = CertCtl_handleAPDUCMD;
+ //设置项目识别码
+ //this.setProgramCode = CertCtl_setProgramCode;
+ //核验项目识别码
+ this.checkProgramCode = CertCtl_checkProgramCode;
+ this.Routon_Mute = CertCtl_RoutonMute;
+ this.clearForms = clearFormData;
+}
+
+//创建XMLHttpRequest 对象,用于在后台与服务器交换数据
+function createXmlHttp() {
+ var xmlHttp = null;
+ //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
+ if (window.XMLHttpRequest) {
+ xmlHttp = new XMLHttpRequest(); //FireFox、Opera等浏览器支持的创建方式
+ }
+ else if (window.ActiveXObject) {
+ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
+ }
+ xmlHttp.withCredentials = false;
+ return xmlHttp;
+}
+
+//连接方法
+function CertCtl_connect() {
+ var result = "";
+ var iParam1 = "1";
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/connect", false);
+ // CertCtl.xhr.open("POST", urls, false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ //返回值readyState 0: 请求未初始化
+ // 1: 服务器连接已建立
+ // 2:请求已接收
+ // 3: 请求处理中
+ // 4: 请求已完成,且响应已就绪
+ //返回值status 200: "OK"
+ // 404: 未找到页面
+ //当返回值readyState为4且status为200时,为查询成功
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//断开方法
+function CertCtl_disconnect() {
+ var result = "";
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/disconnect", false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+//获取状态方法
+function CertCtl_getStatus() {
+ var result = "";
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/getStatus", false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//执行读卡操作
+function CertCtl_readCert() {
+ var result = "";
+ try {
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/readCard", false); //readCard读卡,不生成正反面仿复印件
+ //CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/readCert", false); //readCert读卡,生成正反面仿复印件
+ //发送请求
+ CertCtl.xhr.send();
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ } catch (e) {
+
+ }
+ return result;
+}
+
+//获取IC卡序列号
+function CertCtl_readICCardSN() {
+ var result = "";
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/readICCardSN", false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//获取身份证物理卡号
+function CertCtl_readIDCardSN() {
+ var result = "";
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/readIDCardSN", false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//获取SAMID
+function CertCtl_getSAMID() {
+ var result = "";
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ //getSAMID 获取的SAMID,格式为:05032013102800015247360103645891
+ //getSAMIDStr 获取SAMID,格式为:05.03-20131028-0001524736-0103645891
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/getSAMIDStr", false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//读M1卡扇区内容
+function CertCtl_readM1Card() {
+ var result = "";
+ var sid = "1";
+ var bid = "1";
+ var keyType = "1";
+ var key = "ffffffffffff";
+ if (document.getElementById("input_sid").value != "") {
+ sid = document.getElementById("input_sid").value;
+ }
+
+ if (document.getElementById("input_bid").value != "") {
+ bid = document.getElementById("input_bid").value;
+ }
+
+ if (document.getElementById("input_keytype").value != "") {
+ keyType = document.getElementById("input_keytype").value;
+ }
+
+ if (document.getElementById("input_key").value != "") {
+ key = document.getElementById("input_key").value;
+ }
+
+
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/readM1Card?" + "SID=" + sid + "&BID=" + bid + "&KEYTYPE=" + keyType + "&KEY=" + key, false);
+
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//写M1卡扇区内容
+function CertCtl_writeM1Card() {
+ var result = "";
+ var sid = "1";
+ var bid = "1";
+ var keyType = "1";
+ var key = "ffffffffffff";
+ var data = "00000000000000000000000000000000";
+ if (document.getElementById("input_sid").value != "") {
+ sid = document.getElementById("input_sid").value;
+ }
+
+ if (document.getElementById("input_bid").value != "") {
+ bid = document.getElementById("input_bid").value;
+ }
+
+ if (document.getElementById("input_keytype").value != "") {
+ keyType = document.getElementById("input_keytype").value;
+ }
+
+ if (document.getElementById("input_key").value != "") {
+ key = document.getElementById("input_key").value;
+ }
+
+ if (document.getElementById("cmd").value != "") {
+ data = document.getElementById("cmd").value;
+ }
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/writeM1Card?" + "SID=" + sid + "&BID=" + bid + "&KEYTYPE=" + keyType + "&KEY=" + key + "&DATA=" + data, false);
+ //CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/writeM1Card?"+"SID="+sid+"&BID="+bid+"&KEYTYPE="+keyType+"&KEY="+key+"&DATA="+data, false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//处理CPU卡APDU指令
+function CertCtl_handleAPDUCMD() {
+ //var cmd = "00A4000000"; //基本命令(测试用):选择MF下的根目录,返回值为:6F15840E315041592E5359532E4444463031A5038801019000
+ var cmd = "";
+ if (document.getElementById("cmd").value != "") {
+ cmd = document.getElementById("cmd").value;
+ }
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/handleAPDUCMD?" + "APDUCMD=" + cmd, false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+/*
+//设置项目识别码
+function CertCtl_setProgramCode(){
+ var programData = "";
+ if(document.getElementById("programData").value != "")
+ {
+ programData = document.getElementById("programData").value;
+
+ }
+
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/setProgramCode?"+"PROGRAMCODE="+programData, false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+*/
+//核验项目识别码
+function CertCtl_checkProgramCode() {
+ var programData = "";
+ if (document.getElementById("programData").value != "") {
+ programData = document.getElementById("programData").value;
+ }
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/checkProgramCode?" + "PROGRAMCODE=" + programData, false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//关闭声音
+function CertCtl_RoutonMute() {
+ var result = "";
+ var IsMute = false; //false - 开声音(默认开), true - 关声音
+ //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
+ CertCtl.xhr.open("POST", "http://127.0.0.1:18889/api/Routon_Mute?" + "ISMUTE=" + IsMute, false);
+ //发送请求
+ try {
+ CertCtl.xhr.send();
+ } catch (e) {
+ }
+ if (CertCtl.xhr.readyState == 4 && CertCtl.xhr.status == 200) {
+ result = CertCtl.xhr.responseText;
+ CertCtl.xhr.readyState = 1;
+ }
+ return result;
+}
+
+//转为Json格式
+function toJson(str) {
+ //var obj = JSON.parse(str);
+ //return obj;
+ return eval('(' + str + ')');
+}
+
+
+//清空页面上显示的内容
+function clearForm() {
+ clearFormData();
+ //对应控件的值全部清空
+ // document.getElementById("timeElapsed").value = "";
+ // document.getElementById("certType").value = "";
+ // document.getElementById("timeElapsed").value = "";
+ // document.getElementById("venderId").value = "";
+ // document.getElementById("signature").value = "";
+ // document.getElementById("partyName").value = "";
+ // document.getElementById("gender").value = "";
+ // document.getElementById("nation").value = "";
+ // document.getElementById("bornDay").value = "";
+ // document.getElementById("certAddress").value = "";
+ // document.getElementById("certNumber").value = "";
+ // document.getElementById("certOrg").value = "";
+ // document.getElementById("effDate").value = "";
+ // document.getElementById("expDate").value = "";
+ // document.getElementById("result").value = "";
+ // document.getElementById("HeadPic").src = "";
+ // document.getElementById("PhotoDisplay").src = "";
+ //document.getElementById("programData").value = "";
+ //document.getElementById("input_sid").value = "";
+ //document.getElementById("input_bid").value = "";
+ //document.getElementById("input_keytype").value = "";
+ //document.getElementById("input_key").value = "";
+ //document.getElementById("data").value = "";
+ //document.getElementById("ACardResult").value = "";
+}
+
+//连接方法
+function connect() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的连接方法,并赋值给result
+ var result = CertCtl.connect();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("result").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+//断开连接方法
+function disconnect() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的断开连接方法,并赋值给result
+ var result = CertCtl.disconnect();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("result").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+//获取状态方法
+function getStatus() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.getStatus();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("result").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+//读卡方法
+function readCert() {
+ //清空页面
+ clearForm();
+ //开始时间
+ var startDt = new Date();
+ //调用对应的读卡方法
+ var result = CertCtl.readCert();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //结束时间
+ var endDt = new Date();
+ //读卡时间回显
+ document.getElementById("timeElapsed").value = (endDt.getTime() - startDt.getTime()) + "毫秒";
+ document.getElementById("result").value = result;
+ //var resultObj = toJson(result);
+ //result = result.replace("\"resultFlag\":","\"resultFlag\":\"true\"");
+ //格式化result
+ //var resultObj = $.parseJSON(result);//windows10上面无法解析
+ var resultObj = eval('(' + result + ')');
+ //resultFlag为0代表读卡成功
+ if (resultObj.resultFlag == "0") {
+ //回显相关数据
+ document.getElementById("signature").value = resultObj.signature;
+ document.getElementById("venderId").value = resultObj.venderId;
+ document.getElementById("certType").value = resultObj.resultContent.certType;
+ document.getElementById("partyName").value = resultObj.resultContent.partyName;
+ document.getElementById("gender").value = resultObj.resultContent.gender;
+ document.getElementById("nation").value = resultObj.resultContent.nation;
+ document.getElementById("bornDay").value = resultObj.resultContent.bornDay;
+ document.getElementById("certAddress").value = resultObj.resultContent.certAddress;
+ document.getElementById("certNumber").value = resultObj.resultContent.certNumber;
+ document.getElementById("certOrg").value = resultObj.resultContent.certOrg;
+ document.getElementById("effDate").value = resultObj.resultContent.effDate;
+ document.getElementById("expDate").value = resultObj.resultContent.expDate;
+ document.getElementById("HeadPic").src = "data:image/jpeg;base64," + resultObj.resultContent.identityPic;
+ document.getElementById("PhotoDisplay").src = "data:image/jpeg;base64," + resultObj.resultContent.identityPrintPic;
+ } else if (resultObj.resultFlag == "-1") {
+ if (resultObj.errorMsg == "端口打开失败") {
+ alert("读卡器未连接");
+ } else {
+ alert(resultObj.errorMsg);
+ }
+ } else if (resultObj.resultFlag == "-2") {
+ alert(resultObj.errorMsg);
+ }
+ }
+}
+
+function readICCardSN() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ //CertCtl.Routon_Mute();
+ var result = CertCtl.readICCardSN();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("result").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+function readIDCardSN() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.readIDCardSN();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("result").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+function getSAMID() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.getSAMID();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("result").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+function readM1Card() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.readM1Card();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("ACardResult").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+function writeM1Card() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.writeM1Card();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("ACardResult").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+function handleAPDUCMD() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.handleAPDUCMD();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("ACardResult").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+/*
+function setProgramCode() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.setProgramCode();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("ACardResult").value = result;
+ }
+ } catch (e) {
+ }
+}
+*/
+
+/* 检测输入内容
+function check()
+{
+ var programCode = document.getElementById("programData").value;
+ if(programCode == "")
+ {
+ alert("项目码不能为空");
+ return false;
+ }
+ else if(programCode.length != 8)
+ {
+ alert("项目码为8个字符");
+ return false;
+ }
+ else
+ {
+ for(var i=0; i<programCode.length; i++)
+ {
+ if(!(programCode.charCodeAt(i)>='0'.charCodeAt() && programCode.charCodeAt(i)<='9'.charCodeAt())
+ && !(programCode.charCodeAt(i)>='a'.charCodeAt() && programCode.charCodeAt(i)<='z'.charCodeAt())
+ && !(programCode.charCodeAt(i)>='A'.charCodeAt() && programCode.charCodeAt(i)<='Z'.charCodeAt())
+ )
+ {
+ alert("项目码只能包含英文字母和数字");
+ return false;
+ }
+ }
+ }
+ return true;
+}
+*/
+
+function checkProgramCode() {
+ //清空页面
+ clearForm();
+
+ try {
+ //调用对应的获取状态方法,并赋值给result
+ var result = CertCtl.checkProgramCode();
+ //如果result为空,代表读卡插件未启动
+ if (result == "") {
+ alert("未启动读卡插件!")
+ } else {
+ //result页面回显
+ document.getElementById("ACardResult").value = result;
+ }
+ } catch (e) {
+ }
+}
+
+export default CertCtl;
\ No newline at end of file
--
Gitblit v1.9.3