From 3b41d1fa6a657f4785ac03aab864da45b9ef274f Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期六, 09 九月 2023 15:06:01 +0800
Subject: [PATCH] #

---
 src/main/webapp/static/js/locDetlWarning/locDetlWarning.js |   10 
 src/main/webapp/views/home/map.html                        |    2 
 src/main/webapp/views/stockFreeze/stockFreeze.html         |  417 ++++++++++++++++++++++++
 src/main/java/com/zy/asrs/controller/NodeController.java   |   37 +
 src/main/webapp/static/js/stockFreeze/stockFreeze.js       |  533 +++++++++++++++++++++++++++++++
 5 files changed, 984 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/NodeController.java b/src/main/java/com/zy/asrs/controller/NodeController.java
index ee53d3a..a818f8c 100644
--- a/src/main/java/com/zy/asrs/controller/NodeController.java
+++ b/src/main/java/com/zy/asrs/controller/NodeController.java
@@ -481,17 +481,36 @@
 
     @RequestMapping(value = "/node/updateStatus")
     @ManagerAuth(memo = "搴撲綅鍐荤粨")
-    public R updateStockFreeze(Node node){
-        if (Cools.isEmpty(node) || null==node.getName()){
-            return R.error();
+    public R updateStockFreeze(@RequestParam String param){
+        List<Node> list = JSONArray.parseArray(param, Node.class);
+        if (Cools.isEmpty(list)){
+            return R.error("鏃犳暟鎹�");
         }
-        nodeService.updateStockFreeze(node.getName(), node.getStatus());
-        if (node.getStatus() == 0){
-            return R.ok(node.getName()+"鍐荤粨瀹屾垚");
-        }else {
-            return R.ok(node.getName()+"瑙e喕瀹屾垚");
-        }
+        for (Node node : list){
+            node.setStatus(0);
+            if (nodeService.updateStockFreeze(node.getName(), node.getStatus()) != 1){
+                return R.error(node.getName()+"鍐荤粨澶辫触");
+            }
 
+        }
+            return R.ok("鍐荤粨鎴愬姛");
+    }
+
+    @RequestMapping(value = "/node/updateDisStatus")
+    @ManagerAuth(memo = "搴撲綅鍐荤粨")
+    public R updateStockDisFreeze(@RequestParam String param){
+        List<Node> list = JSONArray.parseArray(param, Node.class);
+        if (Cools.isEmpty(list)){
+            return R.error("鏃犳暟鎹�");
+        }
+        for (Node node : list){
+            node.setStatus(1);
+            if (nodeService.updateStockFreeze(node.getName(), node.getStatus()) != 1){
+                return R.error(node.getName()+"瑙i櫎鍐荤粨澶辫触");
+            }
+
+        }
+        return R.ok("瑙e喕鎴愬姛");
     }
 
 }
diff --git a/src/main/webapp/static/js/locDetlWarning/locDetlWarning.js b/src/main/webapp/static/js/locDetlWarning/locDetlWarning.js
index 554699f..fd5c09a 100644
--- a/src/main/webapp/static/js/locDetlWarning/locDetlWarning.js
+++ b/src/main/webapp/static/js/locDetlWarning/locDetlWarning.js
@@ -31,15 +31,15 @@
         cellMinWidth: 50,
         cols: [[
             {field: 'locNo', align: 'center',title: '搴撲綅'}
-            ,{field: 'countAnfme', align: 'center',title: '搴撳瓨鏁伴噺'}
+            ,{field: 'countAnfme', align: 'center',title: '搴撳瓨鏁伴噺鎬昏'}
             ,{field: 'matnr', align: 'center',title: '搴撳瓨鏍囧彿'}
             ,{field: 'maktx', align: 'center',title: '搴撳瓨鍚嶇О'}
             ,{field: 'createTime$', align: 'center',title: '鍏ュ簱鏃堕棿'}
             ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-            ,{field: 'inventoryMax', align: 'center',title: '鏈�澶у簱瀛樻暟閲�'}
-            ,{field: 'inventoryMin', align: 'center',title: '鏈�灏忓簱瀛樻暟閲�'}
-            ,{field: 'inventoryAgeMax', align: 'center',title: '鏈�澶у湪搴撴椂闂�(澶�)'}
-            ,{field: 'diffTime', align: 'center',title: '褰撳墠鍦ㄥ簱鏃堕棿(澶�)'}
+            ,{field: 'inventoryMax', align: 'center',title: '搴撳瓨涓婇檺'}
+            ,{field: 'inventoryMin', align: 'center',title: '搴撳瓨涓嬬嚎'}
+            ,{field: 'inventoryAgeMax', align: 'center',title: '搴撻緞涓婇檺(澶�)'}
+            ,{field: 'diffTime', align: 'center',title: '搴撻緞(澶�)'}
         ]
         ],
         request: {
diff --git a/src/main/webapp/static/js/stockFreeze/stockFreeze.js b/src/main/webapp/static/js/stockFreeze/stockFreeze.js
new file mode 100644
index 0000000..eb5395d
--- /dev/null
+++ b/src/main/webapp/static/js/stockFreeze/stockFreeze.js
@@ -0,0 +1,533 @@
+var pageCurr;
+var printMatCodeNos = [];
+var admin;
+function getCol() {
+    var cols = [
+        {type: 'checkbox'}
+        ,{field: 'tagId$', align: 'center',title: '褰掔被', templet: '#tagTpl'}
+    ];
+    cols.push.apply(cols, matCols);
+    cols.push(
+
+        {fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+    )
+    return cols;
+}
+
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+    dropdown: 'dropdown/dropdown',
+}).use(['table','laydate', 'form', 'treeTable', 'admin', 'xmSelect', 'dropdown', 'element'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    admin = layui.admin;
+    var treeTable = layui.treeTable;
+    var xmSelect = layui.xmSelect;
+
+    // 鍟嗗搧鍒嗙被鏁版嵁
+    var insTb = treeTable.render({
+        elem: '#tag',
+        url: baseUrl+'/node/list/auth',
+        headers: {token: localStorage.getItem('token')},
+        tree: {
+            iconIndex: 2,           // 鎶樺彔鍥炬爣鏄剧ず鍦ㄧ鍑犲垪
+            isPidData: true,        // 鏄惁鏄痠d銆乸id褰㈠紡鏁版嵁
+            idName: 'id',           // id瀛楁鍚嶇О
+            pidName: 'parentId'     // pid瀛楁鍚嶇О
+        },
+        cols: [],
+        done: function (data) {
+            $('.ew-tree-table-box').css('height', '100%');
+            insTb.expandAll();
+        }
+    });
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#mat',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/node/list/auth',
+        page: true,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-105',
+        cols: [[
+            {type: 'checkbox'},
+            {field: 'name', align: 'center',title: '搴撲綅鍚�', hide: false},
+            {field: 'parentName', align: 'center',title: '搴撳尯', hide: false},
+            {field: 'createBy$', align: 'center',title: '鍒涘缓浜�', hide: false},
+            {field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿', hide: false},
+            {field: 'status', align: 'center',title: '搴撲綅鍐荤粨', templet: '#stockFreezeTpl'},
+            {field: 'type$', align: 'center',title: '绫诲瀷', templet: '#tagTpl', hide: false}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            tableData = table.cache.mat;
+            pageCurr=curr;
+            limit();
+            form.on('checkbox(tableCheckbox)', function (data) {
+                var _index = $(data.elem).attr('table-index')||0;
+                if(data.elem.checked){
+                    res.data[_index][data.value] = 'Y';
+                }else{
+                    res.data[_index][data.value] = 'N';
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(locMast)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {
+                curr: 1
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+                limit();
+            }
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(mat)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                showEditModel()
+                break;
+            case 'freezeData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍐荤粨'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/node/updateStatus",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                    layer.msg(res.msg,{icon:1})
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg,{icon:2})
+                                }
+                            }
+                        })
+                    });
+                }
+                break;
+            case 'disFreezeData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾瑙i櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹殑鍐荤粨鍚�', function(){
+                        $.ajax({
+                            url: baseUrl+"/node/updateDisStatus",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                    layer.msg(res.msg,{icon:1})
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg,{icon:2})
+                                }
+                            }
+                        })
+                    });
+                }
+                break;
+            case 'exportData':
+                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'mat': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/node/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg)
+                            }
+                        }
+                    });
+                });
+                break;
+            // 鎵归噺鎵撳嵃
+            case "btnPrintBatch":
+                printMatCodeNos = [];
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鎵撳嵃鏁版嵁');
+                } else {
+                    layer.open({
+                        type: 1,
+                        title: '鎵归噺鎵撳嵃 [鏁伴噺'+ data.length +']',
+                        area: ['500px'],
+                        shadeClose: true,
+                        content: $('#printDataDiv'),
+                        success: function(layero, index){
+                            for (var i = 0; i<data.length;i++) {
+                                printMatCodeNos.push(data[i].matnr);
+                            }
+                        },
+                        end: function () {
+                        }
+                    });
+                }
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(mat)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 鎵撳嵃
+            case "btnPrint":
+                printMatCodeNos = [];
+                layer.open({
+                    type: 1,
+                    title: data.matnr + ' [鏁伴噺锛�1]',
+                    area: ['500px'],
+                    shadeClose: true,
+                    content: $('#printDataDiv'),
+                    success: function(layero, index){
+                        layer.iframeAuto(index);
+                        printMatCodeNos.push(data.matnr);
+                    },
+                    end: function () {
+                    }
+                });
+                break;
+            // 缂栬緫
+            case 'edit':
+                showEditModel(data)
+                break;
+        }
+    });
+
+    /* 鏄剧ず琛ㄥ崟寮圭獥 */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '鍟嗗搧',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                // 鍥炴樉琛ㄥ崟鏁版嵁
+                form.val('detail', mData);
+                // 鏂板鑷姩鐢熸垚鍟嗗搧缂栧彿
+                if (!mData) {
+                    http.get(baseUrl + "/node/auto/matnr/auth", null, function (res) {
+                        $('#matnr').val(res.data);
+                    })
+                }
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(editSubmit)', function (data) {
+                    console.log(data)
+                    data.field.tagId = insXmSel.getValue('valueStr');
+                    if (isEmpty(data.field.tagId)) {
+                        layer.msg('鍒嗙被涓嶈兘涓虹┖', {icon: 2});
+                        return false;
+                    }
+                    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});
+                                $(".layui-laypage-btn")[0].click();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                // 娓叉煋涓嬫媺鏍�
+                var insXmSel = xmSelect.render({
+                    el: '#tagSel',
+                    height: '250px',
+                    data: insTb.options.data,
+                    initValue: mData ? [mData.tagId] : [],
+                    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');
+            }
+        });
+    }
+
+    // 妯℃澘閫夋嫨
+    form.on('radio(selectTemplateRadio)', function (data) {
+        $('.template-preview').hide();
+        $('#template-preview-'+data.value).show();
+    });
+
+    // 寮�濮嬫墦鍗�
+    form.on('submit(doPrint)', function (data) {
+        var templateNo = data.field.selectTemplate;
+        $.ajax({
+            url: baseUrl+"/node/print/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {param: printMatCodeNos},
+            method: 'POST',
+            async: false,
+            success: function (res) {
+                if (res.code === 200){
+                    layer.closeAll();
+                    for (let i=0;i<res.data.length;i++){
+                        var templateDom = $("#templatePreview"+templateNo);
+                        var className = templateDom.attr("class");
+                        if (className === 'template-barcode') {
+                            res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1&param="+res.data[i].matnr;
+                        } else {
+                            res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2&param="+res.data[i].matnr;
+                        }
+                    }
+                    var tpl = templateDom.html();
+                    var template = Handlebars.compile(tpl);
+                    var html = template(res);
+                    var box = $("#box");
+                    box.html(html);box.show();
+                    box.print({mediaPrint:true});
+                    box.hide();
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                }else {
+                    layer.msg(res.msg)
+                }
+            }
+        })
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#createTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#updateTime\\$',
+        type: 'datetime'
+    });
+    //搴撲綅鍐荤粨
+    // form.on('switch(stockFreezeSwitch)', function (obj) {
+    //     let index  = obj.othis.parents('tr').attr("data-index");
+    //     console.log(index);
+    //     let data = tableData[index];
+    //     data[this.stockFreeze] = obj.elem.checked?1:0;
+    //     http.post(baseUrl + "/node/updateStatus", {
+    //         name: data.name,
+    //         status: data[this.stockFreeze]
+    //     }, function (res) {
+    //         layer.msg(res.msg, {icon: 1});
+    //         tableIns.reload();
+    //     });
+    // })
+
+
+});
+
+// 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鏂瑰紡锛寀rl涓烘湇鍔″櫒璇锋眰鍦板潃锛宼rue 璇ュ弬鏁拌瀹氳姹傛槸鍚﹀紓姝ュ鐞嗐��
+        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});
+        loadTree("");
+    } 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() {
+
+}
+
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        },
+        done: function (res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            if (res.data.length === 0 && count !== 0) {
+                tableIns.reload({
+                    where: searchData,
+                    page: {
+                        curr: pageCurr-1
+                    }
+                });
+                pageCurr -= 1;
+            }
+            limit(child);
+        }
+    });
+}
+
+function clearFormVal(el) {
+    $(':input', el)
+        .val('')
+        .removeAttr('checked')
+        .removeAttr('selected');
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/views/home/map.html b/src/main/webapp/views/home/map.html
index 9976a08..f81f4a0 100644
--- a/src/main/webapp/views/home/map.html
+++ b/src/main/webapp/views/home/map.html
@@ -51,7 +51,7 @@
 
         .pointBox {
             background: #fffef9;
-            width: 80px;
+            width: 300px;
             height: 35px;
             margin-right: 1px;
             display: flex;
diff --git a/src/main/webapp/views/stockFreeze/stockFreeze.html b/src/main/webapp/views/stockFreeze/stockFreeze.html
new file mode 100644
index 0000000..7b1a7f0
--- /dev/null
+++ b/src/main/webapp/views/stockFreeze/stockFreeze.html
@@ -0,0 +1,417 @@
+<!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">
+    <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;
+        }
+        #search-box {
+            padding: 30px 30px 10px 0px;
+            margin-left: 0px;
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            height: 100%;
+        }
+
+        .admin-form {
+            padding: 25px 30px 0 0 !important;
+            margin: 0 !important;
+        }
+
+        /* ------------------------- 鎵撳嵃琛ㄦ牸 -----------------------  */
+        .template-preview {
+            height: 200px;
+            display: inline-block;
+        }
+        .contain td {
+            border: 1px solid #000;
+            /*font-family: 榛戜綋;*/
+            /*font-weight: bold;*/
+            /*color: #000000;*/
+        }
+    </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+
+        <!-- 鍙� -->
+        <div class="layui-col-md12">
+            <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="parent_name" 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>
+                            <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                                <i class="layui-icon">&#xe666;</i>閲嶇疆
+                            </button>
+                        </div>
+                    </div>
+                    <table class="layui-hide" id="mat" lay-filter="mat"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="tagTpl">
+    <span name="tagId" class="layui-badge layui-badge-blue">{{d.type$}}</span>
+</script>
+
+
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+<!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
+        <button class="layui-btn layui-btn-sm layui-btn-danger " id="btn-freeze" lay-event="freezeData">鍐荤粨</button>
+        <button class="layui-btn layui-btn-sm layui-btn-checked " id="btn-disfreeze" lay-event="disFreezeData">瑙e喕</button>
+        <!-- 鍟嗗搧/鐗╂枡 鏁版嵁涓績 -->
+        <!--        <div class="dropdown-menu" style="float: right">-->
+        <!--            <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm">&nbsp;鏁版嵁鍚屾 <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>-->
+        <!--        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px">瀵煎嚭</button>-->
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-xs btn-edit layui-btn-primary" lay-event="edit">淇敼</a>
+    <button class="layui-btn layui-btn-xs btn-print" lay-event="btnPrint">鎵撳嵃</button>
+</script>
+
+<script type="text/html" id="stockFreezeTpl">
+    <input type="checkbox" disabled name="stockFreeze" value="{{d.status}}" lay-skin="switch" lay-text="姝e父|鍐荤粨" lay-filter="stockFreezeSwitch" {{ d.status === 1 ? 'checked' : '' }}>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></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/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/stockFreeze/stockFreeze.js" charset="utf-8"></script>
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form">
+        <input name="id" type="hidden">
+        <input name="uuid" type="hidden">
+        <input name="nodeId" type="hidden">
+        <input name="tag_id" type="hidden">
+        <input name="model" type="hidden">
+        <input name="name" type="hidden">
+        <input name="batch" type="hidden">
+        <input name="docId" type="hidden">
+        <input name="docNum" type="hidden">
+        <input name="custName" type="hidden">
+        <input name="itemNum" type="hidden">
+        <input name="count" type="hidden">
+        <input name="weight" type="hidden">
+        <input name="status" 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="tagSel" 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">
+                        <input name="maktx" 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="specs" placeholder="璇疯緭鍏ラ厤缃�" class="layui-input">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曠鍑�閲�</label>
+                    <div class="layui-input-block">
+                        <input name="weight" placeholder="璇疯緭鍏ュ崟绠卞噣閲嶆牸" class="layui-input">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曠浣撶Н</label>
+                    <div class="layui-input-block">
+                        <input name="volume" placeholder="璇疯緭鍏ュ崟绠变綋绉�" class="layui-input">
+                    </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 id="matnr" name="matnr" 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="specs" placeholder="璇疯緭鍏ヤ唬鐮�" class="layui-input">
+                    </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 class="layui-form-item">
+                    <label class="layui-form-label">鍗曠姣涢噸</label>
+                    <div class="layui-input-block">
+                        <input name="length" placeholder="璇疯緭鍏ュ崟绠辨瘺閲�" class="layui-input">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曠浣撶Н</label>
+                    <div class="layui-input-block">
+                        <input name="threeCode" 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>
+
+<!-- 鎵撳嵃鎿嶄綔寮圭獥 -->
+<div id="printDataDiv" style="display: none;padding: 20px">
+    <div class="layui-form" style="text-align: center">
+        <hr>
+        <!--鍗曢�夋-->
+        <div class="layui-form-item" style="display: inline-block; margin-bottom: 10px">
+            <input type="radio" name="selectTemplate" value="1" title="妯℃澘涓�"  lay-filter="selectTemplateRadio" checked="">
+            <input type="radio" name="selectTemplate" value="2" title="妯℃澘浜�" lay-filter="selectTemplateRadio">
+            <input type="radio" name="selectTemplate" value="3" title="妯℃澘涓�" lay-filter="selectTemplateRadio">
+        </div>
+        <fieldset class="layui-elem-field site-demo-button" style="margin-top: 30px;text-align: left;">
+            <legend>鎵撳嵃棰勮</legend>
+            <div id="template-container" style="margin: 20px;text-align: center">
+
+                <!-- 棰勮鍥� 1 -->
+                <div id="template-preview-1" class="template-preview" style="display: inline-block">
+                    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+                        <tr style="height: 74px">
+                            <td colspan="3" align="center" scope="col">鍟嗗搧缂栫爜</td>
+                            <td class="barcode" colspan="9" align="center" scope="col">
+                                <img class="template-code template-barcode" src="" width="90%;">
+                                <div style="letter-spacing: 2px;margin-top: 1px; text-align: center;">
+                                    <span>xxxxxx</span>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr style="height: 74px">
+                            <td align="center" colspan="3">鍟嗗搧</td>
+                            <td align="center" colspan="5">xxxxxx-xx/xx</td>
+                            <td align="center" colspan="2">澶囨敞</td>
+                            <td align="center" colspan="2">xx</td>
+                        </tr>
+                    </table>
+                </div>
+
+                <!-- 棰勮鍥� 2 -->
+                <div id="template-preview-2" class="template-preview" style="display: none">
+                    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+                        <tr style="height: 30px">
+                            <td align="center" width="20%">鍟嗗搧</td>
+                            <td align="center" width="80%" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">xxxxxxx</td>
+                        </tr>
+                        <tr style="height: 30px">
+                            <td align="center" width="20%">澶囨敞</td>
+                            <td align="center" width="80%">xxxxxxxx</td>
+                        </tr>
+                        <tr style="height: 75px;">
+                            <td align="center" colspan="2" width="100%" style="border: none">
+                                <img class="template-code template-barcode" src="" width="80%">
+                                <div style="letter-spacing: 2px;margin-top: 1px; text-align: center">
+                                    <span>xxxxxx</span>
+                                </div>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+
+                <!-- 棰勮鍥� 3 -->
+                <div id="template-preview-3" class="template-preview" style="display: none">
+                    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+                        <tr style="height: 74px">
+                            <td align="center" scope="col" colspan="1">鍟嗗搧</td>
+                            <td align="center" scope="col" colspan="1" style="">xxxxxx-xx/xx</td>
+                            <td align="center" scope="col" colspan="2" rowspan="2">
+                                <img class="template-code template-qrcode" src="" width="80%">
+                                <div style="letter-spacing: 1px;margin-top: 1px; text-align: center">
+                                    <span>xxxxxx</span>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr style="height: 74px">
+                            <td align="center" colspan="1">澶囨敞</td>
+                            <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">xxxxxxx</td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+        </fieldset>
+
+        <button class="layui-btn" id="doPrint" lay-submit lay-filter="doPrint" style="margin-top: 20px">纭畾</button>
+    </div>
+</div>
+
+<div id="box" style="display: block"></div>
+
+<!-- 鍒濆鍖栨墦鍗版ā鏉跨殑鏉″舰鐮� -->
+<script type="text/javascript">
+    $('.template-barcode').attr("src", baseUrl+"/mac/code/auth?type=1&param=123");
+    $('.template-qrcode').attr("src", baseUrl+"/mac/code/auth?type=2&param=123");
+</script>
+
+<!-- 妯℃澘寮曟搸 -->
+<!-- 妯℃澘1 -->
+<script type="text/template" id="templatePreview1" class="template-barcode">
+    {{#each data}}
+    <table class="contain" width="280" style="overflow: hidden;font-size: small;table-layout: fixed;">
+        <tr style="height: 74px">
+            <td align="center" colspan="3" scope="col">鍟嗗搧缂栫爜</td>
+            <td align="center" class="barcode" colspan="9" scope="col">
+                <img class="template-code" src="{{this.barcodeUrl}}" width="90%">
+                <div style="letter-spacing: 2px;margin-top: 1px; text-align: center">
+                    <span>{{this.matnr}}</span>
+                </div>
+            </td>
+        </tr>
+        <tr style="height: 74px">
+            <td align="center" colspan="3">鍟嗗搧</td>
+            <td align="center" colspan="5" style="overflow: hidden; white-space: nowrap;text-overflow: ellipsis;">{{this.maktx}}</td>
+            <td align="center" colspan="2">澶囨敞</td>
+            <td align="center" colspan="2">{{this.memo}}</td>
+        </tr>
+    </table>
+    {{/each}}
+</script>
+<!-- 妯℃澘2 -->
+<script type="text/template" id="templatePreview2" class="template-barcode">
+    {{#each data}}
+    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+        <tr style="height: 35px">
+            <td align="center" width="20%">鍟嗗搧</td>
+            <td align="center" width="80%" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{this.maktx}}</td>
+        </tr>
+        <tr style="height: 35px">
+            <td align="center" width="20%">澶囨敞</td>
+            <td align="center" width="80%">{{this.memo}}</td>
+        </tr>
+        <tr style="height: 79px;">
+            <td align="center" colspan="2" width="100%" style="border: none">
+                <img class="template-code" src="{{this.barcodeUrl}}" width="80%">
+                <div style="letter-spacing: 2px;margin-top: 1px; text-align: center">
+                    <span>{{this.matnr}}</span>
+                </div>
+            </td>
+        </tr>
+    </table>
+    {{/each}}
+</script>
+<!-- 妯℃澘3 -->
+<script type="text/template" id="templatePreview3" class="template-qrcode">
+    {{#each data}}
+    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+        <tr style="height: 74px" >
+            <td align="center" scope="col" colspan="1">鍟嗗搧</td>
+            <td align="center" scope="col" colspan="1" style="
+                display: inline-block;
+                line-height: 20px;
+                vertical-align: middle;
+                border: none;
+                border-top: 1px solid #000;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                display: -webkit-box;
+                -webkit-line-clamp: 3;
+                -webkit-box-orient: vertical;
+                    ">
+                {{this.maktx}}
+            </td>
+            <td align="center" scope="col" colspan="2" rowspan="2">
+                <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" width="80%">
+                <div style="letter-spacing: 1px;margin-top: 1px; text-align: center">
+                    <span>{{this.matnr}}</span>
+                </div>
+            </td>
+        </tr>
+        <tr style="height: 74px">
+            <td align="center" colspan="1">澶囨敞</td>
+            <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{this.memo}}</td>
+        </tr>
+    </table>
+    {{/each}}
+</script>
+
+</body>
+</html>
+

--
Gitblit v1.9.1