<!DOCTYPE html> 
 | 
<html lang="en"> 
 | 
<head> 
 | 
    <meta charset="utf-8"> 
 | 
    <title></title> 
 | 
    <meta name="renderer" content="webkit"> 
 | 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
 | 
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
 | 
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> 
 | 
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> 
 | 
    <link rel="stylesheet" href="../../static/css/cool.css" media="all"> 
 | 
    <style> 
 | 
        #detail { 
 | 
            padding: 25px 30px 0 0; 
 | 
        } 
 | 
        .ew-tree-table-box { 
 | 
            height: 100%; 
 | 
        } 
 | 
    </style> 
 | 
</head> 
 | 
<body> 
 | 
  
 | 
<!-- 正文开始 --> 
 | 
<div class="layui-fluid"> 
 | 
    <div class="layui-card"> 
 | 
        <div class="layui-card-body"> 
 | 
            <!-- 数据表格 --> 
 | 
            <table id="node"></table> 
 | 
        </div> 
 | 
    </div> 
 | 
</div> 
 | 
  
 | 
<script type="text/html" id="toolbar"> 
 | 
    <div class="layui-btn-container" style="width: 100%"> 
 | 
        <button lay-event="add" class="layui-btn layui-btn-sm layui-btn-normal icon-btn"><i class="layui-icon"></i>添加</button>  
 | 
        <button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon"></i>删除</button> 
 | 
        <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="printBatch">批量打印</button> 
 | 
        <!-- 商品/物料 数据中心 --> 
 | 
        <div class="dropdown-menu" style="margin-left: 0"> 
 | 
            <button class="layui-btn layui-btn-sm icon-btn layui-btn-primary" style="margin-top: 2px"> 数据同步 <i class="layui-icon layui-icon-drop"></i></button> 
 | 
            <ul class="dropdown-menu-nav dark"> 
 | 
                <div class="dropdown-anchor"></div> 
 | 
                <li class="title">1st menu</li> 
 | 
                <li><a onclick="excelMouldDownload()" style="font-size: 12px"><i class="layui-icon layui-icon-template-1"></i>模板下载</a></li> 
 | 
                <li><a onclick="importExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-upload"></i>导入 Excel</a></li> 
 | 
                <li style="display: none"><input id="importExcel" type="file" onchange="upload(this)" ></li> 
 | 
                <hr> 
 | 
                <li class="title">2nd menu</li> 
 | 
                <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>导出 Excel</a></li> 
 | 
            </ul> 
 | 
        </div> 
 | 
    </div> 
 | 
</script> 
 | 
  
 | 
<script type="text/html" id="typeTpl"> 
 | 
    {{# if( d.type === 1){ }} 
 | 
    <span name="type" class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>仓库</span> 
 | 
    {{# } else if(d.type === 2){ }} 
 | 
    <span name="type" class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>库区</span> 
 | 
    {{# } else if(d.type === 3){ }} 
 | 
    <span name="type" class="layui-badge layui-badge-green" ><span style="display: none">{{d.number}}</span>货位</span> 
 | 
    {{# } else { }} 
 | 
    <span name="type" class="layui-badge layui-badge-gray" ><span style="display: none">{{d.number}}</span>其他</span> 
 | 
    {{# } }} 
 | 
</script> 
 | 
  
 | 
<script type="text/html" id="operate"> 
 | 
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a> 
 | 
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-del" lay-event="del">删除</a> 
 | 
</script> 
 | 
  
 | 
<!-- 表单弹窗 --> 
 | 
<script type="text/html" id="editDialog"> 
 | 
    <form id="detail" lay-filter="detail" class="layui-form"> 
 | 
        <input name="id" type="hidden"> 
 | 
        <input name="uuid" type="hidden"> 
 | 
        <input name="path" type="hidden"> 
 | 
        <input name="pathName" type="hidden"> 
 | 
        <input name="level" type="hidden"> 
 | 
        <input name="sort" type="hidden"> 
 | 
        <input name="leading" type="hidden"> 
 | 
        <input name="barcode" type="hidden"> 
 | 
        <input name="major" type="hidden"> 
 | 
        <input name="createTime$" type="hidden"> 
 | 
        <input name="createBy" type="hidden"> 
 | 
        <input name="updateTime$" type="hidden"> 
 | 
        <input name="updateBy" type="hidden"> 
 | 
        <div class="layui-row"> 
 | 
            <div class="layui-col-md6"> 
 | 
                <div class="layui-form-item"> 
 | 
                    <label class="layui-form-label">上级菜单</label> 
 | 
                    <div class="layui-input-block"> 
 | 
                        <div id="nodeParentSel" class="ew-xmselect-tree"></div> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="layui-form-item"> 
 | 
                    <label class="layui-form-label layui-form-required">类型</label> 
 | 
                    <div class="layui-input-block"> 
 | 
                        <select name="type" lay-vertype="tips" lay-verify="required" required=""> 
 | 
                            <option value="">请选择类型</option> 
 | 
                            <option value="1">仓库</option> 
 | 
                            <option value="2">库区</option> 
 | 
                            <option value="3">货位</option> 
 | 
                        </select> 
 | 
                    </div> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="layui-col-md6"> 
 | 
                <div class="layui-form-item"> 
 | 
                    <label class="layui-form-label layui-form-required">编号/名称</label> 
 | 
                    <div class="layui-input-block"> 
 | 
                        <input name="name" placeholder="请输入编号/名称" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="layui-form-item"> 
 | 
                    <label class="layui-form-label">备注</label> 
 | 
                    <div class="layui-input-block"> 
 | 
                        <input name="memo" placeholder="请输入备注" class="layui-input"> 
 | 
                    </div> 
 | 
                </div> 
 | 
            </div> 
 | 
        </div> 
 | 
        <hr class="layui-bg-gray"> 
 | 
        <div class="layui-form-item text-right"> 
 | 
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button> 
 | 
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> 
 | 
        </div> 
 | 
    </form> 
 | 
</script> 
 | 
<!-- 打印模板 --> 
 | 
<script type="text/template" id="locPrintTpl"> 
 | 
    {{#each data}} 
 | 
    <img class="template-code" src="{{this.barcodeUrl}}" width="100%"> 
 | 
    <div style="letter-spacing: 2px;margin-top: 1px; text-align: center"> 
 | 
        <span>{{this.item}}</span> 
 | 
    </div> 
 | 
    {{/each}} 
 | 
</script> 
 | 
<div id="printBox" style="display: none;"></div> 
 | 
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> 
 | 
<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script> 
 | 
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> 
 | 
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> 
 | 
<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> 
 | 
    var insTb; 
 | 
    var admin; 
 | 
    layui.config({ 
 | 
        base: baseUrl + "/static/layui/lay/modules/" 
 | 
    }).extend({ 
 | 
        dropdown: 'dropdown/dropdown', 
 | 
    }).use(['form','treeTable', 'admin', 'xmSelect', 'dropdown', 'element'], function() { 
 | 
        var $ = layui.jquery; 
 | 
        var layer = layui.layer; 
 | 
        var form = layui.form; 
 | 
        admin = layui.admin; 
 | 
        var treeTable = layui.treeTable; 
 | 
        var xmSelect = layui.xmSelect; 
 | 
        var tbDataList = []; 
 | 
  
 | 
        insTb = treeTable.render({ 
 | 
            elem: '#node', 
 | 
            url: baseUrl+'/node/list/tree/auth', 
 | 
            headers: {token: localStorage.getItem('token')}, 
 | 
            height: 'full-200', 
 | 
            toolbar: '#toolbar', 
 | 
            tree: { 
 | 
                iconIndex: 2,           // 折叠图标显示在第几列 
 | 
                isPidData: true,        // 是否是id、pid形式数据 
 | 
                idName: 'id',           // id字段名称 
 | 
                pidName: 'parentId'     // pid字段名称 
 | 
            }, 
 | 
            cols: [[ 
 | 
                {type: 'checkbox'} 
 | 
                ,{type: 'numbers'} 
 | 
                ,{field: 'name', align: 'left',title: '编号/名称', minWidth: 150} 
 | 
                // ,{field: 'uuid', left: 'center',title: '编号/名称', minWidth: 150} 
 | 
                ,{field: 'type$', align: 'center',title: '类型', templet: '#typeTpl'} 
 | 
                // ,{field: 'leading', align: 'center',title: '负责人'} 
 | 
                // ,{field: 'img', align: 'center',title: '图片', hide: true} 
 | 
                // ,{field: 'brief', align: 'center',title: '简要描述'} 
 | 
                // ,{field: 'count', align: 'center',title: '数量'} 
 | 
                // ,{field: 'sort', align: 'center',title: '排序'} 
 | 
                ,{field: 'status$', align: 'center',title: '状态', hide: true} 
 | 
                ,{field: 'updateTime$', align: 'center',title: '修改时间'} 
 | 
                ,{field: 'updateBy$', align: 'center',title: '修改人员'} 
 | 
                ,{field: 'memo', align: 'center',title: '备注', hide: true} 
 | 
  
 | 
                ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150} 
 | 
            ]], 
 | 
            done: function (data) { 
 | 
                $('.ew-tree-table-box').css('height', '100%'); 
 | 
                insTb.expandAll(); 
 | 
                tbDataList = data; 
 | 
            } 
 | 
        }); 
 | 
  
 | 
        /* 表格头工具栏点击事件 */ 
 | 
        treeTable.on('toolbar(node)', function (obj) { 
 | 
            var checkRows = insTb.checkStatus(); 
 | 
            if (obj.event === 'add') { // 添加 
 | 
                showEditModel(); 
 | 
            } else if (obj.event === 'del') { // 删除 
 | 
                if (checkRows.length === 0) { 
 | 
                    layer.msg('请选择要删除的数据', {icon: 2}); 
 | 
                    return; 
 | 
                } 
 | 
                var ids = checkRows.map(function (d) { 
 | 
                    if (!d.LAY_INDETERMINATE) { 
 | 
                        return d.id; 
 | 
                    } else { 
 | 
                        return null; 
 | 
                    } 
 | 
                }); 
 | 
                doDel({ids: ids}); 
 | 
            } else if (obj.event === 'printBatch') { 
 | 
                if (checkRows.length === 0) { 
 | 
                    layer.msg('请选择要打印的数据', {icon: 2}); 
 | 
                    return; 
 | 
                } 
 | 
                var printContent = checkRows.map(function (d) { 
 | 
                    if (!d.LAY_INDETERMINATE && d.type === 3) { 
 | 
                        return d.name; 
 | 
                    } else { 
 | 
                        return null; 
 | 
                    } 
 | 
                }); 
 | 
                printBatch(printContent, 1); 
 | 
            } 
 | 
        }); 
 | 
  
 | 
        /* 表格操作列点击事件 */ 
 | 
        treeTable.on('tool(node)', function (obj) { 
 | 
            if (obj.event === 'edit') { // 修改 
 | 
                showEditModel(obj.data); 
 | 
            } else if (obj.event === 'del') { // 删除 
 | 
                doDel(obj); 
 | 
            } 
 | 
        }); 
 | 
  
 | 
        /* 显示表单弹窗 */ 
 | 
        function showEditModel(mData) { 
 | 
            admin.open({ 
 | 
                type: 1, 
 | 
                area: '600px', 
 | 
                title: (mData ? '修改' : '添加') + '货位', 
 | 
                content: $('#editDialog').html(), 
 | 
                success: function (layero, dIndex) { 
 | 
                    // 回显表单数据 
 | 
                    form.val('detail', mData); 
 | 
                    // 表单提交事件 
 | 
                    form.on('submit(editSubmit)', function (data) { 
 | 
                        data.field.parentId = insXmSel.getValue('valueStr'); 
 | 
                        var loadIndex = layer.load(2); 
 | 
                        $.ajax({ 
 | 
                            url: baseUrl+"/node/"+(mData?'update':'add')+"/auth", 
 | 
                            headers: {'token': localStorage.getItem('token')}, 
 | 
                            data: data.field, 
 | 
                            method: 'POST', 
 | 
                            success: function (res) { 
 | 
                                layer.close(loadIndex); 
 | 
                                if (res.code === 200){ 
 | 
                                    layer.close(dIndex); 
 | 
                                    layer.msg(res.msg, {icon: 1}); 
 | 
                                    insTb.refresh(); 
 | 
                                } else if (res.code === 403){ 
 | 
                                    top.location.href = baseUrl+"/"; 
 | 
                                }else { 
 | 
                                    layer.msg(res.msg, {icon: 2}); 
 | 
                                } 
 | 
                            } 
 | 
                        }) 
 | 
                        return false; 
 | 
                    }); 
 | 
                    // 渲染下拉树 
 | 
                    var insXmSel = xmSelect.render({ 
 | 
                        el: '#nodeParentSel', 
 | 
                        height: '250px', 
 | 
                        data: insTb.options.data, 
 | 
                        initValue: mData ? [mData.parentId] : [], 
 | 
                        model: {label: {type: 'text'}}, 
 | 
                        prop: { 
 | 
                            name: 'name', 
 | 
                            value: 'id' 
 | 
                        }, 
 | 
                        radio: true, 
 | 
                        clickClose: true, 
 | 
                        tree: { 
 | 
                            show: true, 
 | 
                            indent: 15, 
 | 
                            strict: false, 
 | 
                            expandedKeys: true 
 | 
                        } 
 | 
                    }); 
 | 
                    // 弹窗不出现滚动条 
 | 
                    $(layero).children('.layui-layer-content').css('overflow', 'visible'); 
 | 
                    layui.form.render('select'); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        /* 删除 */ 
 | 
        function doDel(obj) { 
 | 
            layer.confirm('确定要删除选中数据吗?', { 
 | 
                skin: 'layui-layer-admin', 
 | 
                shade: .1 
 | 
            }, function (i) { 
 | 
                layer.close(i); 
 | 
                var loadIndex = layer.load(2); 
 | 
                var ids; 
 | 
                if (obj.data) { 
 | 
                    ids = []; 
 | 
                    ids[0] = obj.data.id; 
 | 
                } else { 
 | 
                    ids = obj.ids; 
 | 
                } 
 | 
                $.ajax({ 
 | 
                    url: baseUrl+"/node/delete0/auth", 
 | 
                    headers: {'token': localStorage.getItem('token')}, 
 | 
                    data: {ids: ids}, 
 | 
                    method: 'POST', 
 | 
                    success: function (res) { 
 | 
                        layer.close(loadIndex); 
 | 
                        if (res.code === 200){ 
 | 
                            layer.msg(res.msg, {icon: 1}); 
 | 
                            insTb.refresh(); 
 | 
                        } else if (res.code === 403){ 
 | 
                            top.location.href = baseUrl+"/"; 
 | 
                        } else { 
 | 
                            layer.msg(res.msg, {icon: 2}); 
 | 
                        } 
 | 
                    } 
 | 
                }) 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        // 批量打印 
 | 
        function printBatch(printMsgList, type) { 
 | 
            var data = []; 
 | 
            for (var i = 0; i<printMsgList.length; i ++) { 
 | 
                if (printMsgList[i] != null && printMsgList[i] !== '') { 
 | 
                    var barcodeUrl; 
 | 
                    if (type === 1) { 
 | 
                        barcodeUrl = baseUrl+"/barcode/qrcode/auth?type="+type+"¶m="+printMsgList[i]+"&width="+200+"&height="+70; 
 | 
                    } else { 
 | 
                        barcodeUrl = baseUrl+"/barcode/qrcode/auth?type="+type+"¶m="+printMsgList[i]+"&width="+400+"&height="+180; 
 | 
                    } 
 | 
                    data.push({ 
 | 
                        item: printMsgList[i], 
 | 
                        barcodeUrl: barcodeUrl 
 | 
                    }) 
 | 
                } 
 | 
            } 
 | 
            var tpl = $('#locPrintTpl').html(); 
 | 
            var template = Handlebars.compile(tpl); 
 | 
            var html = template({data: data}); 
 | 
            var box = $("#printBox"); 
 | 
            box.html(html); 
 | 
            box.show(); 
 | 
            box.print({mediaPrint:true}); 
 | 
            box.hide(); 
 | 
        } 
 | 
  
 | 
    }); 
 | 
  
 | 
    // excel导入模板下载 
 | 
    function excelMouldDownload(){ 
 | 
        layer.load(1, {shade: [0.1,'#fff']}); 
 | 
        location.href = baseUrl + "/node/excel/import/mould"; 
 | 
        layer.closeAll('loading'); 
 | 
    } 
 | 
  
 | 
    // excel导入 
 | 
    function importExcel() { 
 | 
        $("#importExcel").trigger("click"); 
 | 
    } 
 | 
    function upload(obj){ 
 | 
        if(!obj.files) { 
 | 
            return; 
 | 
        } 
 | 
        var file = obj.files[0]; 
 | 
        admin.confirm('确认同步 [' + file.name +'] 文件吗?', function (index) { 
 | 
            layer.load(1, {shade: [0.1,'#fff']}); 
 | 
            var url = baseUrl + "/node/excel/import/auth"; 
 | 
            var form = new FormData(); 
 | 
            form.append("file", file); 
 | 
            xhr = new XMLHttpRequest(); 
 | 
            xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。 
 | 
            xhr.setRequestHeader('token', localStorage.getItem('token')); 
 | 
            xhr.onload = uploadComplete; //请求完成 
 | 
            xhr.onerror =  uploadFailed; //请求失败 
 | 
            xhr.onloadend = function () { // // 上传完成重置文件流 
 | 
                layer.closeAll('loading'); 
 | 
                $("#importExcel").val(""); 
 | 
            }; 
 | 
            // xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】 
 | 
            xhr.upload.onloadstart = function(){//上传开始执行方法 
 | 
                ot = new Date().getTime();   //设置上传开始时间 
 | 
                oloaded = 0;//设置上传开始时,以上传的文件大小为0 
 | 
            }; 
 | 
            xhr.send(form); 
 | 
        }, function(index){ 
 | 
            $("#importExcel").val(""); 
 | 
        }); 
 | 
    } 
 | 
    function uploadComplete(evt) { 
 | 
        var res = JSON.parse(evt.target.responseText); 
 | 
        if(res.code === 200) { 
 | 
            layer.msg(res.msg, {icon: 1}); 
 | 
            insTb.refresh(); 
 | 
        } else { 
 | 
            layer.msg(res.msg, {icon: 2}); 
 | 
        } 
 | 
    } 
 | 
    function uploadFailed(evt) { 
 | 
        var res = JSON.parse(evt.target.responseText); 
 | 
        layer.msg(res.msg, {icon: 2}); 
 | 
    } 
 | 
  
 | 
    // excel导出 
 | 
    function exportExcel() { 
 | 
  
 | 
    } 
 | 
  
 | 
</script> 
 | 
</body> 
 | 
</html> 
 |