1157 lines
45 KiB
JavaScript
1157 lines
45 KiB
JavaScript
/**
|
||
* 字符串忽略前导空白和尾部空白
|
||
* @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;
|
||
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 = $("<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
|
||
});
|
||
|
||
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@...@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<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);
|
||
} |