/** * ----------------------------------------------------------common start-------------------------------------------------------------- */ //采集指纹次数 var FINGERPRINT_NUMBER = 3; //胁迫指纹数--胁迫指纹时,在普通指纹上加的数 var DURESS_FINGER_NUM = 16; //胁迫指纹标记 var duressFingerFlag = null; //是否显示胁迫指纹(用户登记指纹时,不需要胁迫指纹),默认显示胁迫指纹 var duressFingerShowFlag = true; //手指标记数组 var fingerIdArray = new Array();//[] //指纹模板数据数组 var templateDataArray = new Array();//[] //静脉标记数组 var fvIdArray = new Array(); //指静脉模板数据数组 var templateFVDataArray = new Array(); //定时器--关闭setTimeOut时用到 var timer = null; //定时器--验证 var verifyTimer = null; //判断当前手指是否正在采集中 var collectFlag = false; //当前点击的手指标记 var fpIdNum = null; //访问ISSOnline_server的ip var serverIp = null; //访问的ISSOnline_server端口 var serverPort = null; var httpsServerPort = null; //ISSOnline_server的url的公共部分:http://localhost:24008/ISSOnline var issOnlineUrl = null; //是否是访客 var isVisPager = false; /** * 表单提交 * @author wenxin * @create 2013-08-05 15:19:11 pm */ function formSubmit(id) { $('#'+id).serialize(); $('#'+id).ajaxForm(function(data){ callBackFormSubmit(data); }); $('#'+id).submit(); //表单提交。 } /** * 加载xml中ISSOnline_server的ip和port * @author wenxin * @create 2013-06-15 15:01:31 pm * @param url 加载xml的url */ function loadXml(url) { $.ajax( { type : "GET", url : url, dataType : "xml", async: false, success : function(xml) { $(xml).find('service').each(function(){ var service = $(this); serverIp = service.find('ISSOnline_serverIp').text(); serverPort = service.find('ISSOnline_serverPort').text(); httpsServerPort = service.find('ISSOnline_https_serverPort').text() || "24308"; }); }, error : function(XMLHttpRequest, textStatus, errorThrown) { //如果取配置文件出错,则设置默认 serverIp = "127.0.0.1"; serverPort = "24008"; httpsServerPort = "24308"; } }); //给issOnlineUrl赋值 issOnlineUrl = window.location.protocol + "//"+serverIp+":"+getServerPort()+"/ISSOnline"; } /** * 获取服务端口 */ function getServerPort() { if(window.location.protocol.indexOf("https:") == 0) { return httpsServerPort; } return serverPort; } /** * * TODO 是否https协议 * * @author chenPF * @since 2016年4月22日 下午5:23:15 * @returns {Boolean} */ function isHttpsProtocol() { return window.location.protocol.indexOf("https:") == 0; } /** * 获取编辑时,查询的数据库的指纹标记和指纹模板 * @author wenxin * @create 2013-04-22 10:18:31 am * @param fingerIdList 数据库查询的指纹标记 * @param templateList 数据库查询的指纹模板 */ function loadFPDataTemplate(fingerIdList, templateList) { if(fingerIdList == "[]") { $("#fingerId").val(" "); } else { $("#fingerId").val(fingerIdList); } if(templateList == "[]") { $("#fingerTemplate10").val(" "); } else { $("#fingerTemplate10").val(templateList); } showFPCount(""); } function loadFVDataTemplate(fvIdList, templateFVList) { var regAll = new RegExp("\"","g"); if(fvIdList == "[]") { $("#fvId").val(" "); } else { fvIdList = fvIdList.replace(regAll,"").replace("\[","").replace("\]",""); $("#fvId").val(fvIdList); } if(templateFVList == "[]") { $("#fvTemplate10").val(" "); } else { templateFVList = templateFVList.replace(regAll,"").replace("\[","").replace("\]",""); $("#fvTemplate10").val(templateFVList); } showFVCount(""); } /** * 清空比对服务数据 * @author wenxin * @create 2013-10-25 20:18:31 pm */ function clearFPServerData() { $.ajax( { type : "post", url : "baseBioVerifyAction!clearFPTemplate.action", dataType : "json", async: false, //timeout:1000, success : function(result) { //接口调用成功返回时 if(result.ret == "ok") { openMessage(msgType.success, "清空成功"); } else { openMessage(msgType.warning, "清空失败"); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"}); } }); } /** * 获取比对服务器数据--暂未用到,定制后台指纹比对中用到 * @author wenxin * @create 2014-03-21 09:23:31 am */ function getFPServerInfo() { $.ajax( { type : "post", url : "baseBioVerifyAction!getFPServerInfo.action", dataType : "json", async: false, //timeout:1000, success : function(result) { if("" != result.msg) { var templateMsg = jQuery.parseJSON(result.msg); $("#templateCount").val(templateMsg.db_template_count); $("#templateLimitCount").val(templateMsg.db_template_limit); } else { //alert("未启动比对服务"); //$("#templateCount").val(); //$("#templateLimitCount").val(); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { //alert("请安装指纹驱动或启动该服务!"); } }); } /** * 判断是否安装指纹驱动 * @author wenxin * @create 2013-04-22 20:18:31 pm * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器 * @param paramArray 存放国际化元素的数组 * @param isFPLogin 是否是指纹登录 true:是;false:否 */ function checkDriver(paramArray, browserFlag, isFPLogin) { var hrefStr = ""; if(browserFlag == "html5") { // 发送一个请求,检查是否安装驱动 getWebServerInfo(paramArray, isFPLogin, "0"); } else if(browserFlag == "simple") { //发送一个请求,检查是否安装驱动 getWebServerInfoForSimple(paramArray, isFPLogin, "0"); } else if(browserFlag == "upgradeBrowser") { if($("#userLoginForm [name='fingerLogin']").val() != undefined) { $("#userLoginForm [name='fingerLogin']").attr("onclick", ""); $("#userLoginForm [name='fingerLogin']").attr("title", "当前浏览器不支持改功能,请升级浏览器!"); } if($("#fpRegister").val() != undefined) { $("#fpRegister").attr("onclick", ""); $("#fpRegister").attr("title", "当前浏览器不支持改功能,请升级浏览器!"); } } } /** * 检查指纹采集器 * @author wenxin * @create 2013-06-17 20:18:31 pm * @param context 2d画布上下文 * @param paramArray 存放国际化元素的数组 * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器 */ function checkFPReader(context, paramArray, browserFlag) { if(browserFlag == "html5") { $.ajax( { type : "GET", url : issOnlineUrl+"/beginCapture?type=1&random="+getRandomNum(), dataType : "json", async: false, //timeout:1000, success : function(result) { //返回码 var ret = null; ret = result.ret; //接口调用成功返回时 if(ret == 0) { //显示框--采集提示 collectTips(context, paramArray[0], "html5"); } else if(ret == -2001||(ret == -2&&fpvType == 2))//指静脉的-2可能是指静脉动态链接库初始化失败或未检测到指静脉采集器。 { //显示框--采集提示 collectTips(context, paramArray[1], "html5", "warning"); } else if(ret == -2002) { getWebServerInfo(null, null, "1"); } else if(ret == -2005) { //显示框--采集提示 collectTips(context, paramArray[3], "html5"); } collectFlag = true; //取消采集 cancelRegister(); }, error : function(XMLHttpRequest, textStatus, errorThrown) { collectTips(context, "请安装指静脉驱动或启动该服务", "html5", "warning"); } }); } else if(browserFlag == "simple") { //创建XDomainRequest实例,用于ie8和ie9跨域访问 var xDomainRequest = new XDomainRequest(); //如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器 if (xDomainRequest) { xDomainRequest.open('GET', issOnlineUrl+"/beginCapture?type=1&random="+getRandomNum()); xDomainRequest.onload = function() { //获取接口返回值 var resultData = xDomainRequest.responseText; //转化为json对象 var obj = jQuery.parseJSON(resultData); //返回码 var ret = null; if(obj != null && obj.ret != undefined) { ret = obj.ret; } //接口调用成功返回时 if(ret == 0) { //显示框--采集提示 collectTips(null, paramArray[0], "simple"); } else if(ret == -2001) { //显示框--采集提示 collectTips(null, paramArray[1], "simple", "warning"); } else if(ret == -2002) { getWebServerInfoForSimple(null, null, "1"); } collectFlag = true; //取消采集 cancelRegister(); }; xDomainRequest.onerror = function() { //用完后,将对象置为空 xDomainRequest = null; }; xDomainRequest.send(); } } } /** * 显示登记--点击采集指纹 * @author wenxin * @create 2013-06-14 10:09:20 am * @param paramArray 存放国际化元素的数组 */ function showRegister(paramArray) { var hrefStr = ""; var param = '"'+paramArray[0]+'", "'+paramArray[1]+'", "'+paramArray[2]+'", '+null+''; $("#fpRegister").remove(); $("#downloadDriver").remove(); $(".countMessage").attr("driverDownload",""); //webservice接口调用成功,说明驱动已经安装 hrefStr = ""+paramArray[3]+""; $("#fpRegisterDiv").append(hrefStr); $("#fpCountMessage").attr("fpRegister",hrefStr); } function showFVRegister(paramArray) { var hrefStr = ""; var param = '"'+paramArray[8]+'", "'+paramArray[9]+'", "'+paramArray[2]+'", '+null+''; $("#fvRegister").remove(); $("#fvDownloadDriver").remove(); hrefStr = ""+paramArray[3]+""; $("#fvRegisterDiv").append(hrefStr); $("#fvCountMessage").attr("fpRegister",hrefStr); } /** * 显示指纹登录--点击进行指纹验证 * @author wenxin * @create 2013-06-14 10:09:20 am * @param paramArray 存放国际化元素的数组 */ function showFPVerify(paramArray) { $("#userLoginForm .but_fing_disabled").hide(); $("#userLoginForm .but_fing").show(); /*$("#fingerLogin").attr("class", "input_button button_over2"); $("#fingerLogin").attr("onmouseover", "this.className='button_over1 ';"); $("#fingerLogin").attr("onmouseout", "this.className='input_button button_over2';"); $("#fingerLogin").attr("onclick", "fpVerification('"+paramArray[1]+"', '"+paramArray[0]+"', true)"); $("#fingerLogin").attr("title", "指纹登录");*/ } /** * 鼠标over事件 * @author wenxin * @create 2013-06-18 10:09:20 am */ function mouseOverEvent() { $("#fpRegister").mouseover(function(e){ if(e.pageY > 270) { e.pageY = e.pageY - 55; e.pageX = e.pageX - 10; } this.myTitle = this.title; this.title = ""; var tooltip = "
"+ this.myTitle +"<\/div>"; //创建 div 元素 $("#fpCountMessage").append(tooltip); //把它追加到文档中 $("#tooltip").css({ "top": (e.pageY - 80) + "px", "left": (e.pageX - 240) + "px", "z-index": "2px", "position": "absolute", "display": "inline", "border": "1px solid #000", "background": "#f7f5d1" }).show("fast"); //设置x坐标和y坐标,并且显示 }).mouseout(function(){ this.title = this.myTitle; $("#tooltip").remove(); //移除 }); } /** * 指纹验证 * @author wenxin * @create 2013-06-21 11:09:20 am * @param title 页面标题国际化内容 * @param isDriverInstall 是否安装了驱动 * @param downloadPrompt 提示安装驱动国际化内容 */ function fpVerification(title, downloadPrompt, isDriverInstall) { //安装驱动 if(isDriverInstall) { //支持html5 if(typeof(Worker) != "undefined") { createWindow('base_baseFPVerify.do?random=' + getRandomNum() + '^0^0^465^320^'+title); //关闭页面前,取消采集 cancelCaptureBeforeClose("html5"); } else { createWindow('base_baseFPVerifySimple.do?random=' + getRandomNum() + '^0^0^465^320^' + title); //关闭页面前,取消采集 cancelCaptureBeforeClose("simple"); } } else { messageBox({messageType: "alert", title: "提示", text: downloadPrompt}); } } /** * 指纹验证(针对停车场在线监控的弹窗) * @author gaoqi.lian * @create 2016-09-12 11:09:20 am * @param title 页面标题国际化内容 * @param isDriverInstall 是否安装了驱动 * @param downloadPrompt 提示安装驱动国际化内容 */ function vidFpVerification(title, downloadPrompt, isDriverInstall) { //安装驱动 if(isDriverInstall) { //支持html5 if(typeof(Worker) != "undefined") { createWindow('base_baseFPVerify.do?random=' + getRandomNum() + '^0^0^465^320^'+title); if(isIE || navigator.userAgent.indexOf("Chrome") > 0) { var _tip=$(".dhxwin_active"); $(".dhxwin_active .dhxwin_hdr").css({"z-index":"105","position":"absolute","width":"100%"}) _tip.prepend('') } //关闭页面前,取消采集 cancelCaptureBeforeClose("html5"); } else { createWindow('base_baseFPVerifySimple.do?random=' + getRandomNum() + '^0^0^465^320^' + title); if(isIE || navigator.userAgent.indexOf("Chrome") > 0) { var _tip=$(".dhxwin_active"); $(".dhxwin_active .dhxwin_hdr").css({"z-index":"105","position":"absolute","width":"100%"}) _tip.prepend('') } //关闭页面前,取消采集 cancelCaptureBeforeClose("simple"); } } else { messageBox({messageType: "alert", title: "提示", text: downloadPrompt}); } } /** * 关闭页面前,如果正在进行验证,则先取消采集 * @author wenxin * @create 2013-06-24 19:57:11 pm * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器 */ function cancelCaptureBeforeClose(browserFlag) { //关闭页面时,监听关闭的onclick事件 getCurrentWindow().button("close").attachEvent("onClick", function() { clearTimeout(verifyTimer); if(browserFlag == "html5") { //正在进行验证,还没有关闭指纹采集 if(verifyFlag) { //取消采集 cancelCapture(); } //关闭页面 closeWindow(); } else if(browserFlag == "simple") { //alert("cancel capture before close window!"); //将定时器的递归调用关闭 clearTimeout(timer); //取消采集 cancelRegister(); //此处应该在取消结束后,再关闭窗口 closeWindow(); } }); } /** * 延时进行登录 * @author wenxin * @create 2013-07-26 16:57:11 pm */ function _callBackFunction(url) { return function() { window.location.href = url; }; } /** * 在页面初始化时,计算指纹数量 * @author wenxin * @create 2013-04-25 11:31:20 am * */ function showFPCountInit(fingerIdCount, text) { $("#fpCountMessage").empty(); $("#fpCountMessage").append("\"\"" +" "+ fingerIdCount); } function showFVCountInit(fvIdCount, text) { $("#fvCountMessage").empty(); $("#fvCountMessage").append("\"\"" +" "+ fvIdCount); } /** * 点击登记,触发事件 * @author wenxin * @create 2013-05-21 11:31:20 am * @param title 页面标题国际化内容 * @param fpCount 指纹数国际化内容 * @param saveText 提示:是否保存国际化内容 * @param downloadText 驱动安装国际化内容 * @param isDriverInstall 是否安装了驱动 */ var fpvType=1;//登录使用指纹验证时不跑submitRegister方法无法识别fpvType的值,所以必须给fpvType赋初值。 function submitRegister(title, fpCount, saveText, downloadText, isDriverInstall) { fpvType=1;//指纹为1,指静脉为2。 issOnlineUrl = window.location.protocol + "//"+serverIp+":"+getServerPort()+"/ISSOnline"; //支持html5 if (typeof(Worker) !== "undefined" && isDriverInstall) { createWindow('base_baseFPRegister.action?random=' + getRandomNum() + '^0^0^465^480^' + title);//public/html/applet.html //关闭页面时,提示保存数据 storeBeforeClose(fpCount, saveText); } else if(typeof(Worker) == "undefined" && isDriverInstall) { createWindow('base_baseFPRegisterSimple.action?random=' + getRandomNum() + '^0^0^465^460^' + title);//public/html/applet.html //关闭页面时,提示保存数据 storeBeforeClose(fpCount, saveText); } else if(!isDriverInstall) { messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"}); if(typeof($("#downloadDriver").val()) == "undefined") { var hrefStr = ""+downloadText+""; $("#driverDownload").append(hrefStr); } } } function submitFVRegister(title, fpCount, saveText, downloadText, isDriverInstall) { fpvType=2;//指纹为1,指静脉为2。 issOnlineUrl = window.location.protocol + "//"+serverIp+":"+getServerPort()+"/ISSOnline/fingervein"; //支持html5 if (typeof(Worker) !== "undefined" && isDriverInstall) { createWindow('base_baseFVRegister.action?random=' + getRandomNum() + '^0^0^465^480^' + title);//public/html/applet.html //关闭页面时,提示保存数据 storeBeforeClose(fpCount, saveText); } else if(typeof(Worker) == "undefined" && isDriverInstall) { createWindow('base_baseFVRegisterSimple.action?random=' + getRandomNum() + '^0^0^465^460^' + title);//public/html/applet.html //关闭页面时,提示保存数据 storeBeforeClose(fpCount, saveText); } else if(!isDriverInstall) { messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"}); if(typeof($("#fvDownloadDriver").val()) == "undefined") { var hrefStr = ""+downloadText+""; $("#fvDriverDownload").append(hrefStr); } } } /** * 关闭页面时,如果有修改操作,则提示用户保存数据 * @author wenxin * @create 2013-06-08 19:36:20 pm * @param fpCount 指纹数国际化内容 * @param saveText 提示:是否保存国际化内容 */ function storeBeforeClose(fpCount, saveText) { //关闭页面时,监听关闭的onclick事件 getCurrentWindow().button("close").attachEvent("onClick", function(){ //判断是否修改了数据(包括新增和删除) if ($("#whetherModify").val() != undefined && (fpModifyFlag != undefined && fpModifyFlag)) { //获取指纹标记数据 var fingerIdData = fingerIdArray; //获取指纹模板数据 var fingerTemplateData = templateDataArray; messageBox({ messageType : "confirm", text : saveText, callback : function(result) { saveData(result, fpCount); } }); } else { //取消采集 cancelRegister(); //将定时器的递归调用关闭 clearTimeout(timer); closeWindow(); } }); } /** * 将指纹数据保存到页面 * @author wenxin * @create 2013-05-24 16:12:21 pm */ function storeDataToHtml() { //没有手指标记数据 if(fingerIdArray.length == 0) { $("#fingerId").val(" "); } else { //将手指标记数据保存到页面 $("#fingerId").val("["+fingerIdArray.toString()+"]"); } showFPCountInit(fingerIdArray.length,""); //没有指纹模板数据 if(templateDataArray.length == 0) { $("#fingerTemplate10").val(" "); } else { //将指纹模板数据保存到页面 $("#fingerTemplate10").val("["+templateDataArray.toString()+"]"); } } function storeFVDataToHtml() { //没有手指标记数据 if(fvIdArray.length == 0) { $("#fvId").val(" "); } else { //将手指标记数据保存到页面 $("#fvId").val(fvIdArray.toString()); } showFVCountInit(fvIdArray.length,""); //没有指静脉模板数据 if(templateFVDataArray.length == 0) { $("#fvTemplate10").val(" "); } else { //将指静脉模板数据保存到页面 $("#fvTemplate10").val(templateFVDataArray.toString()); } //没有手指标记数据 if(fingerIdArray.length == 0) { $("#fingerId").val(" "); } else { //将手指标记数据保存到页面 $("#fingerId").val("["+fingerIdArray.toString()+"]"); } showFPCountInit(fingerIdArray.length,""); //没有指纹模板数据 if(templateDataArray.length == 0) { $("#fingerTemplate10").val(" "); } else { //将指纹模板数据保存到页面 $("#fingerTemplate10").val("["+templateDataArray.toString()+"]"); } } /** * 判断指纹数量--页面加载时,没有计算。只是在采集完指纹后计算指纹数量 * @author wenxin * @create 2013-04-22 21:26:31 pm */ function showFPCount(text) { var fingerId = $("#fingerId").val(); if($.trim(fingerId) == "") { showFPCountInit(0,""); //$("#fpCountMessage").text(text + " " + 0); } else { fingerId = fingerId.substr(1, fingerId.length - 2); var fingerIdArray = new Array(); fingerIdArray = fingerId.split(","); showFPCountInit(fingerIdArray.length,""); //$("#fpCountMessage").text(text + " " + fingerIdArray.length); } } function showFVCount(text) { var fvId = $("#fvId").val(); if($.trim(fvId) == "") { $("#fvCountMessage").children().remove(); showFVCountInit(0,""); //$("#fvCountMessage").text(text + " " + 0); } else { fvId = fvId.substr(1, fvId.length - 2); var fvIdArray = new Array(); fvIdArray = fvId.split(","); $("#fvCountMessage").children().remove(); showFVCountInit(fvIdArray.length/3,""); showFPCount(''); //$("#fvCountMessage").text(text + " " + fvIdArray.length/3); } } /** * 获取页面的指纹数据 * @author wenxin * @create 2013-05-13 10:18:31 am * @param */ function getDataFromPage() { var fingerId = $("#fingerId").val(); var fingerTemplate = $("#fingerTemplate10").val(); //如果有数据 if($.trim(fingerId) != "") { fingerId = fingerId.substr(1, fingerId.length-2); fingerTemplate = fingerTemplate.substr(1, fingerTemplate.length-2); fingerIdArray = fingerId.split(","); templateDataArray = fingerTemplate.split(","); }else{ fingerIdArray=new Array(); templateDataArray=new Array(); } } function getFVDataFromPage() { var fvId = $("#fvId").val(); var fvTemplate = $("#fvTemplate10").val(); //如果有数据 if($.trim(fvId) != "") { //fvId = fvId.substr(0, fvId.length); //fvTemplate = fvTemplate.substr(0, fvTemplate.length); fvIdArray = fvId.split(","); templateFVDataArray = fvTemplate.split(","); }else{ fvIdArray=new Array(); templateFVDataArray=new Array(); } getDataFromPage(); } /** * 点击已经采集指纹的手指时,弹出框删除数据 * 删除时的回调函数 * @author wenxin * @create 2013-05-14 17:12:21 pm * @param result 弹出框选择确定还是取消 * @param context 2d画布上下文 * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器 */ var delFPData = function(result, context, browserFlag) { var fingerId; if(result) { //将数组中的指定元素删除 for(var i=0; i= DURESS_FINGER_NUM) { fingerId = fingerId - DURESS_FINGER_NUM; if(fingerId == fpIdNum) { //fingerIdArray.remove(i); //templateDataArray.remove(i); removeItem(fingerIdArray, i); removeItem(templateDataArray, i); } } else { if(fingerId == fpIdNum) { //fingerIdArray.remove(i); //templateDataArray.remove(i); removeItem(fingerIdArray, i); removeItem(templateDataArray, i); } } } if(browserFlag == "simple") { document.getElementById("finger" + fingerId).checked = false; } else if(browserFlag == "html5") { //将手指颜色改变--重画时也要判断 context.fillStyle = bgColor; context.fill(); if(lastFPIdNum != null && lastFPIdNum != lastFPIdNum) { //消除原来手指的颜色 renderAfterColl(globalContext, lastFPIdNum, bgColor, false); } //消除需要删除的手指颜色 renderAfterColl(globalContext, fpIdNum, bgColor, false); } fpModifyFlag = true; $("#duressFinger").attr("disabled", false); $("#submitButtonId").attr("disabled", false); } else { if(browserFlag == "simple") { document.getElementById("finger" + fpIdNum).checked = true collectFlag = true; } else if(browserFlag == "html5") { //消除原来手指的颜色--有问题,如果原来手指和现在的一样,有问题 //renderAfterColl(globalContext, lastFPIdNum, bgColor, false); } } } function delFV() { //将数组中的指定元素删除 for(var i=0; i= DURESS_FINGER_NUM) { fingerId = fingerId -DURESS_FINGER_NUM; if(browserFlag == "html5") { if(fingerId == num) { context.fillStyle = "red"; context.fill(); } } } else { if(browserFlag == "html5"){ if(fingerId == num) { context.fillStyle = "rgb(122,193,66)"; context.fill(); } } } if(browserFlag == "simple") { document.getElementById("finger" + fingerId).checked = true; } } } function renderFVInit(context, num, browserFlag) { var fvId,tempFvId; for(var i=0; i= DURESS_FINGER_NUM) { fingerId = fingerId -DURESS_FINGER_NUM; } if(fingerId == num) { isCollected = true; } } return isCollected; } function isFVContains(fvIdArray, num) { var fvId,tempFvId; var isCollected = false; for(var j=0; j this.length) { return false; } //< for (var i = 0, n = 0; i < this.length; i++) { if(this[i] != this[dx]) { this[n++] = this[i] } } this.length -= 1 }*/ /** * 获取浏览器类型 * @author wenxin * @create 2013-08-09 17:24:31 pm */ function getBrowserType() { var browserFlag = ""; //是否支持html5的cors跨域 if (typeof(Worker) !== "undefined") { browserFlag = "html5"; } //此处判断ie8、ie9 else if(navigator.userAgent.indexOf("MSIE 8.0")>0 || navigator.userAgent.indexOf("MSIE 9.0")>0) { browserFlag = "simple"; } else { browserFlag = "upgradeBrowser";//当前浏览器不支持该功能,请升级浏览器 } return browserFlag; } /** * 获取webserver信息的回调函数 * @author wenxin * @create 2013-08-09 17:24:31 pm */ function getWebServerInfoCallBack(result, paramArray, isFPLogin) { //返回码 var ret = null; ret = result.ret; //接口调用成功返回时 if(ret == 0) { if(isFPLogin) { //显示指纹登录 showFPVerify(paramArray); } else { //显示登记--可以点击采集指纹 showRegister(paramArray); //显示指静脉登记--可以点击采集指静脉 showFVRegister(paramArray); //计算指纹数量指纹数:指纹数 showFPCountInit(paramArray[5], paramArray[6]); //计算指静脉数 showFVCountInit(paramArray[11], paramArray[9]); //鼠标over事件 //mouseOverEvent(); // 对比指纹驱动 if (result.data&&result.data.server_version){ compareFPDriver(result.data.server_version); } } } } /** * 对比指纹驱动版本 * @author gordon.zhang * @param oldVersion 旧驱动版本 * @create 2015-01-28 17:24:31 pm */ function compareFPDriver(oldVersion) { var newVersion = "2.0.40"; if (oldVersion==newVersion){ return; }else{ var newVerArr = newVersion.split("."); var oldVerArr = oldVersion.split("."); var length = newVerArr.length>oldVerArr.length?oldVerArr.length:newVerArr.length; for (var i=0;iparseInt(oldVerArr[i])){ showNewDriver(); showFVNewDriver(); return; } } } } /** * 显示发现新驱动 * @author gordon.zhang * @create 2015-01-28 17:24:31 pm */ function showNewDriver(){ var hrefStr = "下载新驱动"; $("#driverDownload").append(hrefStr); $("#driverDownload").removeAttr("style"); $(".countMessage").attr("driverDownload",hrefStr); } function showFVNewDriver(){ var hrefStr = "下载新驱动"; $("#fvDriverDownload").append(hrefStr); $("#fvDriverDownload").removeAttr("style"); } /** * 获取webserver的信息 * @author wenxin * @param * @param paramArray 存放国际化元素的数组 * @param isFPLogin 是否是指纹登录 true:是;false:否 * @param type 0 表示发送完请求后,还有别的操作。1 表示发送完请求后,没有其余的操作了 * @create 2013-08-09 17:24:31 pm */ function getWebServerInfo(paramArray, isFPLogin, type) { //修改访客登记使用网络摄像头抓拍,出现“插件加载失败”的提示 setTimeout(function(){ $.ajax( { type : "GET", url : issOnlineUrl+"/info", dataType : "json", async: false, // timeout:1000, success : function(result) { //检查驱动 if(type == "0") { getWebServerInfoCallBack(result, paramArray, isFPLogin); } //检查动态库连接 else if(type == "1") { getDLLConnectCallBack(result); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { showDriverInfoMessage(); } }); },5); } function showDriverInfoMessage() { if(isHttpsProtocol() && $('body').children('#driverInfoMessage').length == 0) { var html = "
"+ "" + "驱动检测异常,请点击此处进行处理。
"; $('body').prepend(html); $('body').children(".dhxcelltop_hdr").css("margin-top","20px"); var cont = $('body').children(".dhxlayout_cont"); cont.css({"top":parseInt(cont.css("top"))+20,"height":cont.height()-20}); cont.children().css("height",cont.height()); $(".dhx_cell_cont_layout.dhx_cell_cont_no_borders").css("height",cont.height()); $(".dhx_cell_cont_layout.dhx_cell_cont_no_borders .dhxacc_cont").css("height",cont.height()); } } /** * * TODO https提示安装证书 * * @author chenPF * @since 2016年4月25日 上午11:24:58 */ function installCert() { if(isHttpsProtocol()) { createWindow("base_opBaseInstallCert.do?type=custom^0^0^700^300^提示"); } $("#driverInfoMessage").css("display","none"); } /** * 获取webserver的信息--简易版 * @author wenxin * @param paramArray 存放国际化元素的数组 * @param isFPLogin 是否是指纹登录 true:是;false:否 * @create 2013-08-09 17:43:31 pm */ function getInfoForSimpleCallBack(xDomainRequest, paramArray, isFPLogin) { //获取接口返回值 var resultData = xDomainRequest.responseText; //转化为json对象 var obj = jQuery.parseJSON(resultData); //返回码 var ret = null; if(obj != null && obj.ret != undefined) { ret = obj.ret; } //接口调用成功返回时 if(ret == 0) { if(isFPLogin) { //显示指纹比对 showFPVerify(paramArray); } else { //显示登记--点击采集指纹 showRegister(paramArray); //显示指静脉登记--可以点击采集指静脉 showFVRegister(paramArray); //计算指纹数量指纹数:指纹数 showFPCountInit(paramArray[5], paramArray[6]); //计算指静脉数 showFVCountInit(paramArray[11], paramArray[9]); //鼠标over事件 //mouseOverEvent(); } //用完后,将对象置为空 xDomainRequest = null; } } /** * 获取webserver的信息 * @author wenxin * @param paramArray 存放国际化元素的数组 * @param isFPLogin 是否是指纹登录 true:是;false:否 * @param type 0 表示发送完请求后,还有别的操作。1 表示发送完请求后,没有其余的操作了 * @create 2013-08-09 17:24:31 pm */ function getWebServerInfoForSimple(paramArray, isFPLogin, type) { //创建XDomainRequest实例,用于ie8和ie9跨域访问 var xDomainRequest = new XDomainRequest(); //如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器 if (xDomainRequest) { xDomainRequest.open('GET', issOnlineUrl+"/info?random="+getRandomNum()); xDomainRequest.onload = function() { //检查驱动 if(type == "0") { getInfoForSimpleCallBack(xDomainRequest, paramArray, isFPLogin); } //检查动态库连接 else if(type == "1") { getDLLConnectCallBack(xDomainRequest); } }; xDomainRequest.onerror = function() { //用完后,将对象置为空 xDomainRequest = null; }; xDomainRequest.send(); } } var readyStateForSimple = false;//判断接口调用状态标志--指纹采集简易版防止频繁调用webservice接口 /** * 取消采集(简易版) * @author wenxin * @create 2013-06-01 14:54:31 pm */ function cancelCaptureForSimple() { readyStateForSimple = false; //创建XDomainRequest实例,用于ie8和ie9跨域访问 xDomainRequest = new XDomainRequest(); if (xDomainRequest) { xDomainRequest.open('GET', issOnlineUrl+"/cancelCapture?random="+getRandomNum()); xDomainRequest.onload = cancelCaptureCallBack; xDomainRequest.onerror = errorMsg; xDomainRequest.send(); } } /** * 打开采集,开始扫描 * @author wenxin * @create 2013-06-01 10:18:31 am */ function beginFPRegister(type) { //让ie支持cors方式跨域 jQuery.support.cors = true; //创建XDomainRequest实例,用于ie8和ie9跨域访问 xDomainRequest = new XDomainRequest(); //如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器 if (xDomainRequest) { xDomainRequest.open('GET', issOnlineUrl+"/beginCapture?type="+type+"&random="+getRandomNum()); xDomainRequest.onload = beginCaptureCallBack; xDomainRequest.onerror = errorMsg; xDomainRequest.send(); } } /** * 采集指纹、显示采集次数、指纹图像 * @author wenxin * @create 2013-06-01 14:54:31 pm */ function captureAndGetImage() { //创建XDomainRequest实例,用于ie8和ie9跨域访问 xDomainRequest = new XDomainRequest(); if (xDomainRequest) { xDomainRequest.open('GET', issOnlineUrl+"/getImage?random="+getRandomNum()); xDomainRequest.onload = getImageCallBack; xDomainRequest.onerror = errorMsg; xDomainRequest.send(); } } /** * 获取指纹模板(简易版) * @author wenxin * @create 2013-06-04 15:15:31 pm */ function getFPTemplateForSimple() { //创建XDomainRequest实例,用于ie8和ie9跨域访问 xDomainRequest = new XDomainRequest(); if (xDomainRequest) { xDomainRequest.open('GET', issOnlineUrl+"/getTemplate?random="+getRandomNum()); xDomainRequest.onload = getTemplateCallBack; xDomainRequest.onerror = errorMsg; xDomainRequest.send(); } } /** * 清空指纹图像 * @author wenxin * @create 2013-09-05 15:15:11 pm */ function clearFPImage(context, browserFlag) { if(browserFlag == "verification") { // showImage(context, "/base/images/base_fpVerify_clearImage.png", "clearForVerify"); } else if(browserFlag == "register") { showImage(context, "/base/images/base_fpVerify_clearImage.png", "clearForRegister"); } else if(browserFlag == "verifyForSimple" || browserFlag == "registerForSimple") { showImage(null, "", "clearForSimple"); } } /** * 显示指纹图像 * @author wenxin * @create 2013-05-18 11:22:31 am * @param context 2d画布上下文 * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器 */ var baseShowImageInterval,flag=0; function showImage(context, base64FPImg, browserFlag) { var img,imgGif; var imgSrc = "data:image/jpg;base64,"+base64FPImg; if(browserFlag == "html5"){ img = new Image(); //img.src = sysCfg.rootPath + "/public/html/bmpFile1.jpg"; img.src = imgSrc; img.onload=function() { // 保存当前的绘图状态 context.save(); // 开始创建路径 context.beginPath(); // 画一个椭圆 context.oval(125, 142, 112, 145); // 关闭路径 context.closePath(); // 剪切路径 context.clip(); //将图片画到画布上 context.drawImage(img, 70, 70, 112, 145); //调用restore最后一次存储的状态会被恢复 context.restore(); } } else if(browserFlag == "verification") { img = new Image(); img.src = imgSrc; img.onload=function() { // 保存当前的绘图状态 context.save(); // 开始创建路径 context.beginPath(); // 画一个椭圆 context.oval(92, 159, 100, 128); // 关闭路径 context.closePath(); // 剪切路径 context.clip(); //将图片画到画布上 context.drawImage(img, 37, 90, 112, 145); //调用restore最后一次存储的状态会被恢复 context.restore(); } } else if(browserFlag == "clearForVerify" || browserFlag == "clearForRegister") { img = new Image(); img.src = base64FPImg; img.onload=function() { // 保存当前的绘图状态 context.save(); // 开始创建路径 context.beginPath(); // 画一个椭圆 if(browserFlag == "clearForVerify") { context.oval(91, 160, 112, 145); } else if(browserFlag == "clearForRegister") { context.oval(125, 142, 132, 165); } // 关闭路径 context.closePath(); // 剪切路径 context.clip(); //将图片画到画布上 if(browserFlag == "clearForVerify") { context.drawImage(img, 12, 54, 160, 213); } else if(browserFlag == "clearForRegister") { if(fpvType==2)//指纹 { imgGif = new Image(); imgGif.src = "/base/images/base_fv0.png"; clearInterval(baseShowImageInterval); baseShowImageInterval=setInterval(function (){ if(flag==0) { context.drawImage(img, 60, 60, 132, 165); flag=1; } else { context.drawImage(imgGif, 60, 60, 132, 165); flag=0; } }, 700); } else { context.drawImage(img, 60, 60, 132, 165); } } //调用restore最后一次存储的状态会被恢复 context.restore(); } } else if(browserFlag == "simple") { $("#showFPImageDiv").html(""); } else if(browserFlag == "verifySimple") { $("#showSeachingDiv").show(); $("#showSeachingDiv").html("  
"); } else if(browserFlag == "clearForSimple") { $("#showFPImageDiv").html(""); } } /** * 获取指纹模板 * @author wenxin * @create 2013-05-22 19:51:31 pm * @param paramArray 存放国际化元素的数组 * @param flag 判断是登记和验证标记 register:登记;verification:验证 */ function getFPTemplate(paramArray, flag) { var fpTemplate = ""; var fvTemplate = ""; var collectSuccessFlag = false; $.ajax( { type : "GET", url : issOnlineUrl+"/getTemplate?random="+getRandomNum(), dataType : "json", async: false, success : function(result) { //返回码 var ret = null; ret = result.ret; if(ret == 0) { if(fpvType==1)//指纹 { fpTemplate = result.data.template; } else if(fpvType==2)//指静脉 { fpTemplate = result.data.fingerprint.template; } } //成功 if(ret == 0) { collectSuccessFlag = true; if(flag == "register") { //判断手指是否已经采集指纹 var compareRet = ""; if(fpvType==1)//指纹 { //如果前面已经录入指纹 if(templateDataArray.length > 0) { //发送请求,进行后台指纹比对 compareRet = fpComparision(fpTemplate, templateDataArray, paramArray[3]); } } else if(fpvType==2)//指静脉 { //如果前面已经录入指纹 if(templateFVDataArray.length > 0) { var templateDataTempArray = new Array(); templateDataTempArray = templateDataArray.slice(); //如果指静脉中含有指纹并且原来指纹也有录入该指纹则删除该指纹,使用最后录入的指纹。 if(fpTemplate!=undefined&&fpTemplate!="") { for(var i=0; i= DURESS_FINGER_NUM) { fingerId = fingerId - DURESS_FINGER_NUM; if(fvIdArray.indexOf(fingerId+"_0")==-1) { removeItem(templateDataTempArray, i); } } else { if(fvIdArray.indexOf(fingerId+"_0")==-1) { removeItem(templateDataTempArray, i); } } } } //发送请求,进行后台指纹比对,指纹比对通过指静脉也通过已经与陈工确认过。 compareRet = fpComparision(fpTemplate, templateDataTempArray, paramArray[3]); } } if($.trim(compareRet) == "dllNotExist") { //采集完指纹,渲染手指 renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断 //显示框--采集提示 collectTips(globalContext, "动态库加载失败", "html5"); } else { if(compareRet == "noFingerServer") { //采集完指纹,渲染手指 renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断 //显示框--采集提示 collectTips(globalContext, "未启动比对服务", "html5"); } else { //此手指未采集指纹 if(compareRet != "ok") { //采集完指纹,渲染手指 renderAfterColl(globalContext, fpIdNum, bgColor, true);//bgColor判断 //显示框--采集提示 collectTips(globalContext, paramArray[0], "html5"); if(fpvType==1)//指纹 { //胁迫指纹 if(duressFingerFlag) { //将手指标记保存到数组中 fingerIdArray[fingerIdArray.length] = fpIdNum + DURESS_FINGER_NUM; } else { //将手指标记保存到数组中 fingerIdArray[fingerIdArray.length] = fpIdNum; } } else//指静脉 { fvIdArray[fvIdArray.length] = fpIdNum+"_0"; fvIdArray[fvIdArray.length] = fpIdNum+"_1"; fvIdArray[fvIdArray.length] = fpIdNum+"_2"; //如果指静脉中含有指纹并且原来指纹也有录入该指纹则删除该指纹,使用最后录入的指纹。 if(fpTemplate!=undefined&&fpTemplate!="") { for(var i=0; i= DURESS_FINGER_NUM) { fingerId = fingerId - DURESS_FINGER_NUM; if(fingerId == fpIdNum) { removeItem(fingerIdArray, i); removeItem(templateDataArray, i); fpIdNum = fpIdNum + DURESS_FINGER_NUM; } } else if(fingerId == fpIdNum) { removeItem(fingerIdArray, i); removeItem(templateDataArray, i); } } } //将手指标记保存到数组中 fingerIdArray[fingerIdArray.length] = fpIdNum; } if(fpvType==2)//指静脉会采集一枚指纹三枚指静脉 { //templateFVDataArray[templateFVDataArray.length] = fpTemplate;//指静脉采集时的指纹 //将指纹中的指纹模板保存到数组中 templateDataArray[templateDataArray.length] = fpTemplate; templateFVDataArray[templateFVDataArray.length] = result.data.fingervein[0].template; templateFVDataArray[templateFVDataArray.length] = result.data.fingervein[1].template; templateFVDataArray[templateFVDataArray.length] = result.data.fingervein[2].template; } else if(fpvType==1)//指纹 { //将指纹中的指纹模板保存到数组中 templateDataArray[templateDataArray.length] = fpTemplate; } } else { //采集完指纹,渲染手指 renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断 //Please don't repeat input fingerprint! //显示框--采集提示 collectTips(globalContext, paramArray[2], "html5"); } } } } else if(flag == "verification") { verifyFlag = false; //指纹比对 fpComparison(fpTemplate); } } else if(ret == -2003) { //采集完指纹,渲染手指 renderAfterColl(globalContext, fpIdNum, bgColor, false); //显示框--采集提示 collectTips(globalContext, paramArray[1], "html5", "warning"); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { messageBox({messageType: "alert", title: "提示", text: paramArray[3]}); } }); return collectSuccessFlag; } /** * 发送请求到后台,进行比对 * @author wenxin * @create 2013-08-05 16:20:31 pm * @param fpTemplate 指纹模板 * @param templateArray 指纹模板数组 * @param errorMsg ajax请求报错,错误信息 */ function fpComparision(fpTemplate, templateArray, errorMsg) { var ret = ""; var templates = templateArray.toString(); //特殊字符转义 fpTemplate = transferredMeaning(fpTemplate); templates = transferredMeaning(templates); $.ajax( { type : "POST", url : "baseBioVerifyAction!fpComparison.action", contentType : "application/x-www-form-urlencoded;charset=UTF-8", data : "verifyTemplate="+fpTemplate+"&templates="+templates, dataType : "json", async: false, success : function(result) { if(result.ret == "ok") { ret = "ok"; } if(result.msg == "noFingerServer") { ret = "noFingerServer"; } if(result.msg == "dllNotExist") { ret = "dllNotExist"; } }, error : function(XMLHttpRequest, textStatus, errorThrown) { messageBox({messageType: "alert", title: "提示", text: "服务器处理数据失败,请重试!错误码:"}); } }); return ret; } /** * ----------------------------------------------------------common end-------------------------------------------------------------- */ /** * ----------------------------------------------------------html5 start------------------------------------------------------------- */ /** * 初始化绘画手指、手掌、圆弧的起始坐标,并做成json格式 * @author wenxin * @create 2013-06-15 15:40:31 pm */ function initCoordJson() { var coordJson = [{"num" : 0, "coord" : {"x" : x + 3, "y" : y - 37}}, {"num" : 1, "coord" : {"x" : x + 25, "y" : y - 37}}, {"num" : 2, "coord" : {"x" : x + 47, "y" : y - 34}}, {"num" : 3, "coord" : {"x" : x + 67, "y" : y - 26}}, {"num" : 4, "coord" : {"x" : x + 77, "y" : y + 18}}, {"num" : 5, "coord" : {"x" : x + 153, "y" : y + 34}}, {"num" : 6, "coord" : {"x" : x + 159, "y" : y - 19}}, {"num" : 7, "coord" : {"x" : x + 177, "y" : y - 30}}, {"num" : 8, "coord" : {"x" : x + 198, "y" : y - 36}}, {"num" : 9, "coord" : {"x" : x + 220, "y" : y - 36}}, {"num" : 10, "coord" : {"x" : x, "y" : y}}, {"num" : 11, "coord" : {"x" : x + 170, "y" : y + 12}}, {"num" : 12, "coord" : {"x" : x + 210, "y" : y - 346}}]; return coordJson; } /** * 采集完指纹后渲染手指 * @author wenxin * @create 2013-05-18 11:33:31 am * @param context 2d画布上下文 * @param num 当前需要渲染的手指编号 * @param fillColor 采集完后填充颜色 * @param successOrNot 采集是否成功--布尔值 true:采集成功;false:采集失败 */ function renderAfterColl(context, num, fillColor, successOrNot) { var canvas = document.getElementById("canvas"); var localContext = canvas.getContext("2d"); var coordArray = new Array(); //初始化起始坐标,并返回json格式数据 var coordJson = initCoordJson(); //进来页面,点击删除 if(num == null) { num = fpIdNum; } //点击的手指编号和json中num相等 if(coordJson[num].num == num) { //初始化坐标数组和绘画手指 initCoordAndDrawFinger(context, coordArray, coordJson[num].coord.x, coordJson[num].coord.y, num); } //采集成功,填充颜色(红、绿) if(successOrNot) { if(duressFingerFlag) { localContext.fillStyle = "red";//fillColor localContext.fill(); fpModifyFlag = true; } else { localContext.fillStyle = "rgb(122,193,66)";//fillColor localContext.fill(); fpModifyFlag = true; } } else { //采集失败,填充背景色--消除颜色(黄) localContext.fillStyle = fillColor; localContext.fill(); } } /** * 坐标点对象 * @author wenxin * @create 2013-05-31 18:01:33 pm */ var Coord = function(x, y) { this.x = x; this.y = y; } /** * 初始化坐标数组和绘画手指--获取当前的context * @author wenxin * @create 2013-05-31 18:01:33 pm * @param context 2d画布上下文 * @param pointArray 坐标点数组 * @param x,y 绘画当前手指的起始坐标 * @param num 手指标记 */ function initCoordAndDrawFinger(context, coordArray, x, y, num) { coordArray = initCoordArray(coordArray, x, y, num); new renderFinger(context, coordArray).drawFinger(strokeStyle, fingerBorderColor); } /** * 绘画手指 * @author wenxin * @create 2013-05-31 18:01:33 pm * @param context 2d画布上下文 * @param pointArray 坐标点数组 * @param renderFlag 渲染标记 stroke:绘画边线;fill:填充 * @param color 渲染颜色 */ var renderFinger = function(context, pointArray) { this.context = context; this.pointArray = pointArray; this.isClick = false; this.drawFinger = function(renderFlag, color) { if(renderFlag == "stroke") { this.context.strokeStyle = color; } else if(renderFlag == "fill") { this.context.fillStyle = color; } this.context.lineWidth = 1; this.context.beginPath(); for(var i=0; i"+text+""); } else if(browserFlag == "html5") { context.fillStyle = bgColor;//bgColor; //修改在非中文环境下文本显示排版问题 modified by 陈彩云 20160526 context.fillRect(75, 18, 350, 16); //修改防假提示语颜色 modified by 陈彩云 20160616 if(text == "疑似假指纹,请重新登记。") { if(type=="warning") { context.fillStyle = "#e57a14"; } else { context.fillStyle = "rgb(255,0,0)"; } } else { if(type=="warning") { context.fillStyle = "#e57a14"; } else { context.fillStyle = "rgb(122,193,66)"; } } context.font ="12px Arial,微软雅黑"; //context.shadowColor = 'white'; //context.shadowBlur = 10; //context.strokeText(text, 230, 30); context.textAlign = "end"; context.fillText(text, 400, 30); } else if(browserFlag == "verification") { //#6BA5D7 if(type=="warning") { context.fillStyle = "#e57a14"; } else { context.fillStyle = "#F3F5F0";//#6BA5D7 } context.fillRect(2, 8, 600, 30); //获取canvas对象 var canvas = document.getElementById("canvas"); // canvas.width = canvas.width; //返回一个文本的度量信息对象metrics var metrics = context.measureText(text); //文本宽度 var textWidth = metrics.width; //canvas宽度 canvas != null?canvasWidth = canvas.width:canvasWidth = 450; //文本开始x坐标 var x = textWidth/2 + (canvasWidth - textWidth)/2; //context.fillStyle = bgColor; //context.fillRect(0, 18, 445, 16); if(type=="warning") { context.fillStyle = "#e57a14"; } else { context.fillStyle = "rgb(122,193,66)"; } context.font ="24px Arial,微软雅黑"; context.textAlign = "center"; //自动换行 autoWordBreak(context,text,canvasWidth,x); context.restore(); } else if(browserFlag == "verifyForSimple") { $("#showCollInfoDiv").html(""+text+""); } } /** * 画布文本自动换行 * @author chenpf * @create 2015-03-10 16:56:31 pm * @param context 2d画布上下文 * @param text 显示信息内容 * @param CWidth 画布宽度 * @param x 文本X坐标值 * */ function autoWordBreak(context,text,CWidth,x){ context.clear(); var rownum = CWidth / 10; var len = strlen(text); if (rownum > len) { context.fillText(text, x, 30); } else { var endInd = rownum=text.length) break; endInd = beginInd + rownum; } } } /** * 画进度条 * @author wenxin * @create 2013-05-16 16:56:31 pm * @param context 2d画布上下文 * @param x,y,width,height 进度条底框的坐标和宽度、高度 */ function drawProgressBar(context, collCount) { var x = 285; var y = 60; var width = 90; var height = 20; context.fillStyle = bgColor; context.fillRect(x, y, width, height); if(collCount == 0) { context.fillStyle = "rgb(175,181,185)"; context.fillRect(x + 4, y + 2, width - 52, height - 4); context.fillRect(x + 46, y + 2, width -52, height - 4); context.fillRect(x + 86, y + 2, width - 52, height - 4); } else if(collCount == 1) { context.fillStyle = "rgb(122,193,66)"; context.fillRect(x + 4, y + 2, width - 52, height - 4); context.fillStyle = "rgb(175,181,185)"; context.fillRect(x + 46, y + 2, width - 52, height - 4); context.fillRect(x + 86, y + 2, width - 52, height - 4); } else if(collCount == 2) { context.fillStyle = "rgb(122,193,66)"; context.fillRect(x + 4, y + 2, width - 52, height - 4); context.fillRect(x + 46, y + 2, width - 52, height - 4); context.fillStyle = "rgb(175,181,185)"; context.fillRect(x + 86, y + 2, width - 52, height - 4); } else if(collCount == 3) { context.fillStyle = "rgb(122,193,66)"; context.fillRect(x + 4, y + 2, width - 52, height - 4); context.fillRect(x + 46, y + 2, width - 52, height - 4); context.fillRect(x + 86, y + 2, width - 52, height - 4); } } /** * ----------------------------------------------------------html5 end------------------------------------------------------------- */