From 893f659d3923a710273b1e180eea2bcf614df403 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期五, 21 十一月 2025 17:43:38 +0800
Subject: [PATCH] 1.自动勾选
---
src/main/webapp/views/order/outLocDetlQuery.html | 223 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 152 insertions(+), 71 deletions(-)
diff --git a/src/main/webapp/views/order/outLocDetlQuery.html b/src/main/webapp/views/order/outLocDetlQuery.html
index 75bbbfc..c8535ef 100644
--- a/src/main/webapp/views/order/outLocDetlQuery.html
+++ b/src/main/webapp/views/order/outLocDetlQuery.html
@@ -202,7 +202,6 @@
<script>
var conditionXmSelect;
- var
function getCol() {
var cols = [
{type: 'checkbox'}
@@ -297,6 +296,14 @@
// 鍒濆鍖栭�変腑鏁伴噺
selectedTotal = 0;
updateSelectedTotal();
+
+ // 浠庡悗绔幏鍙栨暟鎹悗锛岄粯璁よ嚜鍔ㄥ嬀閫夋暟鎹紝鍕鹃�夊埌鍜岃鍗曟暟閲忎竴鑷�
+ if (res.data.length > 0 && orderTotal > 0) {
+ // 寤惰繜鎵ц锛岀‘淇濊〃鏍兼覆鏌撳畬鎴�
+ setTimeout(function() {
+ autoSelectItems();
+ }, 100);
+ }
}
});
@@ -306,29 +313,30 @@
var checked = obj.checked;
var type = obj.type;
- if (type === 'one') {
- // 鍗曚釜閫夋嫨
- if (checked) {
- selectedTotal += parseFloat(data.anfme || 0);
- } else {
- selectedTotal -= parseFloat(data.anfme || 0);
- }
- } else if (type === 'all') {
- // 鍏ㄩ��
- var checkStatus = table.checkStatus('stockOut');
- if (checked) {
- // 璁$畻褰撳墠椤垫墍鏈夋暟鎹殑鏁伴噺鎬诲拰
- checkStatus.data.forEach(function(item){
- selectedTotal += parseFloat(item.anfme || 0);
- });
- } else {
- // 鍙栨秷鍏ㄩ�夛紝鍑忓幓褰撳墠椤垫墍鏈夋暟鎹殑鏁伴噺鎬诲拰
- checkStatus.data.forEach(function(item){
- selectedTotal -= parseFloat(item.anfme || 0);
- });
- }
+ // 纭繚window.autoSelectedData宸插垵濮嬪寲
+ if (!window.autoSelectedData) {
+ window.autoSelectedData = [];
}
+ // 閲嶆柊璁$畻selectedTotal锛岀‘淇濅笌瀹為檯鍕鹃�夌姸鎬佷竴鑷�
+ var updateSelectedTotalFromCheckboxes = function() {
+ var checkStatus = table.checkStatus('stockOut');
+ selectedTotal = 0;
+
+ // 鏇存柊window.autoSelectedData锛屽彧淇濈暀瀹為檯鍕鹃�夌殑鏁版嵁
+ window.autoSelectedData = [];
+
+ // 閲嶆柊璁$畻閫変腑鎬绘暟鍜屾洿鏂癮utoSelectedData
+ checkStatus.data.forEach(function(item) {
+ selectedTotal += parseFloat(item.anfme || 0);
+ window.autoSelectedData.push(item);
+ });
+ };
+
+ // 涓嶇鏄崟閫夎繕鏄叏閫夛紝閮介噸鏂拌绠楀疄闄呭嬀閫夌殑鏁版嵁鍜屾�绘暟
+ updateSelectedTotalFromCheckboxes();
+
+ // 鏇存柊鏄剧ず閫変腑鐨勬暟閲�
updateSelectedTotal();
// 濡傛灉閫変腑鐨勬暟閲忚秴杩囪鍗曟暟閲忥紝缁欏嚭鎻愮ず
@@ -340,17 +348,20 @@
// 鐩戝惉澶村伐鍏锋爮浜嬩欢
table.on('toolbar(stockOut)', function (obj) {
var checkStatus = table.checkStatus(obj.config.id);
- var data = checkStatus.data;
+ var data = checkStatus.data; // 杩欓噷鍙幏鍙栧疄闄呭嬀閫夌殑鏁版嵁
switch (obj.event) {
case 'autoSelect':
// 鑷姩鍕鹃�夊姛鑳�
autoSelectItems();
break;
case 'confirm':
+ // 鍙娇鐢ㄧ晫闈笂瀹為檯鍕鹃�夌殑鏁版嵁锛屼笉鍐嶉澶栨暣鍚坵indow.autoSelectedData
+ // 妫�鏌ユ槸鍚︽湁鏁版嵁鍙彁鍙�
if (data.length === 0) {
layer.msg("璇烽�夋嫨鏁版嵁");
return;
}
+
// 妫�鏌ラ�変腑鐨勬暟閲忔槸鍚﹁秴杩囪鍗曟暟閲�
if (selectedTotal > orderTotal) {
layer.confirm('閫変腑鐨勬暟閲忓凡瓒呰繃璁㈠崟鏁伴噺锛屾槸鍚︾户缁紵', {
@@ -367,7 +378,7 @@
}
});
- // 鑷姩鍕鹃�夊嚱鏁� - 淇鐗堟湰锛氬嬀閫夊簱瀛樻槑缁嗭紝鏁伴噺绱姞涓嶈秴杩囪鍗曟暟閲�
+ // 鑷姩鍕鹃�夊嚱鏁� - 鍕鹃�夊簱瀛樻槑缁嗭紝鏁伴噺绱姞涓嶈秴杩囪鍗曟暟閲�
function autoSelectItems() {
// 鑾峰彇褰撳墠椤垫墍鏈夋暟鎹�
var allData = table.cache.stockOut;
@@ -389,65 +400,102 @@
// 閲嶇疆閫変腑鏁伴噺
selectedTotal = 0;
+ // 鍒濆鍖栬嚜鍔ㄩ�変腑鏁版嵁
+ window.autoSelectedData = [];
// 鎸夐『搴忓嬀閫夊簱瀛樻槑缁嗭紝鐩村埌绱鏁伴噺杈惧埌璁㈠崟鏁伴噺
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);
+ });
+
for (var i = 0; i < allData.length; i++) {
- var itemQuantity = parseFloat(allData[i].anfme || 0);
+ var item = allData[i];
+ var itemAnfme = parseFloat(item.anfme || 0);
- // 璺宠繃鏁伴噺涓�0鎴栨棤鏁堢殑椤�
- if (itemQuantity <= 0) continue;
+ if (itemAnfme <= 0) {
+ continue; // 璺宠繃鏁伴噺涓�0鐨勮褰�
+ }
- // 濡傛灉鍓╀綑闇�姹備负0锛屽仠姝㈠嬀閫�
- if (remaining <= 0) break;
+ // 濡傛灉鍓╀綑鏁伴噺澶т簬绛変簬褰撳墠椤圭殑鏁伴噺锛屽叏閮ㄥ嬀閫�
+ if (remaining >= itemAnfme) {
+ allData[i].LAY_CHECKED = true;
+ selectedTotal += itemAnfme;
+ remaining -= itemAnfme;
+ selectedCount++;
+ window.autoSelectedData.push(item);
+ }
+ // 鍚﹀垯鍙嬀閫夊墿浣欓儴鍒嗭紙瀹為檯鎿嶄綔涓紝鏁翠釜璁板綍閮戒細琚嬀閫夛紝浣嗕細鍦ㄦ彁浜ゆ椂澶勭悊鏁伴噺锛�
+ else if (remaining > 0) {
+ allData[i].LAY_CHECKED = true;
+ selectedTotal += itemAnfme;
+ // 杩欓噷涓嶄慨鏀筰tem.anfme锛屽洜涓鸿繖鏄〃鏍兼樉绀虹殑鏁版嵁
+ remaining = 0;
+ selectedCount++;
+ window.autoSelectedData.push(item);
+ } else {
+ break; // 宸叉弧瓒宠鍗曟暟閲忥紝鍋滄鍕鹃��
+ }
- // 鍕鹃�夎椤�
- allData[i].LAY_CHECKED = true;
- selectedTotal += itemQuantity;
- selectedCount++;
-
- // 鏇存柊鍓╀綑闇�姹�
- remaining = orderTotal - selectedTotal;
-
- // 濡傛灉鍕鹃�夊悗瓒呰繃璁㈠崟鏁伴噺锛岀粰鍑烘彁绀哄苟鍋滄鍕鹃��
- if (selectedTotal > orderTotal) {
- layer.msg('璀﹀憡锛氳嚜鍔ㄥ嬀閫夊悗鏁伴噺瓒呰繃璁㈠崟鏁伴噺锛屽凡鍋滄鍕鹃��', {icon: 2, time: 3000});
+ // 濡傛灉宸茬粡婊¤冻璁㈠崟鏁伴噺锛屽仠姝㈠嬀閫�
+ if (remaining <= 0) {
break;
}
}
- // 鏇存柊琛ㄦ牸鏄剧ず - 鍙皟鐢ㄤ竴娆�
- table.reload('stockOut', {
- data: allData,
- done: function() {
- // 鍦ㄨ〃鏍奸噸杞藉畬鎴愬悗锛屾墜鍔ㄦ洿鏂板閫夋鐨凞OM鐘舵��
- 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);
+ // 涓嶉噸鏂板姞杞借〃鏍硷紝鐩存帴鏇存柊琛ㄦ牸鐨勫嬀閫夌姸鎬�
+ var checkStatus = table.checkStatus('stockOut');
+ // 閬嶅巻琛ㄦ牸琛屽苟璁剧疆鍕鹃�夌姸鎬�
+ $('.layui-table-box tr').each(function(index, tr) {
+ var rowIndex = $(tr).data('index');
+ if (rowIndex !== undefined && allData[rowIndex]) {
+ var checkbox = $(tr).find('input[type="checkbox"]');
+ checkbox.prop('checked', allData[rowIndex].LAY_CHECKED);
+ // 鍚屾layui鐨勫嬀閫夌姸鎬佹牱寮�
+ if (allData[rowIndex].LAY_CHECKED) {
+ $(tr).addClass('layui-table-click');
+ checkbox.next().addClass('layui-form-checked');
+ } else {
+ $(tr).removeClass('layui-table-click');
+ checkbox.next().removeClass('layui-form-checked');
+ }
}
});
+ // 鍚屾鍏ㄩ�夋鐘舵��
+ var headerCheckbox = $('.layui-table-header input[type="checkbox"]');
+ var allChecked = allData.length > 0;
+ for (var i = 0; i < allData.length; i++) {
+ if (!allData[i].LAY_CHECKED) {
+ allChecked = false;
+ break;
+ }
+ }
+ headerCheckbox.prop('checked', allChecked);
+ if (allChecked) {
+ headerCheckbox.next().addClass('layui-form-checked');
+ } else {
+ headerCheckbox.next().removeClass('layui-form-checked');
+ }
+
+ // 鏇存柊鏄剧ず閫変腑鐨勬暟閲�
+ updateSelectedTotal();
+
+ // 濡傛灉娌℃湁鍕鹃�夎冻澶熺殑鏁版嵁锛岀粰鍑烘彁绀�
+ if (selectedTotal < orderTotal && selectedCount > 0) {
+ layer.msg('宸查�夋嫨鍏ㄩ儴鍙敤搴撳瓨锛屼絾浠嶆湭婊¤冻璁㈠崟鏁伴噺锛�', {icon: 2, time: 3000});
+ } else if (selectedCount === 0) {
+ layer.msg('娌℃湁鍙嬀閫夌殑鏁版嵁锛岃妫�鏌ュ簱瀛橈紒', {icon: 2, time: 3000});
+ } else {
+ layer.msg('鑷姩鍕鹃�夊畬鎴愶紝宸插嬀閫� ' + selectedCount + ' 鏉¤褰曪紒', {icon: 1, time: 2000});
+ }
}
conditionXmSelect = xmSelect.render({
el: '#condition',
@@ -494,11 +542,20 @@
}
function pakoutPreview(id, data) {
+ // 纭繚浼犲叆鐨勬暟鎹湁鏁�
+ if (!data || data.length === 0) {
+ layer.msg("璇烽�夋嫨鏁版嵁");
+ return;
+ }
+
+ // 瀛樺偍瀹為檯鍕鹃�夌殑鏁版嵁鍒板叏灞�鍙橀噺锛岀敤浜庡嚭搴撴搷浣�
+ window.selectedDataForPakout = data;
+
console.log("id=" + id)
let loadIndex = layer.load(2);
var da = {
"id": JSON.stringify(id),
- "list": data
+ "list": data // 鍙娇鐢ㄥ疄闄呭嬀閫夌殑鏁版嵁
}
$.ajax({
url: baseUrl + "/out/pakout/preview/auth1",
@@ -657,11 +714,14 @@
}
, yes: function (index, layero) {
//鎸夐挳銆愮珛鍗冲嚭搴撱�戠殑鍥炶皟
- pakout(tableCache, index);
+ // 涓嶅啀浼犻�抰ableCache锛宲akout鍑芥暟灏嗕娇鐢╳indow.selectedDataForPakout
+ pakout(index);
}
, btn2: function (index, layero) {
//鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
layer.close(index)
+ // 娓呯悊鍏ㄥ眬鍙橀噺
+ window.selectedDataForPakout = null;
//return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
}
});
@@ -674,7 +734,19 @@
})
}
- function pakout(tableCache, layerIndex) {
+ function pakout(layerIndex) {
+ // 鑾峰彇瀛樺偍鐨勫疄闄呭嬀閫夋暟鎹�
+ var tableCache = window.selectedDataForPakout;
+
+ // 纭繚浼犲叆鐨勬暟鎹湁鏁�
+ if (!tableCache || tableCache.length === 0) {
+ layer.msg("娌℃湁鏈夋晥鐨勬暟鎹彲澶勭悊", {icon: 2});
+ return;
+ }
+
+ // 閲嶇疆鑷姩閫変腑鐨勬暟鎹紝閬垮厤鏁版嵁娈嬬暀
+ window.autoSelectedData = [];
+
// let loadIndex = layer.load(2);
notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
$.ajax({
@@ -725,11 +797,20 @@
} else {
layer.msg(res.msg, {icon: 2})
}
+ },
+ error: function () {
+ notice.destroy();
+ layer.msg('缃戠粶閿欒锛岃绋嶅悗閲嶈瘯', {icon: 2});
}
});
+
+ // 娓呯悊鍏ㄥ眬鍙橀噺
+ window.selectedDataForPakout = null;
}
window.pakoutPreview = pakoutPreview;
+ // 鍒濆鍖栬嚜鍔ㄩ�変腑鏁版嵁鍙橀噺锛岀‘淇濋〉闈㈠姞杞芥椂琚纭垵濮嬪寲
+ window.autoSelectedData = null;
})
</script>
</html>
\ No newline at end of file
--
Gitblit v1.9.1