自动化立体仓库 - WMS系统
zwl
2026-01-13 a52a9bd9365d22e430de95b60f2c3dd821457307
src/main/webapp/views/order/outLocDetlQuery.html
@@ -432,47 +432,39 @@
                var remaining = orderTotal;
                var selectedCount = 0;
                // 对库位数据进行排序,优先选择相同库位的库存
                // allData.sort(function(a, b) {
                //     // 先按库位号排序
                //     if (a.locNo !== b.locNo) {
                //         return a.locNo.localeCompare(b.locNo);
                //     }
                //     // 再按批次排序
                //     return a.batch.localeCompare(b.batch);
                // });
                // 使用原始顺序的副本,从第一页第一个开始勾选
                var sortedData = allData.slice();
                for (var i = 0; i < allData.length; i++) {
                    var item = allData[i];
                // 选择集合(使用唯一键避免索引错乱)
                var selectionKeys = {};
                for (var i = 0; i < sortedData.length; i++) {
                    var item = sortedData[i];
                    var itemAnfme = parseFloat(item.anfme || 0);
                    if (itemAnfme <= 0) {
                        continue; // 跳过数量为0的记录
                    }
                    // 如果剩余数量大于等于当前项的数量,全部勾选
                    if (itemAnfme <= 0) continue;
                    var key = (item.locNo || '') + '|' + (item.batch || '') + '|' + (item.matnr || '') + '|' + (item.anfme || 0);
                    if (remaining >= itemAnfme) {
                        allData[i].LAY_CHECKED = true;
                        selectedTotal += itemAnfme;
                        selectionKeys[key] = true;
                        remaining -= itemAnfme;
                        selectedCount++;
                        window.autoSelectedData.push(item);
                    }
                    // 否则只勾选剩余部分(实际操作中,整个记录都会被勾选,但会在提交时处理数量)
                    else if (remaining > 0) {
                        allData[i].LAY_CHECKED = true;
                        selectedTotal += itemAnfme;
                        // 这里不修改item.anfme,因为这是表格显示的数据
                    } else if (remaining > 0) {
                        selectionKeys[key] = true;
                        remaining = 0;
                        selectedCount++;
                        window.autoSelectedData.push(item);
                    } else {
                        break; // 已满足订单数量,停止勾选
                    }
                    // 如果已经满足订单数量,停止勾选
                    if (remaining <= 0) {
                        break;
                    } else {
                        break;
                    }
                }
                // 根据选择集合同步原始数据的勾选标记,并重新计算选中数量
                selectedTotal = 0;
                for (var i = 0; i < allData.length; i++) {
                    var k = (allData[i].locNo || '') + '|' + (allData[i].batch || '') + '|' + (allData[i].matnr || '') + '|' + (allData[i].anfme || 0);
                    allData[i].LAY_CHECKED = !!selectionKeys[k];
                    if (allData[i].LAY_CHECKED) {
                        selectedTotal += parseFloat(allData[i].anfme || 0);
                    }
                }
@@ -900,4 +892,4 @@
            window.autoSelectedData = null;
        })
</script>
</html>
</html>