feat(mes/eqp/check): add inspector summary statistics table
新增按实际巡检人维度的巡检汇总统计表格,展示巡检人、巡检次数、通过/不通过数量及通过率
This commit is contained in:
@@ -37,6 +37,17 @@
|
|||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<!-- 负责人汇总 -->
|
<!-- 负责人汇总 -->
|
||||||
|
<el-card class="section-card" v-if="inspectorSummary.length" style="margin-bottom: 16px;">
|
||||||
|
<div slot="header"><i class="el-icon-user"></i> 按实际巡检人汇总</div>
|
||||||
|
<el-table :data="inspectorSummary" size="small" stripe border>
|
||||||
|
<el-table-column prop="inspector" label="巡检人" />
|
||||||
|
<el-table-column prop="total" label="巡检次数" align="center" />
|
||||||
|
<el-table-column prop="pass" label="通过" align="center" />
|
||||||
|
<el-table-column prop="fail" label="不通过" align="center" />
|
||||||
|
<el-table-column prop="passRate" label="通过率" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
<el-card class="section-card" v-if="personSummary.length" style="margin-bottom: 16px;">
|
<el-card class="section-card" v-if="personSummary.length" style="margin-bottom: 16px;">
|
||||||
<div slot="header"><i class="el-icon-user"></i> 按负责人汇总</div>
|
<div slot="header"><i class="el-icon-user"></i> 按负责人汇总</div>
|
||||||
<el-table :data="personSummary" size="small" stripe border>
|
<el-table :data="personSummary" size="small" stripe border>
|
||||||
@@ -195,6 +206,22 @@ export default {
|
|||||||
const end = new Date(this.dateRange[1]);
|
const end = new Date(this.dateRange[1]);
|
||||||
return Math.ceil((end - start) / (1000 * 60 * 60 * 24)) + 1;
|
return Math.ceil((end - start) / (1000 * 60 * 60 * 24)) + 1;
|
||||||
},
|
},
|
||||||
|
inspectorSummary() {
|
||||||
|
const map = {};
|
||||||
|
this.records.forEach(r => {
|
||||||
|
const name = r.inspector || '未指定';
|
||||||
|
if (!map[name]) {
|
||||||
|
map[name] = { inspector: name, total: 0, pass: 0, fail: 0 };
|
||||||
|
}
|
||||||
|
map[name].total++;
|
||||||
|
if (r.runStatus === 1) map[name].pass++;
|
||||||
|
else if (r.runStatus === 2) map[name].fail++;
|
||||||
|
});
|
||||||
|
return Object.values(map).map(p => ({
|
||||||
|
...p,
|
||||||
|
passRate: p.total > 0 ? (p.pass / p.total * 100).toFixed(1) + '%' : '0%',
|
||||||
|
}));
|
||||||
|
},
|
||||||
personSummary() {
|
personSummary() {
|
||||||
const personMap = {};
|
const personMap = {};
|
||||||
this.partList.forEach(p => {
|
this.partList.forEach(p => {
|
||||||
|
|||||||
Reference in New Issue
Block a user