| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090 |
- /**
- * @author herong
- * 公共类
- */
- var CFWComm = _FW.fCreateClass();
- /**
- * 公共类API
- */
- CFWComm.prototype = {
-
- /**
- * 初始化
- * */
- fInitialize : function(options) {
-
- },
- /**
- * 类似oracle数据库的nvl函数
- * 主要是判断传入对象是空值的话,就替换成传入的默认值
- * @param sInputs 被判断对象
- * @param sDefaultValue 默认值
- * @return 如果sInputs为空,则返回sDefaultValue,若不为空,返回sInputs
- * <pre>
- * 使用举例:
- * var _aResult = CFW.oComm.fnNvl("null",1);//为空时,设置默认值为1
- * </pre>
- */
- 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相加后的值
- * <pre>
- * 使用举例:
- * var _aResult = CFW.oComm.fnAdd(_iAge,60);//如计算年龄加上60年的值
- * </pre>
- */
- 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 减后值
- * <pre>
- * 使用举例:
- * var _aResult = CFW.oComm.fnSub(_iAge,60);//如计算年龄减去60年的值
- * </pre>
- */
- 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 乘后值
- * <pre>
- * 使用举例:
- * var _aResult = CFW.oComm.fnMult(_iJfjs,12);//如计算缴费基数乘以12个月的结果
- * </pre>
- */
- 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 除后值
- * <pre>
- * 使用举例:
- * var _aResult = CFW.oComm.fnDiv(_iJfje,12);//如计算缴费金额除以12个月的结果
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * var _sBirthday = CFW.oComm.fnGetBirthday(_sSfzh);
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * var _bValid = CFW.oComm.fnValidSfzh(_sSfzh);
- * </pre>
- */
- 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位校验
- * <pre>
- * 使用举例:
- * var _sNewSfzh = CFW.oComm.fnTransformSfzhNa(_sSfzh);
- * </pre>
- */
- 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位身份证
- * <pre>
- * 使用举例:
- * var _sNewSfzh = CFW.oComm.fnTransact(_sSfzh);
- * </pre>
- */
- 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位身份证
- * <pre>
- * 使用举例:
- * var _sNewSfzh = CFW.oComm.fnTransactNa(_sSfzh);
- * </pre>
- */
- /*
- 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
- * <pre>
- * 使用举例:
- * CFW.oComm._fnCheckID(sSfzh,inputPro,format);
- * </pre>
- */
- _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 = "<form method=\""+method+"\" action=\""+action+"\">";
- for(var key in data){
- var value = data[key];
- html += "<input type=\"hidden\" name=\""+key+"\" value=\""+value+"\"/>";
- }
- html += "</form>";
- div.innerHTML=html;
- var form = div.getElementsByTagName("form")[0];
- document.body.appendChild(form);
- form.submit();
- document.body.removeChild(form);
- },
- /**
- * <pre>
- * 动态异步加载单记录表,多记录表或者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文件里面不要包含<html/>,<head/>,<body/>标签,因为动态载入会载入JSP所有内容
- * 如果被动态载入的JSP文件包含了<html/>,<head/>,<body/>那么载入后的页面会包含多个
- * <html/>,<head/>,<body/>
- *
- * 例子:
- * jsp页面:
- *
- * <!--动态内容将被加载到这个DIV中-->
- * <div id="dynDiv>
- * </div>
- *
- * js代码
- * //1. 动态加载ID=fw_operauth_oper_operator_q的单记录表
- * CFW.oComm.fnDynDiv('dynDiv','gt','fw_operauth_oper_operator_q'"});
- * CFW.oComm.fnDynDiv('dynDiv','gt','fw_operauth_oper_operator_q',{defV:"#{'OPERTYPE':'2','LOGINID':'test_jc1'}"});
- * //2.动态加载多记录表
- * CFW.oComm.fnDynDiv('dynDiv','glt','fw_operauth_oper_operator_list',{whereCls:"1=1"});
- * CFW.oComm.fnDynDiv('dynDiv','glt','fw_authmngr_role',{whereCls:"1=2",showContent:"false"});
- * 动态加载多记录表支持参数
- * //3.动态加载jsp页面
- * CFW.oComm.fnDynDiv('dynDiv','jsp','/jsp/sysmngr/web/operauth/oper/operator_right.jsp',{OPERTYPE:'2',BAE001:'441901'});
- * </pre>
- */
- 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("<span><img style=\"vertical-align:bottom;\" src=\"" + contextPath + "/js/v2/ui/fwwindow/images/panel_loading.gif\"/></span>" +
- "<span> </span>" +
- "<span>loading...</span>");
- $("#"+divId).load(url,data,function(responseText,status,xhr){
- if (status == "error") {
- $("#"+divId).html("<span style='color:red;'>动态加载失败: " + xhr.status + " " + xhr.statusText + "</span><br>" + 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(;i<href.length;i++){
- var c = href.charAt(i);
- if('/' == c){
- count++ ;
- }
- if(4 == count){
- pos = i;
- break;
- }
- }
- return href.substring(0,pos);
- }
- },
- /**
- * 功能:判断公民身份号码是否合法
- * @param inputstr 字符串
- * @returns true/false
- * 例子
- * _checkCheckStr(inputstr)
- */
- _checkCheckStr:function(inputstr){
- var i=(inputstr.substr(0,1)*7+inputstr.substr(1,1)*9+inputstr.substr(2,1)*10+inputstr.substr(3,1)*5+inputstr.substr(4,1)*8+inputstr.substr(5,1)*4+inputstr.substr(6,1)*2+inputstr.substr(7,1)*1+inputstr.substr(8,1)*6+inputstr.substr(9,1)*3+inputstr.substr(10,1)*7+inputstr.substr(11,1)*9+inputstr.substr(12,1)*10+inputstr.substr(13,1)*5+inputstr.substr(14,1)*8+inputstr.substr(15,1)*4+inputstr.substr(16,1)*2 )% 11 ;
- if(i>2){
- 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中相同名称的录入值,自动匹配
- * 后传给报表作为查询数据的条件,最后生成报表的预览。
- * 使用方法:
- * <pre>
- * CFW.oComm.fnReportGenerate('bxgx_rydj_grjbzl_rpt',aform,false,true,'blank',true,false,true);
- * 具体的使用说明详见手册
- * </pre>
- */
- 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<iLen;i++){
- if(frms[i].name=='fwrptForm'){
- document.body.removeChild(frms[i]);
- break;
- }
- }
-
- var sfc = '1'; //是否重新生成报表数据,默认1为重新生成
- try{
- sfc =dataForm['FWSFCXSC'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWSFCXSC\" value="+sfc+">";
-
- var where = ''; //WHERE条件
- try{
- where =dataForm['FWWHERE'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWWHERE\" value="+where+">";
-
- var btnBack ='YES'; //显示返回按钮
- try{
- btnBack =dataForm['FWBTNBACK'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWBTNBACK\" value="+btnBack+">";
-
-
- var btnClose ='YES'; //显示关闭按钮
- try{
- btnClose =dataForm['FWBTNCLOSE'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWBTNCLOSE\" value="+btnClose+">";
-
-
- arrParams = params.split("|");
- iLen = arrParams.length;
-
- if(iLen==0){
- CFW.oWin.fnAlert("报表入参不能为空!");
- return false;
- }
-
- for(var i=0;i<iLen;i++){
- var n = arrParams[i];
- var s = '';
-
- if(typeof dataForm[n]=='object'){
- s = dataForm[n].value;
- }
- tmp+=" <input type=\"hidden\" name=\""+n+"\" value="+s+"> ";
-
- 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 =" <input type=\"hidden\" name=\"configId\" value=\""+sCfgId+"\"> ";
- str+=" <input type=\"hidden\" name=\"needDirectPrint\" value=\""+bNdp+"\"> ";
- str+=" <input type=\"hidden\" name=\"needSelectPrinter\" value=\""+bNsp+"\"> ";
- str+=" <input type=\"hidden\" name=\"ID\" value=\""+fw_id+"\"> ";
- str+=" <input type=\"hidden\" name=\"FWPARAMS\" value=\""+fwparams+"\"> ";
- str+=" <input type=\"hidden\" name=\"needSaveAsExcel\" value=\""+bNeedSaveAsExcel+"\"> ";
- str+=" <input type=\"hidden\" name=\"excelPageStyle\" value=\""+bNeedPaginationAsXls+"\"> ";
- str+=" <input type=\"hidden\" name=\"needSaveAsWord\" value=\""+bNeedSaveAsWord+"\"> ";
- 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
- * <pre>
- * 使用举例:
- * 例子:按顺序加载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";
- * }
- * }
- * });
- * }
- * });
- * </pre>
- */
- 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}
- * <pre>
- * CFW.oComm.fnUploadAttach(ywbh,ywlb,uploadType,uploadService,uploadPath,maxfileSize)
- * </pre>
- */
- 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}
- * <pre>
- * CFW.oComm._fnEnterToTab(event)
- * </pre>
- */
- _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;
- }
- };
|