Selaa lähdekoodia

项目计划安排

Enford 5 vuotta sitten
vanhempi
commit
faa14e05f6

+ 81 - 31
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionManageAct.js

@@ -43,25 +43,6 @@
                 silent : false//设置初始化节点关闭
             });
         });
-        //搜索
-        var search1 = function(e) {
-            var pattern = $.trim($('#input-search1').val());
-            var options = {
-                ignoreCase: $('#chk-ignore-case').is(':checked'),
-                exactMatch: $('#chk-exact-match').is(':checked'),
-                revealResults: $('#chk-reveal-results').is(':checked')
-            };
-            $('#jstreeTime').treeview('search', [ $.trim($('#input-search1').val()), { ignoreCase: false, exactMatch: false } ]);
-            var results = $('#jstreeTime').treeview('search', [ pattern, options ]);
-        }
-        $('#btn-search1').on('click', search1);
-        $('#btn-clear-search1').on('click', function (e) {
-            $('#jstreeTime').treeview('clearSearch');
-            $('#input-search1').val('');
-            $('#jstreeTime').treeview('collapseAll', {
-                silent : false//设置初始化节点关闭
-            });
-        });
         $('#selectId1').click(function () {
             var object = $('#jstreeTime').treeview('getChecked');
             if (object.length<1){
@@ -204,19 +185,26 @@ function jstree(date) {
         levels: 1,
         highlightSelected:false,
         showCheckbox:true,
-    });
-}
-function jstreeTime(date) {
-    $('#jstreeTime').treeview({
-        data: date,
-        levels: 1,
-        highlightSelected:false,
-        showCheckbox:true,
-        onNodeSelected: function(event, treeNode) {
-            var id = treeNode.id;
-            jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
+        onNodeChecked: function (event, node) { //选中节点
+            var selectNodes = getChildNodeIdArr(node); //获取所有子节点
+            if (selectNodes) { //子节点不为空,则选中所有子节点
+                $('#jstree').treeview('checkNode', [selectNodes, { silent: true }]);
+            }
+            // var parentNode = $("#jstree").treeview("getNode", node.parentId);
+            // setParentNodeCheck(node);
         },
-
+        onNodeUnchecked: function (event, node) { //取消选中节点
+            // 取消父节点 子节点取消
+            var selectNodes = setChildNodeUncheck(node); //获取未被选中的子节点
+            var childNodes = getChildNodeIdArr(node);    //获取所有子节点
+            if (selectNodes && selectNodes.length == 0) { //有子节点且未被选中的子节点数目为0,则取消选中所有子节点
+                $('#tree').treeview('uncheckNode', [childNodes, { silent: true }]);
+            }
+            // 取消节点 父节点取消
+            var parentNode = $("#jstree").treeview("getNode", node.parentId);  //获取父节点
+            var selectNodes = getChildNodeIdArr(node);
+            setParentNodeCheck(node);
+        }
     });
 }
 function dateTimeValue(value) {
@@ -348,4 +336,66 @@ function withTheProcess(){
             })
     });
 }
+
+function getChildNodeIdArr(node) {
+    var ts = [];
+    if (node.children) {
+        for (x in node.children) {
+            ts.push(node.children[x].nodeId);
+            if (node.children[x].children) {
+                var getNodeDieDai = getChildNodeIdArr(node.children[x]);
+                for (j in getNodeDieDai) {
+                    ts.push(getNodeDieDai[j]);
+                }
+            }
+        }
+    } else {
+        ts.push(node.nodeId);
+    }
+    return ts;
+}
+
+// 选中所有子节点时,选中父节点 取消子节点时取消父节点
+function setParentNodeCheck(node) {
+    var parentNode = $("#jstree").treeview("getNode", node.parentId);
+    if (parentNode.children) {
+        var checkedCount = 0;
+        for (x in parentNode.children) {
+            if (parentNode.children[x].state.checked) {
+                checkedCount++;
+            } else {
+                break;
+            }
+        }
+        if (checkedCount == parentNode.children.length) {  //如果子节点全部被选 父全选
+            $("#jstree").treeview("checkNode", parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        } else {   //如果子节点未全部被选 父未全选
+            $('#jstree').treeview('uncheckNode', parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        }
+    }
+}
+
+// 取消父节点时 取消所有子节点
+function setChildNodeUncheck(node) {
+    if (node.children) {
+        var ts = [];    //当前节点子集中未被选中的集合
+        for (x in node.children) {
+            if (!node.children[x].state.checked) {
+                ts.push(node.children[x].nodeId);
+            }
+            if (node.children[x].nodes) {
+                var getNodeDieDai = node.children[x];
+                console.log(getNodeDieDai);
+                for (j in getNodeDieDai) {
+                    if (!getNodeDieDai.state.checked) {
+                        ts.push(getNodeDieDai[j]);
+                    }
+                }
+            }
+        }
+    }
+    return ts;
+}
 </script>

+ 6 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionManageAct.jsp

@@ -17,6 +17,12 @@
     <div class="row">
         <%--未安排计划的树形--%>
         <div class="col-sm-3 col-md-3">
+            <div>
+                <label>
+                    <input type="input" class="form-control" id="input-search" style="width: 150px;float: left">
+                    <button type="button" class="btn btn-success select-node" id="btn-search" style="float: left" >搜索</button>
+                </label>
+            </div>
             <div id="jstree" style="height:400px;overflow:auto;"></div>
         </div>
         <div  class="col-sm-9 col-md-9 animated fadeInRight">

+ 84 - 80
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageForm.js

@@ -43,41 +43,6 @@
                     silent : false//设置初始化节点关闭
                 });
             });
-            $.getJSON("${ctx}/sg/managementCenter/constructionProject/treeData",function(data){
-                jstreeTime(data)
-            });
-            //搜索
-            var search1 = function(e) {
-                var pattern = $.trim($('#input-search1').val());
-                var options = {
-                    ignoreCase: $('#chk-ignore-case').is(':checked'),
-                    exactMatch: $('#chk-exact-match').is(':checked'),
-                    revealResults: $('#chk-reveal-results').is(':checked')
-                };
-                $('#jstreeTime').treeview('search', [ $.trim($('#input-search1').val()), { ignoreCase: false, exactMatch: false } ]);
-                var results = $('#jstreeTime').treeview('search', [ pattern, options ]);
-            }
-            $('#btn-search1').on('click', search1);
-            $('#btn-clear-search1').on('click', function (e) {
-                $('#jstreeTime').treeview('clearSearch');
-                $('#input-search1').val('');
-                $('#jstreeTime').treeview('collapseAll', {
-                    silent : false//设置初始化节点关闭
-                });
-            });
-            $('#selectId1').click(function () {
-                var object = $('#jstreeTime').treeview('getChecked');
-                if (object.length<1){
-                    jp.error("请选择项目!");
-                    return false;
-                }
-                var str = "";
-                for (var  i = 0; i < object.length; i++) {
-                    str+=object[i].id+",";
-                }
-                var sureStr  = str.substring(0,str.length-1);
-                minus(sureStr);
-            })
             //表格初始化
             $('#table').bootstrapTable({
                 //请求方法
@@ -192,21 +157,41 @@
             levels: 1,
             highlightSelected:false,
             showCheckbox:true,
-        });
-    }
-    function jstreeTime(date) {
-        $('#jstreeTime').treeview({
-            data: date,
-            levels: 1,
-            highlightSelected:false,
-            showCheckbox:true,
-            onNodeSelected: function(event, treeNode) {
-                var id = treeNode.id;
-                jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
+            onNodeChecked: function (event, node) { //选中节点
+                var selectNodes = getChildNodeIdArr(node); //获取所有子节点
+                if (selectNodes) { //子节点不为空,则选中所有子节点
+                    $('#jstree').treeview('checkNode', [selectNodes, { silent: true }]);
+                }
+                // var parentNode = $("#jstree").treeview("getNode", node.parentId);
+                // setParentNodeCheck(node);
             },
-
+            onNodeUnchecked: function (event, node) { //取消选中节点
+                // 取消父节点 子节点取消
+                var selectNodes = setChildNodeUncheck(node); //获取未被选中的子节点
+                var childNodes = getChildNodeIdArr(node);    //获取所有子节点
+                if (selectNodes && selectNodes.length == 0) { //有子节点且未被选中的子节点数目为0,则取消选中所有子节点
+                    $('#tree').treeview('uncheckNode', [childNodes, { silent: true }]);
+                }
+                // 取消节点 父节点取消
+                var parentNode = $("#jstree").treeview("getNode", node.parentId);  //获取父节点
+                var selectNodes = getChildNodeIdArr(node);
+                setParentNodeCheck(node);
+            }
         });
     }
+    // function jstreeTime(date) {
+    //     $('#jstreeTime').treeview({
+    //         data: date,
+    //         levels: 1,
+    //         highlightSelected:false,
+    //         showCheckbox:true,
+    //         onNodeSelected: function(event, treeNode) {
+    //             var id = treeNode.id;
+    //             jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
+    //         },
+    //
+    //     });
+    // }
     function dateTimeValue(value) {
         if (value != '1'){
             $("#dateTimeId").val(value);
@@ -271,46 +256,65 @@
             return row.id
         });
     }
-function OnTreeNodeChecked()
-{
-    var ele = event.srcElement;
-    alert(ele);
-    alert(ele.type);
-    if(ele.type=='checkbox')
-    {
-        var childrenDivID = ele.id.replace('CheckBox','Nodes');
-        var div = document.getElementById(childrenDivID);
-        if(div!=null)
-        {
-            var checkBoxs = div.getElementsByTagName('INPUT');
-            for(var i=0;i<checkBoxs.length;i++)
-            {
-                if(checkBoxs[i].type=='checkbox')
-                    checkBoxs[i].checked=ele.checked;
+function getChildNodeIdArr(node) {
+    var ts = [];
+    if (node.children) {
+        for (x in node.children) {
+            ts.push(node.children[x].nodeId);
+            if (node.children[x].children) {
+                var getNodeDieDai = getChildNodeIdArr(node.children[x]);
+                for (j in getNodeDieDai) {
+                    ts.push(getNodeDieDai[j]);
+                }
+            }
+        }
+    } else {
+        ts.push(node.nodeId);
+    }
+    return ts;
+}
+
+// 选中所有子节点时,选中父节点 取消子节点时取消父节点
+function setParentNodeCheck(node) {
+    var parentNode = $("#jstree").treeview("getNode", node.parentId);
+    if (parentNode.children) {
+        var checkedCount = 0;
+        for (x in parentNode.children) {
+            if (parentNode.children[x].state.checked) {
+                checkedCount++;
+            } else {
+                break;
             }
         }
-        OnTreeNodeChildChecked(ele);
+        if (checkedCount == parentNode.children.length) {  //如果子节点全部被选 父全选
+            $("#jstree").treeview("checkNode", parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        } else {   //如果子节点未全部被选 父未全选
+            $('#jstree').treeview('uncheckNode', parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        }
     }
 }
 
-function OnTreeNodeChildChecked(ele)
-{
-    //递归处理
-    var parentDiv=ele.parentElement.parentElement.parentElement.parentElement.parentElement;
-    var parentChkBox=document.getElementById(parentDiv.id.replace('Nodes','CheckBox'));
-    if(parentChkBox!=null)
-    {
-        var ChildsChkAll=true;
-        var Boxs = parentDiv.getElementsByTagName('INPUT');
-        for(var i=0;i<Boxs.length;i++)
-        {
-            if(Boxs[i].type=='checkbox'&&Boxs[i].checked==false)
-            {
-                ChildsChkAll=false;
+// 取消父节点时 取消所有子节点
+function setChildNodeUncheck(node) {
+    if (node.children) {
+        var ts = [];    //当前节点子集中未被选中的集合
+        for (x in node.children) {
+            if (!node.children[x].state.checked) {
+                ts.push(node.children[x].nodeId);
+            }
+            if (node.children[x].nodes) {
+                var getNodeDieDai = node.children[x];
+                console.log(getNodeDieDai);
+                for (j in getNodeDieDai) {
+                    if (!getNodeDieDai.state.checked) {
+                        ts.push(getNodeDieDai[j]);
+                    }
+                }
             }
         }
-        parentChkBox.checked=ChildsChkAll;
-        OnTreeNodeChildChecked(parentChkBox);
     }
+    return ts;
 }
 </script>

+ 7 - 5
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageForm.jsp

@@ -25,11 +25,13 @@
         <%--未安排计划的树形--%>
         <div class="col-sm-3 col-md-2">
             <%--<input type="text" id="input-search" class="">--%>
-            <%--<div style="height: 100px">--%>
-                <%--<input type="input" class="form-control" id="input-select-node" style="width: 100px" value="">--%>
-                <%--<button type="button" class="btn btn-success select-node" id="btn-select-node" >搜索</button>--%>
-            <%--</div>--%>
-            <div id="jstree" style="height:400px;overflow:auto;"></div>
+            <div>
+                <label>
+                <input type="input" class="form-control" id="input-search" style="width: 150px;float: left">
+                <button type="button" class="btn btn-success select-node" id="btn-search" style="float: left" >搜索</button>
+                </label>
+            </div>
+            <div id="jstree" style="height:400px;overflow:auto;margin-top: 10px;margin-top: 2px"></div>
         </div>
         <div  class="col-sm-9 col-md-10 animated fadeInRight">
             <!-- 工具栏 -->