CompareBom.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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;
  39. Ext.Ajax.request({//拿到grid的columns
  40. url : basePath+"pm/bom/compareBom.action",
  41. params: {
  42. caller: caller,
  43. condition: values,
  44. bd_single:Ext.getCmp('bd_single').checked,
  45. bd_difbom:Ext.getCmp('bd_difbom').checked
  46. },
  47. method : 'post',
  48. callback : function(options,success,response){
  49. grid.setLoading(false);
  50. var res = new Ext.decode(response.responseText);
  51. if(res.exceptionInfo){
  52. showError(res.exceptionInfo);
  53. return;
  54. }
  55. if(res.columns){
  56. var limits = res.limits, limitArr = new Array();
  57. if(limits != null && limits.length > 0) {//权限外字段
  58. limitArr = Ext.Array.pluck(limits, 'lf_field');
  59. }
  60. Ext.each(res.columns, function(column, y){
  61. //power
  62. if(limitArr.length > 0 && Ext.Array.contains(limitArr, column.dataIndex)) {
  63. column.hidden = true;
  64. }
  65. //renderer
  66. //me.setRenderer(grid, column);
  67. //logictype
  68. //me.setLogicType(grid, column);
  69. });
  70. //data
  71. var data = [];
  72. if(!res.data || res.data.length == 2){
  73. } else {
  74. data = Ext.decode(res.data.replace(/,}/g, '}').replace(/,]/g, ']'));
  75. }
  76. //store
  77. var store = me.setStore(res.fields, data, grid.groupField, grid.necessaryField);
  78. //view
  79. if(grid.selModel.views == null){
  80. grid.selModel.views = [];
  81. }
  82. //dbfind
  83. if(res.dbfinds&&res.dbfinds.length > 0){
  84. grid.dbfinds = res.dbfinds;
  85. }
  86. //toolbar
  87. // me.setToolbar(grid, res.columns, res.necessaryField, limitArr);
  88. //reconfigure
  89. grid.reconfigure(store, res.columns);
  90. var form = Ext.ComponentQuery.query('form')[0];
  91. if(form){
  92. if(form.readOnly){
  93. grid.readOnly = true;//grid不可编辑
  94. }
  95. }
  96. } else {
  97. grid.hide();
  98. var form = Ext.ComponentQuery.query('form')[0];
  99. me.updateFormPosition(form);//字段较少时,修改form布局
  100. }
  101. }
  102. });
  103. },
  104. setStore: function(fields, data, groupField, necessaryField){
  105. if(!Ext.isChrome){
  106. Ext.each(fields, function(f){
  107. if(f.type == 'date'){
  108. f.dateFormat = 'Y-m-d H:m:s';
  109. }
  110. });
  111. }
  112. return Ext.create('Ext.data.Store', {
  113. fields: fields,
  114. data: data,
  115. groupField: groupField,
  116. getSum: function(records, field) {
  117. if (arguments.length < 2) {
  118. return 0;
  119. }
  120. var total = 0,
  121. i = 0,
  122. len = records.length;
  123. if(necessaryField) {
  124. for (; i < len; ++i) {//重写getSum,grid在合计时,只合计填写了必要信息的行
  125. var necessary = records[i].get(necessaryField);
  126. if(necessary != null && necessary != ''){
  127. total += records[i].get(field);
  128. }
  129. }
  130. } else {
  131. for (; i < len; ++i) {
  132. total += records[i].get(field);
  133. }
  134. }
  135. return total;
  136. },
  137. getCount: function() {
  138. if(necessaryField) {
  139. var count = 0;
  140. Ext.each(this.data.items, function(item){//重写getCount,grid在合计时,只合计填写了必要信息的行
  141. if(item.data[necessaryField] != null && item.data[necessaryField] != ''){
  142. count++;
  143. }
  144. });
  145. return count;
  146. }
  147. return this.data.items.length;
  148. }
  149. });
  150. },
  151. });