/** * 字符串忽略前导空白和尾部空白 * @returns */ String.prototype.trim = function(){return this.replace(/(^[\s]*)|([\s]*$)/g, "");}; /** * 字符串忽略前导空白 * @returns */ String.prototype.lTrim = function(){return this.replace(/(^[\s]*)/g, "");}; /** * 字符串忽略尾部空白 * @returns */ String.prototype.rTrim = function(){return this.replace(/([\s]*$)/g, "");}; String.prototype.startsWith=function(startStr){var d=startStr.length;return (d>=0&&this.indexOf(startStr)==0)} String.prototype.endsWith=function(endStr){var d=this.length-endStr.length;return (d>=0&&this.lastIndexOf(endStr)==d)} if(typeof Array.indexOf != "function") /** * 对浏览器不支持Array.indexOf进行补充, * @param arg 数组伪元素 * @param n 从当前数组的哪个位置开始查找,n ≥ 0,否则默认为0 * @returns 数组伪元素arg从当前数组第n个开始查找的位置,若没有匹配的,那么返回-1。 */ Array.prototype.indexOf = function(arg, n){ var i = isNaN(n) || n < 0 ? 0 : n; for(; i < this.length; i++) if(this[i] == arg) return i; return -1; }; /** * 页面全局控制对象 */ var AsControl = { /** * 获取默认Open窗体外观特征,参考浏览器方法window.open第三个参数features。 * 窗体的宽度和高度为屏幕的宽度和高度,并放置于屏幕的左上角,不显示工具条、菜单栏、状态栏,显示滚动条,能自由拉伸窗体等。 * 用“,”连接多个参数,用“=”建立键值关系 * @returns {String} */ _getDefaultOpenStyle:function() { return "width="+screen.availWidth+"px,height="+screen.availHeight+"px,top=0,left=0,toolbar=no,scrollbars=yes,resizable=yes,status=no,menubar=no"; }, /** * 获取Open窗体的外观特征,若sStyle有值返回sStyle,否者返回默认Open窗体的外观特征 * 参考#_getDefaultOpenStyle * @param sStyle * @returns */ _getOpenStyle:function(sStyle) { if(typeof(sStyle)=="undefined" || sStyle=="") return this._getDefaultOpenStyle(); else return sStyle; }, /** * 获取默认Pop窗体外观特征,参考浏览器方法window.showModalDialog第三个参数features。 * 窗体的宽度和高度为屏幕的宽度和高度,不显示状态栏、帮助问号,能自由拉伸窗体等。 * 用“;”连接多个参数,用“:”建立键值关系 * @returns {String} */ _getDefaultDialogStyle:function() { return "dialogWidth:"+screen.availWidth+"px;dialogHeight:"+screen.availHeight+"px;resizable:yes;maximize:yes;help:no;status:no;"; }, /** * 获取Pop窗体的外观特征,若sStyle有值返回sStyle,否者返回默认Pop窗体的外观特征 * 参考#_getDefaultDialogStyle * @param sStyle * @returns */ _getDialogStyle:function(sStyle) { if(typeof(sStyle)=="undefined" || sStyle=="") return this._getDefaultDialogStyle(); else return sStyle; }, /** * 编码参数 * @param sPara * @returns */ _getParaString:function(sPara) { if(typeof(sPara)=="undefined" || sPara=="") { return ""; } else if (sPara.substring(0,1)=="&") { return encodeURI(encodeURI(sPara)); } else { return "&"+encodeURI(encodeURI(sPara)); } }, /** * 获取随机数 * @returns * @belong AsControl */ randomNumber:function() { return Math.abs(Math.sin(new Date().getTime())).toString().substr(2); }, }; AsControl.postICMS = function(url,param){ let temp_form = document.createElement("form"); temp_form.action = url; temp_form.target = "_blank"; temp_form.method = "post"; temp_form.style.display = "none"; let opt = document.createElement("textarea"); opt.name = 'data'; opt.value = param; temp_form.appendChild(opt); document.body.appendChild(temp_form); temp_form.submit(); }; /** * 通过Mozilla 的PDF阅读器在web上预览PDF文件 */ AsControl.OpenPDF = function(sAttachmentPara,sStyle) { if(typeof(sAttachmentPara)=="undefined" || sAttachmentPara=="") { alert("文件参数不能为空!"); return; } var sPageURL = sWebRootPath+"/Frame/page/resources/pdfviewer/viewer.html"; sPageURL += "?file="+sWebRootPath+"/servlet/pdf/"+sAttachmentPara+"&CompClientID="+sCompClientID+"&randp="+this.randomNumber(); window.open(sPageURL,"_blank",this._getDialogStyle(sStyle)); }; AsControl.OpenObjectTab = function(sPara){ if(sPara.indexOf("ObjectType=")<0){alert("参数串必须有ObjectType定义!"); return;} if(sPara.indexOf("ObjectNo=")<0){alert("参数串必须有ObjectNo定义!");return; } this.OpenNewWin("/Frame/page/tools/object/ObjectTab.jsp", sPara); }; AsControl.OpenObject = function(sObjectType,sObjectNo,sViewID,sStyle){ AsControl.PopComp("/Frame/page/tools/object/ObjectViewer.jsp","ObjectType="+sObjectType+"&ObjectNo="+sObjectNo+"&ViewID="+sViewID,sStyle); }; AsControl.OpenTabObject = function(sObjectType,sObjectNo,sViewID){ var objectinfo =$.parseJSON(RunJspAjax("/Frame/page/tools/object/GetObjectInfo.jsp?ObjectType="+sObjectType+"&ObjectNo="+sObjectNo+"&ViewID="+sViewID)); return this.OpenTab("/Frame/page/tools/object/ObjectViewer.jsp","ObjectType="+sObjectType+"&ObjectNo="+sObjectNo+"&ViewID="+sViewID,objectinfo); }; function openObjectInFrame(sObjectType,sObjectNo,sViewID,sFrameID){ AsControl.OpenComp("/Frame/page/tools/object/ObjectViewer.jsp","ObjectType="+sObjectType+"&ObjectNo="+sObjectNo+"&ViewID="+sViewID,sFrameID,""); } /** * 打开页面sURL到对应窗口区域sTargetWindow。 * @param sURL 页面地址 * @param sPara 传递参数 * @param sTargetWindow 窗口区域 * @param sStyle 窗口区域外观特征(弹出窗口) */ AsControl.OpenPage = function(sURL,sPara,sTargetWindow,sStyle) { if(typeof(sURL)=="undefined" || sURL=="") { alert("URL不能为空!"); return; } if(sURL.indexOf("?")>=0){ alert("URL中存在\"?\"!"); return; } if(sTargetWindow=="_blank") { alert("弹出的页面不能使用OpenPage函数!"); return; } sTargetWindow = Layout.getRegionName(sTargetWindow); var sWindowToUnload; if(sTargetWindow==null || sTargetWindow=="_self"){ sWindowToUnload="self"; }else if(sTargetWindow=="_top"){ sWindowToUnload="top"; }else if(sTargetWindow=="_blank"){ sWindowToUnload=""; }else if(sTargetWindow=="_parent"){ sWindowToUnload="parent"; }else sWindowToUnload=sTargetWindow; if(window.checkOpenUrlModified != false){ try{ var oWindow = eval(sWindowToUnload); if(!AsControl.CheckWindowModified(oWindow)) return; }catch(e){ try{if(!AsControl.CheckWindowModified(parent.frames[sWindowToUnload])) return;}catch(e2){} } } var sPageURL=sWebRootPath+sURL; if(sURL.indexOf("?")<0) {sPageURL = sPageURL+"?"; } else if (sURL.substr(sURL.length-1)!="?"){sPageURL = sPageURL+"&";} sPageURL = sPageURL + "CompClientID="+sCompClientID+this._getParaString(sPara)+"&randp="+this.randomNumber(); this.switchDiv(sTargetWindow); return window.open(sPageURL,sTargetWindow,sStyle); }; /** * 以组件形式打开页面sURL到新Tab区域 * @param sURL 页面地址 * @param sPara 传递参数 * @param tabinfo 标签页信息JSON串,目前属性有 title,格式类似为{"title":"标签页标题"} */ AsControl.OpenTab = function(sURL,sPara,tabinfo) { if(sURL.indexOf("?")>=0) { alert("URL中存在\"?\"!"); return false; } var tWin = self; do{ if(typeof tWin.addTabItem == "function"){ break; } if(tWin == tWin.parent) break; tWin = tWin.parent; }while(true); if(typeof tWin.addTabItem == "function"){ var text; if(tabinfo.title) text = tabinfo.title; else text = sPara; tWin.addTabItem(text, sURL,sPara); } else { this.OpenNewWin(sURL,sPara); } }; AsControl.colseCurTab=function(){ var tWin = self; do{ if(typeof tWin.addTabItem == "function"){ break; } if(tWin == tWin.parent) break; tWin = tWin.parent; }while(true); if(typeof tWin.closeCurTab == "function"){ tWin.closeCurTab(); } } /** * 以组件形式打开页面sURL到新窗口区域 * @param sURL 页面地址 * @param sPara 传递参数 */ AsControl.OpenNewWin = function(sURL,sPara) { if(sURL.indexOf("?")>=0) { alert("URL中存在\"?\"!"); return false; } var sCompPara = sPara; while(sCompPara.indexOf("&")>=0) sCompPara = sCompPara.replace("&","$[and]"); var sPageURL = sWebRootPath+"/RedirectorDialog?&TargetWindow=_blank&DiaglogURL=/Frame/page/control/OpenCompDialog.jsp&ComponentURL="+sURL+this._getParaString("CompPara="+sCompPara); this._OpenNewWin(sPageURL,"OpenCompNewWin"); }; AsControl._OpenNewWin = function(sURL,sID) { var a = document.createElement('a'); a.setAttribute('href', sURL); a.setAttribute('target', '_blank'); a.setAttribute('id', sID); document.body.appendChild(a); a.click(); document.body.removeChild(a); } AsControl._OpenIFrame = function(sURL,sIFrame) { var a = document.createElement('a'); a.setAttribute('href', sURL); a.setAttribute('target',sIFrame); a.setAttribute('id', "ID_"+sIFrame); document.body.appendChild(a); var s="首页111" a.click(); document.body.removeChild(a); } /** * 以组件形式打开页面sURL到对应窗口区域sTargetWindow。 * @param sURL 页面地址 * @param sPara 传递参数 * @param sTargetWindow 窗口区域 * @param sStyle 窗口区域外观特征(弹出窗口) */ AsControl.OpenComp = function(sURL,sPara,sTargetWindow,sStyle) { if(sURL.indexOf("?")>=0) { alert("URL中存在\"?\"!"); return false; } sTargetWindow = Layout.getRegionName(sTargetWindow); var sToDestroyClientID=""; var sWindowToUnload = sTargetWindow; if(sTargetWindow=="_blank") { return this.PopComp(sURL,sPara); }else{ if(sTargetWindow==null || sTargetWindow=="_self") sWindowToUnload="self"; else if(sTargetWindow=="_top") sWindowToUnload="top"; var oWindow = null; try{ oWindow = eval(sWindowToUnload); sToDestroyClientID = oWindow.sCompClientID; if (sWindowToUnload !="self" && sWindowToUnload !="top" && sToDestroyClientID==sCompClientID) sToDestroyClientID = ""; }catch(e){ sToDestroyClientID = ""; } if(window.checkOpenUrlModified != false){ try{if(!AsControl.CheckWindowModified(oWindow)) return false;}catch(e1){ try{if(!AsControl.CheckWindowModified(parent.frames[sWindowToUnload])) return false;}catch(e2){} } } } if(typeof(sToDestroyClientID)=="undefined" || sToDestroyClientID=="") {sToDestroyClientID="&TargetWindow="+sTargetWindow;} else {sToDestroyClientID="&TargetWindow="+sTargetWindow+"&ToDestroyClientID="+sToDestroyClientID;} var sPageURL = sWebRootPath + "/Redirector?OpenerClientID="+sCompClientID+sToDestroyClientID+"&ComponentURL="+sURL+this._getParaString(sPara); this.switchDiv(sTargetWindow); this._OpenIFrame(sPageURL,sTargetWindow); }; /** * 校验窗口内所有页面是否都未做修改 * @param win 被校验的窗口对象,如window、self、top或frames[name]等 * @returns {boolean} true 校验通过,false 校验不通过 */ AsControl.CheckWindowModified = function(win){ if(typeof win.checkModified == "function" && !win.checkModified()) return false; for(var i = 0; i < win.frames.length; i++){ if(!AsControl.CheckWindowModified(win.frames[i])) return false; } return true; }; /** * 对指定页面区域添加遮罩层
* 区域名称 * * @param sTargetWindow 区域名称 * */ AsControl.switchDiv = function(sTargetWindow) { if(typeof sTargetWindow !== "string") return; var frame = null; if(sTargetWindow === "_top"){ frame = top; }else if(sTargetWindow === "_self"){ frame = window; }else{ var win = window; while(true){ frame = win.frames[sTargetWindow]; if(frame) break; if(win.parent === win) break; win = win.parent; } if(!frame) return; } var doc = frame.document; if(!doc || !doc.body) return; //if($("#switch_page_mask", doc).length == 1) return; if(document.getElementById("#switch_page_mask") != null) return; var width = Math.max(doc.body.scrollWidth, doc.documentElement.scrollWidth);//-20; var height = Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight);//-20; var board = $("
"+ "
"+ "页面切换中,请等待......"+ "
", doc).appendTo(doc.body); setTimeout(function(){ try{ var span = $(">span", board).show().find(">span"); setInterval(function(){ try{ var time = parseInt(span.text(), 10); if(isNaN(time)) time = 0; span.text(++time); }catch(e){} }, 1000); }catch(e){} }, 500); } ; /** * 弹出模态窗口打开页面sURL * @param sURL 页面地址 * @param sPara 传递参数 * @param sStyle 模态窗口外观特征 * @param dialogArgs 模态窗口参数 * @returns {Any} */ AsControl.PopPage = function(sURL,sPara,sStyle,dialogArgs){ if(sURL.indexOf("?")>=0){ alert("错误:页面URL中存在\"?\"。请将页面参数在第二个参数中传入!"); return false; } var sPageURL = sWebRootPath+"/RedirectorDialog?DiaglogURL="+sURL+"&OpenerClientID="+sCompClientID+"&ComponentURL="+sURL+this._getParaString(sPara); if (!window.showModalDialog) {alert("Because window.showModalDialog not supported So AsControl.PopPage is not supported!\n\rPlease replace AsDialog.PopPage()"); return;} return window.showModalDialog(sPageURL,dialogArgs,this._getDialogStyle(sStyle)); }; /** * 以组件形式弹出模态窗口打开页面sURL * @param sURL 页面地址 * @param sPara 传递参数 * @param sStyle 模态窗口外观特征 * @param dialogArgs 模态窗口参数 * @returns {Any} */ AsControl.PopComp = function(sURL,sPara,sStyle,dialogArgs){ if(sURL.indexOf("?")>=0) { alert("URL中存在\"?\"!"); return false; } var sCompPara = sPara; while(sCompPara.indexOf("&")>=0) sCompPara = sCompPara.replace("&","$[and]"); var sPageURL = sWebRootPath+"/RedirectorDialog?DiaglogURL=/Frame/page/control/OpenCompDialog.jsp&OpenerClientID="+sCompClientID+"&ComponentURL="+sURL+this._getParaString("CompPara="+sCompPara); if (!window.showModalDialog) {alert("Because window.showModalDialog not supported,So AsControl.PopComp is not supported!\n\rPlease replace AsDialog.PopView()"); return;} return window.showModalDialog(sPageURL,dialogArgs,this._getDialogStyle(sStyle)); }; AsControl.OpenPageOld = function(sURL,sTargetWindow,sStyle) { if(sTargetWindow=="_blank") { alert("弹出的页面不能使用OpenPage函数!");} var sPageURL=sURL; var sPara = ""; if(sURL.indexOf("?")>0) { sPageURL = sURL.substring(0,sURL.indexOf("?")); sPara = sURL.substring(sURL.indexOf("?")+1); } this.OpenPage(sPageURL, sPara, sTargetWindow,sStyle); }; AsControl.PopPageOld = function(sURL,sStyle){ var sPageURL=sURL; var sPara = ""; if(sURL.indexOf("?")>0) { sPageURL = sURL.substring(0,sURL.indexOf("?")); sPara = sURL.substring(sURL.indexOf("?")+1); } return this.PopPage(sPageURL, sPara, sStyle); }; AsControl.OpenView = function(sURL,sPara,sTargetWindow,sStyle){ return this.OpenComp(sURL,sPara,sTargetWindow,sStyle);}; AsControl.PopView = function(sURL, sPara, sStyle, dialogArgs){ return this.PopComp(sURL, sPara, sStyle, dialogArgs);}; AsControl.DestroyComp = function (ToDestroyClientID) { jQuery.ajax({url: sWebRootPath+"/Frame/page/control/DestroyCompAction.jsp?ToDestroyClientID="+ToDestroyClientID,async: false}); }; /** * 运行空参数后台java方法 * @param ClassName 类路径字符串,且必须有空构造 * @param MethodName 调用方法名称,没有形参,且返回值必须是String类型 * @param Args 参数,格式为Field1=Value1,Field2=Value2,...,FieldN=ValueN,对应的ClassName中必须有方法setField1(String)、setField2(String)、...、 setFieldN(String)等 * @returns {String} 后台方法返回的字符串,或异常信息 */ AsControl.RunJavaMethod = function (ClassName,MethodName,Args) { return AsControl.GetJavaMethodReturn(AsControl.CallJavaMethod(ClassName,MethodName,Args,""),ClassName); }; /** * 运行Transaction Sqlca参数后台java方法 * @param ClassName 类路径字符串,且必须有空构造 * @param MethodName 调用方法名称,只有com.amarsoft.awe.util.Transaction形参,且返回值必须是String类型 * @param Args 参数,格式为Field1=Value1,Field2=Value2,...,FieldN=ValueN,对应的ClassName中必须有方法setField1(String)、setField2(String)、...、 setFieldN(String)等 * @returns {String} 后台方法返回的字符串,或异常信息 */ AsControl.RunJavaMethodSqlca = function (ClassName,MethodName,Args) { return AsControl.GetJavaMethodReturn(AsControl.CallJavaMethod(ClassName,MethodName,Args,"&ArgsObject=Sqlca"),ClassName); }; AsControl.RunJavaMethodSqlcaCustom = function (ClassName,MethodName,Args) { return AsControl.GetJavaMethodReturn(AsControl.CallJavaMethodCustom(ClassName,MethodName,Args,"&ArgsObject=Sqlca"),ClassName); }; /** * 运行JBOTransaction Trans参数后台java方法 * @param ClassName 类路径字符串,且必须有空构造 * @param MethodName 调用方法名称,只有com.amarsoft.are.jbo.JBOTransaction形参,且返回值必须是String类型 * @param Args 参数,格式为Field1=Value1,Field2=Value2,...,FieldN=ValueN,对应的ClassName中必须有方法setField1(String)、setField2(String)、...、 setFieldN(String)等 * @returns {String} 后台方法返回的字符串,或异常信息 */ AsControl.RunJavaMethodTrans = function (ClassName,MethodName,Args) { return AsControl.GetJavaMethodReturn(AsControl.CallJavaMethod(ClassName,MethodName,Args,"&ArgsObject=Trans"),ClassName); }; AsControl.RunJavaMethodTransCustom = function (ClassName,MethodName,Args) { return AsControl.GetJavaMethodReturn(AsControl.CallJavaMethodCustom(ClassName,MethodName,Args,"&ArgsObject=Trans"),ClassName); }; /** * 运行后台java方法 * @param ClassName 类路径字符串,且必须有空构造 * @param MethodName 调用方法名称,没有形参,且返回值必须是String类型 * @param Args 参数,格式为Field1=Value1,Field2=Value2,...,FieldN=ValueN,对应的ClassName中必须有方法setField1(String)、setField2(String)、...、 setFieldN(String)等 * @param Sychronized false同步;true异步; * @returns {String} 后台方法返回的字符串,或异常信息 */ AsControl.RunJavaMethodTransAsynch = function (ClassName,MethodName,Args,Sychronized) { return AsControl.CallJavaMethodAsynch(ClassName,MethodName,Args,"&ArgsObject=Trans",Sychronized); }; /** * 重写自定义流程方法、请叫我张幕庆。 */ AsControl.RewriteRunJavaMethodTrans = function (ClassName,MethodName,Args) { return AsControl.GetJavaMethodReturn(AsControl.RewriteCallJavaMethod(ClassName,MethodName,Args,"&ArgsObject=TransDadai&"+Args),ClassName); }; /** * 导出财务报表 * @param sObjectType * @param sObjectNo * @param sReportScope * @param sReportDate * @returns */ AsControl.ExportFinanceReport = function(sObjectType, sObjectNo, sReportScope, sReportDate){ var sParam; if(arguments.length == 1) sParam = "ReportNo="+arguments[0]; else sParam = "ObjectType="+ObjectType+",ObjectNo="+sObjectNo+",ReportScope="+sReportScope+",ReportDate="+sReportDate; var sReportExcelPath = AsControl.RunJavaMethodSqlca("com.amarsoft.app.util.ExportExcel", "run", sParam); if(!sReportExcelPath) return; if(!frames["exportfsframe"]) $("").appendTo("body"); window.open(sWebRootPath+"/servlet/view/file1?CompClientID="+sCompClientID+"&filename="+sReportExcelPath+"&viewtype=download", "exportfsframe"); }; AsControl.CallJavaMethodJSP = function (ClassName,MethodName,Args,ArgsObjectText) { return AsControl.dealAjaxText(jQuery.ajax({ url: sWebRootPath+"/Frame/page/sys/tools/RunJavaMethod.jsp?ClassName="+ClassName+"&MethodName="+MethodName+this._getParaString("Args="+Args)+ArgsObjectText, async: false, error: AsControl.ajaxError }).responseText.trim()); }; AsControl.CallJavaMethod = function (ClassName,MethodName,Args,ArgsObjectText) { if(Args.length>0){ Args=Args+AsControl.getParamToFixedParam(Args); } return AsControl.dealAjaxText(jQuery.ajax({ type: "POST", url: sWebRootPath+"/servlet/run?1=1"+ArgsObjectText, data : { "ClassName":ClassName, "MethodName":MethodName, "Args":Args.replace(/\+/g, 'Ж').replace(/\%/g, 'ё') }, async: false, error: AsControl.ajaxError }).responseText.trim()); }; AsControl.CallJavaMethodCustom = function (ClassName,MethodName,Args,ArgsObjectText) { return AsControl.dealAjaxText(jQuery.ajax({ type: "POST", url: sWebRootPath+"/servlet/run?1=1"+ArgsObjectText, data : { "ClassName":ClassName, "MethodName":MethodName, "Args":Args.replace(/\+/g, 'Ж').replace(/\%/g, 'ё') }, async: false, error: AsControl.ajaxError }).responseText.trim()); }; AsControl.RewriteCallJavaMethod = function (ClassName,MethodName,Args,ArgsObjectText) { if(Args.length>0){ Args=Args+AsControl.getParamToFixedParam(Args); } var params=ArgsObjectText.replace(/\,/g,"&"); return AsControl.dealAjaxText(jQuery.ajax({ type: "POST", url:sWebRootPath+"/servlet/runflow?1=1"+params, data : { "ClassName":ClassName, "MethodName":MethodName, "Args":Args.replace(/\+/g, 'Ж').replace(/\%/g, 'ё') }, async: false, error: AsControl.ajaxError }).responseText.trim()); }; AsControl.CallJavaMethodAsynch = function (ClassName,MethodName,Args,ArgsObjectText,Sychronized) { if(Args.length>0){ Args=Args+AsControl.getParamToFixedParam(Args); } jQuery.ajax({ type: "POST", url: sWebRootPath+"/servlet/run?1=1"+ArgsObjectText, data : { "ClassName":ClassName, "MethodName":MethodName, "Args":Args.replace(/\+/g, 'Ж').replace(/\%/g, 'ё') }, async: Sychronized, error: AsControl.ajaxError, success:function(result){ // AsDebug.showMessage("提示",result.replace("00000000",""),"","",true); } }); return "true"; }; AsControl.getParamToFixedParam = function(Args) { var params=Args.split(","); var fixedJson="{"; for(var i=0;i0){fixedJson+="@";} fixedJson+="'"+tparam[0]+"':'"+tparam[1]+"'"; } fixedJson+="}"; return ",FixedFlowParam="+fixedJson; }; AsControl.GetJavaMethodReturn = function (sReturnText,ClassName) { window.onerror = function(msg, url, line) { alert('运行异常: ' + msg + '\n'); return true; }; if (typeof(sReturnText)=='undefined' || sReturnText.length<8) { throw new Error('【AWES0007】后台服务调用出错!\n【'+ClassName+'】'); } var rCode = sReturnText.substring(0,8); sReturnText = sReturnText.substring(8); if (rCode != '00000000') { if(rCode == 'AWES0003'){ // 返回信息为超时页面地址 AsControl.OpenPage(sReturnText, '', '_self'); window.onerror = ''; } throw new Error('【'+rCode+'】'+sReturnText+'\n【'+ClassName+'】'); } if(sReturnText.length>0 && sReturnText.substring(0,1)=='{') return $.parseJSON(sReturnText); else return sReturnText; }; /** * Ajax后台调用页面 * 如果fun为function对象,那么异步调用页面,并成功后以页面打印的信息为参数执行fun。 * 否则同步调用页面,且返回页面打印的信息。 */ AsControl.RunJsp = function(sURL,sPara,fun) { if(sURL.indexOf("?")>=0){ alert("错误:页面URL中存在\"?\"。请将页面参数在第二个参数中传入!"); return false; } var sPageURL = sWebRootPath+sURL+"?CompClientID="+sCompClientID+this._getParaString(sPara); if(typeof fun == "function"){ jQuery.ajax({url:sPageURL,type:"POST",processData:false,async:true,success:function(msg){ fun(AsControl.dealAjaxText(msg)); },error: AsControl.ajaxError}); }else{ return AsControl.dealAjaxText(jQuery.ajax({url : sPageURL,async : false,error: AsControl.ajaxError}).responseText.trim()); } }; AsControl.dealAjaxText = function(text){ if(!text) return text; if(text.indexOf("
操作超时
") >= 0){ AsControl.ajaxError({responseText:text}); } return text; }; AsControl.ajaxError = function(err){ document.close(); document.write(err.responseText); document.close(); throw new Error("异常"); }; AsControl.RunJspOne = function(sURL) { var sPageURL=sURL; var sPara = ""; if(sURL.indexOf("?")>0) { sPageURL = sURL.substring(0,sURL.indexOf("?")); sPara = sURL.substring(sURL.indexOf("?")+1); } return this.RunJsp(sPageURL, sPara); }; AsControl.RunASMethod = function(ClassName,MethodName,Args) { return this.RunJsp("/Common/ToolsB/RunMethodAJAX.jsp","ClassName="+ClassName+"&MethodName="+MethodName+"&Args="+Args); }; AsControl.getErrMsg = function (MsgNo, args) { var ClassName="com.amarsoft.awe.res.ErrMsgManager"; var MethodName="getText"; var Args="MsgNo="+MsgNo; if(args) Args += ",Args="+args; return AsControl.GetJavaMethodReturn(AsControl.CallJavaMethod(ClassName,MethodName,Args,""),ClassName); }; var OpenStyle=AsControl._getDefaultOpenStyle(); function randomNumber() { return AsControl.randomNumber();} function OpenComp(sCompID,sCompURL,sPara,sTargetWindow,sStyle) {return AsControl.OpenComp(sCompURL,sPara,sTargetWindow,sStyle);} function openComp(sCompID,sCompURL,sPara,sTargetWindow,sStyle) {return AsControl.OpenComp(sCompURL,sPara,sTargetWindow,sStyle);} function PopComp(sComponentID,sComponentURL,sParaString,sStyle) {return AsControl.PopComp(sComponentURL,sParaString,sStyle);} function popComp(sComponentID,sComponentURL,sParaString,sStyle) {return AsControl.PopComp(sComponentURL,sParaString,sStyle);} function PopPage(sURL,sTargetWindow,sStyle) {return AsControl.PopPageOld(sURL,sStyle);} function OpenPage(sURL,sTargetWindow,sStyle) {return AsControl.OpenPageOld(sURL,sTargetWindow,sStyle);} function RunJavaMethod(ClassName,MethodName,Args) {return AsControl.RunJavaMethod(ClassName,MethodName,Args);} function RunJavaMethodSqlca(ClassName,MethodName,Args) {return AsControl.RunJavaMethodSqlca(ClassName,MethodName,Args);} function RunJavaMethodTrans(ClassName,MethodName,Args) {return AsControl.RunJavaMethodTrans(ClassName,MethodName,Args);} function RunJavaMethodTransAsynch(ClassName,MethodName,Args,Sychronized) {return AsControl.CallJavaMethodAsynch(ClassName,MethodName,Args,Sychronized);} function PopPageAjax(sURL,sTargetWindow,sStyle){return AsControl.RunJspOne(sURL);} function RunJspAjax(sURL,sTargetWindow,sStyle){return AsControl.RunJspOne(sURL);} function RunMethod(ClassName,MethodName,Args){return AsControl.RunASMethod(ClassName,MethodName,Args); } function getMessageText(iNo, args) { return AsControl.getErrMsg(iNo, args);} function openObject(sObjectType,sObjectNo,sViewID,sStyle){return AsControl.OpenObject(sObjectType,sObjectNo,sViewID,sStyle);} function OpenObject(sObjectType,sObjectNo,sViewID,sStyle){return AsControl.OpenObject(sObjectType,sObjectNo,sViewID,sStyle);} function popObject(sObjectType,sObjectNo,sViewID,sDialogStyle){return AsControl.OpenObject(sObjectType,sObjectNo,sViewID,sDialogStyle);} function PopObject(sObjectType,sObjectNo,sViewID,sDialogStyle){return AsControl.OpenObject(sObjectType,sObjectNo,sViewID,sDialogStyle);} function setWindowTitle(sTitle) { top.document.title=sTitle+"                                                                                                                                                          "; } function setDialogTitle(sTitle) { var tWin = self; do{ if(typeof tWin.setTopTitle == "function"){ tWin.setTopTitle(sTitle); break; } if(tWin == tWin.parent) break; tWin = tWin.parent; }while(true); } function getDialogTitle(){ var tWin = self; do{ if(typeof tWin.getTopTitle == "function"){ return tWin.getTopTitle(); } if(tWin == tWin.parent) break; tWin = tWin.parent; }while(true); } /* * 对话框操作对象 */ var AsDialog = { /** * 弹出预定义选择器:SELECT_CATALOG * @param sObjectType * @param sParaString * @param sStyle * @returns * @belong AsDialog */ OpenSelector : function(sObjectType,sParaString,sStyle,callback,title,rightType){ return this.selectCatalogDialog(sObjectType,sParaString,sStyle,callback,title,rightType);//使用在SELECT_CATALOG中自定义查询选择信息 }, OpenSelector : function(sObjectType,sParaString,sStyle,callback,title,rightType,pageSize){ return this.selectCatalogDialog(sObjectType,sParaString,sStyle,callback,title,rightType,pageSize);//使用在SELECT_CATALOG中自定义查询选择信息 }, _PopupPage : function(pageinfo,callback){ if (!$.isPlainObject(pageinfo)) {alert("Arguments is not fit!");return;} var sPageURL = sWebRootPath + "/Redirector?OpenerClientID="+sCompClientID+"&TargetWindow=Popup&ComponentURL="+pageinfo.url+AsControl._getParaString(pageinfo.para); var d = top.dialog({ width:pageinfo.width, height:pageinfo.height, url:sPageURL }); if (pageinfo.title) d.title(pageinfo.title); d.addEventListener('close', function () { var sReturnValue=this.returnValue; jQuery.ajax({url: sWebRootPath+"/Frame/page/control/DestroyCompAction.jsp?ToDestroyClientID="+sCompClientID+"&TargetWindow=Popup",async: false}); this.remove(); if ($.isFunction(callback)) { callback(sReturnValue); } else { alert("You Selected is \n\r["+sReturnValue+"]\n\rPlease set callback Function to handled!"); } }); d.showModal(); }, /** * 通用的选择器,内嵌的SelectDialogUrl页面需实现doSure()方法,并将返回值以parent.closeDialog(返回值);的形式返回给选择器 * @param dialoginfo * @param callback */ SelectCommonDialog : function(dialoginfo,callback){ if (!$.isPlainObject(dialoginfo)) {alert("Arguments is not fit!");return;} var pageinfo = { width: dialoginfo.width, height:dialoginfo.height, title: dialoginfo.title, para: dialoginfo.para.indexOf("SelectDialogUrl")<0 ? "SelectDialogUrl="+dialoginfo.para : dialoginfo.para, url:"/Frame/page/tools/dialog/SelectDialog.jsp" }; this._PopupPage(pageinfo,callback); }, selectCatalogDialog:function(sObjectType,sParaString,sStyle,callback,titles,righttype){ var showTitle= titles||"请选择"; var srighttype=righttype||"default"; var pageinfo = { width:this._getStyleDialogWidth(sStyle,700), height:this._getStyleDialogHeight(sStyle,540), url:"/Frame/page/tools/dialog/SelectCatalog.jsp", para:"SelName="+sObjectType+"&ParaString="+sParaString+"&RightType="+srighttype, title: showTitle }; this._PopupPage(pageinfo,callback); }, selectCatalogDialog:function(sObjectType,sParaString,sStyle,callback,titles,righttype,pageSize){ var showTitle= titles||"请选择"; var srighttype=righttype||"default"; var pageinfo = { width:this._getStyleDialogWidth(sStyle,700), height:this._getStyleDialogHeight(sStyle,540), url:"/Frame/page/tools/dialog/SelectCatalog.jsp", para:"SelName="+sObjectType+"&ParaString="+sParaString+"&RightType="+srighttype+"&PageSize="+pageSize, title: showTitle }; this._PopupPage(pageinfo,callback); }, /**主要是使用在select_catalog中自定义查询选择信息 * sObjectType:对象类型 * sValueString格式: 传入参数 @ ID列名 @ ID在返回串中的位置 @ Name列名 @ Name在返回串中的位置 * iArgDW: 第几个DW,默认为0 * iArgRow: 第几行,默认为0 */ setObjectValue:function(sObjectType,sParaString,sValueString,iArgDW,iArgRow,sStyle,callback){ var i=sValueString.split("@").length-1; if (i%2!=0){ alert("setObjectValue()返回参数设定有误!\r\n格式为:@ID列名@ID在返回串中的位置..."); return; }else{ this.selectCatalogDialog(sObjectType,sParaString,sStyle,function(sObjectNoString){ var i=sValueString.split("@").length-1; var sValues = sValueString.split("@"); var iDW = iArgDW; if(isNaN(iDW)) iDW=0; var iRow = iArgRow; if(isNaN(iRow)) iRow=0; var j=i/2,m,sColumn,iID; if(typeof(sObjectNoString)=="undefined" || sObjectNoString=="null" || sObjectNoString==null || sObjectNoString=="_CANCEL_" ||sObjectNoString==""){ return; }else if(sObjectNoString=="_CLEAR_"){ for(var m=1;m<=j;m++){ sColumn = sValues[2*m-1]; if(sColumn!="") setItemValue(iDW,iRow,sColumn,""); } }else if(sObjectNoString!="_NONE_" && sObjectNoString!="undefined"){ var sObjectNos = sObjectNoString.split("@"); for(var m=1;m<=j;m++){ sColumn = sValues[2*m-1]; iID = parseInt(sValues[2*m],10); if(sColumn!="") setItemValue(iDW,iRow,sColumn,sObjectNos[iID]); } if(typeof(callback) == "function"){ callback(sObjectNoString); } }else{ return; } }); } }, /** * 弹出配置树图选择器,并返回选择内容字符串 * @param sCodeNo 配置树图编号 必须 * @param sReturnFields 返回字段,以@符号分隔 必须 * * @param aSelected {Array} 默认选择数据 字段对应的值 ["F1V1,F1V2,...,F1VN","F2V1,F2V2,...,F2VN",...,"FNV1,FNV2,...,F1VN"] * @param isMulti 选择器树图多选标记,true 多选,否则 单选 * @param onlyLeaf 选择器树图只选功能节点 false 可选文件夹节点 否则 只能选末端叶子节点 * @param sStyle 选择器窗体外观特征,默认宽度为620像素,高度为500像素,不能自由拉伸窗体,不显示状态栏、帮助问号 * * @returns 选择器返回的字符串 单选:F1V@F2V@...@FNV 多选:F1V1@F2V1@...@FNV1~F1V2@F2V2@...@FNV2~F1VN@F2VN@...@FNVN * @belong AsDialog */ SelectConfigTreeValue : function(sCodeNo, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle,callback){ if(sReturnFields.indexOf("=") > -1){ return this.SetConfigTreeValue(sCodeNo, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle); } var sSelected = aSelected; if ($.isArray(aSelected)) {sSelected = aSelected.join("@");} var pageinfo = { width:this._getStyleDialogWidth(sStyle,620), height:this._getStyleDialogHeight(sStyle,500), url:"/Frame/page/tools/dialog/SelectDialog.jsp", para:"SelectDialogUrl=/Frame/page/tools/dialog/SelectCodeTreeDialog.jsp&CodeNo="+sCodeNo+"&ReturnFields="+sReturnFields+"&IsMulti="+isMulti+"&OnlyLeaf="+onlyLeaf+"&ASelected="+sSelected, title: '请选择:' }; this._PopupPage(pageinfo,callback); }, /** * 弹出配置树图选择器,并返回选择内容字符串 * @param sCodeNo 配置树图编号 必须 * @param sReturnFields 返回并设置字段,FK1=FV1@FK2=FV2@...@FKN=FVN (当前显示模板字段=选择器字段) * * @param aSelected {Array} 默认选择数据 字段对应的值 ["F1V1,F1V2,...,F1VN","F2V1,F2V2,...,F2VN",...,"FNV1,FNV2,...,F1VN"] * @param isMulti 选择器树图多选标记,true 多选,否则 单选 * @param onlyLeaf 选择器树图只选功能节点 false 可选文件夹节点 否则 只能选末端叶子节点 * @param sStyle 选择器窗体外观特征,默认宽度为620像素,高度为500像素,不能自由拉伸窗体,不显示状态栏、帮助问号 * * @returns 选择器返回的字符串 单选:F1V@F2V@...@FNV 多选:F1V1@F2V1@...@FNV1~F1V2@F2V2@...@FNV2~F1VN@F2VN@...@FNVN * @belong AsDialog */ SetConfigTreeValue : function(sCodeNo, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle){ if(sReturnFields.indexOf("=") < 0){ return this.SelectConfigTreeValue(sCodeNo, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle); } var fieldValues = sReturnFields.split("@"); var terminis = new Array(); // 接收字段 var fields = ""; // 返回字段 for(var i = 0; i < fieldValues.length; i++){ if(fieldValues[i].indexOf("=") < 0) continue; var keyValue = fieldValues[i].split("="); if(keyValue.length < 2 || keyValue[0] == "" || keyValue[1] == "") continue; terminis[terminis.length] = keyValue[0]; if(fields != "") fields += "@"; fields += keyValue[1]; } this.SelectConfigTreeValue(sCodeNo, fields, aSelected, isMulti, onlyLeaf, sStyle, function(sObjectNoString){ AsDialog._setItemValues(terminis,sObjectNoString,isMulti); }); }, /** * 弹出树图选择器,并返回选择内容字符串 * @param sDoNo 预定义显示模型编号 必须 * @param sArgs 预定义显示模型参数,规则同OW页面,以“,”分隔 * @param sReturnFields 返回字段,以@符号分隔 必须 * @param sSortField 节点排序字段 必须 * @param sTextField 节点显示字段 必须 * * @param aSelected {Array} 默认选择数据 字段对应的值 ["F1V1,F1V2,...,F1VN","F2V1,F2V2,...,F2VN",...,"FNV1,FNV2,...,F1VN"] * @param isMulti 选择器树图多选标记,true 多选,否则 单选 * @param onlyLeaf 选择器树图只选功能节点 false 可选文件夹节点 否则 只能选末端叶子节点 * @param sStyle 选择器窗体外观特征,默认宽度为620像素,高度为500像素,不能自由拉伸窗体,不显示状态栏、帮助问号 * * @returns 选择器返回的字符串 单选:F1V@F2V@...@FNV 多选:F1V1@F2V1@...@FNV1~F1V2@F2V2@...@FNV2~F1VN@F2VN@...@FNVN * @belong AsDialog */ SelectTreeValue : function(sDoNo, sArgs, sReturnFields, sSortField, sTextField, aSelected, isMulti, onlyLeaf, sStyle,callback){ var sSelected = aSelected; if ($.isArray(aSelected)) {sSelected = aSelected.join("@");} var pageinfo = { width:this._getStyleDialogWidth(sStyle,620), height:this._getStyleDialogHeight(sStyle,500), url:"/Frame/page/tools/dialog/SelectDialog.jsp", para:"SelectDialogUrl=/Frame/page/tools/dialog/SelectTreeDialog.jsp&DoNo="+sDoNo+"&Parameters="+sArgs+"&SortField="+sSortField+"&TextField="+sTextField+"&ReturnFields="+sReturnFields+"&IsMulti="+isMulti+"&OnlyLeaf="+onlyLeaf+"&ASelected="+sSelected, title: '请选择:' }; this._PopupPage(pageinfo,callback); }, /** * 弹出树图选择器,并返回选择内容字符串 * @param sDoNo 预定义显示模型编号 必须 * @param sArgs 预定义显示模型参数,规则同OW页面,以“,”分隔 * @param sReturnFields 返回并设置字段,FK1=FV1@FK2=FV2@...@FKN=FVN (当前显示模板字段=选择器显示模板字段) * @param sSortField 节点排序字段 必须 * @param sTextField 节点显示字段 必须 * * @param aSelected {Array} 默认选择数据 字段对应的值 ["F1V1,F1V2,...,F1VN","F2V1,F2V2,...,F2VN",...,"FNV1,FNV2,...,F1VN"] * @param isMulti 选择器树图多选标记,true 多选,否则 单选 * @param onlyLeaf 选择器树图只选功能节点 false 可选文件夹节点 否则 只能选末端叶子节点 * @param sStyle 选择器窗体外观特征,默认宽度为620像素,高度为500像素,不能自由拉伸窗体,不显示状态栏、帮助问号 * * @returns 选择器返回的字符串 单选:F1V@F2V@...@FNV 多选:F1V1@F2V1@...@FNV1~F1V2@F2V2@...@FNV2~F1VN@F2VN@...@FNVN * @belong AsDialog */ SetTreeValue : function(sDoNo, sArgs, sReturnFields, sSortField, sTextField, aSelected, isMulti, onlyLeaf, sStyle,callback){ if(sReturnFields.indexOf("=") < 0){ return this.SelectTreeValue(sDoNo, sArgs, sReturnFields, sSortField, sTextField, aSelected, isMulti, onlyLeaf, sStyle); } var fieldValues = sReturnFields.split("@"); var terminis = new Array(); // 接收字段 var fields = ""; // 返回字段 for(var i = 0; i < fieldValues.length; i++){ if(fieldValues[i].indexOf("=") < 0) continue; var keyValue = fieldValues[i].split("="); if(keyValue.length < 2 || keyValue[0] == "" || keyValue[1] == "") continue; terminis[terminis.length] = keyValue[0]; if(fields != "") fields += "@"; fields += keyValue[1]; } var sReturn =""; this.SelectTreeValue(sDoNo, sArgs, fields, sSortField, sTextField, aSelected, isMulti, onlyLeaf, sStyle, function(sObjectNoString){ AsDialog._setItemValues(terminis,sObjectNoString,isMulti); if(typeof(callback) == "function"){ callback(sObjectNoString); } }); }, /** * 弹出列表选择器,并返回选择内容字符串,参考SetGridValue * @param sDoNo 选择器显示模板编号 * @param sArgs 列表参数,规则同OW页面,以“,”分隔 * @param sFields 返回字段,以@符号分隔 * @param aSelected {Array} 默认选择数据 字段对应的值 ["F1V1,F1V2,...,F1VN","F2V1,F2V2,...,F2VN",...,"FNV1,FNV2,...,F1VN"] * @param isMulti 选择器列表多选标记,true 多选,false 单选 * @param sStyle 选择器窗体外观特征,默认宽度为620像素,高度为500像素,不能自由拉伸窗体,不显示状态栏、帮助问号。 * @returns 选择器返回的字符串 单选:F1V@F2V@...@FNV 多选:F1V1@F2V1@...@FNV1~F1V2@F2V2@...@FNV2~F1VN@F2VN@...@FNVN * @belong AsDialog */ SelectGridValue : function(sDoNo, sArgs, sFields, aSelected, isMulti, sStyle,callback){ var sSelected = aSelected; if ($.isArray(aSelected)) {sSelected = aSelected.join("@");} var pageinfo = { width:this._getStyleDialogWidth(sStyle,600), height:this._getStyleDialogHeight(sStyle,500), url:"/Frame/page/tools/dialog/SelectDialog.jsp", para:"SelectDialogUrl=/Frame/page/tools/dialog/SelectGridDialog.jsp&DoNo="+sDoNo+"&Parameters="+sArgs+"&Fields="+sFields+"&IsMulti="+isMulti+"&ASelected="+sSelected, title: '请选择:' }; this._PopupPage(pageinfo,callback); }, SelectGridValue_2 : function(sDoNo, sArgs, sFields, aSelected, isMulti, sStyle,callback){ if(!sStyle) sStyle = "dialogWidth:620px;dialogHeight:500px;resizable:no;maximize:yes;help:no;status:no;"; if(sFields.indexOf("=") > -1){ return this.SetGridValue(sDoNo, sArgs, sFields, aSelected, sStyle); } /* AsDialog.PopPage("/Frame/page/tools/SelectDialog.jsp","SelectDialogUrl=/Frame/page/tools/SelectGridDialog.jsp&DoNo="+sDoNo+"&Parameters="+sArgs+"&Fields="+sFields+"&IsMulti="+isMulti, "", function(){ reloadSelf(); }); */ AsDialog.PopPage("/Frame/page/tools/SelectDialog.jsp", "SelectDialogUrl=/Frame/page/tools/SelectGridDialog.jsp&DoNo="+sDoNo+"&Parameters="+sArgs+"&Fields="+sFields+"&IsMulti="+isMulti, "",callback); }, /** * 调用列表选择器并赋值给当前显示模板,参考#SelectGridValue * @param sDoNo -- AWE_DO_CATALOG.DoNo * @param sArgs -- Param1,Param2,...,ParamN * @param sFieldValues -- FK1=FV1@FK2=FV2@...@FKN=FVN (当前显示模板字段=选择器显示模板字段) * @param aSelected {Array} 默认选择数据 字段对应的值 ["F1V1,F1V2,...,F1VN","F2V1,F2V2,...,F2VN",...,"FNV1,FNV2,...,F1VN"] * @returns 选择器返回的字符串 -- V1@V2@...@VN * @belong AsDialog */ SetGridValue : function(sDoNo, sArgs, sFieldValues, aSelected, isMulti, sStyle){ if(sFieldValues.indexOf("=") < 0){ return this.SelectGridValue(sDoNo, sArgs, sFieldValues, aSelected, isMulti, sStyle); } var fieldValues = sFieldValues.split("@"); var terminis = new Array(); // 接收字段 var fields = ""; // 返回字段 for(var i = 0; i < fieldValues.length; i++){ if(fieldValues[i].indexOf("=") < 0) continue; var keyValue = fieldValues[i].split("="); if(keyValue.length < 2 || keyValue[0] == "" || keyValue[1] == "") continue; terminis[terminis.length] = keyValue[0]; if(fields != "") fields += "@"; fields += keyValue[1]; } this.SelectGridValue(sDoNo, sArgs, fields, aSelected, isMulti, sStyle, function(sObjectNoString){ AsDialog._setItemValues(terminis,sObjectNoString,isMulti); }); }, /** * 日期选择器 * @param obj 绑定控件,一般为text输入框 * @param strFormat 日期格式化字符串 * @param startDate 能选日期最早值【"Today":当前日期】【数字类型:与当前日期的天数偏移量】【字符串:与strFormat格式一致的时间】【空:不受限制】 * @param endDate 能选日期最晚值【与startDate的解释一致】 * @param postEvent 日期选择后续事件对象,如function(){...} * @param x 横向偏移量 * @param y 纵向偏移量 * @belong AsDialog */ OpenCalendar : function(obj,strFormat,startDate,endDate,postEvent,x,y){ if(typeof obj == "string") obj = document.getElementById(obj); if(!obj) return; var today = new Date();//.format(strFormat); //alert([getDate(startDate),getDate(endDate)]); SelectDate(obj,strFormat,getDate(startDate),getDate(endDate),postEvent,x,y); function getDate(sDate){ if(typeof sDate == "string" && sDate.toUpperCase() == "TODAY") return today; if(typeof sDate == "number"){ return new Date(today.getFullYear(), today.getMonth(), today.getDate()+parseInt(sDate, 10)); } return sDate; } }, OpenCalender : function(){ // 单词Calendar错误兼容处理 this.OpenCalendar.apply(this, arguments); }, PopPage : function(sURL,sPara,objectStyle,callback,titlename){ var width = 620; var height = 500; var title = titlename?titlename:" "; if ($.isPlainObject(objectStyle)) { if (objectStyle.width) width = objectStyle.width; if (objectStyle.height) height = objectStyle.height; title = objectStyle.title; } else if (typeof objectStyle=="string") { width = this._getStyleDialogWidth(objectStyle,width); height = this._getStyleDialogHeight(objectStyle,height); } var pageinfo = { width:width, height:height, title:title, url:sURL, para:sPara }; this._PopupPage(pageinfo,callback); }, OpenObject:function(sObjectType,sObjectNo,sViewID,objectStyle,callback,param){ if (!objectStyle) objectStyle =$.parseJSON(RunJspAjax("/Frame/page/tools/object/GetObjectInfo.jsp?ObjectType="+sObjectType+"&ObjectNo="+sObjectNo+"&ViewID="+sViewID+"&Param="+param)); this.PopView("/Frame/page/tools/object/ObjectViewer.jsp","ObjectType="+sObjectType+"&ObjectNo="+sObjectNo+"&ViewID="+sViewID+"&Param="+param,objectStyle,callback); }, PopView : function(sURL,sPara,objectStyle,callback,ctitle){ var width = top.document.body.offsetWidth-16; var height = top.document.body.offsetHeight-48; var title =ctitle||""; if ($.isPlainObject(objectStyle)) { if (objectStyle.width) width = objectStyle.width; if (objectStyle.height) height = objectStyle.height; title = objectStyle.title; } else if (typeof objectStyle=="string") { width = this._getStyleDialogWidth(objectStyle,width); height = this._getStyleDialogHeight(objectStyle,height); } var pageinfo = { width:width, height:height, title:title, url:sURL, para:sPara }; if ($.isFunction(callback)) { this._PopupPage(pageinfo,callback); } else { this._PopupPage(pageinfo,function(){}); } }, SetDialogTitle : function(sTitle){ var d = top.dialog.getCurrent(); if (d) d.title(sTitle); }, ClosePage : function(sReturnValue){ var d = top.dialog.getCurrent();if (!d && top.dialog.list){for (var i in top.dialog.list) {d=top.dialog.list[i];}} if (d) d.close(sReturnValue) ; }, _getStyleDialogWidth : function(sStyle, sDefaultValue){ if (!sDefaultValue ) sDefaultValue = 640; if (!sStyle) return sDefaultValue; var aMatch=sStyle.match(/dialogWidth[\s]*[:=][\s]*([\d]+)px/i); if (aMatch) return parseInt(aMatch[1]); else return sDefaultValue; }, _getStyleDialogHeight : function(sStyle, sDefaultValue){ if (!sDefaultValue ) sDefaultValue = 480; if (!sStyle) return sDefaultValue; var aMatch=sStyle.match(/dialogHeight[\s]*[:=][\s]*([\d]+)px/i); if (aMatch) return parseInt(aMatch[1]); else return sDefaultValue; }, _setItemValues : function(aField, sValues, isMulti){ if(typeof setItemValue != "function" && typeof getRow != "function") return; if(!sValues) return; if(sValues == "_CLEAR_"){ for(var i = 0; i < aField.length; i++){ setItemValue(0, getRow(), aField[i], ""); } return; }else{ if(typeof setItemValue == "function" && typeof getRow == "function"){ if(isMulti){ var aReturn = sValues.split("~"); var aValues = new Array(); for(var i = 0; i < aReturn.length; i++){ var vs = aReturn[i].split("@"); for(var j = 0; j < aField.length; j++){ if(i == 0) aValues[j] = ""; else aValues[j] += ","; aValues[j] += vs[j]; if(i == aReturn.length - 1) setItemValue(0, getRow(0), aField[j], aValues[j]); } } }else{ var aValues = sValues.split("@"); for(var i = 0; i < aField.length; i++){ setItemValue(0, getRow(), aField[i], aValues[i]); } } } } }, SelectXMLTreeValue : function(xmlFile, xmlTags, keys, names, treeName, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle,callback){ if(sReturnFields.indexOf("=") > -1){ return this.SetXMLTreeValue(xmlFile, xmlTags, keys, names, treeName, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle); } var sSelected = aSelected; if ($.isArray(aSelected)) {sSelected = aSelected.join("@");} var pageinfo = { width:this._getStyleDialogWidth(sStyle,620), height:this._getStyleDialogHeight(sStyle,500), url:"/Frame/page/tools/dialog/SelectDialog.jsp", para:"SelectDialogUrl=/Frame/page/tools/dialog/SelectXMLTreeDialog.jsp&XMLFile="+xmlFile+"&XMLTags="+xmlTags+"&Keys="+keys+"&Names="+names+"&TreeName="+treeName+"&ReturnFields="+sReturnFields+"&IsMulti="+isMulti+"&OnlyLeaf="+onlyLeaf+"&ASelected="+sSelected, title: '请选择:' }; this._PopupPage(pageinfo,callback); }, SetXMLTreeValue : function(xmlFile, xmlTags, keys, names, treeName, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle){ if(sReturnFields.indexOf("=") < 0){ return this.SelectXMLTreeValue(xmlFile, xmlTags, keys, names, treeName, sReturnFields, aSelected, isMulti, onlyLeaf, sStyle); } var fieldValues = sReturnFields.split("@"); var terminis = new Array(); // 接收字段 var fields = ""; // 返回字段 for(var i = 0; i < fieldValues.length; i++){ if(fieldValues[i].indexOf("=") < 0) continue; var keyValue = fieldValues[i].split("="); if(keyValue.length < 2 || keyValue[0] == "" || keyValue[1] == "") continue; terminis[terminis.length] = keyValue[0]; if(fields != "") fields += "@"; fields += keyValue[1]; } this.SelectXMLTreeValue(xmlFile, xmlTags, keys, names, treeName, fields, aSelected, isMulti, onlyLeaf, sStyle, function(sObjectNoString){ AsDialog._setItemValues(terminis,sObjectNoString,isMulti); }); } }; /** * 对参数做预处理 * @param sObjectType 对象类型 * @param sParaString * @param sValueString 传入参数 @ ID列名 @ ID在返回串中的位置 @ Name列名 @ Name在返回串中的位置 * @param iArgDW 第几个DW,默认为0 * @param iArgRow 第几行,默认为0 * @param sStyle */ function setObjectValuePretreat(sObjectType,sParaString,sValueString,iArgDW,iArgRow,sStyle){ var regexp = /#{[A-Za-z0-9]+}/g; var cols = sParaString.match(regexp); if(cols){ for(var i=0;i