/**************************************************************************************************************/ /**************************************************************************************************************/ /*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