From 9b25e5c7a4e2e300b213ad4d5fb4d4b72cdced39 Mon Sep 17 00:00:00 2001
From: zhang_nuo <zhang_12370@163.com>
Date: 星期日, 13 九月 2026 11:40:54 +0800
Subject: [PATCH] fix(monitor/operlog): 修复操作日志表格操作日期显示错误

---
 src/views/procurementManagement/purchaseReturnOrder/New.vue |   70 ++++++++++++++++++++---------------
 1 files changed, 40 insertions(+), 30 deletions(-)

diff --git a/src/views/procurementManagement/purchaseReturnOrder/New.vue b/src/views/procurementManagement/purchaseReturnOrder/New.vue
index 09e09d5..6f67ca9 100644
--- a/src/views/procurementManagement/purchaseReturnOrder/New.vue
+++ b/src/views/procurementManagement/purchaseReturnOrder/New.vue
@@ -3,8 +3,10 @@
     <el-dialog
         v-model="isShow"
         title="鏂板閲囪喘閫�璐�"
-        width="1600"
+        width="70%"
+        top="3vh"
         @close="closeModal"
+        class="purchase-return-dialog"
     >
       <el-form label-width="140px" :model="formState" label-position="top" ref="formRef" :inline="true">
         <div class="section-title">
@@ -221,19 +223,19 @@
           <el-input style="width: 240px" v-model="formState.remark" :rows="1" type="textarea" placeholder="璇疯緭鍏ュ娉�"/>
         </el-form-item>
 
-        <div style="margin: 20px 0;">
+        <div style="margin:20px 0;min-width:0;">
             <div class="section-title">
               <span class="title-dot"></span>
               <span class="title-text">浜у搧鍒楄〃</span>
             </div>
-            <el-button type="primary" size="small" style="margin-bottom: 20px" @click="isShowProductsModal = true" :disabled="!formState.purchaseLedgerId">娣诲姞浜у搧</el-button>
-            <div class="product-table-scroll">
-            <el-table class="product-table-inner"
+            <el-button type="primary" size="small" style="margin-bottom:20px" @click="isShowProductsModal = true" :disabled="!formState.purchaseLedgerId">娣诲姞浜у搧</el-button>
+            <el-table
                       :data="formState.purchaseReturnOrderProductsDtos"
                       border
                       max-height="400"
                       show-summary
-                      :summary-method="summarizeChildrenTable">
+                      :summary-method="summarizeChildrenTable"
+                      style="width:100%;min-width:0;">
               <el-table-column align="center"
                                type="selection"
                                width="55" />
@@ -261,8 +263,11 @@
                                prop="unQuantity"
                                width="130" />
               <el-table-column label="宸查��璐ф暟閲�"
-                               prop="totalReturnNum"
-                               width="130" />
+                               width="130">
+                <template #default="scope">
+                  {{ calcAlreadyReturned(scope.row) }}
+                </template>
+              </el-table-column>
               <el-table-column label="閫�璐ф暟閲�"
                                prop="returnQuantity"
                                width="180">
@@ -270,6 +275,7 @@
                   <el-input-number v-model="scope.row.returnQuantity"
                             controls-position="right"
                             :step="1"
+                            :precision="6"
                             :min="0"
                             :max="getReturnQtyMax(scope.row)"
                             :disabled="getReturnQtyMax(scope.row) <= 0"
@@ -321,7 +327,6 @@
                 </template>
               </el-table-column>
             </el-table>
-            </div>
           </div>
 
         <div class="section-title">
@@ -336,7 +341,7 @@
           <el-input-number v-model="formState.totalDiscountAmount"
                            controls-position="right"
                            :step="0.01"
-                           :precision="2"
+                           :precision="6"
                            style="width: 100%;"
                            @change="handleChangeTotalDiscountAmount"
                            placeholder="璇疯緭鍏ユ暣鍗曟姌鎵i"/>
@@ -349,7 +354,7 @@
           <el-input v-model="formState.totalDiscountRate"
                            controls-position="right"
                            :step="0.01"
-                           :precision="2"
+                           :precision="6"
                            style="width: 100%;"
                            @change="totalDiscount"
                            placeholder="璇疯緭鍏ユ暣鍗曟姌鎵g巼">
@@ -373,7 +378,7 @@
           <el-input-number v-model="formState.totalAmount"
                            controls-position="right"
                            :step="0.01"
-                           :precision="2"
+                           :precision="6"
                            style="width: 100%;"
                            placeholder="璇疯緭鍏ユ垚浜ら噾棰�"/>
         </el-form-item>
@@ -507,7 +512,7 @@
 });
 
 const formattedNumber = (row, column, cellValue) => {
-  return parseFloat(cellValue).toFixed(2);
+  return parseFloat(cellValue).toFixed(6);
 };
 
 const formatAmount = (value) => {
@@ -518,7 +523,7 @@
   if (Number.isNaN(num)) {
     return '--'
   }
-  return num.toFixed(2)
+  return num.toFixed(6)
 }
 
 const toNumber = (val) => {
@@ -526,11 +531,20 @@
   return Number.isNaN(num) ? 0 : num
 }
 
+/** 宸查��璐ф暟閲� = 鍏ュ簱琛屾�绘暟閲� 鈭� 褰撳墠鍙��璐ф暟閲忥紙鍓╀綑锛� */
+const calcAlreadyReturned = (row) => {
+  const total = Number(row?.stockInNum ?? row?.totalQuantity ?? row?.quantity ?? 0)
+  const un = Number(row?.unQuantity ?? 0)
+  if (!Number.isFinite(total) || !Number.isFinite(un)) return 0
+  // 淇濈暀6浣嶅皬鏁帮紝閬垮厤娴偣鍑忔硶浜х敓绮惧害璇樊
+  return Math.max(parseFloat((total - un).toFixed(6)), 0)
+}
+
 const getReturnTotal = (row) => {
   const qty = toNumber(row?.returnQuantity)
   const unitPrice = toNumber(row?.taxInclusiveUnitPrice)
   const total = qty * unitPrice
-  return Number(total.toFixed(2))
+  return Number(total.toFixed(6))
 }
 
 const syncReturnTotal = (row) => {
@@ -556,7 +570,7 @@
   }
   const baseAmount = getBaseAmount()
   // 鎶樻墸棰� = 浜у搧閫�璐ф�讳环鍚堣 * 鎶樻墸鐜�
-  formState.value.totalDiscountAmount = Number((baseAmount * (discountRate / 100)).toFixed(2))
+  formState.value.totalDiscountAmount = Number((baseAmount * (discountRate / 100)).toFixed(6))
   syncTotalAmount()
 }
 
@@ -584,9 +598,12 @@
         "taxExclusiveTotalPrice",
       ],
       {
-        stockInNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-        returnQuantity: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-        unQuantity: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+        stockInNum: { decimalPlaces: 6 },
+        returnQuantity: { decimalPlaces: 6 },
+        unQuantity: { decimalPlaces: 6 },
+        taxInclusiveUnitPrice: { decimalPlaces: 6 },
+        taxInclusiveTotalPrice: { decimalPlaces: 6 },
+        taxExclusiveTotalPrice: { decimalPlaces: 6 },
       }
   );
 };
@@ -608,11 +625,11 @@
 
   if (normalizedAmount > baseAmount) {
     proxy.$modal.msgError("鏁村崟鎶樻墸棰濅笉鑳藉ぇ浜庝骇鍝侀��璐ф�讳环鍚堣")
-    formState.value.totalDiscountAmount = Number(baseAmount.toFixed(2))
+    formState.value.totalDiscountAmount = Number(baseAmount.toFixed(6))
   }
 
   const discountRate = (toNumber(formState.value.totalDiscountAmount) / baseAmount) * 100
-  formState.value.totalDiscountRate = Number(discountRate.toFixed(2))
+  formState.value.totalDiscountRate = Number(discountRate.toFixed(6))
   syncTotalAmount()
 }
 
@@ -627,7 +644,7 @@
   const baseAmount = getBaseAmount()
   const discount = toNumber(formState.value.totalDiscountAmount)
   // 鎴愪氦閲戦 = 浜у搧閫�璐ф�讳环鍚堣 - 鎶樻墸棰�
-  formState.value.totalAmount = Number((baseAmount - discount).toFixed(2))
+  formState.value.totalAmount = Number((baseAmount - discount).toFixed(6))
 }
 
 // 鑾峰彇渚涘簲鍟嗛�夐」
@@ -689,7 +706,7 @@
     ...item,
     returnQuantity: undefined,
     taxInclusiveTotalPrice: 0,
-    salesLedgerProductId: item.salesLedgerProductId ?? item.id,
+    // salesLedgerProductId: item.salesLedgerProductId,
   }));
   formState.value.purchaseReturnOrderProductsDtos.push(...newProducts);
   syncTotalAmount()
@@ -792,12 +809,5 @@
   margin-right: 8px;
 }
 
-.product-table-scroll {
-  width: 100%;
-  overflow-x: auto;
-}
 
-.product-table-inner {
-  min-width: 1280px;
-}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3