E9 OA实现扫码输入和自动跳行

最近接到产线需求:提交坏品分析单据时,填SN效率太低。需要通过扫码自动key入SN码并自动获取数据,然后自动添加行以后光标能锁定下一行。这样产线就能直接扫码枪自动做绝大部分重复的操作。

以下代码能完美解决产线的需求,注意一点就是要把输入法改为系统自带英文输入法。

  function getFAResult(fieldid,rowIndex){
    var url = "/api/erp/***/*****?            sn="+WfForm.getFieldValue(fieldid+"_"+rowIndex)+"&gz="+WfForm.getFieldValue(sxgzId);
    $.ajax({
      url:url,
      async:false,
      type:"get",
      success:function(data){
        data = JSON.parse(data);
        if(data.api_status){
          var actualDirect = "";
          var actualRwork = "";
          if(data.Direct.indexOf(";")!=-1){
            actualDirect = data.Direct.replaceAll(";",";<br>");
          }else{
            actualDirect = data.Direct;
          }
          if(data.Rework.indexOf(";")!=-1){
            actualRwork = data.Rework.replaceAll(";",";<br>");
          }else{
            actualRwork = data.Rework;
          }
          WfForm.changeFieldValue(sxtdId+"_"+rowIndex, {value:data.Ch});
          WfForm.changeFieldValue(sxmsId+"_"+rowIndex, {value:data.FailMode});
          WfForm.changeFieldValue(zjyyId+"_"+rowIndex, {value:actualDirect});
          WfForm.changeFieldValue(fgffId+"_"+rowIndex, {value:actualRwork});
        }else{
          
        }
      }
    });
  }


  let lastTime = null;
  let nextTime = null;
  let code = '';
  document.onkeydown = function (e) {
    let keycode = e.keyCode || e.which || e.charCode;
    nextTime = new Date();
    if (keycode === 13) {
      if (lastTime && (nextTime - lastTime < 30)) {
        // 自动加一行并置空
        WfForm.addDetailRow("detail_1",{snId:{value:""}});
        var index = WfForm.getDetailRowCount("detail_1");
        index = index - 1;
        // 获取对应的SN数据
        getFAResult(snId, index);
        // 光标自动跳到下一行的SN输入框
        jQuery("#"+snId+"_"+index).focus();
      } else {
      }
      code = '';
      lastTime = null;
      e.preventDefault();
    } else {
      if (!lastTime) {
        code = String.fromCharCode(keycode);
      } else {
        if (nextTime - lastTime < 30) {
          code += String.fromCharCode(keycode);
        } else {
          code = '';
        }
      }
      lastTime = nextTime;
    }
  };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值