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