From 50552c590564e51349229d4f2e26a147109adc60 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 27 三月 2026 17:55:07 +0800
Subject: [PATCH] feat:1.生产订单增加领用弹窗(数据输入和输出)

---
 src/views/salesManagement/salesLedger/index.vue |   76 +++++++++++++++++++++++++++++++++-----
 1 files changed, 66 insertions(+), 10 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 763b9de..884582d 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -46,6 +46,7 @@
               <el-table-column align="center" label="搴忓彿" type="index"/>
               <el-table-column label="浜у搧澶х被" prop="productCategory" />
               <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+              <el-table-column label="鎵瑰彿" prop="batchNo" />
               <el-table-column label="鍗曚綅" prop="unit" />
 							<el-table-column label="浜у搧鐘舵��"
 															 width="100px"
@@ -121,9 +122,10 @@
         <el-table-column label="澶囨敞" prop="remarks" width="200" show-overflow-tooltip />
         <el-table-column fixed="right" label="鎿嶄綔" min-width="100" align="center">
           <template #default="scope">
-            <el-button link type="primary" size="small" @click="openForm('edit', scope.row)">缂栬緫</el-button>
+            <el-button link type="primary" size="small" @click="openForm('edit', scope.row)" :disabled="!scope.row.isEdit">缂栬緫</el-button>
 <!--            <el-button link type="primary" size="small" @click="openForm('view', scope.row)">璇︽儏</el-button>-->
             <el-button link type="primary" size="small" @click="downLoadFile(scope.row)">闄勪欢</el-button>
+            <el-button link type="primary" size="small" @click="exportSaleOutbound(scope.row)">鎵撳嵃閿�鍞嚭搴撳崟</el-button>
 <!--            <el-button link type="primary" size="small" @click="openDeliveryForm(scope.row)">鍙戣揣</el-button>-->
           </template>
         </el-table-column>
@@ -227,6 +229,8 @@
 					<el-table-column align="center" label="搴忓彿" type="index" width="60" />
 					<el-table-column label="浜у搧澶х被" prop="productCategory" />
 					<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+					<el-table-column label="UID鐮�" prop="uidNo" />
+					<el-table-column label="鎵瑰彿" prop="batchNo" />
 					<el-table-column label="鍗曚綅" prop="unit" />
 					<el-table-column label="鏁伴噺" prop="quantity" />
 					<el-table-column label="绋庣巼(%)" prop="taxRate" />
@@ -361,6 +365,15 @@
 						</el-form-item>
 					</el-col>
 				</el-row>
+        <el-row :gutter="30">
+          <el-col :span="24">
+            <el-form-item label="鎵瑰彿锛�" prop="batchNo">
+              <el-select v-model="productForm.batchNo" placeholder="璇烽�夋嫨" clearable filterable>
+                <el-option v-for="item in batchNoOptions" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
 				<el-row :gutter="30">
 					<el-col :span="12">
 						<el-form-item label="鍗曚綅锛�" prop="unit">
@@ -666,20 +679,22 @@
 import FormDialog from '@/components/Dialog/FormDialog.vue';
 import { getQuotationList } from "@/api/salesManagement/salesQuotation.js";
 import {
-	ledgerListPage,
-	productList,
-	customerList,
-	addOrUpdateSalesLedger,
-	getSalesLedgerWithProducts,
-	delLedger,
-	addOrUpdateSalesLedgerProduct,
-	delProduct,
-	delLedgerFile, getProductInventory,
+  ledgerListPage,
+  productList,
+  customerList,
+  addOrUpdateSalesLedger,
+  getSalesLedgerWithProducts,
+  delLedger,
+  addOrUpdateSalesLedgerProduct,
+  delProduct,
+  delLedgerFile, getProductInventory, saleOutboundExport,
 } from "@/api/salesManagement/salesLedger.js";
 import { modelList, productTreeList } from "@/api/basicData/product.js";
 import useFormData from "@/hooks/useFormData.js";
 import dayjs from "dayjs";
 import { getCurrentDate } from "@/utils/index.js";
+import {getProductOrderBatchNoOptions} from "@/api/productionManagement/productionOrder.js";
+import {safeTrainingExport} from "@/api/safeProduction/safetyTrainingAssessment.js";
 
 const userStore = useUserStore();
 const { proxy } = getCurrentInstance();
@@ -747,10 +762,12 @@
 		taxInclusiveTotalPrice: "",
 		taxExclusiveTotalPrice: "",
 		invoiceType: "",
+    batchNo: "",
 	},
 	productRules: {
 		productCategory: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
 		productModelId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+    batchNo: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
 		specificationModel: [
 			{ required: true, message: "璇烽�夋嫨", trigger: "change" },
 		],
@@ -1244,6 +1261,12 @@
 			});
 		}
 	});
+};
+
+const batchNoOptions = ref([]);
+const fetchBatchNoOptions = async () => {
+	const res = await getProductOrderBatchNoOptions();
+	batchNoOptions.value = res.data;
 };
 // 鍏抽棴寮规
 const closeDia = () => {
@@ -2182,8 +2205,41 @@
 	let res = await userStore.getInfo();
 	currentFactoryName.value = res.user.currentFactoryName;
 };
+
+const exportSaleOutbound = row => {
+  saleOutboundExport({id: row.id})
+      .then(res => {
+        // 鍒涘缓Blob瀵硅薄
+        const blob = new Blob([res], {
+          type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+        });
+        // 鍒涘缓涓嬭浇閾炬帴
+        const url = window.URL.createObjectURL(blob);
+        const link = document.createElement("a");
+        link.href = url;
+        link.download = `閿�鍞嚭搴撳崟.docx`;
+
+        // 妯℃嫙鐐瑰嚮涓嬭浇
+        document.body.appendChild(link);
+        link.click();
+
+        // 娓呯悊涓存椂瀵硅薄
+        setTimeout(() => {
+          document.body.removeChild(link);
+          window.URL.revokeObjectURL(url);
+        }, 100);
+
+        ElMessage.success("瀵煎嚭鎴愬姛");
+      })
+      .catch(err => {
+        console.error("瀵煎嚭澶辫触:", err);
+        ElMessage.error("瀵煎嚭澶辫触锛岃閲嶈瘯");
+      });
+};
+
 onMounted(() => {
 	getList();
+  fetchBatchNoOptions();
 	userListNoPage().then(res => {
 		userList.value = res.data;
 	})

--
Gitblit v1.9.3