Ext.define('erp.view.common.batchUpdate.Form',{ extend: 'Ext.form.Panel', alias: 'widget.erpBatchUpdateFormPanel', requires: ['erp.view.core.button.UseableReplace','erp.view.core.button.Consistency', 'erp.view.core.button.VastPost'], region: 'north', frame : true, header: false,//不显示title layout : 'column', autoScroll : true, defaultType : 'textfield', labelSeparator : ':', buttonAlign : 'center', fieldDefaults : { margin : '2 2 2 2', fieldStyle : "background:#FFFAFA;color:#515151;", labelAlign : "right", blankText : $I18N.common.form.blankText }, FormUtil: Ext.create('erp.util.FormUtil'), GridUtil: Ext.create('erp.util.GridUtil'), items:[{ columnWidth:1, html:'
只支持.xls格式 EXCEL的导入 ,日期格式必须采用标准日期格式(例如:2013-9-5) 限制行数不能超过5000行

' },{ xtype: 'filefield', name: 'file', fieldLable:'选择文件', width: 400, columnWidth:'0.6', labelWidth: 50, emptyText: '选择文件...', buttonConfig: { iconCls: 'x-button-icon-excel', text: $I18N.common.button.erpImportExcelButton, id:'filebutton', }, listeners: { change: function(field){ field.ownerCt.upexcel(field); } } },{ xtype:'button', name:'download', text:'下载模板', margin:'2 3 0 10', iconCls: 'x-button-icon-download', handler:function(){ var title = parent.Ext.getCmp("content-panel").getActiveTab().tabConfig.tooltip +"模板 "+Ext.Date.format(new Date(), 'Y-m-d H:m:s'); var grid=Ext.getCmp('grid'); var columns = grid.columns,cm = new Array(),datas = new Array(); Ext.Array.each(columns, function(c){ if(!c.hidden && c.width > 0 && !c.isCheckerHd) { if(c.items && c.items.length > 0) { var items = c.items.items; Ext.Array.each(items, function(item){ if(!item.hidden) cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/
/g, '\n')) + '(' + item.text.replace(/
/g, '\n') + ')', dataIndex: item.dataIndex, width: item.width}); }); } else { cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/
/g, '\n')), dataIndex: c.dataIndex, width: c.width}); } } }); if (!Ext.fly('ext-grid-excel')) { var frm = document.createElement('form'); frm.id = 'ext-grid-excel'; frm.name = id; frm.className = 'x-hidden'; document.body.appendChild(frm); } Ext.Ajax.request({ url: basePath + 'common/excel/grid.xls', method: 'post', form: Ext.fly('ext-grid-excel'), isUpload: true, params: { datas: unescape(Ext.JSON.encode(datas).replace(/\\/g,"%")), columns: unescape(Ext.encode(cm).replace(/\\/g,"%")), title: title } }); } },{ xtype:'hidden', name:'caller', id:'caller', value:caller },{xtype: 'htmleditor', enableColors: false, enableAlignments: false, columnWidth:1, enableFont: false, enableFontSize: false, enableFormat: false, enableLinks: false, enableLists: false, enableSourceEdit: false, cls :'form-field-allowBlank', style:'background:#fffac0;color:#515151;', frame: false, id:'html', height:250, readOnly:true, listeners: { afterrender: function(editor){ editor.getToolbar().hide(); } } }], /*tbar: [{ name: 'query', id: 'query', text: $I18N.common.button.erpQueryButton, iconCls: 'x-button-icon-query', cls: 'x-btn-gray', handler: function(){ Ext.getCmp('dealform').onQuery(); } }, '->', { xtype: 'erpMakeOccurButton', id: 'erpMakeOccurButton', hidden: true }, { xtype: 'erpSaleOccurButton', id: 'erpSaleOccurButton', hidden: true }, { xtype: 'erpVastAnalyseButton', id: 'erpVastAnalyseButton', hidden: true },{ xtype: 'erpVastPrintButton', id: 'erpVastPrintButton', hidden: true },{ xtype: 'erpVastDealButton', id: 'erpVastDealButton', hidden: true },'-',{ name: 'export', id:'export', text: $I18N.common.button.erpExportButton, iconCls: 'x-button-icon-excel', cls: 'x-btn-gray', handler: function(btn){ var grid = Ext.getCmp('batchDealGridPanel'); grid.BaseUtil.exportGrid(grid); } },'-',{ text: $I18N.common.button.erpCloseButton, iconCls: 'x-button-icon-close', cls: 'x-btn-gray', id:'close', handler: function(){ var main = parent.Ext.getCmp("content-panel"); if(main){ main.getActiveTab().close(); }else parent.Ext.getCmp('win').close(); } }],*/ initComponent : function(){ this.addEvents({alladded: true});//items加载完 this.callParent(arguments); this.addKeyBoardEvents();//监听Ctrl+Alt+S事件 }, upexcel: function(field){ this.getForm().submit({ url: basePath + 'common/update/batchUpdate.action', waitMsg: "正在解析Excel", success: function(fp, o){ Ext.Msg.alert('提示','更新成功'); field.reset(); Ext.getCmp('html').setValue(o.result.data); }, failure: function(fp, o){ if(o.result.size){ showError(o.result.error + " " + Ext.util.Format.fileSize(o.result.size)); field.reset(); } else { showError(o.result.error); field.reset(); } } }); }, onQuery: function(select){ var grid = Ext.getCmp('batchDealGridPanel'),sel = []; if(!grid){ grid = Ext.getCmp('grid'); } grid.multiselected = new Array(); if(select == true) { sel = grid.selModel.getSelection(); } var form = this; var cond = form.getCondition(); if(Ext.isEmpty(cond)) { cond = '1=1'; } form.beforeQuery(caller, cond);//执行查询前逻辑 var gridParam = {caller: caller, condition: cond + form.getOrderBy(grid), start: 1, end: 1000}; if(grid.getGridColumnsAndStore){ grid.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, ""); } else { //grid.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, ""); grid.GridUtil.loadNewStore(grid, gridParam); } if(select == true) { Ext.each(sel, function(){ grid.selModel.select(this.index); }); } }, getCondition: function(grid){ grid = grid || Ext.getCmp('batchDealGridPanel'); if(!grid){ grid = Ext.getCmp('grid'); } var form = this; var condition = Ext.isEmpty(grid.defaultCondition) ? '' : ('(' + grid.defaultCondition + ')'); Ext.each(form.items.items, function(f){ if(f.logic != null && f.logic != ''){ if((f.xtype == 'checkbox' || f.xtype == 'radio')){ if(f.value == true) { if(condition == ''){ condition += f.logic; } else { condition += ' AND ' + f.logic; } } } else if(f.xtype == 'datefield' && f.value != null){ var v = Ext.Date.format(new Date(f.value), 'Y-m-d'); if(condition == ''){ condition += f.logic + "=to_date('" + v + "', 'yyyy-MM-dd')"; } else { condition += ' AND ' + f.logic + "=to_date('" + v + "', 'yyyy-MM-dd')"; } } else if(f.xtype == 'datetimefield' && f.value != null){ var v = Ext.Date.format(new Date(f.value), 'Y-m-d H:i:s'); if(condition == ''){ condition += f.logic + "=to_date('" + v + "', 'yyyy-MM-dd HH24:mi:ss')"; } else { condition += ' AND ' + f.logic + "=to_date('" + v + "', 'yyyy-MM-dd HH24:mi:ss')"; } } else if(f.xtype == 'numberfield' && f.value != null && f.value != ''){ if(condition == ''){ condition += f.logic + '=' + f.value; } else { condition += ' AND ' + f.logic + '=' + f.value; } } else if(f.xtype == 'combo' && f.value == '$ALL'){ if(f.store.data.length > 1) { if(condition == ''){ condition += '('; } else { condition += ' AND ('; } f.store.each(function(d, idx){ if(d.data.value != '$ALL') { if(idx == 0){ condition += f.logic + "='" + d.data.value + "'"; } else { condition += ' OR ' + f.logic + "='" + d.data.value + "'"; } } }); condition += ')'; } } else { //一般情况下,在执行批量处理时,是不需要把form的数据传回去, //但某些情况下,需要将form的某些字段的值也传回去 //例如 请购批量转采购,如果指定了采购单号,就要把采购单号传回去 if(contains(f.logic, 'to:', true)){ if(!grid.toField){ grid.toField = new Array(); } grid.toField.push(f.logic.split(':')[1]); } else { if(!Ext.isEmpty(f.value)){ if(contains(f.value.toString(), 'BETWEEN', true) && contains(f.value.toString(), 'AND', true)){ if(condition == ''){ condition += f.logic + " " + f.value; } else { condition += ' AND (' + f.logic + " " + f.value + ")"; } } else if(contains(f.value.toString(), '||', true)){ var str = ''; Ext.each(f.value.split('||'), function(v){ if(v != null && v != ''){ if(str == ''){ str += f.logic + "='" + v + "'"; } else { str += ' OR ' + f.logic + "='" + v + "'"; } } }); if(condition == ''){ condition += "(" + str + ")"; } else { condition += ' AND (' + str + ")"; } } else if(f.value.toString().charAt(0) == '!'){ if(condition == ''){ condition += 'nvl(' + f.logic + ",' ')<>'" + f.value.substr(1) + "'"; } else { condition += ' AND (nvl(' + f.logic + ",' ')<>'" + f.value.substr(1) + "')"; } } else { if(condition == ''){ condition += f.logic + "='" + f.value + "'"; } else { condition += ' AND (' + f.logic + "='" + f.value + "')"; } } } } } } }); /*if(urlcondition !=null || urlcondition !=''){ condition =condition+urlcondition; }*/ return condition; }, getOrderBy: function(grid){ var ob = new Array(); if(grid.mainField) { ob.push(grid.mainField + ' desc'); } if(grid.detno) { ob.push(grid.detno + ' asc'); } if(grid.keyField) { ob.push(grid.keyField + ' desc'); } var order = ''; if(ob.length > 0) { order = ' order by ' + ob.join(','); } return order; }, /** * 监听一些事件 *
* 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('erpGridPanel') > -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); } } }); }, beforeQuery: function(call, cond) { Ext.Ajax.request({ url: basePath + 'common/form/beforeQuery.action', params: { caller: call, condition: cond }, async: false, callback: function(opt, s, r) { var rs = Ext.decode(r.responseText); if(rs.exceptionInfo) { showError(rs.exceptionInfo); } } }); } });