From 7ec0b6ddb14897fa47769b14cc4cb36049bb5ebb Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 22 六月 2026 09:11:53 +0800
Subject: [PATCH] 1、报价系统中,需将付款方式改为选择项(现金、电汇、微信、支付宝等),不能做成手工输入;4、退货单未明确退货规则;5、客户往来信息过于简单,只做总结性信息,无多维度明细信息;

---
 src/views/salesManagement/returnOrder/components/formDia.vue |  139 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 120 insertions(+), 19 deletions(-)

diff --git a/src/views/salesManagement/returnOrder/components/formDia.vue b/src/views/salesManagement/returnOrder/components/formDia.vue
index 0ef4754..1f59c96 100644
--- a/src/views/salesManagement/returnOrder/components/formDia.vue
+++ b/src/views/salesManagement/returnOrder/components/formDia.vue
@@ -32,14 +32,32 @@
               </el-form-item>
             </el-col>
             <el-col :span="4">
-              <el-form-item label="鍏宠仈鎵瑰彿锛�" prop="shippingId">
-                <el-select v-model="form.shippingId" filterable placeholder="璇烽�夋嫨鍏宠仈鎵瑰彿" @change="outboundNoChange">
+              <el-form-item label="鍙戣揣淇℃伅锛�" prop="shippingId">
+                <el-select
+                  v-model="form.shippingId"
+                  filterable
+                  placeholder="璇烽�夋嫨鍙戣揣淇℃伅"
+                  :disabled="!form.customerId"
+                  @change="outboundNoChange"
+                >
                   <el-option
                     v-for="item in outboundOptions"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  />
+                    :key="item.shippingId"
+                    :label="item.displayLabel"
+                    :value="item.shippingId"
+                    :disabled="item.returnStatus === '鍏ㄩ儴閫�璐�'"
+                  >
+                    <div style="display: flex; justify-content: space-between; align-items: center;">
+                      <span>{{ item.displayLabel }}</span>
+                      <el-tag
+                        size="small"
+                        :type="getReturnStatusType(item.returnStatus)"
+                        style="margin-left: 8px;"
+                      >
+                        {{ item.returnStatus || '鏃犻��璐�' }}
+                      </el-tag>
+                    </div>
+                  </el-option>
                 </el-select>
               </el-form-item>
             </el-col>
@@ -71,6 +89,39 @@
             <el-col :span="4">
               <el-form-item label="閫�娆炬�婚锛�" prop="refundAmount">
                 <el-input v-model="form.refundAmount" disabled placeholder="鑷姩璁$畻" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <!-- 鍙戣揣淇℃伅鍥炴樉 -->
+          <el-row :gutter="30" v-if="form.shippingId">
+            <el-col :span="4">
+              <el-form-item label="鎵规鍙凤細">
+                <el-input v-model="form.batchNo" disabled placeholder="--" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="杞︾墝鍙凤細">
+                <el-input v-model="form.shippingCarNumber" disabled placeholder="--" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="浜у搧鍚嶇О锛�">
+                <el-input v-model="form.productName" disabled placeholder="--" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="瑙勬牸鍨嬪彿锛�">
+                <el-input v-model="form.model" disabled placeholder="--" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="鍙戣揣鏁伴噺锛�">
+                <el-input v-model="form.shippingQuantity" disabled placeholder="--" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="閿�鍞悎鍚屽彿锛�">
+                <el-input v-model="form.salesContractNo" disabled placeholder="--" />
               </el-form-item>
             </el-col>
           </el-row>
@@ -172,7 +223,7 @@
 
 <script setup>
 import { reactive, ref, toRefs, getCurrentInstance } from "vue";
-import { returnManagementAdd, returnManagementUpdate, returnManagementGetByShippingId, getSalesLedger, returnManagementGetById } from "@/api/salesManagement/returnOrder.js";
+import { returnManagementAdd, returnManagementUpdate, returnManagementGetByShippingId, getSalesLedger, returnManagementGetById, getShippingInfoForReturn } from "@/api/salesManagement/returnOrder.js";
 import useUserStore from "@/store/modules/user.js";
 import { userListNoPageByTenantId } from "@/api/system/user.js";
 import { listProject } from "@/api/projectManagement/project.js";
@@ -197,6 +248,14 @@
     status: 0,
     returnReason: "",
     refundAmount: "",
+    // 鍙戣揣淇℃伅鍥炴樉瀛楁
+    batchNo: "",
+    shippingCarNumber: "",
+    productName: "",
+    model: "",
+    shippingQuantity: null,
+    salesContractNo: "",
+    shippingNo: "",
   },
   rules: {
     returnNo: [{
@@ -207,7 +266,7 @@
       }, trigger: "blur"
     }],
     customerId: [{ required: true, message: "璇烽�夋嫨瀹㈡埛", trigger: "change" }],
-    shippingId: [{ required: true, message: "璇烽�夋嫨鍏宠仈鍑哄簱鍗曞彿", trigger: "change" }],
+    shippingId: [{ required: true, message: "璇烽�夋嫨鍙戣揣淇℃伅", trigger: "change" }],
   }
 });
 const { form, rules } = toRefs(data);
@@ -501,6 +560,13 @@
       status: 0,
       returnReason: "",
       refundAmount: "",
+      batchNo: "",
+      shippingCarNumber: "",
+      productName: "",
+      model: "",
+      shippingQuantity: null,
+      salesContractNo: "",
+      shippingNo: "",
     });
     form.value.maker = userStore.nickName || userStore.name || "";
     form.value.makeTime = new Date().toISOString().replace('T', ' ').split('.')[0]; // Default to now
@@ -584,33 +650,68 @@
   if (clearDownstream) {
     form.value.shippingId = "";
     outboundOptions.value = [];
+    clearShippingInfo();
   }
-  
-  // Find customer name for getSalesLedger if it requires name
+
+  // Find customer name for API
   const customer = customerNameOptions.value.find(c => c.id === val);
   if (!customer) return;
 
-  // Assuming getSalesLedger takes customerName. If it takes ID, adjust accordingly.
-  // Previous code used customerName. Let's try passing customerName.
-  getSalesLedger({
-    customerName: customer.label, 
+  // 浣跨敤鏂版帴鍙� getShippingInfoForReturn
+  getShippingInfoForReturn({
+    customerName: customer.label,
   }).then(res => {
     if(res.code === 200){
-      outboundOptions.value = res.data.map(item => ({
-        label: item.shippingNo, // Or whatever the outbound number field is
-        value: item.id,
-      }))
+      outboundOptions.value = res.data || [];
     }
   })
 };
 
+// 娓呯┖鍙戣揣淇℃伅
+const clearShippingInfo = () => {
+  form.value.batchNo = "";
+  form.value.shippingCarNumber = "";
+  form.value.productName = "";
+  form.value.model = "";
+  form.value.shippingQuantity = null;
+  form.value.salesContractNo = "";
+  form.value.shippingNo = "";
+};
+
+// 鑾峰彇閫�璐х姸鎬佹爣绛剧被鍨�
+const getReturnStatusType = (returnStatus) => {
+  const statusMap = {
+    '鏃犻��璐�': 'success',
+    '閮ㄥ垎閫�璐�': 'warning',
+    '鍏ㄩ儴閫�璐�': 'danger',
+  };
+  return statusMap[returnStatus] || 'info';
+};
+
 const outboundNoChange = async (val, clearTable = true) => {
   // val is shippingId
+  // 浠� outboundOptions 涓壘鍒伴�変腑鐨勫彂璐т俊鎭�
+  const selected = outboundOptions.value.find(item => item.shippingId === val);
+
+  if (selected) {
+    // 鍥炴樉鏁版嵁
+    form.value.batchNo = selected.batchNo || "";
+    form.value.shippingCarNumber = selected.shippingCarNumber || "";
+    form.value.productName = selected.productName || "";
+    form.value.model = selected.model || "";
+    form.value.shippingQuantity = selected.shippingQuantity || 0;
+    form.value.salesContractNo = selected.salesContractNo || "";
+    form.value.shippingNo = selected.shippingNo || "";
+  } else {
+    clearShippingInfo();
+  }
+
+  // 鑾峰彇浜у搧鍒楄〃
   let res = await returnManagementGetByShippingId({ shippingId: val });
   if(res.code === 200){
     // If backend returns project info, set it
     if (res.data.projectId) form.value.projectId = res.data.projectId;
-    
+
     availableProducts.value = mergeShippingProductLists(res.data);
     if (clearTable) tableData.value = [];
   }

--
Gitblit v1.9.3