王佳豪
2021-06-04 23e31685793e281f9a76622cf560f6f618a26cad
pda新增小车关联组托功能
1个文件已添加
2个文件已修改
495 ■■■■■ 已修改文件
src/main/webapp/views/pda/combAgv.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pda/combProAgv.html 473 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pda/index.html 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pda/combAgv.html
@@ -88,7 +88,6 @@
            async: false,
            success: function (res) {
                if (res.code === 200){
                    debugger
                    var tpl = $("#devpSelectTemplate").html();
                    var template = Handlebars.compile(tpl);
                    var html = template(res);
src/main/webapp/views/pda/combProAgv.html
New file
@@ -0,0 +1,473 @@
<!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>
        .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;
        }
        #confirm {
            margin: 10px 10px;
            padding: 5px 20px;
            font-weight: 600;
        }
        #remove {
            margin: 10px 10px;
            padding: 5px 20px;
            color: darkred;
        }
        .form-box span {
            font-size: 16px;
            display: inline-block;
            text-align: right;
        }
        .form-box input {
            width: 165px;
            padding-left: 5px;
            height: 30px;
            border: 1px solid #777777;
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
        }
    </style>
</head>
<body>
<!-- 头部 -->
<header>
    <div class="layui-input-inline" style="margin-top: 5px">
        <label class="layui-form-label" style="margin-left: 16px">单号</label>
        <input class="layui-input" id="billNo" oninput="find(this)" placeholder="扫码 / 输入" autocomplete="off"
               style="width: 175px; height: 40px; margin-right: 0;">
    </div>
    <div class="layui-input-inline">
        <label class="layui-form-label">托盘码</label>
        <input class="layui-input" style="width: 175px;" type="number" id="code" onkeyup="findCode(this)"
               oninput="if(value.length>8)value=value.slice(0,8)" placeholder="扫码 / 输入" autocomplete="off">
    </div>
    <div class="layui-form">
        <div style="margin: 5px 1px 5px 5px; display: inline-block">
            <button id="mat-btn" type="button" class="layui-btn layui-btn-normal" onclick="getMat()"><i class="layui-icon">+</i>提取</button>
        </div>
        <div style="display: inline-block">
            工作区
            <!-- 工作区 -->
            <div class="layui-inline" style="width: 100px; margin-left: 10px">
                <select id="devpSelect">
                    <option value="">工作区</option>
                </select>
            </div>
        </div>
    </div>
</header>
<!-- 主体 -->
<main>
    <table class="layui-table" id="chooseData" lay-filter="chooseData"></table>
</main>
<!-- 尾部 -->
<footer>
    <div class="layui-btn-container">
        <button type="button" id="reset-btn" class="layui-btn layui-btn-primary" onclick="reset()">重置</button>
        <button type="button" id="comb-btn" class="layui-btn layui-btn-normal " onclick="comb()"
                style="margin-left: 20px">组托
        </button>
        <button type="button" id="retrun-btn" class="layui-btn layui-btn-primary " onclick="back()"
                style="margin-left: 20px">返回
        </button>
        <span id="tips"></span>
    </div>
</footer>
<!-- 修改数量弹窗 -->
<div id="modify" style="display: none; text-align: center;padding-top: 10px">
    <div class="form-box">
        <div class="form-item">
            <table style="display: none">
                <tr>
                    <td>
                        <span style="width: 35px; margin-right: 5px">物料</span>
                    </td>
                    <td style="text-align: left">
                        <input id="matNo" type="text" disabled="disabled">
                    </td>
                </tr>
            </table>
        </div>
        <div class="form-item">
            <table style="display: inline">
                <tr>
                    <td style="vertical-align: top">
                        <span style="width: 35px; margin-right: 5px">名称</span>
                    </td>
                    <td style="text-align: left">
                    <textarea rows="2" style="resize: none; width: 165px" id="matName" type="text" disabled="disabled"
                              readonly="readonly"></textarea>
                    </td>
                </tr>
            </table>
        </div>
        <div class="form-item">
            <table style="display: inline">
                <tr>
                    <td>
                        <span style="width: 35px; margin-right: 5px">单号</span>
                    </td>
                    <td style="text-align: left">
                        <input id="mnemonic" type="text" disabled="disabled">
                    </td>
                </tr>
            </table>
        </div>
    </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="remove" onclick="remove()">移除</button>
    <button id="confirm" onclick="confirm()">保存</button>
</div>
</body>
<script type="text/template" id="devpSelectTemplate">
    {{#each data}}
    <option value="{{this}}">{{this}}</option>
    {{/each}}
</script>
<script>
    window.onload = function () {
        document.getElementById("billNo").focus();
    }
    var tableIns;
    var countLayer;
    var matData = [];
    var sourceData = [];
    layui.use(['table', 'laydate', 'form'], function () {
        var table = layui.table;
        var $ = layui.jquery;
        var layer = layui.layer;
        var form = layui.form;
        tableIns = table.render({
            elem: '#chooseData',
            data: [],
            width: 320,
            limit: 500,
            cellMinWidth: 50,
            cols: [[
                {field: 'matNo', align: 'center', title: '物料编码', event: 'modify',},
                {field: 'mnemonic', align: 'center', title: '生产单号', event: 'modify',},
                {
                    align: 'center',
                    field: 'count',
                    title: '数量',
                    event: 'modify',
                    style: 'cursor: pointer;color: blue',
                    width: 50
                },
                {field: 'matName', align: 'center', title: '物料名称', event: 'modify',}
            ]],
            done: function (res, curr, count) {
            }
        });
        // 监听行工具事件
        table.on('tool(chooseData)', function (obj) {
            var data = obj.data;
            switch (obj.event) {
                case 'modify':
                    countLayer = layer.open({
                        type: 1,
                        offset: '20px',
                        title: '修改数量',
                        shadeClose: true,
                        area: ['80%', '300px'],
                        content: $("#modify"),
                        success: function (layero, index) {
                            $('#matNo').val(data.matNo);
                            $('#matName').val(data.matName);
                            $('#count').val(data.count);
                            $('#mnemonic').val(data.mnemonic);
                            maxCount = data.count;
                        }
                    });
                    break;
            }
        });
    });
    // 获取工作区
    function getDevp(){
        $.ajax({
            url: baseUrl+"/available/put/site",
            headers: {'token': localStorage.getItem('token')},
            method: 'POST',
            async: false,
            success: function (res) {
                if (res.code === 200){
                    var tpl = $("#devpSelectTemplate").html();
                    var template = Handlebars.compile(tpl);
                    var html = template(res);
                    $('#devpSelect').append(html);
                    layui.form.render('select');
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/pda";
                }else {
                    tips("获取工作区失败", true)
                }
            }
        })
    }
    getDevp();
    // 添加表格数据
    //    var matData = [];
    function addTableData(data) {
        for (var i = 0; i < data.length; i++) {
            var toPush = true;
            for (var j = 0; j < matData.length; j++) {
                if (data[i].matNo === matData[j].matNo && data[i].mnemonic === matData[j].mnemonic) {
                    matData[j].count = Number(matData[j].count) + Number(data[i].count);
                    toPush = false;
                }
            }
            if (toPush) {
                matData.push(data[i]);
                sourceData.push({
                    matNo: data[i].matNo,
                    count: data[i].count,
                    supplier: data[i].supplier,
                    mnemonic: data[i].mnemonic,
                });
            }
        }
        tableIns.reload({data: matData});
//        $("#comb-btn").focus();
    }
    /**
     * 根据通知单号查询物料详情
     */
    function find(el) {
        if (isEmpty(el.value)) {
            return;
        }
        var billNo = el.value;
        if (billNo.indexOf('=') > -1) {
            billNo = billNo.split(",")[0].split("=")[1];
        }
        if (isEmpty(billNo)) {
            return;
        }
        // 赋值前清空表格
//        matData = [];
        tableIns.reload({data: matData});
        $.ajax({
            url: baseUrl + "/mobile/bill/query/auth",
            headers: {'token': localStorage.getItem('token')},
            data: {
                billNo: billNo
            },
            method: 'POST',
            success: function (res) {
                if (res.code === 200) {
                    if (res.data != null) {
                        addTableData(res.data);
                        // 延迟1秒后清空通知单号
                        setTimeout(function () {
                            $('#billNo').val("");
                        }, 500);
                    }
                } else if (res.code === 403) {
                    top.location.href = baseUrl + "/pda";
                } else {
                    tips(res.msg, true)
                }
            }
        });
    }
    /*************************************  数量  ****************************************/
    var countDom = $('#count');
    var minCount = 1;
    var maxCount = 1;
    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 confirm() {
        var matNo = $('#matNo').val();
        var count = $('#count').val();
        var mnemonic = $("#mnemonic").val() === '' ? null : $("#mnemonic").val();
        for (var j = 0; j < matData.length; j++) {
            if (matNo === matData[j].matNo && mnemonic === matData[j].mnemonic) {
                if (count > maxCount || count < minCount) {
                    tips("数量不能超过范围", true);
                    return;
                }
                matData[j].count = Number(count);
            }
        }
        tableIns.reload({data: matData});
        layer.close(countLayer);
        tips("修改成功");
    }
    // 移除物料
    function remove() {
        var matNo = $('#matNo').val();
        var mnemonic = $("#mnemonic").val() === '' ? null : $("#mnemonic").val();
        for (var j = 0; j < matData.length; j++) {
            if (matNo === matData[j].matNo && mnemonic === matData[j].mnemonic) {
                matData.splice(j, 1);
            }
        }
        tableIns.reload({data: matData});
        layer.close(countLayer);
        tips("移除成功");
    }
    // 重置
    function reset() {
        $('#code').val("");
        $('#billNo').val("");
        matData = [];
        sourceData = [];
        tableIns.reload({data: matData});
    }
    // 组托
    function comb() {
        var barcode = $('#code').val();
        var devp = $("#devpSelect").val();
        if (isEmpty(barcode)) {
            tips("托盘条码为空", true);
            // document.getElementById("code").focus();
            return;
        }
        if (barcode.length !== 7) {
            tips("条码必须为7位", true);
            return;
        }
        if (matData.length === 0) {
            tips("请提取物料", true);
            return;
        }
        if (isEmpty(devp)) {
            tips("请选择工作区", true);
            return;
        }
        alert("小车关联组托完成(功能还未实现)");
//        $.ajax({
//            url: baseUrl + "/mobile/comb/auth/batch",
//            headers: {'token': localStorage.getItem('token')},
//            data: JSON.stringify({
//                barcode: barcode,
//                combMats: matData,
//            }),
//            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)
//                }
//            }
//        })
    }
    /**
     * 提示信息
     * @param msg 提示内容
     * @param warn true:红色字体
     */
    function tips(msg, warn) {
        layer.msg(msg, {icon: warn ? 2 : 1})
    }
    document.onkeyup = function (e) {
        if (window.event)//如果window.event对象存在,就以此事件对象为准
            e = window.event;
        var key = e.charCode || e.keyCode;
        if (key === 115) {
            $("#comb-btn").focus();
            comb();
        } else if (key === 113) {
            $("#code").val("");
            $("#code").focus();
        }
    }
    function back() {
        parent.backIndex();
    }
</script>
</html>
src/main/webapp/views/pda/index.html
@@ -100,37 +100,42 @@
            <div id="combAgv" onclick="nav(this.id)" class="nav-font-size">小车组托入库</div>
        </td>
        <td>
            <div id="comb" onclick="nav(this.id)" class="nav-font-size">立库组托入库</div>
            <div id="combProAgv" onclick="nav(this.id)" class="nav-font-size">小车关联组托</div>
        </td>
    </tr>
    <tr>
        <td>
            <div id="comb" onclick="nav(this.id)" class="nav-font-size">立库组托入库</div>
        </td>
        <td>
            <div id="combPro" onclick="nav(this.id)" style="font-size: 15px">立库任务单入库</div>
        </td>
    </tr>
    <tr>
        <td>
            <div id="stockIn" onclick="nav(this.id)" class="nav-font-size">立库配件入库</div>
        </td>
    </tr>
    <tr>
        <td>
            <div id="stockOut" onclick="nav(this.id)" class="nav-font-size">立库配件出库</div>
        </td>
    </tr>
    <tr>
        <td>
            <div id="locNormalIn1" onclick="nav(this.id)" class="nav-font-size">平仓材料入库</div>
        </td>
    </tr>
    <tr>
        <td>
            <div id="locNormalOut1" onclick="nav(this.id)" class="nav-font-size">平仓材料出库</div>
        </td>
        <td>
            <div id="locNormalIn" onclick="nav(this.id)" class="nav-font-size">平仓成品入库</div>
        </td>
    </tr>
    <tr>
        <td>
            <div id="locNormalIn" onclick="nav(this.id)" class="nav-font-size">平仓成品入库</div>
        </td>
        <td>
            <div id="locNormalOut" onclick="nav(this.id)" class="nav-font-size">平仓成品出库</div>
        </td>
    </tr>
    <tr>
        <td>
            <div id="locNormalMove" onclick="nav(this.id)" class="nav-font-size">平仓成品移库</div>
        </td>