Ext.define('erp.view.scm.sale.ShortForecastGrid',{ extend: 'Ext.grid.Panel', alias: 'widget.erpShortForecastGrid', emptyText : $I18N.common.grid.emptyText, columnLines : true, autoScroll : true, id:'grid', store: [], region: 'south', layout : 'fit', columns: new Array(), height:height, GridUtil: Ext.create('erp.util.GridUtil'), bodyStyle:'background-color:#f1f1f1;', selModel: Ext.create('Ext.selection.CheckboxModel',{ headerWidth: 0 }), /*enableLocking:true,*/ /*lockable: true,*/ GridUtil: Ext.create('erp.util.GridUtil'), BaseUtil: Ext.create('erp.util.BaseUtil'), plugins: [Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1, listeners:{ 'edit':function(editor,e,Opts){ var record=e.record,data=null,qty=0; if(record){ data=record.data; for(var property in data){ if(!/^[a-zA-Z]/.test(property)){ qty+=data[property]; } } if(qty>(data.ma_qty-data.ma_madeqty)){ showError('排产数不能超过未交数!请重新输入'); e.record.reject(); } } } } })], /* plugins: [Ext.create('Ext.ux.grid.GridHeaderFilters')],*/ initComponent : function(){ var condition = this.condition; if(!condition){ var urlCondition = this.BaseUtil.getUrlParam('gridCondition'); urlCondition = urlCondition == null || urlCondition == "null" ? "" : urlCondition; gridCondition = (gridCondition == null || gridCondition == "null") ? "" : gridCondition; gridCondition = gridCondition + urlCondition; gridCondition = gridCondition.replace(/IS/g, "="); if(gridCondition.search(/!/) != -1){ gridCondition = gridCondition.substring(0, gridCondition.length - 4); } condition = gridCondition; } var gridParam = {caller: this.caller || caller, condition: condition}; this.getGridColumnsAndStore(this, 'scm/sale/getGridConfig.action', gridParam, "");//从后台拿到gridpanel的配置及数据 this.callParent(arguments); }, loadNewStore:function(grid, url, param, no){ Ext.Ajax.request({//拿到grid的columns url : basePath + url, params: param, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo){ showError(res.exceptionInfo);return; } /*var data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']'));*/ //对data 进行处理 必须要先取到主记录的开始时间和结束时间 var data=res.data; var Map={},arr=new Array(); var len = data.length; startdate=new Date(data[0].sf_fromdate); enddate=new Date(data[0].sf_todate); for(var i=0;i 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 = []; var gridfields=res.fields; var newdetno=0; if(!res.data || res.data.length == 2){ me.add10EmptyData(grid.detno, data); me.add10EmptyData(grid.detno, data);//添加20条空白数据 } else { data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')); //对data 进行处理 必须要先取到主记录的开始时间和结束时间 var Map={},arr=new Array(); var len = data.length; for(var i=0;i 0){ grid.dbfinds = res.dbfinds; } //toolbar //me.setToolbar(grid, res.columns, res.necessaryField, limitArr); gridcolumns=res.columns; startdate=new Date(res.date.startdate); enddate=new Date(res.date.enddate); if(startdate!=null){ var lastcolumns=[]; var startfield=""; var endfield=""; Ext.Array.each(gridcolumns,function(item,m){ if(item.dataIndex=='sd_enddate'){ var columns=new Array(); var count=(enddate-startdate)/(86400000*7); for(var i=0;i' + '' + val + ''; } }; } } else if(logic == 'groupField'){ grid.groupField = column.dataIndex; } } }, setStore: function(fields, data, groupField, necessaryField){ griddata=data; 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; } }); }, setToolbar: function(grid, columns, necessaryField, limitArr){ var items = []; var bool = true; if(!grid.dockedItems) return; Ext.each(grid.dockedItems.items, function(item){ if(item.dock == 'bottom' && item.items){//bbar已存在 bool = false; } }); if(bool){ Ext.each(columns, function(column){ if(limitArr.length == 0 || !Ext.Array.contains(limitArr, column.dataIndex)) { if(column.summaryType == 'sum'){ items.push('-',{ id: column.dataIndex + '_sum', itemId: column.dataIndex, xtype: 'tbtext', text: column.header + '(sum):0' }); } else if(column.summaryType == 'average') { items.push('-',{ id: column.dataIndex + '_average', itemId: column.dataIndex, xtype: 'tbtext', text: column.header + '(average):0' }); } else if(column.summaryType == 'count') { items.push('-',{ id: column.dataIndex + '_count', itemId: column.dataIndex, xtype: 'tbtext', text: column.header + '(count):0' }); } } if(column.dataIndex == necessaryField){ column.renderer = function(val){ if(val != null && val.toString().trim() != ''){ return val; } else { return '' + '' + val + ''; } }; } }); grid.addDocked({ xtype: 'toolbar', dock: 'bottom', items: items }); } else { var bars = Ext.ComponentQuery.query('erpToolbar'); if(bars.length > 0){ Ext.each(columns, function(column){ if(column.summaryType == 'sum'){ bars[0].add('-'); bars[0].add({ id: column.dataIndex + '_sum', itemId: column.dataIndex, xtype: 'tbtext', text: column.header + '(sum):0' }); } else if(column.summaryType == 'average') { bars[0].add('-'); bars[0].add({ id: column.dataIndex + '_average', itemId: column.dataIndex, xtype: 'tbtext', text: column.header + '(average):0' }); } else if(column.summaryType == 'count') { bars[0].add('-'); bars[0].add({ id: column.dataIndex + '_count', itemId: column.dataIndex, xtype: 'tbtext', text: column.header + '(count):0' }); } }); } } }, add10EmptyData: function(detno, data){ if(detno){ var index = data.length == 0 ? 0 : Number(data[data.length-1][detno]); for(var i=0;i<10;i++){ var o = new Object(); o[detno] = index + i + 1; data.push(o); } } else { for(var i=0;i<10;i++){ var o = new Object(); data.push(o); } } }, checkGridDirty: function(grid){ var s = grid.getStore().data.items;//获取store里面的数据 var msg = ''; for(var i=0;i' + c.text + ' '; } }); } msg = msg + ";"; } } if(msg != '' && msg != ';'){//明细行被修改过哦 msg = "明细行" + msg.substring(0, msg.length-1) + "已编辑过"; } return msg; }, getGridStore: function(grid){ if(grid == null){ grid = Ext.getCmp('grid'); } var me = this, jsonGridData = new Array(); var form = Ext.getCmp('form'); var s = grid.getStore().data.items;//获取store里面的数据 var dd; for(var i=0;i