Ext.define('erp.view.common.JProcess.SetNodeGridPanel',{ extend: 'Ext.grid.Panel', alias: 'widget.SetNodeGridPanel', id: 'NodeGrid', emptyText : '无数据', title: '

所有节点

', columnLines : true, autoScroll : true, columns: [], keyValue:null, FlowCaller:null, BaseUtil: Ext.create('erp.util.BaseUtil'), GridUtil: Ext.create('erp.util.GridUtil'), selModel: Ext.create('Ext.selection.CheckboxModel',{ headerWidth: 0 }), plugins: [Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 1 })], requires: ['erp.view.core.grid.YnColumn'], menu:null, initComponent : function(){ this.getGridStore(this,this.keyValue,this.FlowCaller); this.callParent(arguments); }, dbfinds:[{ dbGridField: "em_code", field: "JP_EXTRAMAN", },{ dbGridField: "em_name", field: "JP_EXTRAMANNAME", }], getGridStore:function(grid,keyValue,caller){ Ext.Ajax.request({ url : basePath + 'common/getCurrentJnodes.action', params: { caller: caller, keyValue:keyValue, _noc:1 }, method : 'post', callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.success){ var griddata=localJson.data; var current=localJson.currentnode; var historynodes=localJson.nodes; var dojprocess=localJson.processs; var dojprocand=localJson.jprocands; var sel = Ext.Array.pluck(historynodes, 'jn_name'); var doj = Ext.Array.pluck(dojprocess,"jp_nodeName"); Ext.each(griddata, function(d, index){ if(Ext.Array.contains(sel, d.JP_NODENAME)){ d.STATUS='已审批'; }else if(Ext.Array.contains(doj, d.JP_NODENAME)){ d.STATUS='在进行'; }else if(d.JP_NODENAME==current.nodename){ d.STATUS='在进行'; }else if(Ext.Array.contains(dojprocand, d.JP_NODENAME)){ d.STATUS='在进行'; }else d.STATUS='未触发'; }); var store=Ext.create('Ext.data.Store',{ fields:['JP_ID','JP_PROCESSDEFID','JP_NODENAME','JP_NODEDEALMAN','JP_NODEDEALMANNAME','JP_NEWNODEDEALMAN','JP_NEWNODEDEALMANNAME','JP_CANEXTRA','JP_EXTRAMAN','JP_EXTRAMANNAME','STATUS'], data:griddata }); var columns=grid.getColumns(); grid.reconfigure(store,columns); } } }); }, loadNewStore:function(grid,caller,keyValue){ Ext.Ajax.request({ url : basePath + 'common/getCurrentJnodes.action', params: { caller: caller, keyValue:keyValue, _noc:1 }, method : 'post', callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.success){ var griddata=localJson.data; var current=localJson.currentnode; var historynodes=localJson.nodes; var dojprocess=localJson.processs; var dojprocand=localJson.jprocands; var sel = Ext.Array.pluck(historynodes, 'jn_name'); var doj = Ext.Array.pluck(dojprocess,"jp_nodeName"); Ext.each(griddata, function(d, index){ if(Ext.Array.contains(sel, d.JP_NODENAME)){ d.STATUS='已审批'; }else if(Ext.Array.contains(doj, d.JP_NODENAME)){ d.STATUS='在进行'; }else if(d.JP_NODENAME==current.nodename){ d.STATUS='在进行'; }else if(Ext.Array.contains(dojprocand, d.JP_NODENAME)){ d.STATUS='在进行'; }else d.STATUS='未触发'; }); grid.store.loadData(griddata); } } }); }, getColumns:function(){ return [{ text:'ID', dataIndex:'JP_ID', width:0, },{ cls : "x-grid-header-1", text: '流程版本', dataIndex: 'JP_PROCESSDEFID', width:0, readOnly:true },{ cls : "x-grid-header-1", text: '节点名称', dataIndex: 'JP_NODENAME', flex: 1, },{ cls : "x-grid-header-1", text:'节点处理人', dataIndex: 'JP_NODEDEALMAN', flex: 1, readOnly:true },{ cls : "x-grid-header-1", text:'处理人名称', dataIndex:'JP_NODEDEALMANNAME', flex:1, readOnly:true },{ cls : "x-grid-header-1", text:'设置处理人', dataIndex: 'JP_NEWNODEDEALMAN', flex:1, editor: { format:'', xtype: 'combo', editable:false, onTriggerClick:function(trigger){ var me=this; var parentgrid=Ext.getCmp('NodeGrid'),storedata=[],selecteddata=[]; var selected=parentgrid.getSelectionModel().getLastSelected(); var codevalue=selected.data['JP_NODEDEALMAN'].split(","); var namevalue=selected.data['JP_NODEDEALMANNAME'].split(","); Ext.Array.each(codevalue,function(item,index){ storedata.push({ emcode:item, emname:namevalue[index] }); }); if(selected.data['JP_NEWNODEDEALMAN']){ var selectcodevalue=selected.data['JP_NEWNODEDEALMAN'].split(","); var selectnamevalue=selected.data['JP_NEWNODEDEALMANNAME'].split(","); Ext.Array.each(selectcodevalue,function(item,index){ selecteddata.push({ emcode:item, emname:selectnamevalue[index] }); }); } if(parentgrid.menu==null){ parentgrid.menu=Ext.create('Ext.menu.Menu', { id : 'win-flow' + this.id, buttonAlign : 'center', ownerCt: me, width:200, renderTo: Ext.getBody(), style: { overflow: 'visible', }, items:[{ xtype:'gridpanel', width:200, frame:true, columnLines:true, height:250, id:'smallgrid', multiselected:new Array(), plugins:[Ext.create('erp.view.core.grid.HeaderFilter')], //hideHeaders:true, selModel: Ext.create('Ext.selection.CheckboxModel',{ ignoreRightMouseSelection : false, onRowMouseDown: function(view, record, item, index, e) {//改写的onRowMouseDown方法 var me = Ext.getCmp('smallgrid'); var bool = true; var items = me.selModel.getSelection(); Ext.each(items, function(item, index){ if(this.index == record.index){ bool = false; me.selModel.deselect(record); Ext.Array.remove(items, item); Ext.Array.remove(me.multiselected, record); } }); Ext.each(me.multiselected, function(item, index){ items.push(item); }); if(bool){ view.el.focus(); var checkbox = item.childNodes[0].childNodes[0].childNodes[0]; if(checkbox.getAttribute && checkbox.getAttribute('class') == 'x-grid-row-checker'){ me.multiselected.push(record); items.push(record); me.selModel.select(me.multiselected); } else { me.selModel.deselect(record); Ext.Array.remove(me.multiselected, record); } } }, onHeaderClick: function(headerCt, header, e) { if (header.isCheckerHd) { e.stopEvent(); var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on'); if (isChecked) { this.deselectAll(true); var grid = Ext.getCmp('smallgrid'); this.deselect(grid.multiselected); grid.multiselected = new Array(); var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements; Ext.each(els, function(el, index){ el.setAttribute('class','x-grid-row-checker'); }); header.el.removeCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个 } else { var grid = Ext.getCmp('smallgrid'); this.deselect(grid.multiselected); grid.multiselected = new Array(); var els = Ext.select('div[@class=x-grid-row-checker-checked]').elements; Ext.each(els, function(el, index){ el.setAttribute('class','x-grid-row-checker'); }); this.selectAll(true); header.el.addCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');//添加这个 } } } }), buttonAlign:'center', columns:[{ cls : "x-grid-header-1", text: '人员名称', dataIndex: 'emname', flex: 1, filter:{ xtype : "textfield" } },{ cls : "x-grid-header-1", text: '人员编号', dataIndex: 'emcode', flex: 1, filter:{ xtype : "textfield" } }], store:Ext.create('Ext.data.Store',{ fields:[{name:'emname'},{name:'emcode'}], data:storedata }), dockedItems: [{ buttonAlign:'center', xtype: 'toolbar', dock: 'bottom', items: ['->',{ xtype:'button', text:'确认', handler:function(btn){ var grid=btn.ownerCt.ownerCt; if(grid.multiselected.length<1){ Ext.Msg.alert('提示','请选择需要设置的审批人!'); }else { var newnodedealman="",newnodedealmanname=""; Ext.Array.each(grid.multiselected,function(item,index){ newnodedealman+=item.data['emcode']+","; newnodedealmanname+=item.data['emname']+","; }); var selected=parentgrid.getSelectionModel().getLastSelected(); selected.set('JP_NEWNODEDEALMAN',newnodedealman.substring(0,newnodedealman.lastIndexOf(","))); selected.set('JP_NEWNODEDEALMANNAME',newnodedealmanname.substring(0,newnodedealmanname.lastIndexOf(","))); parentgrid.menu.hide(); } } },{ xtype: 'button', text: '取消' , style :'margin-left:10px', handler:function(){ parentgrid.menu.hide(); } },'->'] }], }] }); }else Ext.getCmp('smallgrid').getStore().loadData(storedata); parentgrid.menu.alignTo(me.inputEl, 'tl-bl?'); parentgrid.menu.show(); var smallgrid=Ext.getCmp('smallgrid'); var selectitems=new Array(); Ext.Array.each(smallgrid.store.data.items,function(item){ Ext.Array.each(selecteddata,function(d0){ if(item.data['emcode']==d0['emcode']){ selectitems.push(item); return false; } }); }); smallgrid.multiselected=selectitems; smallgrid.selModel.select(selectitems); } }, renderer: function(val, meta, record){ if(!val){ val=""; } return '' + '' + val + ''; } },{ cls : "x-grid-header-1", text:'人员名称', dataIndex:'JP_NEWNODEDEALMANNAME', flex:1, readOnly:true, renderer: function(val, meta, record){ if(!val){ val=""; } return '' + '' + val + ''; } },{ cls : "x-grid-header-1", text:'额外人', dataIndex:'JP_EXTRAMAN', flex:1, dbfind:'Employee|em_code', editor:{ xtype:'dbfindtrigger', hideTrigger: false, name:'JP_EXTRAMAN', which:'grid', dbfind:'Employee|em_code', listeners:{ focus: function(t){ t.setHideTrigger(false); t.setReadOnly(false); var record = Ext.getCmp('NodeGrid').selModel.getLastSelected(); var canextra = record.data['JP_CANEXTRA']; if(canextra == null || canextra == '' || canextra=='0'){ showError("当前节点不允许指定额外处理人!"); t.setHideTrigger(true); t.setReadOnly(true); } } } } },{ cls:'x-grid-header-1', text:'额外人名', flex:1, dataIndex:'JP_EXTRAMANNAME', readOnly:true },{ cls:'x-grid-header-1', text:'额外指定', flex:1, dataIndex:'JP_CANEXTRA', readOnly:true, xtype:'yncolumn' },{ cls:'x-grid-header-1', text:'当前状态', logic:'ignore', flex:1, dataIndex:'STATUS', readOnly:true, renderer:function(val,mata,record){ if(val=='已审批'){ return '' + '' + val + ''; }else if(val=='在进行'){ return '' + '' + val + ''; }else { return ''+'' + val + ''; } } }]; } });