自动化立体仓库 - WMS系统
zwl
2025-11-21 39ddd87db8c3dc398557120b096b350b7d32efe4
1.自动勾选
1个文件已修改
93 ■■■■■ 已修改文件
src/main/webapp/views/order/outLocDetlQuery.html 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/outLocDetlQuery.html
@@ -75,6 +75,11 @@
        .over-limit #selectedTotal {
            color: #FF5722 !important; /* 红色警告 */
        }
        /* 订单完成状态 */
        .order-completed {
            background: #5FB878 !important;
        }
    </style>
</head>
<body>
@@ -149,6 +154,7 @@
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn" id="btn-auto-select" lay-event="autoSelect">自动勾选</button>
        <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">提取</button>
    </div>
</script>
@@ -196,6 +202,7 @@
<script>
    var conditionXmSelect;
    var
    function getCol() {
        var cols = [
            {type: 'checkbox'}
@@ -335,6 +342,10 @@
                var checkStatus = table.checkStatus(obj.config.id);
                var data = checkStatus.data;
                switch (obj.event) {
                    case 'autoSelect':
                        // 自动勾选功能
                        autoSelectItems();
                        break;
                    case 'confirm':
                        if (data.length === 0) {
                            layer.msg("请选择数据");
@@ -356,6 +367,88 @@
                }
            });
            // 自动勾选函数 - 修复版本:勾选库存明细,数量累加不超过订单数量
            function autoSelectItems() {
                // 获取当前页所有数据
                var allData = table.cache.stockOut;
                if (!allData || allData.length === 0) {
                    layer.msg("没有可勾选的数据", {icon: 2});
                    return;
                }
                // 如果订单数量为0,不需要勾选
                if (orderTotal <= 0) {
                    layer.msg("订单数量为0,无需勾选", {icon: 2});
                    return;
                }
                // 先取消所有已选中的项
                for (var i = 0; i < allData.length; i++) {
                    allData[i].LAY_CHECKED = false;
                }
                // 重置选中数量
                selectedTotal = 0;
                // 按顺序勾选库存明细,直到累计数量达到订单数量
                var remaining = orderTotal;
                var selectedCount = 0;
                for (var i = 0; i < allData.length; i++) {
                    var itemQuantity = parseFloat(allData[i].anfme || 0);
                    // 跳过数量为0或无效的项
                    if (itemQuantity <= 0) continue;
                    // 如果剩余需求为0,停止勾选
                    if (remaining <= 0) break;
                    // 勾选该项
                    allData[i].LAY_CHECKED = true;
                    selectedTotal += itemQuantity;
                    selectedCount++;
                    // 更新剩余需求
                    remaining = orderTotal - selectedTotal;
                    // 如果勾选后超过订单数量,给出提示并停止勾选
                    if (selectedTotal > orderTotal) {
                        layer.msg('警告:自动勾选后数量超过订单数量,已停止勾选', {icon: 2, time: 3000});
                        break;
                    }
                }
                // 更新表格显示 - 只调用一次
                table.reload('stockOut', {
                    data: allData,
                    done: function() {
                        // 在表格重载完成后,手动更新复选框的DOM状态
                        setTimeout(function() {
                            for (var i = 0; i < allData.length; i++) {
                                if (allData[i].LAY_CHECKED) {
                                    var trElem = $('tr[data-index="' + i + '"]');
                                    if (trElem.length > 0) {
                                        // 操作复选框
                                        trElem.find('input[type="checkbox"]').prop('checked', true);
                                        trElem.find('.layui-form-checkbox').addClass('layui-form-checked');
                                    }
                                }
                            }
                            // 重新渲染表单
                            form.render('checkbox');
                            // 更新显示
                            updateSelectedTotal();
                            if (selectedCount > 0) {
                                layer.msg('已自动勾选 ' + selectedCount + ' 个库存明细,数量: ' + selectedTotal, {icon: 1, time: 2000});
                            } else {
                                layer.msg('没有可勾选的库存明细', {icon: 2});
                            }
                        }, 100);
                    }
                });
            }
            conditionXmSelect = xmSelect.render({
                el: '#condition',
                style: {