自动化立体仓库 - WMS系统
#
luxiaotao1123
2020-07-13 730b8f59c9d54ab30d343fce6f96fd1e96eefdd4
src/main/webapp/views/pda/stockOut.html
@@ -88,16 +88,74 @@
            bottom: 5px;
            width: 100%;
        }
        .site-list {
            padding: 2px 0;
            height: 22px;
            margin-bottom: 5px;
        }
        .site-list label {
            padding-right: 15px;
        }
        .site-list label span {
            vertical-align: middle;
            font-size: 13px;
        }
        .cool-checkbox:checked {
            background:#1673ff
        }
        .cool-checkbox {
            width:15px;
            height:15px;
            background-color:#ffffff;
            border:solid 1px #dddddd;
            -webkit-border-radius:50%;
            border-radius:50%;
            font-size:15px;
            margin:0 5px 0 0;
            padding:0;
            position:relative;
            display:inline-block;
            vertical-align:middle;
            cursor:default;
            -webkit-appearance:none;
            -webkit-user-select:none;
            user-select:none;
            -webkit-transition:background-color ease 0.1s;
            transition:background-color ease 0.1s;
        }
        .cool-checkbox:checked::after {
            content:'';
            top:3px;
            left:3px;
            position:absolute;
            background:transparent;
            border:#fff solid 2px;
            border-top:none;
            border-right:none;
            height:3px;
            width:6px;
            -moz-transform:rotate(-45deg);
            -ms-transform:rotate(-45deg);
            -webkit-transform:rotate(-45deg);
            transform:rotate(-45deg);
        }
        .layui-btn-container .layui-btn {
            margin-left: 10px;
            margin-bottom: 2px;
        }
        #tips {
            display: inline-block;
            width: 90px;
            color: #666;
            margin-left: 5px;
            margin-bottom: 5px;
            vertical-align: middle;
            overflow:hidden;
            white-space:nowrap;
            text-overflow:ellipsis;
        }
        .layui-btn-primary:hover {
@@ -110,22 +168,22 @@
<header>
    <div class="layui-input-inline">
        <label class="layui-form-label">库位</label>
        <input class="layui-input" type="text" id="locNo" onkeyup="findLocDetl(this)" autocomplete="off">
        <input class="layui-input" type="text" id="locNo" onkeyup="findByLocNo(this)" autocomplete="off">
    </div>
    <div class="layui-input-inline">
        <label class="layui-form-label">物料</label>
        <input class="layui-input" type="text" id="matNo" autocomplete="off">
        <input class="layui-input" type="text" id="matNo" onkeyup="findByMatNo(this)" autocomplete="off">
    </div>
</header>
<!-- 主体 -->
<main>
    <table class="layui-table" id="dataByLoc" lay-filter="chooseData"></table>
    <table class="layui-table" id="dataByLoc" lay-filter="dataByLoc"></table>
</main>
<!-- 尾部 -->
<footer>
    <!-- 出库口 -->
    <div class="site-list">
        <span style="display: inline-block; margin:0 0 0 10px; font-size: 12px">出库口:</span>
        <span style="display: inline-block; padding:0 0 0 10px; font-size: 12px;">出库口:</span>
    </div>
    <div class="layui-btn-container">
        <button type="button" class="layui-btn layui-btn-xs layui-btn-primary" onclick="reset()">重置</button>
@@ -144,15 +202,31 @@
    /**
     * 根据库位号查找库存明细
     */
    function findLocDetl(el){
    function findByLocNo(el){
        if (isEmpty(el.value)) {
            return;
        }
        $("#matNo").val("");
        find(el.value, null);
    }
    /**
     * 根据物料号查找库存明细
     */
    function findByMatNo(el){
        if (isEmpty(el.value)) {
            return;
        }
        $("#locNo").val("");
        find(null, el.value);
    }
    function find(locNo, matNo) {
        $.ajax({
            url: baseUrl + "/mobile/locDetl",
            headers: {'token': localStorage.getItem('token')},
            data: {
                locNo: el.value
                locNo: locNo,
                matNo: matNo
            },
            method: 'POST',
            success: function (res) {
@@ -171,6 +245,7 @@
        })
    }
    // 表格
    var locDetlData = [];
    var tableIns;
    layui.use(['table','laydate', 'form'], function() {
@@ -180,20 +255,49 @@
        var form = layui.form;
        tableIns = table.render({
            id: 'tableIdx',
            elem: '#dataByLoc',
            data: [],
            limit: 500,
            cellMinWidth: 50,
            cols: [[
                {type: 'checkbox', fixed: 'left', width:30},
                {field: 'count', align: 'center', title: '量', style:'color: blue', width:30},
                {field: 'matNo', align: 'center', title: '编码'},
                {field: 'matName', align: 'center', title: '名称'},
                {field: 'locNo', align: 'center', title: '库位'}
                {field: 'count', align: 'center', title: '量', event: 'detail', style:'color: blue', width:30},
                {field: 'matnr', align: 'center', title: '编码', event: 'detail'},
                {field: 'maktx', align: 'center', title: '名称', event: 'detail'},
                {field: 'locNo', align: 'center', title: '库位', event: 'detail'}
            ]],
            done: function (res, curr, count) {
            }
        });
        // 监听行工具事件
        table.on('tool(dataByLoc)', function(obj) {
            var data = obj.data;
            switch (obj.event) {
                // 详情
                case 'detail':
                    layer.open({
                        type: 2,
                        title: '库存明细',
                        shade: [0.3,'#000'],
                        area: ['90%', '77%'],
                        content: 'locDetlIframe.html',
                        success: function(layero, index){
                            // 设置弹窗样式
                            $('.layui-layer-title').css('height', '20px').css('line-height', '20px').css('font-size', '12px').css('padding-left', '10px')
                            $('.layui-layer-setwin').css("top", '2px').css('right', '3px');
                            // 注入值
                            let el = layer.getChildFrame('.form-box', index);
                            for (var val in data) {
                                var find = el.find(":input[id='" + val + "']");
                                find.val(data[val]);
                            }
                        }
                    });
                    break;
            }
        })
    });
    // 获取出库口
@@ -208,15 +312,93 @@
                    var tpl = $("#outSitesTemplate").html();
                    var template = Handlebars.compile(tpl);
                    var html = template(res);
                    $('#site-list').append(html);
                    $('.site-list').append(html);
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                    top.location.href = baseUrl+"/pda";
                }else {
                    layer.msg(res.msg)
                    tips("获取出库口失败", true)
                }
            }
        })
    }
    // 出库
    function pakOut() {
        var tableData = layui.table.checkStatus('tableIdx').data;
        if (tableData.length === 0) {
            tips("请选择物料", true);
            document.getElementById("locNo").focus();
            return;
        }
        let site = $('input:radio[name="site"]:checked').next("span").html();
        if (null === site || undefined === site) {
            tips("请选择出库口", true);
            return;
        }
        $.ajax({
            url: baseUrl+"/plate/out/start",
            headers: {'token': localStorage.getItem('token')},
            data: JSON.stringify({
                outSite: site,
                locDetls: tableData
            }),
            contentType:'application/json;charset=UTF-8',
            method: 'POST',
            async: false,
            success: function (res) {
                if (res.code === 200) {
                    reset();
                    tips("启动出库成功")
                } else if (res.code === 403) {
                    top.location.href = baseUrl + "/pda";
                } else {
                    tips(res.msg, true)
                }
            }
        })
    }
    // 修改表格数据
    function updateTableData(data) {
        for (var i=0;i<locDetlData.length;i++) {
            if (data.matnr === locDetlData[i].matnr && data.locNo === locDetlData[i].locNo) {
                locDetlData[i].count = data.count;
                break
            }
        }
        tableIns.reload({data: locDetlData});
    }
    // 删除表格行
    function removeTableData(data) {
        for (var i = locDetlData.length - 1; i >= 0; i--) {
            if (locDetlData[i].locNo === data.locNo && locDetlData[i].matnr === data.matnr) {
                locDetlData.splice(i, 1);
            }
        }
        tableIns.reload({data: locDetlData});
    }
    // 重置
    function reset() {
        $("#matNo").val("");
        $("#locNo").val("");
        locDetlData = [];
        tableIns.reload({data: locDetlData});
        $('input:radio[name="site"]').prop('checked',false);
        tips("");
    }
    /**
     * 提示信息
     * @param msg 提示内容
     * @param warn true:红色字体
     */
    function tips(msg, warn) {
        let tips = $('#tips');
        tips.html(msg);
        tips.css("color", warn?"red":'#666');
    }
</script>
<script type="text/template" id="outSitesTemplate">
    {{#each data}}