<!DOCTYPE html> 
 | 
<html lang="en"> 
 | 
<head> 
 | 
    <meta charset="UTF-8"> 
 | 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/> 
 | 
    <title>拣货</title> 
 | 
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> 
 | 
    <link rel="stylesheet" href="../../static/css/pda.css" media="all"> 
 | 
    <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/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/handlebars/handlebars-v4.5.3.js"></script> 
 | 
    <style> 
 | 
        .layui-input-block { 
 | 
            margin-left: 60px; 
 | 
        } 
 | 
        main { 
 | 
            height: 200px; 
 | 
        } 
 | 
        /* 状态 */ 
 | 
        #status { 
 | 
            padding-left: 2px; 
 | 
            line-height: 30px; 
 | 
        } 
 | 
        .status-0 { 
 | 
            color: orange; 
 | 
        } 
 | 
        .status-1 { 
 | 
            color: red; 
 | 
        } 
 | 
        .status-2 { 
 | 
            color: red; 
 | 
        } 
 | 
        .status-3 { 
 | 
            color: green; 
 | 
        } 
 | 
        /* 客户 */ 
 | 
        #custName { 
 | 
            padding-left: 2px; 
 | 
            line-height: 30px; 
 | 
            font-size: 14px; 
 | 
        } 
 | 
        /* 主体 */ 
 | 
        main { 
 | 
            border: 1px solid gainsboro; 
 | 
            text-align: center; 
 | 
            padding-bottom: 15px; 
 | 
        } 
 | 
        main hr { 
 | 
            width: 80%; 
 | 
            margin: 5px 0; 
 | 
            display: inline-block 
 | 
        } 
 | 
        .pakout-item { 
 | 
            padding: 10px; 
 | 
        } 
 | 
        .item-header { 
 | 
            text-align: left; 
 | 
            padding-left: 20px 
 | 
        } 
 | 
        .item-content { 
 | 
            padding: 15px 
 | 
        } 
 | 
        #matnrByPakout { 
 | 
            width: 65%; 
 | 
            height: 40px; 
 | 
        } 
 | 
  
 | 
        /* 弹窗 */ 
 | 
        .number-tool { 
 | 
            margin-left: 10px; 
 | 
            padding: 1px 0 1px 5px; 
 | 
            display: inline-block; 
 | 
            width: 120px; 
 | 
        } 
 | 
        .number-tool:after { 
 | 
            clear: both; 
 | 
            content: ""; 
 | 
            display: table; 
 | 
        } 
 | 
        .number-tool button { 
 | 
            background-color: #fff; 
 | 
            margin-top: 3px; 
 | 
            font-size: 16px; 
 | 
            height: 25px; 
 | 
            float: left; 
 | 
            width: 25px; 
 | 
            border: 1px solid #777777; 
 | 
        } 
 | 
        .number-tool input { 
 | 
            text-align: center; 
 | 
            height: 30px; 
 | 
            float: left; 
 | 
            margin: 0 5px; 
 | 
            width: 50px; 
 | 
            padding: 0; 
 | 
        } 
 | 
        #yes { 
 | 
            margin: 10px 10px; 
 | 
            padding: 5px 20px; 
 | 
            font-weight: 600; 
 | 
        } 
 | 
        #no { 
 | 
            margin: 10px 10px; 
 | 
            padding: 5px 20px; 
 | 
            color: darkred; 
 | 
        } 
 | 
  
 | 
    </style> 
 | 
</head> 
 | 
<body> 
 | 
<!-- 头部 --> 
 | 
<header> 
 | 
    <div class="layui-input-inline"> 
 | 
        <label class="layui-form-label" style="width: 84px">单据编号</label> 
 | 
        <input class="layui-input" type="text" id="docNum" onkeyup="findNum(this)" placeholder="扫码 / 输入" autocomplete="off"> 
 | 
    </div> 
 | 
    <div class="layui-input-inline" style="width: 100%"> 
 | 
        <label class="layui-form-label" style="width: 84px">状态</label> 
 | 
        <label id="status" class="layui-form-label status-0">未知</label> 
 | 
    </div> 
 | 
    <div class="layui-input-inline"> 
 | 
        <label class="layui-form-label" style="width: 84px">商品条码</label> 
 | 
        <input class="layui-input" type="text" id="matnrByPakout" onkeyup="findMat(this)" placeholder="扫码 / 输入" autocomplete="off"> 
 | 
    </div> 
 | 
</header> 
 | 
  
 | 
<!-- 主体 --> 
 | 
<main id="pakout-box"> 
 | 
  
 | 
</main> 
 | 
<!-- 尾部 --> 
 | 
<footer> 
 | 
    <div class="layui-btn-container"> 
 | 
        <button id="reset" type="button" class="layui-btn layui-btn-primary" onclick="reset()">重置</button> 
 | 
        <button id="confirm" type="button" class="layui-btn layui-btn-normal" onclick="pakoutConfirm()" style="margin-left: 20px">全拣</button> 
 | 
        <button id="tips1" style="outline: none;color: white;border-color: white; position: absolute;right: 0;bottom: 0;"></button> 
 | 
    </div> 
 | 
</footer> 
 | 
<!-- 修改数量弹窗 --> 
 | 
<div id="pakout" style="display: none; text-align: center;padding-top: 10px"> 
 | 
    <div class="form-item"> 
 | 
        <span>物料</span> 
 | 
        <input id="matnr" type="text" disabled="disabled" style="width: 70%"> 
 | 
    </div> 
 | 
    <div class="form-item"> 
 | 
        <span>名称</span> 
 | 
        <input id="maktx" type="text" disabled="disabled" style="width: 70%"> 
 | 
    </div> 
 | 
    <div class="form-item" style="margin-top: 5px"> 
 | 
        <span style="vertical-align: middle">数量</span> 
 | 
        <div class="number-tool" style="vertical-align: middle"> 
 | 
            <button onclick="reduce()">-</button><input id="count" type="number"><button onclick="add()">+</button> 
 | 
        </div> 
 | 
    </div> 
 | 
    <button id="no" onclick="no()">取消</button> 
 | 
    <button id="yes" onclick="yes()">出库</button> 
 | 
</div> 
 | 
</body> 
 | 
<script> 
 | 
    var docNumber; 
 | 
    var pakoutData = []; 
 | 
    window.onload = function(){ 
 | 
        document.getElementById("docNum").focus(); 
 | 
    } 
 | 
  
 | 
    // 拣货单显示 
 | 
    function findNum(el){ 
 | 
        if (isEmpty(el.value)) { 
 | 
            return; 
 | 
        } 
 | 
        $.ajax({ 
 | 
            url: baseUrl + "/work/pakout/get", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            data: { 
 | 
                docNumber: el.value 
 | 
            }, 
 | 
            method: 'POST', 
 | 
            async: false, 
 | 
            success: function (res) { 
 | 
                console.log(res.data); 
 | 
                if (res.code === 200) { 
 | 
                    docNumber = el.value; 
 | 
                    $("#matnrByPakout").val(""); 
 | 
                    if (res.data != null) { 
 | 
                        $('#pakout-box').html(""); 
 | 
                        pakoutData = []; 
 | 
                        pakoutData = res.data.pakouts; 
 | 
                        if (pakoutData != null) { 
 | 
                            // 头 
 | 
                            $('#status').html(res.data.wrkSts$); 
 | 
                            $('#status').attr("class", "layui-form-label status-" + res.data.wrkSts); 
 | 
                            $('#custName').html(res.data.custName); 
 | 
                            // 主 
 | 
                            var tpl = $("#pakoutDetlTpl").html(); 
 | 
                            var template = Handlebars.compile(tpl); 
 | 
                            var html = template(res.data); 
 | 
                            $('#pakout-box').append(html); 
 | 
                        } 
 | 
                        $('#tips1').focus(); 
 | 
                    } 
 | 
                } else if (res.code === 201) { 
 | 
                } else if (res.code === 403) { 
 | 
                    top.location.href = baseUrl + "/pda"; 
 | 
                } else { 
 | 
                    docNumber = null; 
 | 
                    pakoutData = []; 
 | 
                    tips(res.msg, true); 
 | 
                } 
 | 
            } 
 | 
        }) 
 | 
    } 
 | 
  
 | 
    // 拣货单某个商品拣货 
 | 
    var pakoutLayer; 
 | 
    function findMat(el){ 
 | 
        if (isEmpty(el.value)) { 
 | 
            return; 
 | 
        } 
 | 
        for (var i=0;i<pakoutData.length;i++) { 
 | 
            if (el.value === pakoutData[i].matnr) { 
 | 
                if (pakoutLayer == null) { 
 | 
                    pakoutLayer = layer.open({ 
 | 
                        type: 1, 
 | 
                        offset: '20px', 
 | 
                        title: '出库', 
 | 
                        shadeClose: true, 
 | 
                        area: ['80%', '200px'], 
 | 
                        content: $("#pakout"), 
 | 
                        success: function (layero, index) { 
 | 
                            $('#matnr').val(pakoutData[i].matnr); 
 | 
                            $('#maktx').val(pakoutData[i].maktx); 
 | 
                            $('#count').val(pakoutData[i].anfme); 
 | 
                            maxCount = pakoutData[i].anfme; 
 | 
                        }, 
 | 
                        end: function () { 
 | 
                            pakoutLayer = null; 
 | 
                        } 
 | 
                    }); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /*************************************  数量  ****************************************/ 
 | 
    var countDom = $('#count'); 
 | 
    var minCount = 0; 
 | 
    var maxCount; 
 | 
    function add() { 
 | 
        if (countDom.val() >= maxCount) { 
 | 
            return; 
 | 
        } 
 | 
        countDom.val(Number(countDom.val()) + 1); 
 | 
    } 
 | 
    function reduce() { 
 | 
        if (countDom.val() <= minCount) { 
 | 
            return; 
 | 
        } 
 | 
        countDom.val(countDom.val() - 1); 
 | 
    } 
 | 
  
 | 
    // 单个商品拣货出库 
 | 
    function yes(){ 
 | 
        var matnr = $('#matnr').val(); 
 | 
        var count = $('#count').val(); 
 | 
        if (count < minCount) { 
 | 
            tips("数量必须大于0", true); 
 | 
            return; 
 | 
        } 
 | 
        if (count > maxCount) { 
 | 
            tips("库存不足", true); 
 | 
            $('#count').val(maxCount); 
 | 
            return; 
 | 
        } 
 | 
        $.ajax({ 
 | 
            url: baseUrl + "/work/pakout/out/confirm", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            data: JSON.stringify({ 
 | 
                docNumber: docNumber, 
 | 
                matnr: matnr, 
 | 
                anfme: count 
 | 
            }), 
 | 
            contentType:'application/json;charset=UTF-8', 
 | 
            async: false, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                layer.close(pakoutLayer); 
 | 
                if (res.code === 200) { 
 | 
                    tips("出库成功"); 
 | 
                    findNum(document.getElementById("docNum")); 
 | 
                } else if (res.code === 403) { 
 | 
                    top.location.href = baseUrl + "/pda"; 
 | 
                } else { 
 | 
                    tips(res.msg, true); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    layui.use(['laydate', 'form'], function() { 
 | 
        var $ = layui.jquery; 
 | 
        var layer = layui.layer; 
 | 
        var form = layui.form; 
 | 
  
 | 
    }); 
 | 
  
 | 
    // 拣货确认 
 | 
    function pakoutConfirm() { 
 | 
        layer.confirm('确认拣货完成?', {shadeClose: true}, function(){ 
 | 
            if (pakoutData == null || pakoutData.length === 0) { 
 | 
                tips("请确认单据编号!", true); 
 | 
                return; 
 | 
            } 
 | 
            var docNum = pakoutData[0].docNum; 
 | 
            if (isEmpty(docNum)) { 
 | 
                tips("请确认单据编号!", true); 
 | 
                return; 
 | 
            } 
 | 
            $.ajax({ 
 | 
                url: baseUrl+"/work/stock/out/confirm", 
 | 
                headers: {'token': localStorage.getItem('token')}, 
 | 
                data: JSON.stringify({ 
 | 
                    orderNo: docNum 
 | 
                }), 
 | 
                contentType:'application/json;charset=UTF-8', 
 | 
                method: 'POST', 
 | 
                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 reset() { 
 | 
        $("#docNum").val(""); 
 | 
        $("#matnrByPakout").val(""); 
 | 
        $('#status').html("未知"); 
 | 
        $('#status').attr("class", "layui-form-label status-0"); 
 | 
        $('#custName').html("-"); 
 | 
        $('#pakout-box').html(""); 
 | 
        pakoutData = []; 
 | 
        docNumber = null; 
 | 
        document.getElementById("docNum").focus(); 
 | 
        layui.form.render('select'); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 提示信息 
 | 
     * @param msg 提示内容 
 | 
     * @param warn true:红色var字体 
 | 
     */ 
 | 
    function tips(msg, warn) { 
 | 
        layer.msg(msg, {icon: warn?2:1}) 
 | 
    } 
 | 
  
 | 
</script> 
 | 
<script type="text/template" id="pakoutDetlTpl"> 
 | 
    {{#each pakouts}} 
 | 
        <hr> 
 | 
        <div class="pakout-item"> 
 | 
            <div class="item-header"> 
 | 
                {{maktx}} 
 | 
            </div> 
 | 
            <div class="item-content"> 
 | 
                <div style="float: left">{{anfme}}{{unit}}</div> 
 | 
                <div style="float: right">货位:{{locNo}}</div> 
 | 
            </div> 
 | 
        </div> 
 | 
    {{/each}} 
 | 
</script> 
 | 
</html> 
 |