src/main/java/zy/cloud/wms/common/utils/TreeUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/common/web/BaseController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/zy/cloud/wms/manager/controller/NodeController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/nodeTree.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/locDetl/locDetl.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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); } } 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 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); } } src/main/webapp/static/js/nodeTree.js
New file @@ -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) } 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>