Ext.define('erp.view.pm.make.WCPlanMaterialLackGrid',{ extend: 'Ext.grid.Panel', alias: 'widget.erpBatchDealGridPanel', id: 'batchDealGridPanel', emptyText : $I18N.common.grid.emptyText, columnLines : true, autoScroll : true, 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, 'pm/make/singleGridPanel.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 Map={},arr=new Array(); var len = data.length; for(var i=0;inew Date(enddate)) smalldata[endfield]=smalldata.ml_mrponhandlack; else smalldata[smalldata.ml_begindate.substring(0,10)]=smalldata.ml_mrponhandlack; Map[data[i].ml_makecode] =smalldata; }else{ var smalldata=Map[data[i].ml_makecode]; smalldata[data[i].ml_begindate.substring(0,10)]=data[i].ml_mrponhandlack; Map[data[i].ml_makecode]=smalldata; } } for(var property in Map){ arr.push(Map[property]); } data=arr; grid.store.loadData(data); } }); }, getGridColumnsAndStore: function(grid, url, param, no){ var me = this; grid.setLoading(true); Ext.Ajax.request({//拿到grid的columns url : basePath + url, params: param, async:false, 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 = []; var gridfields=res.fields; 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=Ext.Date.add(new Date(startdate), Ext.Date.DAY, -1); enddate=Ext.Date.add(new Date(enddate), Ext.Date.DAY, -1); if(startdate!=null){ var lastcolumns=[]; Ext.Array.each(gridcolumns,function(item,m){ if(item.dataIndex=='ml_begindate'){ var columns=new Array(); var count=(enddate-startdate)/86400000; 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