update - add降级率报表

master
yinq 5 months ago
parent c37f76dafd
commit dc86698483

@ -170,3 +170,12 @@ export function boxTurnoverTraceabilityDetailReportList(query) {
params: query
})
}
// 质量返修率报表
export function downgradeProportionReportList(query) {
return request({
url: '/report/qualityReport/downgradeProportionReportList',
method: 'get',
params: query
})
}

@ -0,0 +1,391 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="产线" prop="PRODUCT_LINE_CODE">
<el-select v-model="queryParams.PRODUCT_LINE_CODE" placeholder="请选择产线">
<el-option
v-for="item in productLineList"
:key="item.productLineCode"
:label="item.productLineName"
:value="item.productLineCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="日期类型">
<el-select v-model="queryParams.dateType" placeholder="请选择日期类型" >
<el-option
v-for="item in dateTypeList"
:key="item.key"
:label="item.label"
:value="item.key"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="起止日期">
<el-date-picker
v-model="daterangeBeginTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="info"
plain
size="mini"
>样品机数{{ totalSum }}
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="reportList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="日期" align="center" prop="INSPECTOR_TIME" v-if="columns[1].visible"/>
<el-table-column label="样品机数" align="center" prop="QUALITY_SUM" v-if="columns[2].visible"/>
<el-table-column label="产量" align="center" prop="OFF_LINE_NUM" v-if="columns[3].visible"/>
<el-table-column label="降级率" align="center" prop="REPAIR_RATE" v-if="columns[4].visible">
<template slot-scope="scope">
{{ parseFloat(scope.row.REPAIR_RATE) }}%
</template>
</el-table-column>
</el-table>
<!-- <pagination-->
<!-- v-show="total>0"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.pageNum"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @pagination="getList"-->
<!-- />-->
</div>
</template>
<script>
import {
downgradeProportionReportList,
repairRateReportList
} from '@/api/report/reportAPI'
import {findProductLineList} from '@//api/base/productLine'
import {parseTime} from '@//utils/ruoyi'
import Chart from "@/components/board/Chart";
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default {
name: 'DowngradeProportionReport',
dicts: ['is_flag'],
components: {
Chart
},
data() {
return {
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
totalSum: 0,
//
reportList: [],
//
qualityDefectstList: [],
//
title: '',
//
open: false,
//
daterangeBeginTime: [],
//
dateTypeList: [{ key: 10, label: '日' }, { key: 7, label: '月' }, { key: 4, label: '年' }],
//
queryParams: {
// pageNum: 1,
// pageSize: 10,
beginBeginTime: null,
endBeginTime: null,
stationCodeList: null,
dateType: 10,
PRODUCT_LINE_CODE: 'CX_02',
ORDER_CODE: null,
MATERIAL_CODE: null,
MATERIAL_NAME: null,
BEGIN_DATE: null
},
//
form: {},
//
rules: {},
columns: [
{key: 0, label: `主键标识`, visible: false},
{key: 1, label: `日期`, visible: true},
{key: 2, label: `样品机数`, visible: true},
{key: 3, label: `产量`, visible: true},
{key: 4, label: `降级率`, visible: true}
],
// 线
productLineList: [],
}
},
created() {
findProductLineList({productLineType: 1}).then(response => {
this.productLineList = response.data
})
const weekDate = parseTime(new Date(Date.now() - 6 * 24 * 60 * 60 * 1000), '{y}-{m}-{d}')
const nowDate = parseTime(new Date(), '{y}-{m}-{d}')
this.daterangeBeginTime[0] = weekDate
this.daterangeBeginTime[1] = nowDate
this.queryParams.beginBeginTime = this.daterangeBeginTime[0]
this.queryParams.endBeginTime = this.daterangeBeginTime[1]
this.getList()
},
watch: {
'queryParams.PRODUCT_LINE_CODE': function (newVal, oldVal) {
//
findProductLineList({parentId: this.queryParams.PRODUCT_LINE_CODE, stationType: 2}).then(response => {
this.findStationList = response.data
})
},
},
methods: {
/** 查询工单信息列表 */
getList() {
this.loading = true
if (null != this.daterangeBeginTime && '' != this.daterangeBeginTime) {
this.queryParams.beginBeginTime = this.daterangeBeginTime[0]
this.queryParams.endBeginTime = this.daterangeBeginTime[1]
} else {
this.queryParams.beginBeginTime = null
this.queryParams.endBeginTime = null
}
downgradeProportionReportList(this.queryParams).then(response => {
this.reportList = response.data
this.totalSum = 0;
this.reportList.forEach(e => {
this.totalSum += e.QUALITY_SUM
})
this.total = response.total
this.loading = false
let e = response.data
this.$refs.chart1.setData({
grid: {
top: "15%",
left: "1%",
right: "1%",
bottom: "2%",
containLabel: true,
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#000',
},
},
},
legend: {
itemWidth: 3 * vw,
data: ['样品机数', '降级率(%)', '目标(%)'],
textStyle: {
color: "#000",
margin: 15,
fontSize: 0.75 * vw
},
},
xAxis: [
{
axisLabel: {
//
textStyle: {
color: "#000",
margin: 15,
fontSize: 0.75 * vw
},
},
type: 'category',
data: e.map(val => val.INSPECTOR_TIME),
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
splitLine: {
lineStyle: {
color: "rgba(255,255,255,0.1)",
},
},
axisLabel: {
//
textStyle: {
color: "#000",
margin: 15,
fontSize: 0.75 * vw
},
formatter: '{value}'
}
},
{
type: 'value',
splitLine: {
show: false,
},
axisLabel: {
//
textStyle: {
color: "#000",
margin: 15,
fontSize: 0.75 * vw
},
formatter: '{value}% '
}
}
],
series: [
{
name: '样品机数',
type: 'bar',
itemStyle: {
normal: {
color: function (val) {
if (parseFloat(e[val.dataIndex].REPAIR_RATE) < 0.2) {
return '#30e391'
} else {
return '#FE70A6'
}
// return "#0D81ED"
},
},
},
data: e.map(val => val.QUALITY_SUM),
label: {
show: true,
position: 'top',
textStyle: {
color: "rgba(255,255,255,0.5)",
fontSize: 0.75 * vw
},
},
},
{
name: '降级率(%)',
type: 'line',
yAxisIndex: 1,
data: e.map(val => parseFloat(val.REPAIR_RATE)),
itemStyle: {
normal: {
color: '#F9A25B',
},
},
},
{
name: '目标(%)',
type: 'line',
yAxisIndex: 1,
data: e.map(val => parseFloat(val.TARGET)),
itemStyle: {
normal: {
color: '#0DB99D',
},
},
}
]
})
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.daterangeBeginTime = []
this.form = {
WORK_CENTER_CODE: null,
PRODUCT_LINE_NAME: null,
ORDER_CODE: null,
stationCodeList: null,
MATERIAL_CODE: null,
MATERIAL_NAME: null,
BEGIN_DATE: null
}
const nowDate = parseTime(new Date(), '{y}-{m}-{d}')
this.daterangeBeginTime[0] = nowDate + ' 00:00:00'
this.daterangeBeginTime[1] = nowDate + ' 23:59:59'
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
// this.queryParams.pageNum = 1;
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 导出按钮操作 */
handleExport() {
this.download('/report/qualityReport/downgradeProportionReportList/export', {
...this.queryParams
}, `降级率报表_${new Date().getTime()}.xlsx`)
},
}
}
</script>
<style>
.chart1 {
width: 100%;
height: 20vw;
}
</style>

@ -61,16 +61,16 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否降级品" prop="isDowngrade">
<el-select v-model="queryParams.isDowngrade" placeholder="请选择是否降级品" clearable>
<el-option
v-for="item in isDowngradeList"
:key="item.key"
:label="item.label"
:value="item.key"
></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="是否降级品" prop="isDowngrade">-->
<!-- <el-select v-model="queryParams.isDowngrade" placeholder="请选择是否降级品" clearable>-->
<!-- <el-option-->
<!-- v-for="item in isDowngradeList"-->
<!-- :key="item.key"-->
<!-- :label="item.label"-->
<!-- :value="item.key"-->
<!-- ></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="起止时间">
<el-date-picker
v-model="daterangeBeginTime"

Loading…
Cancel
Save