From bdfab89d8afbc60faeb89715a461f77e877d7f5d Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期一, 03 八月 2026 00:02:37 +0800
Subject: [PATCH] feat: 新增徐州什克金属制品有限公司配置文件

---
 src/views/productionManagement/productionTraceability/index.vue |   70 +++++++++++++++++++++++++++++-----
 1 files changed, 59 insertions(+), 11 deletions(-)

diff --git a/src/views/productionManagement/productionTraceability/index.vue b/src/views/productionManagement/productionTraceability/index.vue
index a850788..19f7ed9 100644
--- a/src/views/productionManagement/productionTraceability/index.vue
+++ b/src/views/productionManagement/productionTraceability/index.vue
@@ -1,5 +1,7 @@
 <template>
   <div class="app-container">
+    <PageHeader v-if="showHeader"
+                content="鐢熶骇璁㈠崟" />
     <el-card style="height:82vh;overflow:auto;">
       <template #header>
         <div class="card-header">
@@ -42,7 +44,7 @@
             </el-tag>
           </el-descriptions-item>
           <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ rowData.productionOrderDto?.customerName || '-' }}</el-descriptions-item>
-          <el-descriptions-item label="寮�濮嬫棩鏈�">{{ parseTime(rowData.productionOrderDto?.startTime) || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="寮�濮嬫棩鏈�">{{ parseTime(rowData.productionOrderDto?.startTime,'{y}-{m}-{d}') || '-' }}</el-descriptions-item>
           <el-descriptions-item label="瀹屾垚杩涘害">
             <el-progress :percentage="rowData.productionOrderDto?.completionStatus>=100?100:rowData.productionOrderDto?.completionStatus"
                          :color="customColors(rowData.productionOrderDto?.completionStatus)"
@@ -78,11 +80,17 @@
                   {{ row.workOrder.model || '-' }}
                 </template>
               </el-table-column>
+              <el-table-column label="宸ュ簭"
+                               prop="workOrder.operationName"
+                               align="center" />
               <el-table-column prop="workOrder.planQuantity"
                                label="闇�姹傛暟閲�"
                                align="center" />
               <el-table-column prop="workOrder.completeQuantity"
                                label="瀹屾垚鏁伴噺"
+                               align="center" />
+              <el-table-column prop="workOrder.scrapQty"
+                               label="鎶ュ簾鏁伴噺"
                                align="center" />
               <el-table-column prop="workOrder.completionStatus"
                                label="瀹屾垚杩涘害"
@@ -124,8 +132,8 @@
             <el-descriptions-item label="鐢熶骇宸ュ崟鍙�">{{ detailData.workOrder.workOrderNo || '-' }}</el-descriptions-item>
             <el-descriptions-item label="璁″垝鏁伴噺">{{ detailData.workOrder.planQuantity || 0 }}</el-descriptions-item>
             <el-descriptions-item label="瀹屾垚鏁伴噺">{{ detailData.workOrder.completeQuantity || 0 }}</el-descriptions-item>
-            <el-descriptions-item label="瀹為檯寮�濮嬫椂闂�">{{ parseTime(detailData.workOrder.actualStartTime) || '-' }}</el-descriptions-item>
-            <el-descriptions-item label="瀹為檯缁撴潫鏃堕棿">{{ parseTime(detailData.workOrder.actualEndTime) || '-' }}</el-descriptions-item>
+            <el-descriptions-item label="瀹為檯寮�濮嬫椂闂�">{{ parseTime(detailData.workOrder.actualStartTime, '{y}-{m}-{d}') || '-' }}</el-descriptions-item>
+            <el-descriptions-item label="瀹為檯缁撴潫鏃堕棿">{{ parseTime(detailData.workOrder.actualEndTime, '{y}-{m}-{d}') || '-' }}</el-descriptions-item>
             <!-- <el-descriptions-item label="瀹屾垚杩涘害">
               <el-progress :percentage="detailData.workOrder.completionStatus >= 100 ? 100 : (detailData.workOrder.completionStatus || 0)"
                            :color="customColors(detailData.workOrder.completionStatus)"
@@ -152,13 +160,22 @@
                 {{ parseTime(row.createTime) }}
               </template>
             </el-table-column>
+            <el-table-column label="宸ユ椂锛坔锛�"
+                             prop="workHour"
+                             align="center" />
+            <el-table-column label="浜у嚭鏁伴噺"
+                             prop="quantity"
+                             align="center" />
+            <el-table-column label="鎶ュ簾鏁伴噺"
+                             prop="scrapQty"
+                             align="center" />
             <el-table-column label="鎿嶄綔"
                              align="center"
                              width="200">
               <template #default="{ row }">
                 <el-button type="primary"
                            link
-                           @click="showInput(row.id)">鏌ョ湅鎶曞叆</el-button>
+                           @click="showInput(row.productionProductMainId)">鏌ョ湅鎶曞叆</el-button>
                 <el-button type="primary"
                            link
                            @click="showParamDetail(row.productionOperationParamList)">鍙傛暟璇︽儏</el-button>
@@ -213,19 +230,20 @@
              :key="record.id"
              class="quality-record-block">
           <div class="detail-section">
-            <h3 class="section-title">妫�娴嬭褰� {{ index + 1 }} - {{ parseTime(record.createTime) }}</h3>
+            <h3 class="section-title">妫�娴嬭褰� {{ index + 1 }} - {{ parseTime(record.createTime, '{y}-{m}-{d}') }}</h3>
             <el-descriptions :column="3"
                              border>
-              <el-descriptions-item label="妫�娴嬫棩鏈�">{{ parseTime(record.createTime) || '-' }}</el-descriptions-item>
+              <el-descriptions-item label="妫�娴嬫棩鏈�">{{ parseTime(record.createTime, '{y}-{m}-{d}') || '-' }}</el-descriptions-item>
               <el-descriptions-item label="鎶ュ伐鍗曞彿">{{ record.reportNo || '-' }}</el-descriptions-item>
-              <el-descriptions-item label="妫�楠屽憳">{{ record.userName || '-' }}</el-descriptions-item>
+              <el-descriptions-item label="鎶ュ伐浜哄憳">{{ record.userName || '-' }}</el-descriptions-item>
               <el-descriptions-item label="浜у搧鍚嶇О">{{ record.productName || '-' }}</el-descriptions-item>
               <el-descriptions-item label="瑙勬牸鍨嬪彿">{{ record.model || '-' }}</el-descriptions-item>
               <el-descriptions-item label="鏁伴噺">{{ record.quantity || 0 }} {{ record.unit || '-' }}</el-descriptions-item>
               <el-descriptions-item label="妫�娴嬪崟浣�">{{ record.checkCompany || '-' }}</el-descriptions-item>
-              <el-descriptions-item label="妫�娴嬬粨鏋�">
-                <el-tag :type="record.checkResult === '鍚堟牸' ? 'success' : 'danger'">
-                  {{ record.checkResult || '寰呮娴�' }}
+              <el-descriptions-item label="妫�楠屽憳">{{ record.checkName || '-' }}</el-descriptions-item>
+              <el-descriptions-item label="鍚堟牸鐜�">
+                <el-tag :type="getPassRateTagType(record)">
+                  {{ getPassRateDisplay(record) }}
                 </el-tag>
               </el-descriptions-item>
             </el-descriptions>
@@ -267,7 +285,7 @@
 </template>
 
 <script setup>
-  import { ref, reactive, onMounted } from "vue";
+  import { ref, reactive, onMounted, computed } from "vue";
   import { useRoute, useRouter } from "vue-router";
   import { ElMessage } from "element-plus";
   import { parseTime } from "@/utils/ruoyi";
@@ -279,6 +297,13 @@
 
   const route = useRoute();
   const router = useRouter();
+
+  // 鍒ゆ柇鏄惁鏄剧ず椤靛ご
+  const showHeader = computed(() => {
+    return (
+      Object.keys(route.query).length > 0 || Object.keys(route.params).length > 0
+    );
+  });
 
   // 鎼滅储鐩稿叧
   const searchForm = reactive({
@@ -336,6 +361,28 @@
     return "#67c23a";
   };
 
+  const getPassRate = (record) => {
+    const qualified = Number(record.qualifiedQuantity) || 0;
+    const unqualified = Number(record.unqualifiedQuantity) || 0;
+    const total = qualified + unqualified;
+    if (total === 0) return null;
+    return Number(((qualified / total) * 100).toFixed(2));
+  };
+
+  const getPassRateDisplay = (record) => {
+    const rate = getPassRate(record);
+    if (rate === null) return '鈥�';
+    return `${rate}%`;
+  };
+
+  const getPassRateTagType = (record) => {
+    const rate = getPassRate(record);
+    if (rate === null) return 'info';
+    if (rate >= 100) return 'success';
+    if (rate >= 75) return 'primary';
+    return 'danger';
+  };
+
   // 妯℃嫙鎼滅储鏂规硶
   const handleNpsNoSearch = async query => {
     npsNoLoading.value = true;
@@ -385,6 +432,7 @@
       workOrder: row.workOrder || {},
       reports: (row.reportList || []).map(r => ({
         ...r.reportMain,
+        ...(r.reportOutputList[0] || {}),
         productionOperationParamList: r.reportParamList || [],
       })),
     };

--
Gitblit v1.9.3