/**此函数用于把输入的日期变成输入月的最后一天的日期。 * 用于DataWindow内,例如:用户输入"2002-03-03",界面显示为"2002-03-31"; * @param oDataWindow 数据窗口 * @param obj 格式化日期的输入框 */ function formatMonthLastD(oDataWindow, obj) { var iRowNum = oDataWindow.getObjPoint(obj)[0]; var iColNum = oDataWindow.getObjPoint(obj)[1] var tempDate = oDataWindow.getCellValue(iRowNum, iColNum); oDataWindow.setCellValue(iRowNum, iColNum, formatMonthLast(tempDate)); } /**此函数用于把输入的日期变成输入月的最后一天的日期。 * 例如:用户输入"2002-03-03",界面显示为"2002-03-31"; * @param strDate 要格式化日期值,字符型 * @return 格式化后的月末值 */ function formatMonthLast(strDate) { var tempDate = strDate; var index1 = tempDate.lastIndexOf("."); var index2 = tempDate.lastIndexOf("-"); var index11 = tempDate.indexOf("."); var index22 = tempDate.indexOf("-"); //形式如2002-2-2,2002.2.3的解析 if ((index1 != -1) || (index2 != -1)) { var index3 = index1; if (index2 > index1) { index3 = index2; } index33 = index11; if ((index22 < index11 && index22 != -1) || (index11 == -1 && index22 != -1)) { index33 = index22; } var dTempDate = new Date(); dTempDate.setDate(1); dTempDate.setYear(parseInt(tempDate.substring(0, index33), 10)); var iMonth=parseInt(tempDate.substring(index33 + 1, index3), 10); dTempDate.setMonth(iMonth); //设置当月的最后一天 dTempDate.setDate(0); if (iMonth==1 || iMonth==3 || iMonth==5 || iMonth==7 || iMonth==8 || iMonth==10 || iMonth==12 ) //月份1有问题,直接拼串 { return tempDate.substring(0, index3 + 1) + "31"; } return tempDate.substring(0, index3 + 1) + dTempDate.getDate(); //形式如20020202的解析 } else if ((index1 == -1) && (index2 == -1) && tempDate.length == 8) { var dTempDate = new Date(); dTempDate.setDate(1); dTempDate.setYear(parseInt(tempDate.substring(0, 4), 10)); var iMonth=parseInt(tempDate.substring(4, 6), 10); dTempDate.setMonth(iMonth); //设置当月的最后一天 dTempDate.setDate(0); if (iMonth==1 || iMonth==3 || iMonth==5 || iMonth==7 || iMonth==8 || iMonth==10 || iMonth==12) { return tempDate.substring(0, tempDate.length - 2) + "31"; } return tempDate.substring(0, tempDate.length - 2) + dTempDate.getDate(); } } /** 在xml里按关键字查找一个节点的值。 * @param parentNode 要查找节点的上级节点 * @param keyNodeName 关键字节点的名称 * @param keyNodeValue 关键字节点的值 * @param resultNodeName 返回节点的名称 * @return resultNodeValue 返回节点的值 */ function findNodeValue(parentNode, keyNodeName, keyNodeValue, resultNodeName) { var resultNodeValue = ""; for (var i = 0; i < parentNode.length; i++) { var snv = parentNode(i).getElementsByTagName(keyNodeName).item(0).text; if (snv == keyNodeValue) { resultNodeValue = parentNode(i).getElementsByTagName(resultNodeName).item(0).text; break; } } return resultNodeValue; } /** 在xml里按关键字查找一条节点记录。 * @param parentNode 要查找节点的上级节点 * @param keyNodeName 关键字节点的名称 * @param keyNodeValue 关键字节点的值 * @return resultNode 返回符合条件的节点(与keyNode同级)记录,包括多个字段。 */ function findNode(parentNode, keyNodeName, keyNodeValue) { var resultNode = null; for (var i = 0; i < parentNode.length; i++) { var snv = parentNode(i).getElementsByTagName(keyNodeName).item(0).text; if (snv == keyNodeValue) { resultNode = parentNode(i); break; } } return resultNode; } /**用于把一个日期string 转换成一个 Date 类型的值 * @param strDate 要转换的字符串 ‘20020303’ 或 ‘2002-3-3’ 或 ‘2002.3.3’ * @return 日期类型值 */ function strToDate(strDate) { var tempDate = strDate; var index1 = tempDate.lastIndexOf("."); var index2 = tempDate.lastIndexOf("-"); var index11 = tempDate.indexOf("."); var index22 = tempDate.indexOf("-"); //形式如2002-2-2,2002.2.3的解析 if ((index1 != -1) || (index2 != -1)) { var index3 = index1; if (index2 > index1) { index3 = index2; } index33 = index11; if ((index22 < index11 && index22 != -1) || (index11 == -1 && index22 != -1)) { index33 = index22; } var year = parseInt(tempDate.substring(0, index33), 10); var month = parseInt(tempDate.substring(index33 + 1, index3), 10)-1; var date = parseInt(tempDate.substring(index3 + 1, tempDate.length), 10); var dTempDate = new Date(year,month,date); return dTempDate; //形式如20020202的解析 } else if ((index1 == -1) && (index2 == -1) && tempDate.length == 8) { var year = parseInt(tempDate.substring(0, 4), 10); var month = parseInt(tempDate.substring(4, 6), 10) - 1; var date = parseInt(tempDate.substring(6, 8), 10); var dTempDate = new Date(year,month,date); return dTempDate; } } /** 把一个日期类型的值转换成,按一定格式格式化的字符串。(目前只做‘yyyy-mm-dd’) * @param dDate 要格式化的日期值,为Date类型 * @return 格式化后的日期字符串 * @history: * Modify by gaozg 2006-05-23 * 修改对天数不能格式化为两位的错误 * modified by 高占国 2006-07-06 * 该方法存在问题传入参数如果日期在2000年之前如(1999-02-01),则返回的串为99-02-01 * 修改getYear()方法为getFullYear */ function formatDate(dDate) { var iMonth = (dDate.getMonth() + 1); var sMonth = iMonth.toString(); if (sMonth.length == 1) { sMonth = "0" + sMonth; } var iDay=dDate.getDate(); var sDay=iDay.toString(); if (sDay.length == 1) { sDay = "0" + sDay; } return dDate.getFullYear() + "-" + sMonth + "-" + sDay; } /** 用于格式化xml文件的节点值 * 只针对<>33,333,333.00<>数值节点,转换为<>33333333.00<> * <>200.200,000%<> 转换为<>2.00200000<> * @param xmlId 页面数据岛的ID * @param nodeName 要格式化节点的上级节点 * @return 格式化后的xml数据 */ function formatXML(xmlId, nodeName) { formatNode(xmlId.getElementsByTagName(nodeName)); return xmlId.xml; } /** 只针对<>33,333,333.00<>数值节点,转换为<>33333333.00<> * <>200.200,000%<> 转换为<>2.00200000<> * 不能用在<>sss,ssss,ss<>的节点。 * @param obj 要格式化的xml节点的上级节点。 * */ function formatNode(obj) { for (var j = 0; j < obj.length; j++) { for (var i = 0; i < obj(j).childNodes.length; i++) { var sValue = obj(j).childNodes(i).text; if (sValue.indexOf(",") == -1 && sValue.indexOf("%") == -1) { continue; } var sResult = ""; if (sValue.indexOf(",") != -1) { var aValue = sValue.split(","); for (var j1 = 0; j1 < aValue.length; j1++) { sResult = sResult + aValue[j1]; } } if (sResult == "") { sResult = sValue; } if (sValue.indexOf("%") != -1) { var sResult1 = parseFloat(sResult, 10) / 100; sResult = sResult1.toString(); } obj(j).childNodes(i).text = sResult; } } } /** 格式化一个节点的值 * @param obj 要格式化的节点 */ function formatNodeValue(obj) { var sValue = obj(0).text; obj(0).text = formatValue(sValue); } /** 格式化一个33,333,333.00或200.200,000%的值 * 为33333333.00,2。00200000 * @param srcStr 要格式化的字符串 * @return 格式化后的值 */ function formatValue(srcStr) { var sValue = srcStr; if (sValue.indexOf(",") == -1 && sValue.indexOf("%") == -1) { return sValue; } var sResult = ""; if (sValue.indexOf(",") != -1) { var aValue = sValue.split(","); for (var j = 0; j < aValue.length; j++) { sResult = sResult + aValue[j]; } } if (sResult == "") { sResult = sValue; } if (sValue.indexOf("%") != -1) { var sResult1 = parseFloat(sResult, 10) / 100; sResult = sResult1.toString(); } return sResult; } /** 把一个浮点数,以小数点后几位四舍五入 * @param srcValue 要舍位的值 * @param iCount 要舍位到小数点后几位 * return 四舍五入后的数 */ function round(srcValuef, iCount) { var srcValue=srcValuef; var zs=true; //判断是否是负数 if (srcValue<0) { srcValue=Math.abs(srcValue); zs=false; } var iB = Math.pow(10, iCount); //有时乘100结果也不精确 var value1=srcValue * iB; var anumber=new Array(); var anumber1=new Array(); var fvalue=value1; var value2=value1.toString(); var idot=value2.indexOf("."); //如果是小数 if (idot!=-1) { anumber=srcValue.toString().split("."); //如果是科学计数法结果 if (anumber[1].indexOf("e")!=-1) { return Math.round(value1)/iB; } anumber1=value2.split("."); if (anumber[1].length<=iCount) { return parseFloat(srcValuef,10); } var fvalue3=parseInt(anumber[1].substring(iCount,iCount+1),10); if (fvalue3>=5) { fvalue=parseInt(anumber1[0],10)+1; } else { //对于传入的形如111.834999999998 的处理(传入的计算结果就是错误的,应为111.835) if (fvalue3==4 && anumber[1].length>10 && parseInt(anumber[1].substring(iCount+1,iCount+2),10)==9 ) { fvalue=parseInt(anumber1[0],10)+1; } else { fvalue=parseInt(anumber1[0],10); } } } //如果是负数就用0减四舍五入的绝对值 if (zs) { return fvalue/iB; } else { return 0-fvalue/iB; } } /** 把数值转换为大写金额 * @param num 数值,为数值或字符型 * @return 大写金额字符 */ function convertCN(num) { var arr1 = new Array("仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "圆", "点", "角", "分"); var arr3 = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); num = num.toString(); //判断是否为负 var bfs=false; if (num.indexOf("-")!=-1) { num=num.substring(1,num.length); bfs=true; } var point = num.indexOf("."); if (point < 0) point = num.length; var len = arr1.length - point - 3; var strRet = "", lastChar = ""; for (i = 0; i < num.length; i++) { if (i != point) { val = arr1[i + len]; if (num.charAt(i) != "0" || (i==point-1 && point==1) ) strRet += arr3[num.charAt(i)] + val; else { lastChar = strRet.substr(strRet.length - 1); if (val == "亿" || val == "万" || val == "圆" || val == "分") { if (lastChar == "零") strRet = strRet.substr(0, strRet.length - 1); lastChar = strRet.substr(strRet.length - 1); if (!((val == "万" && lastChar == "亿") || (val == "分" && lastChar == "角") || (val == "角" && lastChar == "圆"))) strRet += val; } else { if (lastChar != "零") strRet += "零"; } } } } //去分 var ifen = strRet.indexOf("分"); if (ifen >= 0) { var sffen = strRet.substring(ifen - 1, ifen); if (sffen == "圆") { strRet = strRet.substring(0, ifen); } } //加整 var sfyuan = strRet.substring(strRet.length - 1, strRet.length); if (sfyuan == "圆" || sfyuan == "角") { strRet = strRet + "整"; } //加负 if (bfs) { strRet="(负数)"+strRet; } return strRet; } /** 使页面的层<DIV>显示/隐藏<br> * 要求页面的层<DIV>用如下方法引用:style="display:none"或style="display:"<br> * 调用方法:showHideLayers("Layer1","show","Layer2","hide"),即:方法成对出现,参数1为层ID,参数2为是否隐藏 */ function showHideLayers() { var args = showHideLayers.arguments; for (var i = 0; i < args.length - 1; i += 2) { var isShow = (args[i + 1] == "show") ? "''" : "'none'"; var script = args[i] + ".style.display=" + isShow; eval(script); } } /** 显示/隐藏某一区域(层) * @param oLayer 区域(层)名,为对象,并非字符串 * @param oImg 图片区域对象名<img id="img_switch" src="img_open"> * @param sImg1 区域显示时的图片 * @param sImg2 区域隐藏时的图片 */ function switchLayer(oLayer, oImg, sImg1, sImg2) { var flag = oLayer.style.display; if (flag == "none") { oLayer.style.display = "block"; oImg.src = sImg1; } else { oLayer.style.display = "none"; oImg.src = sImg2; } } /** 按xml中的某一节点进行对xml排序 类似这种结构(ROOT/ITEM/NODENAME...) * @param dsoName 数据岛名称 * @param colNodeName 列对应数据结点名称 * @param orderType ture/false 升序/降序 */ function xmlOrderBy(dsoName, colNodeName, orderType) { var root = dsoName.documentElement.cloneNode(true); var rootTemp = dsoName.createNode("element", root.nodeName, ""); var ilen = root.childNodes.length; //排序 for (var i = 0; i < ilen; i++) { var node1 = root.childNodes(0); var value1 = root.childNodes(0).getElementsByTagName(colNodeName)(0).text; var ilen1 = root.childNodes.length; for (var j = 0; j < ilen1; j++) { if (orderType) { //升序 if (root.childNodes(j).getElementsByTagName(colNodeName)(0).text < value1) { node1 = root.childNodes(j); } } else { //降序 if (root.childNodes(j).getElementsByTagName(colNodeName)(0).text > value1) { node1 = root.childNodes(j); } } } rootTemp.appendChild(node1); } //替换成排序后的xml dsoName.removeChild(dsoName.documentElement); dsoName.appendChild(rootTemp); } /** 删除数据窗口中关键数据为空的行 * @param dwid 数据窗口 */ function deleteNullRow(dwid) { var iRowNum = dwid.getRowCount(); var iColNum = dwid.getColCount(); for (var i = iRowNum - 1; i >= 0; i--) { for (var j = 0; j < iColNum; j++) { if (dwid.col(j).fill == true && dwid.row(i).cell(j).value.toString() == "") { dwid.deleteRow(i); break; } } } } /** 检查日期时间的合法性 必须格式为“2003-09-09 或 2003-9-09 ”才返回ture,否则返回false * @param str 要检查的日期字符串。 * @return true/false */ function checkDate(str){ var reg = /^(\d+)-(\d{1,2})-(\d{1,2})$/; var r = str.match(reg); if(r==null)return false; r[2]=r[2]-1; var d= new Date(r[1], r[2],r[3]); if(d.getFullYear()!=r[1])return false; if(d.getMonth()!=r[2])return false; if(d.getDate()!=r[3])return false; return true; } /** 检查日期时间的合法性 必须格式为“2003-09-09 08:08:08”才返回ture,否则返回false * @param str 要检查的日期时间字符串。 * @return true/false */ function checkDateTime(str){ var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if(r==null)return false; r[2]=r[2]-1; var d= new Date(r[1], r[2],r[3], r[4],r[5], r[6]); if(d.getFullYear()!=r[1])return false; if(d.getMonth()!=r[2])return false; if(d.getDate()!=r[3])return false; if(d.getHours()!=r[4])return false; if(d.getMinutes()!=r[5])return false; if(d.getSeconds()!=r[6])return false; return true; } ////////////////内部协查管理////////////////// /////////////////////////////////////////////// /**通过本页面的nbxc_check(NSRSBH,YWHJ_DM,MKMC,HDNR)方法调用弹出窗口。 * @param NSRSBH 个人识别号 * @param YWHJ_DM 业务环节代码 * @param MKMC 模块名称 * @param HDNR 内容 * @param serviceName 服务名,如:"common.CtaisMasterBndService.commonNsrEntered" * @param GZBZ 更正标志 //cheys 2004/02/17 added * @return true/false 成功/失败 */ function defaultNsrEntry(NSRSBH,YWHJ_DM,MKMC,HDNR,serviceName,GZBZ) { var service = new Service(serviceName); // var sArgu=service.doService("NSRSBH",NSRSBH,"HDNR",HDNR,"MKMC",MKMC,"YWHJ",YWHJ_DM); if (GZBZ != null) { var sArgu=service.doService("NSRSBH",NSRSBH,"HDNR",HDNR,"MKMC",MKMC,"YWHJ",YWHJ_DM,"GZBZ",GZBZ); } else{ var sArgu=service.doService("NSRSBH",NSRSBH,"HDNR",HDNR,"MKMC",MKMC,"YWHJ",YWHJ_DM); } var rtnCode=service.getRtnCode(); if (rtnCode=="0") { var oDoc=loadXml(sArgu);//解析xml var tbtjts = oDoc.selectSingleNode("//TBTJTS").text; if(tbtjts != "null"){ showMessage(tbtjts); } var isXcExisted = oDoc.selectSingleNode("//DO_XC").text; var oNode = oDoc.selectSingleNode("//NBXCXX"); if(isXcExisted=="Y"){ return nbxc_check(NSRSBH,YWHJ_DM,MKMC,HDNR,oNode); } }else{ showMessage(service.getMessage()); return false; } } /**通过本页面的nbxc_check(NSRSBH,YWHJ_DM,MKMC,HDNR)方法调用弹出窗口。 * @param NSRSBH 个人识别号 * @param YWHJ_DM 业务环节代码 * @param MKMC 模块名称 * @param HDNR 内容 * @param oDoc XML内容 * @return true/false 成功/失败 */ function nbxc_check(NSRSBH,YWHJ_DM,MKMC,HDNR,oDoc) { var sid = createWorkId(); var service = new Service("jcfz.nx.nx_check.NxCheckBndService.init",sid); var sArgu=service.doService("NSRSBH",NSRSBH,"YWHJ_DM",YWHJ_DM,"MKMC",MKMC,"HDNR",HDNR,"NBXC","N"); var rtnCode=service.getRtnCode(); if (rtnCode=="1") { showMessage("检查该个人内部监控失败!"); return false; } var count=oDoc.childNodes.length; if (count!=0) { for (var i=0;i<count ;i++ ) { var NBXCXH=oDoc.getElementsByTagName("NBXCXH")(i).text; var scontinue=oDoc.getElementsByTagName("CONTINUE")(i).text; var write_jkrz=oDoc.getElementsByTagName("WRITEJKRZ")(i).text; var paraArray = new Array(); paraArray[0]=NBXCXH; paraArray[1]=scontinue; //var serviceId = getWorkId(); paraArray[2]=sid; paraArray[3]=write_jkrz; var isContinue=showModalDialog(URL_NBXC,paraArray,'dialogWidth=600px;dialogheight=300px;status:no;help:no'); //如果点"关闭"按钮,那么视同终止操作 if(isContinue=="STOP"){ return false; } if (isContinue==null) { if (write_jkrz=="FALSE") { return false; } var service = new Service("jcfz.nx.nx_check.NxCheckBndService.saveJkrz",sid); var sArgu=service.doService("NBXCXH",NBXCXH,"CZFS","STOP"); var rtnCode=service.getRtnCode(); if (rtnCode=="0") { showMessage(service.getMessage()); return false; }else{ showMessage(service.getMessage()); return false; } } } } return true; } /**不走界面服务流程,直接通过本页面的nbxc_check(NSRSBH,YWHJ_DM,MKMC,HDNR)方法调用弹出窗口。 * @param NSRSBH 个人识别号 * @param YWHJ_DM 业务环节代码 * @param MKMC 模块名称 * @param HDNR 内容 * @return true/false 成功/失败 */ function interface_nbxc_check(NSRSBH,YWHJ_DM,MKMC,HDNR) { if(interface_nbxc_check.arguments.length!=4){ showMessage("调用方法参数个数不等于4!") return false; } if (NSRSBH=="") { showMessage("个人识别号不能为空!"); return false; } if (YWHJ_DM=="") { showMessage("业务环节代码不能为空!"); return false; } if (MKMC=="") { showMessage("模块名称不能为空!"); return false; } var service = new Service("jcfz.nx.nx_check.NxCheckBndService.init"); var sArgu=service.doService("NSRSBH",NSRSBH,"YWHJ_DM",YWHJ_DM,"MKMC",MKMC,"HDNR",HDNR,"NBXC","Y"); var rtnCode=service.getRtnCode(); if (rtnCode=="0") { var oDoc=loadXml(sArgu);//解析xml var count=oDoc.documentElement.childNodes.length; if (count!=0) { for (var i=0;i<count ;i++ ) { var NBXCXH=oDoc.getElementsByTagName("NBXCXH")(i).text; var scontinue=oDoc.getElementsByTagName("CONTINUE")(i).text; var write_jkrz=oDoc.getElementsByTagName("WRITEJKRZ")(i).text; var paraArray = new Array(); paraArray[0]=NBXCXH; paraArray[1]=scontinue; var serviceId = getWorkId(); paraArray[2]=serviceId; paraArray[3]=write_jkrz; var isContinue=showModalDialog(URL_NBXC,paraArray,'dialogWidth=600px;dialogheight=300px;status:no;help:no'); //如果点"关闭"按钮,那么视同终止操作 if(isContinue=="STOP"){ return false; } if (isContinue==null) { if (write_jkrz=="FALSE") { return false; } var service = new Service("jcfz.nx.nx_check.NxCheckBndService.saveJkrz"); var sArgu=service.doService("NBXCXH",NBXCXH,"CZFS","STOP"); var rtnCode=service.getRtnCode(); if (rtnCode=="0") { showMessage(service.getMessage()); return false; }else{ showMessage(service.getMessage()); return false; } } } } return true; }else if (rtnCode=="1") { showMessage("检查该个人内部监控失败!"); return false; } } /////////////内部协查管理//////////////// /** *自动更正输入错误 *此函数用于 会计期间或页码输入框 的 onchange事件或onblur 事件中,当用户输入错误的值后,自动更正错误 *@param obj 输入框 *@param minValue 最小值 *@param maxValue 最大值 */ function gzInput(obj,minValue,maxValue){ var sValue = parseInt(obj.getValue(),10); if (sValue > maxValue ) { obj.setValue(maxValue); } if (sValue < minValue) { obj.setValue(minValue); } } /** *检查控件的输入值是否在指定的期间内,用于提交请求之前的合法性检查 *@param obj 输入框 *@param minValue 最小值 *@param maxValue 最大值 *@return true|false 正确|错误 */ function checkInput(obj,minValue,maxValue){ var sValue = parseInt(obj.getValue(),10); if (sValue > maxValue || sValue <minValue) { if (!obj.disabled)// 如果没有被disable,则移焦点过来。 { obj.select(); obj.focus(); } return false; } return true; } /** 调入Web页打印预览页面 * @param pagesize 纸张:目前为:A2,A3,A4,A5,如果纸张超过A2横向将不予调整,如果为null则自动调整 * @param pageori 打印方向:0/1,纵/横,如果为null则自动调整 * @param header 页眉(参考IE的打印设置):&b&b&d * @param footer 页脚(参考IE的打印设置):&b&p/&P&b * @param margin 页边距(毫米,参考IE的打印设置):用“|”线分开的4个值,分别代表上右下左四个边距(与CSS的margin等属性规则相同)。 * 如果只有2个值,则上下边取第一个值;左右边取第二个值 * @param fontsize 字号(pt),如果不需要该参数,可将其设为null或者干脆不写该参数 * @param caller 将回调的函数,默认为interface_getHTML(),因为同一页面内可能需要不同的打印接口函数,所以需要能够指定 * @return window对象 */ function toPrinter(pagesize,pageori,header,footer,margin,fontsize,caller){ var argus = caller == null? "?" : "?caller="+caller+"&"; argus += "pagesize="+pagesize+"&pageori="+pageori +"&pageheader="+header+"&pagefooter="+footer+"&pagemargin="+margin; if (fontsize != null && fontsize != "") { argus += "&fontsize="+fontsize; } var wh = "width="+(screen.width-11)+",height="+(screen.height-55); var param = "toolbar=no,location=no,status=yes,resizable=no,scrollbars=yes,top=0,left=0,"+wh; return window.open(URL_TO_PRINT+argus,"_blank",param); } /** 调入Web页Excel输出 * @return window对象 */ function toExcel(){ var wh = "width="+(screen.width-11)+",height="+(screen.height-55); var param = "toolbar=no,location=no,status=yes,resizable=no,scrollbars=yes,top=0,left=0,"+wh; return window.open(URL_TO_EXCEL,"_blank",param); } /** 校验并格式化日期 (用户录入 2003-8-1 ,先进行日期校验 checkData() ,再进行格式化 formatData() 2003-08-01 ) * @param obj 需要校验的日期对象。 */ function check_format_date(obj) { vdate=obj.value; if (!obj.checkData()) { if (obj.value.length==10) { showMessage("录入日期 '"+vdate+"' 非法,请重新录入。"); obj.value=""; return false; } obj.value=obj.formatData(obj.value); } if (!obj.checkData())// { showMessage("录入日期 '"+vdate+"' 非法,请重新录入。"); obj.value=""; return false; } return true; } //-------------------------------------------------------------------------------------- /** 设置审批意见的值(2003-9-4)//返回带同意和不同意的字符串 *@param obj 审批意见的值 (str) *@param flag 点击同意或不同意按钮 (同意:Y 、不同意:N) */ function setSpyjValue(obj,flag) { if (flag=="Y"){ if (obj=="")//如果为空则直接填写“ 同意” { obj="同意"; }else{ if (obj.indexOf("不同意")==0) //如果是“ 不同意”则删除不字。 { var iYjLen=obj.length; obj = obj.substring(1,iYjLen); }else if (obj.indexOf("同意")==0) { }else{ obj ="同意,"+obj.substring(0,iYjLen);//如果没有“同意”则添加。 } } }else if (flag=="N"){ if (obj=="") { obj="不同意"; }else{ if (obj.indexOf("同意")==0) { var iYjLen=obj.length; obj = "不"+obj.substring(0,iYjLen); }else if (obj.indexOf("不同意")==0) { }else{ obj ="不同意,"+obj.substring(0,iYjLen); } } } return obj; } //-------------------------------------------------------------------------------------- /**此函数用于把输入的日期变成输入上一个月的最后一天的日期。 * 例如:用户输入"2002-03-03",界面显示为"2002-02-31"; 2003-01-16 界面显示为 2002-12-31 * @param strDate 要格式化日期值,字符型 格式必须为 yyyy-mm-dd * @return 格式化后的月末值 */ function formatPeriorMonthLast(strDate) { var dStr=strDate; mm=dStr.split('-'); var tempStr=""; if (mm[1]=='01'||mm[1]=='1') { dStr=parseInt(dStr.substring(0,4),10)-1+"-12-31"; return dStr; }else{ if (parseInt(mm[1],10)-1>9) { tempStr=parseInt(mm[1],10)-1; }else{ tempStr=parseInt(mm[1],10)-1; tempStr="0"+tempStr; } tempdate=dStr.substring(0,5)+tempStr+'-01'; dStr=formatMonthLast(tempdate); return dStr; } } /**此函数用于把输入的日期变成输入上一个月的第一天的日期。 * 例如:用户输入"2002-03-03",界面显示为"2002-02-01"; 2003-01-16 界面显示为 2002-12-01 * @param strDate 要格式化日期值,字符型 格式必须为 yyyy-mm-dd * @return 格式化后的月初值 */ function formatPeriorMonthFirst(strDate) { var dStr=strDate; mm=dStr.split('-'); var tempStr=""; if (mm[1]=='01'||mm[1]=='1') { dStr=parseInt(dStr.substring(0,4),10)-1+"-12-01"; return dStr; }else{ if (parseInt(mm[1],10)-1>9) { tempStr=parseInt(mm[1],10)-1; }else{ tempStr=parseInt(mm[1],10)-1; tempStr="0"+tempStr; } tempdate=dStr.substring(0,5)+tempStr+'-01'; dStr=formatMonthFirst(tempdate); return dStr; } } ////////////////注册表编辑类start////////////////////// /** * 注册表编辑器,封装对注册表的操作 */ function RegEdit(){ this.shell = new ActiveXObject("WScript.Shell"); this.regRead = regRead; this.regWrite = regWrite; this.regDelete = regDelete; } /** 返回名为 strName 的注册键或值。 * @param strName 要读取的键或值。如果 strName 以反斜线 (\) 结束,本方法将返回键,而不是值 * @return 名为 strName 的注册键或值 */ function regRead(strName){ var val = null; try { val = this.shell.regRead(strName); } catch (e) { //alert(e.message); } return val; } /** 设置 strName 指定的注册键或值 * @param strName 要写的键或值的名称.如果 strName 以反斜线 (\) 结束,本方法将返回键,而不是值 * @param anyValue 要写入键或注册表值中的值 * @param strType 可选项。要保存到注册表中的值的数据类型REG_SZ、REG_EXPAND_SZ、REG_DWORD、REG_BINARY */ function regWrite(strName,anyValue,strType){ if(strType == null) strType = "REG_SZ"; this.shell.regWrite(strName,anyValue,strType); } /** 从注册表中删除 strName 指定的键或值。 * @param strName 要删除的键或值的名字。如果 strName 以反斜线 (\) 结束,本方法将删除键,而不是值 */ function regDelete(strName){ this.shell.regDelete(strName); } ////////////////注册表编辑类end////////////////////// ////////////////全局变量管理start/////////////////// function setGlobalVar(name,value){ var FRM_RIGHT=getFRM_RIGHT(); if(FRM_RIGHT!=null){ FRM_RIGHT.setGlobalVar(name,value); } } function getGlobalVar(name){ var FRM_RIGHT=getFRM_RIGHT(); if(FRM_RIGHT!=null){ return FRM_RIGHT.getGlobalVar(name); } return null; } function clearGlobalVar(name){ var FRM_RIGHT=getFRM_RIGHT(); if(FRM_RIGHT!=null){ FRM_RIGHT.clearGlobalVar(name); } } ////////////////全局变量管理end///////////////////// ///印章管理,返回当前操作人员使用的印章///////////////////// /** 公用函数 */ var SIGNATUREPATH="c:\\ctais\\signature\\"; function getPicture(zsr_dm){ var sid = createWorkId(); var svc = new Service("util.yzgl.YzInterfaceBndService.init",sid); var oArg=svc.doService("ZSR_DM",zsr_dm); if (svc.getCode() != "2000") { showMessage(svc.getMessage()); return; }else{ var oDoc = loadXml(oArg); if (oDoc.selectSingleNode("ROOT/SIGNATUREID").text == "") { return ""; }else{ return SIGNATUREPATH + oDoc.selectSingleNode("ROOT/SIGNATUREID").text+".jpg"; } } } function getWszsr_dm(swws_dm,wspzxh) { var sid = createWorkId(); var service = new Service("jcfz.common.wszsr.WszsrBndService.init",sid); var srAuge = service.doService("SWWS_DM",swws_dm,"WSPZXH",wspzxh); var msg = service.getMessage(); var code = service.getCode(); if (code=="2000") { //解析xml var oDoc = loadXml(srAuge); return oDoc.selectSingleNode("ROOT").text; } else { showMessage(msg); return ""; } } /** 将XML转换到DOT文档模版内 * @param doc XML Document * @param swws_dm 文书代码 * @param bz 稽查还是违章 */ function toWord(doc,swws_dm,bz,zsr_dm){ try { var strTempleteUrl = "http://" + location.host + getSiteRootUrl() +"/work/public/wsmodel" var ole = new ActiveXObject("Word.Application"); try{ if (typeof(bz)=="undefined"||bz=="") { ole.documents.open(strTempleteUrl + "/dot/" + swws_dm + ".doc"); }else if (bz=="WZ") { ole.documents.open(strTempleteUrl + "/dot/" + swws_dm + "_wz.doc"); }else if (bz=="JC") { ole.documents.open(strTempleteUrl + "/dot/" + swws_dm + "_jc.doc"); }else if (bz=="WS") { ole.documents.open(strTempleteUrl + "/dot/" + swws_dm + ".doc"); }else { ole.documents.open(strTempleteUrl + "/dot/" + swws_dm + ".doc"); } } catch(e2) { try{ ole.documents.open(strTempleteUrl + "/dot/" + swws_dm + ".doc"); }catch(e1){ ole.quit(); showMessage("新建Word异常:"+e1.message,0); } } ole.Visible = true; if(doc==null) { ole.run("toWord",null); }else{ ole.run("toWord",doc.documentElement); // if (typeof(zsr_dm)=="undefined"||zsr_dm=="") // { ole.run("RemoveSignatureLabel"); // }else{ // var picName = getPicture(zsr_dm); // if(picName != ""){ // ole.run("AddSignature",picName); // }else{ // showMessage("没有定义机关签章!",0); // //return; // } // } } //设置文书的模板为只读 if(bz=="WS") ole.run("setReadOnly","eo5w3960ie"); } catch (e) { ole.quit(); showMessage("新建Word异常:"+e.message,0); } } var TZDNODE =null; /**申报模块加打印通知单功能 */ function sb_print_wfwztzd(oDoc){ TZDNODE = oDoc; toPrinter("A4","0",null,null,"20|20|20|20",null,"interface_printTzd"); } /**toPrinter函数的接口函数 */ function interface_printTzd(){ var oDoc = loadFile(URL_TZD); //样式表 var oNode =TZDNODE; if (oNode == null) { return null; } return oNode.transformNode(oDoc); } /** 计算字符串的字节长度 * 一个汉文按两个字节计算 */ String.prototype.ByteLength = function() { return this.replace(/[^\x00-\xff]/gi, "xx").length; } /** 裁减字符串两端的空格 */ String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } /** 字符串替换 */ String.prototype.replaceAll = function(srcText, targetText) { //String.replace只能替换一次 var str = this; for(var strTemp=str.replace(srcText, targetText); strTemp!=str; strTemp=str.replace(srcText, targetText) ) { str = strTemp; } return str; } /** 获取代码XML * 与ctais.services.xml的功能相似,不过后者用于jsp中。 * @param tabname 表名 * @param columnNames 列名称数组 * @param hint Oracle Hint * @param filter 条件 * @return 代码XML。格式为:/ROOT/ITEM */ function createDmXml(tableName, columnNames, hint, filter) { if((tableName != null) && (columnNames instanceof Array) && (columnNames.length > 0)) { var service = new Service("common.xtservice.island.XmlIslandBndService.init"); var res=service.doService("TABLENAME", tableName , "COLUMNNAMES", columnNames.join(",") , "HINT", (hint == null)? "": hint , "FILTER", (filter == null)? "": filter ); var code=service.getCode(); if(code == "2000"){ return res; } else{ return ""; } } } /** 用于格式化xml文件的节点值 * 只针对<><、>、&、'、"、<>数值节点,转换为<><、>、&、'、"、<> * @param xmlId 页面数据岛的ID * @param nodeName 要格式化节点的上级节点 * @return 格式化后的xml数据 */ function formatNodeXML(xmlId, nodeName) { formatNodeName(xmlId.getElementsByTagName(nodeName)); return xmlId.xml; } /** 只针对<><、>、&、'、"、<>数值节点,转换为<><、>、&、'、"、<> * 不能用在<>sss,ssss,ss<>的节点。 * @param obj 要格式化的xml节点的上级节点。 * */ function formatNodeName(obj) { for (var j = 0; j < obj.length; j++) { for (var i = 0; i < obj(j).childNodes.length; i++) { var sValue = obj(j).childNodes(i).text; if (sValue.indexOf("<") == -1 && sValue.indexOf(">") == -1&& sValue.indexOf("&") == -1&& sValue.indexOf("\'") == -1&& sValue.indexOf("\"") == -1) { continue; } if (sValue.indexOf("<") != -1) { aValue = sValue.replace("<","<"); } if (sValue.indexOf(">") != -1) { aValue = sValue.replace(">",">"); } if (sValue.indexOf("&") != -1) { aValue = sValue.replace("&","&"); } if (sValue.indexOf("\'") != -1) { aValue = sValue.replace("\'","'"); } if (sValue.indexOf("\"") != -1) { aValue = sValue.replace("\"","""); } obj(j).childNodes(i).text = aValue; }//for i }//for j } function getOptionTree(htmlurl) { newwin=window.open(htmlurl,"window","left=350,top=240,width=350,height=350,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no, resizable=no"); newwin.focus(); return false; } function getOptionList(htmlurl) { newwin=window.open(htmlurl,"homeWin","toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=580,height=480,left=250,top=150"); newwin.focus(); return false; }