|
@@ -3,73 +3,48 @@
|
|
|
<div class="box box-main">
|
|
<div class="box box-main">
|
|
|
<div class="box-header">
|
|
<div class="box-header">
|
|
|
<div class="box-title">
|
|
<div class="box-title">
|
|
|
- <i class="fa fa-plus"></i> ${text('增加直接调拨单')}:${moBillNo!}
|
|
|
|
|
|
|
+ <i class="fa fa-plus"></i> ${text('增加直接调拨单')}
|
|
|
</div>
|
|
</div>
|
|
|
<div class="box-tools pull-right">
|
|
<div class="box-tools pull-right">
|
|
|
<a href="javascript:void(0)" class="btn btn-primary" id="btnSubmitTransfer"><i class="fa fa-check"></i> ${text('提交调拨')}</a>
|
|
<a href="javascript:void(0)" class="btn btn-primary" id="btnSubmitTransfer"><i class="fa fa-check"></i> ${text('提交调拨')}</a>
|
|
|
- <a href="${ctx}/mes/erpTransferDirect/selectOrder" class="btn btn-default addTabPage" title="${text('返回')}"><i class="fa fa-mail-reply"></i> ${text('返回')}</a>
|
|
|
|
|
|
|
+ <a href="${ctx}/mes/erpTransferDirect/list" class="btn btn-default addTabPage" title="${text('返回')}"><i class="fa fa-mail-reply"></i> ${text('返回')}</a>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="box-body">
|
|
<div class="box-body">
|
|
|
- <% if (isNotBlank(message!)) { %>
|
|
|
|
|
- <div class="alert alert-warning">${message}</div>
|
|
|
|
|
- <% } %>
|
|
|
|
|
<div class="alert alert-info">
|
|
<div class="alert alert-info">
|
|
|
<i class="fa fa-info-circle"></i>
|
|
<i class="fa fa-info-circle"></i>
|
|
|
- ${text('外发调拨:批号锁定为生产入库批号(与生产订单下查关联)。请选择一行入库明细,填写调拨数量及调出/调入仓库仓位后提交。')}
|
|
|
|
|
|
|
+ ${text('外发调拨:选择 HEV/115 物料,从 ERP 即时库存选择批号,填写调拨数量及调出/调入仓库库位后提交。')}
|
|
|
</div>
|
|
</div>
|
|
|
<div class="row" style="margin-bottom:12px;">
|
|
<div class="row" style="margin-bottom:12px;">
|
|
|
- <div class="col-xs-12 col-sm-6">
|
|
|
|
|
- <label class="control-label">${text('生产订单')}:</label>
|
|
|
|
|
- <span>${moBillNo!}</span>
|
|
|
|
|
|
|
+ <div class="col-xs-12 col-sm-4">
|
|
|
|
|
+ <label class="control-label">${text('调拨类别')}:</label>
|
|
|
|
|
+ <p class="form-control-static"><strong>${text('外发调拨')}</strong></p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="table-responsive" style="margin-bottom:16px;">
|
|
|
|
|
- <table class="table table-bordered table-hover table-condensed" id="sourceTable">
|
|
|
|
|
- <thead>
|
|
|
|
|
- <tr>
|
|
|
|
|
- <th style="width:40px;"></th>
|
|
|
|
|
- <th>${text('入库单号')}</th>
|
|
|
|
|
- <th>${text('行号')}</th>
|
|
|
|
|
- <th>${text('物料编码')}</th>
|
|
|
|
|
- <th>${text('物料名称')}</th>
|
|
|
|
|
- <th>${text('批号')}</th>
|
|
|
|
|
- <th>${text('入库数量')}</th>
|
|
|
|
|
- <th>${text('单位')}</th>
|
|
|
|
|
- <th>${text('仓库')}</th>
|
|
|
|
|
- </tr>
|
|
|
|
|
- </thead>
|
|
|
|
|
- <tbody>
|
|
|
|
|
- <% if(sourceList.~size == 0){ %>
|
|
|
|
|
- <tr><td colspan="9" class="text-center text-muted">${text('无可用生产入库行')}</td></tr>
|
|
|
|
|
|
|
+ <div class="row" style="margin-bottom:12px;">
|
|
|
|
|
+ <div class="col-xs-12 col-sm-6">
|
|
|
|
|
+ <label class="control-label"><span class="required">*</span> ${text('物料编码')}:</label>
|
|
|
|
|
+ <select id="materialNumber" class="form-control" style="max-width:480px;">
|
|
|
|
|
+ <option value="">${text('请选择')}</option>
|
|
|
|
|
+ <% for(mat in materialNumbers){ %>
|
|
|
|
|
+ <% if(mat == '8.10.HEV.10.047696'){ %>
|
|
|
|
|
+ <option value="${mat}">${mat}(HEV)</option>
|
|
|
|
|
+ <% }else if(mat == '8.35.115.10.5003146600021'){ %>
|
|
|
|
|
+ <option value="${mat}">${mat}(115)</option>
|
|
|
<% }else{ %>
|
|
<% }else{ %>
|
|
|
- <% for(row in sourceList){
|
|
|
|
|
- var instockQtyText = @com.jeesite.modules.mes.erp.ErpKingdeeParseUtils.formatDisplayQty(row.realQty);
|
|
|
|
|
- %>
|
|
|
|
|
- <tr class="source-row" data-entry-id="${row.entryId!}" data-bill-no="${row.billNo!}"
|
|
|
|
|
- data-material="${row.materialNumber!}" data-lot="${row.lotNumber!}"
|
|
|
|
|
- data-qty="${instockQtyText!}" data-stock="${row.stockNumber!}">
|
|
|
|
|
- <td class="text-center">
|
|
|
|
|
- <input type="radio" name="instockRow" class="instock-radio" value="${row.entryId!}"/>
|
|
|
|
|
- </td>
|
|
|
|
|
- <td>${row.billNo!}</td>
|
|
|
|
|
- <td class="text-center">${row.seq!}</td>
|
|
|
|
|
- <td>${row.materialNumber!}</td>
|
|
|
|
|
- <td>${row.materialName!}</td>
|
|
|
|
|
- <td><strong>${row.lotNumber!}</strong></td>
|
|
|
|
|
- <td class="text-right">${instockQtyText!}</td>
|
|
|
|
|
- <td class="text-center">${row.unitName!}</td>
|
|
|
|
|
- <td>${row.stockName!} (${row.stockNumber!})</td>
|
|
|
|
|
- </tr>
|
|
|
|
|
|
|
+ <option value="${mat}">${mat}</option>
|
|
|
<% } %>
|
|
<% } %>
|
|
|
<% } %>
|
|
<% } %>
|
|
|
- </tbody>
|
|
|
|
|
- </table>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="row" style="margin-bottom:12px;">
|
|
|
|
|
|
|
+ </select>
|
|
|
|
|
+ </div>
|
|
|
<div class="col-xs-12 col-sm-4">
|
|
<div class="col-xs-12 col-sm-4">
|
|
|
- <label class="control-label"><span class="required">*</span> ${text('调拨数量')}:</label>
|
|
|
|
|
- <input type="number" id="transferQty" class="form-control" min="0" step="any" placeholder="${text('不超过所选入库数量')}"/>
|
|
|
|
|
|
|
+ <label class="control-label"><span class="required">*</span> ${text('单位')}:</label>
|
|
|
|
|
+ <select id="unitNumber" class="form-control" style="max-width:220px;">
|
|
|
|
|
+ <option value="">${text('请先选择物料')}</option>
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <input type="text" id="unitNumberManual" class="form-control" style="max-width:220px;margin-top:6px;display:none;"
|
|
|
|
|
+ placeholder="${text('手工填写单位编码')}"/>
|
|
|
|
|
+ <p class="help-block" id="unitHint"></p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="row" style="margin-bottom:12px;">
|
|
<div class="row" style="margin-bottom:12px;">
|
|
@@ -79,14 +54,16 @@
|
|
|
<div class="alert alert-warning" style="margin-top:6px;padding:8px 12px;">${text('未能从 ERP 加载仓库列表')}</div>
|
|
<div class="alert alert-warning" style="margin-top:6px;padding:8px 12px;">${text('未能从 ERP 加载仓库列表')}</div>
|
|
|
<% }else{ %>
|
|
<% }else{ %>
|
|
|
<select id="srcStockNumber" class="form-control" style="max-width:420px;">
|
|
<select id="srcStockNumber" class="form-control" style="max-width:420px;">
|
|
|
|
|
+ <option value="">${text('请选择')}</option>
|
|
|
<% for(stock in stockList){ %>
|
|
<% for(stock in stockList){ %>
|
|
|
- <option value="${stock.stockNumber!}">${stock.displayLabel!}</option>
|
|
|
|
|
|
|
+ <option value="${stock.stockNumber!}" data-stock-name="${stock.stockName!}"
|
|
|
|
|
+ <% if(stock.stockNumber == defaultSrcStockNumber){ %>selected<% } %>>${stock.displayLabel!}</option>
|
|
|
<% } %>
|
|
<% } %>
|
|
|
</select>
|
|
</select>
|
|
|
<% } %>
|
|
<% } %>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="col-xs-12 col-sm-6">
|
|
<div class="col-xs-12 col-sm-6">
|
|
|
- <label class="control-label">${text('调出仓位')}:</label>
|
|
|
|
|
|
|
+ <label class="control-label">${text('调出库位')}:</label>
|
|
|
<select id="srcStockLocNumber" class="form-control" style="max-width:420px;">
|
|
<select id="srcStockLocNumber" class="form-control" style="max-width:420px;">
|
|
|
<option value="">${text('请先选择调出仓库')}</option>
|
|
<option value="">${text('请先选择调出仓库')}</option>
|
|
|
</select>
|
|
</select>
|
|
@@ -95,6 +72,24 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="row" style="margin-bottom:12px;">
|
|
<div class="row" style="margin-bottom:12px;">
|
|
|
<div class="col-xs-12 col-sm-6">
|
|
<div class="col-xs-12 col-sm-6">
|
|
|
|
|
+ <label class="control-label"><span class="required">*</span> ${text('批号')}:</label>
|
|
|
|
|
+ <input type="hidden" id="lotNumber" value=""/>
|
|
|
|
|
+ <input type="hidden" id="lotMaxQty" value=""/>
|
|
|
|
|
+ <div class="input-group" style="max-width:480px;">
|
|
|
|
|
+ <input type="text" id="lotNumberDisplay" class="form-control" readonly placeholder="${text('请先选择物料和调出仓库,再选批号')}"/>
|
|
|
|
|
+ <span class="input-group-btn">
|
|
|
|
|
+ <button type="button" class="btn btn-default" id="btnPickLot"><i class="fa fa-search"></i> ${text('选批号')}</button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <p class="help-block" id="lotHint"></p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="col-xs-12 col-sm-4">
|
|
|
|
|
+ <label class="control-label"><span class="required">*</span> ${text('调拨数量')}:</label>
|
|
|
|
|
+ <input type="number" id="transferQty" class="form-control" min="0" step="any" placeholder="${text('不超过所选批号可用量')}"/>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="row" style="margin-bottom:12px;">
|
|
|
|
|
+ <div class="col-xs-12 col-sm-6">
|
|
|
<label class="control-label"><span class="required">*</span> ${text('调入仓库')}:</label>
|
|
<label class="control-label"><span class="required">*</span> ${text('调入仓库')}:</label>
|
|
|
<% if(stockList.~size == 0){ %>
|
|
<% if(stockList.~size == 0){ %>
|
|
|
<% }else{ %>
|
|
<% }else{ %>
|
|
@@ -107,7 +102,7 @@
|
|
|
<% } %>
|
|
<% } %>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="col-xs-12 col-sm-6">
|
|
<div class="col-xs-12 col-sm-6">
|
|
|
- <label class="control-label">${text('调入仓位')}:</label>
|
|
|
|
|
|
|
+ <label class="control-label">${text('调入库位')}:</label>
|
|
|
<select id="destStockLocNumber" class="form-control" style="max-width:420px;">
|
|
<select id="destStockLocNumber" class="form-control" style="max-width:420px;">
|
|
|
<option value="">${text('请先选择调入仓库')}</option>
|
|
<option value="">${text('请先选择调入仓库')}</option>
|
|
|
</select>
|
|
</select>
|
|
@@ -117,12 +112,45 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+<div class="modal fade" id="lotModal" tabindex="-1" role="dialog">
|
|
|
|
|
+ <div class="modal-dialog modal-lg" role="document">
|
|
|
|
|
+ <div class="modal-content">
|
|
|
|
|
+ <div class="modal-header">
|
|
|
|
|
+ <button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
|
|
|
|
+ <h4 class="modal-title">${text('选择批号')}</h4>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="modal-body">
|
|
|
|
|
+ <div class="form-inline" style="margin-bottom:10px;">
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <input type="text" id="lotKeyword" class="form-control input-sm" placeholder="${text('批号关键字')}"/>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <button type="button" class="btn btn-primary btn-sm" id="btnLotSearch">${text('搜索')}</button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <p class="help-block" id="lotModalHint"></p>
|
|
|
|
|
+ <div class="table-responsive">
|
|
|
|
|
+ <table class="table table-bordered table-hover table-condensed" id="lotTable">
|
|
|
|
|
+ <thead>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <th style="width:70px;">${text('操作')}</th>
|
|
|
|
|
+ <th>${text('批号')}</th>
|
|
|
|
|
+ <th style="width:160px;">${text('仓库')}</th>
|
|
|
|
|
+ <th style="width:100px;">${text('可用量')}</th>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </thead>
|
|
|
|
|
+ <tbody></tbody>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</div>
|
|
|
<% } %>
|
|
<% } %>
|
|
|
<script>
|
|
<script>
|
|
|
-var moBillNo = '${moBillNo!}';
|
|
|
|
|
var stockLocUrl = '${ctx}/mes/erpTransferDirect/stockLocOptions';
|
|
var stockLocUrl = '${ctx}/mes/erpTransferDirect/stockLocOptions';
|
|
|
|
|
+var lotOptionsUrl = '${ctx}/mes/erpTransferDirect/lotOptions';
|
|
|
|
|
+var lotSearchUrl = '${ctx}/mes/erpTransferDirect/lotSearch';
|
|
|
|
|
+var materialInfoUrl = '${ctx}/mes/erpTransferDirect/materialInfo';
|
|
|
var submitUrl = '${ctx}/mes/erpTransferDirect/submit';
|
|
var submitUrl = '${ctx}/mes/erpTransferDirect/submit';
|
|
|
-var defaultSrcStock = '${defaultSrcStockNumber!}';
|
|
|
|
|
|
|
|
|
|
function unwrapPdaResp(res) {
|
|
function unwrapPdaResp(res) {
|
|
|
if (res && res.result !== undefined && res.data !== undefined) {
|
|
if (res && res.result !== undefined && res.data !== undefined) {
|
|
@@ -131,17 +159,82 @@ function unwrapPdaResp(res) {
|
|
|
return res;
|
|
return res;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function getSelectedRow() {
|
|
|
|
|
- var entryId = $('input[name="instockRow"]:checked').val();
|
|
|
|
|
- if (!entryId) return null;
|
|
|
|
|
- var $tr = $('input[name="instockRow"]:checked').closest('tr');
|
|
|
|
|
- return {
|
|
|
|
|
- entryId: entryId,
|
|
|
|
|
- billNo: $tr.data('bill-no'),
|
|
|
|
|
- lotNumber: $tr.data('lot'),
|
|
|
|
|
- maxQty: parseFloat($tr.data('qty')) || 0,
|
|
|
|
|
- stockNumber: $tr.data('stock') || ''
|
|
|
|
|
- };
|
|
|
|
|
|
|
+function escapeHtml(text) {
|
|
|
|
|
+ return String(text == null ? '' : text)
|
|
|
|
|
+ .replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function clearLotSelection() {
|
|
|
|
|
+ $('#lotNumber').val('');
|
|
|
|
|
+ $('#lotMaxQty').val('');
|
|
|
|
|
+ $('#lotNumberDisplay').val('');
|
|
|
|
|
+ $('#lotHint').text('');
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function clearUnitSelection() {
|
|
|
|
|
+ $('#unitNumber').empty().append('<option value="">${text("请先选择物料")}</option>').show();
|
|
|
|
|
+ $('#unitNumberManual').val('').hide();
|
|
|
|
|
+ $('#unitHint').text('');
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function readUnitNumber() {
|
|
|
|
|
+ var manual = $.trim($('#unitNumberManual').val());
|
|
|
|
|
+ if (manual) {
|
|
|
|
|
+ return manual;
|
|
|
|
|
+ }
|
|
|
|
|
+ return $.trim($('#unitNumber').val());
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function loadMaterialUnits() {
|
|
|
|
|
+ var materialNumber = $.trim($('#materialNumber').val());
|
|
|
|
|
+ clearUnitSelection();
|
|
|
|
|
+ if (!materialNumber) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ $('#unitHint').text('${text("加载单位...")}');
|
|
|
|
|
+ $.get(materialInfoUrl, { materialNumber: materialNumber }, function(data) {
|
|
|
|
|
+ var units = data && data.units ? data.units : [];
|
|
|
|
|
+ var $select = $('#unitNumber');
|
|
|
|
|
+ $select.empty();
|
|
|
|
|
+ if (!units.length) {
|
|
|
|
|
+ $select.hide();
|
|
|
|
|
+ $('#unitNumberManual').show().focus();
|
|
|
|
|
+ $('#unitHint').text(data && data.unitHint ? data.unitHint : '${text("请手工填写单位编码")}');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ $select.show();
|
|
|
|
|
+ $('#unitNumberManual').hide().val('');
|
|
|
|
|
+ if (units.length > 1) {
|
|
|
|
|
+ $select.append('<option value="">${text("请选择")}</option>');
|
|
|
|
|
+ }
|
|
|
|
|
+ var defaultUnit = data && data.defaultUnitNumber ? data.defaultUnitNumber : '';
|
|
|
|
|
+ $.each(units, function(i, unit) {
|
|
|
|
|
+ var number = unit.unitNumber || '';
|
|
|
|
|
+ var label = $.trim(unit.unitName || '') || number;
|
|
|
|
|
+ var selected = (number === defaultUnit) ? ' selected' : '';
|
|
|
|
|
+ $select.append('<option value="' + escapeHtml(number) + '"' + selected + '>' + escapeHtml(label) + '</option>');
|
|
|
|
|
+ });
|
|
|
|
|
+ $('#unitHint').text(data && data.unitHint ? data.unitHint : '');
|
|
|
|
|
+ }, 'json').fail(function() {
|
|
|
|
|
+ $('#unitNumber').hide();
|
|
|
|
|
+ $('#unitNumberManual').show();
|
|
|
|
|
+ $('#unitHint').text('${text("单位加载失败,请手工填写单位编码")}');
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function applyLotSelection(lotNumber, maxQty, hint) {
|
|
|
|
|
+ $('#lotNumber').val(lotNumber);
|
|
|
|
|
+ $('#lotMaxQty').val(maxQty || '');
|
|
|
|
|
+ $('#lotNumberDisplay').val(lotNumber);
|
|
|
|
|
+ $('#lotHint').text(hint || ('已选批号 ' + lotNumber));
|
|
|
|
|
+ if (maxQty > 0) {
|
|
|
|
|
+ $('#transferQty').attr('max', maxQty).val(maxQty);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function getSrcStockName() {
|
|
|
|
|
+ var $opt = $('#srcStockNumber option:selected');
|
|
|
|
|
+ return $.trim($opt.attr('data-stock-name') || $opt.text() || '');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function loadStockLoc(stockNumber, $select, $hint, placeholder) {
|
|
function loadStockLoc(stockNumber, $select, $hint, placeholder) {
|
|
@@ -156,59 +249,136 @@ function loadStockLoc(stockNumber, $select, $hint, placeholder) {
|
|
|
}
|
|
}
|
|
|
var defaultLoc = data.defaultLocNumber || '';
|
|
var defaultLoc = data.defaultLocNumber || '';
|
|
|
$.each(data.locations, function(i, loc) {
|
|
$.each(data.locations, function(i, loc) {
|
|
|
- var label = loc.locNumber + (loc.locName ? ' ' + loc.locName : '');
|
|
|
|
|
|
|
+ var label = $.trim(loc.locName || '') || loc.locNumber;
|
|
|
var selected = (loc.locNumber === defaultLoc) ? ' selected' : '';
|
|
var selected = (loc.locNumber === defaultLoc) ? ' selected' : '';
|
|
|
- $select.append('<option value="' + loc.locNumber + '" data-lockey="' + (loc.locKey || '') + '"' + selected + '>' + label + '</option>');
|
|
|
|
|
|
|
+ $select.append('<option value="' + loc.locNumber + '" data-lockey="' + (loc.locKey || '') + '"' + selected + '>' + escapeHtml(label) + '</option>');
|
|
|
});
|
|
});
|
|
|
$hint.text(data.locHint || '');
|
|
$hint.text(data.locHint || '');
|
|
|
}, 'json');
|
|
}, 'json');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function initStockSelection() {
|
|
|
|
|
- var row = getSelectedRow();
|
|
|
|
|
- if (row && row.stockNumber) {
|
|
|
|
|
- $('#srcStockNumber').val(row.stockNumber);
|
|
|
|
|
- }
|
|
|
|
|
- if (defaultSrcStock && $('#srcStockNumber option[value="' + defaultSrcStock + '"]').length) {
|
|
|
|
|
- if (!$('#srcStockNumber').val()) {
|
|
|
|
|
- $('#srcStockNumber').val(defaultSrcStock);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+function renderLotTable(lots) {
|
|
|
|
|
+ var $tbody = $('#lotTable tbody');
|
|
|
|
|
+ $tbody.empty();
|
|
|
|
|
+ if (!lots || lots.length === 0) {
|
|
|
|
|
+ $tbody.append('<tr><td colspan="4" class="text-center text-muted">${text("无可用批号")}</td></tr>');
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
- loadStockLoc($('#srcStockNumber').val(), $('#srcStockLocNumber'), $('#srcLocHint'), '${text("无仓位")}');
|
|
|
|
|
- loadStockLoc($('#destStockNumber').val(), $('#destStockLocNumber'), $('#destLocHint'), '${text("无仓位")}');
|
|
|
|
|
|
|
+ $.each(lots, function(i, lot) {
|
|
|
|
|
+ var lotNo = lot.lotNumber || '';
|
|
|
|
|
+ var qtyText = lot.qtyText || lot.qty || '0';
|
|
|
|
|
+ var maxQty = parseFloat(qtyText) || 0;
|
|
|
|
|
+ var stockLabel = (lot.stockNumber || '') + (lot.stockName ? ' ' + lot.stockName : '');
|
|
|
|
|
+ var row = '<tr>' +
|
|
|
|
|
+ '<td class="text-center"><a href="javascript:void(0)" class="btn-lot-pick" data-lot="' + escapeHtml(lotNo) + '" data-qty="' + maxQty + '">${text("选择")}</a></td>' +
|
|
|
|
|
+ '<td><strong>' + escapeHtml(lotNo) + '</strong></td>' +
|
|
|
|
|
+ '<td>' + escapeHtml(stockLabel) + '</td>' +
|
|
|
|
|
+ '<td class="text-right">' + escapeHtml(qtyText) + '</td>' +
|
|
|
|
|
+ '</tr>';
|
|
|
|
|
+ $tbody.append(row);
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-$(document).on('change', 'input[name="instockRow"]', function() {
|
|
|
|
|
- var row = getSelectedRow();
|
|
|
|
|
- if (row) {
|
|
|
|
|
- $('#transferQty').attr('max', row.maxQty).val(row.maxQty);
|
|
|
|
|
- if (row.stockNumber) {
|
|
|
|
|
- $('#srcStockNumber').val(row.stockNumber);
|
|
|
|
|
- loadStockLoc(row.stockNumber, $('#srcStockLocNumber'), $('#srcLocHint'), '${text("无仓位")}');
|
|
|
|
|
|
|
+function loadLotOptions(useSearch) {
|
|
|
|
|
+ var materialNumber = $.trim($('#materialNumber').val());
|
|
|
|
|
+ var stockNumber = $.trim($('#srcStockNumber').val());
|
|
|
|
|
+ if (!materialNumber) {
|
|
|
|
|
+ js.showMessage('${text("请先选择物料编码")}');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!stockNumber) {
|
|
|
|
|
+ js.showMessage('${text("请先选择调出仓库")}');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ var pickQty = parseFloat($('#transferQty').val()) || null;
|
|
|
|
|
+ var params = {
|
|
|
|
|
+ materialNumber: materialNumber,
|
|
|
|
|
+ stockNumber: stockNumber,
|
|
|
|
|
+ stockName: getSrcStockName()
|
|
|
|
|
+ };
|
|
|
|
|
+ var url = lotOptionsUrl;
|
|
|
|
|
+ if (useSearch) {
|
|
|
|
|
+ url = lotSearchUrl;
|
|
|
|
|
+ params.lotKeyword = $.trim($('#lotKeyword').val());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ params.pickQty = pickQty;
|
|
|
|
|
+ }
|
|
|
|
|
+ $('#lotModalHint').text('${text("加载中...")}');
|
|
|
|
|
+ $.get(url, params, function(data) {
|
|
|
|
|
+ renderLotTable(data && data.lots ? data.lots : []);
|
|
|
|
|
+ $('#lotModalHint').text(data && data.lotHint ? data.lotHint : '');
|
|
|
|
|
+ if (!useSearch && data && data.suggestedLotNumber && !$('#lotNumber').val()) {
|
|
|
|
|
+ // 仅提示,不自动选中
|
|
|
}
|
|
}
|
|
|
|
|
+ }, 'json').fail(function() {
|
|
|
|
|
+ $('#lotModalHint').text('${text("批号查询失败")}');
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+$('#materialNumber, #srcStockNumber').on('change', function() {
|
|
|
|
|
+ if ($(this).attr('id') === 'materialNumber') {
|
|
|
|
|
+ clearUnitSelection();
|
|
|
|
|
+ loadMaterialUnits();
|
|
|
|
|
+ }
|
|
|
|
|
+ clearLotSelection();
|
|
|
|
|
+ if ($('#srcStockNumber').val()) {
|
|
|
|
|
+ loadStockLoc($('#srcStockNumber').val(), $('#srcStockLocNumber'), $('#srcLocHint'), '${text("无库位")}');
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-$('#srcStockNumber').on('change', function() {
|
|
|
|
|
- loadStockLoc($(this).val(), $('#srcStockLocNumber'), $('#srcLocHint'), '${text("无仓位")}');
|
|
|
|
|
-});
|
|
|
|
|
$('#destStockNumber').on('change', function() {
|
|
$('#destStockNumber').on('change', function() {
|
|
|
- loadStockLoc($(this).val(), $('#destStockLocNumber'), $('#destLocHint'), '${text("无仓位")}');
|
|
|
|
|
|
|
+ loadStockLoc($(this).val(), $('#destStockLocNumber'), $('#destLocHint'), '${text("无库位")}');
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-$('#btnSubmitTransfer').on('click', function() {
|
|
|
|
|
- var row = getSelectedRow();
|
|
|
|
|
- if (!row) {
|
|
|
|
|
- js.showMessage('${text("请选择一行生产入库明细")}');
|
|
|
|
|
|
|
+$('#btnPickLot').on('click', function() {
|
|
|
|
|
+ if (!$.trim($('#materialNumber').val())) {
|
|
|
|
|
+ js.showMessage('${text("请先选择物料编码")}');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!$.trim($('#srcStockNumber').val())) {
|
|
|
|
|
+ js.showMessage('${text("请先选择调出仓库")}');
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
+ $('#lotKeyword').val('');
|
|
|
|
|
+ loadLotOptions(false);
|
|
|
|
|
+ $('#lotModal').modal('show');
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+$('#btnLotSearch').on('click', function() {
|
|
|
|
|
+ loadLotOptions(true);
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+$(document).on('click', '.btn-lot-pick', function() {
|
|
|
|
|
+ var lotNumber = $(this).data('lot');
|
|
|
|
|
+ var maxQty = parseFloat($(this).data('qty')) || 0;
|
|
|
|
|
+ applyLotSelection(lotNumber, maxQty, '已选批号 ' + lotNumber + ',可用 ' + maxQty);
|
|
|
|
|
+ $('#lotModal').modal('hide');
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+$('#btnSubmitTransfer').on('click', function() {
|
|
|
|
|
+ var materialNumber = $.trim($('#materialNumber').val());
|
|
|
|
|
+ var lotNumber = $.trim($('#lotNumber').val());
|
|
|
|
|
+ var unitNumber = readUnitNumber();
|
|
|
var qty = parseFloat($('#transferQty').val());
|
|
var qty = parseFloat($('#transferQty').val());
|
|
|
|
|
+ var maxQty = parseFloat($('#lotMaxQty').val()) || 0;
|
|
|
|
|
+ if (!materialNumber) {
|
|
|
|
|
+ js.showMessage('${text("请选择物料编码")}');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!unitNumber) {
|
|
|
|
|
+ js.showMessage('${text("请选择或填写单位")}');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!lotNumber) {
|
|
|
|
|
+ js.showMessage('${text("请选择批号")}');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
if (!qty || qty <= 0) {
|
|
if (!qty || qty <= 0) {
|
|
|
js.showMessage('${text("请填写大于 0 的调拨数量")}');
|
|
js.showMessage('${text("请填写大于 0 的调拨数量")}');
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- if (row.maxQty > 0 && qty > row.maxQty) {
|
|
|
|
|
- js.showMessage('${text("调拨数量不能超过入库数量")} ' + row.maxQty);
|
|
|
|
|
|
|
+ if (maxQty > 0 && qty > maxQty) {
|
|
|
|
|
+ js.showMessage('${text("调拨数量不能超过批号可用量")} ' + maxQty);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
var srcStock = $.trim($('#srcStockNumber').val());
|
|
var srcStock = $.trim($('#srcStockNumber').val());
|
|
@@ -226,9 +396,9 @@ $('#btnSubmitTransfer').on('click', function() {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
var payload = {
|
|
var payload = {
|
|
|
- moBillNo: moBillNo,
|
|
|
|
|
- instockEntryId: row.entryId,
|
|
|
|
|
- instockBillNo: row.billNo,
|
|
|
|
|
|
|
+ materialNumber: materialNumber,
|
|
|
|
|
+ lotNumber: lotNumber,
|
|
|
|
|
+ unitNumber: unitNumber,
|
|
|
qty: qty,
|
|
qty: qty,
|
|
|
srcStockNumber: srcStock,
|
|
srcStockNumber: srcStock,
|
|
|
srcStockLocNumber: $.trim($('#srcStockLocNumber').val()),
|
|
srcStockLocNumber: $.trim($('#srcStockLocNumber').val()),
|
|
@@ -259,9 +429,7 @@ $('#btnSubmitTransfer').on('click', function() {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
$(function() {
|
|
$(function() {
|
|
|
- if ($('input[name="instockRow"]').length === 1) {
|
|
|
|
|
- $('input[name="instockRow"]').prop('checked', true).trigger('change');
|
|
|
|
|
- }
|
|
|
|
|
- initStockSelection();
|
|
|
|
|
|
|
+ loadStockLoc($('#srcStockNumber').val(), $('#srcStockLocNumber'), $('#srcLocHint'), '${text("无库位")}');
|
|
|
|
|
+ loadStockLoc($('#destStockNumber').val(), $('#destStockLocNumber'), $('#destLocHint'), '${text("无库位")}');
|
|
|
});
|
|
});
|
|
|
</script>
|
|
</script>
|