EmpTreegrid.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. Ext.define('erp.view.common.EmpDbfind.EmpTreegrid',{
  2. extend: 'Ext.tree.Panel',
  3. alias: 'widget.emptreegrid',
  4. id: 'emptreegrid',
  5. singleExpand: true,
  6. rootVisible: false,
  7. containerScroll : true,
  8. autoScroll: false,
  9. useArrows: true,
  10. cls: 'custom',
  11. bodyStyle:'background-color:#f1f1f1;',
  12. initComponent : function(){
  13. this.getEmployeeTree();
  14. this.callParent(arguments);
  15. },
  16. getEmployeeTree: function(parentid, key, caller){
  17. var me = this;
  18. me.setLoading(true);
  19. Ext.Ajax.request({
  20. url : basePath + 'hr/employee/tree.action',
  21. timeout:60000,
  22. callback : function(options, success, response){
  23. if(success) {
  24. var res = new Ext.decode(response.responseText);
  25. if(res.success){
  26. me.getRootNode().appendChild(res.data);
  27. me.setLoading(false);
  28. } else if(res.exceptionInfo){
  29. showError(res.exceptionInfo);
  30. }
  31. } else {
  32. me.setLoading(false);
  33. }
  34. }
  35. });
  36. },
  37. store: Ext.create('Ext.data.TreeStore', {
  38. fields: [{
  39. name: 'em_id',
  40. type: 'int'
  41. },{
  42. name: 'em_defaultorid',
  43. type: 'int'
  44. },{
  45. name: 'em_defaulthsid',
  46. type: 'int'
  47. },'em_code','em_name','em_depart','em_defaultorname','em_position','em_mobile','em_uu'],
  48. root : {
  49. text: 'root',
  50. expanded: true
  51. }
  52. }),
  53. columns: [{
  54. text: '组织机构',
  55. xtype: 'treecolumn',
  56. flex: 1,
  57. dataIndex: 'em_defaultorname',
  58. renderer: function(val, meta, record) {
  59. var d = record.data.data || record.raw.data;
  60. return d.or_name;
  61. },
  62. filter: {
  63. xtype: 'textfield'
  64. }
  65. }, {
  66. text: '岗位名称',
  67. flex: 1.5,
  68. dataIndex: 'em_position',
  69. renderer: function(val, meta, record) {
  70. var d = record.data.data || record.raw.data;
  71. return d.em_position;
  72. },
  73. filter: {
  74. xtype: 'textfield'
  75. }
  76. }, {
  77. text: '员工编号',
  78. flex: 1,
  79. dataIndex: 'em_code',
  80. renderer: function(val, meta, record) {
  81. var d = record.data.data || record.raw.data;
  82. return d.em_code;
  83. },
  84. filter: {
  85. xtype: 'textfield'
  86. }
  87. }, {
  88. text: '员工姓名',
  89. flex: 1,
  90. dataIndex: 'em_name',
  91. renderer: function(val, meta, record) {
  92. var d = record.data.data || record.raw.data;
  93. return d.em_name;
  94. },
  95. filter: {
  96. xtype: 'textfield'
  97. }
  98. }, {
  99. text: '手机号',
  100. flex: 1.5,
  101. dataIndex: 'em_mobile',
  102. renderer: function(val, meta, record) {
  103. var d = record.data.data || record.raw.data;
  104. return d.em_mobile;
  105. },
  106. filter: {
  107. xtype: 'textfield'
  108. }
  109. }, {
  110. text: 'UU号',
  111. flex: 1,
  112. dataIndex: 'em_uu',
  113. renderer: function(val, meta, record) {
  114. var d = record.data.data || record.raw.data;
  115. return d.em_uu;
  116. },
  117. filter: {
  118. xtype: 'textfield'
  119. }
  120. }],
  121. listeners: {
  122. afterrender: function() {
  123. this.applyFilter();
  124. },
  125. checkchange: function(record, b) {
  126. },
  127. scrollershow: function(scroller) {
  128. if (scroller && scroller.scrollEl) {
  129. scroller.clearManagedListeners();
  130. scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
  131. }
  132. }
  133. },
  134. mixins: {
  135. treeFilter: 'erp.view.common.EmpDbfind.TreeFilter'
  136. },
  137. applyFilter: function() {
  138. var columns = this.view.headerCt.getGridColumns(true);
  139. this.filterContainers = new Array();
  140. for(var c=0; c < columns.length; c++) {
  141. var column = columns[c];
  142. if(column.filter){
  143. var filterContainerConfig = {
  144. id: column.id + '-filtersContainer',
  145. cls: this.filterContainerCls,
  146. layout: 'anchor',
  147. bodyStyle: {'background-color': 'transparent', 'height': 'auto'},
  148. border: false,
  149. width: 500,
  150. listeners: {
  151. scope: this,
  152. element: 'el',
  153. mousedown: function(e){
  154. e.stopPropagation();
  155. },
  156. click: function(e){
  157. e.stopPropagation();
  158. },
  159. keydown: function(e){
  160. e.stopPropagation();
  161. },
  162. keypress: function(e){
  163. e.stopPropagation();
  164. if(e.getKey() == Ext.EventObject.ENTER)
  165. {
  166. this.onFilterContainerEnter();
  167. }
  168. },
  169. keyup: function(e){
  170. e.stopPropagation();
  171. }
  172. },
  173. items: []
  174. };
  175. var fca = [].concat(column.filter);
  176. for(var ci = 0; ci < fca.length; ci++){
  177. var fc = fca[ci];
  178. Ext.applyIf(fc, {
  179. filterName: column.dataIndex,
  180. fieldLabel: column.text || column.header,
  181. hideLabel: fca.length == 1
  182. });
  183. Ext.apply(fc, {
  184. cls: this.filterFieldCls,
  185. fieldStyle: 'background: #eee;',
  186. itemId: fc.filterName,
  187. focusCls: 'x-form-field-cir',
  188. anchor: '-1'
  189. });
  190. var filterField = Ext.ComponentManager.create(fc);
  191. filterField.column = column;
  192. filterContainerConfig.items.push(filterField);
  193. }
  194. var filterContainer = Ext.create('Ext.container.Container', filterContainerConfig);
  195. filterContainer.render(column.el);
  196. column.setPadding = Ext.Function.createInterceptor(column.setPadding, function(h){return false;});
  197. this.filterContainers = Ext.Array.merge(this.filterContainers, filterContainer.items.items);
  198. }
  199. }
  200. },
  201. onFilterContainerEnter: function() {
  202. this.clearFilter();
  203. var me = this;
  204. Ext.each(this.filterContainers, function(f){
  205. if(!Ext.isEmpty(f.value)) {
  206. me.filterBy(f.value, f.filterName);
  207. }
  208. });
  209. }
  210. });