Toolbar.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. Ext.define('erp.view.common.datalist.Toolbar', {
  2. extend: 'Ext.toolbar.Paging',
  3. alias: 'widget.erpDatalistToolbar',
  4. doRefresh:function(){
  5. this.moveFirst();
  6. },
  7. items: ['-',{
  8. id: 'erpAddButton',
  9. name: 'add',
  10. tooltip: $I18N.common.button.erpAddButton,
  11. iconCls: 'x-button-icon-add',
  12. cls: 'x-btn-tb',
  13. width: 24,
  14. hidden: true,
  15. handler: function(btn){
  16. var g = btn.ownerCt.ownerCt, u = g.BaseUtil;
  17. u.onAdd(caller, u.getActiveTab().title, url);
  18. }
  19. },'-',{
  20. id:'datalistexport',
  21. name: 'export',
  22. tooltip: $I18N.common.button.erpExportButton,
  23. iconCls: 'x-button-icon-excel',
  24. hidden:getUrlParam('_noexport')==-1,
  25. cls: 'x-btn-tb',
  26. width: 24,
  27. handler : function(i) {
  28. var me = i.ownerCt;
  29. me.exportData(me.ownerCt, i);
  30. }
  31. },'-',{
  32. itemId: 'close',
  33. tooltip:$I18N.common.button.erpCloseButton,
  34. iconCls: 'x-button-icon-close',
  35. width: 24,
  36. cls: 'x-btn-tb',
  37. handler: function(){
  38. var main = parent.Ext.getCmp("content-panel");
  39. main.getActiveTab().close();
  40. }
  41. },'-',{
  42. iconCls: 'x-button-icon-query',
  43. tooltip: $I18N.common.tip.searchlist,
  44. width: 24,
  45. cls: 'x-btn-tb',
  46. id: 'searchlist'
  47. },'-',{
  48. iconCls: 'x-button-icon-detail',
  49. tooltip: $I18N.common.tip.relativelist,
  50. cls: 'x-btn-tb',
  51. width: 24,
  52. id: 'relativelist',
  53. handler: function(btn){
  54. if(relative){
  55. var url = window.location.href.toString().replace(caller, relative);
  56. if(url.indexOf('?') > -1) {
  57. url += '&';
  58. } else {
  59. url += '?';
  60. }
  61. url += '_noc=1';
  62. window.location.href = url;
  63. }
  64. }
  65. }],
  66. exportData : function(grid, btn, title, customFields) {
  67. if(!btn.locked) {
  68. var me = this;
  69. grid.BaseUtil.createExcel(caller, 'datalist', grid.getCondition(), title, null, customFields, grid);
  70. if(dataCount > 6000) {
  71. me.insert(me.items.items.length - 2, {
  72. name: 'warn-tip',
  73. xtype: 'tbtext',
  74. text: '数据量较大,请耐心等待,不要重复点击。为减少服务器压力,单次导出上限为5万条.'
  75. });
  76. btn.setDisabled(true);
  77. btn.locked = true;
  78. setTimeout(function(){
  79. me.down('tbtext[name=warn-tip]').destroy();
  80. btn.setDisabled(false);
  81. btn.locked = false;
  82. }, 8000);
  83. }
  84. }
  85. },
  86. updateInfo : function(){
  87. var page = this.child('#inputItem').getValue();
  88. var me = this,
  89. displayItem = me.child('#displayItem'),
  90. pageData = me.getPageData();
  91. pageData.fromRecord = (page-1)*pageSize+1;
  92. pageData.toRecord = page*pageSize > dataCount ? dataCount : page*pageSize;//
  93. pageData.total=dataCount;
  94. dataCount, msg;
  95. if (displayItem) {
  96. if (dataCount === 0) {
  97. msg = me.emptyMsg;
  98. } else {
  99. msg = Ext.String.format(
  100. me.displayMsg,
  101. pageData.fromRecord,
  102. pageData.toRecord,
  103. pageData.total
  104. );
  105. }
  106. displayItem.setText(msg);
  107. me.doComponentLayout();
  108. }
  109. },
  110. getPageData : function(){
  111. var store = this.store,
  112. totalCount = store.getTotalCount();
  113. totalCount=dataCount;
  114. return {
  115. total : totalCount,
  116. currentPage : store.currentPage,
  117. pageCount: Math.ceil(dataCount / pageSize),
  118. fromRecord: ((store.currentPage - 1) * store.pageSize) + 1,
  119. toRecord: Math.min(store.currentPage * store.pageSize, totalCount)
  120. };
  121. },
  122. onPagingKeyDown : function(field, e){
  123. var me = this, k = e.getKey(), grid = me.ownerCt,
  124. pageData = me.getPageData(),
  125. increment = e.shiftKey ? 10 : 1, pageNum = 0;
  126. if (k == e.RETURN) {
  127. e.stopEvent();
  128. pageNum = me.readPageFromInput(pageData);
  129. if (pageNum !== false) {
  130. pageNum = Math.min(Math.max(1, pageNum), pageData.pageCount);
  131. me.child('#inputItem').setValue(pageNum);
  132. if(me.fireEvent('beforechange', me, pageNum) !== false){
  133. page = pageNum;
  134. grid.getColumnsAndStore(caller, null, page, pageSize);
  135. }
  136. }
  137. } else if (k == e.HOME || k == e.END) {
  138. e.stopEvent();
  139. pageNum = k == e.HOME ? 1 : pageData.pageCount;
  140. field.setValue(pageNum);
  141. } else if (k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN) {
  142. e.stopEvent();
  143. pageNum = me.readPageFromInput(pageData);
  144. if (pageNum) {
  145. if (k == e.DOWN || k == e.PAGEDOWN) {
  146. increment *= -1;
  147. }
  148. pageNum += increment;
  149. if (pageNum >= 1 && pageNum <= pageData.pages) {
  150. field.setValue(pageNum);
  151. }
  152. }
  153. }
  154. me.updateInfo();
  155. fn(me, pageNum);
  156. },
  157. moveFirst : function(){
  158. var me = this;
  159. me.child('#inputItem').setValue(1);
  160. value = 1;
  161. page = value;
  162. me.ownerCt.getColumnsAndStore(caller, null, page, pageSize);
  163. me.updateInfo();
  164. fn(me,value);
  165. },
  166. movePrevious : function(){
  167. var me = this;
  168. me.child('#inputItem').setValue(me.child('#inputItem').getValue()-1);
  169. value = me.child('#inputItem').getValue();
  170. page = value;
  171. me.ownerCt.getColumnsAndStore(caller, null, page, pageSize);
  172. me.updateInfo();
  173. fn(me,value);
  174. },
  175. moveNext : function(){
  176. var me = this,
  177. last = me.getPageData().pageCount;
  178. total = last;
  179. me.child('#inputItem').setValue(me.child('#inputItem').getValue()+1);
  180. value = me.child('#inputItem').getValue();
  181. page = value;
  182. me.ownerCt.getColumnsAndStore(caller, null, page, pageSize);
  183. me.updateInfo();
  184. fn(me,value);
  185. },
  186. moveLast : function(){
  187. var me = this,
  188. last = me.getPageData().pageCount;
  189. total = last;
  190. me.child('#inputItem').setValue(last);
  191. value = me.child('#inputItem').getValue();
  192. page = value;
  193. me.ownerCt.getColumnsAndStore(caller, null, page, pageSize);
  194. me.updateInfo();
  195. fn(me,value);
  196. },
  197. onLoad : function() {
  198. var e = this, d, b, c, a;
  199. if (!e.rendered) {
  200. return
  201. }
  202. d = e.getPageData();
  203. b = d.currentPage;
  204. c = Math.ceil(dataCount / pageSize);
  205. a = Ext.String.format(e.afterPageText, isNaN(c) ? 1 : c);
  206. e.child("#afterTextItem").setText(a);
  207. e.child("#inputItem").setValue(b);
  208. e.child("#first").setDisabled(b === 1);
  209. e.child("#prev").setDisabled(b === 1);
  210. e.child("#next").setDisabled(b === c || c===1);//
  211. e.child("#last").setDisabled(b === c || c===1);
  212. e.child("#refresh").enable();
  213. e.updateInfo();
  214. e.fireEvent("change", e, d);
  215. },
  216. afterOnLoad : function() {
  217. var e = this, d, c, a;
  218. if (!e.rendered) {
  219. return
  220. }
  221. d = e.getPageData();
  222. b = d.currentPage;
  223. c = Math.ceil(dataCount / pageSize);
  224. a = Ext.String.format(e.afterPageText, isNaN(c) ? 1 : c);
  225. e.child("#afterTextItem").setText(a);
  226. e.updateInfo();
  227. e.fireEvent("change", e, d);
  228. e.child('#last').setDisabled(c <= 1 || page == c);
  229. e.child('#next').setDisabled(c <= 1 || page == c);
  230. if(Ext.getCmp("grid").noCount) {
  231. var m = e.down('#more');
  232. if(!m) {
  233. m = Ext.create('Ext.panel.Tool', {
  234. id: 'more',
  235. type: 'right',
  236. margin: '0 5 0 5',
  237. handler: function() {
  238. Ext.getCmp("grid").getCount(null, null, true);
  239. m.hide();
  240. Ext.getCmp("grid").noCount = false;
  241. }
  242. });
  243. e.add(m);
  244. } else {
  245. m.show();
  246. }
  247. }
  248. }
  249. });
  250. function fn(me,value){
  251. me.child('#last').setDisabled(value == total);
  252. me.child('#next').setDisabled(value == total);
  253. me.child('#first').setDisabled(value <= 1);
  254. me.child('#prev').setDisabled(value <= 1);
  255. }