Make.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.plm.Make', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil'],
  5. views:[
  6. 'core.form.Panel','pm.plm.Make','core.grid.Panel2','core.toolbar.Toolbar','core.form.MultiField',
  7. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit',
  8. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail','core.button.ResSubmit',
  9. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.Flow','core.button.Get',
  10. 'core.button.GetMaterial','core.button.DeleteMaterial','core.button.ReplaceMaterial','core.button.ChangeMaterial','core.button.GetCraft',
  11. 'core.button.CalMake','core.button.Check','core.button.ResCheck', 'core.button.End', 'core.button.ResEnd','core.button.ModifyMaterial','core.button.SubRelation'
  12. ],
  13. init:function(){
  14. var me = this;
  15. me.FormUtil = Ext.create('erp.util.FormUtil');
  16. me.GridUtil = Ext.create('erp.util.GridUtil');
  17. me.BaseUtil = Ext.create('erp.util.BaseUtil');
  18. this.control({
  19. 'erpGridPanel2': {
  20. afterrender: function(grid){
  21. var status = Ext.getCmp('ma_statuscode');
  22. if(status && status.value != 'ENTERING' ){
  23. grid.setReadOnly(true);
  24. }
  25. },
  26. itemclick: function(view,record){
  27. me.itemclick(view,record,me);
  28. }
  29. },
  30. 'erpSaveButton': {
  31. click: function(btn){
  32. var form = me.getForm(btn);
  33. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  34. me.BaseUtil.getRandomNumber();//自动添加编号
  35. }
  36. var grid = Ext.getCmp('grid');
  37. var items = grid.store.data.items;
  38. var bool = true;
  39. Ext.each(items, function(item){
  40. item.set('mm_code', Ext.getCmp('ma_code').value);
  41. if(item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){
  42. if(item.data['mm_oneuseqty'] == null || item.data['mm_oneuseqty'] == 0){
  43. bool = false;
  44. showError("明细第" + item.data['mm_detno'] + "行未填写制单数量,或需求为0");return;
  45. }
  46. if(item.data['mm_whcode'] == null || item.data['mm_whcode'] == ''){
  47. bool = false;
  48. showError("明细第" + item.data['mm_detno'] + "行未选择发料仓库");return;
  49. }
  50. }
  51. });
  52. if(bool){
  53. this.FormUtil.beforeSave(this);
  54. }
  55. }
  56. },
  57. 'erpCloseButton': {
  58. click: function(btn){
  59. this.FormUtil.beforeClose(this);
  60. }
  61. },
  62. 'erpUpdateButton': {
  63. afterrender: function(btn){
  64. var status = Ext.getCmp('ma_statuscode');
  65. if(status && status.value != 'ENTERING' ){
  66. btn.hide();
  67. }
  68. },
  69. click: function(btn){
  70. var grid = Ext.getCmp('grid');
  71. var items = grid.store.data.items;
  72. var bool = true;
  73. Ext.each(items, function(item){
  74. item.set('mm_code', Ext.getCmp('ma_code').value);
  75. if(item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){
  76. if(item.data['mm_oneuseqty'] == null || item.data['mm_oneuseqty'] == 0){
  77. bool = false;
  78. showError("明细第" + item.data['mm_detno'] + "行未填写制单数量,或需求为0");return;
  79. }
  80. if(item.data['mm_whcode'] == null || item.data['mm_whcode'] == ''){
  81. bool = false;
  82. showError("明细第" + item.data['mm_detno'] + "行未选择发料仓库");return;
  83. }
  84. }
  85. });
  86. if(bool){
  87. this.FormUtil.onUpdate(this);
  88. }
  89. }
  90. },
  91. 'erpDeleteButton': {
  92. click: function(btn){
  93. me.FormUtil.onDelete(Ext.getCmp('ma_id').value);
  94. }
  95. },
  96. 'erpAddButton': {
  97. click: function(){
  98. me.FormUtil.onAdd('addMakePLM', '新增试产制造单', 'jsps/pm/plm/make.jsp?whoami=' + caller);
  99. }
  100. },
  101. 'erpSubmitButton': {
  102. afterrender: function(btn){
  103. var status = Ext.getCmp('ma_statuscode');
  104. if(status && status.value != 'AUDITED'){
  105. btn.hide();
  106. }
  107. status = Ext.getCmp('ma_checkstatuscode');
  108. if(status && status.value != 'UNAPPROVED'){
  109. btn.hide();
  110. }
  111. },
  112. click: function(btn){
  113. me.FormUtil.onSubmit(Ext.getCmp('ma_id').value);
  114. }
  115. },
  116. 'erpResSubmitButton': {
  117. afterrender: function(btn){
  118. var status = Ext.getCmp('ma_checkstatuscode');
  119. if(status && status.value != 'COMMITED'){
  120. btn.hide();
  121. }
  122. },
  123. click: function(btn){
  124. me.FormUtil.onResSubmit(Ext.getCmp('ma_id').value);
  125. }
  126. },
  127. 'erpAuditButton': {
  128. afterrender: function(btn){
  129. var status = Ext.getCmp('ma_statuscode');
  130. if(status && status.value != 'ENTERING'){
  131. btn.hide();
  132. }
  133. },
  134. click: function(btn){
  135. me.FormUtil.onAudit(Ext.getCmp('ma_id').value);
  136. }
  137. },
  138. 'erpResAuditButton': {
  139. afterrender: function(btn){
  140. var grid = Ext.getCmp('grid');
  141. for(var i=0;i<grid.store.data.items.length;i++){
  142. var item = grid.store.data.items[i];
  143. if(item.mm_totaluseqty!=0 ||item.mm_havegetqty!=0){
  144. btn.hide();
  145. break;
  146. }
  147. }
  148. var status = Ext.getCmp('ma_statuscode');
  149. if(status && status.value != 'AUDITED'){
  150. btn.hide();
  151. }
  152. },
  153. click: function(btn){
  154. if (!confirm('确定要反审核单据?')){
  155. return;
  156. }
  157. me.FormUtil.onResAudit(Ext.getCmp('ma_id').value);
  158. }
  159. },
  160. 'erpGetMaterialButton':{
  161. afterrender: function(btn){
  162. btn.hide();//暂时不启用
  163. var status = Ext.getCmp('ma_statuscode');
  164. if(status && status.value != 'AUDITED'){
  165. btn.hide();
  166. }
  167. },
  168. click: function(btn){
  169. me.FormUtil.onResAudit(Ext.getCmp('ma_id').value);
  170. }
  171. },
  172. 'erpDeleteMaterialButton':{
  173. afterrender: function(btn){
  174. btn.hide();//暂时不启用
  175. var status = Ext.getCmp('ma_statuscode');
  176. if(status && status.value != 'AUDITED'){
  177. btn.hide();
  178. }
  179. },
  180. click: function(btn){
  181. me.FormUtil.onResAudit(Ext.getCmp('ma_id').value);
  182. }
  183. },
  184. 'erpReplaceMaterialButton':{
  185. click: function(btn){
  186. me.FormUtil.onResAudit(Ext.getCmp('ma_id').value);
  187. }
  188. },
  189. 'erpGetCraftButton':{
  190. afterrender: function(btn){
  191. btn.hide();//暂时不启用
  192. var status = Ext.getCmp('ma_statuscode');
  193. if(status && status.value != 'AUDITED'){
  194. btn.hide();
  195. }
  196. },
  197. click: function(btn){
  198. me.FormUtil.onResAudit(Ext.getCmp('ma_id').value);
  199. }
  200. },
  201. 'erpChangeMaterialButton': {
  202. afterrender: function(btn){
  203. btn.hide();//暂时不启用
  204. var status = Ext.getCmp('ma_statuscode');
  205. if(status && status.value != 'AUDITED'){
  206. btn.hide();
  207. }
  208. },
  209. click: function(btn){
  210. me.FormUtil.onSubmit(Ext.getCmp('ma_id').value);
  211. }
  212. },
  213. 'erpCalMakeButton': {
  214. click: function(btn){
  215. if (!confirm('确定要计算用料?')){
  216. return;
  217. }
  218. var code=Ext.getCmp('ma_code').getValue();
  219. if (code)
  220. {
  221. Ext.Ajax.request({//拿到grid的columns
  222. url : basePath + 'pm/make/setMakeMaterial.action',
  223. params: {
  224. code:code
  225. },
  226. method : 'post',
  227. async: true,
  228. callback : function(options,success,response){
  229. var res = new Ext.decode(response.responseText);
  230. if(res.exceptionInfo){
  231. showError(res.exceptionInfo);return;
  232. }
  233. else{
  234. var grid=Ext.getCmp('grid');
  235. var value=Ext.getCmp('ma_id').value;
  236. var gridCondition=grid.mainField+'='+value;
  237. gridParam = {caller: 'Make!PLM', condition: gridCondition};
  238. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  239. };
  240. // console.log(this);
  241. //this.FormUtil.onUpdate();
  242. }
  243. });
  244. }
  245. }
  246. },
  247. 'erpSubRelationButton':{
  248. click:function(btn){
  249. var id=btn.ownerCt.ownerCt.ownerCt.items.items[1].selModel.selected.items[0].data["mm_id"];
  250. var formCondition="mm_id IS"+id;
  251. var gridCondition="mp_mmid IS"+id;
  252. var linkCaller='MakeBase!Sub';
  253. var win = new Ext.window.Window(
  254. {
  255. id : 'win',
  256. height : '90%',
  257. width : '95%',
  258. maximizable : true,
  259. buttonAlign : 'center',
  260. layout : 'anchor',
  261. items : [ {
  262. tag : 'iframe',
  263. frame : true,
  264. anchor : '100% 100%',
  265. layout : 'fit',
  266. html : '<iframe id="iframe_'+linkCaller+'" src="'+basePath+'jsps/pm/make/makeCommon.jsp?whoami='+linkCaller+'&gridCondition='+gridCondition+'&formCondition='+formCondition+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  267. } ],
  268. });
  269. win.show();
  270. },
  271. afterrender:function(btn){
  272. btn.setDisabled(true);
  273. }
  274. },
  275. 'erpModifyMaterialButton':{
  276. click:function(btn){
  277. var id=btn.ownerCt.ownerCt.ownerCt.items.items[1].selModel.selected.items[0].data["mm_id"];
  278. var formCondition="mm_id IS"+id;
  279. var linkCaller='MakeMaterial!Modify';
  280. var win = new Ext.window.Window(
  281. {
  282. id : 'win',
  283. height : '90%',
  284. width : '95%',
  285. maximizable : true,
  286. buttonAlign : 'center',
  287. layout : 'anchor',
  288. items : [ {
  289. tag : 'iframe',
  290. frame : true,
  291. anchor : '100% 100%',
  292. layout : 'fit',
  293. html : '<iframe id="iframe_'+linkCaller+'" src="'+basePath+'jsps/pm/make/modifyForm.jsp?whoami='+linkCaller+'&formCondition='+formCondition+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  294. } ],
  295. listeners:{
  296. 'beforeclose':function(view ,opt){
  297. //grid 刷新一次
  298. var grid=Ext.getCmp('grid');
  299. var gridParam = {caller: caller, condition: gridCondition};
  300. grid.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  301. Ext.getCmp('SubRelation').setDisabled(true);
  302. Ext.getCmp('ModifyMaterial').setDisabled(true);
  303. }
  304. }
  305. });
  306. win.show();
  307. },
  308. afterrender:function(btn){
  309. btn.setDisabled(true);
  310. }
  311. },
  312. 'dbfindtrigger[name=ma_saledetno]': {
  313. afterrender: function(t){
  314. t.dbKey = "ma_salecode";
  315. t.mappingKey = "sd_code";
  316. t.dbMessage = "请先选择订单编号!";
  317. }
  318. },
  319. 'dbfindtrigger[name=mm_prodcode]': {
  320. focus: function(t){
  321. var grid = Ext.getCmp('grid');
  322. var c = null;
  323. Ext.each(grid.store.data.items, function(item){
  324. if(item.data['mm_prodcode'] != null && item.data['mm_prodcode'] != ''){
  325. if(c == null){
  326. c = "(pr_code<>'" + item.data['mm_prodcode'] + "'";
  327. } else {
  328. c += " and pr_code<>'" + item.data['mm_prodcode'] + "'";
  329. }
  330. }
  331. });
  332. if(c != null){
  333. t.dbBaseCondition = c + ")";
  334. }
  335. }
  336. },
  337. 'textfield[name=ma_wccode]': {
  338. change: function(field){
  339. if(field.value != null && field.value != ''){
  340. var grid = Ext.getCmp('grid');
  341. var d = field.value;
  342. Ext.Array.each(grid.getStore().data.items,function(item){
  343. item.set('mm_wccode',d);
  344. });
  345. }
  346. }
  347. },
  348. 'erpCheckButton': {
  349. afterrender: function(btn){
  350. var status = Ext.getCmp('ma_checkstatuscode');
  351. if(status && status.value != 'COMMITED'){
  352. btn.hide();
  353. }
  354. },
  355. click: function(btn){
  356. me.FormUtil.onCheck(Ext.getCmp('ma_id').value);
  357. }
  358. },
  359. 'erpResCheckButton': {
  360. afterrender: function(btn){
  361. var grid = Ext.getCmp('grid');
  362. for(var i=0;i<grid.store.data.items.length;i++){
  363. var item = grid.store.data.items[i];
  364. if(item.mm_totaluseqty!=0 ||item.mm_havegetqty!=0){
  365. btn.hide();
  366. break;
  367. }
  368. }
  369. var status = Ext.getCmp('ma_checkstatuscode');
  370. if(status && status.value != 'APPROVE'){
  371. btn.hide();
  372. }
  373. },
  374. click: function(btn){
  375. me.FormUtil.onResCheck(Ext.getCmp('ma_id').value);
  376. }
  377. },
  378. 'erpEndButton': {
  379. afterrender: function(btn){
  380. var status = Ext.getCmp('ma_statuscode');
  381. if(status && status.value != 'AUDITED'){
  382. btn.hide();
  383. }
  384. },
  385. click: function(btn){
  386. me.FormUtil.onEnd(Ext.getCmp('ma_id').value);
  387. }
  388. },
  389. 'erpResEndButton': {
  390. afterrender: function(btn){
  391. var status = Ext.getCmp('ma_statuscode');
  392. if(status && status.value != 'FINISH'){
  393. btn.hide();
  394. }
  395. },
  396. click: function(btn){
  397. me.FormUtil.onResEnd(Ext.getCmp('ma_id').value);
  398. }
  399. },
  400. 'field[name=ma_prodcode]': {
  401. change: function(f){
  402. if(f.value != null && f.value != ''){
  403. me.FormUtil.getFieldValue('BOM', 'bo_id', "bo_mothercode='" + f.value + "'", 'ma_bomid');
  404. }
  405. }
  406. },
  407. 'field[name=ma_qty]': {
  408. change: function(f){
  409. if(f.value == null || f.value == ''){
  410. f.value = 0;
  411. }
  412. var grid = Ext.getCmp('grid');
  413. if(grid){
  414. var items = grid.store.data.items;
  415. Ext.each(items, function(item){//制单需求=制单套数*单位用量
  416. if(item.data['mm_oneuseqty'] != null && item.data['mm_oneuseqty'] != 0){
  417. item.set('mm_qty', item.data['mm_oneuseqty']*f.value);
  418. }
  419. });
  420. }
  421. }
  422. },
  423. 'field[name=mm_oneuseqty]': {
  424. /*试产工单单位用量和需求数大多不成比例,不自动需求数 zyl
  425. change: function(f){//制单需求=制单套数*单位用量
  426. if(f.value != null && f.value > 0 && Ext.getCmp('ma_qty') && Ext.getCmp('ma_qty').value > 0){
  427. var record = Ext.getCmp('grid').selModel.getLastSelected();
  428. if(record.data['mm_qty'] != f.value*Ext.getCmp('ma_qty').value){
  429. record.set('mm_qty', f.value*Ext.getCmp('ma_qty').value);
  430. }
  431. }
  432. }*/
  433. }
  434. });
  435. },
  436. getForm: function(btn){
  437. return btn.ownerCt.ownerCt;
  438. },
  439. itemclick:function(view,record,me){
  440. var show=0;
  441. me.GridUtil.onGridItemClick(view,record);
  442. //处理弹出界面的问题
  443. var grid=view.ownerCt;
  444. Ext.Array.each(grid.necessaryFields, function(field) {
  445. var fieldValue=record.data[field];
  446. if(fieldValue==undefined||fieldValue==""||fieldValue==null){
  447. show=1;
  448. return;
  449. }
  450. });
  451. if(show==1){
  452. Ext.getCmp('SubRelation').setDisabled(true);
  453. Ext.getCmp('ModifyMaterial').setDisabled(true);
  454. }else {
  455. Ext.getCmp('SubRelation').setDisabled(false);
  456. Ext.getCmp('ModifyMaterial').setDisabled(false);
  457. }
  458. }
  459. });