OEE添加合格品次品待判级内容

This commit is contained in:
2026-03-19 18:41:08 +08:00
parent a858abccea
commit 52b77991d5
3 changed files with 182 additions and 50 deletions

View File

@@ -79,11 +79,26 @@
<span>{{ formatPercent(scope.row.performanceTon) }}</span>
</template>
</el-table-column>
<el-table-column prop="quality" label="良品率 Q (%)" align="center">
<el-table-column prop="quality" label="良品率(%)" align="center">
<template slot-scope="scope">
<span>{{ formatPercent(scope.row.quality) }}</span>
</template>
</el-table-column>
<el-table-column prop="qualifiedRate" label="合格品率(%)" align="center">
<template slot-scope="scope">
<span>{{ formatPercent(scope.row.qualifiedRate) }}</span>
</template>
</el-table-column>
<el-table-column prop="defectRate" label="次品率 (%)" align="center">
<template slot-scope="scope">
<span>{{ formatPercent(scope.row.defectRate) }}</span>
</template>
</el-table-column>
<el-table-column prop="pendingRate" label="待判级率 (%)" align="center">
<template slot-scope="scope">
<span>{{ formatPercent(scope.row.pendingRate) }}</span>
</template>
</el-table-column>
<el-table-column prop="loadingTimeMin" label="负荷时间 (min)" align="center" />
<el-table-column prop="downtimeMin" label="停机时间 (min)" align="center" />
<el-table-column prop="runTimeMin" label="运转时间 (min)" align="center" />
@@ -93,16 +108,26 @@
</template>
</el-table-column>
<el-table-column prop="totalOutputCoil" label="总产量 (卷)" align="center" />
<el-table-column prop="goodOutputTon" label="良品量 (吨)" align="center">
<el-table-column prop="goodOutputTon" label="良品(吨)" align="center">
<template slot-scope="scope">
<span>{{ formatNumber(scope.row.goodOutputTon) }}</span>
</template>
</el-table-column>
<el-table-column prop="defectOutputTon" label="次品量 (吨)" align="center">
<el-table-column prop="abOutputTon" label="合格(吨)" align="center">
<template slot-scope="scope">
<span>{{ formatNumber(scope.row.abOutputTon) }}</span>
</template>
</el-table-column>
<el-table-column prop="defectOutputTon" label="次品(吨)" align="center">
<template slot-scope="scope">
<span>{{ formatNumber(scope.row.defectOutputTon) }}</span>
</template>
</el-table-column>
<el-table-column prop="pendingOutputTon" label="待判(吨)" align="center">
<template slot-scope="scope">
<span>{{ formatNumber(scope.row.pendingOutputTon) }}</span>
</template>
</el-table-column>
</el-table>
<!-- 日明细趋势表格风格方便导出 Word -->
@@ -133,11 +158,26 @@
{{ formatPercent(scope.row.performanceTon) }}
</template>
</el-table-column>
<el-table-column prop="quality" label="Q (%)">
<el-table-column prop="quality" label="良品率 (%)">
<template slot-scope="scope">
{{ formatPercent(scope.row.quality) }}
</template>
</el-table-column>
<el-table-column prop="qualifiedRate" label="合格品率 (%)">
<template slot-scope="scope">
{{ formatPercent(scope.row.qualifiedRate) }}
</template>
</el-table-column>
<el-table-column prop="defectRate" label="次品率 (%)">
<template slot-scope="scope">
{{ formatPercent(scope.row.defectRate) }}
</template>
</el-table-column>
<el-table-column prop="pendingRate" label="待判级率 (%)">
<template slot-scope="scope">
{{ formatPercent(scope.row.pendingRate) }}
</template>
</el-table-column>
<el-table-column prop="loadingTimeMin" label="负荷 (min)"/>
<el-table-column prop="downtimeMin" label="停机 (min)"/>
<el-table-column prop="runTimeMin" label="运转 (min)"/>
@@ -147,16 +187,26 @@
</template>
</el-table-column>
<el-table-column prop="totalOutputCoil" label="总产量 (卷)" />
<el-table-column prop="goodOutputTon" label="良品 (吨)">
<el-table-column prop="goodOutputTon" label="良品(吨)">
<template slot-scope="scope">
{{ formatNumber(scope.row.goodOutputTon) }}
</template>
</el-table-column>
<el-table-column prop="defectOutputTon" label="次品 (吨)">
<el-table-column prop="abOutputTon" label="合格(吨)">
<template slot-scope="scope">
{{ formatNumber(scope.row.abOutputTon) }}
</template>
</el-table-column>
<el-table-column prop="defectOutputTon" label="次品(吨)">
<template slot-scope="scope">
{{ formatNumber(scope.row.defectOutputTon) }}
</template>
</el-table-column>
<el-table-column prop="pendingOutputTon" label="待判(吨)">
<template slot-scope="scope">
{{ formatNumber(scope.row.pendingOutputTon) }}
</template>
</el-table-column>
</el-table>
<!-- OEE/A/P/Q 趋势图 -->
@@ -263,7 +313,7 @@
<ul class="formula-list">
<li>A时间稼动率 = (负荷时间 停机时间) / 负荷时间</li>
<li>P性能稼动率吨维度 = (理论节拍 × 产量吨) / 实际运转时间</li>
<li>Q良品率 = 良品 / 总产量吨</li>
<li>Q良品率 = A系列 / 总产量吨</li>
</ul>
</div>
@@ -273,8 +323,9 @@
<li><b>负荷时间</b>计划生产时间扣除计划停机后的时间</li>
<li><b>停机时间</b>所有停机/中断 stop_type 汇总的总时长</li>
<li><b>实际运转时间</b>负荷时间 停机时间</li>
<li><b>理论节拍</b>优良日统计口径得到的稳定节拍分钟/由理论节拍接口提供</li>
<li><b>良品/次品</b> WMS `quality_status` 判断C+/C/C-/D+/D/D- </li>
<li><b>理论节拍</b>先按天计算(运转时间/)再取中位数并按业务口径乘以80%</li>
<li><b>A系列</b>良品<b>B系列</b>合格品<b>C/D系列</b>次品<b>O系列</b>待判级</li>
<li><b>合格品率(AB)</b> = (A+B) / 总量<b>次品率(CD)</b> = CD / 总量<b>待判级率(O)</b> = O / 总量</li>
</ul>
</div>
@@ -337,7 +388,7 @@ export default {
this.formatDate(today)
],
pickerOptions: {
disabledDate(time) {
disabledDate() {
// 不限制选择范围,保留扩展空间
return false
}
@@ -365,13 +416,18 @@ export default {
availability: 0,
performanceTon: 0,
quality: 0,
qualifiedRate: 0,
defectRate: 0,
pendingRate: 0,
loadingTimeMin: 0,
downtimeMin: 0,
runTimeMin: 0,
totalOutputTon: 0,
totalOutputCoil: 0,
goodOutputTon: 0,
defectOutputTon: 0
abOutputTon: 0,
defectOutputTon: 0,
pendingOutputTon: 0
}
}
let sumLoading = 0
@@ -379,12 +435,17 @@ export default {
let sumRun = 0
let sumTotalTon = 0
let sumGoodTon = 0
let sumAbTon = 0
let sumDefectTon = 0
let sumPendingTon = 0
let sumCoil = 0
let sumOee = 0
let sumA = 0
let sumP = 0
let sumQ = 0
let sumQualifiedRate = 0
let sumDefectRate = 0
let sumPendingRate = 0
list.forEach(row => {
sumLoading += row.loadingTimeMin || 0
@@ -392,28 +453,37 @@ export default {
sumRun += row.runTimeMin || 0
sumTotalTon += Number(row.totalOutputTon || 0)
sumGoodTon += Number(row.goodOutputTon || 0)
sumAbTon += Number(row.abOutputTon || 0)
sumDefectTon += Number(row.defectOutputTon || 0)
sumPendingTon += Number(row.pendingOutputTon || 0)
sumCoil += row.totalOutputCoil || 0
sumOee += Number(row.oee || 0)
sumA += Number(row.availability || 0)
sumP += Number(row.performanceTon || 0)
sumQ += Number(row.quality || 0)
sumQualifiedRate += Number(row.qualifiedRate || 0)
sumDefectRate += Number(row.defectRate || 0)
sumPendingRate += Number(row.pendingRate || 0)
})
const n = list.length
const defectAgg = Math.max(0, sumTotalTon - sumGoodTon)
return {
oee: n ? sumOee / n : 0,
availability: n ? sumA / n : 0,
performanceTon: n ? sumP / n : 0,
quality: n ? sumQ / n : 0,
qualifiedRate: n ? sumQualifiedRate / n : 0,
defectRate: n ? sumDefectRate / n : 0,
pendingRate: n ? sumPendingRate / n : 0,
loadingTimeMin: sumLoading,
downtimeMin: sumDowntime,
runTimeMin: sumRun,
totalOutputTon: sumTotalTon,
totalOutputCoil: sumCoil,
goodOutputTon: sumGoodTon,
defectOutputTon: defectAgg || sumDefectTon
abOutputTon: sumAbTon,
defectOutputTon: sumDefectTon,
pendingOutputTon: sumPendingTon
}
}
},