| | |
| | | .over-limit #selectedTotal { |
| | | color: #FF5722 !important; /* 红色警告 */ |
| | | } |
| | | |
| | | /* 订单完成状态 */ |
| | | .order-completed { |
| | | background: #5FB878 !important; |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="brand" placeholder="生产线" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="sku" placeholder="等级" autocomplete="off"> |
| | | <div class="layui-input-inline" style="margin-right: 100px;"> |
| | | <div id="condition" name="condition"> |
| | | |
| | | </div> |
| | | </div> |
| | | <!-- 日期范围 --> |
| | |
| | | |
| | | <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> |
| | | |
| | | <script> |
| | | var conditionXmSelect; |
| | | var |
| | | function getCol() { |
| | | var cols = [ |
| | | {type: 'checkbox', merge: ['locNo']} |
| | | {type: 'checkbox'} |
| | | , {field: 'locNo', align: 'center', title: '库位号', merge: true, style: 'font-weight: bold'} |
| | | // ,{field: 'locNo$', align: 'center',title: '库位号'} |
| | | ]; |
| | |
| | | }).extend({ |
| | | notice: 'notice/notice', |
| | | }) |
| | | .use(['table', 'notice', 'laydate', 'form', 'admin', 'tableMerge'], function () { |
| | | .use(['table', 'notice', 'laydate', 'form', 'admin', 'tableMerge','xmSelect'], function () { |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | |
| | | var admin = layui.admin; |
| | | var tableMerge = layui.tableMerge; |
| | | var notice = layui.notice; |
| | | var xmSelect = layui.xmSelect; |
| | | |
| | | $('#matnr').val(parent.matnR); |
| | | $('#anfme').val(parent.anfme); |
| | |
| | | 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: { |
| | | width: '200px', |
| | | }, |
| | | autoRow: true, |
| | | toolbar: {show: true}, |
| | | filterable: true, |
| | | data: [ |
| | | { |
| | | name: '成品智能立库', |
| | | value: '成品智能立库' |
| | | }, |
| | | { |
| | | name: '特采智能立库', |
| | | value: '特采智能立库' |
| | | } |
| | | ] |
| | | }) |
| | | |
| | | // 搜索栏搜索事件 |
| | | form.on('submit(search)', function (data) { |
| | | tableReload(); |