Ext.QuickTips.init(); Ext.define('erp.controller.pm.bom.CompareBom', { extend : 'Ext.app.Controller', views : [ 'pm.bom.CompareBom.Viewport', 'common.query.GridPanel', 'pm.bom.CompareBom.Form', 'core.trigger.DbfindTrigger', 'core.form.FtField', 'core.form.ConDateField', 'core.form.YnField', 'core.form.FtDateField', 'core.form.MonthDateField','core.form.FtFindField', 'core.grid.YnColumn', 'core.grid.TfColumn', 'core.form.ConMonthDateField' ], init : function() { this.control({ 'erpQueryFormPanel button[name=confirm]' : { click : function(btn) { } }, 'erpQueryGridPanel' : { itemclick : this.onGridItemClick }, 'erpQueryFormPanel1 button[name=query]': { click : function(btn) { var grid = Ext.getCmp('querygrid'); var form = Ext.getCmp('queryform'); var values = ''; Ext.each(form.items.items, function(f){ if(f.logic != null && f.logic != ''){ if(f.value != null&&f.value != ''){ values = values+f.value+","; } } }); values = values.substring(0,values.length-1); this.getGridColumnsAndStore(grid,values); } } }); }, onGridItemClick : function(selModel, record) { }, getGridColumnsAndStore: function(grid,values){ var me = this; Ext.Ajax.request({//拿到grid的columns url : basePath+"pm/bom/compareBom.action", params: { caller: caller, condition: values, bd_single:Ext.getCmp('bd_single').checked, bd_difbom:Ext.getCmp('bd_difbom').checked }, method : 'post', callback : function(options,success,response){ grid.setLoading(false); var res = new Ext.decode(response.responseText); if(res.exceptionInfo){ showError(res.exceptionInfo); return; } if(res.columns){ var limits = res.limits, limitArr = new Array(); if(limits != null && limits.length > 0) {//权限外字段 limitArr = Ext.Array.pluck(limits, 'lf_field'); } Ext.each(res.columns, function(column, y){ //power if(limitArr.length > 0 && Ext.Array.contains(limitArr, column.dataIndex)) { column.hidden = true; } //renderer //me.setRenderer(grid, column); //logictype //me.setLogicType(grid, column); }); //data var data = []; if(!res.data || res.data.length == 2){ } else { data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')); } //store var store = me.setStore(res.fields, data, grid.groupField, grid.necessaryField); //view if(grid.selModel.views == null){ grid.selModel.views = []; } //dbfind if(res.dbfinds&&res.dbfinds.length > 0){ grid.dbfinds = res.dbfinds; } //toolbar // me.setToolbar(grid, res.columns, res.necessaryField, limitArr); //reconfigure grid.reconfigure(store, res.columns); var form = Ext.ComponentQuery.query('form')[0]; if(form){ if(form.readOnly){ grid.readOnly = true;//grid不可编辑 } } } else { grid.hide(); var form = Ext.ComponentQuery.query('form')[0]; me.updateFormPosition(form);//字段较少时,修改form布局 } } }); }, setStore: function(fields, data, groupField, necessaryField){ if(!Ext.isChrome){ Ext.each(fields, function(f){ if(f.type == 'date'){ f.dateFormat = 'Y-m-d H:m:s'; } }); } return Ext.create('Ext.data.Store', { fields: fields, data: data, groupField: groupField, getSum: function(records, field) { if (arguments.length < 2) { return 0; } var total = 0, i = 0, len = records.length; if(necessaryField) { for (; i < len; ++i) {//重写getSum,grid在合计时,只合计填写了必要信息的行 var necessary = records[i].get(necessaryField); if(necessary != null && necessary != ''){ total += records[i].get(field); } } } else { for (; i < len; ++i) { total += records[i].get(field); } } return total; }, getCount: function() { if(necessaryField) { var count = 0; Ext.each(this.data.items, function(item){//重写getCount,grid在合计时,只合计填写了必要信息的行 if(item.data[necessaryField] != null && item.data[necessaryField] != ''){ count++; } }); return count; } return this.data.items.length; } }); }, });