From 53e0b9466d3fdd3e5caf7c42e476fffdb468bc2a Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 27 三月 2026 17:17:22 +0800
Subject: [PATCH] 1

---
 src/views/customerService/feedbackRegistration/components/formDia.vue |   93 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 66 insertions(+), 27 deletions(-)

diff --git a/src/views/customerService/feedbackRegistration/components/formDia.vue b/src/views/customerService/feedbackRegistration/components/formDia.vue
index 2af71da..93e5c6b 100644
--- a/src/views/customerService/feedbackRegistration/components/formDia.vue
+++ b/src/views/customerService/feedbackRegistration/components/formDia.vue
@@ -106,6 +106,11 @@
                 :column="tableColumn"
                 :tableData="tableData"
             >
+              <template #approveStatus="{ row }">
+                <el-tag :type="getApproveStatusType(row)" size="small">
+                  {{ getApproveStatusText(row) }}
+                </el-tag>
+              </template>
               <template #shippingStatus="{ row }">
                 <el-tag :type="getShippingStatusType(row)" size="small">
                   {{ getShippingStatusText(row) }}
@@ -185,6 +190,31 @@
 const serviceTypeOptions = computed(() => post_sale_waiting_list?.value || []);
 const urgencyOptions = computed(() => degree_of_urgency?.value || []);
 
+const getProductRowId = (row) => {
+  return row?.id ?? row?.productModelId ?? row?.modelId ?? `${row?.productCategory || row?.productName || ""}-${row?.specificationModel || row?.model || ""}-${row?.unit || ""}`
+}
+
+const normalizeProductRow = (row) => {
+  return {
+    ...row,
+    id: getProductRowId(row),
+    productCategory: row?.productCategory ?? row?.productName ?? '',
+    specificationModel: row?.specificationModel ?? row?.model ?? '',
+    unit: row?.unit ?? '',
+    approveStatus: row?.approveStatus ?? null,
+    shippingStatus: row?.shippingStatus ?? '',
+    expressCompany: row?.expressCompany ?? '',
+    expressNumber: row?.expressNumber ?? '',
+    shippingCarNumber: row?.shippingCarNumber ?? '',
+    shippingDate: row?.shippingDate ?? '',
+    quantity: row?.quantity ?? 0,
+    taxRate: row?.taxRate ?? 0,
+    taxInclusiveUnitPrice: row?.taxInclusiveUnitPrice ?? 0,
+    taxInclusiveTotalPrice: row?.taxInclusiveTotalPrice ?? 0,
+    taxExclusiveTotalPrice: row?.taxExclusiveTotalPrice ?? 0,
+  }
+}
+
 const tableColumn = ref([
   { label: "浜у搧澶х被", prop: "productCategory" },
   { label: "瑙勬牸鍨嬪彿", prop: "specificationModel" },
@@ -194,9 +224,8 @@
     prop: "approveStatus",
     width: 100,
     align: "center",
-    dataType: "tag",
-    formatData: (v) => (v === 1 ? "鍏呰冻" : "涓嶈冻"),
-    formatType: (v) => (v === 1 ? "success" : "danger"),
+    dataType: "slot",
+    slot: "approveStatus",
   },
   {
     label: "鍙戣揣鐘舵��",
@@ -239,7 +268,7 @@
         name: "鍒犻櫎",
         type: "text",
         clickFun: (row) => {
-          tableData.value = tableData.value.filter(i => i.id !== row.id)
+          tableData.value = tableData.value.filter(i => getProductRowId(i) !== getProductRowId(row))
         },
 
       },
@@ -251,37 +280,21 @@
 const isShowProductSelectDialog = ref(false)
 const handleSelectProducts = (rows) => {
   if (!Array.isArray(rows)) return
-  const existingIds = new Set(tableData.value.map(i => i.id))
+  const existingIds = new Set(tableData.value.map(i => String(getProductRowId(i))))
   const mapped = rows
-    .filter(r => !existingIds.has(r.id))
-    .map(r => ({
-      id: r.id,
-      productCategory: r.productName,
-      specificationModel: r.model,
-      unit: r.unit || '',
-      approveStatus: null,
-      shippingStatus: '',
-      expressCompany: '',
-      expressNumber: '',
-      shippingCarNumber: '',
-      shippingDate: '',
-      quantity: 0,
-      taxRate: 0,
-      taxInclusiveUnitPrice: 0,
-      taxInclusiveTotalPrice: 0,
-      taxExclusiveTotalPrice: 0,
-    }))
+    .map(normalizeProductRow)
+    .filter(r => !existingIds.has(String(getProductRowId(r))))
   tableData.value = tableData.value.concat(mapped)
 }
 const currentSelectedProductIds = computed(() => {
-  return tableData.value.map(item => item.id)
+  return tableData.value.map(item => getProductRowId(item)).filter(item => item !== undefined && item !== null && item !== '')
 })
 
 const associatedSalesOrderNumberChange = () => {
   const opt = associatedSalesOrderNumberOptions.value.find(
     (item) => item.value === form.value.salesContractNo
   )
-  tableData.value = opt?.productData || []
+  tableData.value = (opt?.productData || []).map(normalizeProductRow)
   form.value.salesLedgerId = opt?.id || null
 }
 
@@ -291,13 +304,19 @@
   const opt = associatedSalesOrderNumberOptions.value.find(
     (item) => item.value === form.value.salesContractNo
   )
-  return opt?.productData || []
+  return (opt?.productData || []).map(normalizeProductRow)
 })
 
 const customerNameChange = (val) => {
+  form.value.salesContractNo = "";
+  form.value.salesLedgerId = null;
+  tableData.value = [];
+  associatedSalesOrderNumberOptions.value = [];
   const opt = customerNameOptions.value.find(item => item.value === val);
   if (opt) {
     form.value.customerId = opt.id;
+  } else {
+    form.value.customerId = null;
   }
   getSalesLedger({
     customerName: form.value.customerName
@@ -311,6 +330,22 @@
       }))
     }
   })
+}
+
+const getApproveStatusText = (row) => {
+  if (!row) return '涓嶈冻'
+  if (row.approveStatus === 1 && (!row.shippingDate || !row.shippingCarNumber)) {
+    return '鍏呰冻'
+  }
+  if (row.approveStatus === 0 && (row.shippingDate || row.shippingCarNumber)) {
+    return '宸插嚭搴�'
+  }
+  return '涓嶈冻'
+}
+
+const getApproveStatusType = (row) => {
+  const statusText = getApproveStatusText(row)
+  return statusText === '涓嶈冻' ? 'danger' : 'success'
 }
 
 const getShippingStatusText = (row) => {
@@ -356,7 +391,11 @@
 // 鎵撳紑寮规
 const openDialog =async (type, row) => {
   // 璇锋眰澶氫釜鎺ュ彛锛岃幏鍙栨暟鎹�
-  let res = await getAllCustomerList();
+  let res = await getAllCustomerList({
+    current: 1,
+  size: 1000,
+  total: 0,
+  });
   if(res.records){
     customerNameOptions.value = res.records.map(item => ({
       label: item.customerName,

--
Gitblit v1.9.3