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">  + <button class="layui-btn icon-btn" lay-filter="search" lay-submit> + <i class="layui-icon"></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> +<!--<!– 鎼滅储鏍� –>--> +<!--<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>--> + +<!-- <!– 寰呮坊鍔� –>--> +<!-- <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>--> <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