| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524 |
- /**************************************************************************************************************/
- /**************************************************************************************************************/
- /*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修改后,则可通过其生成相应节点信息。增加对单元格的前后空格处理
- * <pre>
- * 如:commMultiUpdate(datagrid1,"/root/reqData","A",true,"rowStatus");
- * </pre>
- *@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<up_data.length-1;i++){
- var vRow = up_data[i].split(colSep);
-
- if(i==0) {
- arrHeader = vRow;
- continue;
- }
- var up_flag = vRow[0];
- var bInsert = (up_flag == "i" && multiFlag=="I")?true:false;
- var bUpdate = (up_flag == "u" && multiFlag=="U")?true:false;
- var bDelete = (up_flag == "d" && multiFlag=="D")?true:false;
- var bMulti = (multiFlag=="A")?true:false;
- if(bInsert){
- if(!bRebuild) {
- var rowNode = model.instances(0).createElement(newEleName);
- rowNode.nodeValue = up_data[i];
- parentNode.appendChild(rowNode);
- } else {
- arrData[insertFlag++] = vRow;
- }
- } else if(bUpdate){
- if(!bRebuild) {
- var rowNode = model.instances(0).createElement(newEleName);
- rowNode.nodeValue = up_data[i];
- parentNode.appendChild(rowNode);
- } else {
- arrData[updateFlag++] = vRow;
- }
- }else if(bDelete){
- if(!bRebuild) {
- var rowNode = model.instances(0).createElement(newEleName);
- rowNode.nodeValue = up_data[i];
- parentNode.appendChild(rowNode);
- } else {
- arrData[deleteFlag++] = vRow;
- }
- }else if(bMulti){
- if(!bRebuild) {
- var rowNode = model.instances(0).createElement(newEleName);
- rowNode.nodeValue = up_data[i];
- parentNode.appendChild(rowNode);
- } else {
- arrData[(i-1)] = vRow;
- }
- }
- }
- if(arrData.length < 1 && bRebuild) return false;
-
- if(bRebuild) {
- for(var i=0; i<arrData.length; i++) {
- var r = arrData[i];
- var rowNode = model.instances(0).createElement(strNodesetName);
- for(var j=0; j<arrHeader.length; j++) {
- if(j==1)
- continue;
- var colName;
- if(j==0) {
- colName = newEleName;
- } else {
- colName = arrHeader[j];
- }
- var colNode = model.instances(0).createElement(colName);
- colNode.nodeValue = r[j].Trim();//对空格进行处理
- rowNode.appendChild(colNode);
- }
- parentNode.appendChild(rowNode);
- var flagNode = model.instances(0).selectNodes(newNodesetPath+"/"+strNodesetName+"["+(i+1)+"]/"+newEleName);
- if( flagNode.length > 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("最大值不能小于最小值!","提示");
- }
- }
- }
- }
-
|