From 7152dea94bcf2e4d275a2154161d3663dcf9fa49 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 27 二月 2021 09:30:05 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/locDetl/locDetl.html                        |  131 +++++++++++++++++++++-----
 src/main/webapp/static/js/nodeTree.js                             |   86 +++++++++++++++++
 src/main/java/zy/cloud/wms/manager/controller/NodeController.java |   19 +++
 src/main/java/zy/cloud/wms/common/utils/TreeUtils.java            |   45 +++++++++
 src/main/java/zy/cloud/wms/common/web/BaseController.java         |   12 ++
 5 files changed, 268 insertions(+), 25 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/common/utils/TreeUtils.java b/src/main/java/zy/cloud/wms/common/utils/TreeUtils.java
index 43f36e7..717c8dd 100644
--- a/src/main/java/zy/cloud/wms/common/utils/TreeUtils.java
+++ b/src/main/java/zy/cloud/wms/common/utils/TreeUtils.java
@@ -4,7 +4,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Component;
+import zy.cloud.wms.manager.entity.Node;
 import zy.cloud.wms.manager.entity.Tag;
+import zy.cloud.wms.manager.service.NodeService;
 import zy.cloud.wms.manager.service.TagService;
 
 import java.util.*;
@@ -18,6 +20,8 @@
 
     @Autowired
     private TagService tagService;
+    @Autowired
+    private NodeService nodeService;
 
     /**
      * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯
@@ -41,6 +45,27 @@
     }
 
     /**
+     * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯
+     */
+    @Cacheable(cacheNames="nodeTree",key="#id")
+    public ArrayList<Map> getNodeTree(String id){
+        ArrayList<Map> result = new ArrayList<>();
+        Node node = nodeService.selectById(id);
+        // 涓昏妭鐐�
+        Map<String, Object> map = new HashMap<>();
+        map.put("title", node.getName());
+        map.put("id", node.getId());
+        map.put("spread", true);
+        List<Map> childrens = new ArrayList<>();
+        map.put("children", childrens);
+        dealNode(node, childrens);
+        result.add(map);
+        // 寮�濮嬪鐞嗗瓧鑺傜偣
+//        deal(tag, childrens);
+        return result;
+    }
+
+    /**
      * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹�
      */
     public void deal(Tag parent, List<Map> list) {
@@ -60,6 +85,26 @@
         }
     }
 
+    /**
+     * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹�
+     */
+    public void dealNode(Node parent, List<Map> list) {
+        List<Node> nodes = nodeService.selectList(
+                new EntityWrapper<Node>()
+                        .eq("parent_id", parent.getId())
+                        .eq("status", "1"));
+        for (Node node : nodes) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("title", node.getName());
+            map.put("id", node.getId());
+            map.put("spread", true);
+            List<Map> childrens = new ArrayList<>();
+            map.put("children", childrens);
+            dealNode(node, childrens);
+            list.add(map);
+        }
+    }
+
 
 
 
diff --git a/src/main/java/zy/cloud/wms/common/web/BaseController.java b/src/main/java/zy/cloud/wms/common/web/BaseController.java
index 4321d81..1bb099b 100644
--- a/src/main/java/zy/cloud/wms/common/web/BaseController.java
+++ b/src/main/java/zy/cloud/wms/common/web/BaseController.java
@@ -9,7 +9,9 @@
 import com.core.exception.CoolException;
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.beans.factory.annotation.Autowired;
+import zy.cloud.wms.manager.entity.Node;
 import zy.cloud.wms.manager.entity.Tag;
+import zy.cloud.wms.manager.service.NodeService;
 import zy.cloud.wms.manager.service.TagService;
 import zy.cloud.wms.system.entity.User;
 import zy.cloud.wms.system.service.UserService;
@@ -32,6 +34,8 @@
     private UserService userService;
     @Autowired
     private TagService tagService;
+    @Autowired
+    private NodeService nodeService;
 
     protected Long getUserId(){
         return Long.parseLong(String.valueOf(request.getAttribute("userId")));
@@ -62,6 +66,14 @@
         return tag;
     }
 
+    protected Node getOriginNode(){
+        Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("level", 0));
+        if (node == null) {
+            throw new CoolException("搴撳尯鏁版嵁閿欒");
+        }
+        return node;
+    }
+
     /**
      * 鍒嗛〉缁勮
      * @param pageNumber
diff --git a/src/main/java/zy/cloud/wms/manager/controller/NodeController.java b/src/main/java/zy/cloud/wms/manager/controller/NodeController.java
index 1a60a4a..c2ed398 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/NodeController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/NodeController.java
@@ -12,11 +12,14 @@
 import com.core.common.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import zy.cloud.wms.common.utils.ListUtils;
+import zy.cloud.wms.common.utils.TreeUtils;
 import zy.cloud.wms.common.web.BaseController;
 import zy.cloud.wms.manager.entity.Node;
 import zy.cloud.wms.manager.service.NodeService;
 import zy.cloud.wms.manager.utils.NodeUtils;
 
+import java.io.IOException;
 import java.util.*;
 
 @RestController
@@ -24,6 +27,8 @@
 
     @Autowired
     private NodeService nodeService;
+    @Autowired
+    private TreeUtils treeUtils;
 
     @RequestMapping(value = "/node/{id}/auth")
     @ManagerAuth
@@ -175,4 +180,18 @@
         return R.ok().add(result);
     }
 
+    @PostMapping(value = "/node/tree/auth")
+    @ManagerAuth
+    public R tree(@RequestParam(required = false, defaultValue = "") String condition) throws IOException, ClassNotFoundException {
+        ArrayList<Map> tree = treeUtils.getNodeTree(String.valueOf(getOriginNode().getId()));
+        // 娣辨嫹璐�
+        List<Map> result = ListUtils.deepCopy(tree);
+        if (!Cools.isEmpty(condition)) {
+            treeUtils.remove(condition, result);
+            treeUtils.remove(condition, result);
+        }
+        return R.ok(result);
+    }
+
+
 }
diff --git a/src/main/webapp/static/js/nodeTree.js b/src/main/webapp/static/js/nodeTree.js
new file mode 100644
index 0000000..081cd25
--- /dev/null
+++ b/src/main/webapp/static/js/nodeTree.js
@@ -0,0 +1,86 @@
+var currentTemId;
+var currentTemName;
+var currentTemSsbm;
+var init = false;
+
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"  // 閰嶇疆妯″潡鎵�鍦ㄧ殑鐩綍
+}).use(['table','laydate', 'form', 'tree', 'xmSelect'], function() {
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var tree = layui.tree;
+    var xmSelect = layui.xmSelect;
+    var selObj, treeData;  // 宸︽爲閫変腑鏁版嵁
+
+    var organizationTree;
+    window.loadTree = function(condition){
+        var loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl+"/node/tree/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                'condition': condition
+            },
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+                    layer.close(loadIndex);
+                    // 鏍戝舰鍥�
+                    organizationTree = tree.render({
+                        elem: '#organizationTree',
+                        id: 'organizationTree',
+                        onlyIconControl: true,
+                        data: res.data,
+                        click: function (obj) {
+                            currentTemId = obj.data.id;
+                            currentTemName = obj.data.title.split(" - ")[0];
+                            currentTemSsbm = obj.data.title.split(" - ")[1];
+                            selObj = obj;
+                            $('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click');
+                            $(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click');
+                            tableIns.reload({
+                                where: {node_id: obj.data.id},
+                                page: {curr: 1}
+                            });
+                        }
+                    });
+                    treeData = res.data;
+                    if (isEmpty(condition) && init) {
+                        tableIns.reload({
+                            where: {node_id: ""},
+                            page: {curr: 1}
+                        });
+                    }
+                    if (!init) {
+                        init = true;
+                    }
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg)
+                }
+            }
+        })
+    }
+    loadTree();
+
+    /* 鏍戝舰鍥鹃噸缃� */
+    $('#treeReset').click(function () {
+        $("#condition").val("");
+        loadTree("");
+    })
+
+})
+
+function closeDialog() {
+    layer.closeAll();
+}
+
+/* 鏍戝舰鍥炬悳绱� */
+function findData(el) {
+    var condition = $(el).val();
+    loadTree(condition)
+}
\ No newline at end of file
diff --git a/src/main/webapp/views/locDetl/locDetl.html b/src/main/webapp/views/locDetl/locDetl.html
index c131a32..2487450 100644
--- a/src/main/webapp/views/locDetl/locDetl.html
+++ b/src/main/webapp/views/locDetl/locDetl.html
@@ -9,39 +9,119 @@
     <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
     <link rel="stylesheet" href="../../static/css/cool.css" media="all">
     <link rel="stylesheet" href="../../static/css/common.css" media="all">
+    <link rel="stylesheet" href="../../static/css/tree.css" media="all">
+    <style>
+        body {
+            color: #595959;
+            background-color: #f5f7f9;
+        }
+        .layui-fluid {
+            padding: 15px;
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            /*margin: 15px 0 35px 0;*/
+            width: 100%;
+            border-width: 1px;
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            height: calc(100vh - 160px);
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            margin: 0;
+        }
+    </style>
 </head>
 <body>
 
-<!-- 鎼滅储鏍� -->
-<div id="search-box" class="layui-form layui-card-header">
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="loc_no" placeholder="璐т綅缂栧彿" autocomplete="off">
+<div class="layui-fluid" style="padding-bottom: 0;">
+    <!-- 宸� -->
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md3">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <!-- 鏍戝伐鍏锋爮 -->
+                    <div class="layui-form toolbar" id="organizationTreeBar">
+                        <div class="layui-inline" style="max-width: 200px;">
+                            <input id="condition" onkeyup="findData(this)" type="text" class="layui-input" placeholder="璇疯緭鍏ュ叧閿瓧" autocomplete="off">
+                        </div>
+                        <div class="layui-inline">
+                            <button class="layui-btn icon-btn" id="treeReset">
+                                <i class="layui-icon layui-icon-close"></i>
+                            </button>
+                        </div>
+                    </div>
+                    <!-- 鏍� -->
+                    <div class="layui-form toolbar" id="organizationTree"></div>
+                </div>
+            </div>
         </div>
-    </div>
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿" autocomplete="off">
+        <!-- 鍙� -->
+        <div class="layui-col-md9">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <!-- 琛ㄦ牸宸ュ叿鏍�2 -->
+                    <div id="search-box" class="layui-form toolbar"  style="padding-top: 5px">
+                        <div class="layui-inline">
+                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">璐т綅缂栧彿:</label>
+                            <div class="layui-input-inline">
+                                <input name="loc_no" class="layui-input" placeholder="杈撳叆璐т綅缂栧彿"/>
+                            </div>
+                        </div>
+                        <div class="layui-inline">
+                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧缂栧彿:</label>
+                            <div class="layui-input-inline">
+                                <input name="matnr" class="layui-input" placeholder="杈撳叆鍟嗗搧缂栧彿"/>
+                            </div>
+                        </div>
+                        <div class="layui-inline">
+                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧鍚嶇О:</label>
+                            <div class="layui-input-inline">
+                                <input name="maktx" class="layui-input" placeholder="杈撳叆鍟嗗搧鍚嶇О"/>
+                            </div>
+                        </div>
+                        <div class="layui-inline">&emsp;
+                            <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                                <i class="layui-icon">&#xe615;</i>鎼滅储
+                            </button>
+                        </div>
+                    </div>
+                    <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table>
+                </div>
+            </div>
         </div>
-    </div>
-
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="maktx" placeholder="鍟嗗搧鍚嶇О" autocomplete="off">
-        </div>
-    </div>
-
-    <!-- 寰呮坊鍔� -->
-    <div id="data-search-btn" class="layui-btn-container layui-form-item">
-        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
-        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
     </div>
 </div>
 
-<!-- 琛ㄦ牸 -->
-<div class="layui-form">
-    <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table>
-</div>
+<!--&lt;!&ndash; 鎼滅储鏍� &ndash;&gt;-->
+<!--<div id="search-box" class="layui-form layui-card-header">-->
+<!--    <div class="layui-inline">-->
+<!--        <div class="layui-input-inline">-->
+<!--            <input class="layui-input" type="text" name="loc_no" placeholder="璐т綅缂栧彿" autocomplete="off">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="layui-inline">-->
+<!--        <div class="layui-input-inline">-->
+<!--            <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿" autocomplete="off">-->
+<!--        </div>-->
+<!--    </div>-->
+
+<!--    <div class="layui-inline">-->
+<!--        <div class="layui-input-inline">-->
+<!--            <input class="layui-input" type="text" name="maktx" placeholder="鍟嗗搧鍚嶇О" autocomplete="off">-->
+<!--        </div>-->
+<!--    </div>-->
+
+<!--    &lt;!&ndash; 寰呮坊鍔� &ndash;&gt;-->
+<!--    <div id="data-search-btn" class="layui-btn-container layui-form-item">-->
+<!--        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>-->
+<!--        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>-->
+<!--    </div>-->
+<!--</div>-->
+
+<!--&lt;!&ndash; 琛ㄦ牸 &ndash;&gt;-->
+<!--<div class="layui-form">-->
+<!--    <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table>-->
+<!--</div>-->
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
         <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
@@ -60,6 +140,7 @@
 <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/locDetl/locDetl.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/nodeTree.js" charset="utf-8"></script>
 
 <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
 

--
Gitblit v1.9.1