Navigation.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. Ext.define('saas.view.main.Navigation', {
  2. extend: 'Ext.panel.Panel',
  3. xtype: 'main-navigation',
  4. ui: 'nav',
  5. reference: 'navigationTreeList',
  6. navCollapsed: false,
  7. cls: 'x-navpanel',
  8. initComponent: function() {
  9. var me = this;
  10. var view = new Ext.DataView({
  11. store : Ext.create('Ext.data.Store', {
  12. fields: ['text', 'iconCls'],
  13. data: [{
  14. text: '采购',
  15. iconCls: 'x-fa fa-shopping-basket',
  16. items: [{
  17. text: '制单',
  18. items: [{
  19. id: 'purchase',
  20. text: '采购单',
  21. formType:'purchase-purchase-formpanel',
  22. queryType: 'purchase-purchase-querypanel'
  23. }, {
  24. id: 'purchaseIn',
  25. text: '采购验收单',
  26. formType:'purchase-purchase-formpanel',
  27. queryType: 'purchase-purchaseIn-querypanel'
  28. },{
  29. id: 'purchaseOut',
  30. text: '采购验退单',
  31. formType:'purchase-purchaseOut-formpanel',
  32. queryType: 'purchase-purchaseOut-querypanel'
  33. },{
  34. id: 'form1',
  35. text: '测试-采购单明细界面',
  36. formType: 'test-order-formpanel'
  37. }, {
  38. id: 'myform',
  39. text: '测试-明细界面',
  40. formType: 'test-myform-formpanel'
  41. }, {
  42. id: 'myquerytest',
  43. text: '测试-采购单查询界面',
  44. queryType: 'test-query-querypanel',
  45. }]
  46. }, {
  47. text: '报表',
  48. items: [{
  49. text: '采购明细表'
  50. }, {
  51. text: '采购付款一览表'
  52. }]
  53. }]
  54. }, {
  55. text: '销售',
  56. iconCls: 'x-fa fa-shopping-cart',
  57. }],
  58. }),
  59. tpl : new Ext.XTemplate('<ul class="x-navlist">',
  60. '<tpl for=".">',
  61. '<li class="x-navitem">',
  62. '<div class="x-navitem-body">',
  63. '<div class="nav-inner-wrap" style="margin-left: 0px;">',
  64. '<div class="nav-inner-icon {iconCls}"></div>',
  65. '<div class="nav-inner-text">{text}</div>',
  66. '</div>',
  67. '<div class="x-navitem-menu" style="display: none;">',
  68. '<div class="nav-menu-body">',
  69. '<tpl for="items">',
  70. '<div class="menu">',
  71. '<h3 class="menu-title">{text}</h3>',
  72. '<ul class="menu-content">',
  73. '<tpl for="items">',
  74. '<li class="menuitem">',
  75. '<span class="item-text" data-id="{id}" data-text="{text}" data-type="form" data-formType="{formType}">',
  76. '{text}',
  77. '</span>',
  78. '<tpl if="{queryType}">',
  79. '<i class="item-icon" data-id="{id}" data-text="{text}" data-type="query" data-queryType="{queryType}">查询</i>',
  80. '</tpl>',
  81. '</li>',
  82. '</tpl>',
  83. '</ul>',
  84. '</div>',
  85. '</tpl>',
  86. '</div>',
  87. '</div>',
  88. '</li>',
  89. '</tpl>',
  90. '</ul>'),
  91. trackOver: true,
  92. overItemCls : 'x-navitem-over',
  93. selectedClass : 'x-navitem-selected',
  94. singleSelect : true,
  95. itemSelector : '.x-navitem',
  96. menuSeletor: '.menuitem',
  97. listeners: {
  98. itemmouseenter: me.toggleShowNavMenu,
  99. itemmouseleave: me.toggleShowNavMenu,
  100. itemclick: me.menuItemClick,
  101. scope: me
  102. }
  103. });
  104. Ext.apply(me, {
  105. items: [view]
  106. });
  107. me.view = view;
  108. me.callParent();
  109. },
  110. toggleShowNavMenu: function(view, record, item, index, e, eOpts) {
  111. var menuBody = item.getElementsByClassName('x-navitem-menu')[0];
  112. if(menuBody) {
  113. var display = menuBody.style.display,
  114. hidden = display == 'none';
  115. // if(hidden) {
  116. // menuBody.animate({ to: { opacity: 1} }, 500, function() {
  117. // console.log('hidden');
  118. // });
  119. // }else {
  120. // menuBody.animate({ to: { opacity: 0} }, 500, function() {
  121. // console.log('show');
  122. // });
  123. // }
  124. // menuBody.classList[ope]('x-hidden');
  125. menuBody.style.width = hidden ? 'auto' : '0';
  126. menuBody.style.display = hidden ? 'block' : 'none';
  127. // menuBody.animate({ opacity: o,opacity:1},1000);
  128. // menuBody.animate({dynamic: true, to: {display: newDisplay}});
  129. }
  130. },
  131. menuItemClick: function(view, record, item, index, e, eOpts) {
  132. var me = this,
  133. mainView = Ext.getCmp('mainView'),
  134. mainViewEl = mainView.getEl().dom,
  135. controller = mainView.getController(),
  136. target = e.target,
  137. clsName = target.className,
  138. dataset = target.dataset;
  139. if(clsName == 'item-text' || clsName == 'item-icon') {
  140. controller.setActiveTab(dataset);
  141. }
  142. // var menuBody = mainViewEl.getElementsByClassName('x-navitem-menu');
  143. // for(var i = 0; i < menuBody.length; i++) {
  144. // menuBody[i].style.display = 'none';
  145. // menuBody[i].style.width = 0;
  146. // }
  147. },
  148. });