CateStrTree.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. Ext.define('erp.view.common.CateTreepanelDbfind.CateStrTree',{
  2. extend: 'Ext.tab.Panel',
  3. alias: 'widget.cateStrDbfindTree',
  4. id: 'tree-panel',
  5. defaults: {
  6. bodyStyle:'background-color:#f1f1f1;',
  7. xtype: 'container'
  8. },
  9. border : false,
  10. enableDD : false,
  11. split: true,
  12. width : '100%',
  13. height: '100%',
  14. expandedNodes: [],
  15. bodyStyle: 'background-color:#f1f1f1;',
  16. mode: 'SINGLE',
  17. initComponent : function(){
  18. this.getTreeRootNode(0, key, caller);
  19. this.callParent(arguments);
  20. if (trigger.mode) {
  21. this.mode = trigger.mode;
  22. }
  23. },
  24. getTreeRootNode: function(parentid, key, caller){
  25. var me = this;
  26. Ext.Ajax.request({//拿到tree数据
  27. url : basePath + 'common/getAllCateTree.action',
  28. params: {
  29. key: key,
  30. caller: caller1
  31. },
  32. callback : function(options, success, response){
  33. var res = new Ext.decode(response.responseText);
  34. if(res.success){
  35. var data = res.data, keys = Ext.Object.getKeys(data), title = '', d = {};
  36. for(var i in keys) {
  37. title = keys[i];
  38. d = data[title];
  39. if(d) {
  40. me.add({
  41. title: title,
  42. items: [{
  43. xtype: 'treepanel',
  44. height: '100%',
  45. singleExpand: true,
  46. rootVisible: false,
  47. containerScroll : true,
  48. autoScroll: false,
  49. useArrows: true,
  50. cls: 'custom',
  51. store: Ext.create('Ext.data.TreeStore', {
  52. fields: me.treefields,
  53. root : {
  54. text: 'root',
  55. expanded: true,
  56. children: d
  57. }
  58. }),
  59. columns: me.treecolumns,
  60. listeners: {
  61. checkchange: function(record, b) {
  62. var ts = me.query('treepanel');
  63. if(me.mode == 'SINGLE' && b) {
  64. Ext.each(ts, function(t){
  65. var ch = t.getChecked();
  66. Ext.each(ch, function(c){
  67. if(c.id != record.id) {
  68. c.set('checked', false);
  69. }
  70. });
  71. });
  72. }
  73. }
  74. }
  75. }]
  76. });
  77. }
  78. }
  79. if(res.findToUi){
  80. me.dbfinds = res.findToUi;
  81. }
  82. } else if(res.exceptionInfo){
  83. showError(res.exceptionInfo);
  84. }
  85. }
  86. });
  87. },
  88. listenerNode: function(node){
  89. var me = this;
  90. var Node = node || Ext.getCmp('tree-panel').store.tree.root;
  91. Ext.each(Node,function(e){
  92. e.on('beforecollapse',function(p,o){
  93. });
  94. if(e.data['leaf'] == false){
  95. me.listenerNode(e);
  96. }
  97. });
  98. },
  99. openCloseFun: function(){
  100. var o = Ext.getCmp("open");
  101. var c = Ext.getCmp("close");
  102. var tree = Ext.getCmp('tree-panel');
  103. if(o.hidden==false&&c.hidden==true){
  104. tree.expandAll();
  105. o.hide();
  106. c.show();
  107. }else{
  108. tree.collapseAll();
  109. o.show();
  110. c.hide();
  111. }
  112. },
  113. listeners: {//滚动条有时候没反应,添加此监听器
  114. scrollershow: function(scroller) {
  115. if (scroller && scroller.scrollEl) {
  116. scroller.clearManagedListeners();
  117. scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
  118. }
  119. },
  120. //单选
  121. checkchange: function(node, checked){
  122. var tree = Ext.getCmp('tree-panel');
  123. var checkedList = tree.getChecked();
  124. Ext.each(checkedList,function(tr,index){
  125. tr.set('checked', false);
  126. });
  127. node.set('checked', true);
  128. }
  129. },
  130. /**
  131. * 找到所有已展开的节点,包括当前被选中的节点
  132. * @param record 当前被选中的节点
  133. */
  134. getExpandedItems: function(record){
  135. var me = this;
  136. me.getRecordParents(record);
  137. if(record.isLeaf()){
  138. me.expandedNodes.push(record);
  139. }
  140. },
  141. getRecordParents: function(record, parent){
  142. var me = this;
  143. if(!parent){
  144. parent = me.store.tree.root;
  145. me.expandedNodes = [];
  146. }
  147. if(parent.childNodes.length > 0){
  148. Ext.each(parent.childNodes, function(){
  149. if(this.isExpanded()){
  150. me.expandedNodes.push(this);
  151. if(this.childNodes.length > 0){
  152. me.getRecordParents(record, this);
  153. }
  154. }
  155. });
  156. }
  157. },
  158. getExpandItem: function(root){
  159. var me = this;
  160. if(!root){
  161. root = this.store.tree.root;
  162. }
  163. var node = null;
  164. if(root.childNodes.length > 0){
  165. Ext.each(root.childNodes, function(){
  166. if(this.isExpanded()){
  167. node = this;
  168. if(this.childNodes.length > 0){
  169. var n = me.getExpandItem(this);
  170. node = n == null ? node : n;
  171. }
  172. }
  173. });
  174. }
  175. return node;
  176. },
  177. getChecked: function() {
  178. var trees = this.query('treepanel'), records = new Array();
  179. Ext.each(trees, function(t){
  180. var c = t.getChecked();
  181. if(c.length > 0) {
  182. records = c;
  183. }
  184. });
  185. return records;
  186. },
  187. treefields: [{
  188. name: 'ca_id',
  189. type: 'int'
  190. },'ca_code','ca_pcode','ca_name','ca_description','ca_class','currency','ca_asstype','ca_assname'],
  191. treecolumns: [{
  192. dataIndex : 'ca_code',
  193. xtype: 'treecolumn',
  194. header: '科目',
  195. flex: 1,
  196. renderer: function(val, meta, record) {
  197. return record.raw.data.ca_code;
  198. }
  199. },{
  200. dataIndex : 'ca_description',
  201. header: '描述',
  202. flex: 2,
  203. renderer: function(val, meta, record) {
  204. return record.raw.data.ca_description;
  205. }
  206. },{
  207. dataIndex : 'ca_currency',
  208. header: '外币',
  209. flex: 0.5,
  210. renderer: function(val, meta, record) {
  211. return record.raw.data.ca_currency;
  212. }
  213. },{
  214. dataIndex : 'ca_assname',
  215. header: '辅助核算',
  216. flex: 2,
  217. renderer: function(val, meta, record) {
  218. return record.raw.data.ca_assname;
  219. }
  220. }]
  221. });