/** * @author herong * 公共类 */ var CFWComm = _FW.fCreateClass(); /** * 公共类API */ CFWComm.prototype = { /** * 初始化 * */ fInitialize : function(options) { }, /** * 类似oracle数据库的nvl函数 * 主要是判断传入对象是空值的话,就替换成传入的默认值 * @param sInputs 被判断对象 * @param sDefaultValue 默认值 * @return 如果sInputs为空,则返回sDefaultValue,若不为空,返回sInputs *
    * 使用举例:
    *     var _aResult = CFW.oComm.fnNvl("null",1);//为空时,设置默认值为1
    * 
*/ fnNvl : function (sInputs,sDefaultValue){ if(typeof(sInputs)=="undefined" || sInputs==null || sInputs=="" || sInputs.toLowerCase()=="null"){ return sDefaultValue; }else{ return sInputs; } }, /** * 加法函数 * @param double dInput1 (必需)数值1 * @param double dInput2 (必需)数值2 * @returns double dInput1与dInput2相加后的值 *
    * 使用举例:
    *     var _aResult = CFW.oComm.fnAdd(_iAge,60);//如计算年龄加上60年的值
    * 
*/ fnAdd : function (dInput1,dInput2){ var r1,r2,m,v,r,t,c; if(CFW.oValid.fnIsNull(dInput1,"CFW.oComm.fnAdd 数值1")){ return ; } if(CFW.oValid.fnIsNull(dInput2,"CFW.oComm.fnAdd 数值2")){ return ; } if(!CFW.oValid.fnIsFloat(dInput1)){ return ; } if(!CFW.oValid.fnIsFloat(dInput2)){ return ; } try{r1=dInput1.toString().split(".")[1].length;}catch(e){r1=0;} try{r2=dInput2.toString().split(".")[1].length;}catch(e){r2=0;} /* m = Math.pow(10,Math.max(r1,r2)); v = (dInput1*m+dInput2*m)/m; if(v==0){return v;} r = Math.max(r1,r2); if(r!=0){ if(v>=0){ v = v+0.000000001; //需要进行特殊处理 例如 135.67 + 1.2=136.869999999999998 }else{ v = v-0.000000001; //需要进行特殊处理 例如 0 - 0.23 } } t = v.toString(); if(r!=0){ var iPos = t.indexOf("."); var re = t.substr(0,iPos + r + 1); t = re; } return t; */ //使用上述算法:出现异常:8508072.95+2666814.76的返回结果是11174887.70 正常应该返回11174887.71 c = Math.abs(r1 - r2); m = Math.pow(10, Math.max(r1, r2)); if (c > 0) { var cm = Math.pow(10, c); if (r1 > r2) { dInput1 = Number(dInput1.toString().replace(".", "")); dInput2 = Number(dInput2.toString().replace(".", "")) * cm; } else { dInput1 = Number(dInput1.toString().replace(".", "")) * cm; dInput2 = Number(dInput2.toString().replace(".", "")); } } else { dInput1 = Number(dInput1.toString().replace(".", "")); dInput2 = Number(dInput2.toString().replace(".", "")); } return (dInput1 + dInput2) / m; }, /** * 减法函数 * @param double dInput1(必需) 数值1 * @param double dInput2(必需) 数值2 * @returns double 减后值 *
    * 使用举例:
    *     var _aResult = CFW.oComm.fnSub(_iAge,60);//如计算年龄减去60年的值
    * 
*/ fnSub : function (dInput1,dInput2){ var r1,r2,m,v,r,t; if(CFW.oValid.fnIsNull(dInput1,"CFW.oComm.fnSub 数值1")){ return ; } if(CFW.oValid.fnIsNull(dInput2,"CFW.oComm.fnSub 数值2")){ return ; } if(!CFW.oValid.fnIsFloat(dInput1)){ return ; } if(!CFW.oValid.fnIsFloat(dInput2)){ return ; } try{r1=dInput1.toString().split(".")[1].length;}catch(e){r1=0;} try{r2=dInput2.toString().split(".")[1].length;}catch(e){r2=0;} m = Math.pow(10,Math.max(r1,r2)); v = (dInput1*m - dInput2*m)/m; if(v==0){return v;} r = Math.max(r1,r2); if(r!=0){ if(v>=0){ v = v+0.000000001; //需要进行特殊处理 例如 135.67 + 1.2=136.869999999999998 }else{ v = v-0.000000001; //需要进行特殊处理 例如 0 - 0.23 } } t = v.toString(); if(r!=0){ var iPos = t.indexOf("."); var re = t.substr(0,iPos + r + 1); t = re; } return t; }, /** * js 乘法函数 * @param double dInput1(必需)数值1 * @param double dInput2(必需)数值2 * @returns double 乘后值 *
    * 使用举例:
    *     var _aResult = CFW.oComm.fnMult(_iJfjs,12);//如计算缴费基数乘以12个月的结果
    * 
*/ fnMult : function (dInput1,dInput2){ var i,j,v; if(CFW.oValid.fnIsNull(dInput1,"CFW.oComm.fnMult 数值1")){ return ; } if(CFW.oValid.fnIsNull(dInput2,"CFW.oComm.fnMult 数值2")){ return ; } if(!CFW.oValid.fnIsFloat(dInput1)){ return ; } if(!CFW.oValid.fnIsFloat(dInput2)){ return ; } dInput1=String(dInput1); dInput2=String(dInput2); i=dInput1.length-dInput1.indexOf(".")-1; i=(i>=dInput1.length)?0:i; j=dInput2.length-dInput2.indexOf(".")-1; j=(j>=dInput2.length)?0:j; v=dInput1.replace(".","")*dInput2.replace(".","")/Math.pow(10,i+j); return v; }, /** * js 除法函数 * @param double dInput1(必需)数值1 * @param double dInput2(必需)数值2 * @returns double 除后值 *
    * 使用举例:
    *     var _aResult = CFW.oComm.fnDiv(_iJfje,12);//如计算缴费金额除以12个月的结果 
    * 
*/ fnDiv : function (dInput1,dInput2){ var t1=0,t2=0,r1,r2,v; if(CFW.oValid.fnIsNull(dInput1,"CFW.oComm.fnDiv 数值1")){ return ; } if(CFW.oValid.fnIsNull(dInput2,"CFW.oComm.fnDiv 数值2")){ return ; } if(!CFW.oValid.fnIsFloat(dInput1)){ return ; } if(!CFW.oValid.fnIsFloat(dInput2)){ return ; } if(dInput2==0){ return; } try{t1=dInput1.toString().split(".")[1].length;}catch(e){} try{t2=dInput2.toString().split(".")[1].length;}catch(e){} with(Math){ r1=Number(dInput1.toString().replace(".","")); r2=Number(dInput2.toString().replace(".","")); v =(r1/r2)*pow(10,t2-t1); } return v; }, /** * 从身份证号码取生日(支持15位、18位身份证号码) * @param String sSfzh (必需) 身份证号码字符串 * @return String 获取到的生日字符串,格式yyyy-mm-dd *
    * 使用举例:
    *     var _sBirthday = CFW.oComm.fnGetBirthday(_sSfzh);
    * 
*/ fnGetBirthday : function (sSfzh){ var year,month,day,retStr; if(CFW.oValid.fnIsNull(sSfzh,"CFW.oComm.fnGetBirthday 身份证号码字符串")){ return ; } if(sSfzh!=""){ if(sSfzh.length==15){ year = "19" + sSfzh.substring(6,8); month = sSfzh.substring(8,10); day = sSfzh.substring(10,12); retStr = year + "-" + month + "-" + day; //window.CFW.oWin.fnAlert(year); //window.CFW.oWin.fnAlert(month); //window.CFW.oWin.fnAlert(day); //window.CFW.oWin.fnAlert(retStr); return retStr; } else if(sSfzh.length==18){ year = sSfzh.substring(6,10); month = sSfzh.substring(10,12); day = sSfzh.substring(12,14); retStr = year + "-" + month + "-" + day; return retStr; } } else return ""; }, /** * 校验身份证合法性并提示错误提示信息 * 校验包括:是否有非法字符、日期合法性、18位身份证校验位等(支持15位、18位身份证号码) * @param String sSfzh (必需) 身份证号码字符串 * @return boolean 合法返回true,不合法返回false *
    * 使用举例:
    *     var _bValid = CFW.oComm.fnValidSfzh(_sSfzh);
    * 
*/ fnValidSfzh : function (sSfzh){ var inputPro = "公民身份号码"; if(sSfzh == null) sSfzh = ""; if(CFW.oValid.fnIsNull(sSfzh,"CFW.oComm.fnValidSfzh 身份证号码字符串")){ return false; } if(_CHECK_IDCARD){ var sGmsfz=''; var sFhz=''; var sMsg=''; var mParams = { "PI_GMSFZ" : sSfzh }; var obj=this; CFW.oAJax.doProc("PKG_FW_PUB.CHECK_GMSFZ", mParams, '', function(mData) { sFhz=mData[0].PO_FHZ; if(sFhz=='1'){ sGmsfz=mData[0].PO_GMSFZ; }else{ sMsg=mData[0].PO_MSG; } }, function(sMsg){ }, false ); if(sFhz=='1'){ return true; }else{ CFW.oWin.fnAlert(sMsg); return false; } }else{ var format=sSfzh.length; if(!CFW.oValid._fnIs0AndPosInteger(sSfzh)){ CFW.oWin.fnAlert(inputPro + "输入不合法!"); return false; } if(sSfzh == "") return true; if((format==18)&&(!this._checkCheckStr(sSfzh))) return false; /* if(format==15){ sSfzh= this.fnTransact(sSfzh); format=18; }*/ if(format==15 || format==18){ if(!this._fnCheckID(sSfzh,inputPro,format)) return false; }else{ CFW.oWin.fnAlert("公民身份号码的位数输入不正确!"); return false; } return true; } }, /** * 转换身份证号(无提示信息) * 校验包括:是否有非法字符、日期合法性、18位身份证校验位等(支持15位、18位身份证号码) * @param String sSfzh (必需) 需要转换身份证 * @return 返回值:身份证号码 或 错误代码,如下: * 0 传入参数str为null * -1 公民身份证长度不是15或18位 * -2 15位公民身份证不是数字 * -3 18位公民身份证前17位不是数字 * -4 没有通过18位校验 *
    * 使用举例:
    *     var _sNewSfzh = CFW.oComm.fnTransformSfzhNa(_sSfzh);
    * 
*/ fnTransformSfzhNa : function (sSfzh){ var newstr="new"; if ((CFW.oValid.fnIsNull(sSfzh)) || (sSfzh == "null") || (sSfzh == "")){ return 0; } if(CFW.oValid.fnIsNull(sSfzh,"CFW.oComm.fnTransformSfzhNa 身份证号码字符串")){ return 0; } if (sSfzh.length!=15 && sSfzh.length !=18){ //CFW.oWin.fnAlert("公民身份证长度不正确应该为15或18位!"); return -1; } if (sSfzh.length==15){ if (isNaN(sSfzh)==true){ //CFW.oWin.fnAlert("15位公民身份证应该为数字!"); return -2; } newstr = this.fnTransact(sSfzh); } if (sSfzh.length==18){ if (isNaN(sSfzh.substr(0,17))==true){ //CFW.oWin.fnAlert("18位公民身份证前17位应该为数字!"); return -3; } newstr = sSfzh; } if (this.fnValidSfzh(newstr)==true){ return newstr; }else{ return -4; } }, /** * 升15位身份证为18位(升位前提示) * 主要是将传入的15位身份证转换为18位身份证,并提示转换后的18位身份证字符串 * @param String sSfhz15bit (必需) 15位身份证 * @param String sSfts 是否提示,'1'表示提示,'0'表示不提示,默认为'0' * @return String 18位身份证 *
    * 使用举例:
    *     var _sNewSfzh = CFW.oComm.fnTransact(_sSfzh);
    * 
*/ fnTransact : function (sSfhz15bit,iSfts){ if(CFW.oValid.fnIsNull(sSfhz15bit,"CFW.oComm.fnTransact 15位身份证")){ return ; } if(CFW.oValid.fnIsNull(iSfts)){ iSfts = '0'; } if(this.fnValidSfzh(sSfhz15bit) == false){ return ; } var getno=sSfhz15bit; if(getno.length==15){ var wi=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); // CFW.oWin.fnAlert("wi="+wi[1]); var ai=new Array(1,0,'X',9,8,7,6,5,4,3,2); // CFW.oWin.fnAlert("ai="+ai); var F1=getno.substr(0,6)+"19"+getno.substr(6,15); // CFW.oWin.fnAlert("F1="+F1); var F2=new Array(); F2=F1.split(""); // CFW.oWin.fnAlert("F2="+F2[1]); var i=0; var j=0; var sum =0; for(i = 0 ; i<17; i++){ j = wi[i]*F2[i]; sum = sum + j; } // CFW.oWin.fnAlert("sum="+sum); sum=sum%11; // CFW.oWin.fnAlert("again.sum="+sum); F2[17]=ai[sum]; var F3=new String(); for(i=0;i<18;i++){ if(F2[i]=='X'){ F3=F3+"X"; break; } F3=F3+''+F2[i]; } if(iSfts == '1'){ CFW.oWin.fnAlert("身份证自动升位为"+F3); } return F3; }else{ return sSfhz15bit; } }, /** * 升15位身份证为18位(升位前不提示) * 主要是将传入的15位身份证,转换为18位身份证(其中年份固定为20世纪) * @param String sSfhz15bit (必需) 15位身份证 * @return String 18位身份证 *
    * 使用举例:
    *     var _sNewSfzh = CFW.oComm.fnTransactNa(_sSfzh);
    * 
*/ /* fnTransactNa : function (sSfhz15bit){ if(CFW.oValid.fnIsNull(sSfhz15bit)){ return ; } if(CFW.oComm.fnValidSfzh(sSfhz15bit) == false){ return ; } var getno=sSfhz15bit; if(getno.length==15){ var wi=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); // CFW.oWin.fnAlert("wi="+wi[1]); var ai=new Array(1,0,'X',9,8,7,6,5,4,3,2); // CFW.oWin.fnAlert("ai="+ai); var F1=getno.substr(0,6)+"19"+getno.substr(6,15); // CFW.oWin.fnAlert("F1="+F1); var F2=new Array(); F2=F1.split(""); // CFW.oWin.fnAlert("F2="+F2[1]); var i=0; var j=0; var sum =0; for(i = 0 ; i<17; i++){ j = wi[i]*F2[i]; sum = sum + j; } // CFW.oWin.fnAlert("sum="+sum); sum=sum%11; // CFW.oWin.fnAlert("again.sum="+sum); F2[17]=ai[sum]; var F3=new String(); for(i=0;i<18;i++){ if(F2[i]=='X'){ F3=F3+"X"; break; } eval("F3=F3+"+F2[i]); } //CFW.oWin.fnAlert("身份证自动升位为"+F3); return F3; }else{ return sSfhz15bit; } }, */ /** * 校验身份证号码是否符合规则 目前仅支持15位和18位的校验 * @param String sInput (必需) 身份证号码 * @param String sObjName (必需) 中文名 * @param String sInput (必需) 号码长度 * @return boolean true/false *
    * 使用举例:
    *     CFW.oComm._fnCheckID(sSfzh,inputPro,format);
    * 
*/ _fnCheckID : function (sInput,sObjName,iFormat){ var temp; var year,month,day; //0、校验位数是否为15或18位 if(sInput.length != iFormat){ CFW.oWin.fnAlert("目前不支持校验长度为"+iFormat+"的证件号码,目前仅支持15位或18位身份证号码。"); return false; } //1、校验位数是否一致 if(sInput.length != iFormat){ CFW.oWin.fnAlert(sObjName+"格式不对,应为“"+iFormat+"”位。"); return false; } //2、校验年份是否合法 if(iFormat==15){ temp=sInput.substring(6,8); year=parseInt(temp,10); if(year<00 || year>99){ CFW.oWin.fnAlert(sObjName+"年份应介于00与99之间,请重新输入!"); return false; } }else { // if(iFormat==18) temp=sInput.substring(6,10); year=parseInt(temp,10); if(year<1900 || year>2200){ CFW.oWin.fnAlert(sObjName+"年份应介于1900与2200之间,请重新输入!"); return false; } } //3、校验月份是否合法 if(iFormat==15){ temp=sInput.substring(8,10); }else{ //if(iFormat==18) temp=sInput.substring(10,12); } month=parseInt(temp,10); if(month<1 ||month>12){ CFW.oWin.fnAlert(sObjName+"月份必须介于1与12之间!"); return false; } //4、校验日期是否合法 if(iFormat==15){ temp=sInput.substring(10,12); }else{ //if(iFormat==18) temp=sInput.substring(12,14); } day=parseInt(temp,10); if((day==0)||(day>31)){ CFW.oWin.fnAlert(sObjName+"日必须介于0与31之间!"); return false; }else if(day>28 && day<31){ if(month==2){ if(day!=29){ CFW.oWin.fnAlert(sObjName+year+"年"+month+"月无"+day+"日。" + ""); return false; } else { if((year%4)!=0){ CFW.oWin.fnAlert(sObjName+year+"年"+month+"月无"+day+"日。"); return false; } else { if((year%100==0)&&(year%400!=0)){ CFW.oWin.fnAlert(sObjName+year+"年"+month+"月无"+day+"日。"); return false; } } } } }else if(day==31){ if((month==2)||(month==4)||(month==6)||(month==9)||(month==11)){ CFW.oWin.fnAlert(sObjName+month+"月无"+day+"日"); return false; } } return true; }, /** * 功能:构造一个form,发送HTTP请求。发送请求后,构造的form会被删除。 * * @param action 字符串,必填项,form的action属性。 * @param data 字符串,必填项,form的字段名值对。 * @param method 字符串,非必填项,form的method属性,默认值是POST。 * 为安全起见,尽可能使用post方法,而不是get方法 * @returns * * 例子 * var param = {"listWhereCls":" AAE100 ='1' and BAE001 like '4419%'", * "configId":"fw_authmngr_geneauth_list1", * "serviceId":"gltExcelService", * "method":"exportGlt" * }; * sendRequest(contextPath + '/downFile.do',param); */ fnSendRequest:function(action,data,method){ method = method || 'post'; var div = document.createElement("div"); var html = "
"; for(var key in data){ var value = data[key]; html += ""; } html += "
"; div.innerHTML=html; var form = div.getElementsByTagName("form")[0]; document.body.appendChild(form); form.submit(); document.body.removeChild(form); }, /** *
    * 动态异步加载单记录表,多记录表或者JSP到当前页面的目标DIV中
    * @param divId			字符串,必填项,目标DIV的id值
    * @param type			字符串,必填项,加载的类型,值为'gt','glt','jsp'其中之一。
    * @param idOrJsp		字符串,必填项,值为加载gt的id,glt的id,或者是jsp路径。
    * 						如果是jsp路径,为安全起见,路径后不能包含?a=xx&b=xx的字符串。参数请放在下面的data参数。
    * @param data			JSON对象,选填项,用作指定gt,glt,jsp的参数.
    * 						1. gt的参数仅支持defV
    * 						2. glt的参数支持whereCls,height,width,showContent,editable,expBtns,
    * 									hasPage,pageSize,hasTitle
    * 						   如果gt,glt的参数没有在上述列出,请联系框架组改进,或者使用jsp方式动态加载
    * 						   gt,glt方式仅仅用于动态产生简单的单记录表和多记录表,如果需要动态产生复杂的记录表,
    * 						   请编写jsp文件,用jsp方式动态载入
    * 						3. jsp的参数无限制,与一般请求JSP的参数一样。
    * 						   动态载入JSP,对JSP文件的要求如下: (其实与hnisi:tabPanel下的hnisi:tab的要求类似)
    * 							3.1 要动态载入的jsp文件,文件头部不能有这么一行
    * 						    <%@ include file="/jsp/framework/head.jsp"%>
    * 						    需要将这一行改成
    * 						    <%@ include file="/jsp/framework/taglib.jsp"%>
    * 						    从而避免重复导入js文件,
    * 						   	3.2 jsp文件里面不要包含,,标签,因为动态载入会载入JSP所有内容
    * 						    如果被动态载入的JSP文件包含了,,那么载入后的页面会包含多个
    * 							,,
    * 
    * 例子:
    * jsp页面:
    * 
    * 
    * 
*/ fnDynDiv:function(divId,type,idOrJsp,data,func,obj){ data = data || {}; type = type.toLowerCase(); var url = ""; var serverUrl = _getServerURL(); if('jsp' == type){ if(idOrJsp.indexOf('?') != -1){ CFW.oWin.fnAlert("出于安全考虑,不允许在URL上附带参数。请将参数写在函数的data入参。"); return false; } url = serverUrl + idOrJsp; }else if('gt' == type){ var gtId = idOrJsp; url = serverUrl + "/jsp/framework/gt.jsp"; data.id = gtId; }else if('glt' == type){ var gltId = idOrJsp; url = serverUrl + "/jsp/framework/glt.jsp"; data.id = gltId; } $("#"+divId).html("" + "  " + "loading..."); $("#"+divId).load(url,data,function(responseText,status,xhr){ if (status == "error") { $("#"+divId).html("动态加载失败: " + xhr.status + " " + xhr.statusText + "
" + responseText); }else{ if (func) { func.call(this,obj); } } }); function _getServerURL(){ var href = window.location.href; var count = 0; var i=0; var pos = -1; for(;i2){ i=12-i; } else if(i==2){ i="X"; } else if(i<2){ i=1-i; } if(inputstr.substr(17,1)==i) { return true; } else{ CFW.oWin.fnAlert("公民身份号码输入不合法!校验位错误"); return false; } }, /** * 通用报表打印函数 * @param sCfgId 报表配置ID,应用fw_report_conf 内的ID * @param form dom对象 * @param bNdp (true/false)是否显示直接调用默认的打印机打印的按钮 * @param bNsp (true/false)暂时没有用 * @param sTarget (true/false)指定报表显示方式 可以是 blank、_self、iframe.name * @param bNeedSaveAsExcel (true/false)是否需要显示导出EXCEL按钮 * @param bNeedPaginationAsXls (true/false)导出的EXCEL文件是否分页 * @param bNeedSaveAsWord (true/false)是否需要显示导出word按钮 * 主要的功能是根据配置ID,查询fw_report_conf表的REPORTPARM字段的值 * 即报表的全部入参。根据入参的名称查询form中相同名称的录入值,自动匹配 * 后传给报表作为查询数据的条件,最后生成报表的预览。 * 使用方法: *
    *  CFW.oComm.fnReportGenerate('bxgx_rydj_grjbzl_rpt',aform,false,true,'blank',true,false,true);
    *  具体的使用说明详见手册
    *  
*/ fnReportGenerate: function (sCfgId,form,bNdp,bNsp,sTarget,bNeedSaveAsExcel,bNeedPaginationAsXls,bNeedSaveAsWord){ var _bNeedSaveAsExcel = bNeedSaveAsExcel||false; var _bNeedPaginationAsXls = bNeedPaginationAsXls||false; var _bNeedSaveAsWord = bNeedSaveAsWord || false; if(sCfgId==''||sCfgId==null){ CFW.oWin.fnAlert("入参报表的配置ID不能为空!"); return; } //执行AJAX获取该ID对应的配置 new Service().appendQuery([{ configId:'FW_CONFIG.FW_REPORT_CONF_Q', parameters:{ID:sCfgId}, transform:'firstRow' }]).sentAjax(function(data){//处理成功的函数 _rpt_1(sCfgId,data,form,bNdp,bNsp,sTarget,_bNeedSaveAsExcel,_bNeedPaginationAsXls,_bNeedSaveAsWord); return true; },function(XMLHttpRequest, textStatus, errorThrown){//处理失败的函数 var tipMsg = XMLHttpRequest.responseText; CFW.oWin.fnAlert("错误信息:" + tipMsg); if(window['fwReportGentBack']){ //调用回调函数 fwReportGentBack(); } }); //内置函数 function _rpt_1(sCfgId,data,dataForm,bNdp,bNsp,sTarget,bNeedSaveAsExcel,bNeedPaginationAsXls,bNeedSaveAsWord){ var frms = document.getElementsByTagName("form"); var iLen = frms.length; var params = data[0]["REPORTPARM"]; var commService = data[0]["COMMSERVICE"]; var commProc = data[0]["COMMPROC"]; var arrParams; var tmp=""; var fw_id=""; var fwparams=""; var fwmap = {}; //找出已经存在相同的form删掉 for(var i=0;i"; var where = ''; //WHERE条件 try{ where =dataForm['FWWHERE'].value; }catch(e){} tmp+=" "; var btnBack ='YES'; //显示返回按钮 try{ btnBack =dataForm['FWBTNBACK'].value; }catch(e){} tmp+=" "; var btnClose ='YES'; //显示关闭按钮 try{ btnClose =dataForm['FWBTNCLOSE'].value; }catch(e){} tmp+=" "; arrParams = params.split("|"); iLen = arrParams.length; if(iLen==0){ CFW.oWin.fnAlert("报表入参不能为空!"); return false; } for(var i=0;i "; if(fwparams==''){ fwparams = n+'='+s; }else{ fwparams+='***'+n+'='+s; } fwmap[n] = s; } fwmap["FWPARAMS"] = fwparams; fwmap["REPORTID"] = sCfgId; fwmap["COMMPROC"] = commProc; fwmap["FWSFCXSC"] = sfc; fwmap["FWWHERE"] = where; if(commService==''||commService==null){ _rpt_2(sCfgId,fw_id,fwparams,tmp,bNdp,bNsp,sTarget,bNeedSaveAsExcel,bNeedPaginationAsXls,bNeedSaveAsWord); }else{ var arrP = commService.split("."); //执行AJAX获取该ID对应的配置 new Service({ serviceId:arrP[0],method:arrP[1], parameters:fwmap }).sentAjax(function(data){//处理成功的函数 var t = data[0]["PO_FHZ"]; if(t!=null){ if(t!='1'){ var msg = data[0]["PO_MSG"]; CFW.oWin.fnAlert("错误信息:" + msg); if(window['fwReportGentBack']){ //调用回调函数 fwReportGentBack(t); } return true; } } fw_id = data[0]["FW_ID"]; _rpt_2(sCfgId,fw_id,fwparams,tmp,bNdp,bNsp,sTarget,bNeedSaveAsExcel,bNeedPaginationAsXls,bNeedSaveAsWord); return true; },function(XMLHttpRequest, textStatus, errorThrown){//处理失败的函数 var tipMsg = XMLHttpRequest; CFW.oWin.fnAlert("错误信息:" + tipMsg); if(window['fwReportGentBack']){ //调用回调函数 fwReportGentBack(); } }); } }//function _rpt_1 function _rpt_2(sCfgId,fw_id,fwparams,tmp,bNdp,bNsp,tg,bNeedSaveAsExcel,bNeedPaginationAsXls,bNeedSaveAsWord){ //动态创建报表form var frag = document.createDocumentFragment(); var form = document.createElement("form"); form.name="fwrptForm"; form.action="${ctx}/report.do"; if(tg==''||tg==null){ tg = "blank"; } form.target=tg; var str =" "; str+=" "; str+=" "; str+=" "; str+=" "; str+=" "; str+=" "; str+=" "; str+=tmp; form.innerHTML=str; frag.appendChild(form); document.body.appendChild(frag); form.submit(); if(window['fwReportGentBack']){ //调用回调函数 fwReportGentBack(); } return true; }//function _rpt_2 },//function reportGenerate /** * 动态加载js脚本 * @param oOpt 参数,JSON数据,内容如下 * 1. url : 需要动态加载的js地址 * 2. beforeFunc :校验函数,只有当校验函数返回结果为true的时候,才动态加载js * 3. afterFunc : 回调函数,回调函数的参数是script DOM对象。 * @return *
    * 使用举例:
    * 例子:按顺序加载encrypt.js文件和encrypt2文件
	* CFW.oComm.fnLoadScript({
	*		url:curSerUrl + "/js/fw/encrypt.js",
	*		beforeFunc: function(){return null==document.getElementById("fwencrypt");},//返回true的时候才载入脚本
	*		afterFunc: function(script){
	*			if(null != script){
	*				script.id = "fwencrypt";
	*			}
	*			 CFW.oComm.fnLoadScript({
	*				url:curSerUrl + "/js/fw/encrypt2.js",
	*				beforeFunc: function(){return null==document.getElementById("fwencrypt2");},//返回true的时候才载入脚本
	*				afterFunc: function(script){
	*					if(null != script){
	*						script.id = "fwencrypt2";
	*					}
	*				}
	*			});
	*		}
	*	});
    * 
*/ fnLoadScript : function(oOpt){ var url = oOpt.url || ""; var afterFunc = oOpt.afterFunc || function(){}; var beforeFunc = oOpt.beforeFunc || function(){return true}; if('[object Function]' != Object.prototype.toString.call(beforeFunc)){ beforeFunc = function(){return true}; } if('[object Function]' != Object.prototype.toString.call(afterFunc)){ afterFunc = function(){}; } //校验不通过,直接调用回调函数 if(false == beforeFunc()){ afterFunc(); return; } //校验通过,则下载script,并且下载执行完毕后调用afterFunc,并且把script作为参数传递 var script = document.createElement('script'); script.src = url; script.type= 'text/javascript'; if(script.readyState){ script.onreadystatechange = function(){ if('complete' == this.readyState || 'loaded' == this.readyState){ this.onreadystatechange = null; afterFunc(script); } } }else{ script.onload = function(){ afterFunc(script); } } document.getElementsByTagName("head")[0].appendChild(script); }, fnDownAttach : function(zlid){ //把文件绝对路径+名字传给downloadform表单 var url = contextPath + '/downFile.do?serviceId=uploadAttachExportService&method=exportFile&ZLID='+encodeURI(zlid); window.location.href = url; }, fnDeleteAttach : function(zlid){ var params = {ZLID:zlid}; new Service({ serviceId:'uploadAttachService', method:'deleteAttach', parameters:params }).sentAjax(function(data){ CFW.oGlt.fnRefreshData('fw_comm_attachlist'); alert('操作成功!'); },function(msg){ alert(msg); }); }, /** * 调用上传下载组件 * @param ywbh 业务编号 * @param ywlb 业务类别 * @param uploadType 上传类型 * @param uploadService 上传处理方法 * @param uploadPath 上传路径 * @param maxfileSize 限制只能上传N个附件或者不限制附件个数,默认不限制。 * @returns {Boolean} *
			 * CFW.oComm.fnUploadAttach(ywbh,ywlb,uploadType,uploadService,uploadPath,maxfileSize)
			 * 
*/ fnUploadAttach : function(ywbh,ywlb,uploadType,uploadService,uploadPath,maxfileSize){ if(CFW.oValid.fnIsNull(ywbh)){ FWalert('业务编号为空,请核实!'); return; } var ywlsh=CFW.oValid.fnIsNull(ywlb)?ywbh:(ywlb+ywbh); if (CFW.oValid.fnIsNull(uploadType)) { CFW.oWin.fnAlert('请选择上传类别!!'); return; } var paramStr=''; if(!CFW.oValid.fnIsNull(uploadPath)){ paramStr+='&uploadType='+uploadType; } if(!CFW.oValid.fnIsNull(uploadPath)){ paramStr+='&uploadPath='+uploadPath; } if(!CFW.oValid.fnIsNull(uploadService)){ paramStr+='&uploadService='+uploadService; } if(!CFW.oValid.fnIsNull(maxfileSize)){ paramStr+='&fileSize='+maxfileSize; } var url=contextPath + "/framework/web/uploadattach.do?ywlsh="+ywlsh+paramStr; window.open(url, "newwindow", "height=300, width=800, toolbar =no, menubar=no, scrollbars=yes, resizable=no, location=no, status=no"); }, /** * 单击回车键就调用TAB键 * @param event * @returns {Boolean} *
	 * CFW.oComm._fnEnterToTab(event)
	 * 
*/ _fnEnterToTab : function(event){ //8 backspace 9 tab 46 delete if(event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46){ return true; } if (event.keyCode == 13) { event.keyCode = 9; return true; } if(event.ctrlKey||event.shiftKey){return true;} return false; } };