| | |
| | | .over-limit #selectedTotal { |
| | | color: #FF5722 !important; /* 红色警告 */ |
| | | } |
| | | |
| | | /* 订单完成状态 */ |
| | | .order-completed { |
| | | background: #5FB878 !important; |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | |
| | | |
| | | <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> |
| | |
| | | |
| | | <script> |
| | | var conditionXmSelect; |
| | | var |
| | | function getCol() { |
| | | var cols = [ |
| | | {type: 'checkbox'} |
| | |
| | | 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("请选择数据"); |
| | |
| | | } |
| | | }); |
| | | |
| | | // 自动勾选函数 - 修复版本:勾选库存明细,数量累加不超过订单数量 |
| | | 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: { |