function HebcaClient() { this.clientCtrl = null; } HebcaClient.prototype = { /* 旧版客户端实现 _GetClientCtrl: function() { if (this.clientCtrl) return this.clientCtrl; else { document.body.insertAdjacentHTML( "afterEnd", '' ); this.clientCtrl = document.getElementById("HebcaClient"); return this.clientCtrl; } }, */ _GetClientCtrl: function() { if (this.clientCtrl) return this.clientCtrl; else { var certMgrObj; try { certMgrObj = new ActiveXObject("HebcaP11X.CertMgr"); } catch (e) { throw Error("没有安装客户端软件或IE阻止其运行"); } certMgrObj.Licence = "aWViYx5oZWIcYWhlnWxhaJplY2FoZWJjoKw7gT6hg+O7EtJhfalPbDH9UlE="; this.clientCtrl = certMgrObj; return this.clientCtrl; } }, Sign: function(source) { var c = this._GetClientCtrl().SelectSignCert(); return c.SignText(source, 1); }, GetSignCert: function() { return this._GetClientCtrl().SelectSignCert().GetCertB64(); }, GetCryptCert: function() { return this._GetClientCtrl().SelectEncryptCert().GetCertB64(); }, //登录设备 Login: function(pwd) { this._GetClientCtrl().SelectDevice().Login(pwd); }, //退出设备 Logout:function(){ this._GetClientCtrl().SelectSignCert().Logout(); }, GetSubjectItem: function(item) { return this._GetClientCtrl().SelectSignCert().GetSubjectItem(item); } }; /* function HebcaEncrypt(){ this.alg = 0; this.userCertMap = new Array(); this.fileIn = ""; this.fileOut = ""; this.userKeyMap = new Array(); this.clientCtrl = null; } HebcaEncrypt.prototype = { _GetClientCtrl: function() { if (this.clientCtrl) return this.clientCtrl; else { var certMgrObj; try { certMgrObj = new ActiveXObject("HebcaClient.CertMgr"); } catch (e) { throw Error("没有安装客户端软件或IE组织其运行"); } certMgrObj.Licence = "aWViYx5oZWIcYWhlnWxhaJplY2FoZWJjoKw7gT6hg+O7EtJhfalPbDH9UlE="; this.clientCtrl = certMgrObj; return this.clientCtrl; } }, //添加一个接收者 AddReciever : function(user,cert){ this.userCertMap[this.userCertMap.length]={ user: user, cert: cert }; }, //加密 Encrypt : function(){ // _GetClientCtrl(). }, //获取用户名和密钥的对应字符串,字符串格式如下: //用户1:用户1密钥;用户2:用户2密钥; .... GetUserKeyString : function(){ var str=""; for(var i=0;i 0) { return true; } else { //第二次提交,签不签名都提交 if (count == 1) { count = 0; return true; } else { //第一次提交,提示 alert("需要先签名后,再提交!"); count += 1; return false; } } //return true; } //作用:进行签名 function doSignature(objectname,caName,signatureid,documentid) { if (document.getElementById("txtTransactMessage").value.replace(/^\s+|\s+$/g, '') == "") { alert('请先填写处理意见,再签名!'); return false; } var client = new HebcaClient(); var aa = client.GetSubjectItem("G"); if (caName == "") { alert('请先到个人设置中绑定证书,再进行签名!'); return false; } if (aa != caName ) { alert('请用登录的key进行签名!'); return false; } //对各个字段值以分号连接组织成一串字符串 var formData = document.getElementById("txtTransactMessage").value; //自定义组织数据结构形式 try { //调用签章控件的盖章接口, 显示电子签章并生成签章结果 archivesSealResult = document.getElementById(objectname).SignAndSealForResult(formData, "", 1, false, true); document.getElementById("archivesSealResult").value = archivesSealResult; if (archivesSealResult != null && archivesSealResult != "") { $.ajax({ type: "post", url: "../HebCAService.ashx", data: { keyvalue: archivesSealResult, InstanceRecordId: signatureid, filesId: documentid }, dataType: 'text', success: function(msg) { }, error: function() { // alert("默认审核人未能自动获取,请点击“选择用户”"); } }); } } catch (e) { alert(e.message); } } //处理环节不能为空,选择用户不能为空,处理意见不能为空 function submitCheck(isSignatureBool, caName) { var radios = document.getElementsByName("radiobutton"); var j = 0; var m = 0; if (radios != null) { var i; for (i = 0; i < radios.length; i++) { if (radios[i].checked) { j = j + 1; } else { m = 0; } } } if (j == 0) { alert("请选择处理环节!"); return false; } if (document.getElementById("selectUser").value == "") { alert('请填写选择用户!'); return false; } if (document.getElementById("txtTransactMessage").value.replace(/^\s+|\s+$/g, '') == "") { alert("请填写处理意见!"); return false; } //验证意见的长度 不能超过250个汉字或500个字符 一个汉字=2个字符 if (!checkdata()) { alert("不能超过250个汉字或500个字符!"); return false; } //检查签章 return SignatureOnOpinion(isSignatureBool, caName); } //意见审批页面必须要签名的判断 function SignatureOnOpinion(isSignatureBool, caName) { //验证是否需要签名 if (new String(isSignatureBool).toLowerCase() == "true") { //验证是否签名 if (document.getElementById("archivesSealResult").value == "") { alert("请先签名,再提交!"); return false; } //验证签名是否有效 document.getElementById(caName).VerifyAndShowSealWithResult(document.getElementById("archivesSealResult").value, 1, document.getElementById("txtTransactMessage").value); var result = document.getElementById(caName).GetVerifyResult(); if (result != "0") { alert("意见已修改,请在签名上点击右键,选择撤销签名,撤销后重新签名!"); return false; } } return true; } //在网页中验证和显示签章 function verifyAndShowSeal(documentid, url1) { var obs = document.getElementsByName("object"); for (var i = 0; i < obs.length; i++) { var id = obs.item(i).id; var opinion = obs.item(i).title; $.ajax({ type: "post", url: url1+"HebCAService.ashx", data: { InstanceRecordId: id, filesId: documentid, opinion: opinion }, dataType: 'text', success: function(msg) { if (msg.length > 0) { var a = msg.split(","); if (a.length == 3) { document.getElementById(a[0]).VerifyAndShowSealWithResult(a[1], 1, a[2]); if (document.getElementById(a[0] + "1") != null) { document.getElementById(a[0] + "1").VerifyAndShowSealWithResult(a[1].replace(" ", "+"), 1, a[2]); } } } }, error: function(msg) { alert(msg); } }); } } function checkdata() { //判断输入长度是否合法 if (strlen(document.getElementById("txtTransactMessage").value) > 500) { return false; } else { return true; } } //获取字符串长度 function strlen(str) { var totalCount = 0; for (var i = 0; i < str.length; i++) { var c = str.charCodeAt(i); if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) { totalCount++; } else { totalCount += 2; } } return totalCount; } //无效章的判断 function TjConfirm(validate) { if (validate == "0") { var j = 0; var mSignXMl = DocForm.SignatureControl.GetSignatureInfo(); var XmlObj = new ActiveXObject("Microsoft.XMLDOM"); XmlObj.async = false; var LoadOk = XmlObj.loadXML(mSignXMl); var ErrorObj = XmlObj.parseError; var CurNodes = XmlObj.getElementsByTagName("iSignature_HTML"); for (var iXml = 0; iXml < CurNodes.length; iXml++) { var TmpNodes = CurNodes.item(iXml); if (TmpNodes.selectSingleNode("SignatureResult").text == "False") { j = j + 1; } } if (j >= 1) { alert("当前文档内有" + j + "个无效章,请撤销重新签章后,再提交!"); return false; } else { return true; } } else { return false; } }