Ext.QuickTips.init(); Ext.define('erp.controller.pm.bom.BOM', { extend: 'Ext.app.Controller', FormUtil: Ext.create('erp.util.FormUtil'), BaseUtil: Ext.create('erp.util.BaseUtil'), GridUtil: Ext.create('erp.util.GridUtil'), views:[ 'pm.bom.BOM','core.form.Panel','core.grid.Panel2','core.toolbar.Toolbar','core.button.BomCopy', 'core.button.Add','core.button.Save','core.button.Close','core.button.DeleteDetail', 'core.button.Submit','core.button.ResSubmit','core.button.Audit','core.button.ResAudit', 'core.button.Update','core.button.Delete','core.form.YnField','core.grid.YnColumn','core.button.Flow','core.button.Print', 'core.button.SonBOM','core.button.Location','core.button.Replace','core.button.FeatureDefinition', 'core.button.Banned','core.button.ResBanned','core.form.FileField','core.button.Sync','core.button.FeatureQuery', 'core.button.LoadRelation', 'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.form.MultiField','core.button.BOMTurn','core.button.BomUpdatePast' //,'core.button.ScanFeatureSet' ], init:function(){ var me = this; this.control({ 'textfield[name=bo_ispast]':{ beforerender: function(field){ field.readOnly=false; } }, 'erpGridPanel2': { itemclick: function(selModel, record){ Ext.getCmp('sonbom').setDisabled(false); Ext.getCmp('replace').setDisabled(false); Ext.getCmp('location').setDisabled(false); Ext.getCmp('featuredefinition').setDisabled(false); Ext.getCmp('FeatureQuery').setDisabled(false); this.GridUtil.onGridItemClick(selModel, record); } }, 'erpDeleteDetailButton': { afterrender: function(btn){ btn.ownerCt.add({ xtype: 'erpSonBOMButton' }); btn.ownerCt.add({ xtype: 'erpReplaceButton' }); btn.ownerCt.add({ xtype: 'erpLocationButton' }); btn.ownerCt.add({ xtype: 'erpFeatureDefinitionButton' }); btn.ownerCt.add({ xtype: 'erpFeatureQueryButton' }); } }, 'erpBomTurnButton':{ afterrender:function(btn){ var statuscode=Ext.getCmp('bo_statuscode').getValue(); if(statuscode&&statuscode!='AUDITED'){ btn.hide(); } } }, 'erpBomCopyButton':{ /* afterrender:function(btn){ var statuscode=Ext.getCmp('bo_statuscode').getValue(); if(statuscode&&statuscode!='AUDITED'){ btn.hide(); } }, */ click:function(btn){ Ext.create('Ext.window.Window', { title: '指定节点处理人', height: 200, width: 400, layout: 'column', id:'win', buttonAlign:'center', defaults:{ fieldStyle:'background:#FFFAFA;color:#515151;', columnWidth:1 }, allowDrag:false, items: [{ xtype:'dbfindtrigger', fieldLabel:'父件编号', name:'mothercode', id:'mothercode', fieldStyle:'background:#fffac0;color:#515151;', allowBlank:false },{ xtype:'textfield', fieldLabel:'父件名称', name:'motherdetail', id:'motherdetail', allowBlank:true },{ xtype:'textfield', fieldLabel:'规格', name:'motherspec', id:'motherspec', allowBlank:true },{ xtype:'hidden', name:'motherid', id:'motherid' }], buttons:[{ text:$I18N.common.button.erpConfirmButton, xtype:'button', formBind: true, handler:function(){ var id=Ext.getCmp('motherid').getValue(); var form=Ext.getCmp('form'); var r=form.getValues(); var keys = Ext.Object.getKeys(r), f; var reg = /[!@#$%^&*()'":,\/?]/; Ext.each(keys, function(k){ f = form.down('#' + k); if(f && f.logic == 'ignore') { delete r[k]; } //codeField值强制大写,自动过滤特殊字符 if(k == form.codeField && !Ext.isEmpty(r[k])) { r[k] = r[k].trim().toUpperCase().replace(reg, ''); } if(contains(k, 'ext-', true)){ delete r[k]; } }); var grid = Ext.getCmp('grid'); var jsonGridData = new Array(); var form = Ext.getCmp('form'); var s = grid.getStore().data.items;//获取store里面的数据 var dd; for(var i=0;i'+"'DISABLE')"; var id=Ext.getCmp('bo_id').value; me.FormUtil.onwindowsPrint(id,reportName,condition); } }, 'erpAddButton': { click: function(){ me.FormUtil.onAdd('addBOM', '新增BOM资料', 'jsps/pm/bom/BOM.jsp'); } }, 'erpSubmitButton': { afterrender: function(btn){ var status = Ext.getCmp('bo_statuscode'); if((Ext.getCmp('bo_id').value == null || Ext.getCmp('bo_id').value == '') || (status && status.value != 'ENTERING')){ btn.hide(); } }, click: function(btn){ var grid = Ext.getCmp('grid'); var items = grid.store.data.items; var bool = true; /*Ext.each(items, function(item){ if(item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){ if(item.data['bd_baseqty'] == null || item.data['bd_baseqty'] == 0){ bool = false; showError("明细第" + item.data['bd_detno'] + "行未填写单位用量,不能提交!");return; } } });*/ if(bool){ //wanlida bom明细有为空的情况。 me.FormUtil.onSubmit(Ext.getCmp('bo_id').value,true); } } }, 'erpBannedButton':{ afterrender:function(btn){ var statuscode=Ext.getCmp('bo_statuscode').getValue(); if(statuscode&&statuscode=='DISABLE'){ btn.hide(); } if(statuscode && statuscode != 'AUDITED'){ btn.hide(); } }, click:function(btn){ //bom 禁用 me.changeBOM("Banned","禁用"); } }, 'erpResBannedButton':{ afterrender:function(btn){ var statuscode=Ext.getCmp('bo_statuscode').getValue(); if(statuscode&&statuscode!='DISABLE'){ btn.hide(); } }, click:function(btn){ //bom 反禁用 me.changeBOM("ResBanned",'反禁用'); } }, 'erpFeatureDefinitionButton':{ click: function(btn){ var grid = Ext.getCmp('grid'); var record = grid.selModel.lastSelected; if(record.data.bd_soncode != null){ Ext.Ajax.request({//拿到grid的columns url : basePath + "pm/bom/getDescription.action", params: { tablename: 'Product', field: 'pr_specvalue', condition: "pr_code='" + record.data.bd_soncode + "'" }, method : 'post', async: false, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo){ showError(res.exceptionInfo);return; } if(res.success){ if(res.description != '' && res.description != null && res.description == 'NOTSPECIFIC'){ var formCondition="pr_code='"+record.data.bd_soncode+"'"; var gridCondition="pf_prodcode='"+record.data.bd_soncode+"'"; var win = new Ext.window.Window({ id : 'win', title: '物料特征项设置', height: "90%", width: "70%", maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', layout : 'fit', html : '' }] }); win.show(); } else { showError('物料特征必须为虚拟特征件');return; } } } }); } } }, 'erpFeatureQueryButton':{ click: function(btn){ var grid = Ext.getCmp('grid'); var record = grid.selModel.lastSelected; if(record.data.bd_soncode != null){ Ext.Ajax.request({//拿到grid的columns url : basePath + "pm/bom/getDescription.action", params: { tablename: 'Product', field: 'pr_specvalue', condition: "pr_code='" + record.data.bd_soncode + "'" }, method : 'post', async: false, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo){ showError(res.exceptionInfo); return; } if(res.success){ if(res.description != '' && res.description != null && res.description == 'NOTSPECIFIC'){ var win = new Ext.window.Window({ id : 'win', title: '生成特征料号', height: "90%", width: "90%", maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', layout : 'fit', html : '' }] }); win.show(); } else { showError('物料特征必须为虚拟特征件');return; } } } }); } } }, 'erpResSubmitButton': { afterrender: function(btn){ var status = Ext.getCmp('bo_statuscode'); if(status && status.value != 'COMMITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onResSubmit(Ext.getCmp('bo_id').value); } }, 'erpAuditButton': { afterrender: function(btn){ var status = Ext.getCmp('bo_statuscode'); if(status && status.value != 'COMMITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onAudit(Ext.getCmp('bo_id').value); } }, 'erpResAuditButton': { afterrender: function(btn){ var status = Ext.getCmp('bo_statuscode'); if(status && status.value != 'AUDITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onResAudit(Ext.getCmp('bo_id').value); } }, 'erpBomUpdatePastButton': { afterrender:function(btn){ if(!Ext.getCmp('bo_id').getValue()>0){ btn.hide(); } }, click: function(btn){ Ext.Ajax.request({//拿到grid的columns url : basePath + "pm/bom/updateBOMPast.action", params: { bo_id:Ext.getCmp('bo_id').value, value:Ext.getCmp('bo_ispast').value }, method : 'post', async: false, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo){ showError(res.exceptionInfo); return; }else{ Ext.Msg.alert('提示','更新成功'); return; } } }); } }, 'field[name=bo_id]': { change: function(f){ if(f.value != null){ formCondition = 'bo_idIS' + f.value; gridCondition = 'bd_boidIS' + f.value; me.changeButtons(Ext.getCmp('bo_statuscode').value); } } }, 'field[name=bo_statuscode]': { change: function(f){ if(f.value != null){ me.changeButtons(f.value); } } }, 'dbfindtrigger[name=bo_mothercode]': { aftertrigger: function(f){ me.FormUtil.loadNewStore(f.ownerCt, {caller: caller, condition: "bo_mothercode='" + f.value + "'"}); var grid = Ext.getCmp('grid'); grid.GridUtil.loadNewStore(grid, {caller: caller, condition: "bd_mothercode='" + f.value + "'"}); } }, 'dbfindtrigger[name=bd_soncode]': { focus: function(t){ t.autoDbfind = false; var grid = Ext.getCmp('grid'); var p = Ext.getCmp('bo_mothercode').value; if(p != null && p!= ''){ var c = "(pr_code<>'" + p + "'"; Ext.each(grid.store.data.items, function(item){ if(item.data['bd_soncode'] != null && item.data['bd_soncode'] != ''){ if(t.value != item.data['bd_soncode']) c += " and pr_code<>'" + item.data['bd_soncode'] + "'"; } }); t.dbBaseCondition = c + ")"; } else { showError('未选择父件');return; } }, /* change: function(t){ },*/ aftertrigger: function(t){ var grid = Ext.getCmp('grid'); t.setHideTrigger(false); t.setReadOnly(false); var record = grid.selModel.lastSelected; Ext.each(grid.store.data.items, function(item){ if(item.data['bd_soncode'] != null && item.data['bd_soncode'] != ''){ if(item.data['bd_detno'] != record.data['bd_detno'] && t.value == item.data['bd_soncode']){ t.setHideTrigger(true); t.setReadOnly(true); t.setValue(''); showError('请不要重复选择料号 ' + t.value);return; } } }); me.FormUtil.getFieldsValue('BOM', 'bo_id', "bo_mothercode='" + t.value + "'", 'bd_sonbomid', grid.selModel.lastSelected); } } }); }, getForm: function(btn){ return btn.ownerCt.ownerCt; }, changeButtons: function(value){ switch(value){ case 'ENTERING': if(Ext.getCmp('bo_id').value != null){ Ext.getCmp('save').hide(); Ext.getCmp('updatebutton').show(); Ext.getCmp('deletebutton').show(); Ext.getCmp('submit').show(); } else { Ext.getCmp('save').show(); Ext.getCmp('updatebutton').hide(); Ext.getCmp('submit').hide(); Ext.getCmp('deletebutton').hide(); } Ext.getCmp('resSubmit').hide(); Ext.getCmp('auditbutton').hide(); Ext.getCmp('resAudit').hide(); break; case 'COMMITED': Ext.getCmp('save').hide(); Ext.getCmp('updatebutton').hide(); Ext.getCmp('submit').hide(); Ext.getCmp('resSubmit').show(); Ext.getCmp('auditbutton').show(); Ext.getCmp('resAudit').hide(); Ext.getCmp('deletebutton').hide(); break; case 'AUDITED': Ext.getCmp('save').hide(); Ext.getCmp('updatebutton').hide(); Ext.getCmp('submit').hide(); Ext.getCmp('resSubmit').hide(); Ext.getCmp('auditbutton').hide(); Ext.getCmp('resAudit').show(); Ext.getCmp('deletebutton').hide(); break; } }, changeBOM:function(type,title){ Ext.create('Ext.window.Window',{ width:350, height:185, id:'win', title:'

'+title+'BOM

', layout:'column', items:[{ xtype:'textarea', columnWidth:1, fieldLabel:title+'原因', name:'remark', editable:true, id:'remark', fieldStyle:'background:#fffac0;color:#515151;' }], buttonAlign:'center', buttons:[{ xtype:'button', columnWidth:0.12, text:'保存', width:60, iconCls: 'x-button-icon-save', handler:function(btn){ var remark=Ext.getCmp('remark').getValue(); var boid=Ext.getCmp('bo_id').getValue(); alert(remark); if(!remark){ showError('请先填写相应的'+title+'原因!') ; return; }else{ var dd=new Object(); dd['botype']=type; dd['boid']=boid; dd['remark']=remark; Ext.Ajax.request({ url : basePath +'pm/bom/handleBOM.action', params :{ data:unescape(Ext.JSON.encode(dd)), caller:caller }, method : 'post', callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.success){ Ext.Msg.alert('提示','更新成功!',function(){ Ext.getCmp('win').close(); window.location.reload(); }); } else if(localJson.exceptionInfo){ var str = localJson.exceptionInfo; showError(str); return; } else{ saveFailure(); } } }); } } },{ xtype:'button', columnWidth:0.1, text:'关闭', width:60, iconCls: 'x-button-icon-close', margin:'0 0 0 10', handler:function(btn){ Ext.getCmp('win').close(); } }] }).show(); } });