Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js =================================================================== diff -u -r26270 -r26289 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 26270) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 26289) @@ -2733,7 +2733,7 @@ var matchResule = appDepartType.match(numMethod); if(matchResule != null){ Ext.getCmp("appDepart").setValue(""); - Ext.getCmp("appDepart").focus(false,100); + //Ext.getCmp("appDepart").focus(false,100); } } }); Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.js =================================================================== diff -u -r26023 -r26289 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.js (.../invoicePlanExtractedView.js) (revision 26023) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.js (.../invoicePlanExtractedView.js) (revision 26289) @@ -189,6 +189,11 @@ } openInvoicePlanByBarcode(barcode); } + +/** + * 在页面无需将光标定位在输入框相应全局的扫描枪事件,并且阻止冒泡事件和阻止浏览器的默认行为. + */ +var barcodeGloble = ''; function openInvoicePlanByBarcode(barcode){ if(isUndefinedOrNullOrEmpty(barcode)){ showResult("请扫描科室条码或申请单条码" , null , sstsConfig.messagePauseTimeOnInvoiceplanPage); @@ -226,6 +231,7 @@ } } }); + barcodeGloble = ''; } /** @@ -482,6 +488,7 @@ {header : "待发",dataIndex : 'count',width : 50, menuDisabled: true}, {header : '加急',id : 'urgentAmount',dataIndex : 'urgentAmount',width : 50,value : 0, menuDisabled: true,renderer:getDefaultAmount} ]); + var rightGrid = new Ext.grid.EditorGridPanel({ id : 'appGoodsDetail', title : '申请物品明细', @@ -493,9 +500,50 @@ loadMask : true, autoExpandColumn : 'showTousseName', frame : false, + enableKeyEvents: true, bodyStyle : 'border:1px solid #afd7af', viewConfig: { forceFit:true + },listeners:{ + "keydown" : function(event){ + if(Ext.isIE){ + if(event.char){ + var isCRLF = (event.keyCode == 13 || event.char == '\n' || event.char == '\r'); + if(!isCRLF){ + barcodeGloble += event.char; + } + + if(isCRLF){ + openInvoicePlanByBarcode(barcodeGloble); + } + }else{ + if(event.keyCode == 48 || event.keyCode == 96){ + barcodeGloble += '0'; + }else if(event.keyCode == 49 || event.keyCode == 97){ + barcodeGloble += '1'; + }else if(event.keyCode == 50 || event.keyCode == 98){ + barcodeGloble += '2'; + }else if(event.keyCode == 51 || event.keyCode == 99){ + barcodeGloble += '3'; + }else if(event.keyCode == 52 || event.keyCode == 100){ + barcodeGloble += '4'; + }else if(event.keyCode == 53 || event.keyCode == 101){ + barcodeGloble += '5'; + }else if(event.keyCode == 54 || event.keyCode == 102){ + barcodeGloble += '6'; + }else if(event.keyCode == 55 || event.keyCode == 103){ + barcodeGloble += '7'; + }else if(event.keyCode == 56 || event.keyCode == 104){ + barcodeGloble += '8'; + }else if(event.keyCode == 57 || event.keyCode == 105){ + barcodeGloble += '9'; + }else if(event.keyCode == 13){ + openInvoicePlanByBarcode(barcodeGloble); + barcodeTemp = "";//清空 + } + } + } + } } }); var viewport = new Ext.Viewport({ @@ -762,11 +810,82 @@ }); g_stopDefault = false; //globalOnKeyDown(globalOnKeyDownProcessor); - globalOnKeyDown(openInvoicePlanByBarcode); + globalOnKeyDown2(openInvoicePlanByBarcode); window.focus(); // 自动打开科室发货界面 if(openMode == INVOICE_FORM_OPEN_MODE_CLICKRETURNRECORD && !isUndefinedOrNullOrEmpty(returnRecordId)){ addAndEditInvoicePlan(param_departCode,param_depart); } -}); \ No newline at end of file +}); + + +/** + * 复制此方法过来,是因为rightGrid扫描完以后需要清除barcodeTemp + * 全局扫描条码的处理,以keydown事件处理。当按下enter键的时候,调用callback,参数为条码内容. + * 调用此方法后,需要再调用focus方法获取焦点,以便触发onkeydown事件 + * @param callback + */ +var g_stopDefault = true; +//在页面无需将光标定位在输入框相应全局的扫描枪事件 +var barcodeTemp = ''; +function globalOnKeyDown2(callback){ + document.onkeydown = showKeyDown; + + /*--------------------------- + 功能:停止事件冒泡 + ---------------------------*/ + function stopBubble(e) { + //如果提供了事件对象,则这是一个非IE浏览器 + if ( e && e.stopPropagation ) + //因此它支持W3C的stopPropagation()方法 + e.stopPropagation(); + else + //否则,我们需要使用IE的方式来取消事件冒泡 + window.event.cancelBubble = true; + } + //阻止浏览器的默认行为 + function stopDefault( e ) { + //阻止默认浏览器动作(W3C) + if ( e && e.preventDefault ) + e.preventDefault(); + //IE中阻止函数器默认动作的方式 + else + window.event.returnValue = false; + return false; + } + + + function showKeyDown(){ + if(event.keyCode == 48 || event.keyCode == 96){ + barcodeTemp += '0'; + }else if(event.keyCode == 49 || event.keyCode == 97){ + barcodeTemp += '1'; + }else if(event.keyCode == 50 || event.keyCode == 98){ + barcodeTemp += '2'; + }else if(event.keyCode == 51 || event.keyCode == 99){ + barcodeTemp += '3'; + }else if(event.keyCode == 52 || event.keyCode == 100){ + barcodeTemp += '4'; + }else if(event.keyCode == 53 || event.keyCode == 101){ + barcodeTemp += '5'; + }else if(event.keyCode == 54 || event.keyCode == 102){ + barcodeTemp += '6'; + }else if(event.keyCode == 55 || event.keyCode == 103){ + barcodeTemp += '7'; + }else if(event.keyCode == 56 || event.keyCode == 104){ + barcodeTemp += '8'; + }else if(event.keyCode == 57 || event.keyCode == 105){ + barcodeTemp += '9'; + }else if(event.keyCode == 13){ + if(callback){ + callback(barcodeTemp); + } + barcodeTemp = ''; + } + stopBubble(event); + if(g_stopDefault){ + stopDefault(event); + } + } +} \ No newline at end of file