#
luxiaotao1123
2021-02-27 7152dea94bcf2e4d275a2154161d3663dcf9fa49
#
1个文件已添加
4个文件已修改
271 ■■■■■ 已修改文件
src/main/java/zy/cloud/wms/common/utils/TreeUtils.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/web/BaseController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/controller/NodeController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/nodeTree.js 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl.html 109 ●●●● 补丁 | 查看 | 原始文档 | 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-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 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 class="layui-input" type="text" name="loc_no" placeholder="货位编号" autocomplete="off">
                                <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 class="layui-input" type="text" name="matnr" placeholder="商品编号" autocomplete="off">
                                <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 class="layui-input" type="text" name="maktx" placeholder="商品名称" autocomplete="off">
                                <input name="maktx" class="layui-input" placeholder="输入商品名称"/>
        </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 class="layui-inline">&emsp;
                            <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                                <i class="layui-icon">&#xe615;</i>搜索
                            </button>
    </div>
</div>
<!-- 表格 -->
<div class="layui-form">
    <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table>
</div>
            </div>
        </div>
    </div>
</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>