From 49795a6abfbba67d808c4931629671104dd3e4cd Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期二, 22 八月 2023 18:01:51 +0800
Subject: [PATCH] modified: src/api/experiment/passRateStatistics.js modified: src/views/experiment/passRateStatistics/index.vue
---
src/views/experiment/passRateStatistics/index.vue | 402 ++++++++++++++++++++++++++++++++-------------------------
src/api/experiment/passRateStatistics.js | 11 +
2 files changed, 237 insertions(+), 176 deletions(-)
diff --git a/src/api/experiment/passRateStatistics.js b/src/api/experiment/passRateStatistics.js
index daa6a86..f8416d5 100644
--- a/src/api/experiment/passRateStatistics.js
+++ b/src/api/experiment/passRateStatistics.js
@@ -44,4 +44,15 @@
method: 'get',
params
})
+ }
+
+ /**
+ * getSampleOptions
+ */
+ export function getSampleOptions(params) {
+ return request({
+ url: '/qualificationRate/getSampleOptions',
+ method: 'get',
+ params
+ })
}
\ No newline at end of file
diff --git a/src/views/experiment/passRateStatistics/index.vue b/src/views/experiment/passRateStatistics/index.vue
index e59f783..8b2d081 100644
--- a/src/views/experiment/passRateStatistics/index.vue
+++ b/src/views/experiment/passRateStatistics/index.vue
@@ -19,6 +19,14 @@
</el-option>
</el-select>
</el-form-item>
+ <el-form-item style="margin-left: 40px;" label="鏍峰搧:">
+ <el-select v-model="searchData.code" filterable placeholder="璇烽�夋嫨">
+ <el-option v-for="item in sampleOptions" :key="item.value" :label="item.label" :value="item.value">
+ <span style="float: left">{{ item.label }}</span>
+ <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
+ </el-option>
+ </el-select>
+ </el-form-item>
<div class="rightBtn">
<el-form-item>
<el-button type="primary" plain size="mini">娓呯┖</el-button>
@@ -31,12 +39,18 @@
<div class="chart-content">
<div class="qualified-wrapper">
<div style="margin-left: 20px;padding:20px 0px;font-size:18px">妫�娴嬫牱鍝佸悎鏍肩巼缁熻</div>
- <div class="qualified" ref="qualified"></div>
+ <div :hidden="testSample" class="qualified" ref="qualified"></div>
+ <div :hidden="!testSample" style="height: 100%;text-align: center; color: #999696df; margin-top: 100px;">鏆傛棤鏁版嵁
+ </div>
</div>
<div class="unqualified">
<div class="firstBox-wrapper">
- <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗕笉鍚堟牸娆℃暟缁熻</div>
- <div class="firstBox" ref="unqualified_provider"></div>
+ <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗗悎鏍肩巼缁熻</div>
+ <div>
+ <div :hidden="supplierData" class="firstBox" ref="unqualified_provider"></div>
+ <div :hidden="!supplierData" style="height: 100%;text-align: center; color: #999696df; margin-top: 100px;">
+ 鏆傛棤鏁版嵁</div>
+ </div>
</div>
<div class="secondBox-wrapper">
<div class="secondBox_header">
@@ -46,7 +60,11 @@
}}</el-radio-button>
</el-radio-group>
</div>
- <div class="secondBox" ref="unqualified_project"></div>
+ <div style="width: 100%;height: 100;">
+ <div :hidden="projectData" class="secondBox" ref="unqualified_project"></div>
+ <div :hidden="!projectData" style="height: 100%;text-align: center; color: #999696df; margin-top: 100px;">鏆傛棤鏁版嵁
+ </div>
+ </div>
</div>
</div>
</div>
@@ -70,18 +88,25 @@
})
import * as echarts from 'echarts'
-import { getSupplierList,getTestSampleStatistics,getSupplierNoPassStatistics,getNoPassProjectStatistics } from '@/api/experiment/passRateStatistics';
+import { getSupplierList, getTestSampleStatistics, getSupplierNoPassStatistics, getNoPassProjectStatistics, getSampleOptions } from '@/api/experiment/passRateStatistics';
import { dateFormat } from '../../../utils/dateUtil'
export default {
data() {
return {
supplier: [],
+ sampleOptions: [],
searchData: {
date: [],
type: null,
- supplier: null
+ supplier: null,
+ sample: null,
+ code: null
},
options: [
+ {
+ label: '鍏ㄩ儴',
+ value: 3
+ },
{
label: '鍘熸潗鏂�',
value: 0
@@ -109,191 +134,215 @@
rules: {
// date: [{ required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur' }],
// type: [{ required: true, message: '璇疯緭鍏ュ悕瀛�', trigger: 'blur' }]
- }
+ },
+ supplierNoPassStatistics: null,
+ supplierData: false,
+ projectStatistics: null,
+ projectData: false,
+ testSampleStatistics: null,
+ testSample: false,
+ m1: null,
+ m2: null,
+ m3: null
}
},
- mounted() {
- this.getSupplierList()
- this.getTestSampleStatistics()
- this.getSupplierNoPassStatistics()
- const chartDom_qualified = this.$refs.qualified;
- const chartDom_unqualified_provider = this.$refs.unqualified_provider;
- const chartDom_unqualified_project = this.$refs.unqualified_project;
-
- const myChart1 = echarts.init(chartDom_qualified);
- const myChart2 = echarts.init(chartDom_unqualified_provider);
- const myChart3 = echarts.init(chartDom_unqualified_project);
-
- /**
- * 妫�娴嬪悎鏍肩巼缁熻
- */
- const option_qualified = {
- tooltip: {
- trigger: 'axis',
- axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
- type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
- }
- },
- legend: {
- data: ['鏁版嵁1', '鏁版嵁2', '鏁版嵁3']
- },
- xAxis: [
- {
- type: 'category',
- data: ['绗竴鎵�', '绗簩鎵�', '绗笁鎵�', '绗洓鎵�']
- }
- ],
- yAxis: [
- {
- type: 'value',
- axisLabel: {
- formatter: '{value}'
- }
- }
- ],
- series: [
- {
- name: '鏁版嵁1',
- type: 'bar',
- data: [7245, 3475, 1237, 3456]
- },
- {
- name: '鏁版嵁2',
- type: 'bar',
- data: [9965, 9075, 4875, 8687]
- },
- {
- name: '鏁版嵁3',
- type: 'line',
- yAxisIndex: 0,
- symbolSize: 3, // 鎶樼嚎鑺傜偣鐨勫ぇ灏�
- symbol: 'circle', // 鎶樼嚎鑺傜偣鐨勫舰鐘�
- smooth: false, // 骞虫粦鏇茬嚎
- data: [1465, 6437, 3257, 6537]
- }
- ]
- };
- /**
- * 渚涘簲鍟�
- */
- const option_unqualified1 = {
- tooltip: {
- trigger: 'axis',
- axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
- type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
- },
- formatter: function (params) {
- let tooltip = params[0].name + '<br/>';
- params.forEach(function (item) {
- tooltip += item.marker + ' ' + item.seriesName + ': ' + item.value.toFixed(2) + '%<br/>'; // 灏嗘暟鎹繚鐣欎袱浣嶅皬鏁板苟杞负鐧惧垎姣斿舰寮�
- });
- return tooltip;
- }
- },
- legend: {
- data: ['鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�']
- },
- xAxis: {
- data: ['渚涘簲鍟�1', '渚涘簲鍟�2', '渚涘簲鍟�3', '渚涘簲鍟�4']
- },
- yAxis: [
- {
- type: 'value',
- axisLabel: {
- formatter: '{value}%'
- }
- }
- ],
- series: [
- {
- name: '鍚堟牸鏁伴噺',
- data: [52, 46, 39, 66],
- type: 'bar',
- stack: 'x'
- },
- {
- name: '涓嶅悎鏍兼暟閲�',
- data: [47, 53, 60, 33],
- type: 'bar',
- stack: 'x'
- }
- ]
- };
- /**
- * 涓嶅悎鏍奸」鐩�
- */
- const option_unqualified2 = {
- legend: {
- orient: 'vertical',
- x: 'left',
- data: ['缁濈紭鍋忓績鐜�', '璇曢獙缁撴灉', '瀵间綋灞忚斀鏈�澶у��']
- },
- title: {
- text: '',
- left: 'center',
- top: 'center'
- },
- series: [
- {
- type: 'pie',
- data: [
- {
- value: 40,
- name: '缁濈紭鍋忓績鐜�'
- },
- {
- value: 20,
- name: '璇曢獙缁撴灉'
- },
- {
- value: 40,
- name: '瀵间綋灞忚斀鏈�澶у��'
- }
- ],
- radius: ['40%', '70%'],
- label: {
- show: true,
- formatter: '{b}: {c}'
- },
- }
- ]
- }
-
- myChart1.setOption(option_qualified);
- myChart2.setOption(option_unqualified1);
- if (this.type === 0) {
- myChart3.setOption(option_unqualified2);
- }
- if (this.type === 1) {
- myChart3.setOption(option_unqualified2);
- }
+ async mounted() {
+ await this.start()
+ this.tableStart()
},
methods: {
- search() {
- this.getTestSampleStatistics()
+ async search() {
+ this.testSampleStatistics = null
+ this.supplierNoPassStatistics = null
+ this.projectStatistics = null
+ this.supplier = []
+ this.sampleOptions = []
+ await this.start()
+ this.tableStart()
},
- dateHandle(){
- let data=JSON.parse(JSON.stringify(this.searchData))
- if(this.searchData.date.length!=0&&this.searchData.date !=[]){
- data.beginDate=dateFormat(this.searchData.date[0])
- data.endDate=dateFormat(this.searchData.date[1])
+ dateHandle() {
+ let data = JSON.parse(JSON.stringify(this.searchData))
+ if (this.searchData.date.length != 0 && this.searchData.date != []) {
+ data.beginDate = dateFormat(this.searchData.date[0])
+ data.endDate = dateFormat(this.searchData.date[1])
}
- data.date=null
+ if (data.supplier == '鍏ㄩ儴') {
+ data.supplier = null
+ }
+ if (data.type === 3) {
+ data.type = null
+ }
+ if (this.sampleOptions.length > 0 && this.sampleOptions != []) {
+ let labelSam = this.sampleOptions.filter(item => {
+ return item.value == data.code
+ })[0]
+ data.sample = labelSam.label
+ }
+ if (data.code == '鍏ㄩ儴') {
+ data.code = null
+ data.sample = null
+ }
+ data.date = null
return data
},
async getSupplierList() {
let res = await getSupplierList()
+ this.supplier.push({ label: '鍏ㄩ儴', value: '鍏ㄩ儴' })
res.data.forEach(item => {
this.supplier.push({ label: item.supplier, value: item.supplier })
})
},
- getTestSampleStatistics(){
- let param= this.dateHandle()
- let res =getTestSampleStatistics(param)
+ async getTestSampleStatistics() {
+ let param = this.dateHandle()
+ let res = await getTestSampleStatistics(param)
+ this.testSample = !res.data.noData
+ this.testSampleStatistics = res.data
},
- getSupplierNoPassStatistics(){
- let param= this.dateHandle()
- getSupplierNoPassStatistics(param)
+ async getSupplierNoPassStatistics() {
+ let param = this.dateHandle()
+ let res = await getSupplierNoPassStatistics(param)
+ this.supplierData = !res.data.noData
+ this.supplierNoPassStatistics = res.data
+ },
+ async getNoPassProjectStatistics() {
+ let param = this.dateHandle()
+ let res = await getNoPassProjectStatistics(param)
+ this.projectData = !res.data.noData
+ this.projectStatistics = res.data
+ },
+ async start() {
+ await this.getTestSampleStatistics()
+ await this.getSupplierNoPassStatistics()
+ await this.getNoPassProjectStatistics()
+ await this.getSupplierList()
+ await this.getSampleOptions()
+ },
+ async getSampleOptions() {
+ let res = await getSampleOptions()
+ this.sampleOptions.push({
+ label: '鍏ㄩ儴',
+ value: '鍏ㄩ儴'
+ })
+ res.data.forEach(item => {
+ let data = {
+ label: item.name,
+ value: item.code
+ }
+ this.sampleOptions.push(data)
+ })
+ },
+ tableStart() {
+ const chartDom_qualified = this.$refs.qualified;
+ const chartDom_unqualified_provider = this.$refs.unqualified_provider;
+ const chartDom_unqualified_project = this.$refs.unqualified_project;
+
+ const myChart1 = echarts.init(chartDom_qualified);
+ const myChart2 = echarts.init(chartDom_unqualified_provider, null, {
+ height: 300
+ });
+ const myChart3 = echarts.init(chartDom_unqualified_project, null, {
+ height: 268
+ });
+ this.m1 = myChart1
+ this.m2 = myChart2
+ this.m3 = myChart3
+ /**
+ * 妫�娴嬪悎鏍肩巼缁熻
+ */
+ const option_qualified = {
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
+ type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
+ }
+ },
+ legend: {
+ data: ['鍚堟牸', '涓嶅悎鏍�']
+ },
+ xAxis: [
+ {
+ type: 'category',
+ data: this.testSampleStatistics.xAxis
+ }
+ ],
+ yAxis: [
+ {
+ type: 'value',
+ axisLabel: {
+ formatter: '{value}'
+ }
+ }
+ ],
+ series: this.testSampleStatistics.series
+ };
+ /**
+ * 渚涘簲鍟�
+ */
+ const option_unqualified1 = {
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
+ type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
+ },
+ formatter: function (params) {
+ let tooltip = params[0].name + '<br/>';
+ params.forEach(function (item) {
+ tooltip += item.marker + ' ' + item.seriesName + ': ' + item.value.toFixed(2) + '%<br/>'; // 灏嗘暟鎹繚鐣欎袱浣嶅皬鏁板苟杞负鐧惧垎姣斿舰寮�
+ });
+ return tooltip;
+ }
+ },
+ legend: {
+ data: ['鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�']
+ },
+ xAxis: {
+ data: this.supplierNoPassStatistics.xAxis
+ },
+ yAxis: [
+ {
+ type: 'value',
+ axisLabel: {
+ formatter: '{value}%'
+ }
+ }
+ ],
+ series: this.supplierNoPassStatistics.series
+ };
+ /**
+ * 涓嶅悎鏍奸」鐩�
+ */
+ const option_unqualified2 = {
+ legend: {
+ orient: 'vertical',
+ x: 'left',
+ data: this.projectStatistics.legend
+ },
+ title: {
+ text: '',
+ left: 'center',
+ top: 'center'
+ },
+ series: [
+ {
+ type: 'pie',
+ data: this.projectStatistics.series,
+ radius: ['40%', '70%'],
+ label: {
+ show: true,
+ formatter: '{b}: {c}'
+ },
+ }
+ ]
+ }
+
+ myChart1.setOption(option_qualified);
+ myChart2.setOption(option_unqualified1);
+ if (this.type === 0) {
+ myChart3.setOption(option_unqualified2);
+ }
+ if (this.type === 1) {
+ myChart3.setOption(option_unqualified2);
+ }
}
}
}
@@ -303,6 +352,7 @@
.content-main {
height: 100%;
width: 100%;
+ overflow: auto;
.top-bar {
position: absolute;
--
Gitblit v1.9.3