StandardJobGrid.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. Ext.require('Ext.ux.CellDragDrop');
  2. Ext.define('erp.view.sys.hr.StandardJobGrid',{
  3. extend: 'Ext.grid.Panel',
  4. alias: 'widget.standardjobgrid',
  5. title:'标准岗位资料',
  6. columnLines: true,
  7. viewConfig: {
  8. stripeRows: true,
  9. plugins: {
  10. ptype: 'celldragdrop',
  11. applyEmptyText:false,
  12. dropBackgroundColor: Ext.themeName === 'neptune' ? '#a4ce6c' : 'green',
  13. noDropBackgroundColor: Ext.themeName === 'neptune' ? '#d86f5d' : 'red',
  14. enforceType: true,
  15. enableDrop :false
  16. }
  17. },
  18. listeners :{
  19. itemmousedown:function(view,record,item){
  20. var oCt=view.ownerCt.ownerCt,detailPanel=oCt.down('panel[itemId=detailPanel]');
  21. detailPanel.update({name:record.get('jo_orgName')+'→'+record.get('jo_name'),description:record.get('jo_description')});
  22. }
  23. },
  24. initComponent : function(){
  25. var me=this;
  26. me.columns=[{
  27. dataIndex:'jo_id',
  28. width:0,
  29. text:'ID'
  30. },Ext.create('Ext.grid.RowNumberer',{
  31. width:35
  32. }),{
  33. dataIndex:'jo_code',
  34. width:100,
  35. text:'岗位编号'
  36. },{
  37. dataIndex:'jo_name',
  38. width:120,
  39. text:'岗位名称',
  40. enableDrop:false,
  41. enableDrag:false
  42. },{
  43. dataIndex:'jo_orgName',
  44. width:120,
  45. text:'所属组织名称'
  46. },{
  47. dataIndex:'jo_orgId',
  48. width:0,
  49. text:'组织ID'
  50. }];
  51. me.store=Ext.create('Ext.data.Store',{
  52. fields:[{name:'jo_id',type:'number'},
  53. {name:'jo_code',type:'string'},
  54. {name:'jo_name',type:'string'},
  55. {name:'jo_orgcode',type:'string'},
  56. {name:'jo_orgName',type:'string'},
  57. {name:'jo_orgId',type:'int'},
  58. {name:'jo_description',type:'string'}],
  59. proxy: {
  60. type: 'ajax',
  61. url: basePath+'/hr/employee/getJobs.action',
  62. extraParams :{
  63. isStandard:1
  64. },
  65. reader: {
  66. type: 'json',
  67. root: 'jobs'
  68. }
  69. },
  70. autoLoad:true
  71. });
  72. this.callParent(arguments);
  73. },
  74. loadNewStore: function(grid, param){
  75. var me = this;
  76. param=param||grid.params;
  77. grid.setLoading(true);//loading...
  78. Ext.Ajax.request({//拿到grid的columns
  79. url : basePath + "common/loadNewGridStore.action",
  80. params: param,
  81. method : 'post',
  82. callback : function(options,success,response){
  83. grid.setLoading(false);
  84. var res = new Ext.decode(response.responseText);
  85. if(res.exceptionInfo){
  86. showError(res.exceptionInfo);return;
  87. }
  88. var data = res.data;
  89. if(!data || data.length == 0){
  90. grid.store.removeAll();
  91. me.add10EmptyItems(grid);
  92. } else {
  93. grid.store.loadData(data);
  94. }
  95. //自定义event
  96. grid.addEvents({
  97. storeloaded: true
  98. });
  99. grid.fireEvent('storeloaded', grid, data);
  100. }
  101. });
  102. },
  103. removeDetail:function(grid,record){
  104. grid.setLoading(true);
  105. Ext.Ajax.request({
  106. url : basePath + 'hr/employee/deleteJob.action',
  107. params: {
  108. id: record.get('jo_id')
  109. },
  110. method : 'post',
  111. callback : function(options,success,response){
  112. grid.setLoading(false);
  113. var localJson = new Ext.decode(response.responseText);
  114. if(localJson.exceptionInfo){
  115. showError(localJson.exceptionInfo);return;
  116. }
  117. if(localJson.success){
  118. showResult('提示','删除成功!');
  119. grid.getStore().remove(record);
  120. /* var orgTree = Ext.getCmp('orgtree'),
  121. selectionModel=orgTree.getSelectionModel(),
  122. selectedList = selectionModel.getSelection()[0];
  123. grid.getStore().load({params:{
  124. orgid:selectedList.get('or_id')
  125. }});*/
  126. }
  127. }
  128. });
  129. },
  130. setColumns:function(columns){
  131. Ext.Array.each(columns,function(column){
  132. if(column.xtype=='yncolumn'){
  133. column.xtype='checkcolumn';
  134. column.editor= {
  135. xtype: 'checkbox',
  136. cls: 'x-grid-checkheader-editor'
  137. };
  138. }
  139. });
  140. return columns;
  141. },
  142. DetailUpdateSuccess:function(btn,type){
  143. var tabP=Ext.getCmp('saletabpanel'),_activeTab=tabP.activeTab;
  144. _activeTab.loadNewStore(_activeTab,_activeTab.params);
  145. var win=btn.up('window');
  146. if(win) win.close();
  147. },
  148. isVal:function(){
  149. var records=this.getStore().getModifiedRecords(),cm=this.columns,necessaryCM=new Array(),flag=true;
  150. Ext.Array.each(cm,function(c){
  151. if(c.editor && !c.editor.allowBlank){
  152. necessaryCM.push(c.dataIndex);
  153. }
  154. });
  155. Ext.Array.each(records,function(r){
  156. var o=r.data;
  157. for( n in o){
  158. if(Ext.Array.contains(necessaryCM,n) && !o[n]){
  159. flag=false;
  160. return flag;
  161. }
  162. }
  163. });
  164. return flag;
  165. }
  166. })