From 4853f7c8e01ccbeae80e0243b632efc360067df8 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 20 四月 2026 14:49:20 +0800
Subject: [PATCH] Merge branch 'dev_河南_鹤壁天沐玻璃厂' of http://114.132.189.42:9002/r/product-inventory-management into dev_河南_鹤壁天沐玻璃厂
---
src/views/salesManagement/salesLedger/index.vue | 80 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 78 insertions(+), 2 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 624cbb2..0de79fd 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -4224,6 +4224,40 @@
return statusStr === "寰呭彂璐�" || statusStr === "瀹℃牳鎷掔粷";
};
+ const getLedgerDisplayName = ledger =>
+ String(ledger?.salesContractNo || "").trim() ||
+ String(ledger?.projectName || "").trim() ||
+ `ID:${ledger?.id ?? "-"}`;
+
+ const validateLedgersStockedBeforeDelivery = async ledgers => {
+ const invalidLedgers = [];
+ for (const ledger of ledgers || []) {
+ const ledgerId = ledger?.id;
+ const ledgerName = getLedgerDisplayName(ledger);
+ if (!ledgerId) {
+ invalidLedgers.push(`${ledgerName}(缂哄皯鍙拌处ID)`);
+ continue;
+ }
+ let products = [];
+ try {
+ const res = await productList({ salesLedgerId: ledgerId, type: 1 });
+ products = Array.isArray(res?.data) ? res.data : [];
+ } catch (e) {
+ invalidLedgers.push(`${ledgerName}(鏄庣粏鍔犺浇澶辫触)`);
+ continue;
+ }
+ const unstockedProducts = products.filter(
+ item => Number(item?.productStockStatus) !== 2
+ );
+ if (unstockedProducts.length > 0) {
+ invalidLedgers.push(
+ `${ledgerName}(鏈叏閮ㄥ叆搴�${unstockedProducts.length}鏉�)`
+ );
+ }
+ }
+ return invalidLedgers;
+ };
+
const handleBulkDelivery = async () => {
if (selectedRows.value.length === 0) {
proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
@@ -4232,7 +4266,7 @@
// 鍙厑璁搞�愭湭鍙戣揣/瀹℃壒澶辫触銆戣繘鍏ュ彂璐ф祦绋�
const statusItem = selectedRows.value[0].deliveryStatus;
- const isTrue = true;
+ let isTrue = true;
selectedRows.value.forEach(row => {
if (row.deliveryStatus != 1 && row.deliveryStatus != 3) {
proxy.$modal.msgWarning("浠呮湭鍙戣揣鎴栧鎵瑰け璐ョ殑鍙拌处鍙互鍙戣揣");
@@ -4246,6 +4280,29 @@
}
});
if (!isTrue) {
+ return;
+ }
+
+ proxy.$modal.loading("姝e湪鏍¢獙鏄庣粏鍏ュ簱鐘舵�侊紝璇风◢鍊�...");
+ const invalidLedgers = await validateLedgersStockedBeforeDelivery(
+ selectedRows.value
+ );
+ proxy.$modal.closeLoading();
+ if (invalidLedgers.length > 0) {
+ try {
+ await ElMessageBox.alert(
+ `浠ヤ笅閿�鍞彴璐﹀瓨鍦ㄦ湭鍏ㄩ儴鍏ュ簱鐨勬槑缁嗭紝鏆備笉鍙彂璐э細\n${invalidLedgers.join(
+ "\n"
+ )}`,
+ "鎻愮ず",
+ {
+ type: "warning",
+ confirmButtonText: "鐭ラ亾浜�",
+ }
+ );
+ } catch {
+ /* 鍏抽棴寮圭獥 */
+ }
return;
}
@@ -4365,7 +4422,7 @@
};
// 鎵撳紑鍙戣揣寮规锛堝崟鏉★級
- const openDeliveryForm = row => {
+ const openDeliveryForm = async row => {
// 鍙厑璁搞�愭湭鍙戣揣/瀹℃壒澶辫触銆戝彂璐э紱宸插彂璐�/瀹℃壒涓笉鍏佽
const status = Number(row.deliveryStatus);
if (status !== 1 && status !== 3) {
@@ -4373,6 +4430,25 @@
return;
}
+ proxy.$modal.loading("姝e湪鏍¢獙鏄庣粏鍏ュ簱鐘舵�侊紝璇风◢鍊�...");
+ const invalidLedgers = await validateLedgersStockedBeforeDelivery([row]);
+ proxy.$modal.closeLoading();
+ if (invalidLedgers.length > 0) {
+ try {
+ await ElMessageBox.alert(
+ `褰撳墠閿�鍞彴璐﹀瓨鍦ㄦ湭鍏ㄩ儴鍏ュ簱鐨勬槑缁嗭紝鏆備笉鍙彂璐э細\n${invalidLedgers[0]}`,
+ "鎻愮ず",
+ {
+ type: "warning",
+ confirmButtonText: "鐭ラ亾浜�",
+ }
+ );
+ } catch {
+ /* 鍏抽棴寮圭獥 */
+ }
+ return;
+ }
+
currentDeliveryRows.value = [row];
deliveryForm.value = {
type: "璐ц溅",
--
Gitblit v1.9.3