xinyb
2024-02-24 f12331f38abfd5a2af0ee3b47586a17fe406ee76
提交 | 用户 | age
a6a76f 1 var rowid="";//当前选择id
F 2 var tempRowid="";
3 var insertRowids=[];//保存添加的rowid
4 var updateRowids=[];
5 var insertArr=[];
6 var updateArr=[];
7 var dragArr=[];
8 var deleteArr=[];
9 var priVa="";
10 var hasPri = primary=="rowid";
11 var check=true;
7e368e 12 var isKeyUp=false;
a6a76f 13 function nodeClick(node){
8a8a3c 14     if(checkSession()){
X 15         return false;
16     }
a6a76f 17     if(panMain[1].isChange!=0&&rowid!=""){savaUpdateNode();}//保存修改的节点
F 18     rowid=$("span:first",node).attr("id");
19     priVa=$("span:first",node).attr("nodevalue");
20     tempRowid=rowid;//更新节点名用到   点击的是新增的节点时
21     var index=seachArray(insertRowids,rowid);//双击新增的节点
22     if(index!=-1){
23         newNodeDBClick(i);
24         return;
25     }
26     index=seachArray(updateRowids,rowid);
27     if(index!=-1){//判断双击的是否是新增节点
28         updateNodeDBClick(index);
29         return;
30     }
31     var rid=(primary==""||primary=="rowid")?rowid:$("span:first",node).attr("nodevalue");
32     $.post("treeData.jsp",{"rid":rid,"info":1,query:treeQuery},function(data){
33         setPanelValue(data);
34         panMain[1].isChange =0;
35     },"json");
36 }
37 function newNodeDBClick(index)
38 {//双击新增节点
39      var node=insertArr[index];
40      setPanelValue(node);
41 }
42 function updateNodeDBClick(index)
43 {
44     var node=updateArr[index];
45     setPanelValue(node);
46 }
47 function addNode(type)//添加节点 type 0添加同级节点  1添加子节点
48 {    
49     var flag = checkSession();//session失效后弹出登录框,flag为true时表示已经失效
50     if(flag){
51         return;
52     }
53     var selectNode=simpleTree.get(0).getSelected();
54     if(selectNode.find(">span").html()==null)
55     {
56         $.messager.alert("提示","请选择节点!","info");
57         return;
58     }
59     
60     if(type!=0){
61         if(selectNode.attr("lqc")){
62             $.messager.alert("提示","请选择节点!","info");
63             return;
64         }
65     }
66     
67     var temp=simpleTree.get(0).getSelected();
68     if(type!=0 && temp.find('>ul').attr("class")=='ajax')
69     {
70         $.messager.alert("提示","该节点数据尚未加载!","info");
71         return;
72     }
73     if(0!=panMain[1].isChange){savaUpdateNode();}//保存修改的节点
74     clearPanel();
75     $.post("/getRowid.do","",function(data){
76         var nodeName=buildDisplayNode();
77         simpleTree.get(0).addNode(data,nodeName,type,function(selectNode,newNode){
78             rowid=selectNode.attr("id");
79             if("root"==rowid)rowid="";//增加的是第一级节点
80         });
81         tempRowid=data;
82         saveAdd();
83         rowid=data;
84         if(autoCode!=''){
85             var temp=autoCode.split(";");
86             if(autocodeConfig.split(";").length!=3){
87                 $.messager.alert("提示","自动编号配置有误!","error");
88                 return;
89             }
90             for(i=0;i<temp.length;i++){
91                 $.post("/tree_2_autocode.do",{'formid':formId,'fields':autoCode,'configs':autocodeConfig},function(data){
92                     if(data.indexOf("错误信息")>0){
93                         $.messager.alert("提示",data,"error");
94                         return;
95                     }else
96                     {
97                         var autoArray=eval(data);
98                         $(autoArray).each(function(){
99                             $("#"+this.field).val(this.value);
100                         });
101                         panMain[1].isChange=1;
102                     }
103                 });
104             }
105         }
106     });
107 }
108 function delNode(){
109     var flag = checkSession();//session失效后弹出登录框,flag为true时表示已经失效
110     if(flag){
111         return;
112     }
113     var selectNode=simpleTree.get(0).getSelected();
114     if(selectNode.find(">span").html()==null)
115     {
116         $.messager.alert("提示","请选择节点!","info");
117         return;
118     }
119     
120     if(selectNode.attr("lqc")){
121         $.messager.alert("提示","请选择节点!","info");
122         return;
123     }
124     
125     
126     var id=selectNode.parent().attr("id");
127     if("firstNode"==id){
128         if(1==selectNode.parent().find(">li.line").size()){
129             $.messager.alert("提示","树功能号至少需要一个节点!","info");
130             return;
131         }
132     }
133     var temp = selectNode.find(">ul").html();
134     if(temp==undefined||temp==null||temp==''){
135         $.messager.confirm("提示","确定删除?",function(r){
136             if(r){
137                 var rid=selectNode.find(">span").attr("id");
138                 priVa = selectNode.find("span:first").attr("nodevalue");
139                 simpleTree.get(0).delNode();
140                 var json={};
141                 json["rowid"]=rid;
142                 json["isDeletes"]=0;
143                 if(undefined!=priVa && ""!=priVa){
144                     json.primaryKey=(hasPri?"rowid":primary);
145                     json.primaryValue=(hasPri?rid:priVa);
146                 }
16411f 147                 for(let i=0;i<columns.length;i++){
X 148                     var t=$("#"+columns[i]).val();
f12331 149                     if(t==""|| columns[i]=='docversion'){//版本号字段
16411f 150                         t=$doc(columns[i]).val();//
X 151                     }
152                     if(t==undefined||t==null)continue;
153                     json[columns[i]]=t;
154                 }
a6a76f 155                 deleteArr.push(json);
F 156             }
157         },"question");
158     }else{
159         $.messager.confirm("提示","该节点是父级节点它包含其他子节点,确认删除?",function(r){
160             if(r){
161                 simpleTree.get(0).delNode();
162                 var json={};
163                 json["rowid"]=rowid;
164                 json["isDeletes"]=1;
16411f 165                 for(let i=0;i<columns.length;i++){
X 166                     var t=$("#"+columns[i]).val();
f12331 167                     if(t=="" || columns[i]=='docversion'){//版本号字段
16411f 168                         t=$doc(columns[i]).val();//
X 169                     }
170                     if(t==undefined||t==null)continue;
171                     json[columns[i]]=t;
172                 }
a6a76f 173                 deleteArr.push(json);
F 174             }
175         },"question");
176     }
177 }
178 function savaUpdateNode()//修改节点2种可能 1:修改的是新增的节点,2:修改的不是新增节点
179 {
180     var node=null;
181     var isIns=false;
182     var index=seachArray(insertRowids,rowid);
183     if(index!=-1){//修改的是新增的节点
184         node=insertArr[index];
185         for(i=0;i<columns.length;i++)
186         {
abd880 187             var t=$("#"+columns[i]).val();
f12331 188             if(t=="" || columns[i]=='docversion'){//版本号字段
abd880 189                 t=$doc(columns[i]).val();//
06b618 190             }
a6a76f 191             if(t==undefined||t==null)continue;
F 192             node[columns[i]]=t;
193         }
194         insertArr[index]=node;
195     }else{
196         index=seachArray(updateRowids,rowid);
197         if(index!=-1){//修改的不是新增节点2种可能 1:在修改数组中存在 2:不存在
198             node=updateArr[index];
199             for(i=0;i<columns.length;i++)
200             {
abd880 201                 var t=$.trim($("#"+columns[i]).val());
f12331 202                 if(t=="" || columns[i]=='docversion'){//版本号字段
abd880 203                     t=$doc(columns[i]).val();//
06b618 204                 }
a6a76f 205                 if(t==undefined||t==null)continue;
F 206                 node[columns[i]]=t;
207             }
208             updateArr[index]=node;
209         }else{
210             var json={};
211             updateRowids.push(rowid);
212             for(i=0;i<columns.length;i++)
213             {
abd880 214                 var t=$("#"+columns[i]).val();
f12331 215                 if(t=="" || columns[i]=='docversion'){//版本号字段
abd880 216                     t=$doc(columns[i]).val();//
06b618 217                 }
a6a76f 218                 if(t==undefined||t==null)continue;
F 219                 json[columns[i]]=t;
220             }
221             json.primaryKey=(hasPri?"rowid":primary);
222             json.primaryValue=(hasPri?rowid:priVa);
223             json.rowid=rowid;
224             updateArr.push(json);
225         }
226     }
227    resetNodeName(); //by danaus 去掉,通过面板修改值是不需要调用这个方法来更新节点
228     panMain[1].isChange=0;
229 }
230 //保存新增的节点到数组
231 function saveAdd()
232 {
233     insertRowids.push(tempRowid);//保存新增节点的rowid到数组
234     var json={};
235     for(i=0;i<columns.length;i++)
236     {
abd880 237         var t=$("#"+columns[i]).val();
f12331 238         if(t=="" || columns[i]=='docversion'){//版本号字段
abd880 239             t=$doc(columns[i]).val();//
06b618 240         }
a6a76f 241         if(t==undefined||t==null)continue;
F 242         json[columns[i]]=t;
243     }
244     for(i=0;i<mastercodes.length;i++){
245         json[mastercodes[i]]=$("#"+mastercodes[i]).val();
246     }
247     json.rowid=tempRowid;
248     json.parentrowid=rowid;
249     $("#rowid").val(tempRowid);
250     $("#parentrowid").val(rowid);
251     insertArr.push(json);
252     //panMain[1].isChange=0; //去掉是为点其他节点时候更新修改了的节点信息
253     resetNodeName();
254 }
255 function nodeDrag(destination, source, pos){
256     var souRowid=source.find("span:first").attr("id");
257     var tagId=null;
258     if(destination.find("ul:first").attr("id")=="firstNode")tagId="";
259     else tagId=destination.find("span:first").attr("id");
260     var isExists=false;
261     var index=0;
262     for(i=0;i<dragArr.length;i++)
263     {
264         if(dragArr[i].rowid==souRowid){
265             isExists=true;
266             index=i;
267             break;
268         }
269     }
270     if(isExists)
271     {
272         var json=dragArr[index];
a2823f 273         for(let i=0;i<columns.length;i++){
X 274             var t=$("#"+columns[i]).val();
f12331 275             if(t=="" || columns[i]=='docversion'){//版本号字段
a2823f 276                 t=$doc(columns[i]).val();//
X 277             }
278             if(t==undefined||t==null)continue;
279             json[columns[i]]=t;
280         }
d65ab0 281         json.parentrowid=tagId;
X 282         json.rowid=souRowid;
a6a76f 283         dragArr[index]=json;
F 284     }else{
285         var json={};
a2823f 286         for(let i=0;i<columns.length;i++){
X 287             var t=$("#"+columns[i]).val();
f12331 288             if(t=="" || columns[i]=='docversion'){//版本号字段
a2823f 289                 t=$doc(columns[i]).val();//
X 290             }
291             if(t==undefined||t==null)continue;
292             json[columns[i]]=t;
293         }
d65ab0 294         json.parentrowid=tagId;
X 295         json.rowid=souRowid;
a6a76f 296         dragArr.push(json);
F 297     }
298 }
299 var nx=1;
300 function buildDisplayNode()
301 {
302     var showFields=displayfield.split(";");
303     var t="";
304     for(i=0;i<showFields.length;i++)//新添加节点的默认初始值
305     {
306         t+="newNode"+nx+separatedst;
7e368e 307         $("#"+showFields[i]).val("");//直接赋空值 BUG提交单:BUG220513003 xin 2022-6-30 14:53:18
X 308         // $("#"+showFields[i]).val("newNode"+nx);
a6a76f 309     }
F 310     for(j=0;j<columns.length;j++)//新增节点时候把缺省值录入 2014-11-04 
311     {
a9c047 312         var tv = $("#"+columns[j]).val();//$doc(columns[j]).val();//$("#"+columns[j]).val();
X 313         if (tv != "" && tv != null) {
314             $doc(columns[j]).val(tv);
315         } else {
316             $doc(columns[j]).val(panMain[panIndex].panInfo[columns[j]].initValue);
a6a76f 317         }
F 318     }
319     nx++;
320     return t.substring(0,t.length-1);
321 }
322 function clearPanel()
323 {
324     for(i=0;i<columns.length;i++)
325     {
326         var o=$("#"+columns[i]);
327         if(o)
328         {
329             setDoc(columns[i],".value=''");
330             //var initval=panMain[panIndex].panInfo[columns[i]].initValue;//获取9802设置的初始值---2016-6-14 10:39:23 xin
331             //initval==""?o.val(""):o.val(initval);//如果没有初始值则清空  有则赋值。---2016-6-14 10:39:23 xin
332         }
333     }
334 }
335 function resetNodeName()
336 {
337     var temp=displayfield.split(";");
338     var nodeName="";
339     for(i=0;i<temp.length;i++)
340     {    
341         var t=$("#"+temp[i]).val();
342         if(t){
343          nodeName=nodeName+t+separatedst;
344         }
345     }
346     if($.trim(separatedst)!="")
347         nodeName=nodeName.substring(0,nodeName.length-separatedst.length);
348         nodeName=nodeName.replace(new RegExp(separatedst,"gm"),"  ");//替换里面的符号
1c54ad 349     $("span[id='" + tempRowid + "']").text(nodeName==''?"未命名":nodeName);//xin 2022-6-30 15:07:31
7e368e 350     // $("span[id='"+tempRowid+"']").text(nodeName);
a6a76f 351 }
F 352 function setPanelValue(jsonNode) //修改panel值不从数据库读取的
353 {
8a8a3c 354     let allPanIndex=panIndex;//全局的面板元素索引先拿出来 xin 2023-9-20 10:00:41
X 355     panIndex = 1;//这里赋值1的原因:20窗体的右边是从表的面板控件,对应的元素索引为1 所以直接赋值1然后填充从表控件值的时候可以准确知道是右边的(主表和从表个别字段名相同导致需要这样)
a6a76f 356     for (j = 0; j < columns.length; j++) {
F 357         if ($("#" + columns)) {
358             var value = jsonNode[columns[j]];
359             if (value != undefined && value.indexOf(".") != -1 && !isNaN(value)) {
360                 value = value.substring(0, (value.length - 2));
361             }
362             if (document.all(columns[j]) != undefined) {//判断是否有控件存在
363                 if (document.all(columns[j]).type == "select-one"
364                         && value != null && value != undefined) {// 处理有下拉控件的值
365                     // setDoc(columns[j],".value="+value+"");
366                     // seletMorenOrValue(value,columns[j]);
367                     $doc(columns[j]).val(value);
368                     if (value == "") {
369                         $("#" + columns[j]).get(0).selectedIndex = -1;
370                     }// 处理是""值的情况 2014-11-05
371
372                 } else {
373                     $doc(columns[j]).val(value);
374                     // setDoc(columns[j],".value="+value+"");//注释原因是如果控件值有空格需要
375                     // 这个显示方法会吧空格给去掉,导致得不到需要的正确结果。
376                     cheeckValueChan(columns[j]); // 复选框单选初始值,以初始值控制复选框的勾选
377                     // 2014-7-10 10:57:22
378                     // if(value.toLowerCase() !=""){//by danaus
379                     // ,值为""也需要更新为当前选中节点的信息,是为解决当前一节点有些字段有值,切换到当前节点时对应字段时由于值为空所以程序跳过不执行更新为属于当前节点的内容,而是保留了前一个节点的信息,这是不对的
380                     // $doc(columns[j]).val(value);
381                     // }
382                 }
383             }
384         }
385     }
7e368e 386     rowidOnkeyUp();//设置名称联动树结构名称 xin 2022-6-30 15:34:05
8a8a3c 387     panMain[panIndex].isChange = 0;
X 388     panIndex=allPanIndex;//还原全局的指定所在索引 xin 2023-9-20 10:16:03
a6a76f 389 }
F 390 function save()
391 {
392     var flag = checkSession();//session失效后弹出登录框,flag为true时表示已经失效
393     if(flag){
394         return;
395     }
396     showLoading();
397     if(panMain[1].isChange!=0){savaUpdateNode();}//保存修改的节点
398     check=panMain[panIndex].checkUp();            //判断控件是否是必录的
399     if(!check){
400         closeLoading();
401         check=true;
402         return;
403     }
404     if(dragArr.length==0&&deleteArr.length==0&&insertRowids.length==0&&updateRowids.length==0){
405         $.messager.alert("提示","无数据更新!");
406         closeLoading();
407         return;
408     }
409     var treeJson={};
410     treeJson["insertedRecords"]=insertArr;
411     treeJson["updatedRecords"]=updateArr;
412     treeJson["dragRecords"]=dragArr;
413     treeJson["deleteRecords"]=deleteArr;
414 //    alert(obj2str(treeJson));return;
415     $.post("/tree_20_save2.do",{treeJson:JSON.stringify(treeJson),formid:formId,where:treeQuery},function(data){
416         if(data.status==1){
417             clear();
418             loadTree("treeData.jsp",{query:treeQuery});
419             deleteArr=[];//清空已经删除成功后的信息,解决再次添加已经删除的数据信息,而数据库和页面没有的问题  2014-11-03 
420              $.messager.alert("提示","保存成功!");
421         }else if(data.status==2){
422              $.messager.alert("提示",data.message,function(){
423                     if(typeof(callback)=="function")callback(false);
424              });
425         }
426         closeLoading();
427     },"json");
428     closeLoading();
429 }
430 function setReturnValue(node)//返回一个规则对象
431 {
432     var rid=(primary==""||primary=="rowid")?$("span:first",node).attr("id"):$("span:first",node).attr("nodevalue");
433     $.post("treeData.jsp",{"rid":rid,"info":1,query:treeQuery},function(data){
434         fillData(data);
435     },"json");
436 }
437 function setReturnValueA(rid)//返回一个规则对象
438 {
439     $.post("treeData.jsp",{"rid":rid,"info":1,query:treeQuery},function(data){
440     setPanelValue(data);
441     },"json");
442 }
443 function obj2str(o){  
444     var r = [];  
445     if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";  
446     if(typeof o =="undefined") return "";  
447     if(typeof o == "object"){  
448         if(o===null) return "null";  
449         else if(!o.sort){  
450             for(var i in o)  
451                 r.push(i+":"+obj2str(o[i]))  
452             r="{"+r.join()+"}"  
453         }else{  
454             for(var i =0;i<o.length;i++)  
455                 r.push(obj2str(o[i]))  
456             r="["+r.join()+"]"  
457         }  
458         return r;  
459     }  
460     return o.toString();  
461 }
462 function seachArray(array,rowid){
463     for(i=array.length-1;i>=0;i--)
464     {
465         if(array[i]==rowid){
466             return i;
467         }
468     }
469     return -1;
470 }
471 function clear(){
472      rowid="";
473      insertArr=[];
474      updateArr=[];
475      insertRowids=[];
476      updateRowids=[];
477 }
7e368e 478 function rowidOnkeyUp(){
X 479     let temp = displayfield.split(";");
480     if (!isKeyUp && temp != null && temp.length > 0) {
481         for (let i = 0; i < temp.length; i++) {
482             let e = $("#" + temp[i]);
65e89e 483             if (typeof e[0] == 'undefined') {
X 484                 continue;
485             }
7e368e 486             if (e[0].localName.toLowerCase() == 'input') {
X 487                 e.keyup(function () {
488                     setValue();
489                 })
490             }
491             if (e[0].localName.toLowerCase() == 'select') {
492                 e.change(function () {
493                     setValue();
494                 })
495             }
496         }
497         setValue=function(){
498             let value = "";
499             for (let v = 0; v < temp.length; v++) {
65e89e 500                 let vl = $("#" + temp[v]).val();
X 501                 if (typeof vl == 'undefined') {
502                     continue;
503                 }
504                 value += vl;
7e368e 505                 if (v != temp.length - 1) {
X 506                     value += "  ";
507                 }
508             }
509             $("span[id='" + tempRowid + "']").text(value);
510         }
511         isKeyUp = true;
512     }
513 }