ProdResource.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.product.ProdResource', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil', 'erp.util.RenderUtil'],
  5. views:[
  6. 'common.query.Viewport', 'pm.make.SaleResourceGrid', 'common.query.Form', 'core.form.MultiField',
  7. 'core.trigger.DbfindTrigger','core.form.FtField','core.form.FtFindField','core.form.ConDateField',
  8. 'core.trigger.TextAreaTrigger','core.grid.YnColumn', 'core.form.MonthDateField','core.button.Import','core.button.ImportAll'
  9. ],
  10. init:function(){
  11. var me = this;
  12. me.resized = false;
  13. this.control({
  14. 'button[id=query]':{
  15. beforerender:function(btn){
  16. btn.handler=function(){
  17. var form=btn.ownerCt.ownerCt;
  18. if(form){
  19. var condition=form.spellCondition(urlcondition);
  20. if(!Ext.isEmpty(condition)) {
  21. var grid=Ext.getCmp('grid');
  22. Ext.create('erp.util.GridUtil').loadNewStore(grid,{caller:caller,condition:condition});
  23. }
  24. }
  25. };
  26. }
  27. },
  28. 'erpQueryGridPanel':{
  29. storeloaded:function (grid){
  30. var count=grid.store.prefetchData.items.length;
  31. Ext.getCmp('gridcount').setText('总条数:'+count);
  32. },
  33. afterrender:function (grid){
  34. var count=grid.store.prefetchData.items.length;
  35. Ext.getCmp('gridcount').setText('总条数:'+count);
  36. }
  37. },
  38. 'button[id=close]':{
  39. afterrender:function(btn){
  40. btn.ownerCt.insert(2,{
  41. xtype:'erpImportButton'
  42. });
  43. btn.ownerCt.insert(2,{
  44. xtype:'erpImportAllButton'
  45. });
  46. }
  47. },
  48. 'erpImportButton':{
  49. click:function(btn){
  50. me.vastDeal();
  51. }
  52. },
  53. 'erpImportAllButton':{
  54. click:function(btn){
  55. //全部装载会选不中所有数据
  56. var form=btn.ownerCt.ownerCt;
  57. var panelId=getUrlParam('panelId');
  58. var id = getUrlParam('keyValue');
  59. var condition=form.spellCondition(urlcondition);
  60. var url ,ds_caller,params,ds_condition;
  61. url = 'scm/product/loadAllProd.action';
  62. ds_caller = 'ProductBatchUUId';
  63. params = {pub_emid:id,condition:condition,caller:caller};
  64. ds_condition = 'pub_emid='+id;
  65. if(form){
  66. var main = parent.Ext.getCmp("content-panel");
  67. main.getActiveTab().setLoading(true);
  68. Ext.Ajax.request({
  69. method:'post',
  70. url:basePath+url,
  71. params:params,
  72. callback : function(options,success,response){
  73. main.getActiveTab().setLoading(false);
  74. var localJson = new Ext.decode(response.responseText);
  75. if(localJson.exceptionInfo){
  76. var str = localJson.exceptionInfo;
  77. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  78. str = str.replace('AFTERSUCCESS', '');
  79. grid.multiselected = new Array();
  80. Ext.getCmp('dealform').onQuery();
  81. }
  82. showError(str);return;
  83. }
  84. if(localJson.success){
  85. if(localJson.log){
  86. showMessage("提示", localJson.log);
  87. }
  88. Ext.Msg.alert("提示", "处理成功!", function(){
  89. var panel=parent.Ext.getCmp(panelId);
  90. main.getActiveTab().close();
  91. var loadgrid=panel.currentGrid;
  92. loadgrid.GridUtil.loadNewStore(loadgrid,{caller:ds_caller,condition:ds_condition});
  93. main.setActiveTab(panel);
  94. });
  95. }
  96. }
  97. });
  98. }
  99. }
  100. }
  101. });
  102. },
  103. resize: function(form, grid){
  104. if(!this.resized && form && grid && form.items.items.length > 0){
  105. var height = window.innerHeight;
  106. if(Ext.isIE){
  107. height = screen.height*0.75;
  108. }
  109. var cw = 0;
  110. Ext.each(form.items.items, function(){
  111. if(!this.hidden && this.xtype != 'hidden') {
  112. cw += this.columnWidth;
  113. }
  114. });
  115. cw = Math.ceil(cw);
  116. if(cw == 0){
  117. cw = 5;
  118. } else if(cw > 2 && cw <= 5){
  119. cw -= 1;
  120. } else if(cw > 5 && cw < 8){
  121. cw = 4;
  122. }
  123. cw = Math.min(cw, 5);
  124. form.setHeight(height*cw/10 + 10);
  125. grid.setHeight(height*(10 - cw)/10 - 10);
  126. this.resized = true;
  127. }
  128. },
  129. countGrid: function(){
  130. //重新计算合计栏值
  131. var grid = Ext.getCmp('querygrid');
  132. Ext.each(grid.columns, function(column){
  133. if(column.summary){
  134. var sum = 0;
  135. Ext.each(grid.store.data.items, function(item){
  136. if(item.value != null && item.value != ''){
  137. sum += Number(item.value);
  138. }
  139. });
  140. Ext.getCmp(column.dataIndex + '_sum').setText(column.text + '(sum):' + sum);
  141. } else if(column.average) {
  142. var average = 0;
  143. Ext.each(grid.store.data.items, function(item){
  144. if(item.value != null && item.value != ''){
  145. average += Number(item.value);
  146. }
  147. });
  148. average = average/grid.store.data.items.length;
  149. Ext.getCmp(column.dataIndex + '_average').setText(column.text + '(average):' + average);
  150. } else if(column.count) {
  151. var count = 0;
  152. Ext.each(grid.store.data.items, function(item){
  153. if(item.value != null && item.value != ''){
  154. count++;
  155. }
  156. });
  157. Ext.getCmp(column.dataIndex + '_count').setText(column.text + '(count):' + count);
  158. }
  159. });
  160. },
  161. vastDeal: function(type){
  162. var url = 'scm/product/loadProd.action';
  163. var id = getUrlParam('keyValue');
  164. var params = new Object();
  165. params.caller = caller;
  166. params.pub_emid = id;
  167. ds_caller = 'ProductBatchUUId';
  168. ds_condition = 'pub_emid='+id;
  169. var grid = Ext.getCmp('grid');
  170. var form = Ext.getCmp('queryform');
  171. var panelId=getUrlParam('panelId');
  172. var records =null;
  173. if(type && type=='all'){
  174. records=Ext.Array.unique(grid.getStore().data.items);
  175. }else {
  176. var items = grid.selModel.getSelection();
  177. Ext.each(items, function(item, index){
  178. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  179. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  180. item.index = this.data[grid.keyField];
  181. grid.multiselected.push(item);
  182. }
  183. });
  184. records = Ext.Array.unique(grid.multiselected);
  185. }
  186. if(records.length > 0){
  187. var data = new Array();
  188. var bool = false;
  189. Ext.each(records, function(record, index){
  190. var f = form.fo_detailMainKeyField;
  191. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  192. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  193. ||(f && this.data[f] != null && this.data[f] != ''
  194. && this.data[f] != '0' && this.data[f] != 0)){
  195. bool = true;
  196. var o = new Object();
  197. if(grid.keyField){
  198. o[grid.keyField] = record.data[grid.keyField];
  199. } else {
  200. params.id[index] = record.data[form.fo_detailMainKeyField];
  201. }
  202. if(grid.toField){
  203. Ext.each(grid.toField, function(f, index){
  204. var v = Ext.getCmp(f).value;
  205. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  206. o[f] = v;
  207. }
  208. });
  209. }
  210. if(grid.necessaryFields){
  211. Ext.each(grid.necessaryFields, function(f, index){
  212. var v = record.data[f];
  213. if(Ext.isDate(v)){
  214. v = Ext.Date.toString(v);
  215. }
  216. o[f] = v;
  217. });
  218. }
  219. data.push(o);
  220. }
  221. });
  222. if(bool){
  223. params.data = unescape(Ext.JSON.encode(data).replace(/\\/g,"%"));
  224. params._noc=1;
  225. var main = parent.Ext.getCmp("content-panel");
  226. main.getActiveTab().setLoading(true);//loading...
  227. Ext.Ajax.request({
  228. url : basePath + url,
  229. params: params,
  230. method : 'post',
  231. callback : function(options,success,response){
  232. main.getActiveTab().setLoading(false);
  233. var localJson = new Ext.decode(response.responseText);
  234. if(localJson.exceptionInfo){
  235. var str = localJson.exceptionInfo;
  236. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  237. str = str.replace('AFTERSUCCESS', '');
  238. grid.multiselected = new Array();
  239. Ext.getCmp('dealform').onQuery();
  240. }
  241. showError(str);return;
  242. }
  243. if(localJson.success){
  244. if(localJson.log){
  245. showMessage("提示", localJson.log);
  246. }
  247. Ext.Msg.alert("提示", "处理成功!", function(){
  248. var panel=parent.Ext.getCmp(panelId);
  249. var loadgrid=panel.currentGrid;
  250. loadgrid.GridUtil.loadNewStore(loadgrid,{caller:ds_caller,condition:ds_condition});
  251. main.getActiveTab().close();
  252. main.setActiveTab(panel);
  253. });
  254. }
  255. }
  256. });
  257. } else {
  258. showError("没有需要处理的数据!");
  259. }
  260. }else {
  261. showError("没有需要处理的数据!");
  262. }
  263. }
  264. });