SysNavigation.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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_caller = t.data.sn_caller;
  66. t.data = null;
  67. });
  68. record.appendChild(res.tree);
  69. record.expand(false, true);//展开
  70. Ext.each(record.childNodes, function(){
  71. this.dirty = false;
  72. });
  73. me.setParentNodes(selModel.ownerCt, record, true);
  74. } else if(res.exceptionInfo){
  75. showError(res.exceptionInfo);
  76. }
  77. }
  78. });
  79. } else {
  80. record.expand(false, true);//展开
  81. me.setParentNodes(selModel.ownerCt, record, true);
  82. }
  83. }
  84. }
  85. },
  86. setParentNodes: function(tree, record, isExpand){
  87. var grid = tree.ownerCt.down('grid'), data = new Array(), nodes = record.childNodes;
  88. Ext.each(nodes, function(node){
  89. data.push({
  90. sn_id: node.get('id'),
  91. sn_displayname: node.get('text'),
  92. sn_detno: node.get('sn_detno')
  93. });
  94. });
  95. grid.store.loadData(data);
  96. },
  97. getActiveTab: function(){
  98. var tab = null;
  99. if(Ext.getCmp("content-panel")){
  100. tab = Ext.getCmp("content-panel").getActiveTab();
  101. }
  102. if(!tab){
  103. var win = parent.Ext.ComponentQuery.query('window');
  104. if(win.length > 0){
  105. tab = win[win.length-1];
  106. }
  107. }
  108. if(!tab && parent.Ext.getCmp("content-panel"))
  109. tab = parent.Ext.getCmp("content-panel").getActiveTab();
  110. if(!tab && parent.parent.Ext.getCmp("content-panel"))
  111. tab = parent.parent.Ext.getCmp("content-panel").getActiveTab();
  112. return tab;
  113. }
  114. });