最近接到产线需求:提交坏品分析单据时,填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;
}
};