/**************************************************************************************************************/ /**************************************************************************************************************/ /*1)copyFixNode 拷贝指定长度的节点数 /*2)dynamicChemColumn 动态成分生成 /*3)jsTrim 去掉字符串前后的空格 /*4)appendNode 添加节点(非COPY,原节点下的节点不被覆盖) /*5)getChildNodeCount 获得某节点下的子节点个数,包括空节点 /*6)beGridChanged 判断表格(datagrid)是否有更新、删除、插入操作 /*7)matchChargeNo 判断炉次号格式是否匹配 /*8)exceptionReport 数据库操作异常信息返回 /*9)replaceAll 字符串替换 /*10)getLoggingInInfo 获取用户ID /*11)openWindow 开子窗口 /*12)toFixed 四舍五入 /***************************************************************************************************************/ /* *@desc : 拷贝指定从n到m的节点数 *@@param : destRef为到item的上一个节点为止,如:/root/datagrid1 。 * srcRef为到item位置的节点树/root/resData/item 。 n为srcRef的启始item,m为结束item */ function copyFixNode(destRef, srcRef, n, m) { var tempNode = "/root/tempDataXXX"; model.removeNodeset(tempNode); model.makeNode(tempNode); if(n <=0 || m <=0 || n > m) return; var nodeList = instance1.selectNodes(srcRef);//"根"节点树生成 var length = nodeList.length; if(m > length) m = length; for(var i=n; i <=m; i++) { model.duplicate(tempNode, srcRef+"["+i+"]"); } model.copyNode(destRef,tempNode); } /* *@desc : 去掉字符串前后的空格 *@param : str为需要整理(trim)的字符串 */ function jsTrim(str) { return str.replace(/(^\s+)|(\s+$)/g,""); } /* *@desc : 添加节点 xpath1与xpath2与datagrid的copy方式相同,均为到item的上一级节点 *@param : xpath1为目标节点,xpath2为原节点集 */ function appendNode(xpath1,xpath2) { var nodeList = instance1.selectNodes(xpath2); var len = nodeList.length; for(var i=1; i <= len; i++) { model.duplicate(xpath1,xpath2+"["+i+"]"); } model.refresh(); } /* *@desc : 获得某父节点下的子节点数量,包括空节点 @return : 返回子节点数量, 节点不存在时返回-1 , 无子节点时,返回0 */ function getChildNodeCount(xpath) { var node = instance1.selectSingleNode(xpath); if(node==null)//节点不存在时返回-1 { return -1; } var child = node.childNodes; if(child==null)//无子节点时,返回0 { return 0; } return child.length; } /* @desc : 判断表格是否有更新、删除、插入操作 @param : 参数为datagrid的ID @return : 无修改则返回0,若修改了则返回1 */ function beGridChanged() { try { var length = arguments.length; for(var i=0; i < length; i++) { var str = arguments[i].getUpdateData(); var arr = str.split(arguments[i].attribute("rowsep")); if(arr[1].length > 0) //若发生修改则返回1 { return "1"; } } return "0"; } catch(e) { alert("beGridChanged 错误!"); } } /** * @desc :判断炉次号格式是否匹配 * @param :strChargeNo 炉次号,为字符串类型 * @return : 炉次号格式正确返回true, 错误则返回false */ function matchChargeNo(strChargeNo) { var strReg = "^[J][\\d]{2}[-][^\\s]{5}$"; var reg = new RegExp(strReg); var flag = reg.test(strChargeNo); if(!flag) { window.alert("请输入正确的炉次号","提示"); } return flag; } /** * @desc : 操作发生异常时,返回异常信息 * @return: 返回-1时,说明发生异常 */ function exceptionReport() { try { var exc = model.getValue("/root/resData/errorData"); if(exc != "") { window.alert("操作失败。\n"+exc , "警告"); return "-1"; } }catch(e) { window.alert("errorData节点异常"); } } /** * @desc : 字符替换 * @return: 返回替换后的字符串 */ String.prototype.replaceAll = strReplace; function strReplace(findText, replaceText) { var str = new String(this); // var strReg = "[^\\s]{1}"; var strReg = "[A-Za-z]"; var reg = new RegExp(strReg); var jj = -1; while (str.indexOf(findText)!=-1) { jj = str.indexOf(findText); //如果计算式中的当前字符的下一个字符为字母,并且 grid中的元素长度为1的话,进入下一次循环 /*str.indexOf(findText)+1)==true */ if(reg.test(str.charAt(jj+1)) == true && findText.length == 1) {//alert(str.charAt(jj+1)+"-========="+findText); // alert(findText); break; } str = str.replace(findText, replaceText); } return str; } /* * @desc : 打开新的窗口 * @param : name为界面的ID */ function openWindow(name) { model.removenode("/root/fwdData"); model.makeNode("/root/fwdData/"+name+"/URL"); model.setValue("/root/fwdData/"+name+"/URL", "../B/B02/"+name+".xrw"); var java = window.parent.javaScript; java.open(model.instances(0).selectSingleNode("/root/fwdData/"+name)); } /* * @desc : 四舍五入 * */ String.prototype.toFixed = function(d) { var s=this+"";if(!d)d=0; if(s.indexOf(".")==-1)s+=".";s+=new Array(d+1).join("0"); if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+ (d+1) +"})?)\\d*$").test(s)) { var s="0"+ RegExp.$2, pm=RegExp.$1, a=RegExp.$3.length, b=true; if (a==d+2){a=s.match(/\d/g); if (parseInt(a[a.length-1])>4) { for(var i=a.length-2; i>=0; i--) {a[i] = parseInt(a[i])+1; if(a[i]==10){a[i]=0; b=i!=1;} else break;} } s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2"); }if(b)s=s.substr(1);return (pm+s).replace(/\.$/, "");} return this+""; } /* * @desc : 获取用户的登录信息 */ function getLoggingInInfo() { model.makeValue("/root/reqData/REG_ID" , model.getValue("/root/initData/rcvInfo/REG_ID")); model.makeValue("/root/reqData/REG_NM" , model.getValue("/root/initData/rcvInfo/REG_NM")); model.makeValue("/root/reqData/DEPT_CD" , model.getValue("/root/initData/rcvInfo/DEPT_CD")); //model.makeValue("/root/reqData/REG_ID" , model.getValue("/root/initData/rcvInfo/REG_ID")); //model.makeValue("/root/reqData/REG_ID" , model.getValue("/root/initData/rcvInfo/REG_ID")); } /* ****************************************************************************************************** */ /* ****************************************************************************************************** */ /* *@desc初始化 */ function InitParams(node) { if (typeof node == "undefined" && typeof node != "object") return; model.removenode("/root/initData/rcvInfo"); model.makeNode("/root/initData/rcvInfo"); var nodeList = node.childNodes; for (var i = 0; i < nodeList.length; i++) model.instances(0).selectSingleNode("/root/initData/rcvInfo").appendChild(nodeList.item(i)); } /* *@desc datagrid修改后,则可通过其生成相应节点信息。增加对单元格的前后空格处理 *
		
*		      如:commMultiUpdate(datagrid1,"/root/reqData","A",true,"rowStatus");	
*		  
*@param gridID为datagrid的ID值 *@param newNodesetPath为自定义节点,datagrid修改后的信息保存在其中 *@param multiFlag确定对datagrid的或删除、或增加、或插入信息做记录或者全部记录 *@param bRebuild确定是否已节点形式生成,一般为true,为false时作用不大 *@param newEleName在JAVA类中区分删除、增加、插入信息 *@return boolean返回datagrid是否存在修改的信息,但注意chekbox若被选择的话也算修改,已true返回 */ function b01MultiUpdate(gridID,newNodesetPath,multiFlag,bRebuild,newEleName) { var oGrid = (typeof gridID == 'string')?document.controls(gridID):gridID; var data = oGrid.getUpdateData(); var rowSep = (oGrid.attribute("rowsep")=='')?'|':oGrid.attribute('rowsep'); var colSep = (oGrid.attribute("colsep")=='')?'^':oGrid.attribute('colsep'); var up_data = data.split(rowSep); var nHeaderLen = 2; var nodesetPath = oGrid.attribute("nodeset"); if(up_data.length <= nHeaderLen){ return false; } var insertFlag = 0; var updateFlag = 0; var deleteFlag = 0; var arrHeader = new Array(); var arrData = new Array(); var oldNodeset = model.instances(0).selectSingleNode(nodesetPath); var strNodesetName = nodesetPath.substring(nodesetPath.lastIndexOf("/")+1); model.makeNode(newNodesetPath); var parentNode = model.instances(0).selectSingleNode(newNodesetPath); for(var i=0;i 1 ) { for( var k = 2; k <= flagNode.length; k++ ) { model.removeNode(newNodesetPath+"/"+strNodesetName+"["+(i+1)+"]/"+newEleName+"["+k+"]"); } } } } return true; } function onkeydownmove(datagrid) { if(event.keyCode == 37)//向左 { datagrid.col--; datagrid.endEditCell(); } else if(event.keyCode == 38)//向上 { if(datagrid.row == datagrid.fixedRows) return; datagrid.row--; datagrid.endEditCell(); } else if(event.keyCode == 39)//向右 { datagrid.col++; datagrid.endEditCell(); } else if(event.keyCode==13 || event.keyCode == 40)//回车,向下事件 { datagrid.row++; datagrid.endEditCell(); } } function AddDate(LISTR_Date,LISTR_AddDays,LISTR_DateType) { var LSTR_YY=0; var LSTR_MM=0; var LSTR_DD=0; var LINT_FLAG=0; //若未传天数,则默认7天 if("" == LISTR_AddDays || null == LISTR_AddDays) LISTR_AddDays = 7; //默认为7天 //检查日期格式为 "YYYYMMDD" 或 //"MMDDYYYY" 且长度为8码 if((LISTR_DateType!="YYYYMMDD") && (LISTR_DateType!="MMDDYYYY") && (LISTR_Date.length!=8)) return false; if(LISTR_DateType=="MMDDYYYY") LISTR_Date=LISTR_Date.substr(4,4)+LISTR_Date.substr(0,4); LSTR_YY=parseInt(LISTR_Date.substr(0,4),10); LSTR_MM=parseInt(LISTR_Date.substr(4,2),10); LSTR_DD=parseInt(LISTR_Date.substr(6,2),10)+parseInt(LISTR_AddDays,10); while(LINT_FLAG==0) { switch (LSTR_MM) { case 2: if ((LSTR_YY % 4) != 0) { if (LSTR_DD > 28) { LSTR_DD -=28; LSTR_MM =3; } else { LINT_FLAG=1; } } else { if (((LSTR_YY % 100) == 0) && ((LSTR_YY % 400) != 0)) { if (LSTR_DD > 28) { LSTR_DD -=28; LSTR_MM =3; } else { LINT_FLAG=1; } } else { if (LSTR_DD > 29) { LSTR_DD -=29; LSTR_MM =3; } else { LINT_FLAG=1; } } } break; case 4: case 6: case 9: case 11: if (LSTR_DD > 30) { LSTR_DD -=30; LSTR_MM +=1; } else{LINT_FLAG=1;} break; case 1: case 3: case 5: case 7: case 8: case 10: if (LSTR_DD > 31) { LSTR_DD -=31; LSTR_MM +=1; } else { LINT_FLAG=1; } break; case 12: if (LSTR_DD > 31) { LSTR_DD -=31; LSTR_MM=1; LSTR_YY +=1; } else { LINT_FLAG=1; } break; default: return; break; } } if (LSTR_MM<10) { LSTR_MM="0" +LSTR_MM; } if (LSTR_DD<10) { LSTR_DD="0" +LSTR_DD; } if(LISTR_DateType=="MMDDYYYY") return LSTR_MM+""+LSTR_DD+""+LSTR_YY+""; else return LSTR_YY+""+LSTR_MM+""+LSTR_DD+""; } //验证表格中最小值不能大于最大值 function compareMINMAX(datagrid,MIN,MAX) { var iRow = datagrid.row; //点击了哪一行,标题行算第0行。 var icol = datagrid.col; if(iRow==0) return; var minCol = datagrid.colRef(MIN); var maxCol = datagrid.colRef(MAX); if(icol == minCol || icol == maxCol) { var mins = datagrid.valueMatrix(iRow , minCol); var maxs = datagrid.valueMatrix(iRow , maxCol); if("" != mins && "" != maxs) { if((maxs-mins) < 0) { datagrid.valueMatrix(iRow , icol) = ""; window.alert("最大值不能小于最小值!","提示"); } } } }