WCPlan.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.make.WCPlan', {
  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.make.WCPlan','core.form.Panel','pm.make.WCPlanGrid','core.grid.Panel2','core.button.DeleteAllDetails','core.button.LoadMake','core.button.ImportExcel',
  9. 'core.button.Add','core.button.Save','core.button.Close','core.form.MultiField','core.button.Scan','core.button.ConfirmRange',
  10. 'core.button.Submit','core.button.ResSubmit','core.button.Audit','core.button.ResAudit','core.button.RunLackMaterial',
  11. 'core.button.Update','core.button.Delete','core.form.YnField','core.button.LoadMake','core.button.LackMateriallResult',
  12. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.button.InMaterialNeed','core.button.MaterialLackTwo',
  13. 'core.button.RunLackWip','core.button.WipNeed'],
  14. init:function(){
  15. var statuscode=null;
  16. var me = this;
  17. this.control({
  18. 'erpSaveButton': {
  19. click: function(btn){
  20. var form = me.getForm(btn);
  21. var codeField=Ext.getCmp(form.codeField);
  22. if(codeField.value == null || codeField.value == ''){
  23. me.BaseUtil.getRandomNumber();//自动添加编号
  24. codeField.setValue('WC_'+codeField.value);
  25. }
  26. this.FormUtil.beforeSave(this);
  27. }
  28. },
  29. 'erpCloseButton': {
  30. click: function(btn){
  31. this.FormUtil.beforeClose(this);
  32. }
  33. },
  34. 'erpGridPanel2':{
  35. itemclick: function(view,record){
  36. me.GridUtil.onGridItemClick(view,record);
  37. }
  38. },
  39. 'erpUpdateButton': {
  40. click: function(btn){
  41. this.update(this);
  42. },
  43. afterrender:function(btn){
  44. statuscode=Ext.getCmp('wc_statuscode').getValue();
  45. if(statuscode!='ENTERING'){
  46. btn.hide();
  47. }
  48. }
  49. },
  50. 'erpDeleteButton': {
  51. click: function(btn){
  52. me.FormUtil.onDelete(Ext.getCmp('wc_id').value);
  53. },
  54. afterrender:function(btn){
  55. statuscode=Ext.getCmp('wc_statuscode').getValue();
  56. if(statuscode!='ENTERING'){
  57. btn.hide();
  58. }
  59. }
  60. },
  61. 'erpAddButton': {
  62. click: function(btn){
  63. me.FormUtil.onAdd('addWCPlan', '新增生产排程', 'jsps/pm/make/WCPlan.jsp');
  64. }
  65. },
  66. 'erpConfirmRangeButton':{
  67. click: function(btn){
  68. var grid=Ext.getCmp('grid');
  69. var fromdate=Ext.getCmp('wc_fromdate').getValue();
  70. var todate=Ext.getCmp('wc_todate').getValue();
  71. var lastcolumns=new Array();
  72. Ext.Array.each(gridcolumns,function(item,m){
  73. if(item.dataIndex=='wd_date'){
  74. var columns=new Array();
  75. var count=(todate-fromdate)/86400000;
  76. for(var i=0;i<count+1;i++){
  77. columns.push({
  78. text:Ext.Date.format(Ext.Date.add(fromdate,Ext.Date.DAY,i),'Y-m-d'),
  79. dataIndex:Ext.Date.format(Ext.Date.add(fromdate,Ext.Date.DAY,i),'Y-m-d'),
  80. width : 100,
  81. sortable : true
  82. });
  83. }
  84. item.columns=columns;
  85. }
  86. lastcolumns[m]=item;
  87. });
  88. grid.reconfigure(grid.store,gridcolumns);
  89. grid.store.loadData(griddata);
  90. }
  91. },
  92. 'erpSubmitButton': {
  93. afterrender:function(btn){
  94. if(statuscode!='ENTERING'){
  95. btn.hide();
  96. }
  97. },
  98. click: function(btn){
  99. me.FormUtil.onSubmit(Ext.getCmp('wc_id').value);
  100. }
  101. },
  102. 'erpResSubmitButton': {
  103. afterrender:function(btn){
  104. if(statuscode!='COMMITED'){
  105. btn.hide();
  106. }
  107. },
  108. click: function(btn){
  109. me.FormUtil.onResSubmit(Ext.getCmp('wc_id').value);
  110. }
  111. },
  112. 'erpAuditButton': {
  113. afterrender:function(btn){
  114. if(statuscode!='COMMITED'){
  115. btn.hide();
  116. }
  117. },
  118. click: function(btn){
  119. me.FormUtil.onAudit(Ext.getCmp('wc_id').value);
  120. }
  121. },
  122. 'erpResAuditButton': {
  123. afterrender:function(btn){
  124. if(statuscode!='AUDITED'){
  125. btn.hide();
  126. }
  127. },
  128. click: function(btn){
  129. me.FormUtil.onResAudit(Ext.getCmp('wc_id').value);
  130. }
  131. },
  132. 'multifield[name=wc_recorder]':{
  133. beforerender:function(field){
  134. field.items.items[1].xtype='datefield';
  135. },
  136. afterrender:function(field){
  137. if(!field.secondvalue){
  138. field.items.items[1].setValue(Ext.Date.format(new Date(), 'Y-m-d'));
  139. }
  140. }
  141. },
  142. 'erpImportExcelButton':{
  143. afterrender:function(btn){
  144. if(statuscode!='ENTERING'){
  145. btn.hide();
  146. }
  147. },
  148. },
  149. 'filefield[id=excelfile]':{
  150. change: function(field){
  151. var filename = '';
  152. if(contains(field.value, "\\", true)){
  153. filename = field.value.substring(field.value.lastIndexOf('\\') + 1);
  154. } else {
  155. filename = field.value.substring(field.value.lastIndexOf('/') + 1);
  156. }
  157. field.ownerCt.getForm().submit({
  158. url: basePath + 'common/upload.action?em_code=' + em_code,
  159. waitMsg: "正在解析文件信息",
  160. success: function(fp,o){
  161. if(o.result.error){
  162. showError(o.result.error);
  163. } else {
  164. var filePath=o.result.filepath;
  165. var keyValue=Ext.getCmp('wc_id').getValue();
  166. Ext.Ajax.request({//拿到form的items
  167. url : basePath + 'pm/make/ImportExcel.action',
  168. params:{
  169. id:keyValue,
  170. fileId:filePath
  171. },
  172. method : 'post',
  173. callback : function(options,success,response){
  174. var result=Ext.decode(response.responseText);
  175. if(result.success){
  176. var grid=Ext.getCmp('grid');
  177. var param={
  178. caller:'WCPlan',
  179. condition:'wd_wcid='+keyValue
  180. };
  181. grid.GridUtil.loadNewStore(grid,param);
  182. }else{
  183. if(result.exceptionInfo != null){
  184. showError(res.exceptionInfo);return;
  185. }
  186. }
  187. }
  188. });
  189. }
  190. }
  191. });
  192. }
  193. },
  194. 'erpDeleteAllDetailsButton':{
  195. afterrender:function(btn){
  196. if(statuscode!='ENTERING'){
  197. btn.hide();
  198. }
  199. },
  200. click: function(btn){
  201. me.DeleteAllDetails();
  202. }
  203. },
  204. 'erpExportDetailButton':{
  205. afterrender:function(btn){
  206. var grid=Ext.getCmp('grid');
  207. var concount=Ext.getCmp('concount');
  208. if(!concount){
  209. btn.ownerCt.add({
  210. xtype:'tbtext',
  211. id:'concount',
  212. text:'总条数:'+grid.store.prefetchData.items.length
  213. });
  214. }
  215. }
  216. },
  217. 'erpLoadMakeButton':{
  218. afterrender:function(btn){
  219. if(statuscode!='ENTERING'){
  220. btn.hide();
  221. }
  222. },
  223. click: function(btn){
  224. var form=Ext.getCmp('form');
  225. var keyField=form.keyField;
  226. var KeyValue=Ext.getCmp(keyField).value;
  227. if(KeyValue==null||KeyValue==''){
  228. showError('请先保存记录');
  229. }
  230. var me = this;
  231. var url=basePath+"jsps/pm/make/makeResource.jsp";
  232. var panel = Ext.getCmp("sourceid=" +KeyValue);
  233. var main = parent.Ext.getCmp("content-panel");
  234. var panelId= main.getActiveTab().id;
  235. var urlcondition=" ma_code not in (select wd_makecode from wcplandetail where wd_wcid="+KeyValue+")";
  236. main.getActiveTab().currentGrid = Ext.getCmp('grid');
  237. if(!panel){
  238. var title = "";
  239. if (KeyValue.toString().length>4) {
  240. title = KeyValue.toString().substring(KeyValue.toString().length-4);
  241. } else {
  242. title = KeyValue;
  243. }
  244. panel = {
  245. title:'生产排程来源('+KeyValue+')',
  246. tag : 'iframe',
  247. tabConfig:{tooltip:'生产排程来源('+title+')'},
  248. frame : true,
  249. border : false,
  250. layout : 'fit',
  251. iconCls : 'x-tree-icon-tab-tab',
  252. html : '<iframe id="iframe_maindetail_'+caller+"_"+KeyValue+'" src="'+url+'?urlcondition='+urlcondition+'&whoami=WCPlanSource&_noc=1&keyValue='+KeyValue+'&panelId='+panelId+'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>',
  253. closable : true,
  254. listeners : {
  255. close : function(){
  256. main.setActiveTab(main.getActiveTab().id);
  257. }
  258. }
  259. };
  260. me.FormUtil.openTab(panel,"sourceid=" + KeyValue);
  261. }else{
  262. main.setActiveTab(panel);
  263. }
  264. }
  265. },
  266. 'erpRunLackMaterialButton':{
  267. afterrender:function(btn){
  268. if(statuscode!='AUDITED'){
  269. btn.hide();
  270. }
  271. },
  272. click: function(btn){
  273. if (!confirm('确定要运算缺料?')){
  274. return;
  275. }
  276. var code = Ext.getCmp('wc_code').getValue();
  277. var mb = new Ext.window.MessageBox();
  278. mb.wait('正在运算中','请稍后...');
  279. Ext.Ajax.request({//拿到form的items
  280. url : basePath + "pm/make/RunLackMaterial.action",
  281. params:{
  282. code:code
  283. },
  284. method : 'post',
  285. timeout: 300000,
  286. callback : function(options,success,response){
  287. mb.close();
  288. var result=Ext.decode(response.responseText);
  289. if(result.success){
  290. Ext.Msg.alert('提示','运算成功!',function(){
  291. window.location.reload();
  292. });
  293. }else{
  294. if(result.exceptionInfo != null){
  295. showError(result.exceptionInfo);return;
  296. }
  297. }
  298. }
  299. });
  300. }
  301. },
  302. 'erpRunLackWipButton':{
  303. afterrender:function(btn){
  304. if(statuscode!='AUDITED'){
  305. btn.hide();
  306. }
  307. },
  308. click: function(btn){
  309. if (!confirm('确定要运算线边仓的缺料?')){
  310. return;
  311. }
  312. var code = Ext.getCmp('wc_code').getValue();
  313. var mb = new Ext.window.MessageBox();
  314. mb.wait('正在运算中','请稍后...');
  315. Ext.Ajax.request({//拿到form的items
  316. url : basePath + "pm/make/RunLackWip.action",
  317. params:{
  318. code:code
  319. },
  320. method : 'post',
  321. timeout: 300000,
  322. callback : function(options,success,response){
  323. mb.close();
  324. var result=Ext.decode(response.responseText);
  325. if(result.success){
  326. Ext.Msg.alert('提示','运算成功!',function(){
  327. window.location.reload();
  328. });
  329. }else{
  330. if(result.exceptionInfo != null){
  331. showError(result.exceptionInfo);return;
  332. }
  333. }
  334. }
  335. });
  336. }
  337. },
  338. 'erpLackMateriallResultButton':{
  339. afterrender:function(btn){
  340. if(statuscode!='AUDITED'){
  341. btn.hide();
  342. }
  343. },
  344. click: function(btn){
  345. var form=Ext.getCmp('form');
  346. var keyField=form.keyField;
  347. var KeyValue=Ext.getCmp(keyField).value;
  348. if(KeyValue==null||KeyValue==''){
  349. showError('请先保存记录');
  350. }
  351. var me = this;
  352. //var url=basePath+"jsps/pm/make/WCPlanResult.jsp";
  353. var url=basePath+"jsps/common/queryDetail.jsp";
  354. var panel = Ext.getCmp("lackResultid=" +KeyValue);
  355. var main = parent.Ext.getCmp("content-panel");
  356. var urlCondition='ml_planid='+KeyValue;
  357. main.getActiveTab().currentGrid = Ext.getCmp('grid');
  358. if(!panel){
  359. var title = "";
  360. if (KeyValue.toString().length>4) {
  361. title = KeyValue.toString().substring(KeyValue.toString().length-4);
  362. } else {
  363. title = KeyValue;
  364. }
  365. panel = {
  366. title:'排产缺料运算结果('+KeyValue+')',
  367. tag : 'iframe',
  368. tabConfig:{tooltip:'排产缺料运算结果('+title+')'},
  369. frame : true,
  370. border : false,
  371. layout : 'fit',
  372. iconCls : 'x-tree-icon-tab-tab',
  373. html : '<iframe id="iframe_maindetail_'+caller+"_"+KeyValue+'" src="'+url+'?whoami=MaterialLackForWCPlan&_noc=1&urlcondition='+urlCondition+'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>',
  374. closable : true,
  375. listeners : {
  376. close : function(){
  377. main.setActiveTab(main.getActiveTab().id);
  378. }
  379. }
  380. };
  381. me.FormUtil.openTab(panel,"lackResultid=" + KeyValue);
  382. }else{
  383. main.setActiveTab(panel);
  384. }
  385. }
  386. },
  387. 'erpMaterialLackTwoButton':{
  388. afterrender:function(btn){
  389. if(statuscode!='AUDITED'){
  390. btn.hide();
  391. }
  392. btn.hide();//强制不显示,以免导致死机
  393. },
  394. click: function(btn){
  395. var form=Ext.getCmp('form');
  396. var keyField=form.keyField;
  397. var KeyValue=Ext.getCmp(keyField).value;
  398. var startdate=Ext.getCmp('wc_fromdate').value;
  399. var enddate=Ext.getCmp('wc_todate').value;
  400. if(KeyValue==null||KeyValue==''){
  401. showError('请先保存记录');
  402. }
  403. var me = this;
  404. var url=basePath+"jsps/pm/make/WCPlanMaterialLack.jsp";
  405. var panel = Ext.getCmp("towsourceid=" +KeyValue);
  406. var main = parent.Ext.getCmp("content-panel");
  407. var urlCondition='ml_planid='+KeyValue;
  408. url=url+"?whoami=MaterialLackForWCPlan&_noc=1&urlcondition="+urlCondition+"&startdate="+startdate+"&enddate="+enddate;
  409. main.getActiveTab().currentGrid = Ext.getCmp('grid');
  410. if(!panel){
  411. var title = "";
  412. if (KeyValue.toString().length>4) {
  413. title = KeyValue.toString().substring(KeyValue.toString().length-4);
  414. } else {
  415. title = KeyValue;
  416. }
  417. panel = {
  418. title:'排产缺料二维查看('+KeyValue+')',
  419. tag : 'iframe',
  420. tabConfig:{tooltip:'排产缺料二维查看('+title+')'},
  421. frame : true,
  422. border : false,
  423. layout : 'fit',
  424. iconCls : 'x-tree-icon-tab-tab',
  425. html : '<iframe id="iframe_maindetail_'+caller+"_"+KeyValue+'" src="'+url+'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>',
  426. closable : true,
  427. listeners : {
  428. close : function(){
  429. main.setActiveTab(main.getActiveTab().id);
  430. }
  431. }
  432. };
  433. me.FormUtil.openTab(panel,"twosourceid=" + KeyValue);
  434. }else{
  435. main.setActiveTab(panel);
  436. }
  437. }
  438. },
  439. 'erpInMaterialNeedButton':{
  440. afterrender:function(btn){
  441. if(statuscode!='AUDITED'){
  442. btn.hide();
  443. }
  444. },
  445. click:function(btn){
  446. var form=Ext.getCmp('form');
  447. var keyField=form.keyField;
  448. var KeyValue=Ext.getCmp(keyField).value;
  449. if(KeyValue==null||KeyValue==''){
  450. showError('请先保存记录');
  451. }
  452. var me = this;
  453. var url=basePath+"jsps/pm/make/MaterialLackForNotify.jsp";
  454. var panel = Ext.getCmp("lackNotify=" +KeyValue);
  455. var main = parent.Ext.getCmp("content-panel");
  456. var urlCondition='mln_planid='+KeyValue;
  457. main.getActiveTab().currentGrid = Ext.getCmp('grid');
  458. if(!panel){
  459. var title = "";
  460. if (KeyValue.toString().length>4) {
  461. title = KeyValue.toString().substring(KeyValue.toString().length-4);
  462. } else {
  463. title = KeyValue;
  464. }
  465. panel = {
  466. title:'送货需求('+KeyValue+')',
  467. tag : 'iframe',
  468. tabConfig:{tooltip:'送货需求('+title+')'},
  469. frame : true,
  470. border : false,
  471. layout : 'fit',
  472. iconCls : 'x-tree-icon-tab-tab',
  473. html : '<iframe id="iframe_maindetail_'+caller+"_"+KeyValue+'" src="'+url+'?whoami=MaterialLackForNotify&_noc=1&urlcondition='+urlCondition+'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>',
  474. closable : true,
  475. listeners : {
  476. close : function(){
  477. main.setActiveTab(main.getActiveTab().id);
  478. }
  479. }
  480. };
  481. me.FormUtil.openTab(panel,"lackNotify=" + KeyValue);
  482. }else{
  483. main.setActiveTab(panel);
  484. }
  485. }
  486. },
  487. 'erpWipNeedButton':{
  488. afterrender:function(btn){
  489. if(statuscode!='AUDITED'){
  490. btn.hide();
  491. }
  492. },
  493. click:function(btn){
  494. var form=Ext.getCmp('form');
  495. var keyField=form.keyField;
  496. var KeyValue=Ext.getCmp(keyField).value;
  497. if(KeyValue==null||KeyValue==''){
  498. showError('请先保存记录');
  499. }
  500. var me = this;
  501. var url=basePath+"jsps/pm/make/MaterialLackForPull.jsp";
  502. var panel = Ext.getCmp("WipNeed=" +KeyValue);
  503. var main = parent.Ext.getCmp("content-panel");
  504. var urlCondition='mlp_planid='+KeyValue;
  505. main.getActiveTab().currentGrid = Ext.getCmp('grid');
  506. if(!panel){
  507. var title = "";
  508. if (KeyValue.toString().length>4) {
  509. title = KeyValue.toString().substring(KeyValue.toString().length-4);
  510. } else {
  511. title = KeyValue;
  512. }
  513. panel = {
  514. title:'线边仓需求('+KeyValue+')',
  515. tag : 'iframe',
  516. tabConfig:{tooltip:'线边仓需求('+title+')'},
  517. frame : true,
  518. border : false,
  519. layout : 'fit',
  520. iconCls : 'x-tree-icon-tab-tab',
  521. html : '<iframe id="iframe_WipNeed_'+caller+"_"+KeyValue+'" src="'+url+'?whoami=MaterialLackForPull&_noc=1&urlcondition='+urlCondition+'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>',
  522. closable : true,
  523. listeners : {
  524. close : function(){
  525. main.setActiveTab(main.getActiveTab().id);
  526. }
  527. }
  528. };
  529. me.FormUtil.openTab(panel,"WipNeed=" + KeyValue);
  530. }else{
  531. main.setActiveTab(panel);
  532. }
  533. }
  534. }
  535. });
  536. },
  537. getForm: function(btn){
  538. return btn.ownerCt.ownerCt;
  539. },
  540. DeleteAllDetails:function(){
  541. var id=Ext.getCmp('wc_id').getValue();
  542. Ext.Ajax.request({//拿到form的items
  543. url : basePath + 'pm/make/deleteAllDetails.action',
  544. params:{
  545. id:id,
  546. },
  547. method : 'post',
  548. callback : function(options,success,response){
  549. var result=Ext.decode(response.responseText);
  550. if(result.success){
  551. var grid=Ext.getCmp('grid');
  552. var param={
  553. caller:'WCPlan',
  554. condition:'wd_wcid='+id
  555. };
  556. grid.GridUtil.loadNewStore(grid,param);
  557. }else{
  558. if(res.exceptionInfo != null){
  559. showError(res.exceptionInfo);return;
  560. }
  561. }
  562. }
  563. });
  564. },
  565. update:function(grid){
  566. var mm = this.FormUtil;
  567. var form = Ext.getCmp('form');
  568. /*var s1 = mm.checkFormDirty(form);
  569. var s2 = '';*/
  570. var grid = Ext.getCmp('grid');
  571. /*if(grid.GridUtil){
  572. var msg = grid.checkGridDirty(grid);
  573. if(msg.length > 0){
  574. s2 = s2 + '<br/>' + grid.checkGridDirty(grid);
  575. }
  576. }
  577. if(s1 == '' && (s2 == '' || s2 == '<br/>')){
  578. showError($I18N.common.form.emptyData + '<br/>' + $I18N.common.grid.emptyDetail);
  579. return;
  580. }*/
  581. if(form && form.getForm().isValid()){
  582. //form里面数据
  583. var r = form.getValues(false, true);
  584. //去除ignore字段
  585. var keys = Ext.Object.getKeys(r), f;
  586. Ext.each(keys, function(k){
  587. f = form.down('#' + k);
  588. if(f && f.logic == 'ignore') {
  589. delete r[k];
  590. }
  591. });
  592. if(!mm.contains(form.updateUrl, '?caller=', true)){
  593. form.updateUrl = form.updateUrl + "?caller=" + caller;
  594. }
  595. var params = [];
  596. var param = grid.GridUtil.getGridStore();
  597. if(grid.necessaryField.length > 0 && (param == null || param == '')){
  598. warnMsg('明细表还未添加数据,是否继续?', function(btn){
  599. if(btn == 'yes'){
  600. params = unescape("[" + param.toString().replace(/\\/g,"%") + "]");
  601. } else {
  602. return;
  603. }
  604. });
  605. } else {
  606. params = unescape("[" + param.toString().replace(/\\/g,"%") + "]");
  607. }
  608. mm.update(r, params);
  609. }else{
  610. mm.checkForm(form);
  611. }
  612. },
  613. onSubmit:function(id){
  614. var me = this;
  615. var form = Ext.getCmp('form');
  616. var grid = Ext.getCmp('grid');
  617. var s2='';
  618. if(form && form.getForm().isValid()){
  619. var s = this.FormUtil.checkFormDirty(form);
  620. var param = me.GridUtil.getAllGridStore();
  621. if(grid.necessaryField.length > 0 && (param == null || param == '')){
  622. showError("明细表还未添加数据,无法提交!");
  623. return;
  624. }
  625. if(grid.GridUtil){
  626. var msg = grid.GridUtil.checkGridDirty(grid);
  627. if(msg.length > 0){
  628. s2 = s2 + '<br/>' + grid.GridUtil.checkGridDirty(grid);
  629. }
  630. }
  631. if(s2 == '' || s2 == '<br/>'){
  632. me.FormUtil.submit(id);
  633. } else {
  634. Ext.MessageBox.show({
  635. title:'保存修改?',
  636. msg: '该单据已被修改:<br/>' + s + '<br/>提交前要先保存吗?',
  637. buttons: Ext.Msg.YESNOCANCEL,
  638. icon: Ext.Msg.WARNING,
  639. fn: function(btn){
  640. if(btn == 'yes'){
  641. me.FormUtil.onUpdate(form);
  642. } else if(btn == 'no'){
  643. me.FormUtil.submit(id);
  644. } else {
  645. return;
  646. }
  647. }
  648. });
  649. }
  650. } else {
  651. me.FormUtil.checkForm();
  652. }
  653. },
  654. });