/** * ERP项目前台formpanel自定义样式1 * 可供大部分单表直接使用 */ Ext.define('erp.view.core.form.Panel',{ extend: 'Ext.form.Panel', alias: 'widget.erpFormPanel', id: 'form', region: 'north', frame : true, layout : 'column', autoScroll : true, defaultType : 'textfield', labelSeparator : ':', source:'',//全功能导航展示使用 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','erp.view.oa.task.TaskPanel'], 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 _copyConf=getUrlParam('_copyConf'); var param = {caller: this.caller || caller, condition: this.formCondition || formCondition, _noc: (getUrlParam('_noc') || this._noc)}; if(master){ param.master=master; } if(_copyConf!=null){//复制界面 param._copyConf=_copyConf;//复制来源单据的条件 } //界面不显示按钮 var _nobutton=getUrlParam('_nobutton'),source=getUrlParam('source'),_config=getUrlParam('_config'); if(source=='allnavigation'){ this.readOnly=true; this._nobutton=true; this.source='allnavigation'; this.enableTools=false; } if(_nobutton) this._nobutton=true; if(_config){ param._config=_config; } if(this.getItemsAndButtons) this.getItemsAndButtons(this, 'common/singleFormItems.action', this.params || param); else this.FormUtil.getItemsAndButtons(this, 'common/singleFormItems.action', this.params || param); 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(){ var me = this, datalistId = getUrlParam('datalistId'), isRefererList = !!datalistId, hasVoucher = !!me.voucherConfig, dumpable = me.dumpable, isNormalPage = !me.dumpable && !me.adminPage, hasList = !me.singlePage; me.tools = [ { xtype:'button', text:'选项', id:'buttons', margin:'0 0 0 2', listeners:{ mouseover:function(){ var buttons=Ext.getCmp("buttons"); buttons.showMenu(); } }, menu: [{ iconCls: 'x-nbutton-icon-log', text: '操作日志', listeners:{ afterrender:function(btn){ formCondition = getUrlParam('formCondition'); if(formCondition==null||formCondition==''){ btn.disable(); } }, click: function(btn){ var form = Ext.getCmp('form'); var id = Ext.getCmp(form.keyField).value; if(id != null && id != 0){ form.getLogs(id); } } } },{ iconCls: 'x-nbutton-icon-message', text: '消息日志', listeners:{ afterrender:function(btn){ formCondition = getUrlParam('formCondition'); if(formCondition==null||formCondition==''){ btn.disable(); } }, click:function(btn){ var form = Ext.getCmp('form'); var id = Ext.getCmp(form.keyField).value; if(id != null && id != 0){ me.getMessageInfo(id,caller);} } } },{ iconCls: 'x-nbutton-icon-link', text: '关联查询', hidden: !isNormalPage, listeners:{ afterrender:function(btn){ formCondition = getUrlParam('formCondition'); if(formCondition==null||formCondition==''){ btn.disable(); } }, click:function(btn){ var form = Ext.getCmp('form'); form.showRelativeQuery(); } } },{ iconCls: 'x-nbutton-icon-download', text: '下载数据', hidden: !isNormalPage, listeners:{ afterrender:function(btn){ formCondition = getUrlParam('formCondition'); if(formCondition==null||formCondition==''){ btn.disable(); } }, click:function(){ var form = Ext.getCmp('form'); var id = Ext.getCmp(form.keyField).value; var grids=Ext.ComponentQuery.query('grid'); var obj =new Object(); if(grids){ Ext.each(grids,function(g,index){ if(!g.caller){ if(g.mainField&&g.mainField!='null') obj[caller]=g.mainField; }else{ if(g.mainField&&g.mainField!='null') obj[g.caller]=g.mainField; } }); } form.saveAsExcel(id,caller,encodeURI(Ext.JSON.encode(obj))); } } },{ iconCls: 'x-nbutton-icon-task', text: '发起任务', hidden: !isNormalPage, listeners : { click : function(btn) { var form = Ext.getCmp('form'); if(!form.codeField){ btn.disable(true); } else form.addTask(form); } } },{ iconCls: 'x-nbutton-icon-plan', text: '导出方案', hidden: !dumpable, listeners:{ afterrender:function(btn){ formCondition = getUrlParam('formCondition'); if(formCondition==null||formCondition==''){ btn.disable(); } }, click:function(){ // 用于配置方案导出 me.expData(); } } },{ iconCls: 'x-nbutton-icon-process', text: '流程处理', hidden: !isNormalPage, listeners:{ afterrender:function(btn){ var form = Ext.getCmp('form'); if(!form.statuscodeField){ btn.disable(true); } else { var f = form.statuscodeField; if(!Ext.getCmp(f) || Ext.getCmp(f).value == 'ENTERING'){ btn.disable(true); } } }, click :function(btn){ var form = Ext.getCmp('form'); if(!form.statuscodeField){ btn.disable(true); } else { var f = form.statuscodeField; if(!Ext.getCmp(f) || Ext.getCmp(f).value == 'ENTERING'){ btn.disable(true); } else { var id = Ext.getCmp(form.keyField).value; if(id != null && id != 0){ form.getProcess(id); } } } } } },{ iconCls: 'x-nbutton-icon-report', text: '单据设置', listeners:{ afterrender:function(v){ me.ifadmin(v); }, click:function(){ me.reportset(); } } }] }, { xtype : 'button', text:'凭证', margin:'0 0 0 2', id:'Voucher', hidden : !hasVoucher, listeners : { click : function(t) { var form = t.ownerCt.ownerCt; form.createVoucher(form.voucherConfig); } } }, { xtype: 'button', text:'帮助', margin:'0 0 0 2', hidden : !isNormalPage, listeners:{ click: function(t){ var form = t.ownerCt.ownerCt; form.showHelpWindow(); } } }, { id: 'prev', iconCls: 'x-nbutton-icon-left', xtype:'button', hidden : !hasVoucher, listeners:{ render: function(btn){ if(parent.Ext) { var datalist = parent.Ext.getCmp(datalistId); if(datalist){ var datalistStore = datalist.currentStore; Ext.each(datalistStore, function(){ if(this.selected == true){ if(this.prev == null){ btn.disable(true); } } }); } else { btn.disable(true); } } }, click: function(btn){ var datalist = parent.Ext.getCmp(datalistId); if(datalist){ var datalistStore = datalist.currentStore; var form = Ext.getCmp('form'); 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; } } }); datalistStore[idx].selected = false; datalistStore[idx-1].selected = true; var url = window.location.href; if(form.keyField) { url = url.replace(/formCondition=(\w*)(IS|=)(\d*)/, 'formCondition=$1$2' + newId); url = url.replace(/gridCondition=(\w*)(IS|=)(\d*)/, 'gridCondition=$1$2' + newId); } window.location.href = url; } } } },{ xtype: 'button', iconCls: 'x-nbutton-icon-right', id: 'next', tooltip: '下一条', hidden : !hasVoucher, listeners:{ render: function(btn){ if(parent.Ext) { var datalist = parent.Ext.getCmp(datalistId); if(datalist){ var datalistStore = datalist.currentStore; Ext.each(datalistStore, function(){ if(this.selected == true){ if(this.next == null){ btn.disable(true); } } }); } else { btn.disable(true); } } }, click: function(btn){ var datalist = parent.Ext.getCmp(datalistId); if(datalist){ var datalistStore = datalist.currentStore; var form = Ext.getCmp('form'); 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; } } }); datalistStore[idx].selected = false; datalistStore[idx+1].selected = true; var url = window.location.href; if(form.keyField) { url = url.replace(/formCondition=(\w*)(IS|=)(\d*)/, 'formCondition=$1$2' + newId); url = url.replace(/gridCondition=(\w*)(IS|=)(\d*)/, 'gridCondition=$1$2' + newId); } window.location.href = url; } } } }]; }, ifadmin:function(v){ var table='EMPLOYEE'; var field='EM_TYPE'; Ext.Ajax.request({ url : basePath + '/common/isadmin.action', params: { table:table, field:field }, method : 'get', async:false, callback : function(opt, s, res){ var r = new Ext.decode(res.responseText); if(r.exceptionInfo){ showError(r.exceptionInfo); } else if(r.success){ if(r.data!='admin'){ v.disable(); } } } }); }, reportset:function(){ var me=this; 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){ gridSet.push(g.caller || window.caller); }); gridSet = Ext.Array.unique(gridSet); } if(formSet.length > 0 || gridSet.length > 0) { url = "jsps/ma/multiform.jsp?formParam=" + formSet.join(',') + '&gridParam=' + gridSet.join(','); } var myurl=basePath+url; var windows=parent.Ext.create('Ext.window.Window', { title: '单据设置', iconCls: 'x-button-icon-set', closeAction: 'hide', height: "90%", width: "90%", modal:true, maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ xtype:'tabpanel', anchor: '100% 100%', layout : 'anchor', items:[{ xtype: 'panel', title:'界面配置', anchor: '100% 100%', items:[ { xtype: 'component', id:'iframe_detail_multiform', autoEl: { tag: 'iframe', style: 'height: 100%; width: 100%; border: none;', src: myurl} }] },{ title:'逻辑配置', xtype: 'panel', items:[ { xtype: 'component', id:'iframe_detail_config', autoEl: { tag: 'iframe', style: 'height: 100%; width: 100%; border: none;', src: basePath + 'jsps/ma/logic/config.jsp?whoami=' +caller} }] }/*,{ xtype: 'panel', title:'知会设置', items:[{ xtype: 'component', id:'iframe_detail_messageset', autoEl: { tag: 'iframe', style: 'height: 100%; width: 100%; border: none;', src: basePath + 'jsps/sysmng/MsgSetting.jsp?whoami=' +caller} }] }*/] }], buttons : [{ text : '关 闭', iconCls: 'x-button-icon-close', cls: 'x-btn-gray', handler : function(){ this.ownerCt.ownerCt.close(); } }] }); windows.show(); }, getMessageInfo:function(id,caller){ if(Ext.getCmp('msgwin' + id)){ Ext.getCmp('msgwin' + id).show(); } else { var me=this; Ext.Ajax.request({ url : basePath + 'common/getMessageInfo.action', params: { caller:caller, id:id }, method : 'get', async:false, callback : function(opt, s, res){ var r = new Ext.decode(res.responseText); if(r.exceptionInfo){ showError(r.exceptionInfo); } else if(r.success){ me.showmessagelog(r.logs,id); } } }); } }, showmessagelog:function(logs,id){ if(logs.length<1){ Ext.create('Ext.window.Window', { title: '消息日志', iconCls: 'x-button-icon-set', closeAction: 'hide', height: "90%", width: "90%", modal:true, maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ anchor: '100% 100%', xtype: 'form', ignore: true, bodyStyle: 'background:#f1f1f1;', autoScroll: true, html:'
本单据不存在消息日志
' }], buttons : [{ text : '关 闭', iconCls: 'x-button-icon-close', cls: 'x-btn-gray', handler : function(){ this.ownerCt.ownerCt.close(); } }] }).show(); }else{ Ext.create('Ext.window.Window', { id : 'msgwin'+id, title: '消息日志', iconCls: 'x-button-icon-set', closeAction: 'hide', height: "90%", width: "90%", modal:true, 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: ['IH_DATE', 'IHD_RECEIVE', 'IH_CONTEXT', 'IHD_READSTATUS','IHD_READTIME'], data: logs }), columnLines: true, columns: [ { header: '发出时间', dataIndex: 'IH_DATE', flex: 1.5 , renderer: function(val){ if(val != '无数据'){ return Ext.Date.format(new Date(val), 'Y-m-d H:i:s'); } }}, { header: '接收人', dataIndex: 'IHD_RECEIVE', flex: 1 , renderer: function(val){ if(val == em_name){ return '' + val + ''; } else { return val; } }}, { header: '信息描述', dataIndex: 'IH_CONTEXT', flex: 3.5 }, { header: '阅读状态', dataIndex: 'IHD_READSTATUS', flex: 1, renderer:function(value,meta,record){ if(value==0){ return '未读'; }else if(value==-1){ return '已读'; } } }, { header: '阅读时间', dataIndex: 'IHD_READTIME', flex: 1.5, renderer: function(val){ if(val != ''&&val!=null){ return Ext.Date.format(new Date(val), 'Y-m-d H:i:s'); } } }] }], buttons : [{ text : '关 闭', iconCls: 'x-button-icon-close', cls: 'x-btn-gray', handler : function(){ Ext.getCmp('msgwin' + id).close(); } }] }).show(); } }, /** * 监听一些事件 *
* 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){ gridSet.push(g.caller || window.caller); }); gridSet = Ext.Array.unique(gridSet); } if(formSet.length > 0 || gridSet.length > 0) { url = "jsps/ma/multiform.jsp?formParam=" + formSet.join(',') + '&gridParam=' + gridSet.join(','); } //用于生成datalist 时要用的sn_lockpage var main = parent.Ext.getCmp("content-panel"); if(!main){ main = parent.parent.Ext.getCmp("content-panel"); } if(main){ main.lockPage = window.location.pathname.replace('/ERP/', '').split("?")[0]; } 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: "90%", width: "90%", modal:true, 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, renderer:function(value,meta,record){ meta.style = 'height: auto;overflow:visible !important;white-space:normal !important;'; return value; } }] }], buttons : [{ text : '关 闭', iconCls: 'x-button-icon-close', cls: 'x-btn-gray', handler : function(){ Ext.getCmp('win' + id).close(); } }] }).show(); } }); } }, saveAsExcel:function(id,caller,o){ if(id==null || id =='') showMessage('提示','无法导出空数据单据',1000); else window.location.href=basePath+'excel/savePanelAsExcel.action?id='+id+"&caller="+caller+"&o="+o+"&_noc=1"; }, /* * 拿到流程处理情况 */ getProcess: function(id){ var me = this; //先获取jprocess的nodeId Ext.Ajax.request({ url : basePath + 'common/getJProcessByForm.action', async: false, params: { caller: me.realCaller||caller, keyValue: id, _noc:1 }, method : 'post', callback : function(options,success,response){ var localJson = new Ext.decode(response.responseText); if(localJson.exceptionInfo){ showError(localJson.exceptionInfo);return; } if(localJson.node && localJson.node != -1){ //再根据nodeId调取流程信息 if(Ext.getCmp('win-flow' + id)){ Ext.getCmp('win-flow' + id).show(); } else { var form = Ext.create('Ext.form.Panel', { layout: 'column', defaultType: 'textfield', anchor: '100% 20%' , bodyStyle: 'background:#f1f1f1;', fieldDefaults: { columnWidth: 0.33, readOnly: true, cls : "form-field-allowBlank", fieldStyle: 'background:#f0f0f0;border: 1px solid #8B8970;' }, items: [{ id: 'jp_name', name: 'jp_name', fieldLabel: '流程名称', columnWidth: 0.33 },{ columnWidth: 0.33, xtype: 'textfield', fieldLabel: '发起时间', name: 'jp_launchTime', id:'jp_launchTime', readOnly: true, fieldStyle: 'background:#f0f0f0;border: 1px solid #8B8970;' },{ fieldLabel: '发起人', columnWidth: 0.33, xtype: 'textfield', id:'jp_launcherName', name: 'jp_launcherName', readOnly: true, fieldStyle: 'background:#f0f0f0;border: 1px solid #8B8970;' },{ fieldLabel: '节点名称', id: 'jp_nodeName', name: 'jp_nodeName', xtype: 'textfield', readOnly: true, fieldStyle: 'background:#f0f0f0;border: 1px solid #8B8970;' },{ fieldLabel: '处理人', id: 'jp_nodeDealMan', name: 'jp_nodeDealMan', xtype: 'textfield', fieldStyle: 'background:#f0f0f0;border: 1px solid #8B8970;', readOnly: true, listeners:{ change:function(field){ var em=Ext.getCmp('jp_nodeDealMan').getValue(); var btn=Ext.getCmp('dealbutton'); if(em!=em_code) btn.setDisabled(true); } } },{ fieldLabel: '审批状态', id:'jp_status', name:'jp_status', xtype: 'textfield', fieldStyle: 'background:#f0f0f0;border: 1px solid #8B8970;', readOnly: true }], loader: { url: basePath + 'common/getCurrentNode.action', renderer: function(loader, response, active) { var res = Ext.decode(response.responseText); if(res.info.currentnode.jp_nodeDealMan){ res.info.currentnode.jp_nodeDealMan=res.info.dealmanname+"("+res.info.currentnode.jp_nodeDealMan+")"; }else res.info.currentnode.jp_nodeDealMan=res.info.dealmanname+"("+res.info.currentnode.jp_candidate+")"; res.info.currentnode.jp_launchTime = Ext.Date.format(new Date(res.info.currentnode.jp_launchTime), 'Y-m-d H:i:s'); this.target.getForm().setValues(res.info.currentnode); return true; }, autoLoad: true, params: { jp_nodeId: localJson.node, _noc:1 } }, buttonAlign: 'center', buttons: [{ text: $I18N.common.button.erpFlowButton, iconCls: 'x-button-icon-scan', cls: 'x-btn-gray', id:'dealbutton', handler: function(btn){ me.FormUtil.onAdd(caller + '_flow', '流程处理', 'jsps/common/jprocessDeal.jsp?formCondition=jp_nodeidIS' + localJson.node); } },{ text : '关 闭', iconCls: 'x-button-icon-close', cls: 'x-btn-gray', handler : function(){ Ext.getCmp('win-flow' + id).close(); } }] }); Ext.create('Ext.window.Window', { id : 'win-flow' + id, title: '流程处理', iconCls: 'x-button-icon-set', closeAction: 'hide', height: "90%", width: "90%", modal:true, maximizable : true, buttonAlign : 'center', layout : 'fit', items:[{ xtype:'tabpanel', frame:true, layout:'fit', items:[{ title:'处理明细', layout:'anchor', frame:true, items:[form, Ext.create("erp.view.common.JProcess.GridPanel",{ anchor: '100% 80%' , nodeId: localJson.node })] },{ title : '节点设置', buttonAlign : 'center', layout : 'fit', items:[{ title:'设置流程节点', anchor: '100% 90%' , xtype:'SetNodeGridPanel', keyValue: id, FlowCaller:caller }], buttons:['->',{ text:'保 存', iconCls: 'x-button-icon-save', cls: 'x-btn-gray', width : 65, style: { marginLeft: '10px' }, handler:function(btn){ var win=btn.ownerCt.ownerCt,grid=win.items.items[0]; var msg=grid.GridUtil.checkGridDirty(grid); if(msg==''){ Ext.Msg.alert('提示','无任何修改!'); }else { var param= grid.GridUtil.getGridStore(grid); param= unescape("[" + param.toString().replace(/\\/g,"%") + "]"); me.FormUtil.setLoading(true); var url=grid.xtype=='TaskGridPanel'?'plm/task/updatePageTask.action?_noc=1':'common/updateJnodePerson.action?_noc=1'; Ext.Ajax.request({ url : basePath+url, params: { param:param, caller:caller, keyValue:id }, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.success){ showMessage('提示', '保存成功!', 1000); grid.loadNewStore(grid,caller,id); }else if(localJson.exceptionInfo != null){ showError(res.exceptionInfo);return; } } }); } } },{ text:'关 闭', iconCls: 'x-button-icon-close', cls: 'x-btn-gray', width: 65, style: { marginLeft: '10px' }, handler:function(btn){ Ext.getCmp('win-flow' + id).close(); } },'->'] },{ title : '流程图', items:[{ tag : 'iframe', style:{ background:'#f0f0f0', border:'none' }, frame : true, border : false, layout : 'fit', height:window.innerHeight*0.9, iconCls : 'x-tree-icon-tab-tab', html : '' }] },{ title:'历史处理明细', layout:'anchor', frame:true, items:[Ext.create("erp.view.common.JProcess.AllHistoryGridPanel",{ anchor: '100% 100%' , nodeId: localJson.node })] }] }] }).show(); } } else { showMessage("提示", "当前单据无流程处理!"); } } }); }, SetNodeDealMan:function(id){ var me=this; var nodewin=Ext.getCmp('win-nodeflow'+id); if(nodewin){ nodewin.show(); }else { Ext.create('Ext.window.Window', { id : 'win-nodeflow' + id, title: '单据设置', iconCls: 'x-button-icon-set', closable: false, height: "100%", width: "90%", maximizable : true, buttonAlign : 'center', layout : 'fit', items:[{ title:'设置流程节点', anchor: '100% 90%' , xtype:'SetNodeGridPanel', keyValue: id, FlowCaller:caller }], buttons:['->',{ text:'保 存', iconCls: 'x-button-icon-save', cls: 'x-btn-gray', width : 65, style: { marginLeft: '10px' }, handler:function(btn){ var win=btn.ownerCt.ownerCt,grid=win.items.items[0]; var msg=grid.GridUtil.checkGridDirty(grid); if(msg==''){ Ext.Msg.alert('提示','无任何修改!'); }else { var param= grid.GridUtil.getGridStore(grid); param= unescape("[" + param.toString().replace(/\\/g,"%") + "]"); me.FormUtil.setLoading(true); var url=grid.xtype=='TaskGridPanel'?'plm/task/updatePageTask.action?_noc=1':'common/updateJnodePerson.action?_noc=1'; Ext.Ajax.request({ url : basePath+url, params: { param:param, caller:caller, keyValue:id }, method : 'post', callback : function(options,success,response){ me.FormUtil.setLoading(false); var localJson = new Ext.decode(response.responseText); if(localJson.success){ showMessage('提示', '保存成功!', 1000); grid.loadNewStore(grid,caller,id); }else if(localJson.exceptionInfo != null){ showError(res.exceptionInfo);return; } } }); } } },{ text:'关 闭', iconCls: 'x-button-icon-close', cls: 'x-btn-gray', width: 65, style: { marginLeft: '10px' }, handler:function(btn){ btn.ownerCt.ownerCt.hide(); var form=Ext.getCmp('form'); var f = form.statuscodeField; if(Ext.getCmp(f) && Ext.getCmp(f).value == 'ENTERING'){ showMessage('提示', '提交成功!', 1000); window.location.reload(); } } },'->'] }).show(); } }, /** * 关联查询 */ showRelativeQuery: function() { var me = this, win = Ext.getCmp('ext-relative-query'); if(!win) { win = Ext.create('Ext.Window', { id: 'ext-relative-query', width: '90%', height: '90%', modal:true, closeAction: 'hide', //title: '' + me.title + '--查询', title: '关联查询', iconCls: 'x-button-icon-set', layout: 'anchor', items: [{ tag : 'iframe', frame : true, anchor : '100% 100%', layout : 'fit', html : '' }] }); } win.show(); }, showHelpWindow:function(){ var me = this, win = Ext.getCmp('ext-help'),path; Ext.Ajax.request({ url : basePath + 'ma/help/scan.action', params: { caller:caller }, method : 'get', 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: '帮助文档', modal:true, 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; }, createVoucher: function(config) { var me = this, args = this.parseVoucherConfig(config); if('unneed' == args.kind) { showMessage('提示', '该类型单据无需制作凭证!'); return; } me.getVoucher(function(data){ var vf = me.voucherConfig.voucherField; if (!Ext.isEmpty(data[vf])) { if(data[vf] != 'UNNEED') { var box = Ext.create('Ext.window.MessageBox', { buttonAlign : 'center', buttons: [{ text: '查看凭证', handler: function(b) { me.linkVoucher(data); b.ownerCt.ownerCt.close(); } },{ text: '取消凭证', handler: function(b) { me.onVoucherUnCreate(args); b.ownerCt.ownerCt.close(); } },{ text: '关闭', handler : function(b) { b.ownerCt.ownerCt.close(); } }] }); box.show({ title : "提示", msg : "当前单据已制作过凭证:" + data[vf], icon : Ext.MessageBox.QUESTION }); } else showMessage('提示', '该类型单据无需制作凭证!'); } else { warnMsg('现在制作凭证?', function(b){ if (b == 'ok' || b == 'yes') { me.beforeVoucherCreate(args); } }); } }); }, beforeVoucherCreate : function(args) { var me = this; if(me.keyField && me.statusField) { var val = me.down('#' + me.keyField).getValue(), params = { caller: me.tablename, field: me.voucherConfig.status || me.statusField, condition: me.keyField + '=' + val }; Ext.Ajax.request({ url : basePath + 'common/getFieldData.action', params: params, method : 'post', callback : function(opt, s, res){ var r = new Ext.decode(res.responseText); if(r.exceptionInfo){ showError(r.exceptionInfo); } else if(r.success && (args.statusValue || 'POSTED') == r.data){ me.onVoucherCreate(args); } else { showError('单据还未过账!'); } } }); } }, onVoucherCreate : function(args) { var me = this; me.setLoading(true); Ext.Ajax.request({ url: basePath + 'fa/vc/createVoucher.action', params: args, callback: function(opt, s, r) { me.setLoading(false); var rs = Ext.decode(r.responseText); if(rs.exceptionInfo) { showError(rs.exceptionInfo); } else { if(rs.success && rs.content){ var msg = ""; Ext.Array.each(rs.content, function(item){ if(item.errMsg) { msg += item.errMsg + '
'; } else if(item.id) { msg += '凭证号:' + item.code + '
'; } }); showMessage('提示', msg); } } } }); }, onVoucherUnCreate : function(args) { var me = this; me.setLoading(true); Ext.Ajax.request({ url: basePath + 'fa/vc/unCreateVoucher.action', params: args, callback: function(opt, s, r) { me.setLoading(false); var rs = Ext.decode(r.responseText); if(rs.exceptionInfo) { showError(rs.exceptionInfo); } else if(rs.error) { showMessage('提示', rs.error); } else { showMessage('提示', '取消成功!'); var vf = me.voucherConfig.voucherField, v = me.down('#' + vf); v && v.setValue(null); } } }); }, 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'); }, getVoucher : function(callback) { var me = this, vf = me.voucherConfig.voucherField; Ext.Ajax.request({ url : basePath + 'common/getFieldsData.action', params: { caller : me.tablename + ' left join voucher on vo_code=' + vf, fields : 'vo_id,' + vf, condition : me.keyField + '=' + me.down('#' + me.keyField).value }, method : 'post', callback : function(opt, s, res){ var r = new Ext.decode(res.responseText); if(r.exceptionInfo){ showError(r.exceptionInfo);return; } if(r.success){ callback.call(null, r.data || {}); } } }); }, linkVoucher : function(data) { this.FormUtil.onAdd(null, '凭证', 'jsps/fa/ars/voucher.jsp?formCondition=vo_idIS' + data.vo_id + '&gridCondition=vd_voidIS' + data.vo_id); }, addTask : function() { var me=this,win=Ext.getCmp('win_task'); if(!win){ win=Ext.create('Ext.window.Window', { id : 'win_task', title: '发起任务', iconCls: 'x-button-icon-set', closeAction: 'hide', width: '90%', height: '90%', modal:true, maximizable : true, buttonAlign : 'center', layout : 'anchor', items: [{ anchor: '100% 100%', xtype: 'TaskPanel', sourceForm:me }] }); } win.show(); }, getIdentity : function(){ // 取唯一值 var me = this, identity = me.identity, kfield = me.keyField; if (identity) { return (typeof identity === 'function' ? identity.call(me) : identity); } else if (kfield) { return Ext.getCmp(kfield).value; } return null; }, expData : function() { window.open(basePath + 'common/dump/exp.action?type=' + caller + "&identity=" + encodeURIComponent(this.getIdentity())); } });