Ext.QuickTips.init(); Ext.define('erp.controller.scm.reserve.ProdCreateBarcode', { extend: 'Ext.app.Controller', requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil'], views:[ 'core.form.Panel','common.CommonPage','core.grid.Panel2','core.toolbar.Toolbar','core.trigger.MultiDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger', 'core.button.Close','core.trigger.DbfindTrigger','core.grid.YnColumn','core.button.GenerateBarcode' ], init:function(){ var me = this; me.FormUtil = Ext.create('erp.util.FormUtil'); me.GridUtil = Ext.create('erp.util.GridUtil'); me.BaseUtil = Ext.create('erp.util.BaseUtil'); this.control({ '#barCode': { specialkey: function(f, e){//按ENTER自动复制到下一行 if (e.getKey() == e.ENTER) { if(f.value != null && f.value != ''){ me.getBarInfo(); Ext.getCmp('pr_partNumber').focus(false, 100); } } } }, 'erpProdCreateBarcode': { }, 'erpGenerateBarcodeButton': { click: function(btn){ var pr_code = Ext.getCmp('pr_code').value; var number = Ext.getCmp('pr_partNumber').value; if(pr_code == null || pr_code ==''){ Ext.Msg.alert('温馨提示', '请先选择物料编号'); return; }else if(number == null || number ==''){ Ext.Msg.alert('温馨提示', '请输入数量'); return; } var re= /^\d+(,\d+)*$/; var sum=0; number=number.replace(/,/ig,','); if(re.test(number)){ var str = new Array(); str = number.split( "," ); for (var i = 0; i < str.length; i++ ) { if(str[i] <= 0){ Ext.Msg.alert('温馨提示', '数量必须大于0'); return; } sum+=parseFloat(str[i]); }}else{ showError("请输入正确的数量,例如20,30,40"); return; } if (sum <= 0) { Ext.Msg.alert('温馨提示', '数量必须大于0'); return; } if(pr_code && number){ Ext.getCmp("pr_partNumber").setValue(''); var batchcode = Ext.getCmp('batchCode').value; if(batchcode != null && batchcode != ''){ me.batchGenerateBarcode(pr_code,number,batchcode); }else{ me.batchGenerateBarcode(pr_code,number,''); } } } }, 'erpCloseButton': { click: function(btn){ me.FormUtil.beforeClose(me); } } }); }, onGridItemClick: function(selModel, record){//grid行选择 this.GridUtil.onGridItemClick(selModel, record); }, getForm: function(btn){ return btn.ownerCt.ownerCt; }, resize: function(form, grid){ if(!this.resized && form && grid && form.items.items.length > 0){ var height = window.innerHeight, fh = form.getEl().down('.x-panel-body>.x-column-inner').getHeight(); if(Ext.isIE){ height = screen.height*0.75; } form.setHeight(70 + fh); grid.setHeight(height - fh - 70); this.resized = true; } }, setLoading : function(b) { var mask = this.mask; if (!mask) { this.mask = mask = new Ext.LoadMask(Ext.getBody(), { msg : "处理中,请稍后...", msgCls : 'z-index:10000;' }); } if (b) mask.show(); else mask.hide(); }, batchGenerateBarcode: function(pr_code,number,batchcode){ var me=this; me.setLoading(true); Ext.Ajax.request({ url : basePath +'scm/reserve/batchGenerateBarcode.action', params: { pr_code:pr_code, number:number, batchcode:batchcode }, method : 'post', callback : function(options,success,response){ me.setLoading(false); var res = new Ext.decode(response.responseText); if(res.success){ var data = res.data; Ext.MessageBox.alert('提示', '条码生成成功!',function(){ var win = new Ext.window.Window({ id: 'winBar', height: '75%', width: '75%', maximizable: false, title:'条码打印', buttonAlign: 'center', layout: 'column', bodyStyle:"background-color:#F5F5F5;", items: [{ xtype: 'gridpanel', id: 'grid', anchor : '100% 70%', columnWidth:1, multiSelect: true, multiselected: [], forceFit : true, checkOnly:true, columns: [ { style :"text-align:center", text: 'ID', width: 0, hidden : true, dataIndex: 'bar_id', ignore: true, },{ style :"text-align:center", text: '条码', flex : 7, dataIndex: 'bar_code', logic:"necessaryField", editor: { xtype: "displayfield", hideTrigger: true, store: null, queryMode: "local" } },{ style :"text-align:center", text: '数量', logic:"necessaryField", flex : 3, dataIndex: 'bar_remain', editor: { xtype: "displayfield", hideTrigger: true, store: null, queryMode: "local" }, xtype: 'numbercolumn', align: "left", format: "" }], GridUtil: Ext.create('erp.util.GridUtil'), listeners:{ beforeedit:function(editor, e, eOpts){ return false;//不可编辑 } }, selType:'checkboxmodel', dbfinds: [], columnLines: true, plugins: [Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 10 }), Ext.create('erp.view.core.plugin.CopyPasteMenu')], store: new Ext.data.Store({ fields: ['bar_id', 'bar_code', 'bar_remain'], data: [] }), onGridItemClick: function(selModel, record){// grid行选择 this.GridUtil.onGridItemClick(selModel, record); }, }], buttons : [{ text : '打印条码', id : 'printNew', iconCls: 'x-button-icon-print', disabled : true, handler : function(btn) { var me = this; caller = 'Barcode!BaPrint'; me.idS = ''; var lps_Barcaller = 'Barcode!Print'; var bool = false; var grid = Ext.getCmp('grid'); var items = grid.selModel.getSelection(); var idArray = []; Ext.each(items, function(item, index){ if(this.data['bar_id'] != null && this.data['bar_id'] != '' && this.data['bar_id'] != '0' && this.data['bar_id'] != 0){ bool = true; idArray.push(this.data['bar_id']); } }); if(bool){ var idS = idArray.toString(); //me.print(idS,lps_Barcaller); me.idS = idS; me.zplPrint(lps_Barcaller); }else{ showError("没有需要打印的行"); } }, zplPrint:function(caller){//zpl打印语句 // 获取选择打印文件,用户选择分辨率,和打印机 var me = this; if(!me.window){ setup_web_print(function(printers,selected_printer){ me.window = Ext.create('Ext.window.Window', { autoShow: true, title: '选择打印模板', width: 400, height: 300, layout: 'anchor', id :'template-win4', closeAction:'hide', items: [{ anchor:'100% 100%', xtype:'form', buttonAlign : 'center', items:[{ xtype: 'combo', id: 'printers', fieldLabel: '打印机列表', store: Ext.create('Ext.data.Store', { autoLoad: true, fields: ['display', 'value'], data:printers }), queryMode: 'local', displayField: 'display', valueField: 'value', width:361, allowBlank:false, value:selected_printer.uid, selectOnFocus:true,//用户不能自己输入,只能选择列表中有的记录 style:'margin-left:15px;margin-top:15px;' },{ xtype: 'combo', id: 'dpi', fieldLabel: '打印机分辨率', style:'margin-left:15px;margin-top:15px;', store: Ext.create('Ext.data.Store', { fields: ['display', 'value'], data : [{"display": '203dpi', "value": '203'}, {"display": '300dpi', "value": '300'}, {"display": '600dpi', "value": '600'}, {"display": '1200dpi', "value": '1200'}] }), displayField: 'display', valueField: 'value', queryMode: 'local', value:resolutionCookie||'203', width:361, allowBlank:false, selectOnFocus:true//用户不能自己输入,只能选择列表中有的记录 }] }], buttonAlign: 'center', buttons: [{ text: '确定', handler: function(b) { var printers = Ext.getCmp('printers'); var dpi = Ext.getCmp('dpi'); if(printers && printers.value!= null){ me.zebraPrint(caller,printers.value,dpi.value); b.ownerCt.ownerCt.close(); }else{ alert("请选择打印机 "); } } }, { text: '取消', handler: function(b) { b.ownerCt.ownerCt.close(); } }] }); }); }else if(me.window.isHidden()){ me.window.show(); } }, zebraPrint:function(caller,printer,dpi){ var me = this; var params = new Object(); params['condition'] = 'bar_id in ('+me.idS +")"; sendData(caller,printer,dpi,params); } }, { text : '取消', id : 'cancle', handler : function(btn) { var win = btn.ownerCt.ownerCt; win.close(); } } ], }); win.show(); var ids = new Array(); for(var i= 0;i 0) { var keys = Ext.Object.getKeys(datas[0]); Ext.Array.each(datas, function(d){ var obj = {}; Ext.Array.each(keys, function(key){ obj[key.toLowerCase()] = d[key]; }); _datas.push(obj); }); } store = grid.getStore(); _datas.length > 0 && grid.store.loadData(_datas); grid.store.each(function(){ this.dirty = true; }); }); }, getFieldsValues: function(caller, fields, condition, data, fn){ Ext.Ajax.request({ url : basePath + 'common/getFieldsDatas.action', async: false, params: { caller: caller, fields: fields, condition: condition }, method : 'post', callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.exceptionInfo){ showError(localJson.exceptionInfo);return; } if(localJson.success){ data = localJson.data; fn && fn.call(null, localJson.data); } } }); }, zplPrint:function(caller){//zpl打印语句 // 获取选择打印文件,用户选择分辨率,和打印机 var me = this; if(!me.window){ setup_web_print(function(printers,selected_printer){ me.window = Ext.create('Ext.window.Window', { autoShow: true, title: '选择打印模板', width: 400, height: 300, layout: 'anchor', id :'template-win5', closeAction:'hide', items: [{ anchor:'100% 100%', xtype:'form', buttonAlign : 'center', items:[{ xtype: 'combo', id: 'printers', fieldLabel: '打印机列表', store: Ext.create('Ext.data.Store', { autoLoad: true, fields: ['display', 'value'], data:printers }), queryMode: 'local', displayField: 'display', valueField: 'value', width:361, allowBlank:false, value:selected_printer.uid, selectOnFocus:true,//用户不能自己输入,只能选择列表中有的记录 style:'margin-left:15px;margin-top:15px;' },{ xtype: 'combo', id: 'dpi', fieldLabel: '打印机分辨率', style:'margin-left:15px;margin-top:15px;', store: Ext.create('Ext.data.Store', { fields: ['display', 'value'], data : [{"display": '203dpi', "value": '203'}, {"display": '300dpi', "value": '300'}, {"display": '600dpi', "value": '600'}, {"display": '1200dpi', "value": '1200'}] }), displayField: 'display', valueField: 'value', queryMode: 'local', value:resolutionCookie||'203', width:361, allowBlank:false, selectOnFocus:true//用户不能自己输入,只能选择列表中有的记录 }] }], buttonAlign: 'center', buttons: [{ text: '确定', handler: function(b) { var printers = Ext.getCmp('printers'); var dpi = Ext.getCmp('dpi'); if(printers && printers.value!= null){ me.zebraPrint(caller,printers.value,dpi.value); b.ownerCt.ownerCt.close(); }else{ alert("请选择打印机 "); } } }, { text: '取消', handler: function(b) { b.ownerCt.ownerCt.close(); } }] }); }); }else if(me.window.isHidden()){ me.window.show(); } }, zebraPrint:function(caller,printer,dpi){ var me = this; var params = new Object(); params['condition'] = 'bar_id in ('+me.idS +")"; sendData(caller,printer,dpi,params); } });