2018-07-05 10:25:13 +08:00

1157 lines
45 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 字符串忽略前导空白和尾部空白
* @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);
}
};
/**
* 通过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="<a href='"+sURL+"' target='"+sIFrame+"' id='"+"ID_"+sIFrame+"'>首页111</a>"
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;
};
/**
* 对指定页面区域添加遮罩层<br>
* 区域名称
* <ul>
* <li>_top 直接对全窗口进行遮罩</li>
* <li>_self 对当前页面进行遮罩</li>
* <li>sFrameName 首先寻找当前页面下的IFRAME进行匹配否则向上找父层页面进行匹配若寻找到那么遮罩住否则不做处理</li>
* </ul>
* @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;
var width = Math.max(doc.body.scrollWidth, doc.documentElement.scrollWidth);//-20;
var height = Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight);//-20;
var board = $("<div id='switch_page_mask' style='position:absolute;left:0;top:0;width:"+width+"px;height:"+height+"px;text-align:center;z-index:9999;'>"+
"<div style='position:absolute;left:0;top:0;width:100%;height:100%;background:#e8e8e8;filter:alpha(opacity=60);opacity:0.6;z-index:-1;'></div>"+
"<span style='color:#772200;display:block;margin-top:80px;font-size:14px;display:none;'>页面切换中,请等待......<span></span></span>"+
"</div>", 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);
};
/**
* 运行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.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"]) $("<iframe name='exportfsframe' style='display:none;'></iframe>").appendTo("body");
window.open(sWebRootPath+"/servlet/view/file?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.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.getParamToFixedParam = function(Args) {
var params=Args.split(",");
var fixedJson="{";
for(var i=0;i<params.length;i++){
var tparam=params[i].split("=");
if(i>0){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("<div class=\"time_tit\">操作超时</div>") >= 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 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中自定义查询选择信息
},
_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,
quickClose: true
});
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);
},
/**主要是使用在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@...@FNV1F1V2@F2V2@...@FNV2F1VN@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@...@FNV1F1V2@F2V2@...@FNV2F1VN@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@...@FNV1F1V2@F2V2@...@FNV2F1VN@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@...@FNV1F1V2@F2V2@...@FNV2F1VN@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@...@FNV1F1V2@F2V2@...@FNV2F1VN@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<cols.length;i++){
var sCol = cols[i].substring(2,cols[i].length-1);
var sColValue = getItemValue(0, 0, sCol);
sParaString = sParaString.replace("#{"+sCol+"}", sColValue);
}
}
AsDialog.setObjectValue(sObjectType,sParaString,sValueString,iArgDW,iArgRow,sStyle);
}