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; } });