ECN.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.bom.ECN', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. GridUtil: Ext.create('erp.util.GridUtil'),
  7. views:[
  8. 'pm.bom.ECN','core.form.Panel','core.grid.Panel2','core.toolbar.Toolbar','core.form.FileField',
  9. 'core.button.Add','core.button.Save','core.button.Close','core.button.DeleteDetail',
  10. 'core.button.Submit','core.button.ResSubmit','core.button.Audit','core.button.ResAudit',
  11. 'core.button.Update','core.button.Print','core.button.Delete','core.form.YnField','core.button.ECNCheck',
  12. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.grid.YnColumn','core.button.ExecuteECNAuto',
  13. 'core.button.Sync','core.button.CloseECNAllDetail','core.button.OpenECNAllDetail','core.button.TurnAutoECN'
  14. ],
  15. init:function(){
  16. var me = this;
  17. this.control({
  18. 'erpGridPanel2': {
  19. itemclick: function(selModel, record){
  20. Ext.getCmp('closedetail').setDisabled(false);
  21. Ext.getCmp('opendetail').setDisabled(false);
  22. if(!Ext.getCmp('grid').readOnly){
  23. this.onGridItemClick(selModel, record);
  24. }
  25. },
  26. afterrender: function(btn){
  27. var status = Ext.getCmp('ecn_checkstatuscode');
  28. if(status && status.value != 'AUDITED'){
  29. Ext.getCmp('ExecuteECNAutobutton').hide();
  30. }
  31. }
  32. },
  33. 'erpDeleteDetailButton': {
  34. afterrender: function(btn){
  35. btn.ownerCt.add({
  36. xtype:'button',
  37. text:'关闭明细行',
  38. width:120,
  39. iconCls: 'x-button-icon-check',
  40. cls: 'x-btn-gray',
  41. id:'closedetail',
  42. style: {
  43. marginLeft: '10px'
  44. },
  45. disabled:true,
  46. handler:function(){
  47. var grid=Ext.getCmp('grid');
  48. var record=grid.getSelectionModel().getLastSelected();
  49. grid.setLoading(true);
  50. Ext.Ajax.request({//拿到grid的columns
  51. url : basePath + "/pm/bom/closeECNDetail.action",
  52. params:{
  53. id:record.data.ed_id
  54. },
  55. method : 'post',
  56. callback : function(options,success,response){
  57. grid.setLoading(false);
  58. var res = new Ext.decode(response.responseText);
  59. if(res.exceptionInfo){
  60. showError(res.exceptionInfo);return;
  61. }else if(res.success){
  62. Ext.Msg.alert('提示','明细行关闭成功!');
  63. var id = Ext.getCmp('ecn_id').value;
  64. me.GridUtil.loadNewStore(grid,{caller:caller,condition:"ed_ecnid="+id});
  65. var form = Ext.getCmp('form');
  66. me.FormUtil.loadNewStore(form,{caller: caller, condition: "ecn_id=" +id});
  67. }
  68. }
  69. });
  70. }
  71. });
  72. btn.ownerCt.add({
  73. xtype:'button',
  74. text:'打开明细行',
  75. width:120,
  76. iconCls: 'x-button-icon-check',
  77. cls: 'x-btn-gray',
  78. id:'opendetail',
  79. style: {
  80. marginLeft: '10px'
  81. },
  82. disabled:true,
  83. handler:function(){
  84. var grid=Ext.getCmp('grid');
  85. var record=grid.getSelectionModel().getLastSelected();
  86. grid.setLoading(true);
  87. Ext.Ajax.request({//拿到grid的columns
  88. url : basePath + "/pm/bom/openECNDetail.action",
  89. params:{
  90. id:record.data.ed_id
  91. },
  92. method : 'post',
  93. callback : function(options,success,response){
  94. grid.setLoading(false);
  95. var res = new Ext.decode(response.responseText);
  96. if(res.exceptionInfo){
  97. showError(res.exceptionInfo);return;
  98. }else if(res.success){
  99. Ext.Msg.alert('提示','明细行打开成功!');
  100. var id = Ext.getCmp('ecn_id').value;
  101. me.GridUtil.loadNewStore(grid,{caller:caller,condition:"ed_ecnid="+id});
  102. var form = Ext.getCmp('form');
  103. me.FormUtil.loadNewStore(form,{caller: caller, condition: "ecn_id=" +id});
  104. }
  105. }
  106. });
  107. }
  108. });
  109. }
  110. },
  111. 'erpCloseECNAllDetailButton':{
  112. click:function(btn){
  113. var grid=Ext.getCmp('grid');
  114. grid.setLoading(true);
  115. Ext.Ajax.request({//关闭所有明细
  116. url : basePath + "/pm/bom/closeECNAllDetail.action",
  117. params:{
  118. id:Ext.getCmp("ecn_id").value,
  119. caller:caller
  120. },
  121. method : 'post',
  122. callback : function(options,success,response){
  123. grid.setLoading(false);
  124. var res = new Ext.decode(response.responseText);
  125. if(res.exceptionInfo){
  126. showError(res.exceptionInfo);return;
  127. }else if(res.success){
  128. Ext.Msg.alert('提示','打开状态的所有明细关闭成功!');
  129. var id = Ext.getCmp('ecn_id').value;
  130. window.location.href = basePath + "jsps/pm/bom/ECN.jsp?formCondition=ecn_idIS" +id+"&gridCondition=ed_ecnidIS"+id;
  131. }
  132. }
  133. });
  134. },
  135. afterrender:function(btn){//整张单已执行不允许关闭
  136. var didCode = Ext.getCmp("ecn_didstatuscode");
  137. if(didCode && didCode.value == 'EXECUTED'){
  138. btn.hide();
  139. }
  140. }
  141. },
  142. 'erpOpenECNAllDetailButton':{
  143. click:function(btn){
  144. var grid=Ext.getCmp('grid');
  145. grid.setLoading(true);
  146. Ext.Ajax.request({//拿到grid的columns
  147. url : basePath + "/pm/bom/openECNAllDetail.action",
  148. params:{
  149. id:Ext.getCmp("ecn_id").value,
  150. caller:caller
  151. },
  152. method : 'post',
  153. callback : function(options,success,response){
  154. grid.setLoading(false);
  155. var res = new Ext.decode(response.responseText);
  156. if(res.exceptionInfo){
  157. showError(res.exceptionInfo);return;
  158. }else if(res.success){
  159. Ext.Msg.alert('提示','关闭状态的所有明细打开成功!');
  160. var id = Ext.getCmp('ecn_id').value;
  161. window.location.href = basePath + "jsps/pm/bom/ECN.jsp?formCondition=ecn_idIS" +id+"&gridCondition=ed_ecnidIS"+id;
  162. }
  163. }
  164. });
  165. },
  166. afterrender:function(btn){//整张单已执行不允许打开
  167. var didCode = Ext.getCmp("ecn_didstatuscode");
  168. if(didCode && didCode.value == 'EXECUTED'){
  169. btn.hide();
  170. }
  171. }
  172. },
  173. 'erpTurnAutoECNButton':{
  174. click:function(btn){//转立即执行
  175. var id = Ext.getCmp("ecn_id");
  176. if(id && id.value != null && id.value != ''){
  177. me.turnAutoECN(id.value);
  178. }
  179. },
  180. afterrender:function(btn){
  181. //未执行已审核的自然变更才允许转立即执行
  182. var didCode = Ext.getCmp("ecn_didstatuscode");
  183. var statusCode = Ext.getCmp("ecn_checkstatuscode");
  184. var type = Ext.getCmp("ecn_type");
  185. if((didCode && didCode.value == 'EXECUTED') || (type && type.value != 'AUTO') || (statusCode&&statusCode.value !='AUDITED')){
  186. btn.hide();
  187. }
  188. }
  189. },
  190. 'erpSaveButton': {
  191. click: function(btn){
  192. var form = me.getForm(btn);
  193. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  194. me.BaseUtil.getRandomNumber();//自动添加编号
  195. }
  196. this.FormUtil.beforeSave(this);
  197. }
  198. },
  199. 'erpCloseButton': {
  200. click: function(btn){
  201. this.FormUtil.beforeClose(this);
  202. }
  203. },
  204. 'erpUpdateButton': {
  205. click: function(btn){
  206. var form = me.getForm(btn);
  207. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  208. me.BaseUtil.getRandomNumber();//自动添加编号
  209. }
  210. this.FormUtil.onUpdate(this);
  211. }
  212. },
  213. 'erpDeleteButton': {
  214. click: function(btn){
  215. me.FormUtil.onDelete(Ext.getCmp('ecn_id').value);
  216. }
  217. },
  218. 'erpAddButton': {
  219. click: function(){
  220. me.FormUtil.onAdd('addECN', '新增ECN资料', 'jsps/pm/bom/ECN.jsp');
  221. }
  222. },
  223. 'erpSubmitButton': {
  224. afterrender: function(btn){
  225. var status = Ext.getCmp('ecn_checkstatuscode');
  226. if(status && status.value != 'ENTERING'){
  227. btn.hide();
  228. }
  229. },
  230. click: function(btn){
  231. me.FormUtil.onSubmit(Ext.getCmp('ecn_id').value);
  232. }
  233. },
  234. 'erpResSubmitButton': {
  235. afterrender: function(btn){
  236. var status = Ext.getCmp('ecn_checkstatuscode');
  237. if(status && status.value != 'COMMITED'){
  238. btn.hide();
  239. }
  240. },
  241. click: function(btn){
  242. me.FormUtil.onResSubmit(Ext.getCmp('ecn_id').value);
  243. }
  244. },
  245. 'erpAuditButton': {
  246. afterrender: function(btn){
  247. var status = Ext.getCmp('ecn_checkstatuscode');
  248. if(status && status.value != 'COMMITED'){
  249. btn.hide();
  250. }
  251. },
  252. click: function(btn){
  253. me.FormUtil.onAudit(Ext.getCmp('ecn_id').value);
  254. }
  255. },
  256. 'erpResAuditButton': {
  257. afterrender: function(btn){
  258. var status = Ext.getCmp('ecn_checkstatuscode');
  259. if(status && status.value != 'AUDITED'){
  260. btn.hide();
  261. }
  262. },
  263. click: function(btn){
  264. me.FormUtil.onResAudit(Ext.getCmp('ecn_id').value);
  265. }
  266. },
  267. 'erpPrintButton': {
  268. click:function(btn){
  269. var reportName="EcnChange";
  270. var condition='{Ecn.ecn_id}='+Ext.getCmp('ecn_id').value+'';
  271. var id=Ext.getCmp('ecn_id').value;
  272. me.FormUtil.onwindowsPrint(id,reportName,condition);
  273. }
  274. },
  275. 'button[id=ExecuteECNAutobutton]': {
  276. afterrender: function(btn){
  277. var status = Ext.getCmp('ecn_checkstatuscode');
  278. var type = Ext.getCmp('ecn_type');
  279. var didstatus = Ext.getCmp('ecn_didstatuscode');
  280. if(status && status.value != 'AUDITED' ){
  281. btn.hide();
  282. }
  283. if(type && type.value != 'AUTO' ){
  284. btn.hide();
  285. }
  286. if(didstatus && didstatus.value != 'OPEN' ){
  287. btn.hide();
  288. }
  289. }
  290. },
  291. 'dbfindtrigger[name=ed_boid]': {
  292. focus: function(t){
  293. t.autoDbfind = false;
  294. t.setHideTrigger(false);
  295. t.setReadOnly(false);
  296. var record = Ext.getCmp('grid').selModel.getLastSelected();
  297. var type = record.data['ed_type'];
  298. if (type=='' || type == null){
  299. t.setHideTrigger(true);
  300. t.setReadOnly(true);
  301. showError("请先选择操作类型 !");
  302. return;
  303. }
  304. }
  305. },
  306. 'dbfindtrigger[name=ed_bddetno]': {
  307. focus: function(t){
  308. t.autoDbfind = false;
  309. t.setHideTrigger(false);
  310. t.setReadOnly(false);
  311. var record = Ext.getCmp('grid').selModel.getLastSelected();
  312. var bomid = record.data['ed_boid'];
  313. var type = record.data['ed_type'];
  314. if (type=='' || type == null){
  315. showError("请先选择操作类型 !");
  316. t.setHideTrigger(true);
  317. t.setReadOnly(true);
  318. return;
  319. }else{
  320. if(bomid=='' || bomid ==null) {
  321. showError("请先选择BOM编号 !");
  322. t.setHideTrigger(true);
  323. t.setReadOnly(true);
  324. return;
  325. }
  326. if(type=="ADD" ){//需指定BOM 序号
  327. showError("增加物料不需要选择BOM序号!");
  328. t.setHideTrigger(true);
  329. t.setReadOnly(true);
  330. return;
  331. }
  332. }
  333. t.dbBaseCondition = "bd_bomid='" + bomid + "'";
  334. },
  335. aftertrigger:function(t){
  336. var record = Ext.getCmp('grid').selModel.getLastSelected();
  337. var data=record.data;
  338. var type = record.data['ed_type'];
  339. if (type.indexOf("SWITCH")!=-1){
  340. record.set('ed_repcode',data['ed_soncode']);
  341. record.set('ed_soncode',null);
  342. record.set('ed_sonname',null);
  343. record.set('ed_sonspec',null);
  344. record.set('ed_repname',data['ed_sonname']);
  345. record.set('ed_repspec',data['ed_sonspec']);
  346. record.set('ed_newbaseqty',data['ed_oldbaseqty']); //替换的变更,默认新单位用量等于旧单位用量
  347. }
  348. }
  349. },
  350. 'erpSyncButton': {
  351. afterrender: function(btn) {
  352. var form = btn.ownerCt.ownerCt, s = form.down('#ecn_checkstatuscode');
  353. if (s.getValue() != 'AUDITED')
  354. btn.hide();
  355. }
  356. }
  357. });
  358. },
  359. onGridItemClick: function(selModel, record){//grid行选择
  360. this.GridUtil.onGridItemClick(selModel, record);
  361. },
  362. getForm: function(btn){
  363. return btn.ownerCt.ownerCt;
  364. },
  365. turnAutoECN:function(id){
  366. var me = this;
  367. me.FormUtil.setLoading(true);
  368. Ext.Ajax.request({
  369. url : basePath + 'pm/bom/turnAutoECN.action',
  370. params: {
  371. caller:caller,
  372. id: id
  373. },
  374. method : 'post',
  375. callback : function(options,success,response){
  376. me.FormUtil.setLoading(false);
  377. var localJson = new Ext.decode(response.responseText);
  378. if(localJson.success){
  379. Ext.Msg.alert("提示","操作成功!");
  380. window.location.reload();
  381. } else if(localJson.exceptionInfo){
  382. var str = localJson.exceptionInfo;
  383. showError(str);
  384. return;
  385. }
  386. }
  387. });
  388. }
  389. });