From e93f13a9296affa2cd7a5b7c667aa5e5a4f5fde6 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 25 四月 2026 10:33:24 +0800
Subject: [PATCH] 订单出库可指定部分出库
---
src/main/webapp/static/js/orderPakout/out.js | 138 ++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 127 insertions(+), 11 deletions(-)
diff --git a/src/main/webapp/static/js/orderPakout/out.js b/src/main/webapp/static/js/orderPakout/out.js
index a7ba719..4b9a8f1 100644
--- a/src/main/webapp/static/js/orderPakout/out.js
+++ b/src/main/webapp/static/js/orderPakout/out.js
@@ -143,13 +143,14 @@
,area: ['1200px', '700px']
,shade: 0.5
,shadeClose: false
- ,btn: ['绔嬪嵆鍑哄簱', '绋嶅悗澶勭悊']
+ ,btn: ['涓�閿嚭搴�', '閮ㄥ垎鍑哄簱', '绋嶅悗澶勭悊']
,btnAlign: 'c'
,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
,content: $('#pakoutPreviewBox').html()
,success: function(layero, index){
stoPreTabIdx = table.render({
elem: '#stoPreTab',
+ id: 'stoPreTab',
data: res.data,
height: 520,
page: false,
@@ -160,7 +161,8 @@
{field: 'orderNo', title: '鍗曟嵁缂栧彿', merge: true, align: 'center'},
{field: 'title', title: '鍟嗗搧', merge: true, align: 'center', width: 350},
{field: 'batch', title: '搴忓垪鐮�', align: 'center'},
- {field: 'anfme', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+ {field: 'anfme', title: '闇�姹傛暟閲�', align: 'center', width: 90, style: 'font-weight: bold'},
+ {field: 'anfme$', align: 'center', title: '鍑哄簱鏁伴噺', edit: 'text', style: 'font-weight: bold'},
{field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
{field: 'frozen$', title: '鏄庣粏', align: 'center', width: 90, templet: '#locFrozen'},
{field: 'frozenLoc$', title: '搴撲綅', align: 'center', width: 90, templet: '#locFrozenLoc'},
@@ -170,7 +172,12 @@
done: function (res) {
tableMerge.render(this);
$('.layui-table-body.layui-table-main').css("overflow", "auto");
- tableCache = tableData = table.cache.stoPreTab;
+ // tableCache = tableData = table.cache.stoPreTab;
+ tableCache = table.cache['stoPreTab'];
+ tableCache.forEach(item => {
+ // console.log('anfme:', item.anfme, 'anfme$:', item.anfme$);
+ item.anfme$ = item.anfme$ ?? item.anfme;
+ });
}
});
// 淇敼鍑哄簱绔�
@@ -185,6 +192,61 @@
obj.othis.children().find("input").css("color", "blue");
return false;
});
+ table.on('edit(stoPreTab)', function(obj) {
+ let field = obj.field;
+ let value = obj.value;
+ let index = obj.tr.data('index');
+
+ // 鍙鐞� anfme$ 瀛楁鐨勬牎楠�
+ if (field === 'anfme$') {
+ let numValue = Number(value);
+ // 鐩存帴浠巘ableCache鑾峰彇鏈�鏂版暟鎹�
+ let rowData = tableCache[index];
+ let max = Number(rowData.anfme); // 鑾峰彇鏈�澶у彲杈撳叆鍊硷紙闇�姹傛暟閲忥級
+
+ if (isNaN(numValue)) {
+ layer.msg("璇疯緭鍏ユ暟瀛�", {icon: 2});
+ // 鎭㈠涓洪渶姹傛暟閲�
+ setCellValue(index, rowData.anfme);
+ return;
+ }
+
+ if (numValue <= 0) {
+ layer.msg("鍑哄簱鏁伴噺蹇呴』澶т簬0", {icon: 2});
+ // 鎭㈠涓洪渶姹傛暟閲�
+ setCellValue(index, rowData.anfme);
+ return;
+ }
+
+ if (numValue > max) {
+ layer.msg("涓嶈兘澶т簬 " + max, {icon: 2});
+ // 鎭㈠涓洪渶姹傛暟閲�
+ setCellValue(index, rowData.anfme);
+ return;
+ }
+
+ // 鏍¢獙閫氳繃锛岀洿鎺ユ洿鏂�
+ // console.log('鏍¢獙閫氳繃锛岃缃�间负:', numValue);
+ }
+ });
+
+ // 璁剧疆鍗曞厓鏍煎�肩殑鍑芥暟锛堝悓鏃舵洿鏂扮紦瀛樺拰鏄剧ず锛�
+ function setCellValue(index, newValue) {
+ // console.log('璁剧疆绗�' + index + '琛岀殑anfme$涓�:', newValue);
+
+ // 1. 鏇存柊tableCache锛堣繖鏄渶鏍规湰鐨勬暟鎹簮锛�
+ tableCache[index].anfme$ = newValue;
+
+ // 2. 鏇存柊DOM鏄剧ず
+ let cell = $('div[lay-id=stoPreTab] tr[data-index="' + index + '"] td[data-field="anfme$"] input.layui-table-edit');
+ if (cell.length > 0) {
+ cell.val(newValue);
+ } else {
+ // 濡傛灉涓嶅湪缂栬緫鐘舵�侊紝鏇存柊鏄剧ず鏂囨湰
+ cell = $('div[lay-id=stoPreTab] tr[data-index="' + index + '"] td[data-field="anfme$"] div.layui-table-cell');
+ cell.text(newValue);
+ }
+ }
// 鎵归噺淇敼鍑哄簱绔�
form.on('submit(batchModifySta)', function () {
let stoPreTabData = layui.table.checkStatus('stoPreTab').data;
@@ -263,11 +325,14 @@
,yes: function(index, layero){
//鎸夐挳銆愮珛鍗冲嚭搴撱�戠殑鍥炶皟
pakout(tableCache, index);
- }
- ,btn2: function(index, layero){
- //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
- layer.close(index)
- //return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
+ },
+ btn2: function(index, layero){
+ // 鎸夐挳銆愰儴鍒嗗嚭搴撱�戠殑鍥炶皟 - 涓嶅叧闂晫闈�
+ return partialPakout(tableCache, index); // 璋冪敤閮ㄥ垎鍑哄簱鍑芥暟
+ },
+ btn3: function(index, layero){
+ // 鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
+ layer.close(index);
}
});
} else if (res.code === 403){
@@ -280,18 +345,69 @@
}
function pakout(tableCache, layerIndex) {
- // let loadIndex = layer.load(2);
+ // 娣诲姞纭妗�
+ layer.confirm('纭畾瑕佷竴閿嚭搴撳叏閮ㄧ墿鏂欏悧锛�', {
+ icon: 3,
+ title: '纭涓�閿嚭搴�',
+ btn: ['纭畾', '鍙栨秷']
+ }, function(confirmIndex) {
+ // 鐢ㄦ埛鐐瑰嚮纭畾鍚庢墽琛屽嚭搴撴搷浣�
+ layer.close(confirmIndex);
+ notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
+ $.ajax({
+ url: baseUrl + "/out/pakout/auth",
+ headers: {'token': localStorage.getItem('token')},
+ contentType: 'application/json;charset=UTF-8',
+ data: JSON.stringify(tableCache),
+ method: 'POST',
+ success: function (res) {
+ notice.destroy();
+ if (res.code === 200) {
+ layer.close(layerIndex);
+ layer.msg(res.msg, {icon: 1});
+ insTb.reload({where: null});
+ insTb2.reload({where: null, page: {curr: 1}});
+ } else if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ } else {
+ layer.msg(res.msg, {icon: 2})
+ }
+ }
+ });
+ });
+ }
+
+ function partialPakout(tableCache, layerIndex) {
+
+ let stoPreTabData = layui.table.checkStatus('stoPreTab').data;
+ if (stoPreTabData.length < 1) {
+ layer.msg("璇烽�夋嫨閮ㄥ垎鍑哄簱鏁版嵁", {icon: 7});
+ return false;
+ }
+
+ // 鎵撳嵃鍕鹃�夌殑鏁版嵁
+ // console.log("鍕鹃�夌殑鏁版嵁:", JSON.stringify(stoPreTabData));
+
+ // 灏嗗嬀閫夋暟鎹殑 anfme$ 鍊艰祴缁� anfme
+ stoPreTabData.forEach(item => {
+ // console.log('淇敼鍓� - anfme:', item.anfme, 'anfme$:', item.anfme$);
+ item.anfme = Number(item.anfme$); // 鐩存帴灏嗗嬀閫夋暟鎹殑 anfme$ 璧嬬粰 anfme
+ // console.log('淇敼鍚� - anfme:', item.anfme);
+ });
+
+ // console.log("鎻愪氦鐨勬暟鎹�:", JSON.stringify(stoPreTabData));
+
+ // 浣跨敤涓庝竴閿嚭搴撶浉鍚岀殑鎺ュ彛鎻愪氦
notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
$.ajax({
url: baseUrl + "/out/pakout/auth",
headers: {'token': localStorage.getItem('token')},
contentType: 'application/json;charset=UTF-8',
- data: JSON.stringify(tableCache),
+ data: JSON.stringify(stoPreTabData),
method: 'POST',
success: function (res) {
notice.destroy();
if (res.code === 200) {
- layer.close(layerIndex);
layer.msg(res.msg, {icon: 1});
insTb.reload({where: null});
insTb2.reload({where: null, page: {curr: 1}});
--
Gitblit v1.9.1