Ext.QuickTips.init(); Ext.define('erp.controller.scm.product.ProdTraceKind', { extend: 'Ext.app.Controller', requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil'], views:[ 'core.form.Panel','scm.product.ProdTraceKind','core.grid.Panel2','core.toolbar.Toolbar','core.trigger.MultiDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger', 'core.button.Update','core.button.Close','core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField', 'core.grid.YnColumn','core.trigger.AddDbfindTrigger', 'core.form.FileField','core.form.SplitTextField','core.button.End','core.button.ResEnd','core.form.CheckBoxGroup','core.button.TurnMJProject', 'core.form.MonthDateField' ], 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({ 'erpFormPanel': { alladded: function(form){ var grid = Ext.getCmp('grid'); if(grid) me.resize(form, grid); } }, 'erpGridPanel2': { itemclick: this.onGridItemClick, reconfigure: function(grid){ var form = Ext.getCmp('form'); if(form) me.resize(form, grid); } }, 'erpUpdateButton': { click: function(btn){ this.onUpdate(this); } }, 'htmleditor': { afterrender: function(f){ f.setHeight(500); } } }); }, 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; } }, onUpdate:function(){ var form = Ext.getCmp('form'), url = form.updateUrl; var me = this, params = new Object(); if(form.codeField && (Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == '')){ showError('编号不能为空.'); return; } var s1 = me.checkFormDirty(form); if(s1 == ''){ showError('还未添加或修改数据.'); return; } var r = form.getValues(); params.formStore = unescape(escape(Ext.JSON.encode(r))); if(url.indexOf('caller=') == -1){ url = url + "?caller=" + caller; } me.setLoading(true);//loading... Ext.Ajax.request({ url : basePath + url, params: params, method : 'post', callback : function(options,success,response){ me.setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.success){ showMessage('提示', '保存成功!', 1000); //update成功后刷新页面进入可编辑的页面 var u = String(window.location.href); if (u.indexOf('formCondition') == -1) { var value = r[form.keyField]; var formCondition = form.keyField + "IS" + value ; var gridCondition = ''; var grid = Ext.getCmp('grid'); if(grid && grid.mainField){ gridCondition = grid.mainField + "IS" + value; } if(me.contains(window.location.href, '?', true)){ window.location.href = window.location.href + '&formCondition=' + formCondition + '&gridCondition=' + gridCondition; } else { window.location.href = window.location.href + '?formCondition=' + formCondition + '&gridCondition=' + gridCondition; } } else { window.location.reload(); } } else if(localJson.exceptionInfo){ var str = localJson.exceptionInfo; if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面 str = str.replace('AFTERSUCCESS', ''); //update成功后刷新页面进入可编辑的页面 var u = String(window.location.href); if (u.indexOf('formCondition') == -1) { var value = r[form.keyField]; var formCondition = form.keyField + "IS" + value ; var gridCondition = ''; var grid = Ext.getCmp('grid'); if(grid && grid.mainField){ gridCondition = grid.mainField + "IS" + value; } if(me.contains(window.location.href, '?', true)){ window.location.href = window.location.href + '&formCondition=' + formCondition + '&gridCondition=' + gridCondition; } else { window.location.href = window.location.href + '?formCondition=' + formCondition + '&gridCondition=' + gridCondition; } } else { window.location.reload(); } } showError(str);return; } else { updateFailure(); } } }); }, checkFormDirty: function(){ var form = Ext.getCmp('form'); var s = ''; form.getForm().getFields().each(function (item,index, length){ if(item.logic!='ignore'){ var value = item.value == null ? "" : item.value; if(item.xtype == 'htmleditor') { value = item.getValue(); } item.originalValue = item.originalValue == null ? "" : item.originalValue; if(Ext.typeOf(item.originalValue) != 'object'){ if(item.originalValue.toString() != value.toString()){//isDirty、wasDirty、dirty一直都是true,没办法判断,所以直接用item.originalValue,原理是一样的 var label = item.fieldLabel || item.ownerCt.fieldLabel || item.boxLabel || item.ownerCt.title;//针对fieldContainer、radio、fieldset等 if(label){ s = s + ' ' + label.replace(/ /g,''); } } } } }); return (s == '') ? s : ('表单字段('+s+')已修改'); }, setLoading : function(b) {// 原this.getActiveTab().setLoading()换成此方法,解决Window模式下无loading问题 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(); }, /** * string:原始字符串 * substr:子字符串 * isIgnoreCase:忽略大小写 */ contains: function(string, substr, isIgnoreCase){ if (string == null || substr == null) return false; if (isIgnoreCase === undefined || isIgnoreCase === true) { string = string.toLowerCase(); substr = substr.toLowerCase(); } return string.indexOf(substr) > -1; } });