From f4062e41dfbe26ca7664a963357cc0b9bea37b44 Mon Sep 17 00:00:00 2001
From: zmc <zmc_li@foxmail.com>
Date: 星期五, 01 十二月 2023 16:10:44 +0800
Subject: [PATCH] 风险模型页面的折线图写成组件
---
src/views/risk_assessment/riskModel/components/CompDailyStatistic.vue | 125 ++++++++++++++++++++
src/utils/time.js | 11 +
src/views/risk_assessment/components/CompDataRiskModel.vue | 188 +++++++++++-------------------
3 files changed, 207 insertions(+), 117 deletions(-)
diff --git a/src/utils/time.js b/src/utils/time.js
index c416595..7a42a2b 100644
--- a/src/utils/time.js
+++ b/src/utils/time.js
@@ -142,5 +142,16 @@
result.push(temp)
}
return result
+ },
+
+ /**
+ * 鏍规嵁瀵硅薄鏁扮粍涓璴st瀛楁鎸夊崌搴忔帓鍒�
+ * @param锛�
+ * @returns锛�
+ */
+ compareByScore(a, b) {
+ const dateA = new Date(a.lst)
+ const dateB = new Date(b.lst)
+ return dateA - dateB
}
}
diff --git a/src/views/risk_assessment/components/CompDataRiskModel.vue b/src/views/risk_assessment/components/CompDataRiskModel.vue
index 2141148..5a8cdaf 100644
--- a/src/views/risk_assessment/components/CompDataRiskModel.vue
+++ b/src/views/risk_assessment/components/CompDataRiskModel.vue
@@ -6,7 +6,7 @@
import DustRadarChart from '@/views/risk_assessment/components/DustRadarChart.vue'
import FYLineChart from '@/components/chart/FYLineChart.vue'
-
+import time from '@/utils/time.js'
import index from '@/utils/risk_estimate_common_function/index.js'
import ButtonClick from '@/sfc/ButtonClick.vue'
import dayjs from 'dayjs'
@@ -15,6 +15,7 @@
import riskValue from '@/utils/risk_estimate_common_function/riskValue.js'
import lineChart from '@/utils/chartFunction/lineChart.js'
import siteInfo from '@/api/site/siteInfo.js'
+import CompDailyStatistic from '@/views/risk_assessment/riskModel/components/CompDailyStatistic.vue'
export default {
props: {
// 鐐逛綅鍚嶅瓧
@@ -39,7 +40,8 @@
AreaAndmonitorType,
DustRadarChart,
ButtonClick,
- MonthSelect
+ MonthSelect,
+ CompDailyStatistic
},
data() {
return {
@@ -127,27 +129,26 @@
// }
// },
siteName() {
- if(this.siteName!= ''){
- // 鏇存柊绔欑偣鍚嶅瓧鍜屾椂闂�
- this.form.name = this.siteName
- this.screenLoading = true
- siteInfo.queryMnCode(this.siteName).then((response) => {
- this.form.number = response.data.data[0].mnCode
- this.month = this.time
- // 鍚屾椂鏇存柊鏈堣捣濮嬫椂闂�
- this.form.beginTime = dayjs(this.month).startOf().format('YYYY-MM-DD HH:mm:ss')
- this.form.endTime = dayjs(this.month).endOf('month').format('YYYY-MM-DD HH:mm:ss')
+ if (this.siteName != '') {
+ // 鏇存柊绔欑偣鍚嶅瓧鍜屾椂闂�
+ this.form.name = this.siteName
+ this.screenLoading = true
+ siteInfo.queryMnCode(this.siteName).then((response) => {
+ this.form.number = response.data.data[0].mnCode
+ this.month = this.time
+ // 鍚屾椂鏇存柊鏈堣捣濮嬫椂闂�
+ this.form.beginTime = dayjs(this.month).startOf().format('YYYY-MM-DD HH:mm:ss')
+ this.form.endTime = dayjs(this.month).endOf('month').format('YYYY-MM-DD HH:mm:ss')
- // 鏇存柊璇ョ珯鐐圭殑鎵�灞炲満鏅拰杩愮淮鍟�
- this.getSiteInfo(this.form.number)
- // 鏇存柊缁熻鏁版嵁
- this.getAnalysisData()
- // 璁$畻椋庨櫓鍊�
- this.calRiskValue()
- this.screenLoading = false
- })
+ // 鏇存柊璇ョ珯鐐圭殑鎵�灞炲満鏅拰杩愮淮鍟�
+ this.getSiteInfo(this.form.number)
+ // 鏇存柊缁熻鏁版嵁
+ this.getAnalysisData()
+ // 璁$畻椋庨櫓鍊�
+ this.calRiskValue()
+ this.screenLoading = false
+ })
}
-
}
},
@@ -157,12 +158,12 @@
return riskApi.getRiskAdvice(this.weight)
}
},
-mounted(){
- if(this.showAll){
- // 鍔犺浇椋庨櫓鍊兼渶楂樼殑绔欑偣鏁版嵁
- this.ShowDefaultData()
+ mounted() {
+ if (this.showAll) {
+ // 鍔犺浇椋庨櫓鍊兼渶楂樼殑绔欑偣鏁版嵁
+ this.ShowDefaultData()
}
-},
+ },
methods: {
// 鏌ヨ绔欑偣缁熻淇℃伅
async querySiteStaticsInfo(row) {
@@ -275,6 +276,7 @@
this.isNoData = true
return
}
+ this.chartData.sort(time.compareByScore)
// 鍒嗘瀽鏁版嵁涓殑鏈�鏃╂椂闂�
let begin = this.chartData[0].lst
// 鍒嗘瀽鏁版嵁涓殑鏈�鏅氭椂闂�
@@ -282,12 +284,6 @@
// 绉婚櫎绌烘暟鎹姸鎬�
this.isNoData = false
-
- // 鏃犳暟鎹殑鏃堕棿娈�
- let noDataTimeInteval = lineChart.backNoDataInteval(begin, end)
- // 鏃犳暟鎹厤缃椂闂存
- this.areaColor = lineChart.getMarkArea(noDataTimeInteval)
- this.setChart()
// 鎶樼嚎鍥炬暟鎹�
let temp = index.calBillData(this.chartData, begin, end)
@@ -317,35 +313,6 @@
this.bill.exceedingNearCount = obj['exceedingNearCount']
this.bill.exceedingCriticalDegree = obj['exceedingCriticalDegree']
})
- },
-
- // 閫夋嫨鍏朵粬鍊肩被鍨嬫椂
- setChart() {
- if (this.chartData.length) {
- // 鏋勫缓鎶樼嚎鍥緓,y鏁版嵁
- let obj = lineChart.getLineChartXYData(
- this.chartData,
- this.form.beginTime,
- this.form.endTime
- )
-
- this.chartData1 = {
- x: obj.xData,
- y: obj.yAvg
- }
- this.chartData2 = {
- x: obj.xData,
- y: obj.yOnline
- }
- this.chartData3 = {
- x: obj.xData,
- y: obj.yValid
- }
- this.chartData4 = {
- x: obj.xData,
- y: obj.yExceed
- }
- }
},
// 寰楀埌鍓�10椋庨櫓鎺掑悕娓呭崟
@@ -417,7 +384,6 @@
<el-form-item v-show="showAll">
<MonthSelect @submit-value="giveMonth"></MonthSelect>
</el-form-item>
-
<el-form-item v-show="showAll">
<ButtonClick
@@ -440,12 +406,18 @@
<el-tag class="mx-1">鍦烘櫙</el-tag>{{ siteInfo.typename }}
<el-tag class="mx-1">杩愮淮鍟�</el-tag>{{ siteInfo.dutyCompany }}
- <el-button type="primary" size="default" class="exception-button" v-show="showAll" @click="openDetail">
+ <el-button
+ type="primary"
+ size="default"
+ class="exception-button"
+ v-show="showAll"
+ @click="openDetail"
+ >
鏁版嵁寮傚父璇︽儏
</el-button>
</el-card>
- <el-row :gutter="10" >
+ <el-row :gutter="10">
<el-col :span="5" v-show="showAll">
<el-card shadow="never" class="table-class">
<el-table
@@ -494,7 +466,7 @@
</el-card>
</el-col>
- <el-col :span="showAll ?11:14" >
+ <el-col :span="showAll ? 11 : 14">
<el-card shadow="never" class="table-class">
<DustRadarChart
:name="[
@@ -509,28 +481,31 @@
</el-card>
</el-col>
- <el-col :span="showAll ?4: 5" >
+ <el-col :span="showAll ? 4 : 5">
<el-card shadow="never" class="card-height risk-card">
<template #header>
+ <span class="title-16"> 椋庨櫓鍊�(0~1)锛� </span>
<span
- class="title-16"
+ :class="{
+ 'weightColor-low': weight < 0.15,
+ 'weightColor-medium': weight >= 0.15 && weight <= 0.6,
+ 'weightColor-heigh': weight > 0.6
+ }"
>
- 椋庨櫓鍊�(0~1)锛�
- </span>
- <span :class="{
- 'weightColor-low': weight < 0.15,
- 'weightColor-medium': weight >= 0.15 && weight <= 0.6,
- 'weightColor-heigh': weight > 0.6
- }"> {{ weight }}</span>
+ {{ weight }}</span
+ >
</template>
<div class="risk-text-container">
<div class="risk-grade">
<h1 class="sub-title">椋庨櫓绛夌骇锛�</h1>
- <span :class="{
- 'weightColor-low': weight < 0.15,
- 'weightColor-medium': weight >= 0.15 && weight <= 0.6,
- 'weightColor-heigh': weight > 0.6
- }" >{{ riskGradeAndAdvice.riskGrade }} </span>
+ <span
+ :class="{
+ 'weightColor-low': weight < 0.15,
+ 'weightColor-medium': weight >= 0.15 && weight <= 0.6,
+ 'weightColor-heigh': weight > 0.6
+ }"
+ >{{ riskGradeAndAdvice.riskGrade }}
+ </span>
</div>
<div class="risk-advice">
@@ -562,7 +537,7 @@
</el-card>
</el-col>
- <el-col :span="showAll ?4: 5" >
+ <el-col :span="showAll ? 4 : 5">
<el-card shadow="never" class="card-height">
<template #header>
<span class="title-16">椋庨櫓璇︽儏</span>
@@ -571,30 +546,35 @@
<el-form>
<el-form-item label="鏈�澶у�硷細"> {{ bill.max }} mg/m鲁 </el-form-item>
<el-form-item label="鏈�灏忓�硷細"> {{ bill.min }} mg/m鲁 </el-form-item>
- <el-form-item label="鏁版嵁鏈夋晥鐜囷細"> {{ bill.online*100 }}% </el-form-item>
- <el-form-item label="鏁版嵁鍦ㄧ嚎鐜囷細"> {{ bill.valid*100 }}% </el-form-item>
- <el-form-item label="鏁版嵁瓒呮爣鐜囷細"> {{ bill.exceeding*100 }}% </el-form-item>
+ <el-form-item label="鏁版嵁鏈夋晥鐜囷細"> {{ bill.online * 100 }}% </el-form-item>
+ <el-form-item label="鏁版嵁鍦ㄧ嚎鐜囷細"> {{ bill.valid * 100 }}% </el-form-item>
+ <el-form-item label="鏁版嵁瓒呮爣鐜囷細"> {{ bill.exceeding * 100 }}% </el-form-item>
<el-form-item label="寮傚父绫诲瀷鑱氶泦搴︼細">
{{ exceptionRisk.exceptionTypeAggregation * 100 }}%
</el-form-item>
- <el-tag :size="small" v-show="bill.exception">鍏卞嚭鐜颁簡{{ bill.exception }}绫诲紓甯�</el-tag>
-
+ <el-tag size="small" v-show="bill.exception"
+ >鍏卞嚭鐜颁簡{{ bill.exception }}绫诲紓甯�</el-tag
+ >
+
<el-form-item label="鍏稿瀷寮傚父澶嶇幇鐜囷細">
{{ exceptionRisk.typicalExceptionRepetitionRate * 100 }}%
</el-form-item>
-
+
<div>
- <el-tag :size="small" v-show="bill.mutationCount">閲忕骇绐佸彉寮傚父:{{ bill.mutationCount }}鏉�</el-tag>
+ <el-tag size="small" v-show="bill.mutationCount"
+ >閲忕骇绐佸彉寮傚父:{{ bill.mutationCount }}鏉�</el-tag
+ >
</div>
<div>
- <el-tag :size="small" v-show="bill.exceedingNearCount">涓磋繎瓒呮爣寮傚父:{{ bill.exceedingNearCount }}鏉�</el-tag>
+ <el-tag size="small" v-show="bill.exceedingNearCount"
+ >涓磋繎瓒呮爣寮傚父:{{ bill.exceedingNearCount }}鏉�</el-tag
+ >
</div>
<div>
- <el-tag :size="small"
- v-show="bill.exceedingCriticalDegree"
+ <el-tag size="small" v-show="bill.exceedingCriticalDegree"
>鍗曟棩瓒呮爣娆℃暟涓寸晫寮傚父:{{ bill.exceedingCriticalDegree }}鏉�</el-tag
>
</div>
@@ -603,33 +583,7 @@
</el-col>
</el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-card shadow="never" class="card-value">
- <FYLineChart
- title="鏃ュ潎鍊�"
- :chartData="chartData1"
- yName="mg/m鲁"
- seriesName="鏃ュ潎鍊�"
- :areaColor="areaColor"
- >
- </FYLineChart>
- </el-card>
- </el-col>
-
- <el-col :span="12">
- <el-card shadow="never" class="card-value">
- <FYLineChart
- title="鏃ユ湁鏁堢巼"
- :chartData="chartData3"
- yName="%"
- seriesName="鏃ユ湁鏁堢巼"
- :areaColor="areaColor"
- >
- </FYLineChart>
- </el-card>
- </el-col>
- </el-row>
+ <CompDailyStatistic :fetch-params="form" />
</div>
</div>
<el-empty description="鏆傛棤鏁版嵁" v-show="isNoData" :image-size="200" />
diff --git a/src/views/risk_assessment/riskModel/components/CompDailyStatistic.vue b/src/views/risk_assessment/riskModel/components/CompDailyStatistic.vue
new file mode 100644
index 0000000..fc5d996
--- /dev/null
+++ b/src/views/risk_assessment/riskModel/components/CompDailyStatistic.vue
@@ -0,0 +1,125 @@
+<script>
+import exceptionApi from '@/api/exceptionApi.js'
+import lineChart from '@/utils/chartFunction/lineChart.js'
+import index from '@/utils/risk_estimate_common_function/index.js'
+import time from '@/utils/time.js'
+import FYLineChart from '@/components/chart/FYLineChart.vue'
+export default {
+ props: {
+ fetchParams: {
+ type: Object,
+ default: {
+ name: null,
+ number: null,
+ beginTime: null,
+ endTime: null
+ }
+ }
+ },
+ components: {
+ FYLineChart
+ },
+ data() {
+ return {
+ chart: {
+ // 鏃ュ潎鍊� 鎶樼嚎鍥剧粨鏋�
+ chartDataAvg: {},
+ // 鏃ユ湁鏁堢巼 鎶樼嚎鍥剧粨鏋�
+ chartDataValid: {},
+ // 鏃犳暟鎹厤缃椂闂存
+ areaColor: []
+ }
+ }
+ },
+ watch: {
+ fetchParams: {
+ handler() {
+ if(this.fetchParams.name != '' && this.fetchParams.name != null){
+ this.fetchDayAnalysisData()
+ }
+ },
+ deep: true
+ }
+ },
+ mounted() {
+ },
+ methods: {
+ // 鏍规嵁鐩墠绔欑偣锛屾湀浠斤紝鏌ユ姌绾垮浘鏃ョ粺璁℃暟鎹�
+ fetchDayAnalysisData() {
+ exceptionApi
+ .analysisdata(
+ this.fetchParams.name,
+ this.fetchParams.beginTime,
+ this.fetchParams.endTime,
+ 'day'
+ )
+ .then((response) => {
+ const chartData = response.data.data
+ console.log('鏁版嵁涓�',chartData);
+ if (response.data.data.length == 0) {
+ return
+ }
+ chartData.sort(time.compareByScore)
+ // 鍒嗘瀽鏁版嵁涓殑鏈�鏃╂椂闂�
+ let begin = chartData[0].lst
+ // 鍒嗘瀽鏁版嵁涓殑鏈�鏅氭椂闂�
+ let end = chartData[chartData.length - 1].lst
+
+ // 鏃犳暟鎹殑鏃堕棿娈�
+ let noDataTimeInteval = lineChart.backNoDataInteval(begin, end)
+ // 鏃犳暟鎹厤缃椂闂存
+ this.chart.areaColor = lineChart.getMarkArea(noDataTimeInteval)
+ this.setChart(chartData, this.fetchParams.beginTime, this.fetchParams.endTime)
+
+ })
+ },
+
+ // 閫夋嫨鍏朵粬鍊肩被鍨嬫椂
+ setChart(cData, bt, et) {
+ if (cData.length!=0) {
+ // 鏋勫缓鎶樼嚎鍥緓,y鏁版嵁
+ let obj = lineChart.getLineChartXYData(cData, bt, et)
+ console.log('璁剧疆锛�',obj);
+ this.chart.chartDataAvg = {
+ x: obj.xData,
+ y: obj.yAvg
+ }
+ this.chart.chartDataValid = {
+ x: obj.xData,
+ y: obj.yValid
+ }
+ }
+ },
+ }
+}
+</script>
+
+<template>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-card shadow="never">
+ <FYLineChart
+ title="鏃ュ潎鍊�"
+ :chartData="chart.chartDataAvg"
+ yName="mg/m鲁"
+ seriesName="鏃ュ潎鍊�"
+ :areaColor="chart.areaColor"
+ />
+ </el-card>
+ </el-col>
+
+ <el-col :span="12">
+ <el-card shadow="never">
+ <FYLineChart
+ title="鏃ユ湁鏁堢巼"
+ :chartData="chart.chartDataValid"
+ yName="%"
+ seriesName="鏃ユ湁鏁堢巼"
+ :areaColor="chart.areaColor"
+ />
+ </el-card>
+ </el-col>
+ </el-row>
+</template>
+
+<style scoped></style>
--
Gitblit v1.9.3