Ext.QuickTips.init();
Ext.define('erp.controller.scm.sale.SaleProject', {
extend: 'Ext.app.Controller',
FormUtil: Ext.create('erp.util.FormUtil'),
BaseUtil: Ext.create('erp.util.BaseUtil'),
views:[
'scm.sale.SaleProject','core.form.Panel','core.form.MultiField',
'core.button.Add','core.button.Save','core.button.Update','core.button.Delete','core.button.Submit','core.button.ResSubmit',
'core.button.Audit','core.button.ResAudit','core.button.Close','core.button.TurnSale','core.form.FileField',
'core.trigger.TextAreaTrigger','core.trigger.DbfindTrigger','core.trigger.MultiDbfindTrigger','core.form.YnField','core.form.CheckBoxGroup','core.form.CheckBoxContainer',
'core.form.RadioGroup','core.form.SplitTextField','core.grid.ItemGrid','core.button.TurnProject'
],
init:function(){
var me = this;
this.control({
'erpTurnProject':{
afterrender: function(btn){
var status = Ext.getCmp('sp_statuscode');
if(status && status.value != 'AUDITED'){
btn.hide();
}
},
click:function(btn){
warnMsg("确定要转入立项申请吗?", function(btn){
if(btn == 'yes'){
me.FormUtil.getActiveTab().setLoading(true);//loading...
Ext.Ajax.request({
url : basePath + 'scm/sale/turnProject.action',
params: {
caller: caller,
id: Ext.getCmp('sp_id').value
},
method : 'post',
callback : function(options,success,response){
me.FormUtil.getActiveTab().setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.exceptionInfo){
showError(localJson.exceptionInfo);
}
if(localJson.success){
turnSuccess(function(){
var id = localJson.id;
var url = "jsps/plm/project/project.jsp?formCondition=prj_id=" + id;
me.FormUtil.onAdd('Project' + id, '立项申请' + id, url);
});
}
}
});
}
});
}
},
'erpSaveButton': {
click: function(btn){
var form = me.getForm(btn);
if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
me.BaseUtil.getRandomNumber(); //自动添加编号
}
this.FormUtil.beforeSave(this);
}
},
'erpDeleteButton' : {
afterrender: function(btn){
var status = Ext.getCmp('sp_statuscode');
if(status && status.value != 'ENTERING'){
btn.hide();
}
},
click: function(btn){
me.FormUtil.onDelete(Ext.getCmp('sp_id').value);
}
},
'erpUpdateButton': {
afterrender: function(btn){
var status = Ext.getCmp('sp_statuscode');
if(status && status.value != 'ENTERING'){
btn.hide();
}
},
click: function(btn){
me.onUpdate(this);
}
},
'erpAddButton': {
click: function(){
me.FormUtil.onAdd('addSaleProject', '新增订单评审', 'jsps/scm/sale/saleProject.jsp');
}
},
'erpCloseButton': {
click: function(btn){
me.FormUtil.beforeClose(me);
}
},
'erpSubmitButton': {
afterrender: function(btn){
var status = Ext.getCmp('sp_statuscode');
if(status && status.value != 'ENTERING'){
btn.hide();
}
},
click: function(btn){
me.onSubmit(Ext.getCmp('sp_id').value);
}
},
'erpResSubmitButton': {
afterrender: function(btn){
var status = Ext.getCmp('sp_statuscode');
if(status && status.value != 'COMMITED'){
btn.hide();
}
},
click: function(btn){
me.FormUtil.onResSubmit(Ext.getCmp('sp_id').value);
}
},
'erpAuditButton': {
afterrender: function(btn){
var status = Ext.getCmp('sp_statuscode');
if(status && status.value != 'COMMITED'){
btn.hide();
}
},
click: function(btn){
me.FormUtil.onAudit(Ext.getCmp('sp_id').value);
}
},
'erpResAuditButton': {
afterrender: function(btn){
var status = Ext.getCmp('sp_statuscode');
if(status && status.value != 'AUDITED'){
btn.hide();
}
},
click: function(btn){
me.FormUtil.onResAudit(Ext.getCmp('sp_id').value);
}
},
// 'dbfindtrigger[name=ps_address]': {
// afterrender:function(trigger){
// trigger.dbKey='ps_custcode';
// trigger.mappingKey='cu_code';
// trigger.dbMessage='请先选客户编号!';
// }
// },
'combo[name=ps_type]': {
delay: 200,
change: function(m){
this.hidecolumns(m);
}
}
});
},
getForm: function(btn){
return btn.ownerCt.ownerCt;
},
/**
* 单据保存
* @param param 传递过来的数据,比如gridpanel的数据
*/
onSave: function(param){
var me = this;
var form = Ext.getCmp('form');
if(form.getForm().isValid()){
//form里面数据
Ext.each(form.items.items, function(item){
if(item.xtype == 'numberfield'){
//number类型赋默认值,不然sql无法执行
if(item.value == null || item.value == ''){
item.setValue(0);
}
}
});
var r = form.getValues();
//去除ignore字段
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(!me.FormUtil.contains(form.saveUrl, '?caller=', true)){
form.saveUrl = form.saveUrl + "?caller=" + caller;
}
me.save(r, param);
}else{
me.FormUtil.checkForm();
}
},
save: function(){
var params = new Object();
var r = arguments[0];
Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
if(contains(k, 'ext-', true)){
delete r[k];
}
});
params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
var me = this;
var form = Ext.getCmp('form');
me.FormUtil.setLoading(true);
Ext.Ajax.request({
url : basePath + form.saveUrl,
params : params,
method : 'post',
callback : function(options,success,response){
me.FormUtil.setLoading(false);
var localJson = new Ext.decode(response.responseText);
if(localJson.success){
saveSuccess(function(){
//add成功后刷新页面进入可编辑的页面
var value = r[form.keyField];
var formCondition = form.keyField + "IS" + value ;
var gridCondition = '';
if(me.FormUtil.contains(window.location.href, '?', true)){
window.location.href = window.location.href + '&formCondition=' +
formCondition + '&gridCondition=' + gridCondition;
} else {
window.location.href = window.location.href + '?formCondition=' +
formCondition + '&gridCondition=' + gridCondition;
}
});
} else if(localJson.exceptionInfo){
var str = localJson.exceptionInfo;
if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
str = str.replace('AFTERSUCCESS', '');
saveSuccess(function(){
//add成功后刷新页面进入可编辑的页面
var value = r[form.keyField];
var formCondition = form.keyField + "IS" + value ;
var gridCondition = '';
if(me.FormUtil.contains(window.location.href, '?', true)){
window.location.href = window.location.href + '&formCondition=' +
formCondition + '&gridCondition=' + gridCondition;
} else {
window.location.href = window.location.href + '?formCondition=' +
formCondition + '&gridCondition=' + gridCondition;
}
});
showError(str);
} else {
showError(str);
return;
}
} else{
saveFailure();//@i18n/i18n.js
}
}
});
},
/**
* 检查form未完善的字段
*/
checkForm: function(){
var s = '';
var form = Ext.getCmp('form');
form.getForm().getFields().each(function (item, index, length){
if(!item.isValid()){
if(s != ''){
s += ',';
}
if(item.fieldLabel || item.ownerCt.fieldLabel){
s += item.fieldLabel || item.ownerCt.fieldLabel;
}
}
});
if(s == ''){
return true;
}
showError($I18N.common.form.necessaryInfo1 + '(' + s.replace(/ /g,'') +
')' + $I18N.common.form.necessaryInfo2);
return false;
},
/**
* 单据修改
* @param form formpanel表
* @param param 传递过来的数据,比如gridpanel的数据
*/
onUpdate: function(me){
var mm = this;
var form = Ext.getCmp('form');
// var s1 = mm.checkFormDirty(form);
var s2 = '';
var grids = Ext.ComponentQuery.query('gridpanel');
var removea = new Array();
Ext.each(grids,function(g,index){
if(g.xtype=='itemgrid'){
g.updateValue();
removea.push(g);
}
});
Ext.each(removea,function(r,index){
Ext.Array.remove(grids,r);
});
if(grids.length > 0){//check所有grid是否已修改
Ext.each(grids, function(grid, index){
if(grid.GridUtil){
var msg = grid.GridUtil.checkGridDirty(grid);
if(msg.length > 0){
s2 = s2 + '
' + grid.GridUtil.checkGridDirty(grid);
}
}
});
}
if(form && form.getForm().isValid()){
//form里面数据
var r = form.getValues(false, true);
//去除ignore字段
var keys = Ext.Object.getKeys(r), f;
Ext.each(keys, function(k){
f = form.down('#' + k);
if(f && f.logic == 'ignore') {
delete r[k];
}
});
if(!mm.FormUtil.contains(form.updateUrl, '?caller=', true)){
form.updateUrl = form.updateUrl + "?caller=" + caller;
}
var params = [];
if(grids.length > 0){
var param = grids[0].GridUtil.getGridStore();
if(grids[0].necessaryField.length > 0 && (param == null || param == '')){
warnMsg('明细表还未添加数据,是否继续?', function(btn){
if(btn == 'yes'){
params = unescape("[" + param.toString().replace(/\\/g,"%") + "]");
} else {
return;
}
});
} else {
params = unescape("[" + param.toString().replace(/\\/g,"%") + "]");
}
}
mm.update(r, params);
}else{
mm.checkForm(form);
}
},
update: function(){
var me = this, params = new Object();
var r = arguments[0];
Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
if(contains(k, 'ext-', true)){
delete r[k];
}
});
params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
params.param = unescape(arguments[1].toString().replace(/\\/g,"%"));
for(var i=2; i 0){//check所有grid是否已修改
var param = grids[0].GridUtil.getAllGridStore(grids[0]);
if(grids[0].necessaryField && grids[0].necessaryField.length > 0 && (param == null || param == '') && (allowEmpty !== true)){
showError("明细表还未添加数据,无法提交!");
return;
}
Ext.each(grids, function(grid, index){
if(grid.GridUtil){
var msg = grid.GridUtil.checkGridDirty(grid);
if(msg.length > 0){
// s = s + '
' + grid.GridUtil.checkGridDirty(grid);
}
}
});
}
me.FormUtil.submit(id);
} else {
me.checkForm();
}
}
});