From b439d99d55f594cd56cf06463a9f328812e25df4 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 20 十月 2026 00:25:39 +0800
Subject: [PATCH] feat: 添加加班时长和加班工资功能,支持手动输入并重新计算应发工资

---
 src/views/procurementManagement/procurementReport/index.vue |   52 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/src/views/procurementManagement/procurementReport/index.vue b/src/views/procurementManagement/procurementReport/index.vue
index 93eb7d9..37ca1f8 100644
--- a/src/views/procurementManagement/procurementReport/index.vue
+++ b/src/views/procurementManagement/procurementReport/index.vue
@@ -48,7 +48,7 @@
           <div class="summary-stats">
             <div class="stat-item">
               <span class="stat-label">閲囪喘鎬婚锛�</span>
-              <span class="stat-value">楼{{ businessSummaryStats.totalAmount.toLocaleString() }}</span>
+              <span class="stat-value">楼{{ formatStatAmount(businessSummaryStats.totalAmount) }}</span>
             </div>
             <div class="stat-item">
               <span class="stat-label">鍟嗗搧绉嶇被锛�</span>
@@ -56,7 +56,7 @@
             </div>
             <div class="stat-item">
               <span class="stat-label">閫�娆炬�婚锛�</span>
-              <span class="stat-value">{{ businessSummaryStats.returnAmount }}</span>
+              <span class="stat-value">楼{{ formatStatAmount(businessSummaryStats.returnAmount) }}</span>
             </div>
           </div>
         </div>
@@ -101,8 +101,28 @@
 // 缁熻鏁版嵁
 const businessSummaryStats = ref({
   totalAmount: 0,
+  returnAmount: 0,
   productTypes: 0
 })
+
+// 鏁板�煎睍绀哄彛寰勶細鍚庣杩斿洖 6 浣嶅皬鏁帮紙濡� 211.970000銆伮�3,420,674.200000锛夛紝
+// 椤甸潰鎸夊悗绔疄闄呬綅鏁板睍绀哄嵆鍙紝涓嶅啀琛ラ綈 6 浣嶁�斺�斿浣欑殑缁撳熬 0 涓�寰嬪幓鎺夈��
+// maximumFractionDigits 淇濈暀 6锛屾槸涓轰簡鍏滀綇鍓嶇鑷繁 reduce 姹傚拰鏃剁殑娴偣灏炬暟锛堝 3420674.2000000002锛夈��
+const NUM_FMT = { maximumFractionDigits: 6 }
+
+// 鏁伴噺/閲戦缁熶竴鏍煎紡鍖栵細甯﹀崈鍒嗕綅锛屽幓鎺夌粨灏惧浣欑殑 0锛涚┖鍊兼寜 0 澶勭悊
+const formatNum = (val, prefix = '') => {
+  const num = parseFloat(val)
+  if (val === null || val === undefined || val === '' || Number.isNaN(num)) {
+    return `${prefix}0`
+  }
+  return `${prefix}${num.toLocaleString('zh-CN', NUM_FMT)}`
+}
+
+// 姹囨�婚噾棰濆睍绀�
+const formatStatAmount = (val) => {
+  return formatNum(val)
+}
 
 // 琛ㄦ牸鍒楅厤缃紙鏍规嵁鍚庣瀛楁瀹氫箟锛�
 const tableColumns = ref([
@@ -118,32 +138,24 @@
     label: '閲囪喘鏁伴噺',
     prop: 'purchaseNum',
     width: 120,
-    formatData: (val) => {
-      return val ? parseFloat(val).toLocaleString() : '0'
-    }
+    formatData: (val) => formatNum(val)
   },
   {
     label: '閫�璐ф暟閲�',
     prop: 'returnQuantity',
     width: 120,
-    formatData: (val) => {
-      return val ? parseFloat(val).toLocaleString() : '0'
-    }
+    formatData: (val) => formatNum(val)
   },
   {
     label: '閫�璐ч噾棰�',
     prop: 'returnAmount',
     width: 120,
-    formatData: (val) => {
-      return val ? `楼${parseFloat(val).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : '楼0.00'
-    }
+    formatData: (val) => formatNum(val, '楼')
   },
   {
     label: '閫�娆惧偍閲�',
     prop: 'purchaseAmount',
-    formatData: (val) => {
-      return val ? `楼${parseFloat(val).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : '楼0.00'
-    }
+    formatData: (val) => formatNum(val, '楼')
   },
   {
     label: '閲囪喘娆℃暟',
@@ -154,9 +166,7 @@
     label: '骞冲潎鍗曚环',
     prop: 'averagePrice',
     width: 120,
-    formatData: (val) => {
-      return val ? `楼${parseFloat(val).toFixed(2)}` : '楼0.00'
-    }
+    formatData: (val) => formatNum(val, '楼')
   },
   {
     label: '渚涘簲鍟嗗悕绉�',
@@ -262,9 +272,11 @@
         businessSummaryStats.value.returnAmount = businessSummaryData.value.reduce((sum, item) => {
           return sum + (parseFloat(item.returnAmount) || 0)
         }, 0)
+        businessSummaryStats.value.productTypes = businessSummaryData.value.length
       } else {
         businessSummaryStats.value = {
           totalAmount: 0,
+          returnAmount: 0,
           productTypes: 0
         }
       }
@@ -333,12 +345,6 @@
 </script>
 
 <style scoped>
-.app-container {
-  padding: 20px;
-  background-color: #f5f7fa;
-  min-height: 100vh;
-}
-
 .page-header {
   text-align: center;
   margin-bottom: 20px;

--
Gitblit v1.9.3