forked from nsjcy/frontEnd/nsjcy

Mr Ke
2020-05-27 58ae2ba21efcd85df331cf996a94038a77302b51
SunshineIns/src/copy/fingerprint/js/main.js
@@ -27,7 +27,7 @@
//绘画的图形填充样式--填充绘图
var fillStyle = "fill";
//点击手指 的颜色
var fillFingerColor="rgb(71,75,79)";
var fillFingerColor = "rgb(71,75,79)";
//判断是否修改了数据(包括新增和删除)
var fpModifyFlag = false;
@@ -38,33 +38,30 @@
 * @param x, y 椭圆定位的坐标
 * @param width, height 椭圆的宽度和高度
 */
CanvasRenderingContext2D.prototype.oval = function(x, y, width, height)
{
    var k = (width/0.75)/2,w = width/2,h = height/2;
    this.strokeStyle = bgColor;
CanvasRenderingContext2D.prototype.oval = function (x, y, width, height) {
   var k = (width / 0.75) / 2, w = width / 2, h = height / 2;
   this.strokeStyle = bgColor;
   this.beginPath();
   this.moveTo(x, y-h);
   this.bezierCurveTo(x+k, y-h, x+k, y+h, x, y+h);
   this.bezierCurveTo(x-k, y+h, x-k, y-h, x, y-h);
   this.moveTo(x, y - h);
   this.bezierCurveTo(x + k, y - h, x + k, y + h, x, y + h);
   this.bezierCurveTo(x - k, y + h, x - k, y - h, x, y - h);
   this.closePath();
   this.stroke();
   return this;
}
 /**
 * 查动态库连接回调函数
 * @author wenxin
 * @create 2013-05-15 17:12:21 pm
 * @param ${pers_person_templateCount}:指纹数
 */
function getDLLConnectCallBack(result,isComp)
{
   if(globalContext == null)
   {
      if(isComp==true){
/**
* 查动态库连接回调函数
* @author wenxin
* @create 2013-05-15 17:12:21 pm
* @param ${pers_person_templateCount}:指纹数
*/
function getDLLConnectCallBack(result, isComp) {
   if (globalContext == null) {
      if (isComp == true) {
         globalContext = document.getElementById("canvasComp").getContext("2d");
      }else{
      } else {
         globalContext = document.getElementById("canvas").getContext("2d");
      }
   }
@@ -72,13 +69,11 @@
   var ret = null;
   ret = result.ret;
   //接口调用成功返回时
   if(ret == 0)
   {
   if (ret == 0) {
      //${base_fp_connectFail}:连接指纹采集器失败
      collectTips(globalContext, "未检测到指纹采集器.", "verification");
   }
   else
   {
   else {
      //${base_fp_loadFail}:加载ZKFinger10失败
      collectTips(globalContext, "加载动态库失败.", "verification");
   }
@@ -89,48 +84,41 @@
 * @create 2013-06-24 10:11:21 am
 * @param context 2d画布上下文
 */
function beginCapture(context)
{
   $.ajax( {
      type : "GET",
      url : issOnlineUrl+"/fingerprint/beginCapture?type=2&FakeFunOn=0&random="+getRandomNum(),
      dataType : "json",
function beginCapture(context) {
   $.ajax({
      type: "GET",
      url: issOnlineUrl + "/fingerprint/beginCapture?type=2&FakeFunOn=0&random=" + getRandomNum(),
      dataType: "json",
      async: true,
      success : function(result)
      {
      success: function (result) {
         //返回码
         var ret = null;
         ret = result.ret;
         //接口调用成功返回时
         if(ret == 0)
         {
         if (ret == 0) {
            verifyFlag = true;
            //检查采集、显示图像
            checkColl();
         }
         else if(ret == -2001)
         {
         else if (ret == -2001) {
            //${base_fp_connectFail}:连接指纹采集器失败
            //显示框--采集提示
            collectTips(context, "未检测到指纹采集器.", "verification");
         }
         else if(ret == -2002)
         {
         else if (ret == -2002) {
            getWebServerInfo(null, null, "1");
         }
         else if(ret == -2005)
         {
         else if (ret == -2005) {
            //取消采集
            cancelCapture();
            //开始采集
            beginCapture(globalContext);
         }
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("请安装指纹驱动或启动该服务!");
         //messageBox({messageType: "alert", title: "${common_prompt_title}", text: "${base_fp_connectPrompt}"});
       }
      }
   });
}
/**
@@ -138,34 +126,30 @@
 * @author wenxin
 * @create 2013-06-24 10:11:21 am
 */
function checkColl()
{
function checkColl() {
   var base64FPImg = "";
   //返回码
   var ret = null;
   $.ajax( {
      type : "GET",
      url : issOnlineUrl+"/fingerprint/getImage?random="+getRandomNum(),
      dataType : "json",
   $.ajax({
      type: "GET",
      url: issOnlineUrl + "/fingerprint/getImage?random=" + getRandomNum(),
      dataType: "json",
      async: true,
      success : function(result)
      {debugger;
      success: function (result) {
         debugger;
         //alert(objToStr(data));
         //指纹采集次数
         var collCount = 0;
         ret = result.ret;
         if(ret == 0)
         {
         if (ret == 0) {
            collCount = result.data.enroll_index;
            base64FPImg = result.data.jpg_base64;
         }
         if(collCount == 0)
         {
         if (collCount == 0) {
            //定时器
            timer = setTimeout("checkColl()", 200);//比对失败重新开始
         }
         else
         {
         else {
            //将定时器关闭
            clearTimeout(verifyTimer);
            //显示指纹图像
@@ -180,13 +164,16 @@
            $("#oneToMany").attr("disabled", false);
            $("#oneToOne").attr("disabled", false);
            setTimeout("beginCapture(null)", 200);
            console.log('1', getFPTemplate(paramArray, "verification"))
            console.log('2', $("#oneToMany").attr("disabled", false))
            console.log('3', $("#oneToOne").attr("disabled", false))
         }
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("请安装指纹驱动或启动该服务!");
         //messageBox({messageType: "alert", title: "${common_prompt_title}", text: "${base_fp_connectPrompt}"});
       }
      }
   });
}
/**
@@ -195,12 +182,9 @@
 * @create 2013-06-24 17:41:21 pm
 * @param fpTemplate 指纹模板
 */
function fpComparison(fpTemplate)
{
   if(model == "1")
   {
      if($("#persNumText").val() != "${pers_person_pin}")
      {
function fpComparison(fpTemplate) {
   if (model == "1") {
      if ($("#persNumText").val() != "${pers_person_pin}") {
         $("#pin").val($("#persNumText").val());
      }
   }
@@ -208,32 +192,29 @@
   $("#verifyTemplate").val(fpTemplate);
   //表单提交
   //formSubmit("fpVerifyForm");
}
/**
 * 取消采集
 * @author wenxin
 * @create 2013-06-24 19:57:11 pm
 */
function cancelCapture()
{
function cancelCapture() {
   //将定时器的递归调用关闭
   clearTimeout(timer);
   //取消采集
   $.ajax( {
      type : "GET",
      url : issOnlineUrl+"/fingerprint/cancelCapture?random="+getRandomNum(),
      dataType : "json",
   $.ajax({
      type: "GET",
      url: issOnlineUrl + "/fingerprint/cancelCapture?random=" + getRandomNum(),
      dataType: "json",
      async: true,
      success : function(result)
      {
      success: function (result) {
         verifyFlag = false;
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("请安装指纹驱动或启动该服务!");
         //messageBox({messageType: "alert", title: "${common_prompt_title}", text: "${base_fp_connectPrompt}"});
       }
      }
   });
}
/**
@@ -241,22 +222,19 @@
 * @author wenxin
 * @create 2013-06-26 16:57:11 pm
 */
function beginVerify()
{
   if($("#persNumText").val() == "${pers_person_pin}" && model == "1")
   {
function beginVerify() {
   if ($("#persNumText").val() == "${pers_person_pin}" && model == "1") {
      //${base_fp_enterPin}:请输入人员编号
      //显示框--采集提示
      collectTips(globalContext, "请输入人员编号", "verification");
      return;
   }
   else
   {
   else {
      //${base_fp_verifyInfo}:请水平按压手指验证
      //显示框--采集提示
      collectTips(globalContext, "请水平按压手指验证", "verification");
   }
   //取消采集--如果当前正在采集
   cancelEvent();
   $("#oneToMany").attr("disabled", true);
@@ -270,15 +248,14 @@
 * @author wenxin
 * @create 2013-09-05 16:57:11 pm
 */
function clearImageData()
{
   if(isComp){
function clearImageData() {
   if (isComp) {
      //清空指纹图像
      clearFPImage(globalContext, "verification");
      //显示框--采集提示
      collectTips(globalContext, "请水平按压手指验证", "verification");
   }else{
   } else {
      //清空指纹图像
      clearFPImage(globalContext, "register");
   }
@@ -288,39 +265,34 @@
 * @author wenxin
 * @create 2013-06-26 16:57:11 pm
 */
function callBackFormSubmit(msg)
{
   if(msg.ret == "ok")//成功
function callBackFormSubmit(msg) {
   if (msg.ret == "ok")//成功
   {
      collectTips(globalContext, "验证通过", "verification");
      setTimeout("closeVerify()", 1000);
      setTimeout(_callBackFunction("dashboard.action"), 1000);
   }
   else if(msg.msg == "disabled")
   {
   else if (msg.msg == "disabled") {
      collectTips(globalContext, "${auth_login_disabled}", "verification");
      setTimeout("closeVerify()", 1000);
      $(".errorTip").html("${auth_login_disabled}");
      $(".errorTip").show();
   }else if(msg.msg == "notExist")
   {
   } else if (msg.msg == "notExist") {
      collectTips(globalContext, "验证失败", "verification");
      setTimeout("clearImageData()", 1000);
      beginCapture(globalContext);
   }
}
/**
 * 关闭比对页面
 * @author wenxin
 * @create 2013-06-21 14:57:11 pm
 */
function closeVerify()
{
function closeVerify() {
   //正在进行验证,还没有关闭指纹采集
   if(verifyFlag)
   {
   if (verifyFlag) {
      //取消采集
      cancelCapture();
   }
@@ -331,18 +303,17 @@
 * @author wenxin
 * @create 2013-07-09 15:18:31 pm
 */
function dataInitComp()
{
function dataInitComp() {
   var canvas = document.getElementById("canvasComp");
   var context = canvas.getContext("2d");
   globalContext = context;
   //文本框内提示信息并清空
   //checkText();
   //${base_fp_verifyInfo}:请水平按压手指验证
   //显示框--采集提示
   collectTips(context, "请水平按压手指验证", "verification");
   //开始采集
   beginCapture(context);
   //定时器
@@ -356,446 +327,414 @@
 * @create 2013-05-15 17:12:21 pm
 * @param ${pers_person_templateCount}:指纹数
 */
function submitEvent()
{
function submitEvent() {
   storeDataToHtml();
   showFPCount('指纹数:');
   //closeWindow();
   close();
   $.ajax({
      type: "GET",
      url: issOnlineUrl + "/fingerprint/getTemplate?random=" + getRandomNum(),
      dataType: "json",
      async: false,
      success: function (result) {
         //返回码
         var ret = null;
         ret = result.ret;
         console.log('template',result.data.template);
         window.top.postMessage({
            fingerCode: result.data.template,
            display: 'none'
         });
      }
   })
}
 /**
  * 采集指纹
  * @author wenxin
  * @create 2013-05-13 10:18:31 am
  * @param context 2d画布上下文
  */
 function fpCollection(context)
 {
    $.ajax( {
       type : "GET",
       url : issOnlineUrl+"/fingerprint/beginCapture?type=1&FakeFunOn=0&random="+getRandomNum(),
       dataType : "json",
       async: true,
       success : function(result)
       {
          //返回码
          var ret = null;
          ret = result.ret;
          //接口调用成功返回时
          if(ret == 0)
          {
             //检查采集次数、显示图像
             checkCollCount();
          }
          else if(ret == -2001)
          {
             //${base_fp_connectFail}:连接指纹采集器失败
             //显示框--采集提示
             collectTips(globalContext, "未检测到指纹采集器.", "html5");
          }
          else if(ret == -2002)
          {
             getWebServerInfo(null, null, "1");
          }
          else if(ret == -2005)
          {
             //取消采集
             cancelRegister();
             //切换手指后,渲染手指(消除原来手指的颜色)
             renderAfterColl(globalContext, fpIdNum, bgColor, false);
             //${base_fp_pressFinger}:请选择手指
             //显示框--采集提示
             collectTips(globalContext, "请选择手指.", "html5");
          }
       },
       error : function(XMLHttpRequest, textStatus, errorThrown)
       {
          alert("请安装指纹驱动或启动该服务!");
          //messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"});
        }
    });
 }
 /**
  * 检查采集次数
  * @author wenxin
  * @create 2013-05-22 09:24:31 am
  * @param collCount 采集次数
  */
 function checkCollCount()
 {
    var base64FPImg = "";
    //返回码
    var ret = null;
    $.ajax( {
       type : "GET",
       url : issOnlineUrl+"/fingerprint/getImage?random="+getRandomNum(),
       dataType : "json",
       async: false,
       success : function(result)
       {
          //alert(objToStr(data));
          //指纹采集次数
          var collCount = 0;
          ret = result.ret;
          if(ret == 0)
          {
             collCount = result.data.enroll_index;
             base64FPImg = result.data.jpg_base64;
          }
          if(collCount != 3)
          {
             //第一次和第二次采集,显示采集次数、指纹图像、进度条
             if(collCount == 1 || collCount == 2)
             {
                //${base_fp_collCount}:按压指纹剩余次数:
                var text = "按压剩余次数:"+(FINGERPRINT_NUMBER - collCount);
                //显示框--采集提示
                collectTips(globalContext, text, "html5");
                //进度条
                drawProgressBar(globalContext, collCount);
                //显示指纹图像
                showImage(globalContext, base64FPImg, "html5");
                //清空图像
                setTimeout("clearImageData()", 200);
             }
             //定时器
             timer = setTimeout("checkCollCount()", 200);
          }
          else
          {
             //显示指纹图像
             showImage(globalContext, base64FPImg, "html5");
             //清空图像
             setTimeout("clearImageData()", 200);
             //存放国际化元素数组
             var paramArray = new Array();
             paramArray[0] = "成功登记指纹.";//base_fp_registerSuccess:成功登记指纹
             paramArray[1] = "采集失败,请重新登记.";//base_fp_pressFingerAgain:请重按手指
             paramArray[2] = "请不要重复录入指纹!";//base_fp_repeatCollection:请不要重复录入指纹!
             paramArray[3] = "请安装指纹驱动或启动该服务!";//base_fp_connectPrompt:请检查网络连接
             //进度条
             drawProgressBar(globalContext, collCount);
             //获取指纹模板
             if(!getFPTemplate(paramArray, "register"))
             {
                drawProgressBar(globalContext, 0);//进度条灰显
             }
             //如果胁迫指纹选中,则取消选中
             if(duressFingerFlag)
             {
                $("#duressFinger").attr("checked", false);
             }
             $("#duressFinger").attr("disabled", false);
             $("#submitButtonId").attr("disabled", false);
             collectFlag = false;
             fpIdNum = -1;
             return collCount;
          }
       },
       error : function(XMLHttpRequest, textStatus, errorThrown)
       {
          alert("请安装指纹驱动或启动该服务!");
          //messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"});
        }
    });
 }
 /**
  * 取消采集,当采集中断时
  * @author wenxin
  * @create 2013-05-27 17:46:31 pm
  */
 function cancelRegister()
 {
    //当前有手指在采集指纹
    if(collectFlag)
    {
       //将定时器的递归调用关闭
       clearTimeout(timer);
       //取消采集
       $.ajax( {
          type : "GET",
          url : issOnlineUrl+"/fingerprint/cancelCapture?random="+getRandomNum(),
          dataType : "json",
          async: false,
          success : function(result)
          {
             //如果胁迫指纹选中,则取消选中
             if(duressFingerFlag)
             {
                $("#duressFinger").attr("checked", false);
             }
             if(fpModifyFlag)
             {
                $("#submitButtonId").attr("disabled", false);
             }
             $("#duressFinger").attr("disabled", false);
             if(fpIdNum != null)
             {
                //消除原来手指的颜色
                renderAfterColl(globalContext, lastFPIdNum, bgColor, false);
             }
             collectFlag = false;
          },
          error : function(XMLHttpRequest, textStatus, errorThrown)
          {
             alert("请安装指纹驱动或启动该服务!");
             //messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"});
           }
       });
    }
 }
 /**
  * 绘画
  * @author wenxin
  * @create 2013-05-13 10:18:31 am
  * @param context 2d画布上下文
  * @param x, y 绘画左手掌的第一个点的坐标,后面的绘画手指和右手掌的坐标都是相对于此点坐标来计算
  * @param color 绘画手指和手掌的边框颜色
  */
 function draw(context, x, y, color)
 {
    var coordArray = new Array();
    //初始化起始坐标,并返回json格式数据
    var coordJson = initCoordJson();
    for(var i=0; i<coordJson.length; i++)
    {
       //绘画双手和圆弧
       drawHandAndArc(context, coordArray, color, coordJson[i].coord.x, coordJson[i].coord.y, coordJson[i].num);
//        drawHandAndArc(context, coordArray, color, coordJson[i].coord.x, coordJson[i].coord.y, i);
       coordArray = null;
       coordArray = new Array();
    }
    //存放国际化元素数组
    var paramArray = new Array();
    paramArray[0] = "请选择手指.";
    paramArray[1] = "未检测到指纹采集器.";
    paramArray[2] = "加载动态库失败.";
    paramArray[3] = "请选择手指.";
    //检查指纹采集器
    checkFPReader(context, paramArray, "html5");
    //进度条
    drawProgressBar(context, 0);
    //将确定按钮置灰
    $("#submitButtonId").attr("disabled", true);
 }
 /**
  * 绘画双手和圆弧
  * @author wenxin
  * @create 2013-06-17 10:18:31 am
  * @param context 2d画布上下文
  * @param coordArray 坐标数组
  * @param x, y 绘画左手掌的第一个点的坐标,后面的绘画手指和右手掌的坐标都是相对于此点坐标来计算
  * @param color 绘画手指和手掌的边框颜色
  * @param num 当前会话对象编号
  */
 function drawHandAndArc(context, coordArray, color, x, y, num)
 {
    //初始化坐标
    coordArray = initCoordArray(coordArray, x, y, num);
    var drawObj = null;
    //绘画手指
    if(num < 10)
    {
       drawObj = "finger"+num;
       drawObj = new renderFinger(context, coordArray);
       drawObj.drawFinger(strokeStyle, color);
       //初始化时,渲染手指
       renderInit(context, num, "html5");
       //将绘画的手指实例放入数组,方便重画时用
       if(fingerList.length < 10)
       {
          fingerList.push(drawObj);
       }
    }
    //绘画双手掌心
    else if(num < 12)
    {
       new renderHand(context, coordArray).drawHand(color);
    }
    //绘画圆圈
    showImage(context, "image/base_fpVerify_clearImage.png", "clearForRegister");
    //绘画圆弧
    //else if(num == 12)
    //{
    //   new FillArc(context, coordArray).drawArc(arcBgColor);
    //}
 }
 /**
  * 重画
  * @author wenxin
  * @create 2013-05-13 10:18:31 am
  * @param x, y 鼠标点击处的坐标
  */
 function redraw(x, y)
 {
    var canvas = document.getElementById("canvas");
    if (canvas.getContext)
    {
       var context = canvas.getContext("2d");
       //是否点击在手指区域
       var isInFingerArea = false;
       //判断当前点击是否在手指区域
       for ( var i = 0; i < fingerList.length; i++)
       {
          var finger = fingerList[i];
          finger.drawFinger(strokeStyle, fingerBorderColor);
          if (context.isPointInPath(x, y))
          {
             isInFingerArea = true;
             break;
          }
       }
       outerloop:
       for ( var i = 0; i < fingerList.length; i++)
       {
          if(collectFlag)
          {
             //当点击的是同一个手指时,如何判断?(编辑指纹时,有问题)
             if(fpIdNum == i)
             {
                //切换手指后,渲染手指(消除原来手指的颜色)
                renderAfterColl(globalContext, fpIdNum, bgColor, false);
             }
          }
          var finger = fingerList[i];
          finger.drawFinger(strokeStyle, fingerBorderColor);
          //currentContext = context;
          if (context.isPointInPath(x, y))
          {
             globalContext = context;
             //两次是否点击的同一个手指进行采集。如果是,则第二次点击时取消采集。
             var iaSameFinger = false;
             if(fpIdNum == i && collectFlag)
             {
                iaSameFinger = true;
             }
             var fingerId;
             //判断该手指是否已经有指纹
             var isCollected = false;
             isCollected = isContains(fingerIdArray, i);
             fpIdNum = i;
             if(!isCollected)
             {
                //保存当前正在采集的手指标记
                lastFPIdNum = fpIdNum;
             }
             //如果已经有指纹
             if(isCollected)
             {
                //取消采集
                cancelRegister();
                var flag=confirm("删除当前选中的指纹吗?");
                if(flag){
                   delFPData(flag, context, "html5");
                   collectTips(globalContext, "请选择手指.", "html5");
                   //进度条
                   drawProgressBar(globalContext, 0);
                }
                break outerloop;
             }
             else
             {
                //两次点击的同一个手指进行采集,则第二次取消采集。
                if(iaSameFinger)
                {
                   //取消采集
                   cancelRegister();
                   //取消采集后重新提示请选择手指
                   collectTips(globalContext, "请选择手指.", "html5");
                   //取消采集后重新绘制进度条
                   drawProgressBar(context, 0);
                   fpIdNum = -1;
                }
                else
                {
                   //取消采集
                   cancelRegister();
                   context.fillStyle = fillFingerColor;
                   context.fill();
                   //globalContext = context;
                   collectFlag = true;//需要判断,当重复点击时,颜色改变
                   $("#duressFinger").attr("disabled", true);
                   $("#submitButtonId").attr("disabled", true);
                   //${base_fp_collCount}:按压指纹剩余次数:
                   var text = "按压剩余次数:"+FINGERPRINT_NUMBER;
                   //进度条
                   drawProgressBar(globalContext, 0);
                   //显示框--采集提示
                   collectTips(globalContext, text, "html5");
                   //指纹采集
                   fpCollection(context);
                }
             }
          }
          else
          {
             context.fillStyle = bgColor;
             context.fill();
             renderInit(context, i, "html5");
             if(collectFlag)
             {
                if(fpIdNum == i && !isInFingerArea)
                {
                   context.fillStyle = fillFingerColor;
                   context.fill();
                }
             }
          }
       }
    }
 }
 /**
  * 页面加载时,初始化数据
  * @author wenxin
  * @create 2013-07-09 15:18:31 pm
  */
 function dataInitReg()
 {
    if(!duressFingerShowFlag)
    {
       $("#duressFingerDiv").hide();
    }
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    fpIdNum = null;
    //获取页面的指纹数据
    getDataFromPage();
    //绘画
    draw(context, x, y, fingerBorderColor);
    //jquery在ie下实现cors跨域请求
    jQuery.support.cors = true;
    //鼠标事件
    canvas.onmousedown = function(event){
       //event.which == 1--鼠标左键
       if(event.which == 1)
       {
          var pageInfo = canvas.getBoundingClientRect();
          var x = event.clientX - pageInfo.left;
          var y = event.clientY - pageInfo.top;
          duressFingerFlag = $("#duressFinger").attr("checked");
          //重画
          redraw(x, y);
       }
    }
 }
function myfunction(){
/**
 * 采集指纹
 * @author wenxin
 * @create 2013-05-13 10:18:31 am
 * @param context 2d画布上下文
 */
function fpCollection(context) {
   $.ajax({
      type: "GET",
      url: issOnlineUrl + "/fingerprint/beginCapture?type=1&FakeFunOn=0&random=" + getRandomNum(),
      dataType: "json",
      async: true,
      success: function (result) {
         //返回码
         var ret = null;
         ret = result.ret;
         //接口调用成功返回时
         if (ret == 0) {
            //检查采集次数、显示图像
            checkCollCount();
         }
         else if (ret == -2001) {
            //${base_fp_connectFail}:连接指纹采集器失败
            //显示框--采集提示
            collectTips(globalContext, "未检测到指纹采集器.", "html5");
         }
         else if (ret == -2002) {
            getWebServerInfo(null, null, "1");
         }
         else if (ret == -2005) {
            //取消采集
            cancelRegister();
            //切换手指后,渲染手指(消除原来手指的颜色)
            renderAfterColl(globalContext, fpIdNum, bgColor, false);
            //${base_fp_pressFinger}:请选择手指
            //显示框--采集提示
            collectTips(globalContext, "请选择手指.", "html5");
         }
      },
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("请安装指纹驱动或启动该服务!");
         //messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"});
      }
   });
}
/**
 * 检查采集次数
 * @author wenxin
 * @create 2013-05-22 09:24:31 am
 * @param collCount 采集次数
 */
function checkCollCount() {
   var base64FPImg = "";
   //返回码
   var ret = null;
   $.ajax({
      type: "GET",
      url: issOnlineUrl + "/fingerprint/getImage?random=" + getRandomNum(),
      dataType: "json",
      async: false,
      success: function (result) {
         //alert(objToStr(data));
         //指纹采集次数
         var collCount = 0;
         ret = result.ret;
         if (ret == 0) {
            collCount = result.data.enroll_index;
            base64FPImg = result.data.jpg_base64;
         }
         if (collCount != 3) {
            //第一次和第二次采集,显示采集次数、指纹图像、进度条
            if (collCount == 1 || collCount == 2) {
               //${base_fp_collCount}:按压指纹剩余次数:
               var text = "按压剩余次数:" + (FINGERPRINT_NUMBER - collCount);
               //显示框--采集提示
               collectTips(globalContext, text, "html5");
               //进度条
               drawProgressBar(globalContext, collCount);
               //显示指纹图像
               showImage(globalContext, base64FPImg, "html5");
               //清空图像
               setTimeout("clearImageData()", 200);
            }
            //定时器
            timer = setTimeout("checkCollCount()", 200);
         }
         else {
            //显示指纹图像
            showImage(globalContext, base64FPImg, "html5");
            //清空图像
            setTimeout("clearImageData()", 200);
            //存放国际化元素数组
            var paramArray = new Array();
            paramArray[0] = "成功登记指纹.";//base_fp_registerSuccess:成功登记指纹
            paramArray[1] = "采集失败,请重新登记.";//base_fp_pressFingerAgain:请重按手指
            paramArray[2] = "请不要重复录入指纹!";//base_fp_repeatCollection:请不要重复录入指纹!
            paramArray[3] = "请安装指纹驱动或启动该服务!";//base_fp_connectPrompt:请检查网络连接
            //进度条
            drawProgressBar(globalContext, collCount);
            console.log('paramArray', paramArray)
            //获取指纹模板
            if (!getFPTemplate(paramArray, "register")) {
               drawProgressBar(globalContext, 0);//进度条灰显
            }
            //如果胁迫指纹选中,则取消选中
            if (duressFingerFlag) {
               $("#duressFinger").attr("checked", false);
            }
            $("#duressFinger").attr("disabled", false);
            $("#submitButtonId").attr("disabled", false);
            collectFlag = false;
            fpIdNum = -1;
            return collCount;
         }
      },
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("请安装指纹驱动或启动该服务!");
         //messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"});
      }
   });
}
/**
 * 取消采集,当采集中断时
 * @author wenxin
 * @create 2013-05-27 17:46:31 pm
 */
function cancelRegister() {
   //当前有手指在采集指纹
   if (collectFlag) {
      //将定时器的递归调用关闭
      clearTimeout(timer);
      //取消采集
      $.ajax({
         type: "GET",
         url: issOnlineUrl + "/fingerprint/cancelCapture?random=" + getRandomNum(),
         dataType: "json",
         async: false,
         success: function (result) {
            //如果胁迫指纹选中,则取消选中
            if (duressFingerFlag) {
               $("#duressFinger").attr("checked", false);
            }
            if (fpModifyFlag) {
               $("#submitButtonId").attr("disabled", false);
            }
            $("#duressFinger").attr("disabled", false);
            if (fpIdNum != null) {
               //消除原来手指的颜色
               renderAfterColl(globalContext, lastFPIdNum, bgColor, false);
            }
            collectFlag = false;
         },
         error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("请安装指纹驱动或启动该服务!");
            //messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"});
         }
      });
   }
}
/**
 * 绘画
 * @author wenxin
 * @create 2013-05-13 10:18:31 am
 * @param context 2d画布上下文
 * @param x, y 绘画左手掌的第一个点的坐标,后面的绘画手指和右手掌的坐标都是相对于此点坐标来计算
 * @param color 绘画手指和手掌的边框颜色
 */
function draw(context, x, y, color) {
   var coordArray = new Array();
   //初始化起始坐标,并返回json格式数据
   var coordJson = initCoordJson();
   for (var i = 0; i < coordJson.length; i++) {
      //绘画双手和圆弧
      drawHandAndArc(context, coordArray, color, coordJson[i].coord.x, coordJson[i].coord.y, coordJson[i].num);
      //        drawHandAndArc(context, coordArray, color, coordJson[i].coord.x, coordJson[i].coord.y, i);
      coordArray = null;
      coordArray = new Array();
   }
   //存放国际化元素数组
   var paramArray = new Array();
   paramArray[0] = "请选择手指.";
   paramArray[1] = "未检测到指纹采集器.";
   paramArray[2] = "加载动态库失败.";
   paramArray[3] = "请选择手指.";
   //检查指纹采集器
   checkFPReader(context, paramArray, "html5");
   //进度条
   drawProgressBar(context, 0);
   //将确定按钮置灰
   $("#submitButtonId").attr("disabled", true);
}
/**
 * 绘画双手和圆弧
 * @author wenxin
 * @create 2013-06-17 10:18:31 am
 * @param context 2d画布上下文
 * @param coordArray 坐标数组
 * @param x, y 绘画左手掌的第一个点的坐标,后面的绘画手指和右手掌的坐标都是相对于此点坐标来计算
 * @param color 绘画手指和手掌的边框颜色
 * @param num 当前会话对象编号
 */
function drawHandAndArc(context, coordArray, color, x, y, num) {
   //初始化坐标
   coordArray = initCoordArray(coordArray, x, y, num);
   var drawObj = null;
   //绘画手指
   if (num < 10) {
      drawObj = "finger" + num;
      drawObj = new renderFinger(context, coordArray);
      drawObj.drawFinger(strokeStyle, color);
      //初始化时,渲染手指
      renderInit(context, num, "html5");
      //将绘画的手指实例放入数组,方便重画时用
      if (fingerList.length < 10) {
         fingerList.push(drawObj);
      }
   }
   //绘画双手掌心
   else if (num < 12) {
      new renderHand(context, coordArray).drawHand(color);
   }
   //绘画圆圈
   showImage(context, "image/base_fpVerify_clearImage.png", "clearForRegister");
   //绘画圆弧
   //else if(num == 12)
   //{
   //   new FillArc(context, coordArray).drawArc(arcBgColor);
   //}
}
/**
 * 重画
 * @author wenxin
 * @create 2013-05-13 10:18:31 am
 * @param x, y 鼠标点击处的坐标
 */
function redraw(x, y) {
   var canvas = document.getElementById("canvas");
   if (canvas.getContext) {
      var context = canvas.getContext("2d");
      //是否点击在手指区域
      var isInFingerArea = false;
      //判断当前点击是否在手指区域
      for (var i = 0; i < fingerList.length; i++) {
         var finger = fingerList[i];
         finger.drawFinger(strokeStyle, fingerBorderColor);
         if (context.isPointInPath(x, y)) {
            isInFingerArea = true;
            break;
         }
      }
      outerloop:
      for (var i = 0; i < fingerList.length; i++) {
         if (collectFlag) {
            //当点击的是同一个手指时,如何判断?(编辑指纹时,有问题)
            if (fpIdNum == i) {
               //切换手指后,渲染手指(消除原来手指的颜色)
               renderAfterColl(globalContext, fpIdNum, bgColor, false);
            }
         }
         var finger = fingerList[i];
         finger.drawFinger(strokeStyle, fingerBorderColor);
         //currentContext = context;
         if (context.isPointInPath(x, y)) {
            globalContext = context;
            //两次是否点击的同一个手指进行采集。如果是,则第二次点击时取消采集。
            var iaSameFinger = false;
            if (fpIdNum == i && collectFlag) {
               iaSameFinger = true;
            }
            var fingerId;
            //判断该手指是否已经有指纹
            var isCollected = false;
            isCollected = isContains(fingerIdArray, i);
            fpIdNum = i;
            if (!isCollected) {
               //保存当前正在采集的手指标记
               lastFPIdNum = fpIdNum;
            }
            //如果已经有指纹
            if (isCollected) {
               //取消采集
               cancelRegister();
               var flag = confirm("删除当前选中的指纹吗?");
               if (flag) {
                  delFPData(flag, context, "html5");
                  collectTips(globalContext, "请选择手指.", "html5");
                  //进度条
                  drawProgressBar(globalContext, 0);
               }
               break outerloop;
            }
            else {
               //两次点击的同一个手指进行采集,则第二次取消采集。
               if (iaSameFinger) {
                  //取消采集
                  cancelRegister();
                  //取消采集后重新提示请选择手指
                  collectTips(globalContext, "请选择手指.", "html5");
                  //取消采集后重新绘制进度条
                  drawProgressBar(context, 0);
                  fpIdNum = -1;
               }
               else {
                  //取消采集
                  cancelRegister();
                  context.fillStyle = fillFingerColor;
                  context.fill();
                  //globalContext = context;
                  collectFlag = true;//需要判断,当重复点击时,颜色改变
                  $("#duressFinger").attr("disabled", true);
                  $("#submitButtonId").attr("disabled", true);
                  //${base_fp_collCount}:按压指纹剩余次数:
                  var text = "按压剩余次数:" + FINGERPRINT_NUMBER;
                  //进度条
                  drawProgressBar(globalContext, 0);
                  //显示框--采集提示
                  collectTips(globalContext, text, "html5");
                  //指纹采集
                  fpCollection(context);
               }
            }
         }
         else {
            context.fillStyle = bgColor;
            context.fill();
            renderInit(context, i, "html5");
            if (collectFlag) {
               if (fpIdNum == i && !isInFingerArea) {
                  context.fillStyle = fillFingerColor;
                  context.fill();
               }
            }
         }
      }
   }
}
/**
 * 页面加载时,初始化数据
 * @author wenxin
 * @create 2013-07-09 15:18:31 pm
 */
function dataInitReg() {
   if (!duressFingerShowFlag) {
      $("#duressFingerDiv").hide();
   }
   var canvas = document.getElementById("canvas");
   var context = canvas.getContext("2d");
   fpIdNum = null;
   //获取页面的指纹数据
   getDataFromPage();
   //绘画
   draw(context, x, y, fingerBorderColor);
   //jquery在ie下实现cors跨域请求
   jQuery.support.cors = true;
   //鼠标事件
   canvas.onmousedown = function (event) {
      //event.which == 1--鼠标左键
      if (event.which == 1) {
         var pageInfo = canvas.getBoundingClientRect();
         var x = event.clientX - pageInfo.left;
         var y = event.clientY - pageInfo.top;
         duressFingerFlag = $("#duressFinger").attr("checked");
         //重画
         redraw(x, y);
      }
   }
}
function myfunction() {
   //加载xml中ISSOnline_server的ip和port
   //loadXml("<%=basePath%>"+"webapp/xml/BaseISSOnlineServer.xml");
   //加载指纹标记和指纹模板数据到页面
@@ -808,7 +747,7 @@
   paramArray[0] = '指纹';
   paramArray[1] = '指纹数:';
   paramArray[2] = '确认保存当前修改吗?';
   paramArray[3] = '登记';
   paramArray[3] = '录入指纹';
   paramArray[4] = '请安装指纹驱动或启动该服务!';
   paramArray[5] = '0';
   paramArray[6] = '指纹数:';
@@ -817,16 +756,14 @@
   checkDriver(paramArray, browserFlag, false);
}
function closeCompa()
{
function closeCompa() {
   $("#bg").css("display", "none");
   $("#box").css("display", "none");
   $("#comparisonDiv").css("display", "none");
}
//初始化界面数据,即清除指纹记录。
function cleanData()
{
function cleanData() {
   var canvas = document.getElementById("canvas");
   var context = canvas.getContext("2d");
   fpIdNum = null;
@@ -836,35 +773,32 @@
   redraw(x, y);
}
function doVerify()
{
function doVerify() {
   var regTemplate = "TVFTUjIyAAAEEhAFBQUHCc7QAAAcE2kAAAAAgyEgiBKiAacPlQABAIIdnAHcAH4PagBlEmYN6ACJAA0PLhKrAaoPSADAAZcdEQGWACsONgA8EqwMzQAYAEYPZBJMAIMOhAB3AJodXgGdALIPeAB5EmQPqQBZADAMNxKXAbMPRACKAMIdAABwAM4PYQAbEvkOoQA9Ab0PAhMXAFMOtQCeAfAdlwGIAM0PZABvEucMcgDfAEoPyBJqAUgOngDAAX0dcAEyANkPUAAnE/cOIwBXAH8PAxMHAFMMGQDiAMEdLAmp3xIhWOopGLPgtfpCBkfzxGWAgSogmv2fgkJ1qPtygM/6FgYnAf6ecoBWeeZzdz8K4i9neo/e2VeB9g7jj7PzfPgBCHvu5hdWAxMP/QzLAbaAsJMYEaa8IAtOidYD9w2j/FoCFgk3ia4jhmX6I8cHuYf3hcMQ8AG335Nj830/ERZyASuC6G9qhZJs8OoY8hMfC8filOfG4M5Wk4TO7EYDExab4gbnvZFXfbcHvvW69PsZcAGv37/XMgzfEcLuzLf4/cQJBBIDMVlMFw+e9VYh1l1f/06bOqskIQADRB4qBMUsBEicDQA4AFoBwIJDgiUARABXVXhw7cCVw4DDb0fAf9CGxRQAVACnosXSwkSEwsDCBosDEmABXpNcDsWHBHvCgWd4eAbFngRlx8HAwwUAHwAN7P7ZDAAOAoZ4+9FSbgMAGQWJwwgSYhNTwVyABYgZEswVj6lpwkl6ldSDocPBSQnF1R0dwf/9/f4kwQDJCIGOBAAbLviECxMNL6mZfsUFwcDSwcMRAO83WcPFgJONkMQLAKs4SNLDcMHClhbFp0r7/P3A+fjAm/767PzB/f/9wOMDBNtTgcMJAJmlU6XUyMLDDQELoEkyVMHB+10GAMtrOYHBDQAUazAFc4BuBQG8b3Cn3gDPYEf//vz9/D76+u38//7///w7/vns//v9wP3A3gEPb0j///9HwDhU++3+/ztE/0beAQiBSP/+PlP+Ov/7UsH8///AwDv/xewLARSXKXivhQ4SNp0peIOJzgEPvVIqV8AzDsUMvznDdcFsb8HdARSuXVVTPsDA7v867f9LBwAMyvWZaB4ADsta/0eQ/kkeABDZXP/COcFP0zMHAAveJwbAxNECAZ3fdP3QAQTsZUZM//5bBf/60j/BChAXC9N0emUGEZ8Icf6F/w0DAgtiPkr/yBEGC2ZL/8D+wzr+XRYRWVt9MgrUAiJ1RcH/ZAwQyynz63PD/8PAasIQED0XwMDCagjVDjU7n8GNBRChhXTEKgQR5kNtRcEQ511sRVJCABmGAQYTAccAWl8AxACmEoXUAAAZRZcAQFAAAAAAABbFAAQSAzIAAAAAxQBBUA==";
   var fpTemplate = "TVFTUjIyAAAEEhAFBQUHCc7QAAAcE2kAAAAAgyEgiBKiAacPlQABAIIdnAHcAH4PagBlEmYN6ACJAA0PLhKrAaoPSADAAZcdEQGWACsONgA8EqwMzQAYAEYPZBJMAIMOhAB3AJodXgGdALIPeAB5EmQPqQBZADAMNxKXAbMPRACKAMIdAABwAM4PYQAbEvkOoQA9Ab0PAhMXAFMOtQCeAfAdlwGIAM0PZABvEucMcgDfAEoPyBJqAUgOngDAAX0dcAEyANkPUAAnE/cOIwBXAH8PAxMHAFMMGQDiAMEdLAmp3xIhWOopGLPgtfpCBkfzxGWAgSogmv2fgkJ1qPtygM/6FgYnAf6ecoBWeeZzdz8K4i9neo/e2VeB9g7jj7PzfPgBCHvu5hdWAxMP/QzLAbaAsJMYEaa8IAtOidYD9w2j/FoCFgk3ia4jhmX6I8cHuYf3hcMQ8AG335Nj830/ERZyASuC6G9qhZJs8OoY8hMfC8filOfG4M5Wk4TO7EYDExab4gbnvZFXfbcHvvW69PsZcAGv37/XMgzfEcLuzLf4/cQJBBIDMVlMFw+e9VYh1l1f/06bOqskIQADRB4qBMUsBEicDQA4AFoBwIJDgiUARABXVXhw7cCVw4DDb0fAf9CGxRQAVACnosXSwkSEwsDCBosDEmABXpNcDsWHBHvCgWd4eAbFngRlx8HAwwUAHwAN7P7ZDAAOAoZ4+9FSbgMAGQWJwwgSYhNTwVyABYgZEswVj6lpwkl6ldSDocPBSQnF1R0dwf/9/f4kwQDJCIGOBAAbLviECxMNL6mZfsUFwcDSwcMRAO83WcPFgJONkMQLAKs4SNLDcMHClhbFp0r7/P3A+fjAm/767PzB/f/9wOMDBNtTgcMJAJmlU6XUyMLDDQELoEkyVMHB+10GAMtrOYHBDQAUazAFc4BuBQG8b3Cn3gDPYEf//vz9/D76+u38//7///w7/vns//v9wP3A3gEPb0j///9HwDhU++3+/ztE/0beAQiBSP/+PlP+Ov/7UsH8///AwDv/xewLARSXKXivhQ4SNp0peIOJzgEPvVIqV8AzDsUMvznDdcFsb8HdARSuXVVTPsDA7v867f9LBwAMyvWZaB4ADsta/0eQ/kkeABDZXP/COcFP0zMHAAveJwbAxNECAZ3fdP3QAQTsZUZM//5bBf/60j/BChAXC9N0emUGEZ8Icf6F/w0DAgtiPkr/yBEGC2ZL/8D+wzr+XRYRWVt9MgrUAiJ1RcH/ZAwQyynz63PD/8PAasIQED0XwMDCagjVDjU7n8GNBRChhXTEKgQR5kNtRcEQ511sRVJCABmGAQYTAccAWl8AxACmEoXUAAAZRZcAQFAAAAAAABbFAAQSAzIAAAAAxQBBUA==";
   $.ajax( {
      type : "POST",
      url : "http://127.0.0.1:22001/ZKBIOOnline/fingerprint/verify",
      dataType : "json",
      data:JSON.stringify({'reg':regTemplate,
         'ver':fpTemplate}),
   $.ajax({
      type: "POST",
      url: "http://127.0.0.1:22001/ZKBIOOnline/fingerprint/verify",
      dataType: "json",
      data: JSON.stringify({
         'reg': regTemplate,
         'ver': fpTemplate
      }),
      async: true,
      success : function(data)
      {
      success: function (data) {
         //返回码
         var ret = null;
          ret = data.ret;
          //接口调用成功返回时
          if(ret == 0)
         {
         ret = data.ret;
         //接口调用成功返回时
         if (ret == 0) {
            alert("score:" + data.score);
         }
         else
         {
         else {
            alert("ret:" + data.ret);
         }
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("请安装指纹驱动或启动该服务!");
       }
      }
   });
}