From a2c33664f683aee11fdc62391c8d1e21cc74f5b2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 21 五月 2026 17:24:49 +0800
Subject: [PATCH] 天津宝东 1.修改展示字段

---
 src/views/salesManagement/salesLedger/index.vue |  130 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 126 insertions(+), 4 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 8d25f53..3d88828 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -48,6 +48,9 @@
                      @click="openForm('add')">
             鏂板鍙拌处
           </el-button>
+					<el-button type="primary" plain :disabled="selectedRows.length === 0" @click="handleBatchExportContract">
+						瀵煎嚭鍚堝悓
+					</el-button>
           <el-button type="primary"
                      plain
                      @click="handleImport">瀵煎叆
@@ -898,7 +901,8 @@
                           prop="type">
               <el-select v-model="deliveryForm.type"
                          placeholder="璇烽�夋嫨鍙戣揣绫诲瀷"
-                         style="width: 100%">
+                         style="width: 100%"
+                         @change="handleDeliveryTypeChange">
                 <el-option label="璐ц溅"
                            value="璐ц溅" />
                 <el-option label="蹇��"
@@ -910,6 +914,41 @@
             <el-form-item label="寰呭彂璐ф暟閲忥細">
               <el-input :model-value="currentDeliveryRow?.noQuantity"
                         disabled />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="24" v-if="deliveryForm.type === '璐ц溅'">
+            <el-form-item label="鍙戣揣杞︾墝鍙凤細"
+                          prop="shippingCarNumber">
+              <el-input v-model="deliveryForm.shippingCarNumber"
+                        placeholder="璇疯緭鍏ュ彂璐ц溅鐗屽彿"
+                        clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-else>
+            <el-form-item label="蹇�掑叕鍙革細"
+                          prop="expressCompany">
+              <el-input v-model="deliveryForm.expressCompany"
+                        placeholder="璇疯緭鍏ュ揩閫掑叕鍙�"
+                        clearable />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30" v-if="deliveryForm.type === '蹇��'">
+          <el-col :span="24">
+            <el-form-item label="蹇�掑崟鍙凤細"
+                          prop="expressNumber">
+              <el-input v-model="deliveryForm.expressNumber"
+                        placeholder="璇疯緭鍏ュ揩閫掑崟鍙�"
+                        clearable />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="24">
+            <el-form-item label="鍙戣揣鍥剧墖锛�">
+              <ImageUpload v-model:file-list="deliveryFileList" :limit="9" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -990,6 +1029,7 @@
   import useFormData from "@/hooks/useFormData.js";
   import dayjs from "dayjs";
   import FileUpload from "@/components/AttachmentUpload/file/index.vue";
+  import ImageUpload from "@/components/AttachmentUpload/image/index.vue";
   import { getCurrentDate } from "@/utils/index.js";
   import { listCustomer } from "@/api/basicData/customer.js";
 
@@ -1017,6 +1057,7 @@
   });
   const total = ref(0);
   const fileList = ref([]);
+  const deliveryFileList = ref([]);
 
   // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
   const operationType = ref("");
@@ -1195,11 +1236,30 @@
         deliveryQuantity: 0,
       }));
   };
+  const validateDeliveryShippingCarNumber = (_rule, value, callback) => {
+    if (deliveryForm.value.type === "璐ц溅" && !value) {
+      return callback(new Error("璇疯緭鍏ュ彂璐ц溅鐗屽彿"));
+    }
+    callback();
+  };
+  const validateDeliveryExpressCompany = (_rule, value, callback) => {
+    if (deliveryForm.value.type === "蹇��" && !value) {
+      return callback(new Error("璇疯緭鍏ュ揩閫掑叕鍙�"));
+    }
+    callback();
+  };
   const deliveryFormData = reactive({
     deliveryForm: {
+      shippingCarNumber: "",
+      expressCompany: "",
+      expressNumber: "",
       type: "璐ц溅", // 璐ц溅, 蹇��
     },
     deliveryRules: {
+      shippingCarNumber: [
+        { validator: validateDeliveryShippingCarNumber, trigger: "blur" },
+      ],
+      expressCompany: [{ validator: validateDeliveryExpressCompany, trigger: "blur" }],
       type: [{ required: true, message: "璇烽�夋嫨鍙戣揣绫诲瀷", trigger: "change" }],
     },
   });
@@ -1521,7 +1581,7 @@
     selectedQuotation.value = null;
     let userLists = await userListNoPage();
     userList.value = userLists.data;
-    listCustomer({ current: -1, size: -1 }).then(res => {
+    listCustomer({ current: -1, size: -1, type: 0 }).then(res => {
       customerOption.value = res.data.records;
     });
     form.value.entryPerson = userStore.id;
@@ -2537,6 +2597,7 @@
       瀹℃牳鎷掔粷: "瀹℃牳鎷掔粷",
       瀹℃牳閫氳繃: "瀹℃牳閫氳繃",
       宸插彂璐�: "宸插彂璐�",
+      閮ㄥ垎鍙戣揣: "閮ㄥ垎鍙戣揣",
     };
     return statusTextMap[statusStr] || "寰呭彂璐�";
   };
@@ -2568,6 +2629,7 @@
       瀹℃牳鎷掔粷: "danger",
       瀹℃牳閫氳繃: "success",
       宸插彂璐�: "success",
+      閮ㄥ垎鍙戣揣: "warning",
     };
     return typeTextMap[statusStr] || "info";
   };
@@ -2593,7 +2655,7 @@
 
     // 鍙戣揣鐘舵�佸繀椤绘槸"寰呭彂璐�"鎴�"瀹℃牳鎷掔粷"
     const statusStr = shippingStatus ? String(shippingStatus).trim() : "";
-    return statusStr === "寰呭彂璐�" || statusStr === "瀹℃牳鎷掔粷";
+    return statusStr === "寰呭彂璐�" || statusStr === "瀹℃牳鎷掔粷" || statusStr === "閮ㄥ垎鍙戣揣";
   };
 
   // 鎵撳紑闄勪欢寮圭獥
@@ -2605,7 +2667,40 @@
     recordId.value = row.id;
     fileDialogVisible.value = true;
   };
-
+	const handleBatchExportContract = () => {
+		if (selectedRows.value.length === 0) {
+			proxy.$modal.msgWarning("璇烽�夋嫨瑕佸鍑虹殑鍙拌处");
+			return;
+		}
+		const firstCustomerKey =
+			selectedRows.value[0].customerId ?? selectedRows.value[0].customerName ?? "";
+		const hasDifferentCustomer = selectedRows.value.some((row) => {
+			const customerKey = row.customerId ?? row.customerName ?? "";
+			return String(customerKey) !== String(firstCustomerKey);
+		});
+		if (hasDifferentCustomer) {
+			proxy.$modal.msgWarning("浠呮敮鎸佸悓涓�瀹㈡埛鍚屾椂瀵煎嚭鍚堝悓");
+			return;
+		}
+		const ids = selectedRows.value
+			.map((row) => row.id)
+			.filter((id) => id !== null && id !== undefined);
+		if (ids.length === 0) {
+			proxy.$modal.msgWarning("鏈幏鍙栧埌鍚堝悓ID");
+			return;
+		}
+		proxy.download(
+			"/sales/ledger/exportContract",
+			ids,
+			`閿�鍞悎鍚宊鎵归噺_${dayjs().format("YYYYMMDDHHmmss")}.docx`,
+			{
+				method: "post",
+				filename: `閿�鍞悎鍚宊鎵归噺_${dayjs().format("YYYYMMDDHHmmss")}.docx`,
+				headers: { "Content-Type": "application/json;charset=utf-8" },
+				transformRequest: [(data) => JSON.stringify(data)],
+			}
+		);
+	}
   // 鎵撳紑鍙戣揣寮规
   const openDeliveryForm = async row => {
     // 妫�鏌ユ槸鍚﹀彲浠ュ彂璐�
@@ -2621,10 +2716,14 @@
       row.productModelId || row.modelId
     );
     deliveryForm.value = {
+      shippingCarNumber: "",
+      expressCompany: "",
+      expressNumber: "",
       type: "璐ц溅",
       batchNo: [],
       batchNoList,
     };
+    deliveryFileList.value = [];
     deliveryFormVisible.value = true;
   };
 
@@ -2662,6 +2761,19 @@
           salesLedgerId: salesLedgerId,
           salesLedgerProductId: currentDeliveryRow.value.id,
           type: deliveryForm.value.type,
+          shippingCarNumber:
+            deliveryForm.value.type === "璐ц溅"
+              ? deliveryForm.value.shippingCarNumber
+              : "",
+          expressCompany:
+            deliveryForm.value.type === "蹇��"
+              ? deliveryForm.value.expressCompany
+              : "",
+          expressNumber:
+            deliveryForm.value.type === "蹇��"
+              ? deliveryForm.value.expressNumber
+              : "",
+          storageBlobDTOs: deliveryFileList.value || [],
           batchNo: deliveryForm.value.batchNo,
           batchNoDetailList: selectedBatchRows.map(item => ({
             stockInventoryId: item.id,
@@ -2701,8 +2813,18 @@
   };
 
   // 鍏抽棴鍙戣揣寮规
+  const handleDeliveryTypeChange = val => {
+    if (val === "璐ц溅") {
+      deliveryForm.value.expressCompany = "";
+      deliveryForm.value.expressNumber = "";
+    } else {
+      deliveryForm.value.shippingCarNumber = "";
+    }
+  };
+
   const closeDeliveryDia = () => {
     proxy.resetForm("deliveryFormRef");
+    deliveryFileList.value = [];
     deliveryFormVisible.value = false;
     currentDeliveryRow.value = null;
   };

--
Gitblit v1.9.3