|
|
@@ -20,7 +20,7 @@
|
|
|
margin-top: 10px;
|
|
|
"
|
|
|
>
|
|
|
- 室间质控看板
|
|
|
+ 室间质控报表
|
|
|
</div>
|
|
|
<dv-decoration-5
|
|
|
style="width: 30%; height: 50%; margin: 0 auto"
|
|
|
@@ -42,17 +42,6 @@
|
|
|
<div style="margin-right:10px;">选择年份</div>
|
|
|
<yearrange st :year-values="yearValues" :size="size" :value-format="valueFormat" />
|
|
|
</div>
|
|
|
- <div style="display: flex; text-align: center; height:38px; line-height: 38px;width: 25%;position: absolute; left: 33%;top:15%;z-index:1">
|
|
|
- <div style="margin-right:10px;font-size: 14px;">活动名称</div>
|
|
|
- <el-select v-model="activityValue" size="small" clearable filterable placeholder="请选择">
|
|
|
- <el-option
|
|
|
- v-for="item in activityList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.value"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
<div
|
|
|
|
|
|
style="width:12%; height:2.825rem; line-height:2.825rem; text-align:center;position: absolute; right: 3%; top:6%;color:white;"
|
|
|
@@ -65,7 +54,7 @@
|
|
|
<dv-border-box-1
|
|
|
style="
|
|
|
width: 100%;
|
|
|
- height: 89%;
|
|
|
+ height: 90%;
|
|
|
box-sizing: border-box;
|
|
|
overflow: hidden;
|
|
|
"
|
|
|
@@ -74,37 +63,29 @@
|
|
|
<div class="botView">
|
|
|
<div class="viewTop">
|
|
|
<div class="topleft">
|
|
|
- <topLeftChart :info="topLeftData" />
|
|
|
+ <chartA :info="chartAData" />
|
|
|
</div>
|
|
|
<dv-decoration-2
|
|
|
:reverse="true"
|
|
|
style="width: 2%; height: 100%"
|
|
|
/>
|
|
|
<div class="topright">
|
|
|
- <topRightChart :info="topRightData" />
|
|
|
+ <chartB :info="chartBData" />
|
|
|
</div>
|
|
|
</div>
|
|
|
<dv-decoration-10
|
|
|
style="height: 2%; width: 100%; margin: 0 auto"
|
|
|
/>
|
|
|
-
|
|
|
<div class="viewBot">
|
|
|
<div class="botleft">
|
|
|
- <botChart :info="botLeftData" />
|
|
|
- </div>
|
|
|
- <dv-decoration-2
|
|
|
- :reverse="true"
|
|
|
- style="width: 2%; height: 100%"
|
|
|
- />
|
|
|
- <div class="botmidd">
|
|
|
- <botChart :info="botMiddData" />
|
|
|
+ <chartC :info="chartCData" />
|
|
|
</div>
|
|
|
<dv-decoration-2
|
|
|
:reverse="true"
|
|
|
style="width: 2%; height: 100%"
|
|
|
/>
|
|
|
<div class="botright">
|
|
|
- <botChart :info="botRightData" />
|
|
|
+ <chartD :info="chartDData" />
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
@@ -121,9 +102,10 @@ export default {
|
|
|
components: {
|
|
|
|
|
|
yearrange: () => import('../yearrange.vue'),
|
|
|
- topLeftChart: () => import('./topLeftChart.vue'),
|
|
|
- topRightChart: () => import('./topRightChart.vue'),
|
|
|
- botChart: () => import('./botChart.vue')
|
|
|
+ chartA: () => import('./chartA.vue'),
|
|
|
+ chartB: () => import('./chartB.vue'),
|
|
|
+ chartC: () => import('./chartC.vue'),
|
|
|
+ chartD: () => import('./chartD.vue')
|
|
|
|
|
|
},
|
|
|
data () {
|
|
|
@@ -135,36 +117,39 @@ export default {
|
|
|
result1: [],
|
|
|
result2: [],
|
|
|
result3: [],
|
|
|
+ result4: [],
|
|
|
+ result5: [],
|
|
|
+ result6: [],
|
|
|
list1: [],
|
|
|
list2: [],
|
|
|
list3: [],
|
|
|
+ list4: [],
|
|
|
+ list5: [],
|
|
|
+ list6: [],
|
|
|
+ list7: [],
|
|
|
data1: [],
|
|
|
data2: [],
|
|
|
data3: [],
|
|
|
yearValues: [new Date().getFullYear() - 4 + '', new Date().getFullYear() + ''],
|
|
|
size: 'mini',
|
|
|
valueFormat: 'yyyy',
|
|
|
- activityValue: '',
|
|
|
+
|
|
|
activityList: [],
|
|
|
- topLeftData: {
|
|
|
- id: 'topLeftChart',
|
|
|
- title: '室间质评计划项目总数'
|
|
|
- },
|
|
|
- topRightData: {
|
|
|
- id: 'topRightChart',
|
|
|
+ chartAData: {
|
|
|
+ id: 'chartA',
|
|
|
title: '项目验证类型统计'
|
|
|
},
|
|
|
- botLeftData: {
|
|
|
- id: 'botLeftChart',
|
|
|
- title: '室间质评项目不合格率'
|
|
|
+ chartBData: {
|
|
|
+ id: 'chartB',
|
|
|
+ title: '实验室间比对率'
|
|
|
},
|
|
|
- botMiddData: {
|
|
|
- id: 'botMiddChart',
|
|
|
- title: '室间质评项目覆盖率'
|
|
|
+ chartCData: {
|
|
|
+ id: 'chartC',
|
|
|
+ title: '检验项目不合格率'
|
|
|
},
|
|
|
- botRightData: {
|
|
|
- id: 'botRightChart',
|
|
|
- title: '实验室间比对率'
|
|
|
+ chartDData: {
|
|
|
+ id: 'chartD',
|
|
|
+ title: '检验项目参加率'
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -176,19 +161,6 @@ export default {
|
|
|
},
|
|
|
deep: true
|
|
|
// immediate: true
|
|
|
- },
|
|
|
- activityValue: {
|
|
|
- handler (newVal, oldVal) {
|
|
|
- this.topLeftData = {
|
|
|
- id: 'topLeftChart',
|
|
|
- title: '室间质评计划项目总数'
|
|
|
- }
|
|
|
- this.getList1()
|
|
|
- this.topLeftData.yearArr = this.yearArr
|
|
|
- this.topLeftData.numArr = this.numArr
|
|
|
- },
|
|
|
- deep: true
|
|
|
- // immediate: true
|
|
|
}
|
|
|
},
|
|
|
created () {
|
|
|
@@ -223,119 +195,71 @@ export default {
|
|
|
this.activityList = data
|
|
|
},
|
|
|
getData () {
|
|
|
- this.topLeftData = {
|
|
|
- id: 'topLeftChart',
|
|
|
- title: '室间质评计划项目总数'
|
|
|
- }
|
|
|
- this.topRightData = {
|
|
|
- id: 'topRightChart',
|
|
|
+ this.chartAData = {
|
|
|
+ id: 'chartA',
|
|
|
title: '项目验证类型统计'
|
|
|
}
|
|
|
- this.botLeftData = {
|
|
|
- id: 'botLeftChart',
|
|
|
- title: '室间质评项目不合格率'
|
|
|
+ this.chartBData = {
|
|
|
+ id: 'chartB',
|
|
|
+ title: '实验室间比对率'
|
|
|
}
|
|
|
- this.botMiddData = {
|
|
|
- id: 'botMiddChart',
|
|
|
- title: '室间质评项目覆盖率'
|
|
|
+ this.chartCData = {
|
|
|
+ id: 'chartC',
|
|
|
+ title: '检验项目不合格率'
|
|
|
}
|
|
|
- this.botRightData = {
|
|
|
- id: 'botRightChart',
|
|
|
- title: '实验室间比对率'
|
|
|
+ this.chartDData = {
|
|
|
+ id: 'chartD',
|
|
|
+ title: '检验项目参加率'
|
|
|
}
|
|
|
+
|
|
|
this.yearArr = this.getNumArr(Number(this.yearValues[0]), Number(this.yearValues[1]))
|
|
|
this.yearStr = this.yearArr.join(',')
|
|
|
|
|
|
- this.getList1()
|
|
|
- this.topLeftData.yearArr = this.yearArr
|
|
|
- this.topLeftData.numArr = this.numArr
|
|
|
- this.getList2()
|
|
|
- // this.topRightData.yearArr = this.yearArr
|
|
|
- this.topRightData.numArr = this.result
|
|
|
- this.getList3()
|
|
|
- this.botLeftData.yearArr = this.yearArr
|
|
|
- this.botLeftData.result1 = this.result1
|
|
|
- this.botLeftData.result2 = this.result2
|
|
|
- this.botLeftData.result3 = this.result3
|
|
|
- this.getList4()
|
|
|
- this.botMiddData.yearArr = this.yearArr
|
|
|
- this.botMiddData.list1 = this.list1
|
|
|
- this.botMiddData.list2 = this.list2
|
|
|
- this.botMiddData.list3 = this.list3
|
|
|
-
|
|
|
- this.getList5()
|
|
|
- this.botRightData.yearArr = this.yearArr
|
|
|
- this.botRightData.data1 = this.data1
|
|
|
- this.botRightData.data2 = this.data2
|
|
|
- this.botRightData.data3 = this.data3
|
|
|
+ this.getListA()
|
|
|
+ this.chartAData.yearArr = this.yearArr
|
|
|
+ this.chartAData.numArr = this.result
|
|
|
+
|
|
|
+ this.getListB()
|
|
|
+ this.chartBData.yearArr = this.yearArr
|
|
|
+ this.chartBData.data1 = this.data1
|
|
|
+ this.chartBData.data2 = this.data2
|
|
|
+ this.chartBData.data3 = this.data3
|
|
|
+
|
|
|
+ this.getListC()
|
|
|
+ this.chartCData.yearArr = this.yearArr
|
|
|
+ this.chartCData.result1 = this.result1
|
|
|
+ this.chartCData.result2 = this.result2
|
|
|
+ this.chartCData.result3 = this.result3
|
|
|
+ this.chartCData.result4 = this.result4
|
|
|
+ this.chartCData.result5 = this.result5
|
|
|
+ this.chartCData.result6 = this.result6
|
|
|
+
|
|
|
+ this.getListD()
|
|
|
+ this.chartDData.yearArr = this.yearArr
|
|
|
+ this.chartDData.list1 = this.list1
|
|
|
+ this.chartDData.list2 = this.list2
|
|
|
+ this.chartDData.list3 = this.list3
|
|
|
+ this.chartDData.list4 = this.list4
|
|
|
+ this.chartDData.list5 = this.list5
|
|
|
+ this.chartDData.list6 = this.list6
|
|
|
+ this.chartDData.list7 = this.list7
|
|
|
},
|
|
|
|
|
|
- async getList1 () {
|
|
|
- this.numArr = []
|
|
|
- // const activityStr = this.activityValue ? `= '${this.activityValue}'` : `is not null`
|
|
|
- // const sql = `select left(zhu_biao_shi_jian, 4) as niandu, coalesce(count(*), 0) as count
|
|
|
- // from t_sjzphdjhylxqb
|
|
|
- // where left(zhu_biao_shi_jian, 4) in ${yearStr}
|
|
|
- // group by left(zhu_biao_shi_jian, 4)`
|
|
|
- const key = this.activityValue ? 'interlabQualityBoard3' : 'interlabQualityBoard2'
|
|
|
- const params = this.activityValue ? [this.activityValue, this.yearStr] : [this.yearStr]
|
|
|
- // const sql = `select e.ji_hua_nian_fen_ as niandu,COALESCE(COUNT(*), 0) AS count from (select a.huo_dong_ming_che,a.zu_zhi_dan_wei_,a.xu_hao_,a.shi_yan_shi_jian_,a.bi_dui_lei_xing_,b.ji_hua_nian_fen_ from t_sjzphdjhylxqb a join (select c.*, d.ji_hua_nian_fen_ from t_cjwbzlpjhdjhxqb c join t_cjwbzlpjhdjhb d on c.parent_id_ = d.id_ WHERE d.shi_fou_guo_shen_='已完成' and huo_dong_ming_che ${activityStr}) b on a.huo_dong_ming_che=b.huo_dong_ming_che and a.zu_zhi_dan_wei_ = b.zu_zhi_dan_wei_ and a.xu_hao_ = b.xu_hao_ and a.shi_yan_shi_jian_ = b.shi_yan_shi_jian_) e WHERE find_in_set(ji_hua_nian_fen_, '${this.yearStr}') GROUP BY e.ji_hua_nian_fen_`
|
|
|
- await this.$common.request('query', { key, params }).then((res) => {
|
|
|
- const data = res.variables.data
|
|
|
- for (var item of this.yearArr) {
|
|
|
- const m = data.find((v) => { return v.niandu === item + '' })
|
|
|
-
|
|
|
- if (m) {
|
|
|
- this.numArr.push(m.count)
|
|
|
- } else {
|
|
|
- this.numArr.push(0)
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- async getList2 () {
|
|
|
+ async getListA () {
|
|
|
this.result = []
|
|
|
- // const sql = `select LEFT(bi_dui_lei_xing_, 2) as leixing,LEFT(zhu_biao_shi_jian, 4) as niandu, COALESCE(COUNT(*), 0) as count FROM t_sjzphdjhylxqb where left(zhu_biao_shi_jian, 4) in ${this.yearStr} GROUP BY CONCAT(LEFT(zhu_biao_shi_jian, 4), ' ', LEFT(bi_dui_lei_xing_, 2))`
|
|
|
- // this.$common.request('', sql).then((res) => {
|
|
|
- // const data = res.variables.data
|
|
|
- // // console.log(data)
|
|
|
-
|
|
|
- // this.result.push(['product', '能力验证', '室间质评'])
|
|
|
-
|
|
|
- // for (var item of this.yearArr) {
|
|
|
- // const arr = []
|
|
|
-
|
|
|
- // arr[0] = item
|
|
|
-
|
|
|
- // const m = data.find((v) => { return v.niandu === item + '' && v.leixing === '能力' })
|
|
|
- // const n = data.find((v) => { return v.niandu === item + '' && v.leixing === '室间' })
|
|
|
- // // console.log(m, n)
|
|
|
-
|
|
|
- // if (m) {
|
|
|
- // arr[1] = m.count
|
|
|
- // } else {
|
|
|
- // arr[1] = 0
|
|
|
- // }
|
|
|
- // if (n) {
|
|
|
- // arr[2] = n.count
|
|
|
- // } else {
|
|
|
- // arr[2] = 0
|
|
|
- // }
|
|
|
-
|
|
|
- // this.result.push(arr)
|
|
|
- // }
|
|
|
- // })
|
|
|
+
|
|
|
let data1 = []
|
|
|
let data2 = []
|
|
|
- // const sql1 = `select 年度 as niandu,LEFT(能力验证类型, 2) as leixing,COUNT(*) AS count FROM v_sjzpjgpj WHERE 状态 ='已完成' and find_in_set('年度', '${this.yearStr}') GROUP BY LEFT(能力验证类型, 2)`
|
|
|
- // const sql2 = `select LEFT(bian_zhi_shi_jian, 4) as niandu,'实验室' as leixing, COALESCE(COUNT(*), 0) AS count from t_sysbdjlb bian_zhi_shi_jian where shi_fou_guo_shen_ = '已完成' and find_in_set(LEFT(bian_zhi_shi_jian, 4), '${this.yearStr}')`
|
|
|
+ const sql1 = `select LEFT(b.nian_du_, 4) as niandu, LEFT(a.bi_dui_lei_xing_, 2) as leixing ,COUNT(*) AS count from t_sjzphdjhylxqb a left join t_sjzphdjhylb b on a.parent_id_ = b.id_ WHERE find_in_set(LEFT(b.nian_du_, 4), '${this.yearStr}') GROUP BY LEFT(b.nian_du_, 4), LEFT(a.bi_dui_lei_xing_, 2)`
|
|
|
+ const sql2 = `select LEFT(bian_zhi_shi_jian, 4) as niandu,'实验室' as leixing, COALESCE(COUNT(*), 0) AS count from t_sysbdjlb bian_zhi_shi_jian where shi_fou_guo_shen_ = '已完成' and find_in_set(LEFT(bian_zhi_shi_jian, 4), '${this.yearStr}')`
|
|
|
|
|
|
- await this.$common.request('query', { key: 'interlabQualityBoard4', params: [this.yearStr] }).then((res) => {
|
|
|
+ await this.$common.request('sql', sql1).then((res) => {
|
|
|
data1 = res.variables.data
|
|
|
})
|
|
|
- await this.$common.request('query', { key: 'interlabQualityBoard5', params: [this.yearStr] }).then((res) => {
|
|
|
+ await this.$common.request('sql', sql2).then((res) => {
|
|
|
data2 = res.variables.data
|
|
|
})
|
|
|
+
|
|
|
this.result.push(['product', '能力验证', '室间质评', '实验室', '其它'])
|
|
|
for (var item of this.yearArr) {
|
|
|
const m = data1.find((v) => { return v.niandu === item + '' && v.leixing === '能力' })
|
|
|
@@ -350,79 +274,28 @@ export default {
|
|
|
arr[3] = f ? f.count : 0
|
|
|
arr[4] = g ? g.count : 0
|
|
|
this.result.push(arr)
|
|
|
- console.log(this.result)
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- getList3 () {
|
|
|
- this.result1 = []
|
|
|
- this.result2 = []
|
|
|
- this.result3 = []
|
|
|
- // const sql = `select 年度 as niandu,评价结果 as jieguo, COALESCE(COUNT(*), 0) AS count FROM v_sjzpjgpj WHERE find_in_set('年度', '${this.yearStr}') and 状态 = '已完成' GROUP BY CONCAT(年度, ' ',评价结果)`
|
|
|
- this.$common.request('query', { key: 'interlabQualityBoard6', params: [this.yearStr] }).then((res) => {
|
|
|
- const data = res.variables.data
|
|
|
- for (var item of this.yearArr) {
|
|
|
- const m = data.find((v) => { return v.niandu === item + '' && v.jieguo === '通过' })
|
|
|
- const n = data.find((v) => { return v.niandu === item + '' && v.jieguo === '不满意项目' })
|
|
|
- const f = data.find((v) => { return v.niandu === item + '' && v.jieguo === '不通过' })
|
|
|
- // 总数
|
|
|
- this.result1.push((m ? m.count : 0) + (n ? n.count : 0) + (f ? f.count : 0))
|
|
|
- // 不合格数
|
|
|
- this.result2.push((f ? f.count : 0) + (n ? n.count : 0))
|
|
|
- // 不合格率
|
|
|
- this.result3.push((((m ? m.count : 0) + (n ? n.count : 0) + (f ? f.count : 0)) === 0 ? 0 : ((f ? f.count : 0) + (n ? n.count : 0)) / ((m ? m.count : 0) + (n ? n.count : 0) + (f ? f.count : 0)) * 100).toFixed(2))
|
|
|
- // console.log(this.result1, this.result2, this.result3)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- async getList4 () {
|
|
|
- this.list1 = []
|
|
|
- this.list2 = []
|
|
|
- this.list3 = []
|
|
|
- const yearStr = `('${this.yearArr.join("', '")}')`
|
|
|
- let data1 = []
|
|
|
- let data2 = []
|
|
|
- // const sql1 = `select LEFT(zhu_biao_shi_jian, 4) as niandu, COUNT(*) AS count FROM t_sjzphdjhylxqb WHERE find_in_set(LEFT(zhu_biao_shi_jian, 4), '${this.yearStr}') GROUP BY LEFT(zhu_biao_shi_jian, 4)`
|
|
|
- // const sql2 = `select e.ji_hua_nian_fen_ as niandu,COALESCE(COUNT(*), 0) AS count from (select a.huo_dong_ming_che,a.zu_zhi_dan_wei_,a.xu_hao_,a.shi_yan_shi_jian_,a.bi_dui_lei_xing_,b.ji_hua_nian_fen_ from t_sjzphdjhylxqb a join (select c.*, d.ji_hua_nian_fen_ from t_cjwbzlpjhdjhxqb c join t_cjwbzlpjhdjhb d on c.parent_id_ = d.id_ WHERE d.shi_fou_guo_shen_='已完成') b on a.huo_dong_ming_che=b.huo_dong_ming_che and a.zu_zhi_dan_wei_ = b.zu_zhi_dan_wei_ and a.xu_hao_ = b.xu_hao_ and a.shi_yan_shi_jian_ = b.shi_yan_shi_jian_) e WHERE find_in_set(ji_hua_nian_fen_, '${this.yearStr}') GROUP BY e.ji_hua_nian_fen_`
|
|
|
- await this.$common.request('query', { key: 'interlabQualityBoard7', params: [this.yearStr] }).then((res) => {
|
|
|
- data1 = res.variables.data
|
|
|
- })
|
|
|
- await this.$common.request('query', { key: 'interlabQualityBoard8', params: [this.yearStr] }).then((res) => {
|
|
|
- data2 = res.variables.data
|
|
|
- })
|
|
|
-
|
|
|
- for (var item of this.yearArr) {
|
|
|
- const m = data1.find((v) => { return v.niandu === item + '' })
|
|
|
- const n = data2.find((v) => { return v.niandu === item + '' })
|
|
|
-
|
|
|
- // 一览
|
|
|
- this.list1.push(m ? m.count : 0)
|
|
|
- // 计划
|
|
|
- this.list2.push(n ? n.count : 0)
|
|
|
- // 覆盖率率
|
|
|
- this.list3.push(((m ? m.count : 0) === 0 ? 0 : (n ? n.count : 0) / (m ? m.count : 0) * 100).toFixed(2))
|
|
|
+ // console.log(this.result)
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- async getList5 () {
|
|
|
+ async getListB () {
|
|
|
this.data1 = []
|
|
|
this.data2 = []
|
|
|
this.data3 = []
|
|
|
let data1 = []
|
|
|
let data2 = []
|
|
|
let data3 = []
|
|
|
- // const sql1 = `select LEFT(zhu_biao_shi_jian, 4) as niandu, COUNT(*) AS count FROM t_sjzphdjhylxqb WHERE find_in_set(LEFT(zhu_biao_shi_jian, 4), '${this.yearStr}') GROUP BY LEFT(zhu_biao_shi_jian, 4)`
|
|
|
- // const sql2 = `select e.ji_hua_nian_fen_ as niandu,COALESCE(COUNT(*), 0) AS count from (select a.huo_dong_ming_che,a.zu_zhi_dan_wei_,a.xu_hao_,a.shi_yan_shi_jian_,a.bi_dui_lei_xing_,b.ji_hua_nian_fen_ from t_sjzphdjhylxqb a join (select c.*, d.ji_hua_nian_fen_ from t_cjwbzlpjhdjhxqb c join t_cjwbzlpjhdjhb d on c.parent_id_ = d.id_ WHERE d.shi_fou_guo_shen_='已完成') b on a.huo_dong_ming_che=b.huo_dong_ming_che and a.zu_zhi_dan_wei_ = b.zu_zhi_dan_wei_ and a.xu_hao_ = b.xu_hao_ and a.shi_yan_shi_jian_ = b.shi_yan_shi_jian_) e WHERE find_in_set(ji_hua_nian_fen_, '${this.yearStr}') GROUP BY e.ji_hua_nian_fen_`
|
|
|
- // const sql3 = `select LEFT(bian_zhi_shi_jian, 4) as niandu,'实验室' as leixing, COALESCE(COUNT(*), 0) AS count from t_sysbdjlb bian_zhi_shi_jian where shi_fou_guo_shen_ = '已完成' and find_in_set(LEFT(bian_zhi_shi_jian, 4), '${this.yearStr}')`
|
|
|
+ const sql1 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and shi_yan_shi_ = '✓' GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ const sql2 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and guo_can_jia_ = '✓' or sheng_can_jia_ ='✓' GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ const sql3 = `select LEFT(bian_zhi_shi_jian, 4) as niandu,'实验室' as leixing, COALESCE(COUNT(*), 0) AS count from t_sysbdjlb bian_zhi_shi_jian where shi_fou_guo_shen_ = '已完成' and find_in_set(LEFT(bian_zhi_shi_jian, 4), '${this.yearStr}')`
|
|
|
|
|
|
- await this.$common.request('query', { key: 'interlabQualityBoard7', params: [this.yearStr] }).then((res) => {
|
|
|
+ await this.$common.request('sql', sql1).then((res) => {
|
|
|
data1 = res.variables.data
|
|
|
})
|
|
|
- await this.$common.request('query', { key: 'interlabQualityBoard8', params: [this.yearStr] }).then((res) => {
|
|
|
+ await this.$common.request('sql', sql2).then((res) => {
|
|
|
data2 = res.variables.data
|
|
|
})
|
|
|
- await this.$common.request('query', { key: 'interlabQualityBoard5', params: [this.yearStr] }).then((res) => {
|
|
|
+ await this.$common.request('sql', sql3).then((res) => {
|
|
|
data3 = res.variables.data
|
|
|
})
|
|
|
|
|
|
@@ -438,7 +311,115 @@ export default {
|
|
|
// 比对率
|
|
|
this.data3.push(((m ? m.count : 0) - (n ? n.count : 0) === 0 ? 0 : (f ? f.count : 0) / ((m ? m.count : 0) - (n ? n.count : 0)) * 100).toFixed(2))
|
|
|
}
|
|
|
- // console.log(this.data1, this.data2, this.data3)
|
|
|
+ },
|
|
|
+
|
|
|
+ async getListC () {
|
|
|
+ this.result1 = []
|
|
|
+ this.result2 = []
|
|
|
+ this.result3 = []
|
|
|
+ this.result4 = []
|
|
|
+ this.result5 = []
|
|
|
+ this.result6 = []
|
|
|
+ let data1 = []
|
|
|
+ let data2 = []
|
|
|
+
|
|
|
+ const sql1 = `select suo_shu_nian_fen_ as niandu, can_jia_dan_wei_ as danwei, COUNT(*) AS count from v_zkjgtjb where find_in_set(suo_shu_nian_fen_, '${this.yearStr}') GROUP BY suo_shu_nian_fen_, can_jia_dan_wei_`
|
|
|
+ const sql2 = `select suo_shu_nian_fen_ as niandu, can_jia_dan_wei_ as danwei, COALESCE(NULLIF(ke_shi_xiu_zheng_, ''), nian_du_he_ge_) AS jieguo, COUNT(*) AS count from v_zkjgtjb where find_in_set(suo_shu_nian_fen_, '${this.yearStr}') GROUP BY suo_shu_nian_fen_, can_jia_dan_wei_, COALESCE(NULLIF(ke_shi_xiu_zheng_, ''), nian_du_he_ge_)`
|
|
|
+ await this.$common.request('sql', sql1).then((res) => {
|
|
|
+ data1 = res.variables.data
|
|
|
+ })
|
|
|
+ await this.$common.request('sql', sql2).then((res) => {
|
|
|
+ data2 = res.variables.data
|
|
|
+ })
|
|
|
+ for (var item of this.yearArr) {
|
|
|
+ const gc = data1.find((v) => { return v.niandu === item + '' && v.danwei === '国家' })
|
|
|
+ const sc = data1.find((v) => { return v.niandu === item + '' && v.danwei === '省级' })
|
|
|
+
|
|
|
+ const gb = data2.find((v) => { return v.niandu === item + '' && v.danwei === '国家' && v.jieguo === '不合格' })
|
|
|
+ const sb = data2.find((v) => { return v.niandu === item + '' && v.danwei === '省级' && v.jieguo === '不合格' })
|
|
|
+ // console.log(gc, sc, gb, sb)
|
|
|
+ // 项目总数
|
|
|
+ this.result1.push((gc ? gc.count : 0) + (sc ? sc.count : 0))
|
|
|
+ // 国不合格数
|
|
|
+ this.result2.push(gb ? gb.count : 0)
|
|
|
+ // 省不合格数
|
|
|
+ this.result3.push(sb ? sb.count : 0)
|
|
|
+ // 国不合格率
|
|
|
+ this.result4.push((gc ? gc.count : 0) === 0 ? 0 : ((gb ? gb.count : 0) / (gc ? gc.count : 0) * 100).toFixed(2))
|
|
|
+ // 省不合格率
|
|
|
+ this.result5.push((sc ? sc.count : 0) === 0 ? 0 : ((sb ? sb.count : 0) / (sc ? sc.count : 0) * 100).toFixed(2) || 0)
|
|
|
+ // 总不合格率
|
|
|
+ this.result6.push(((gc ? gc.count : 0) + (sc ? sc.count : 0)) === 0 ? 0 : (((gb ? gb.count : 0) + (sb ? sb.count : 0)) / ((gc ? gc.count : 0) + (sc ? sc.count : 0)) * 100).toFixed(2) || 0)
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ async getListD () {
|
|
|
+ this.list1 = []
|
|
|
+ this.list2 = []
|
|
|
+ this.list3 = []
|
|
|
+ this.list4 = []
|
|
|
+ this.list5 = []
|
|
|
+ this.list6 = []
|
|
|
+ this.list7 = []
|
|
|
+
|
|
|
+ let data1 = []
|
|
|
+ let data2 = []
|
|
|
+ let data3 = []
|
|
|
+ let data4 = []
|
|
|
+ let data5 = []
|
|
|
+ let data6 = []
|
|
|
+
|
|
|
+ const sql1 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and guo_kai_zhan_ = '✓' GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ const sql2 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and guo_can_jia_ = '✓' GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ const sql3 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and sheng_kai_zhan_ = '✓' GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ const sql4 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and sheng_can_jia_ = '✓' GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ const sql5 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and (guo_kai_zhan_ = '✓' or sheng_kai_zhan_ = '✓') GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ const sql6 = `select LEFT(suo_shu_nian_fen_,4) as niandu, COUNT(*) AS count from t_zkxxtjbzb WHERE find_in_set(LEFT(suo_shu_nian_fen_,4), '${this.yearStr}') and (guo_can_jia_ = '✓' or sheng_can_jia_ = '✓') GROUP BY LEFT(suo_shu_nian_fen_,4)`
|
|
|
+ await this.$common.request('sql', sql1).then((res) => {
|
|
|
+ data1 = res.variables.data
|
|
|
+ })
|
|
|
+ await this.$common.request('sql', sql2).then((res) => {
|
|
|
+ data2 = res.variables.data
|
|
|
+ })
|
|
|
+ await this.$common.request('sql', sql3).then((res) => {
|
|
|
+ data3 = res.variables.data
|
|
|
+ })
|
|
|
+ await this.$common.request('sql', sql4).then((res) => {
|
|
|
+ data4 = res.variables.data
|
|
|
+ })
|
|
|
+ await this.$common.request('sql', sql5).then((res) => {
|
|
|
+ data5 = res.variables.data
|
|
|
+ })
|
|
|
+ await this.$common.request('sql', sql6).then((res) => {
|
|
|
+ data6 = res.variables.data
|
|
|
+ })
|
|
|
+ for (var item of this.yearArr) {
|
|
|
+ const gk = data1.find((v) => { return v.niandu === item + '' })
|
|
|
+ const gc = data2.find((v) => { return v.niandu === item + '' })
|
|
|
+ const sk = data3.find((v) => { return v.niandu === item + '' })
|
|
|
+ const sc = data4.find((v) => { return v.niandu === item + '' })
|
|
|
+ const zk = data5.find((v) => { return v.niandu === item + '' })
|
|
|
+ const zc = data6.find((v) => { return v.niandu === item + '' })
|
|
|
+
|
|
|
+ const gclv = (gk ? gk.count : 0) === 0 ? 0 : (((gc ? gc.count : 0) / (gk ? gk.count : 0)) * 100).toFixed(2)
|
|
|
+ const sclv = (sk ? sk.count : 0) === 0 ? 0 : (((sc ? gc.count : 0) / (sk ? sk.count : 0)) * 100).toFixed(2)
|
|
|
+ const zclv = (zk ? zk.count : 0) === 0 ? 0 : (((zc ? zc.count : 0) / (zk ? zk.count : 0)) * 100).toFixed(2)
|
|
|
+
|
|
|
+ // 国开展
|
|
|
+ this.list1.push(gk ? gk.count : 0)
|
|
|
+ // 国参加
|
|
|
+ this.list2.push(gc ? gc.count : 0)
|
|
|
+ // 省开展
|
|
|
+ this.list3.push(sk ? sk.count : 0)
|
|
|
+ // 省参加
|
|
|
+ this.list4.push(sc ? sc.count : 0)
|
|
|
+ // 国参加率
|
|
|
+ this.list5.push(gclv)
|
|
|
+ // 省参加率
|
|
|
+ this.list6.push(sclv)
|
|
|
+ // 总参加率
|
|
|
+ this.list7.push(zclv)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -487,7 +468,7 @@ export default {
|
|
|
display: flex;
|
|
|
overflow: hidden;
|
|
|
box-sizing: border-box;
|
|
|
- height: 40%;
|
|
|
+ height: 45%;
|
|
|
width: 100%;
|
|
|
|
|
|
.topleft{
|
|
|
@@ -508,24 +489,19 @@ export default {
|
|
|
display: flex;
|
|
|
overflow: hidden;
|
|
|
box-sizing: border-box;
|
|
|
- height: 52%;
|
|
|
+ height: 45%;
|
|
|
width: 100%;
|
|
|
+
|
|
|
.botleft{
|
|
|
height: 100%;
|
|
|
- width: 33%;
|
|
|
+ width: 50%;
|
|
|
overflow: hidden;
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
}
|
|
|
- .botmidd{
|
|
|
- height: 100%;
|
|
|
- width: 33%;
|
|
|
- overflow: hidden;
|
|
|
- box-sizing: border-box;
|
|
|
- }
|
|
|
.botright{
|
|
|
height: 100%;
|
|
|
- width: 33%;
|
|
|
+ width: 50%;
|
|
|
overflow: hidden;
|
|
|
box-sizing: border-box;
|
|
|
}
|