From 0dadd48fa23109f8bb4087654d8e2dad0cbd8f20 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 15 四月 2026 13:28:00 +0800
Subject: [PATCH] 新增入库功能至销售台账页面,支持选择入库状态并执行入库操作,提升用户交互体验

---
 src/api/salesManagement/salesLedger.js          |   10 +++++
 src/views/salesManagement/salesLedger/index.vue |   53 ++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/src/api/salesManagement/salesLedger.js b/src/api/salesManagement/salesLedger.js
index e6b4e76..383c36a 100644
--- a/src/api/salesManagement/salesLedger.js
+++ b/src/api/salesManagement/salesLedger.js
@@ -203,4 +203,14 @@
     url: `/sales/ledger/salesLabel/${salesLedgerId}`,
     method: "get",
   });
+}
+
+// 閿�鍞彴璐�-鍏ュ簱
+export function salesStock(id) {
+  const data = id && typeof id === "object" ? id : { id };
+  return request({
+    url: "/sales/ledger/salesStock",
+    method: "post",
+    data,
+  });
 }
\ No newline at end of file
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 4dc34f3..0965cf1 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -41,6 +41,12 @@
             <el-option label="宸插彂璐�" :value="4" />
           </el-select>
         </el-form-item>
+        <el-form-item label="鍏ュ簱鐘舵�侊細">
+          <el-select v-model="searchForm.stockStatus" placeholder="璇烽�夋嫨" clearable style="width: 140px">
+            <el-option label="鏈叆搴�" :value="0" />
+            <el-option label="宸插叆搴�" :value="1" />
+          </el-select>
+        </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="handleQuery"> 鎼滅储 </el-button>
         </el-form-item>
@@ -59,6 +65,7 @@
           @confirm="handleProcessFlowSelectConfirm"
         />
 			<el-space wrap>
+					<el-button type="primary" @click="handleSalesStock">鍏ュ簱</el-button>
 					<el-button type="primary" @click="openForm('add')">鏂板鍙拌处</el-button>
 					<el-button type="primary" @click="handleBulkDelivery">鍙戣揣</el-button>
 					<el-button type="primary" plain @click="handleImport">瀵煎叆</el-button>
@@ -201,6 +208,13 @@
 						<el-tag v-else-if="Number(scope.row.deliveryStatus) === 3" type="danger">瀹℃壒涓嶉�氳繃</el-tag>
 						<el-tag v-else-if="Number(scope.row.deliveryStatus) === 4" type="primary">瀹℃壒閫氳繃</el-tag>
 						<el-tag v-else-if="Number(scope.row.deliveryStatus) === 5" type="success">宸插彂璐�</el-tag>
+						<el-tag v-else type="info">-</el-tag>
+					</template>
+		  </el-table-column>
+		  <el-table-column label="鍏ュ簱鐘舵��" width="120" align="center">
+				<template #default="scope">
+						<el-tag v-if="Number(scope.row.stockStatus) === 0" type="info">鏈叆搴�</el-tag>
+						<el-tag v-else-if="Number(scope.row.stockStatus) === 1" type="success">宸插叆搴�</el-tag>
 						<el-tag v-else type="info">-</el-tag>
 					</template>
 		  </el-table-column>
@@ -1395,6 +1409,7 @@
 	getSalesOrder,
 	getSalesInvoices,
 	getSalesLabel,
+	salesStock,
 } from "@/api/salesManagement/salesLedger.js";
 import { modelList, productTreeList } from "@/api/basicData/product.js";
 import useFormData from "@/hooks/useFormData.js";
@@ -1443,6 +1458,7 @@
 		entryDateStart: undefined,
 		entryDateEnd: undefined,
 		deliveryStatus: undefined, // 鍙戣揣鐘舵�侊細1鏈彂璐� 2瀹℃壒涓� 3瀹℃壒澶辫触 4宸插彂璐�
+		stockStatus: undefined, // 鍏ュ簱鐘舵�侊細0鏈叆搴� 1宸插叆搴�
 	},
 	form: {
 		salesContractNo: "",
@@ -2254,6 +2270,43 @@
 		});
 };
 
+// 鍏ュ簱锛堥攢鍞彴璐� -> 鍏ュ簱鐘舵�侊級
+const handleSalesStock = async () => {
+	if (selectedRows.value.length !== 1) {
+		ElMessage.warning("璇峰嬀閫変竴鏉″彴璐︽暟鎹繘琛屽叆搴�");
+		return;
+	}
+	const row = selectedRows.value[0] || {};
+	const id = row?.id;
+	if (!id) {
+		ElMessage.warning("鎵�閫夋暟鎹己灏慽d锛屾棤娉曞叆搴�");
+		return;
+	}
+	if (Number(row.stockStatus) === 1) {
+		ElMessage.info("璇ュ彴璐﹀凡鍏ュ簱锛屾棤闇�閲嶅鎿嶄綔");
+		return;
+	}
+	try {
+		await ElMessageBox.confirm("纭瀵规墍閫夊彴璐︽墽琛屽叆搴擄紵", "鎻愮ず", {
+			confirmButtonText: "纭畾",
+			cancelButtonText: "鍙栨秷",
+			type: "warning",
+		});
+	} catch {
+		return;
+	}
+	proxy?.$modal?.loading?.("姝e湪鍏ュ簱锛岃绋嶅��...");
+	try {
+		await salesStock({ id });
+		proxy?.$modal?.msgSuccess?.("鍏ュ簱鎴愬姛");
+		await getList();
+	} catch (e) {
+		proxy?.$modal?.msgError?.("鍏ュ簱澶辫触锛岃绋嶅悗閲嶈瘯");
+	} finally {
+		proxy?.$modal?.closeLoading?.();
+	}
+};
+
 // 鎵撳紑鈥滃伐鑹鸿矾绾块厤缃�濋�夋嫨寮圭獥锛堝繀椤绘樉寮忛�夋嫨锛�
 const openProcessFlowSelect = async (ledgerRow) => {
 	if (!ledgerRow) return;

--
Gitblit v1.9.3