From 53b991242c39597af173f110de38f0fe33173255 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com>
Date: Wed, 3 Jun 2026 14:07:46 +0800
Subject: [PATCH] =?UTF-8?q?feat(mes/roll/report):=20=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=E7=A3=A8=E8=BE=8A=E4=BA=BA=E5=91=98=E7=BB=9F=E8=AE=A1=E6=8A=A5?=
=?UTF-8?q?=E8=A1=A8=EF=BC=8C=E6=8C=89=E8=BE=8A=E5=9E=8B=E6=8B=86=E5=88=86?=
=?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
该提交重构了磨辊报表的操作人员统计模块,将原有的总统计拆分为中间辊(CR)、支撑辊(BR)、工作辊(WR)的分项统计,并增加了合计栏,同时完善了辊型识别逻辑,新增了对应的数据计算和表格展示。
---
klp-ui/src/views/mes/roll/report/index.vue | 80 ++++++++++++++++++----
1 file changed, 67 insertions(+), 13 deletions(-)
diff --git a/klp-ui/src/views/mes/roll/report/index.vue b/klp-ui/src/views/mes/roll/report/index.vue
index e677f263..6cf730ff 100644
--- a/klp-ui/src/views/mes/roll/report/index.vue
+++ b/klp-ui/src/views/mes/roll/report/index.vue
@@ -81,14 +81,43 @@
-
-
-
-
- {{ row.totalGrindAmount.toFixed(2) }}
+
+
+
+
+
+ {{ row.crTotalGrindAmount.toFixed(2) }}
+
+
+ {{ row.crAvgGrindAmount.toFixed(2) }}
+
-
- {{ row.avgGrindAmount.toFixed(2) }}
+
+
+
+ {{ row.brTotalGrindAmount.toFixed(2) }}
+
+
+ {{ row.brAvgGrindAmount.toFixed(2) }}
+
+
+
+
+
+ {{ row.wrTotalGrindAmount.toFixed(2) }}
+
+
+ {{ row.wrAvgGrindAmount.toFixed(2) }}
+
+
+
+
+
+ {{ row.totalGrindAmount.toFixed(2) }}
+
+
+ {{ row.avgGrindAmount.toFixed(2) }}
+
@@ -175,7 +204,7 @@ export default {
this.computeSummary(allRecords, rollMap)
this.computeDailyTrend(allRecords)
this.computeRollTypeDist(allRecords, rollMap)
- this.computeOperatorStats(allRecords)
+ this.computeOperatorStats(allRecords, rollMap)
this.updateCharts()
} catch (e) {
console.error('加载报表数据失败', e)
@@ -214,25 +243,50 @@ export default {
const typeMap = {}
records.forEach(r => {
const roll = rollMap[r.rollId]
- const type = roll ? (roll.rollType === 'WR' ? '工作辊' : roll.rollType === 'BR' ? '支撑辊' : roll.rollType || '未知') : '未知'
+ const type = roll ? (roll.rollType === 'WR' ? '工作辊' : roll.rollType === 'BR' ? '支撑辊' : roll.rollType === 'CR' ? '中间辊' : roll.rollType || '未知') : '未知'
if (!typeMap[type]) typeMap[type] = { name: type, value: 0, grindCount: 0 }
typeMap[type].value += Number(r.grindAmount || 0)
typeMap[type].grindCount++
})
this.rollTypeDist = Object.values(typeMap)
},
- computeOperatorStats(records) {
+ computeOperatorStats(records, rollMap) {
const opMap = {}
records.forEach(r => {
const name = r.operator || '未知'
- if (!opMap[name]) opMap[name] = { operator: name, grindCount: 0, totalGrindAmount: 0 }
+ if (!opMap[name]) opMap[name] = {
+ operator: name,
+ grindCount: 0, totalGrindAmount: 0,
+ crGrindCount: 0, crTotalGrindAmount: 0,
+ brGrindCount: 0, brTotalGrindAmount: 0,
+ wrGrindCount: 0, wrTotalGrindAmount: 0
+ }
opMap[name].grindCount++
opMap[name].totalGrindAmount += Number(r.grindAmount || 0)
+ const roll = rollMap[r.rollId]
+ const rollType = roll ? (roll.rollType || '') : ''
+ const amount = Number(r.grindAmount || 0)
+ if (rollType === 'CR') {
+ opMap[name].crGrindCount++
+ opMap[name].crTotalGrindAmount += amount
+ } else if (rollType === 'BR') {
+ opMap[name].brGrindCount++
+ opMap[name].brTotalGrindAmount += amount
+ } else if (rollType === 'WR') {
+ opMap[name].wrGrindCount++
+ opMap[name].wrTotalGrindAmount += amount
+ }
})
this.operatorStats = Object.values(opMap).map(item => ({
...item,
totalGrindAmount: Number(item.totalGrindAmount.toFixed(2)),
- avgGrindAmount: item.grindCount > 0 ? Number((item.totalGrindAmount / item.grindCount).toFixed(2)) : 0
+ avgGrindAmount: item.grindCount > 0 ? Number((item.totalGrindAmount / item.grindCount).toFixed(2)) : 0,
+ crTotalGrindAmount: Number(item.crTotalGrindAmount.toFixed(2)),
+ crAvgGrindAmount: item.crGrindCount > 0 ? Number((item.crTotalGrindAmount / item.crGrindCount).toFixed(2)) : 0,
+ brTotalGrindAmount: Number(item.brTotalGrindAmount.toFixed(2)),
+ brAvgGrindAmount: item.brGrindCount > 0 ? Number((item.brTotalGrindAmount / item.brGrindCount).toFixed(2)) : 0,
+ wrTotalGrindAmount: Number(item.wrTotalGrindAmount.toFixed(2)),
+ wrAvgGrindAmount: item.wrGrindCount > 0 ? Number((item.wrTotalGrindAmount / item.wrGrindCount).toFixed(2)) : 0
})).sort((a, b) => b.totalGrindAmount - a.totalGrindAmount)
},
initCharts() {
@@ -272,7 +326,7 @@ export default {
data: [],
emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0,0,0,0.5)' } }
}],
- color: ['#409eff', '#e6a23c', '#909399']
+ color: ['#409eff', '#e6a23c', '#67c23a', '#909399']
})
},
updateCharts() {