Ext.QuickTips.init(); Ext.define('erp.controller.scm.purchase.VerifyApplyDetail', { extend: 'Ext.app.Controller', FormUtil: Ext.create('erp.util.FormUtil'), GridUtil: Ext.create('erp.util.GridUtil'), BaseUtil: Ext.create('erp.util.BaseUtil'), views:[ 'scm.purchase.VerifyApplyDetail.Form','scm.purchase.VerifyApplyDetail.GridPanel','core.toolbar.Toolbar','core.button.BatchGenBO', 'core.button.ClearSubpackage','core.button.Subpackage','core.button.Close','core.button.SaveBarcode','core.button.PrintAllPackage', 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.button.GenerateBarcode','core.button.BatchGenBarcode','core.button.PrintAll','core.button.DeleteAllDetails' ], init:function(){ var me = this; var LODOP = null; var lps_barcaller = 'VerifyAP!BarPrint'; var lps_obcaller = 'VerifyAP!ObxPrint'; var statusCode = window.parent.Ext.getCmp("va_statuscode").value; this.control({ 'erpVerifyApplyDetailGridPanel':{ itemclick : function(selModel, record){ if(statusCode != 'AUDITED' && statusCode!='已审核') this.GridUtil.onGridItemClick(selModel, record); }, afterrender:function(m){ var grid =Ext.getCmp("verifyApplyDetailGridPanel"); Ext.each(grid.columns, function(c){ if(c.dataIndex == 'vadp_printstatus'){ c.editor = null; } }); }, beforeedit: function(){//如果是单件管控则明细行中的入库数量不允许修改 var grid =Ext.getCmp("verifyApplyDetailGridPanel"); var pr_tracekind = Ext.getCmp("pr_tracekind").value; if(pr_tracekind == 1 || pr_tracekind == "单件管控"){ Ext.each(grid.columns, function(c){ if(c.dataIndex == 'vadp_qty'){ c.editor = null; } }); } } }, 'erpCloseButton': { click: function(btn){ me.FormUtil.beforeClose(me); } }, 'erpBatchGenBOButton':{//批量生成条码和箱号 afterrender: function(btn){ if(statusCode == 'AUDITED' || statusCode=='已审核'){ btn.disable(true); } }, enable: function (btn){ if(statusCode == 'AUDITED' || statusCode=='已审核'){ btn.disable(true); } }, click:function(btn){ var pr_zxbzs = Ext.getCmp("pr_zxbzs").value; if((pr_zxbzs == 0) || pr_zxbzs < 0 ||pr_zxbzs ==null){ showError("最小包装数必须大于0!"); return ; } var pr_tracekind = Ext.getCmp("pr_tracekind").value; if(pr_tracekind == 1 || pr_tracekind == "单件管控"){ if(pr_zxbzs!=1){ showError("单件管控类型的物料最小包装数只能为1 !"); return ; } } var baqty = Ext.getCmp("vadp_baqty");//vadp_baqty 批总量,vad_qty:来料总量 if(baqty && (Number(baqty.value)== '0' ||Number(baqty.value) == 0 )){ showError('批总量不允许为0!'); return; } if(baqty && (Number(baqty.value) > Number(Ext.getCmp("vad_qty").value))){ showError("批总量不允许大于来料总量");return; } var pk_qty = Ext.getCmp("vadp_pkqty"); if(pk_qty &&(pk_qty.value == ''|| pk_qty.value == 0 ||pk_qty.value == '0' ||pk_qty.value == null)){ showError("请输入箱内总数");return ; }else { var qty = pk_qty.value; var pr_zxbzs = Ext.getCmp("pr_zxbzs").value; if(pr_zxbzs == ''||pr_zxbzs == 0 || pr_zxbzs == '0'||pr_zxbzs ==null){ showError("请输入最小包装数");return ; }else { if( qty%pr_zxbzs !=0 ){ showError("箱内总数必须是最小包装数的整数倍!");return ; } } } var r = me.getData(); var param = unescape(escape(Ext.JSON.encode(me.getData(r)))); me.FormUtil.setLoading(true); Ext.Ajax.request({ url : basePath + "scm/purchase/BatchGenBO.action", params: { caller: caller, formStore:param }, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { window.location.href = basePath +'jsps/scm/purchase/verifyApplyDetail.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) } }, 'erpSaveBarcodeButton': { afterrender: function(btn){ if(statusCode == 'AUDITED' || statusCode=='已审核'){ btn.disable(true); } }, click: function (btn){ var grid =Ext.getCmp("verifyApplyDetailGridPanel"); if( grid.selModel.getCount() == 0 ){ showError("没有需要处理的数据!"); return; } var items = grid.selModel.getSelection(); Ext.each(items, function(item, index){ if(this.data[grid.keyField] != null && this.data[grid.keyField] != '' && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){ item.index = this.data[grid.keyField]; grid.multiselected.push(item); } var records = Ext.Array.unique(grid.multiselected); if(records.length > 0){ var params = new Object(); params.caller = 'VerifyApplyDetailP'; var data = new Array(); var bool = false; Ext.each(records, function(record, index){ if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != '' && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)){ bool = true; var o = new Object(); if(grid.keyField){ o[grid.keyField] = record.data[grid.keyField]; } if(grid.toField){ Ext.each(grid.toField, function(f, index){ var v = Ext.getCmp(f).value; if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){ o[f] = v; } }); } if(grid.necessaryFields){ Ext.each(grid.necessaryFields, function(f, index){ var v = record.data[f]; if(Ext.isDate(v)){ v = Ext.Date.toString(v); } o[f] = v; }); } data.push(o); } }); if(bool){ params.gridStore = unescape(Ext.JSON.encode(data).replace(/\\/g,"%")); Ext.Ajax.request({ url : basePath + "scm/purchase/saveBarcodeDetail.action", params: params, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { var formCondition = getUrlParam('formCondition');//从url解析参数 formCondition = (formCondition == null) ? "" : formCondition.replace(/IS/g,"="); window.location.href = basePath +'jsps/scm/purchase/verifyApplyDetail.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) } else { showError("没有需要处理的数据!"); } } }) } }, 'erpBatchGenBarcodeButton':{ afterrender: function(btn){ if(statusCode == 'AUDITED' || statusCode=='已审核'){ btn.disable(true); } }, enable: function (btn){ if(statusCode == 'AUDITED' || statusCode=='已审核'){ btn.disable(true); } }, click: function (btn){ //产生新的条码并插到grid行中 var pr_zxbzs = Ext.getCmp("pr_zxbzs").value; if((pr_zxbzs == 0)|| pr_zxbzs <0){ showError("最小包装数必须大于等于0"); return ; } var pr_tracekind = Ext.getCmp("pr_tracekind").value; if(pr_tracekind == 1 || pr_tracekind == "单件管控"){ if(pr_zxbzs!=1){ showError("单件管控类型的物料最小包装数只能为1 !"); return ; } } var r = me.getData(); var param = unescape(escape(Ext.JSON.encode(r))); Ext.Ajax.request({ url : basePath + "scm/purchase/batchGenBarcode.action", params: { caller: 'VerifyApplyDetailP', formStore:param }, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { var formCondition = getUrlParam('formCondition');//从url解析参数 formCondition = (formCondition == null) ? "" : formCondition.replace(/IS/g,"="); var gridConditon = getUrlParam('gridCondition'); window.location.href = basePath +'jsps/scm/purchase/verifyApplyDetail.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) } }, //删除全部明细 'erpDeleteAllDetailsButton':{ afterrender: function(btn){ if(statusCode == 'AUDITED' || statusCode=='已审核'){ btn.disable(true); } }, click:function (btn){ var grid =Ext.getCmp("verifyApplyDetailGridPanel"); var items = grid.store.data.items; var bool = false; Ext.each(items, function(item, index){ if(this.data[grid.keyField] != null && this.data[grid.keyField] != '' && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){ bool = true; } }); if(!bool){ showError("没有需要处理的数据!"); return; }else{ warnMsg("确定清空所有明细", function(btn){ if(btn == 'yes'){ Ext.Ajax.request({ url : basePath + "scm/purchase/deleteAllBarDetails.action", params: { caller: 'VerifyApplyDetailP', code:Ext.getCmp("vad_code").value, detno:Ext.getCmp("vad_detno").value }, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo);return; }else { var formCondition = getUrlParam('formCondition');//从url解析参数 formCondition = (formCondition == null) ? "" : formCondition.replace(/IS/g,"="); var gridConditon = getUrlParam('gridCondition'); window.location.href = basePath +'jsps/scm/purchase/verifyApplyDetail.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition; } } }) }else{ return; } }) } } }, //全部打印 'erpPrintAllButton':{ click:function (btn){ var win = new Ext.window.Window({ id : 'win', maximizable : true, buttonAlign : 'center', layout : 'anchor', title: '打印模板选择', modal : true, items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', layout : 'fit', html : '' }] }); win.show(); } }, 'erpPrintAllPackageButton':{//打印全部箱号 click : function (btn){ var win = new Ext.window.Window({ id : 'win', maximizable : true, buttonAlign : 'center', layout : 'anchor', title: '打印模板选择', modal : true, items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', layout : 'fit', html : '' }] }); win.show(); } } }); }, getData : function (){ var form = Ext.getCmp('verifyApplyDetailForm'); if(form.getForm().isValid()){ // form里面数据 Ext.each(form.items.items, function(item){ if(item.xtype == 'numberfield'){ // number类型赋默认值,不然sql无法执行 if(item.value == null || item.value == ''){ item.setValue(0); } } }); var r = form.getValues(); Ext.each(form.items.items, function(item){ if(item.xtype == 'itemgrid'){ // number类型赋默认值,不然sql无法执行 if(item.value != null && item.value != ''){ r[item.name]=item.value; } } }); // 去除ignore字段 var keys = Ext.Object.getKeys(r), f; var reg = /[!@#$%^&*()'":,\/?]/; Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } if(f) { if(f.logic != 'ignore' && f.logic){ r[f.logic] = r[k]; delete r[k]; } } // codeField值强制大写,自动过滤特殊字符 if(k == form.codeField && !Ext.isEmpty(r[k])) { r[k] = r[k].trim().toUpperCase().replace(reg, ''); } }); Ext.each(Ext.Object.getKeys(r), function(k){// 去掉页面非表单定义字段 if(contains(k, 'ext-', true)){ delete r[k]; } }); } return r; } });