EmpTreegrid.js 6.0 KB

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