123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- Ext.define('erp.view.pm.mps.MRPThrowGrid',{
- extend: 'Ext.grid.Panel',
- alias: 'widget.erpBatchDealGridPanel',
- requires: ['erp.view.core.grid.HeaderFilter', 'erp.view.core.plugin.CopyPasteMenu'],
- id: 'batchDealGridPanel',
- emptyText : $I18N.common.grid.emptyText,
- columnLines : true,
- autoScroll : true,
- multiselected: [],
- store: [],
- columns: [],
- bodyStyle: 'background-color:#f1f1f1;',
- headerCt: Ext.create("Ext.grid.header.Container"),
- invalidateScrollerOnRefresh: false,
- viewConfig: {
- trackOver: false
- },
- buffered: true,
- bufferSize:300,
- headerCt: Ext.create("Ext.grid.header.Container",{
- forceFit: false,
- sortable: true,
- enableColumnMove:true,
- enableColumnResize:true,
- enableColumnHide: true
- }),
- dockedItems: [{
- xtype: 'toolbar',
- items:[{
- xtype: 'tbtext',
- id: 'storeCount',
- tpl: '筛选结果: {count}条'
- }, '->', {
- xtype: 'tbtext',
- id: 'selectedCount',
- tpl: '已选择: {count}条'
- }],
- dock: 'bottom'
- }],
- sync: true,
- plugins: [Ext.create('erp.view.core.grid.HeaderFilter', {
- remoteFilter: true
- }),
- Ext.create('Ext.grid.plugin.CellEditing', {
- clicksToEdit: 1,
- listeners:{
- 'edit':function(editor,e,Opts){
- var record=e.record;
- if(e.originalValue!=e.value){
- if(record.data.md_status && record.data.md_status!='未投放'){
- showError('不能修改已投放的数据');
- return ;
- }
- var grid=Ext.getCmp('batchDealGridPanel');
- Ext.Ajax.request({
- url:basePath+'pm/mrp/updateFieldData.action',
- params: {
- caller:caller,
- data:e.value,
- field:e.field,
- keyField:grid.keyField,
- keyValue:record.data[grid.keyField]
- },
- method : 'post',
- callback : function(options,success,response){
- var local=Ext.decode(response.responseText);
- if(local.success) {
- showMessage('提示', '保存成功!', 1000);
- }else {
- showError(local.exceptionInfo);
- }
- }
- });
- /* Ext.MessageBox.show({
- title:'保存修改?',
- msg: '数据已修改需要保存吗?',
- buttons: Ext.Msg.YESNO,
- icon: Ext.Msg.WARNING,
- fn: function(btn){
- if(btn == 'yes'){
- //保存
- if(record.data.md_status && record.data.md_status!='未投放'){
- showError('不能修改已投放的数据');
- return ;
- }
- var grid=Ext.getCmp('batchDealGridPanel');
- Ext.Ajax.request({
- url:basePath+'pm/mrp/updateFieldData.action',
- params: {
- caller:caller,
- data:e.value,
- field:e.field,
- keyField:grid.keyField,
- keyValue:record.data[grid.keyField]
- },
- method : 'post',
- callback : function(options,success,response){
- var local=Ext.decode(response.responseText);
- if(local.success) {
- showMessage('提示', '保存成功!', 1000);
- }else {
- showError(local.exceptionInfo);
- }
- }
- });
- } else if(btn == 'no'){
- //不保存
- e.record.reject();
- } else {
- return;
- }
- }
- });*/
- }
- }
- }
- }), Ext.create('erp.view.core.plugin.CopyPasteMenu')],
- features : [Ext.create('Ext.grid.feature.Grouping',{
- //startCollapsed: true,
- hideGroupedHeader: true,
- groupHeaderTpl: '{name} (Count:{rows.length})'
- }),{
- ftype : 'summary',
- showSummaryRow : false,//不显示默认合计行
- generateSummaryData: function(){
- var me = this,
- data = {},
- store = me.view.store,
- columns = me.view.headerCt.getColumnsForTpl(),
- i = 0,
- length = columns.length,
- comp;
- for (i = 0, length = columns.length; i < length; ++i) {
- comp = Ext.getCmp(columns[i].id);
- data[comp.id] = me.getSummary(store, comp.summaryType, comp.dataIndex, false);
- var tb = Ext.getCmp(columns[i].dataIndex + '_' + comp.summaryType);
- if(tb){
- tb.setText(tb.text.split(':')[0] + ':' + data[comp.id]);
- }
- }
- return data;
- }
- }],
- selModel: Ext.create('Ext.selection.CheckboxModel',{
- ignoreRightMouseSelection : false,
- checkOnly: true,
- listeners:{
- selectionchange:function(selModel, selected, options){
- var grid = selModel.view.ownerCt;
- grid.down('#selectedCount').update({
- count: selected.length
- });
- },
- select:function(row,record,index){
- var grid = row.view.ownerCt;
- //if(!Ext.Array.contains(grid.multiselected,record)){
- grid.multiselected.push(record);
- // }
- },
- deselect:function(row,record,index){
- var grid = row.view.ownerCt;
- Ext.Array.remove(grid.multiselected, record);
- }
- },
- getEditor: function(){
- return null;
- }
- }),
- maxDataSize: 3000,
- initComponent : function(){
- this.GridUtil = Ext.create('erp.util.GridUtil');
- this.BaseUtil = Ext.create('erp.util.BaseUtil');
- this.RenderUtil = Ext.create('erp.util.RenderUtil');
- condition = this.BaseUtil.getUrlParam('urlcondition');
- condition = (condition == null) ? "" : condition;
- condition = condition.replace(/@/,"'%").replace(/@/,"%'");
- this.defaultCondition = condition;
- var gridParam = {caller: caller, condition: '',start:1,end:1000};
- this.GridUtil.getGridColumnsAndStore(this, 'common/singleGridPanel.action?', gridParam, "");
- this.callParent(arguments);
- },
- getMultiSelected: function(){
- var grid = this;
- grid.multiselected = [];
- 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){
- grid.multiselected.push(item);
- }
- });
- return Ext.Array.unique(grid.multiselected);
- },
- /**
- * 修改为selection改变时,summary也动态改变
- */
- summary: function(selected){
- var me = this,
- store = this.store,
- items = selected || store.data.items,
- value;
- Ext.each(me.columns, function(c){
- if(c.summaryType == 'sum'){
- value = store.getSum(c.dataIndex);
- me.down('tbtext[id=' + c.dataIndex + '_sum]').setText(c.header + '(sum):' + value);
- } else if(c.summaryType == 'count'){
- value = items.length;
- me.down('tbtext[id=' + c.dataIndex + '_count]').setText(c.header + '(count):' + value);
- } else if(c.summaryType == 'average'){
- value = store.getAverage(c.dataIndex);
- me.down('tbtext[id=' + c.dataIndex + '_average]').setText(c.header + '(average):' + value);
- }
- });
- },
- listeners: {
- 'headerfiltersapply': function(grid, filters) {
- if(this.allowFilter){
- var condition = null;
- for(var fn in filters){
- var value = filters[fn],f = grid.getHeaderFilterField(fn);
- if(!Ext.isEmpty(value)){
- if(f.filtertype) {
- if (f.filtertype == 'numberfield') {
- value = fn + "=" + value + " ";
- }
- } else {
- if(Ext.isDate(value)){
- value = Ext.Date.toString(value);
- value = fn + "=to_date('" + value + "','yyyy-MM-dd') ";
- } else {
- var exp_t = /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/,
- exp_d = /^(\d{4})\-(\d{2})\-(\d{2})$/;
- if(exp_d.test(value)){
- value = fn + "=to_date('" + value + "','yyyy-MM-dd') ";
- } else if(exp_t.test(value)){
- value = fn + "=to_date('" + value + "','yyyy-MM-dd HH24:mi:ss') ";
- } else{
- value = fn + " LIKE '%" + value + "%' ";
- }
- }
- }
- if(condition == null){
- condition = value;
- } else {
- condition = condition + " AND " + value;
- }
- }
- }
- this.filterCondition = condition;
- var QueryCondition=Ext.getCmp('dealform').getCondition();
- QueryCondition=QueryCondition!=""&&QueryCondition!=null?
- QueryCondition+(grid.defaultCondition!=""&&grid.defaultCondition!=null?" AND "+grid.defaultCondition:""):grid.defaultCondition;
- if(QueryCondition!=""&&QueryCondition!=null){
- QueryCondition= this.filterCondition!=""&&this.filterCondition!=null?QueryCondition+" AND "+this.filterCondition:QueryCondition;
- }else{
- QueryCondition= this.filterCondition!=""&&this.filterCondition!=null?this.filterCondition:QueryCondition;
- }
- this.GridUtil.loadNewStore(grid,{caller:caller,condition:QueryCondition, start: 1, end: 3000});
- } else {
- this.allowFilter = true;
- }
- return false;
- }
- },
- reconfigure: function(store, columns){
- //改写reconfigure方法
- var d = this.headerCt;
- if (this.columns.length <= 1 && columns) {//this.columns.length > 1表示grid的columns已存在,没必要remove再add
- d.suspendLayout = true;
- d.removeAll();
- d.add(columns);
- }
- if (store) {
- this.bindStore(store);
- } else {
- this.getView().refresh();
- }
- if (columns) {
- d.suspendLayout = false;
- this.forceComponentLayout();
- }
- this.fireEvent("reconfigure", this);
- }
- });
|