Navigation.js 6.1 KB

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