SysNavigation.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.ma.SysNavigation', {
  3. extend: 'Ext.app.Controller',
  4. views:[
  5. 'ma.SysNavigation','core.grid.SysTreeGrid'
  6. ],
  7. init:function(){
  8. var me = this;
  9. this.control({
  10. 'erpSysTreeGrid': {
  11. itemmousedown: function(selModel, record){
  12. var treegrid = Ext.getCmp('treegrid');
  13. treegrid.selModel.select(record);
  14. me.loadNode(selModel, record);
  15. },
  16. itemclick: function(selModel, record){
  17. var treegrid = Ext.getCmp('treegrid');
  18. treegrid.selModel.select(record);
  19. me.loadNode(selModel, record);
  20. },
  21. itemdbclick: function(selModel, record){
  22. var treegrid = Ext.getCmp('treegrid');
  23. treegrid.selModel.select(record);
  24. me.loadNode(selModel, record);
  25. }
  26. }
  27. });
  28. },
  29. loadNode: function(selModel, record){
  30. var me = this;
  31. if (!record.get('leaf')) {
  32. if(record.isExpanded() && record.childNodes.length > 0){//是根节点,且已展开
  33. record.collapse(true,true);//收拢
  34. me.flag = true;
  35. me.setParentNodes(selModel.ownerCt, record, false);
  36. } else {//未展开
  37. //看是否加载了其children
  38. if(record.childNodes.length == 0){
  39. //从后台加载
  40. var activeTab = me.getActiveTab();
  41. activeTab.setLoading(true);
  42. Ext.Ajax.request({//拿到tree数据
  43. url : basePath + 'ma/lazyTree.action',
  44. params: {
  45. parentId: record.data['id']
  46. },
  47. callback : function(options,success,response){
  48. activeTab.setLoading(false);
  49. var res = new Ext.decode(response.responseText);
  50. if(res.tree){
  51. var tree = res.tree;
  52. Ext.each(tree, function(t){
  53. t.sn_id = t.id;
  54. t.sn_parentid = t.parentId;
  55. t.sn_displayname = t.text;
  56. t.sn_detno = t.detno;
  57. t.sn_isleaf = t.leaf;
  58. t.sn_using = t.using;
  59. t.sn_tabtitle = t.text;
  60. t.sn_url = t.url;
  61. t.dirty = false;
  62. t.sn_deleteable = t.deleteable;
  63. t.sn_showmode = t.showMode;
  64. t.sn_logic = t.data.sn_logic;
  65. t.sn_limit = t.data.sn_limit;
  66. t.sn_caller = t.data.sn_caller;
  67. t.sn_addurl = t.data.sn_addurl;
  68. t.data = null;
  69. });
  70. record.appendChild(res.tree);
  71. record.expand(false, true);//展开
  72. Ext.each(record.childNodes, function(){
  73. this.dirty = false;
  74. });
  75. me.setParentNodes(selModel.ownerCt, record, true);
  76. } else if(res.exceptionInfo){
  77. showError(res.exceptionInfo);
  78. }
  79. }
  80. });
  81. } else {
  82. record.expand(false, true);//展开
  83. me.setParentNodes(selModel.ownerCt, record, true);
  84. }
  85. }
  86. }
  87. },
  88. setParentNodes: function(tree, record, isExpand){
  89. var grid = tree.ownerCt.down('grid'), data = new Array(), nodes = record.childNodes;
  90. Ext.each(nodes, function(node){
  91. data.push({
  92. sn_id: node.get('id'),
  93. sn_displayname: node.get('text'),
  94. sn_detno: node.get('sn_detno')
  95. });
  96. });
  97. grid.store.loadData(data);
  98. },
  99. getActiveTab: function(){
  100. var tab = null;
  101. if(Ext.getCmp("content-panel")){
  102. tab = Ext.getCmp("content-panel").getActiveTab();
  103. }
  104. if(!tab){
  105. var win = parent.Ext.ComponentQuery.query('window');
  106. if(win.length > 0){
  107. tab = win[win.length-1];
  108. }
  109. }
  110. if(!tab && parent.Ext.getCmp("content-panel"))
  111. tab = parent.Ext.getCmp("content-panel").getActiveTab();
  112. if(!tab && parent.parent.Ext.getCmp("content-panel"))
  113. tab = parent.parent.Ext.getCmp("content-panel").getActiveTab();
  114. return tab;
  115. }
  116. });