CompareBom.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.bom.CompareBom', {
  3. extend : 'Ext.app.Controller',
  4. views : [ 'pm.bom.CompareBom.Viewport', 'common.query.GridPanel', 'pm.bom.CompareBom.Form', 'core.trigger.DbfindTrigger',
  5. 'core.form.FtField', 'core.form.ConDateField', 'core.form.YnField', 'core.form.FtDateField',
  6. 'core.form.MonthDateField','core.form.FtFindField', 'core.grid.YnColumn', 'core.grid.TfColumn',
  7. 'core.form.ConMonthDateField' ],
  8. init : function() {
  9. this.control({
  10. 'erpQueryFormPanel button[name=confirm]' : {
  11. click : function(btn) {
  12. }
  13. },
  14. 'erpQueryGridPanel' : {
  15. itemclick : this.onGridItemClick
  16. },
  17. 'erpQueryFormPanel1 button[name=query]': {
  18. click : function(btn) {
  19. var grid = Ext.getCmp('querygrid');
  20. var form = Ext.getCmp('queryform');
  21. var values = '';
  22. Ext.each(form.items.items, function(f){
  23. if(f.logic != null && f.logic != ''){
  24. if(f.value != null&&f.value != ''){
  25. values = values+f.value+",";
  26. }
  27. }
  28. });
  29. values = values.substring(0,values.length-1);
  30. this.getGridColumnsAndStore(grid,values);
  31. }
  32. }
  33. });
  34. },
  35. onGridItemClick : function(selModel, record) {
  36. },
  37. getGridColumnsAndStore: function(grid,values){
  38. var me = this,grid=Ext.getCmp('querygrid');
  39. grid.setLoading(true);//loading...
  40. Ext.Ajax.request({//拿到grid的columns
  41. url : basePath + "pm/bom/compareBom.action",
  42. params: {
  43. caller: caller,
  44. condition: values,
  45. bd_single:Ext.getCmp('bd_single').checked,
  46. bd_difbom:Ext.getCmp('bd_difbom').checked
  47. },
  48. method : 'post',
  49. callback : function(options,success,response){
  50. grid.setLoading(false);
  51. var res = new Ext.decode(response.responseText);
  52. if(res.exceptionInfo){
  53. showError(res.exceptionInfo);return;
  54. }
  55. var data = res.data != null ? Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']')) : [];
  56. if(!data || data.length == 0){
  57. grid.store.removeAll();
  58. me.add10EmptyItems(grid);
  59. } else {
  60. if(grid.buffered) {
  61. var ln = data.length, records = [], i = 0;
  62. for (; i < ln; i++) {
  63. records.push(Ext.create(grid.store.model.getName(), data[i]));
  64. }
  65. grid.store.purgeRecords();
  66. grid.store.cacheRecords(records);
  67. grid.store.totalCount = ln;
  68. grid.store.guaranteedStart = -1;
  69. grid.store.guaranteedEnd = -1;
  70. var a = grid.store.pageSize - 1;
  71. a = a > ln - 1 ? ln - 1 : a;
  72. grid.store.guaranteeRange(0, a);
  73. } else {
  74. grid.store.loadData(data);
  75. }
  76. }
  77. //自定义event
  78. grid.addEvents({
  79. storeloaded: true
  80. });
  81. grid.fireEvent('storeloaded', grid, data);
  82. }
  83. });
  84. },
  85. setStore: function(fields, data, groupField, necessaryField){
  86. if(!Ext.isChrome){
  87. Ext.each(fields, function(f){
  88. if(f.type == 'date'){
  89. f.dateFormat = 'Y-m-d H:m:s';
  90. }
  91. });
  92. }
  93. return Ext.create('Ext.data.Store', {
  94. fields: fields,
  95. data: data,
  96. groupField: groupField,
  97. getSum: function(records, field) {
  98. if (arguments.length < 2) {
  99. return 0;
  100. }
  101. var total = 0,
  102. i = 0,
  103. len = records.length;
  104. if(necessaryField) {
  105. for (; i < len; ++i) {//重写getSum,grid在合计时,只合计填写了必要信息的行
  106. var necessary = records[i].get(necessaryField);
  107. if(necessary != null && necessary != ''){
  108. total += records[i].get(field);
  109. }
  110. }
  111. } else {
  112. for (; i < len; ++i) {
  113. total += records[i].get(field);
  114. }
  115. }
  116. return total;
  117. },
  118. getCount: function() {
  119. if(necessaryField) {
  120. var count = 0;
  121. Ext.each(this.data.items, function(item){//重写getCount,grid在合计时,只合计填写了必要信息的行
  122. if(item.data[necessaryField] != null && item.data[necessaryField] != ''){
  123. count++;
  124. }
  125. });
  126. return count;
  127. }
  128. return this.data.items.length;
  129. }
  130. });
  131. },
  132. });