copy from src/views/line_graph/DataRiskModel.vue
copy to src/views/risk_assessment/DataRiskModel.vue
Îļþ´Ó src/views/line_graph/DataRiskModel.vue ¸´ÖÆ |
| | |
| | | import ButtonClick from '@/sfc/ButtonClick.vue' |
| | | import dayjs from 'dayjs' |
| | | import MonthSelect from '@/sfc/MonthSelect.vue' |
| | | import riskApi from '@/api/risk/riskApi.js' |
| | | import riskValue from '@/utils/risk_estimate_common_function/riskValue.js' |
| | | import lineChart from '@/utils/chartFunction/lineChart.js' |
| | | export default { |
| | | components: { |
| | | LineChart, |
| | |
| | | // ç«ç¹åç§° |
| | | name: '', |
| | | // 设å¤ç¼å· |
| | | number: '', |
| | | number: '3234', |
| | | // å¼å§æ¶é´ |
| | | beginTime: '', |
| | | // ç»ææ¶é´ |
| | | endTime: '' |
| | | }, |
| | | month: '', |
| | | // ä¼ éç»æä»½ç»ä»¶çå¼ |
| | | sfc_month: '', |
| | | |
| | | // æçº¿å¾é
置项 |
| | | option: {}, |
| | | // æ°æ®æ¸
å |
| | |
| | | // å¼å¸¸ç±»åæ®èé度 |
| | | exceptionTypeAggregation: 0 |
| | | }, |
| | | status: { |
| | | isHasData: false |
| | | }, |
| | | |
| | | // æ¥è¯¢æé®å è½½ææ |
| | | queryButton: false, |
| | | |
| | | // é£é©å¼æåååçç«ç¹ |
| | | top_10_sites_with_risk_values: [{ name: '', riskValue: 0.2 }], |
| | | // é£é©å¼ |
| | | weight: '' |
| | | weight: '', |
| | | // æ æ°æ®é
ç½®æ¶é´æ®µ |
| | | areaColor: [] |
| | | } |
| | | }, |
| | | |
| | | watch: { |
| | | sName() { |
| | | // å½å«ç页é¢è°ç¨æ¶ |
| | | if (this.sName != '' || this.month_1 != '') { |
| | | // æ´æ°ç«ç¹åååæ¶é´ |
| | | this.form.name = this.sName |
| | | this.month = this.month_1 |
| | | this.parentDataFlag = true |
| | | // æ´æ°ææ¸
å |
| | | this.getRiskRank() |
| | | // æ´æ°ç»è®¡æ°æ® |
| | | this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | } |
| | | } |
| | | }, |
| | | |
| | | mounted() { |
| | | // // å è½½é£é©å¼æé«çç«ç¹æ°æ® |
| | | this.ShowDefaultData() |
| | | }, |
| | | computed: { |
| | | // é£é©ç级 |
| | | riskGradeAndAdvice() { |
| | | return riskApi.getRiskAdvice(this.weight) |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | async updateOriginPage() { |
| | | this.screenLoading = true |
| | | // æ´æ°æåæ¸
åï¼å¹¶å¾å°é£é©å¼æé«ç«ç¹ |
| | | this.form.name = await this.getRiskRank() |
| | | let arr = await this.getRiskRank() |
| | | this.form.name = arr[0] |
| | | this.form.number = arr[1] |
| | | this.screenLoading = false |
| | | |
| | | // æ´æ°æ¥ç»è®¡æ°æ® |
| | | this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | |
| | | |
| | | // 计ç®é£é©å¼ |
| | | calRiskValue() { |
| | | exceptionApi.analysisdataByType(this.month, 'month').then((response) => { |
| | | const chartData = response.data.data |
| | | |
| | | if (response.data.data.length == 0) { |
| | | return |
| | | } |
| | | // ä»å¯¹è±¡æ°ç»æ¾å°è¯¥ç«ç¹æå¨çå
ç´ |
| | | let siteItem = this.findObjectByPropertyValue(chartData, 'name', this.form.name) |
| | | if (Object.keys(siteItem).length === 0) { |
| | | return |
| | | } |
| | | let arr = [] |
| | | arr.push(siteItem) |
| | | exceptionApi |
| | | .exceptiondata1({ |
| | | siteName: this.form.name, |
| | | beginTime: this.form.beginTime, |
| | | endTime: this.form.endTime |
| | | }) |
| | | .then((res) => { |
| | | let table = index.merge(arr, res.data.data, this.form.beginTime, this.form.endTime) |
| | | this.weight = table[0].riskValue |
| | | }) |
| | | riskApi.queryRiskValue(this.form.number, this.month, 'month').then((response) => { |
| | | this.weight = riskValue.calRiskValue(response.data.data[0]).toFixed(2) |
| | | }) |
| | | }, |
| | | |
| | |
| | | this.isNoData = true |
| | | return |
| | | } |
| | | this.begin = this.chartData[0].lst |
| | | this.end = this.chartData[this.chartData.length - 1].lst |
| | | // åææ°æ®ä¸çææ©æ¶é´ |
| | | let begin = this.chartData[0].lst |
| | | // åææ°æ®ä¸çæææ¶é´ |
| | | let end = this.chartData[this.chartData.length - 1].lst |
| | | |
| | | // ç§»é¤ç©ºæ°æ®ç¶æ |
| | | this.isNoData = false |
| | | |
| | | // æ æ°æ®çæ¶é´æ®µ |
| | | let noDataTimeInteval = lineChart.backNoDataInteval(begin, end) |
| | | // æ æ°æ®é
ç½®æ¶é´æ®µ |
| | | this.areaColor = lineChart.getMarkArea(noDataTimeInteval) |
| | | console.log('åºå', this.areaColor) |
| | | this.setChart() |
| | | // æçº¿å¾æ°æ® |
| | | let temp = index.calBillData(this.chartData, this.begin, this.end) |
| | | let temp = index.calBillData(this.chartData, begin, end) |
| | | this.bill.min = temp['min'] |
| | | this.bill.max = temp['max'] |
| | | |
| | |
| | | // éæ©å
¶ä»å¼ç±»åæ¶ |
| | | setChart() { |
| | | if (this.chartData.length) { |
| | | // xè½´æ¥ææ¶é´ |
| | | let dateList = [] |
| | | //é¢ç²ç©å¹³åæµåº¦ |
| | | let dayAvg = [] |
| | | let dataOnline = [] |
| | | let dataValid = [] |
| | | let dataExceed = [] |
| | | this.chartData.forEach((item) => { |
| | | //xè½´æ¥æ |
| | | dateList.push(item.lst) |
| | | // å岿²¹çæµåº¦ |
| | | dayAvg.push(item.dayAvg) |
| | | dataOnline.push(item.dayOnline.slice(0, -1)) |
| | | dataValid.push(item.dayValid.slice(0, -1)) |
| | | dataExceed.push(item.dayExceeding.slice(0, -1)) |
| | | }) |
| | | // æå»ºæçº¿å¾x,yæ°æ® |
| | | let obj = lineChart.getLineChartXYData( |
| | | this.chartData, |
| | | this.form.beginTime, |
| | | this.form.endTime |
| | | ) |
| | | |
| | | this.chartData1 = { |
| | | x: dateList, |
| | | y: dayAvg |
| | | x: obj.xData, |
| | | y: obj.yAvg |
| | | } |
| | | this.chartData2 = { |
| | | x: dateList, |
| | | y: dataOnline |
| | | x: obj.xData, |
| | | y: obj.yOnline |
| | | } |
| | | this.chartData3 = { |
| | | x: dateList, |
| | | y: dataValid |
| | | x: obj.xData, |
| | | y: obj.yValid |
| | | } |
| | | this.chartData4 = { |
| | | x: dateList, |
| | | y: dataExceed |
| | | x: obj.xData, |
| | | y: obj.yExceed |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // å¾å°å10é£é©æåæ¸
å |
| | | async getRiskRank() { |
| | | let staticsData = await exceptionApi.analysisdataByType(this.month, 'month') |
| | | let response = await riskApi.queryRiskValue('', this.month, 'month') |
| | | |
| | | let exceptionData = await exceptionApi.exceptiondata1({ |
| | | siteName: '', |
| | | beginTime: this.form.beginTime, |
| | | endTime: this.form.endTime |
| | | }) |
| | | let tableData = riskValue.backComprehensiveRiskTableData(response.data.data) |
| | | |
| | | const riskValueSites = index.merge( |
| | | staticsData.data.data, |
| | | exceptionData.data.data, |
| | | this.form.beginTime, |
| | | this.form.endTime |
| | | ) |
| | | this.top_10_sites_with_risk_values = this.getTopRiskData(riskValueSites, 10) |
| | | this.top_10_sites_with_risk_values = this.getTopRiskData(tableData, 10) |
| | | if (this.top_10_sites_with_risk_values.length != 0) { |
| | | // è¡¨æ ¼æé£é©å¼ååæå |
| | | this.$nextTick(() => { |
| | | this.$refs.table.sort('riskValue', 'descending') |
| | | }) |
| | | // Promise |
| | | return this.top_10_sites_with_risk_values[0].siteName |
| | | // ä¿åé£é©å¼æé«çç«ç¹åç§°å设å¤ç¼å· |
| | | let temp = [] |
| | | temp.push( |
| | | this.top_10_sites_with_risk_values[0].siteName, |
| | | this.top_10_sites_with_risk_values[0].mnCode |
| | | ) |
| | | return temp |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * éåºæåï¼è¿åéåºånumçå
ç´ |
| | | * @paramï¼ å¯¹è±¡æ°ç»ï¼è¿åçæ°é |
| | |
| | | :site-name="form.name" |
| | | isNeedDefaultSite="0" |
| | | @submit-value="(n) => (form.name = n)" |
| | | @submit-mncode="(n) => (form.number = n)" |
| | | ></InputSearch> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <MonthSelect :month="this.month_1" @submit-value="giveMonth"></MonthSelect> |
| | | <MonthSelect @submit-value="giveMonth"></MonthSelect> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | |
| | | <div v-loading="screenLoading" class="wait-name"> |
| | | <div class="chart-container" v-show="!isNoData && !screenLoading"> |
| | | <div class="time-text"> |
| | | <span>æ°æ®ç»è®¡æ¶æ®µï¼{{ begin }} ~ {{ end }}</span> |
| | | <span>æ°æ®ç»è®¡æ¶æ®µï¼{{ form.beginTime }} ~ {{ form.endTime }}</span> |
| | | <span class="site-name">{{ form.name }}</span> |
| | | </div> |
| | | |
| | |
| | | <el-card shadow="never" class="table-class"> |
| | | <el-table |
| | | ref="table" |
| | | highlight-current-row="true" |
| | | :highlight-current-row="true" |
| | | :data="top_10_sites_with_risk_values" |
| | | :default-sort="{ prop: 'riskValue', order: 'descending' }" |
| | | height="540" |
| | | > |
| | | <!-- :index="indexMethod" --> |
| | | |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | :index="indexMethod" |
| | | fixed |
| | | width="52" |
| | | show-overflow-tooltip |
| | |
| | | show-overflow-tooltip |
| | | align="center" |
| | | /> |
| | | <!-- <el-table-column label="æä½" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-button |
| | | type="primary" |
| | | text |
| | | class="table-button" |
| | | @click="querySiteStaticsInfo(row)" |
| | | >详æ
</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> --> |
| | | </el-table> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="12"> |
| | | <el-col :span="11"> |
| | | <el-card shadow="never" class="table-class"> |
| | | <DustRadarChart |
| | | :name="[ |
| | |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="3"> |
| | | <el-card shadow="never" class="card-height"> |
| | | <el-col :span="4"> |
| | | <el-card shadow="never" class="card-height risk-card"> |
| | | <template #header> |
| | | <h1 |
| | | :class="{ |
| | |
| | | é£é©å¼(0~1)ï¼{{ weight }} |
| | | </h1> |
| | | </template> |
| | | <div class="risk-text-container"> |
| | | |
| | | <div class="risk-grade"> |
| | | <strong>é£é©ç级ï¼</strong> |
| | | <span v-if="weight >= 0.6"> é«é£é©</span> |
| | | <span v-else-if="weight >= 0.2 && weight < 0.6"> ä¸é£é©</span> |
| | | <span v-else> ä½é£é©</span> |
| | | <h1 class="sub-title">é£é©ç级ï¼</h1> |
| | | <span class="sub-title">{{ riskGradeAndAdvice.riskGrade }} </span> |
| | | </div> |
| | | |
| | | <div class="risk-advice"> |
| | | <strong>管æ§å»ºè®®ï¼</strong> |
| | | <span v-if="weight >= 0.6"> 建议对该ç«ç¹è¿è¡çº¿ä¸æ§æ³æ£æ¥ï¼ä¸é¡¹æ°æ®å¯¹æ¯</span> |
| | | <span v-else-if="weight >= 0.2 && weight < 0.6"> 建议å¼å±å¸¸æè¿½è¸ªåæ</span> |
| | | <span v-else> 建议å¼å¯¼ä¼ä¸é¿æä¿æ</span> |
| | | <h1 class="sub-title">管æ§å»ºè®®ï¼</h1> |
| | | <div v-for="item in riskGradeAndAdvice.riskAdvice" :key="item" class="risk-advice-text"> |
| | | {{ item }} |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="grade-instance"> |
| | | <div class="container"> |
| | | <div class="block-color heigh"></div> |
| | |
| | | <div>ä½é£é©(ï¼0.2)</div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="4"> |
| | | <el-card shadow="never" class="card-height"> |
| | | <template #header><span class="title-16">é£é©è¯¦æ
</span></template> |
| | | <template #header> |
| | | <span class="title-16">é£é©è¯¦æ
</span> |
| | | </template> |
| | | |
| | | <el-form> |
| | | <el-form-item label="æå¤§å¼ï¼"> {{ bill.max }} mg/m³ </el-form-item> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-card shadow="never" class="card-value"> |
| | | <LineChart title="æ¥åå¼" :chartData="chartData1" yName="mg/m³" seriesName="æ¥åå¼"> |
| | | <LineChart |
| | | title="æ¥åå¼" |
| | | :chartData="chartData1" |
| | | yName="mg/m³" |
| | | seriesName="æ¥åå¼" |
| | | :areaColor="areaColor" |
| | | > |
| | | </LineChart> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="12"> |
| | | <el-card shadow="never" class="card-value"> |
| | | <LineChart title="æ¥å¨çº¿ç" :chartData="chartData2" yName="%" seriesName="æ¥å¨çº¿ç"> |
| | | <LineChart |
| | | title="æ¥å¨çº¿ç" |
| | | :chartData="chartData2" |
| | | yName="%" |
| | | seriesName="æ¥å¨çº¿ç" |
| | | :areaColor="areaColor" |
| | | > |
| | | </LineChart> |
| | | </el-card> |
| | | </el-col> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-card shadow="never" class="card-value"> |
| | | <LineChart title="æ¥ææç" :chartData="chartData3" yName="%" seriesName="æ¥ææç"> |
| | | <LineChart |
| | | title="æ¥ææç" |
| | | :chartData="chartData3" |
| | | yName="%" |
| | | seriesName="æ¥ææç" |
| | | :areaColor="areaColor" |
| | | > |
| | | </LineChart> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="12"> |
| | | <el-card shadow="never" class="card-value"> |
| | | <LineChart title="æ¥è¶
æ ç" :chartData="chartData4" yName="%" seriesName="æ¥è¶
æ ç"> |
| | | <LineChart |
| | | title="æ¥è¶
æ ç" |
| | | :chartData="chartData4" |
| | | yName="%" |
| | | seriesName="æ¥è¶
æ ç" |
| | | :areaColor="areaColor" |
| | | > |
| | | </LineChart> |
| | | </el-card> |
| | | </el-col> |
| | |
| | | width: 98%; |
| | | /* height: 600px; */ |
| | | } |
| | | .card-value { |
| | | /* min-width:900px; */ |
| | | /* padding:0px */ |
| | | } |
| | | |
| | | .card-height { |
| | | height: 570px; |
| | | } |
| | |
| | | line-height: 60px; |
| | | } |
| | | .risk-advice { |
| | | margin: 40px 0px; |
| | | /* margin: 20px 0px; */ |
| | | } |
| | | .container { |
| | | display: flex; |
| | | margin-bottom: 10px; |
| | | } |
| | | .grade-instance { |
| | | margin-top: 80px; |
| | | /* margin-top: 50px; */ |
| | | } |
| | | .block-color { |
| | | width: 1em; |
| | |
| | | } |
| | | .weightColor-low { |
| | | color: #9fdb1d; |
| | | font-size: 16px; |
| | | } |
| | | .weightColor-medium { |
| | | color: #dabe09; |
| | | font-size: 16px; |
| | | } |
| | | .weightColor-heigh { |
| | | color: red; |
| | | font-size: 16px; |
| | | } |
| | | .risk-grade { |
| | | display: flex; |
| | | margin-top: 10px; |
| | | } |
| | | :deep().el-table__header-wrapper { |
| | | color: red; |
| | |
| | | .site-name { |
| | | margin-left: 20px; |
| | | } |
| | | .risk-advice-text { |
| | | font-size: 14px; |
| | | color: #333333; |
| | | letter-spacing: 1.5px; |
| | | margin-top: 10px; |
| | | } |
| | | .sub-title { |
| | | font-size: 14px; |
| | | color: #333333; |
| | | } |
| | | |
| | | .risk-text-container{ |
| | | height: 490px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-around; |
| | | } |
| | | </style> |