From 0c130536545f66d2acb8ec65df388fb8e84abbd9 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 03 四月 2026 09:14:51 +0800
Subject: [PATCH] 添加发货状态列并优化发货逻辑

---
 src/views/salesManagement/salesLedger/index.vue |   68 +++++++++++++++++++++++++++++++---
 1 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index dae908a..c127d81 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -116,13 +116,13 @@
 									<el-tag v-else type="danger">涓嶈冻</el-tag>
                 </template>
               </el-table-column>
-							<el-table-column label="鍙戣揣鐘舵��" width="140" align="center">
+							<!-- <el-table-column label="鍙戣揣鐘舵��" width="140" align="center">
 								<template #default="scope">
 									<el-tag :type="getShippingStatusType(scope.row)" size="small">
 										{{ getShippingStatusText(scope.row) }}
 									</el-tag>
 								</template>
-							</el-table-column>
+							</el-table-column> -->
 							<el-table-column label="蹇�掑叕鍙�" prop="expressCompany" show-overflow-tooltip />
 							<el-table-column label="蹇�掑崟鍙�" prop="expressNumber" show-overflow-tooltip />
               <el-table-column label="鍙戣揣杞︾墝" minWidth="100px" align="center">
@@ -172,6 +172,12 @@
         <el-table-column label="浠樻鏂瑰紡" prop="paymentMethod" show-overflow-tooltip />
         <el-table-column label="鍚堝悓閲戦(鍏�)" prop="contractAmount" width="220" show-overflow-tooltip
           :formatter="formattedNumber" />
+		  <el-table-column label="鍙戣揣鐘舵��" width="140" align="center">
+			<template #default="scope">
+				<el-tag v-if="Number(scope.row.deliveryStatus) === 1" type="success">宸插彂璐�</el-tag>
+				<el-tag v-else type="info">鏈彂璐�</el-tag>
+			</template>
+		  </el-table-column>
         <el-table-column label="褰曞叆浜�" prop="entryPersonName" width="100" show-overflow-tooltip />
         <el-table-column label="褰曞叆鏃ユ湡" prop="entryDate" width="120" show-overflow-tooltip />
         <el-table-column label="绛捐鏃ユ湡" prop="executionDate" width="120" show-overflow-tooltip />
@@ -2516,11 +2522,23 @@
  * @param row 琛屾暟鎹�
  */
 const canShip = (row) => {
+
 	// 浜у搧鐘舵�佸繀椤绘槸鍏呰冻锛坅pproveStatus === 1锛�
-	if (row.approveStatus !== 1) {
-		return false;
-	}
+	// if (row.approveStatus !== 1) {
+	// 	return false;
+	// }
 	
+	// 濡傛灉鍚庣杩斿洖浜嗗彴璐︾骇鍙戣揣鐘舵�侊紙deliveryStatus锛�
+	// 1=宸插彂璐э紝鍒欑姝㈠啀娆″彂璐�
+	const deliveryStatus = row.deliveryStatus;
+	if (
+		deliveryStatus !== null &&
+		deliveryStatus !== undefined &&
+		String(deliveryStatus).trim() !== ""
+	) {
+		if (Number(deliveryStatus) === 1) return false;
+	}
+
 	// 鑾峰彇鍙戣揣鐘舵��
 	const shippingStatus = row.shippingStatus;
 	
@@ -2538,6 +2556,34 @@
 	if (selectedRows.value.length === 0) {
 		proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
 		return;
+	}
+
+	// 宸插彂璐у彴璐︼細寮圭獥鎻愰啋锛屼笉鑳藉啀娆″彂璐�
+	const shippedLedgers = selectedRows.value.filter((r) => Number(r.deliveryStatus) === 1);
+	if (shippedLedgers.length === selectedRows.value.length) {
+		try {
+			await ElMessageBox.alert("鎵�閫夐攢鍞彴璐﹀潎宸插彂璐э紝涓嶈兘鍐嶆鍙戣揣銆�", "鎻愮ず", {
+				type: "warning",
+				confirmButtonText: "鐭ラ亾浜�",
+			});
+		} catch {
+			/* 鍏抽棴寮圭獥 */
+		}
+		return;
+	}
+	if (shippedLedgers.length > 0) {
+		try {
+			await ElMessageBox.alert(
+				"閫変腑鐨勯攢鍞彴璐︿腑鍖呭惈宸插彂璐ц褰曪紝宸插彂璐х殑涓嶈兘鍐嶆鍙戣揣锛岀郴缁熷皢浠呬负鏈彂璐у彴璐﹀鐞嗐��",
+				"鎻愮ず",
+				{
+					type: "warning",
+					confirmButtonText: "鐭ラ亾浜�",
+				}
+			);
+		} catch {
+			return;
+		}
 	}
 
 	const customerNames = selectedRows.value.map((r) => String(r.customerName || "").trim());
@@ -2567,6 +2613,8 @@
 	try {
 		const targets = [];
 		for (const ledger of selectedRows.value) {
+			// 鍙拌处宸插彂璐э細涓嶅厑璁稿啀娆″彂璐�
+			if (Number(ledger.deliveryStatus) === 1) continue;
 			let products = [];
 			try {
 				const res = await productList({ salesLedgerId: ledger.id, type: 1 });
@@ -2574,7 +2622,6 @@
 			} catch {
 				products = [];
 			}
-
 			for (const product of products) {
 				if (!canShip(product)) continue;
 				targets.push({
@@ -2617,6 +2664,15 @@
 
 // 鎵撳紑鍙戣揣寮规
 const openDeliveryForm = (row) => {
+	// 濡傛灉璇ヨ宸茬粡鍙戣揣锛坉eliveryStatus=1锛夛紝绂佹鍐嶆鍙戣揣
+	if (Number(row.deliveryStatus) === 1) {
+		ElMessageBox.alert("璇ヨ褰曞凡鍙戣揣锛屼笉鑳藉啀娆″彂璐с��", "鎻愮ず", {
+			type: "warning",
+			confirmButtonText: "鐭ラ亾浜�",
+		});
+		return;
+	}
+
 	// 妫�鏌ユ槸鍚﹀彲浠ュ彂璐�
 	if (!canShip(row)) {
 		proxy.$modal.msgWarning("鍙湁鍦ㄤ骇鍝佺姸鎬佹槸鍏呰冻锛屽彂璐х姸鎬佹槸寰呭彂璐ф垨瀹℃牳鎷掔粷鐨勬椂鍊欐墠鍙互鍙戣揣");

--
Gitblit v1.9.3