BOMBatchExpand.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.bom.BOMBatchExpand', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'pm.bom.BOMBatchExpand','core.form.Panel','core.grid.Panel2','core.toolbar.Toolbar','core.button.Scan','core.button.Export',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail','core.button.ResSubmit',
  11. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.button.ExportArrayBom','core.button.CleanDetail','core.button.BOMExpand',
  12. 'core.button.BOMExpandAll'
  13. ],
  14. init:function(){
  15. var me = this;
  16. this.control({
  17. 'erpGridPanel2': {
  18. itemclick: this.onGridItemClick
  19. },
  20. 'erpUpdateButton': {
  21. click: function(btn){
  22. this.FormUtil.onUpdate(this);
  23. }
  24. },
  25. 'erpCloseButton': {
  26. click: function(btn){
  27. me.FormUtil.beforeClose(me);
  28. }
  29. },
  30. //bom展开
  31. 'erpBOMExpandButton' : {
  32. click: function(btn){
  33. me.beforeBomExpand();
  34. }
  35. },
  36. //清除明细
  37. 'erpCleanDetailButton' : {
  38. click: function(btn){
  39. var param = me.getGridItems();
  40. if(param == null || param == ''){
  41. showError("没有需要清除的明细");
  42. return ;
  43. }
  44. me.cleanDetail();
  45. }
  46. },
  47. //bom全部展开
  48. 'erpBOMExpandAllButton' : {
  49. click: function(btn){
  50. var param = me.getGridItems();
  51. if(param == null || param == ''){
  52. showMessage('提示', '没有需要展开的明细!', 1000);
  53. return;
  54. }
  55. var mb = new Ext.window.MessageBox();
  56. mb.wait('正在展开','请耐心等待完成...',{
  57. interval: 10000,
  58. duration: 1000000,
  59. increment: 20,
  60. scope: this
  61. });
  62. Ext.Ajax.request({
  63. url : basePath+'pm/bom/bomStructAll.action',
  64. params: {
  65. emid:Ext.getCmp('em_id').value,
  66. caller:caller
  67. },
  68. method : 'post',
  69. timeout: 600000,
  70. callback : function(options,success,response){
  71. mb.close();
  72. var localJson = new Ext.decode(response.responseText);
  73. if(localJson.success){
  74. showMessage('提示', '展开成功!', 1000);
  75. } else if(localJson.exceptionInfo){
  76. var str = localJson.exceptionInfo;
  77. showError(str);return;
  78. }
  79. }
  80. });
  81. }
  82. },
  83. //导出矩阵bom
  84. 'erpExportArrayBomButton' : {
  85. click: function(btn){
  86. var grid = Ext.getCmp('grid');
  87. var param = me.getGridItems();
  88. if(param == null || param == ''){
  89. showError("请先选择需要导出矩阵的BOM");
  90. return ;
  91. }
  92. var gridStore = unescape(param.toString());
  93. me.FormUtil.setLoading(true);//loading...
  94. Ext.Ajax.request({
  95. url : basePath+'pm/bom/bomExpand.action',
  96. params: {
  97. id:Ext.getCmp('em_id').value,
  98. gridStore:gridStore
  99. },
  100. method : 'post',
  101. callback : function(options,success,response){
  102. me.FormUtil.setLoading(false);
  103. var localJson = new Ext.decode(response.responseText);
  104. if(localJson.success){
  105. showMessage('提示', '操作成功!', 1000);
  106. window.location.href=basePath+"excel/exportBatchBOMAsExcel.action?caller="+caller+"&_noc=1";
  107. grid.GridUtil.loadNewStore(grid, {
  108. caller: caller,
  109. condition: gridCondition
  110. });
  111. } else if(localJson.exceptionInfo){
  112. showError(localJson.exceptionInfo);return;
  113. }
  114. }
  115. });
  116. }
  117. },
  118. /*'erpExportButton' : {
  119. afterrender:function(btn){
  120. btn.handler=function(){
  121. var con="bs_topmothercode in (select bb_prodcode from BOMBatch where bb_emid="+em_uu+") ";
  122. me.BaseUtil.createExcel('BOMStruct!Struct!Query', 'detailgrid', con);
  123. };
  124. }
  125. },*/
  126. 'erpPrintButton': {
  127. click:function(btn){
  128. var reportName="BomLevel2";
  129. var condition="{bombatch.bb_emid}="+Ext.getCmp('em_id').value+" and {bomstruct.bs_sonbomid}>0 and {bom.bo_mothercode}<>{bomstruct.bs_soncode} and {BomStruct.bs_supplytype}<>'VIRTUAL' and ({product_1.pr_dhzc}<>'MRP' or isnull({product_1.pr_dhzc}))";
  130. var id=Ext.getCmp('em_id').value;
  131. me.FormUtil.onwindowsPrint(id,reportName,condition);
  132. }
  133. }
  134. });
  135. },
  136. cleanDetail: function(){
  137. var grid=Ext.getCmp('grid');
  138. grid.setLoading(true);
  139. Ext.Ajax.request({
  140. url :basePath+ 'pm/bom/cleanBOMBathExpand.action',
  141. params: {
  142. id:Ext.getCmp('em_id').value
  143. },
  144. method : 'post',
  145. callback : function(options,success,response){
  146. grid.setLoading(false);
  147. var localJson = new Ext.decode(response.responseText);
  148. if(localJson.success){
  149. showMessage('提示', '操作成功!', 1000);
  150. //update成功后刷新页面进入可编辑的页面
  151. window.location.reload();
  152. } else if(localJson.exceptionInfo){
  153. showError(localJson.exceptionInfo);return;
  154. }
  155. }
  156. });
  157. },
  158. beforeBomExpand: function(){
  159. //form里面数据
  160. var me = this;
  161. var grid = Ext.getCmp('grid');
  162. var param = me.getGridItems();
  163. if(param == null || param == ''){
  164. showError("请先选择需要批量展开的BOM");
  165. return ;
  166. }
  167. var gridStore = unescape(param.toString());
  168. me.FormUtil.setLoading(true);//loading...
  169. Ext.Ajax.request({
  170. url : basePath+'pm/bom/bomExpand.action',
  171. params: {
  172. id:Ext.getCmp('em_id').value,
  173. gridStore:gridStore
  174. },
  175. method : 'post',
  176. callback : function(options,success,response){
  177. me.FormUtil.setLoading(false);
  178. var localJson = new Ext.decode(response.responseText);
  179. if(localJson.success){
  180. showMessage('提示', '操作成功!', 1000);
  181. var con="bs_topmothercode in (select bb_prodcode from BOMBatch where bb_emid="+em_uu+") ";
  182. me.BaseUtil.createExcel('BOMStruct!Struct!Query', 'detailgrid', con);
  183. grid.GridUtil.loadNewStore(grid, {
  184. caller: caller,
  185. condition: gridCondition
  186. });
  187. } else if(localJson.exceptionInfo){
  188. var str = localJson.exceptionInfo;
  189. showError(str);return;
  190. }
  191. }
  192. });
  193. },
  194. onGridItemClick: function(selModel, record){//grid行选择
  195. this.GridUtil.onGridItemClick(selModel, record);
  196. },
  197. getForm: function(btn){
  198. return btn.ownerCt.ownerCt;
  199. },
  200. getGridItems :function(){//检查明细行是否有明细
  201. var grid = Ext.getCmp('grid');
  202. var jsonGridData = new Array();
  203. var form = Ext.getCmp('form');
  204. if(grid!=null){
  205. grid.getStore().each(function(item){//将grid里面各行的数据获取并拼成jsonGridData
  206. var data = Ext.clone(item.data);
  207. var dd = new Object();
  208. if(data[grid.necessaryField] != null && data[grid.necessaryField] != ""){
  209. if(grid.mainField && form && form.keyField){//例如,将pu_id的值赋给pd_puid
  210. dd[grid.mainField] = Ext.getCmp(form.keyField).value;
  211. }
  212. Ext.each(grid.columns, function(c){
  213. if((c.logic != 'ignore') && c.dataIndex){//只需显示,无需后台操作的字段,自动略去
  214. if(c.xtype == 'datecolumn'){
  215. if(Ext.isDate(data[c.dataIndex])){
  216. dd[c.dataIndex] = Ext.Date.toString(data[c.dataIndex]);//在这里把GMT日期转化成Y-m-d格式日期
  217. } else {
  218. dd[c.dataIndex] = Ext.Date.format(new Date(), 'Y-m-d');//如果用户没输入日期,或输入有误,就给个默认日期,
  219. //或干脆return;并且提示一下用户
  220. }
  221. } else if(c.xtype == 'numbercolumn'){//赋个默认值0吧,不然不好保存
  222. if(data[c.dataIndex] == null || data[c.dataIndex] == ''){
  223. dd[c.dataIndex] = '0';//也可以从data里面去掉这些字段
  224. } else {
  225. dd[c.dataIndex] = "" + data[c.dataIndex];
  226. }
  227. }else{
  228. dd[c.dataIndex] = data[c.dataIndex];
  229. }
  230. }
  231. });
  232. jsonGridData.push(Ext.JSON.encode(dd));
  233. }
  234. });
  235. return jsonGridData;
  236. }
  237. }
  238. });