Ext.define('erp.view.scm.reserve.barStockCode.Form',{
extend: 'Ext.form.Panel',
alias: 'widget.erpBarStockCodeFormPanel',
id: 'barStockCodeForm',
region: 'north',
frame : true,
layout : 'column',
autoScroll : true,
defaultType : 'textfield',
labelSeparator : ':',
buttonAlign : 'center',
cls: 'u-form-default',
fieldDefaults : {
fieldStyle : "background:#FFFAFA;color:#515151;",
focusCls: 'x-form-field-cir-focus',
labelAlign : "right",
msgTarget: 'side',
blankText : $I18N.common.form.blankText
},
requires: ['erp.view.common.JProcess.SetNodeGridPanel'],
FormUtil: Ext.create('erp.util.FormUtil'),
BaseUtil: Ext.create('erp.util.BaseUtil'),
saveUrl: '',
updateUrl: '',
deleteUrl: '',
auditUrl: '',
resAuditUrl: '',
submitUrl: '',
resSubmitUrl: '',
bannedUrl: '',
resBannedUrl: '',
postUrl:'',
printUrl: '',
getIdUrl: '',
keyField: '',
codeField: '',
statusField: '',
params: null,
caller: null,
formCondition:null,
Contextvalue:null,
LastValue:null,
enableTools: true,
enableKeyEvents: true,
_noc: 0,
initComponent : function(){
formCondition = getUrlParam('formCondition');//从url解析参数
formCondition = (formCondition == null) ? "" : formCondition.replace(/IS/g,"=");
//集团版
var master=getUrlParam('newMaster');
var param = {caller: this.caller || caller, condition: this.formCondition || formCondition, _noc: (getUrlParam('_noc') || this._noc)};
if(master){
param.master=master;
}
this.FormUtil.getItemsAndButtons(this, 'common/singleFormItems.action', this.params || param);//从后台拿到formpanel的items
this.callParent(arguments);
//加prev、next、refresh等tool
if(this.enableTools) {
this.setTools();
}
//给页面加上ctrl+alt+s键盘事件,自动跳转form配置界面
if(this.enableKeyEvents) {
this.addKeyBoardEvents();
}
},
/**
* FormHeader Tools
* 包括:查看日志、查看流程、查看列表、最大化、最小化、刷新、关闭、上一条、下一条
*/
setTools: function(){
this.tools = [{
type: 'search',
tooltip: '查看单据日志',
listeners:{
click: function(btn){
var form = Ext.getCmp('barStockCodeForm');
var id = Ext.getCmp(form.keyField).value;
if(id != null && id != 0){
form.getLogs(id);
}
}
}
},{
type: 'save',
tooltip: '导出Excel',
listeners:{
click: function(btn){
var form = Ext.getCmp('barStockCodeForm');
var id = Ext.getCmp(form.keyField).value;
form.saveAsExcel(id,caller);
}
}
},{
type: 'collapse',
tooltip: '查看列表',
listeners:{
click: function(btn){
if(parent.Ext) {
var datalist = parent.Ext.getCmp(datalistId);
if(!datalist){
var form = btn.ownerCt.ownerCt;
var url = 'jsps/common/datalist.jsp?whoami=' + caller;
if(btn.urlcondition){
url += '&urlcondition=' + btn.urlcondition;
}
form.FormUtil.onAdd(caller + '_scan', parent.Ext.getCmp('content-panel').getActiveTab().title + 'DataList', url);
} else {
datalist.ownerCt.setActiveTab(datalist);
}
}
}
}
},{
type: 'maximize',
tooltip: '最大化',
listeners:{
click: function(btn){
var height = window.screen.height*0.87;
var width = window.screen.width;
//弹出框显示,可以锁定住地址栏和工具栏,防止用户不合理操作
window.open(window.location.href, '', 'width=' + width + ',height=' + height + ',top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
}
}
},{
type: 'minus',
tooltip: '最小化',
listeners:{
click: function(btn){
var p = parent.Ext.getCmp('content-panel');
if(p){
var t = p.getActiveTab();
var b = parent.Ext.getCmp('bottom');
if(b){
b.insert(4, {
text: t.title,
tooltip: t.tabConfig.tooltip,
tab: t,
handler: function(btn){
var a = p.add(btn.tab);
p.setActiveTab(a);
btn.destroy();
}
});
p.remove(t, false);//并不销毁
}
}
}
}
},{
type: 'refresh',
tooltip: '刷新',
listeners:{
click: function(btn){
var form = btn.up('form');
if(typeof form.refresh === 'function')
form.refresh.call(null, form);
else
window.location.reload();
}
}
},{
type: 'close',
tooltip: '关闭',
listeners:{
click: function(btn){
var p = parent.Ext.getCmp('content-panel');
if(p){
p.getActiveTab().close();
} else {
window.close();
}
}
}
},{
type:'prev',
id: 'prev',
tooltip: '上一条',
listeners:{
render: function(btn){
setTimeout(function(){
if(parent.Ext) {
var vad_id = Ext.getCmp("bsd_id").value;
var form = Ext.getCmp('barStockCodeForm');
var datalistStore = form.getCurrentStore(vad_id);
Ext.each(datalistStore, function(){
if(this.selected == true){
if(this.prev == null){
btn.disable(true);
}
}
});
} else {
btn.disable(true);
}
},100);
},
click: function(btn){
var bsd_id = Ext.getCmp("bsd_id").value;
var form = Ext.getCmp('barStockCodeForm');
var datalistStore = form.getCurrentStore(bsd_id);
var newId = 0;
var idx = 0;
Ext.each(datalistStore, function(s, index){
if(this.selected == true){
if(this.prev != null){
newId = this.prev;
idx = index;
}
}
});
var formCondition = "bsd_id=" + newId;
var gridCondition = "bdd_bsdid=" + newId ;
window.location.href = basePath+'jsps/scm/reserve/barStockCode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition;
}
}
},{
type: 'next',
id: 'next',
tooltip: '下一条',
listeners:{
render: function(btn){
setTimeout(function(){
if(parent.Ext) {
var bsd_id = Ext.getCmp("bsd_id").value;
var form = Ext.getCmp('barStockCodeForm');
var datalistStore = form.getCurrentStore(bsd_id);
Ext.each(datalistStore, function(){
if(this.selected == true){
if(this.next == null){
btn.disable(true);
}
}
});
} else {
btn.disable(true);
}
},100);
},
click: function(btn){
var bsd_id = Ext.getCmp("bsd_id").value;
var form = Ext.getCmp('barStockCodeForm');
var datalistStore = form.getCurrentStore(bsd_id);
var newId = 0;
var idx = 0;
Ext.each(datalistStore, function(s, index){
if(s.selected == true){
if(s.next != null){
newId = s.next;
idx = index;
}
}
});
var formCondition = "bsd_id=" + newId;
var gridCondition = "bdd_bsdid=" + newId ;
window.location.href = basePath+'jsps/scm/reserve/barStockCode.jsp?_noc=1&whoami='+caller+'&formCondition='+formCondition+'&gridCondition='+gridCondition;
}
}
},{
type: 'help',
tooltip: '帮助文档',
listeners:{
click: function(t){
var form = t.ownerCt.ownerCt;
form.showHelpWindow();
}
}
}];
},
/**
* 监听一些事件
*
* Ctrl+Alt+S 单据配置维护
* Ctrl+Alt+P 参数、逻辑配置维护
*/
addKeyBoardEvents: function(){
var me = this;
Ext.EventManager.addListener(document.body, 'keydown', function(e){
if(e.altKey && e.ctrlKey) {
if(e.keyCode == Ext.EventObject.S) {
var url = "jsps/ma/form.jsp?formCondition=fo_idIS" + me.fo_id + "&gridCondition=fd_foidIS" + me.fo_id,
forms = Ext.ComponentQuery.query('form'),
grids = Ext.ComponentQuery.query('gridpanel'),
formSet = [], gridSet = [];
if(forms.length > 0) {
Ext.Array.each(forms, function(f){
f.fo_id && (formSet.push(f.fo_id));
});
}
if(grids.length > 0) {
Ext.Array.each(grids, function(g){
if(g.xtype.indexOf('erpBarStockCodeGridPanel') > -1)
gridSet.push(window.caller);
else if(g.caller)
gridSet.push(g.caller);
});
}
if(formSet.length > 0 || gridSet.length > 0) {
url = "jsps/ma/multiform.jsp?formParam=" + formSet.join(',') + '&gridParam=' + gridSet.join(',');
}
me.FormUtil.onAdd('form' + caller, 'Form配置维护(' + caller + ')', url);
} else if(e.keyCode == Ext.EventObject.P) {
me.FormUtil.onAdd('configs-' + caller, '逻辑配置维护(' + caller + ')', "jsps/ma/logic/config.jsp?whoami=" + caller);
}
}
});
},
/**
* 拿到操作日志
*/
getLogs: function(id){
if(Ext.getCmp('win' + id)){
Ext.getCmp('win' + id).show();
} else {
Ext.Ajax.request({//拿到grid的columns
url : basePath + 'common/getMessageLogs.action',
async: false,
params: {
caller: caller,
id: id
},
method : 'post',
callback : function(options,success,response){
var res = new Ext.decode(response.responseText);
if(res.exception || res.exceptionInfo){
showError(res.exceptionInfo);
return;
}
var logs = res.logs;
logs = logs.length == 0 ? [{ml_date: $I18N.common.grid.emptyText, ml_man: $I18N.common.grid.emptyText,
ml_content: $I18N.common.grid.emptyText, ml_result: $I18N.common.grid.emptyText}] : logs;
Ext.create('Ext.window.Window', {
id : 'win' + id,
title: '操作日志',
iconCls: 'x-button-icon-set',
closeAction: 'hide',
height: "100%",
width: "80%",
maximizable : true,
buttonAlign : 'center',
layout : 'anchor',
items: [{
anchor: '100% 100%',
xtype: 'gridpanel',
ignore: true,
bodyStyle: 'background:#f1f1f1;',
autoScroll: true,
store: Ext.create('Ext.data.Store', {
fields: ['ml_date', 'ml_man', 'ml_content', 'ml_result'],
data: logs
}),
columnLines: true,
columns: [
{ header: '时间', dataIndex: 'ml_date', flex: 1.5 , renderer: function(val){
if(val != '无数据'){
return Ext.Date.format(new Date(val), 'Y-m-d H:i:s');
}
}},
{ header: '操作人员', dataIndex: 'ml_man', flex: 1 ,renderer: function(val){
if(val == em_name){
return '' + val + '';
} else {
return val;
}
}},
{ header: '操作', dataIndex: 'ml_content', flex: 1.5},
{ header: '结果', dataIndex: 'ml_result', flex: 3}
]
}],
buttons : [{
text : '关 闭',
iconCls: 'x-button-icon-close',
cls: 'x-btn-gray',
handler : function(){
Ext.getCmp('win' + id).close();
}
}]
}).show();
}
});
}
},
saveAsExcel:function(id,caller){
if(id==null || id =='') showMessage('提示','无法导出空数据单据',1000);
else window.location.href=basePath+'excel/savePanelAsExcel.action?id='+id+"&caller="+caller+"&_noc=1";
},
showHelpWindow:function(){
var me = this,
win = Ext.getCmp('ext-help'),path;
Ext.Ajax.request({
url : basePath + 'common/form/getHelpDoc.action',
params: {
caller:caller
},
method : 'post',
async:false,
callback : function(opt, s, res){
var r = new Ext.decode(res.responseText);
if(r.exceptionInfo){
showError(r.exceptionInfo);
} else if(r.success){
path=r.path;
}
}
});
if(!win) {
win = Ext.create('Ext.Window', {
id: 'ext-help',
width: '90%',
height: '100%',
closeAction: 'hide',
title: '帮助文档',
layout: 'border',
items: [{
region:'center',
tag : 'iframe',
layout : 'fit',
html : ''
},{
region: 'south',
height: 100,
split: true,
collapsible: true,
title: '相关信息',
minHeight:60,
collapsed: true,
html: '相关信息'
}]
});
}
win.show();
},
parseVoucherConfig : function(config) {
var form = this, keys = Ext.Object.getKeys(config), args = {};
Ext.each(keys, function(k){
if (typeof config[k] === 'function') {
args[k] = config[k].call(null, form);
} else if (k == 'yearmonth') {
args[k] = form.getYearmonthByField(config[k]);
} else if (k == 'datas') {
args[k] = form.getDataByField(config[k]);
} else {
args[k] = config[k];
}
});
return args;
},
getDataByField : function(field) {
var form = this, f = form.child('#' + field);
return f ? "'" + f.getValue() + "'" : '';
},
getYearmonthByField : function(field) {
var form = this;
var f = form.child('#' + field),
v = f ? (Ext.isDate(f.value) ? f.value : Ext.Date.parse(f.value, 'Y-m-d')) : new Date();
return Ext.Date.format(v, 'Ym');
},
getCurrentStore: function(value){
var grid = parent.Ext.getCmp('grid');
var items = grid.store.data.items;
var array = new Array();
var o = null;
Ext.each(items, function(item, index){
o = new Object();
o.selected = false;
if(index == 0){
o.prev = null;
} else {
o.prev = items[index-1].data["bsd_id"];
}
if(index == items.length - 1){
o.next = null;
} else {
o.next = items[index+1].data["bsd_id"];
}
var v = item.data["bsd_id"];
o.value = v;
if(v == value)
o.selected = true;
array.push(o);
});
return array;
}
});