SaleResource.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.make.SaleResource', {
  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. if(caller == 'ATPSaleSource'){
  62. url = 'pm/atp/loadAllSale.action';
  63. ds_caller = 'ATPMain';
  64. params = {am_id:id,condition:condition,caller:caller};
  65. ds_condition = 'ad_amid='+id;
  66. }else if(caller == 'WCPlanSaleSource'){
  67. url = 'pm/make/loadAllSaleByCondition.action';
  68. ds_caller = 'WCPlan';
  69. params = {wc_id:id,condition:condition,caller:ds_caller};
  70. ds_condition = 'wd_wcid='+id;
  71. }
  72. if(form){
  73. var main = parent.Ext.getCmp("content-panel");
  74. main.getActiveTab().setLoading(true);
  75. Ext.Ajax.request({
  76. method:'post',
  77. url:basePath+url,
  78. params:params,
  79. callback : function(options,success,response){
  80. main.getActiveTab().setLoading(false);
  81. var localJson = new Ext.decode(response.responseText);
  82. if(localJson.exceptionInfo){
  83. var str = localJson.exceptionInfo;
  84. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  85. str = str.replace('AFTERSUCCESS', '');
  86. grid.multiselected = new Array();
  87. Ext.getCmp('dealform').onQuery();
  88. }
  89. showError(str);return;
  90. }
  91. if(localJson.success){
  92. if(localJson.log){
  93. showMessage("提示", localJson.log);
  94. }
  95. Ext.Msg.alert("提示", "处理成功!", function(){
  96. var panel=parent.Ext.getCmp(panelId);
  97. main.getActiveTab().close();
  98. var loadgrid=panel.currentGrid;
  99. loadgrid.GridUtil.loadNewStore(loadgrid,{caller:ds_caller,condition:ds_condition});
  100. main.setActiveTab(panel);
  101. });
  102. }
  103. }
  104. });
  105. }
  106. }
  107. }
  108. });
  109. },
  110. resize: function(form, grid){
  111. if(!this.resized && form && grid && form.items.items.length > 0){
  112. var height = window.innerHeight;
  113. if(Ext.isIE){
  114. height = screen.height*0.75;
  115. }
  116. var cw = 0;
  117. Ext.each(form.items.items, function(){
  118. if(!this.hidden && this.xtype != 'hidden') {
  119. cw += this.columnWidth;
  120. }
  121. });
  122. cw = Math.ceil(cw);
  123. if(cw == 0){
  124. cw = 5;
  125. } else if(cw > 2 && cw <= 5){
  126. cw -= 1;
  127. } else if(cw > 5 && cw < 8){
  128. cw = 4;
  129. }
  130. cw = Math.min(cw, 5);
  131. form.setHeight(height*cw/10 + 10);
  132. grid.setHeight(height*(10 - cw)/10 - 10);
  133. this.resized = true;
  134. }
  135. },
  136. countGrid: function(){
  137. //重新计算合计栏值
  138. var grid = Ext.getCmp('querygrid');
  139. Ext.each(grid.columns, function(column){
  140. if(column.summary){
  141. var sum = 0;
  142. Ext.each(grid.store.data.items, function(item){
  143. if(item.value != null && item.value != ''){
  144. sum += Number(item.value);
  145. }
  146. });
  147. Ext.getCmp(column.dataIndex + '_sum').setText(column.text + '(sum):' + sum);
  148. } else if(column.average) {
  149. var average = 0;
  150. Ext.each(grid.store.data.items, function(item){
  151. if(item.value != null && item.value != ''){
  152. average += Number(item.value);
  153. }
  154. });
  155. average = average/grid.store.data.items.length;
  156. Ext.getCmp(column.dataIndex + '_average').setText(column.text + '(average):' + average);
  157. } else if(column.count) {
  158. var count = 0;
  159. Ext.each(grid.store.data.items, function(item){
  160. if(item.value != null && item.value != ''){
  161. count++;
  162. }
  163. });
  164. Ext.getCmp(column.dataIndex + '_count').setText(column.text + '(count):' + count);
  165. }
  166. });
  167. },
  168. vastDeal: function(type){
  169. var url ;
  170. var id = getUrlParam('keyValue');
  171. var params = new Object();
  172. params.caller = caller;
  173. if(caller == 'ATPSaleSource'){
  174. url = 'pm/atp/loadSale.action';
  175. params.am_id = id;
  176. ds_caller = 'ATPMain';
  177. ds_condition = 'ad_amid='+id;
  178. }else if(caller == 'WCPlanSaleSource'){
  179. url = 'pm/make/loadSale.action';
  180. params.wc_id = id;
  181. ds_caller = 'WCPlan';
  182. ds_condition = 'wd_wcid='+id;
  183. }
  184. var grid = Ext.getCmp('grid');
  185. var form = Ext.getCmp('queryform');
  186. var panelId=getUrlParam('panelId');
  187. var records =null;
  188. if(type && type=='all'){
  189. records=Ext.Array.unique(grid.getStore().data.items);
  190. }else {
  191. var items = grid.selModel.getSelection();
  192. Ext.each(items, function(item, index){
  193. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  194. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  195. item.index = this.data[grid.keyField];
  196. grid.multiselected.push(item);
  197. }
  198. });
  199. records = Ext.Array.unique(grid.multiselected);
  200. }
  201. if(records.length > 0){
  202. var data = new Array();
  203. var bool = false;
  204. Ext.each(records, function(record, index){
  205. var f = form.fo_detailMainKeyField;
  206. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  207. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  208. ||(f && this.data[f] != null && this.data[f] != ''
  209. && this.data[f] != '0' && this.data[f] != 0)){
  210. bool = true;
  211. var o = new Object();
  212. if(grid.keyField){
  213. o[grid.keyField] = record.data[grid.keyField];
  214. } else {
  215. params.id[index] = record.data[form.fo_detailMainKeyField];
  216. }
  217. if(grid.toField){
  218. Ext.each(grid.toField, function(f, index){
  219. var v = Ext.getCmp(f).value;
  220. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  221. o[f] = v;
  222. }
  223. });
  224. }
  225. if(grid.necessaryFields){
  226. Ext.each(grid.necessaryFields, function(f, index){
  227. var v = record.data[f];
  228. if(Ext.isDate(v)){
  229. v = Ext.Date.toString(v);
  230. }
  231. o[f] = v;
  232. });
  233. }
  234. data.push(o);
  235. }
  236. });
  237. if(bool){
  238. params.data = unescape(Ext.JSON.encode(data).replace(/\\/g,"%"));
  239. params._noc=1;
  240. var main = parent.Ext.getCmp("content-panel");
  241. main.getActiveTab().setLoading(true);//loading...
  242. Ext.Ajax.request({
  243. url : basePath + url,
  244. params: params,
  245. method : 'post',
  246. callback : function(options,success,response){
  247. main.getActiveTab().setLoading(false);
  248. var localJson = new Ext.decode(response.responseText);
  249. if(localJson.exceptionInfo){
  250. var str = localJson.exceptionInfo;
  251. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  252. str = str.replace('AFTERSUCCESS', '');
  253. grid.multiselected = new Array();
  254. Ext.getCmp('dealform').onQuery();
  255. }
  256. showError(str);return;
  257. }
  258. if(localJson.success){
  259. if(localJson.log){
  260. showMessage("提示", localJson.log);
  261. }
  262. Ext.Msg.alert("提示", "处理成功!", function(){
  263. var panel=parent.Ext.getCmp(panelId);
  264. var loadgrid=panel.currentGrid;
  265. loadgrid.GridUtil.loadNewStore(loadgrid,{caller:ds_caller,condition:ds_condition});
  266. main.getActiveTab().close();
  267. main.setActiveTab(panel);
  268. });
  269. }
  270. }
  271. });
  272. } else {
  273. showError("没有需要处理的数据!");
  274. }
  275. }
  276. }
  277. });