OrgTreePanel.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. Ext.define('erp.view.sys.hr.OrgTreePanel', {
  2. extend: 'Ext.tree.Panel',
  3. id:'orgtree',
  4. alias: 'widget.orgtreepanel',
  5. //collapsible: true,
  6. useArrows: true,
  7. rootVisible: false,
  8. multiSelect: true,
  9. title: '组织资料',
  10. viewConfig: {stripeRows:true},
  11. initComponent: function(config) {
  12. var me=this;
  13. me.store=Ext.create('Ext.data.TreeStore', {
  14. storeId: 'hrorgstore',
  15. fields: [{name:"or_id",type:"number"},
  16. {name:"or_code",type:"string"},
  17. {name:"or_name",type:"string"},
  18. {name:'or_departmentcode',type:"string"},
  19. {name:"or_department",type:"string"}],
  20. root : {
  21. text: 'root',
  22. id: 'root',
  23. expanded: true
  24. },
  25. listeners:{
  26. beforeexpand:Ext.bind(me.handleSpeExpandClick, me)
  27. }
  28. });
  29. me.columns=[{
  30. xtype: 'treecolumn',
  31. text: '组织编号',
  32. width: 200,
  33. sortable: true,
  34. dataIndex: 'or_code',
  35. //locked: true,
  36. editor: {
  37. xtype: 'textfield',
  38. selectOnFocus: true,
  39. allowOnlyWhitespace: false
  40. }
  41. },{
  42. text: '组织名称',
  43. width: 150,
  44. dataIndex: 'or_name',
  45. sortable: true,
  46. flex:1,
  47. editor: {
  48. xtype: 'textfield',
  49. selectOnFocus: true,
  50. allowOnlyWhitespace: false
  51. }
  52. },{
  53. text:'部门编号',
  54. width: 150,
  55. dataIndex:'or_departmentcode',
  56. sortable:true,
  57. editor: {
  58. xtype:'dbfindtrigger',
  59. dbfind:'Department|dp_code',
  60. dbCaller:'HrOrg',
  61. selectOnFocus: true,
  62. allowOnlyWhitespace: false,
  63. autoDbfind:false,
  64. listeners:{
  65. 'aftertrigger':function(trigger){
  66. /**
  67. * 放大镜触发编辑事件有问题
  68. */
  69. var orgTree=trigger.owner,selectionModel = orgTree.getSelectionModel(),
  70. record = selectionModel.getSelection()[0];
  71. if(trigger.wasDirty){
  72. orgTree.updateRecord(record);
  73. }
  74. }
  75. }
  76. },
  77. flex:1
  78. },{
  79. text:'部门名称',
  80. width: 150,
  81. dataIndex:'or_department',
  82. sortable:true,
  83. editor: {
  84. xtype: 'textfield',
  85. selectOnFocus: true,
  86. allowOnlyWhitespace: false
  87. },
  88. flex:1
  89. },{
  90. xtype: 'actioncolumn',
  91. width: 40,
  92. icon:basePath+'jsps/sys/images/deletetree.png',
  93. iconCls: 'x-hidden',
  94. renderer :function(val, meta, record){
  95. meta.tdCls = record.get('cls');
  96. meta.tdAttr = record.get('leaf')?'data-qtip="新增'+record.get('text')+'"':'data-qtip="删除组织"';
  97. },
  98. handler: Ext.bind(me.handleRemoveClick, me)
  99. },{
  100. text: '组织ID',
  101. width: 0,
  102. dataIndex: 'or_id',
  103. //sortable: true
  104. }];
  105. me.plugins = [me.cellEditingPlugin = Ext.create('Ext.grid.plugin.CellEditing',{
  106. clicksToEdit:1,
  107. listeners:{
  108. 'edit':function(editor,e,Opts){
  109. if(e.originalValue!=e.value && e.value){
  110. me.updateRecord(e.record);
  111. }
  112. }
  113. }
  114. })];
  115. this.callParent(arguments);
  116. this.getTreeGridNode({parentId: 0});
  117. },
  118. dbfinds:[{dbGridField:'dp_code',field:'or_departmentcode'},
  119. {dbGridField:'dp_name',field:'or_department'}],
  120. getTreeGridNode: function(param){
  121. var me = this;
  122. Ext.Ajax.request({//拿到tree数据
  123. url : basePath + 'hr/getTreeNode.action',
  124. params: param,
  125. callback : function(options,success,response){
  126. var res = new Ext.decode(response.responseText);
  127. if(res.result){
  128. var tree = res.result;
  129. Ext.each(tree, function(t){
  130. t.or_id = t.id;
  131. t.or_code=t.data.or_code;
  132. t.or_name=t.data.or_name;
  133. t.or_department=t.data.or_department;
  134. t.or_departmentcode=t.data.or_departmentcode;
  135. t.data = null;
  136. });
  137. me.store.setRootNode({
  138. text: 'root',
  139. id: 'root',
  140. expanded: true,
  141. children: tree
  142. });
  143. Ext.each(me.store.tree.root.childNodes, function(){
  144. this.dirty = false;
  145. });
  146. } else if(res.exceptionInfo){
  147. showError(res.exceptionInfo);
  148. }
  149. }
  150. });
  151. },
  152. handleRemoveClick: function(gridView, rowIndex, colIndex, column, e) {
  153. this.fireEvent('removeclick', gridView, rowIndex, colIndex, column, e);
  154. },
  155. handleSpeExpandClick: function(record) {
  156. if(record.get('id')!='root'){
  157. this.fireEvent('speexpandclick', record);
  158. }
  159. },
  160. updateRecord:function(record){
  161. var update={
  162. or_id:record.data.or_id,
  163. or_code:record.data.or_code,
  164. or_name:record.data.or_name,
  165. or_department:record.data.or_department,
  166. or_departmentcode:record.data.or_departmentcode
  167. };
  168. Ext.Ajax.request({
  169. url:basePath+'hr/employee/updateHrOrg.action',
  170. params: {
  171. formStore:unescape(escape(Ext.JSON.encode(update)))
  172. },
  173. method : 'post',
  174. callback : function(options,success,response){
  175. var local=Ext.decode(response.responseText);
  176. if(local.success) {
  177. showResult('提示','修改成功!');
  178. record.commit();
  179. }else {
  180. showResult('提示',local.exceptionInfo);
  181. }
  182. }
  183. });
  184. }
  185. });