From a563ea879ef5fb6897e76d2df661e465dce2ab9b Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 01 六月 2026 15:02:27 +0800
Subject: [PATCH] Merge branch 'dev_新疆_大罗素马铃薯new' of http://114.132.189.42:9002/r/product-inventory-management into dev_新疆_大罗素马铃薯new

---
 src/views/salesManagement/salesLedger/index.vue |  125 ++++++++++++++++++++++++++---------------
 1 files changed, 80 insertions(+), 45 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 4c13d3d..3f467cd 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -419,6 +419,41 @@
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
+            <el-form-item label="閲囪喘鍚堝悓鍙凤細" prop="purchaseContractNumber">
+              <el-select
+                v-model="form.purchaseContractNumber"
+                placeholder="璇烽�夋嫨閲囪喘鍚堝悓鍙�"
+                clearable
+                filterable
+                style="width: 100%"
+                :disabled="operationType === 'view'"
+              >
+                <el-option
+                  v-for="item in purchaseContractOptions"
+                  :key="item.purchaseContractNumber"
+                  :label="item.purchaseContractNumber + ' - ' + item.supplierName"
+                  :value="item.purchaseContractNumber"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="浜よ揣鏃ユ湡锛�" prop="entryDate">
+              <el-date-picker
+                style="width: 100%"
+                v-model="form.deliveryDate"
+                value-format="YYYY-MM-DD"
+                format="YYYY-MM-DD"
+                type="date"
+                placeholder="璇烽�夋嫨"
+                clearable
+                :disabled="operationType === 'view'"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
             <el-form-item label="褰曞叆浜猴細" prop="entryPerson">
               <el-select
                 v-model="form.entryPerson"
@@ -444,22 +479,6 @@
               <el-date-picker
                 style="width: 100%"
                 v-model="form.entryDate"
-                value-format="YYYY-MM-DD"
-                format="YYYY-MM-DD"
-                type="date"
-                placeholder="璇烽�夋嫨"
-                clearable
-                :disabled="operationType === 'view'"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="浜よ揣鏃ユ湡锛�" prop="entryDate">
-              <el-date-picker
-                style="width: 100%"
-                v-model="form.deliveryDate"
                 value-format="YYYY-MM-DD"
                 format="YYYY-MM-DD"
                 type="date"
@@ -527,13 +546,14 @@
             prop="taxExclusiveTotalPrice"
             :formatter="formattedNumber"
           />
-          <el-table-column label="鏄惁鐢熶骇" prop="isProduction" width="150">
+          <!-- 鏄惁鐢熶骇鍒楀凡闅愯棌锛岄粯璁ゅ�间负 false -->
+          <!-- <el-table-column label="鏄惁鐢熶骇" prop="isProduction" width="150">
             <template #default="scope">
               <el-tag :type="scope.row.isProduction ? 'success' : 'info'">
                 {{ scope.row.isProduction ? "鏄�" : "鍚�" }}
               </el-tag>
             </template>
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column
             fixed="right"
             label="鎿嶄綔"
@@ -823,14 +843,15 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <!-- 鏄惁鐢熶骇瀛楁宸查殣钘忥紝榛樿鍊间负 false -->
+          <!-- <el-col :span="12">
             <el-form-item label="鏄惁鐢熶骇锛�" prop="isProduction">
               <el-radio-group v-model="productForm.isProduction">
                 <el-radio label="鏄�" :value="true" />
                 <el-radio label="鍚�" :value="false" />
               </el-radio-group>
             </el-form-item>
-          </el-col>
+          </el-col> -->
         </el-row>
       </el-form>
     </FormDialog>
@@ -1062,6 +1083,15 @@
               />
             </el-form-item>
           </el-col>
+          <el-col :span="24" v-if="deliveryForm.type === '璐ц溅'">
+            <el-form-item label="鍑哄簱鎵瑰彿锛�" prop="outboundBatches">
+              <el-input
+                v-model="deliveryForm.outboundBatches"
+                placeholder="璇疯緭鍏ュ嚭搴撴壒鍙�"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
           <el-col :span="24" v-else>
             <el-form-item label="蹇�掑叕鍙革細" prop="expressCompany">
               <el-input
@@ -1180,6 +1210,7 @@
 } from "@/api/salesManagement/salesLedger.js";
 import { getStockInventoryByModelId } from "@/api/inventoryManagement/stockInventory.js";
 import { modelList, productTreeList } from "@/api/basicData/product.js";
+import { purchaseList } from "@/api/procurementManagement/procurementLedger.js";
 import useFormData from "@/hooks/useFormData.js";
 import dayjs from "dayjs";
 import FileUpload from "@/components/AttachmentUpload/file/index.vue";
@@ -1204,6 +1235,7 @@
 const customerOption = ref([]);
 const productOptions = ref([]);
 const modelOptions = ref([]);
+const purchaseContractOptions = ref([]);
 const tableLoading = ref(false);
 const page = reactive({
   current: 1,
@@ -1237,6 +1269,7 @@
     executionDate: "",
     hasProductionRecord: false,
     createTime: "",
+    purchaseContractNumber: "",
   },
   rules: {
     salesman: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
@@ -1264,7 +1297,7 @@
     taxInclusiveTotalPrice: "",
     taxExclusiveTotalPrice: "",
     invoiceType: "",
-    isProduction: false,
+    isProduction: false, // 榛樿鍊间负 false锛堝惁锛�
   },
   productRules: {
     productCategory: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
@@ -1375,22 +1408,9 @@
 const getDeliveryBatchNoList = async (productModelId) => {
   if (!productModelId) return [];
   const res = await getStockInventoryByModelId(productModelId);
-  const rawList = Array.isArray(res?.data)
-    ? res.data
-    : res?.data?.records || res?.data?.rows || [];
+  const rawList = res.data || [];
   const seenIds = new Set();
   return rawList
-    .filter((item) => {
-      if (!item?.id || !item?.batchNo || seenIds.has(item.id)) {
-        return false;
-      }
-      seenIds.add(item.id);
-      return true;
-    })
-    .map((item) => ({
-      ...item,
-      deliveryQuantity: 0,
-    }));
 };
 const validateDeliveryShippingCarNumber = (_rule, value, callback) => {
   if (deliveryForm.value.type === "璐ц溅" && !value) {
@@ -1410,6 +1430,7 @@
     expressCompany: "",
     expressNumber: "",
     type: "璐ц溅", // 璐ц溅, 蹇��
+    outboundBatches: "",
   },
   deliveryRules: {
     shippingCarNumber: [
@@ -1742,6 +1763,8 @@
   listCustomer({ current: -1, size: -1, type: 0 }).then((res) => {
     customerOption.value = res.data.records;
   });
+  // 鑾峰彇閲囪喘鍚堝悓鍒楄〃
+  await getPurchaseContractList();
   form.value.entryPerson = userStore.id;
   if (type === "add") {
     // 鏂板鏃惰缃綍鍏ユ棩鏈熶负褰撳ぉ
@@ -1749,7 +1772,7 @@
     // 绛捐鏃ユ湡榛樿涓哄綋澶�
     form.value.executionDate = getCurrentDate();
     // 鍒涘缓鏃堕棿榛樿涓哄綋澶�
-    form.value.createTime = getCurrentDate();
+    form.value.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
     // 榛樿鑷姩鐢熸垚閿�鍞悎鍚屽彿
     form.value.autoGenerateContractNo = true;
   } else {
@@ -1871,7 +1894,7 @@
       taxInclusiveTotalPrice: taxInclusiveTotalPrice,
       taxExclusiveTotalPrice: taxExclusiveTotalPrice,
       invoiceType: "澧炴櫘绁�",
-      isProduction: true,
+      isProduction: false, // 榛樿鍊间负 false锛堝惁锛�
       productId: p.productId,
       productModelId: p.productModelId,
     };
@@ -1927,7 +1950,7 @@
   productOperationType.value = type;
   productForm.value = {};
   if (type === "add") {
-    productForm.value.isProduction = true;
+    productForm.value.isProduction = false; // 榛樿鍊间负 false锛堝惁锛�
   }
   proxy.resetForm("productFormRef");
   if (type === "edit") {
@@ -1962,6 +1985,17 @@
     getProductOptions();
   }
   productFormVisible.value = true;
+};
+
+// 鑾峰彇閲囪喘鍚堝悓鍒楄〃
+const getPurchaseContractList = async () => {
+  try {
+    const res = await purchaseList({ current: -1, size: -1 });
+    purchaseContractOptions.value = res.rows;
+  } catch (error) {
+    console.error("鑾峰彇閲囪喘鍚堝悓鍒楄〃澶辫触", error);
+    purchaseContractOptions.value = [];
+  }
 };
 // 鎻愪氦浜у搧琛ㄥ崟
 const submitProduct = () => {
@@ -2155,7 +2189,7 @@
 };
 
 // 鎵撳嵃鍔熻兘
-const handlePrint = async () => {
+  const handlePrint = async () => {
   if (selectedRows.value.length === 0) {
     proxy.$modal.msgWarning("璇烽�夋嫨瑕佹墦鍗扮殑鏁版嵁");
     return;
@@ -2512,11 +2546,7 @@
 // 鏍煎紡鍖栨棩鏈�
 const formatDate = (dateString) => {
   if (!dateString) return getCurrentDate();
-  const date = new Date(dateString);
-  const year = date.getFullYear();
-  const month = String(date.getMonth() + 1).padStart(2, "0");
-  const day = String(date.getDate()).padStart(2, "0");
-  return `${year}/${month}/${day}`;
+  return dayjs(dateString).format("YYYY/MM/DD HH:mm:ss");
 };
 // 鏍煎紡鍖栨棩鏈熸椂闂�
 const formatDateTime = (date) => {
@@ -2860,6 +2890,7 @@
     type: "璐ц溅",
     batchNo: [],
     batchNoList,
+    outboundBatches: "",
   };
   deliveryFileList.value = [];
   deliveryFormVisible.value = true;
@@ -2902,6 +2933,10 @@
         shippingCarNumber:
           deliveryForm.value.type === "璐ц溅"
             ? deliveryForm.value.shippingCarNumber
+            : "",
+        outboundBatches:
+          deliveryForm.value.type === "璐ц溅"
+            ? deliveryForm.value.outboundBatches
             : "",
         expressCompany:
           deliveryForm.value.type === "蹇��"
@@ -3179,4 +3214,4 @@
     page-break-after: avoid;
   }
 }
-</style>
+</style>
\ No newline at end of file

--
Gitblit v1.9.3