Check.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.bom.Check', {
  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.Check','core.form.Panel','core.grid.Panel2','core.toolbar.Toolbar','core.form.MultiField','core.form.FileField',
  9. 'core.button.Add','core.button.Save','core.button.Close','core.button.DeleteDetail','pm.bom.ECRChangeGrid',
  10. 'core.button.Submit','core.button.ResSubmit','core.button.Audit','core.button.ResAudit',
  11. 'core.button.Update','core.button.Delete','core.form.YnField','core.button.TurnECN',
  12. 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.grid.YnColumn','core.button.Print', 'core.button.Sync'
  13. ],
  14. init:function(){
  15. var me = this;
  16. this.control({
  17. 'erpGridPanel2': {
  18. /*afterrender: function(btn){
  19. console.log(Ext.getCmp('grid'));
  20. Ext.getCmp('grid').readOnly = false;
  21. },*/
  22. itemclick: function(selModel, record){
  23. this.GridUtil.onGridItemClick(selModel, record);
  24. }
  25. },
  26. 'erpDeleteDetailButton': {
  27. afterrender: function(btn){
  28. }
  29. },
  30. 'textareafield[name=ecr_tempb]':{
  31. beforerender:function(field){
  32. field.labelAlign='top';
  33. field.height=200;
  34. field.fieldStyle=field.fieldStyle+';font-weight:700;font-color:#0A0A0A;';
  35. }
  36. },
  37. 'textareafield[name=ecr_tempc]':{
  38. beforerender:function(field){
  39. field.labelAlign='top';
  40. field.height=200;
  41. field.fieldStyle=field.fieldStyle+';font-weight:700;font-color:#0A0A0A;';
  42. }
  43. },
  44. 'erpSaveButton': {
  45. click: function(btn){
  46. var form = me.getForm(btn);
  47. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  48. me.BaseUtil.getRandomNumber();//自动添加编号
  49. }
  50. //默认取第一行的旧料处理方式,半成品处理方式,成品处理方式
  51. this.setDefault();
  52. this.FormUtil.beforeSave(this);
  53. }
  54. },
  55. 'erpCloseButton': {
  56. click: function(btn){
  57. this.FormUtil.beforeClose(this);
  58. }/*,
  59. afterrender:function(btn){
  60. var form=btn.ownerCt.ownerCt;
  61. var bool=false;
  62. var insertId=0;
  63. var keys=form.items.keys;
  64. Ext.Array.each(keys,function(key,index){
  65. if(key=='ecr_tempc'){
  66. insertId=index;
  67. bool=true;
  68. return;
  69. }
  70. });
  71. if(bool){
  72. var tempb=Ext.getCmp('ecr_tempb').value;
  73. var tempc=Ext.getCmp('ecr_tempc').value;
  74. form.insert(insertId+1,{
  75. title:'变更前后',
  76. columnWidth:1,
  77. griddata:{
  78. tempb:tempb,
  79. tempc:tempc
  80. },
  81. xtype:'erpECRChangeGridPanel'
  82. });
  83. }
  84. }*/
  85. },
  86. 'erpUpdateButton': {
  87. click: function(btn){
  88. //如果为空设置默认旧料处理方式
  89. this.setDefault();
  90. this.FormUtil.onUpdate(this);
  91. }
  92. },
  93. 'erpDeleteButton': {
  94. click: function(btn){
  95. me.FormUtil.onDelete(Ext.getCmp('ecr_id').value);
  96. }
  97. },
  98. 'erpAddButton': {
  99. click: function(){
  100. me.FormUtil.onAdd('addCheck', '新增ECR资料', 'jsps/pm/bom/check.jsp');
  101. }
  102. },
  103. 'erpSubmitButton': {
  104. afterrender: function(btn){
  105. var status = Ext.getCmp('ecr_checkstatus2code');
  106. if(status && status.value != 'ENTERING'){
  107. btn.hide();
  108. }
  109. },
  110. click: function(btn){
  111. me.onSubmit(Ext.getCmp('ecr_id').value);
  112. }
  113. },
  114. 'erpResSubmitButton': {
  115. afterrender: function(btn){
  116. var status = Ext.getCmp('ecr_checkstatus2code');
  117. if(status && status.value != 'COMMITED'){
  118. btn.hide();
  119. }
  120. },
  121. click: function(btn){
  122. me.FormUtil.onResSubmit(Ext.getCmp('ecr_id').value);
  123. }
  124. },
  125. 'erpPrintButton': {
  126. click:function(btn){
  127. var reportName="EcrAudit";
  128. var condition='{ECR.ecr_id}='+Ext.getCmp('ecr_id').value+'';
  129. var id=Ext.getCmp('ecr_id').value;
  130. me.FormUtil.onwindowsPrint(id,reportName,condition);
  131. }
  132. },
  133. 'erpAuditButton': {
  134. afterrender: function(btn){
  135. var status = Ext.getCmp('ecr_checkstatus2code');
  136. if(status && status.value != 'COMMITED'){
  137. btn.hide();
  138. }
  139. },
  140. click: function(btn){
  141. me.FormUtil.onAudit(Ext.getCmp('ecr_id').value);
  142. }
  143. },
  144. 'erpResAuditButton': {
  145. afterrender: function(btn){
  146. var status = Ext.getCmp('ecr_checkstatus2code');
  147. if(status && status.value != 'AUDITED'){
  148. btn.hide();
  149. }
  150. },
  151. click: function(btn){
  152. me.FormUtil.onResAudit(Ext.getCmp('ecr_id').value);
  153. }
  154. },
  155. 'erpTurnECNButton': {
  156. afterrender: function(btn){
  157. var status = Ext.getCmp('ecr_checkstatus2code');
  158. if(status && status.value != 'AUDITED'){
  159. btn.hide();
  160. }
  161. },
  162. click: function(btn){
  163. warnMsg("确定要转入工程变更单吗?", function(btn){
  164. if(btn == 'yes'){
  165. me.FormUtil.getActiveTab().setLoading(true);//loading...
  166. Ext.Ajax.request({
  167. url : basePath + 'pm/bom/turnECN.action',
  168. params: {
  169. id: Ext.getCmp('ecr_id').value
  170. },
  171. method : 'post',
  172. callback : function(options,success,response){
  173. me.FormUtil.getActiveTab().setLoading(false);
  174. var localJson = new Ext.decode(response.responseText);
  175. if(localJson.exceptionInfo){
  176. showError(localJson.exceptionInfo);
  177. }
  178. if(localJson.success){
  179. var id = localJson.id;
  180. if (id && id>0){
  181. if(localJson.error != null && localJson.error != ""){
  182. showMessage("提示", str);
  183. }
  184. turnSuccess(function(){
  185. var url = "jsps/pm/bom/ECN.jsp?formCondition=ecn_idIS" + id + "&gridCondition=ed_ecnidIS"+id;
  186. me.FormUtil.onAdd('ECN' + id, '工程变更单' + id, url);
  187. });
  188. }else
  189. showError("此单据不需要转ECN!");
  190. }
  191. }
  192. });
  193. }
  194. });
  195. }
  196. },
  197. 'combo[name=ecrd_type]':{
  198. change:function(t, newValue, oldValue, eOpts ){
  199. var record = Ext.getCmp('grid').selModel.getLastSelected();
  200. if(newValue!='' && newValue!=null ){
  201. if(newValue.indexOf("BATCH")!=-1 && record.get('ecrd_isbatch')!=-1 ){
  202. record.set('ecrd_isbatch',-1);
  203. }else if(newValue.indexOf("BATCH")== -1 && record.get('ecrd_isbatch')!=0){
  204. record.set('ecrd_isbatch',0);
  205. }
  206. }
  207. }
  208. },
  209. 'dbfindtrigger[name=ecrd_bomid]': {
  210. focus: function(t){
  211. t.setHideTrigger(false);
  212. t.setReadOnly(false);
  213. var record = Ext.getCmp('grid').selModel.getLastSelected();
  214. var type = record.data['ecrd_type'];
  215. if (type=='' || type == null){
  216. showError("请先选择操作类型 !");
  217. t.setHideTrigger(true);
  218. t.setReadOnly(true);
  219. }else{
  220. if(type.indexOf("BATCH")!=-1){//需指定BOM
  221. showError("批量操作不能指定BOM!");
  222. t.setHideTrigger(true);
  223. t.setReadOnly(true);
  224. }
  225. if(type =='CHANGENAME'){
  226. showError("变更描述不需要指定BOM!");
  227. t.setHideTrigger(true);
  228. t.setReadOnly(true);
  229. }
  230. }
  231. }
  232. },
  233. 'dbfindtrigger[name=ecrd_bddetno]': {
  234. focus: function(t){
  235. t.autoDbfind = false;
  236. t.setHideTrigger(false);
  237. t.setReadOnly(false);
  238. var record = Ext.getCmp('grid').selModel.getLastSelected();
  239. var bomid = record.data['ecrd_bomid'];
  240. var type = record.data['ecrd_type'];
  241. if (type=='' || type == null){
  242. showError("请先选择操作类型 !");
  243. t.setHideTrigger(true);
  244. t.setReadOnly(true);
  245. return;
  246. }else{
  247. if( type.indexOf("BATCH")!=-1 ){//批量处理,不需要指定BOM和序号
  248. showError("批量处理不需要指定BOM和序号 !");
  249. t.setHideTrigger(true);
  250. t.setReadOnly(true);
  251. return;
  252. }else{//非批量处理
  253. if(bomid=='' || bomid ==null) {
  254. if( type.indexOf("BATCH")==-1 ){//非批量处理,需指定BOM
  255. showError("请先选择BOM编号 !");
  256. t.setHideTrigger(true);
  257. t.setReadOnly(true);
  258. return;
  259. }
  260. }
  261. if(type=="ADD" ){//需指定BOM 序号
  262. showError("增加物料不需要选择BOM序号!");
  263. t.setHideTrigger(true);
  264. t.setReadOnly(true);
  265. return;
  266. }
  267. }
  268. }
  269. t.dbBaseCondition = "bd_bomid='" + bomid + "'";
  270. },
  271. aftertrigger:function(t){
  272. var record = Ext.getCmp('grid').selModel.getLastSelected();
  273. var data=record.data;
  274. var type = record.data['ecrd_type'];
  275. if (type.indexOf("SWITCH")!=-1){
  276. record.set('ecrd_repcode',data['ecrd_soncode']);
  277. if(record.data['ecrd_sonname']){
  278. record.set('ecrd_repname',data['ecrd_sonname']);
  279. record.set('ecrd_repspec',data['ecrd_sonspec']);
  280. record.set('ecrd_sonname',null);
  281. record.set('ecrd_sonspec',null);
  282. }else if (record.data['pr_detail']){
  283. record.set('ecrd_repname',data['pr_detail']);
  284. record.set('ecrd_repspec',data['pr_spec']);
  285. record.set('pr_detail',null);
  286. record.set('pr_spec',null);
  287. }
  288. record.set('ecrd_soncode',null);
  289. record.set('ecrd_newbaseqty',data['ecrd_oldbaseqty']);
  290. }
  291. }
  292. },
  293. 'dbfindtrigger[name=ecrd_soncode]': {
  294. aftertrigger:function(t){
  295. var record = Ext.getCmp('grid').selModel.getLastSelected();
  296. var data = record.data;
  297. var type = record.data['ecrd_type'];
  298. if (type.indexOf("CHANGENAME")!=-1){
  299. if(record.data['ecrd_repname'] == '' || record.data['ecrd_repname'] == null){
  300. //ed_repname为空则返回ecrd_sonname字段
  301. record.set('ecrd_repname',data['ecrd_sonname']);
  302. }
  303. if(record.data['ecrd_repspec'] == '' || record.data['ecrd_repspec'] == null){
  304. //ed_repspec空则返回ecrd_sonspec
  305. record.set('ecrd_repspec',data['ecrd_sonspec']);
  306. }
  307. }
  308. }
  309. },
  310. 'erpSyncButton': {
  311. afterrender: function(btn) {
  312. var form = btn.ownerCt.ownerCt, s = form.down('#ecr_checkstatus2code');
  313. if (s.getValue() != 'AUDITED')
  314. btn.hide();
  315. }
  316. }
  317. });
  318. },
  319. onGridItemClick: function(selModel, record){//grid行选择
  320. this.GridUtil.onGridItemClick(selModel, record);
  321. },
  322. getForm: function(btn){
  323. return btn.ownerCt.ownerCt;
  324. },
  325. onSubmit: function(id){
  326. var me=this;
  327. var form = Ext.getCmp('form');
  328. if(form && form.getForm().isValid()){
  329. var s = me.FormUtil.checkFormDirty(form);
  330. var grids = Ext.ComponentQuery.query('gridpanel');
  331. if(grids.length > 0){//check所有grid是否已修改
  332. var param = grids[0].GridUtil.getAllGridStore(grids[0]);
  333. /*
  334. if(param == null || param == ''){
  335. if (Ext.getCmp('ecr_newprodname').value==''|| Ext.getCmp('ecr_newspec').value==''){
  336. showError("明细表还未添加数据,无法提交!");
  337. return;
  338. }
  339. }
  340. */
  341. Ext.each(grids, function(grid, index){
  342. if(grid.GridUtil){
  343. var msg = grid.GridUtil.checkGridDirty(grid);
  344. if(msg.length > 0){
  345. s = s + '<br/>' + grid.GridUtil.checkGridDirty(grid);
  346. }
  347. }
  348. });
  349. }
  350. if(s == '' || s == '<br/>'){
  351. me.FormUtil.submit(id);
  352. } else {
  353. Ext.MessageBox.show({
  354. title:'保存修改?',
  355. msg: '该单据已被修改:<br/>' + s + '<br/>提交前要先保存吗?',
  356. buttons: Ext.Msg.YESNOCANCEL,
  357. icon: Ext.Msg.WARNING,
  358. fn: function(btn){
  359. if(btn == 'yes'){
  360. me.FormUtil.onUpdate(form);
  361. } else if(btn == 'no'){
  362. me.FormUtil.submit(id);
  363. } else {
  364. return;
  365. }
  366. }
  367. });
  368. }
  369. } else {
  370. me.FormUtil.checkForm();
  371. }
  372. },
  373. setDefault:function(){
  374. var grid = Ext.getCmp('grid'), items = grid.store.data.items;
  375. var firstItem = grid.store.getAt(0);
  376. if(firstItem) {
  377. var oldprod = firstItem.get('ecrd_oldproddeal'), semis = firstItem.get('ecrd_semisdeal'),
  378. endprod = firstItem.get('ecrd_endproddeal');
  379. Ext.Array.each(items, function(item){
  380. if(!Ext.isEmpty(item.data['ecrd_bomid'])){
  381. if(Ext.isEmpty(item.data['ecrd_oldproddeal'])){
  382. item.set('ecrd_oldproddeal', oldprod);
  383. }
  384. if(Ext.isEmpty(item.data['ecrd_semisdeal'])){
  385. item.set('ecrd_semisdeal', semis);
  386. }
  387. if(Ext.isEmpty(item.data['ecrd_endproddeal'])){
  388. item.set('ecrd_endproddeal', endprod);
  389. }
  390. }
  391. });
  392. }
  393. }
  394. });