| | |
| | | */ |
| | | queryScenarioTypeName(){ |
| | | return $http.get('/dust/scenario') |
| | | }, |
| | | |
| | | /** |
| | | * æ ¹æ®ç¹ä½ååæ¥è¯¢å¯¹åºç设å¤ç¼å· |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | queryMnCode(siteName){ |
| | | return $http.get('/dust/siteInfo/mncode',{params:{siteName:siteName}}) |
| | | } |
| | | |
| | | } |
| | |
| | | component: () => import('@/views/risk_assessment/DataRiskModel.vue') |
| | | }, |
| | | |
| | | // æ°æ®é£é©æå |
| | | // æ°æ®ææ æå |
| | | { |
| | | path: '/analysis', |
| | | name: 'analysis', |
| | |
| | | meta: { title: 'é£é©æ¨¡ååµå
¥' }, |
| | | component: () => import('@/views/risk_assessment/components/SubRiskModel.vue') |
| | | }, |
| | | |
| | | |
| | | |
| | | // å®¡æ ¸è¾
å©åµå
¥è¿æ¸¡é¡µé¢ |
| | | { |
| | | path: '/AuditDetail/:beginTime/:endTime/:exceptionType', |
| | |
| | | |
| | | // å¼å¸¸è¯¦æ
åµå
¥è¿æ¸¡é¡µé¢ |
| | | { |
| | | path: '/exceptionDetail/:siteName/:month/', |
| | | path: '/exceptionDetail/:siteName/:time/:timeType/:jumpPage', |
| | | name: 'exceptionDetail', |
| | | meta: { title: 'å¼å¸¸å
·ä½ä¿¡æ¯', transition: 'slide-left' }, |
| | | component: () => import('@/views/risk_assessment/components/SiteDetail.vue') |
| | |
| | | endIndex, |
| | | exceptionName, |
| | | areaObj, |
| | | lineColor, |
| | | exceptionType |
| | | ) { |
| | | switch (exceptionType) { |
| | |
| | | exceptionName |
| | | ) |
| | | case '8': |
| | | return this.validOption(xData, yData, exceptionName, areaObj) |
| | | console.log('ä¼ è¿æ¥',lineColor) |
| | | return this.validOption(xData, yData, exceptionName, areaObj,lineColor) |
| | | } |
| | | }, |
| | | |
| | |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | validOption(xData, yData, exceptionName, areaObj) { |
| | | validOption(xData, yData, exceptionName, areaObj,lineColor) { |
| | | return { |
| | | title: { |
| | | text: exceptionName, |
| | |
| | | toolbox: { |
| | | // å·¥å
·æ |
| | | feature: { |
| | | // dataZoom: { |
| | | // yAxisIndex: 'none' |
| | | // }, |
| | | // ä¿å为å¾ç |
| | | saveAsImage: {} |
| | | } |
| | |
| | | data: areaObj |
| | | } |
| | | } |
| | | ] |
| | | ], |
| | | // æå®æ¶é´åºé´ç线段åé¢è² |
| | | // visualMap: { |
| | | // show: false, |
| | | // dimension: 0, |
| | | |
| | | // // pieces: [ |
| | | // // { |
| | | // // lte: beginIndex, |
| | | // // color: 'green' |
| | | // // }, |
| | | // // { |
| | | // // gt: beginIndex, |
| | | // // lte: endIndex, |
| | | // // color: 'red' |
| | | // // }, |
| | | // // { |
| | | // // gt: endIndex, |
| | | // // lte: xData.length - 1, |
| | | // // color: 'green' |
| | | // // } |
| | | // // ], |
| | | |
| | | // pieces: lineColor |
| | | |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | import dayjs from 'dayjs' |
| | | import { time } from 'echarts' |
| | | |
| | | export default { |
| | | // è·å该æä»½å¤©æ° |
| | |
| | | */ |
| | | deleteLastStr(valueStr) { |
| | | return valueStr.slice(0, -1) |
| | | } |
| | | }, |
| | | |
| | | |
| | | /** |
| | | * æå®æ¶é´åºé´ç线段åé¢è² |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | getLineColor(timeInteval,xList){ |
| | | let result = [] |
| | | |
| | | // åªå |
| | | let temp = [] |
| | | for (let i = 0; i < timeInteval.length; i++){ |
| | | if(timeInteval[i][0]!=timeInteval[i][1]){ |
| | | temp.push(timeInteval[i]) |
| | | } |
| | | } |
| | | |
| | | // æ è¿ç»çæ°æ® ç´æ¥éåº |
| | | if(temp.length == 0){ |
| | | return [] |
| | | } |
| | | |
| | | // å第ä¸ä¸ªè¿ç»çæ¶æ®µ |
| | | result.push( |
| | | [ |
| | | { |
| | | lte: temp[0][0], |
| | | color: 'green' |
| | | }, |
| | | { |
| | | gt: temp[0][0], |
| | | lte:temp[0][1], |
| | | color: 'red' |
| | | }, |
| | | { |
| | | gt: temp[0][1], |
| | | lte:xList[xList.length-1], |
| | | color: 'green' |
| | | } |
| | | ] |
| | | ) |
| | | return result[0] |
| | | }, |
| | | |
| | | } |
| | |
| | | if (exception.length == 0) { |
| | | exception.push(item.exceptionType) |
| | | } |
| | | // ä¿åæ°çå¼å¸¸ç±»å |
| | | else if (exception.indexOf(item.exceptionType) == -1) { |
| | | // ä¿åæ°çå¼å¸¸ç±»å æ°æ®è¶
ä½ãé¿æ¶é´æ æ³¢å¨ç两类å¼å¸¸æä¸çº³å
¥åæ |
| | | else if ( item.exceptionType!='1' && item.exceptionType!='3' && exception.indexOf(item.exceptionType) == -1) { |
| | | exception.push(item.exceptionType) |
| | | } |
| | | }) |
| | |
| | | default: |
| | | return 'error' |
| | | } |
| | | |
| | | exceptionTypeAggregation = (exception.length / 8).toFixed(2) |
| | | |
| | | // æ°æ®è¶
ä½ãé¿æ¶é´æ æ³¢å¨ç两类å¼å¸¸æä¸çº³å
¥åæ |
| | | exceptionTypeAggregation = (exception.length / 6).toFixed(2) |
| | | |
| | | let obj = {} |
| | | obj['exceptionRecurrence'] = exceptionTyprRecurRate |
| | | obj['exceptionTypeAggregation'] = exceptionTypeAggregation |
| | | |
| | | // ä¿åè¯¥æ¶æ®µåºç°çå¼å¸¸ |
| | | obj['exception'] = exception |
| | | |
| | | // ä¸ç±»å¼å¸¸åºç°çæ¬¡æ° |
| | | obj['mutationCount'] = mutationCount |
| | | obj['exceedingNearCount'] = exceedingNearCount |
| | | obj['exceedingCriticalDegree'] = exceedingCriticalDegree |
| | | |
| | | |
| | | return obj |
| | | }, |
| | | |
| | | |
| | | // åæ°ï¼å¯¹è±¡æ°ç»(该对象ä¸ç屿§ä¸è½æ¯å¼ç¨ç±»åï¼å¦åæ·è´çå¼è¿æ¯ä¼ç¸äºå½±å) |
| | | // åè½ï¼æ·è´è¯¥å¯¹è±¡æ°ç»ã |
| | | shallowCopyList(val) { |
| | |
| | | judgeRiskGradeAndAdvice(monthlyRiskValue){ |
| | | let temp = [] |
| | | // ä½é£é© |
| | | if(monthlyRiskValue < 0.2) { |
| | | if(monthlyRiskValue < 0.15) { |
| | | temp.push('ä½é£é©') |
| | | let advice = '1.å»ºè®®åæ¶æé该ç«ç¹æå±åä½è¿è¡åºæ¥ç»´æ¤ï¼\n2.è¥åæ¶åå¨è¶
æ ã临çè¶
æ ãé级çªåçå¼å¸¸æ¶ï¼å»ºè®®å°è¯¥ç«ç¹ç§»äº¤ç¯å¢æ§æ³å¤§éå¼å±ç°åºæ§æ³æ£æ¥ï¼\n3.è¥æç»ä¸¤æå以ä¸ä¸ºé«é£é©ï¼å»ºè®®å°è¯¥ç«ç¹çº³å
¥å¹´åº¦æ½æµæ¯å¯¹æ¸
åï¼' |
| | | temp.push(advice) |
| | | } |
| | | // ä¸é£é© |
| | | if (monthlyRiskValue < 0.6 && monthlyRiskValue >= 0.2) { |
| | | if (monthlyRiskValue <= 0.6 && monthlyRiskValue >= 0.15) { |
| | | temp.push('ä¸é£é©') |
| | | let advice = '1.建议éè¿å®æ³æå¡å°ç¨åºãçæµç管微信群ççº¿ä¸æ¹å¼æç¤ºç«ç¹æå±åä½ï¼èç¦å½ååå¨çé®é¢æéæ£ï¼åæ¶å¼å±èªæ¥èªçº ï¼\n2.è¥åæ¶åå¨å¨çº¿çæææçæåº¦ä¸è¾¾æ ï¼å»ºè®®çµè¯éç¥è¯¥ç«ç¹æå±åä½è¿è¡åºæ¥ç»´æ¤ï¼å¹¶è¿è¡ä¸é¡¹å®¡æ ¸ï¼' |
| | | temp.push(advice) |
| | | } |
| | | // é«é£é© |
| | | if (monthlyRiskValue >= 0.6) { |
| | | if (monthlyRiskValue > 0.6) { |
| | | temp.push('é«é£é©') |
| | | let advice = '1.è¥ä¸æ¶åè¶
æ æå¨çº¿çãææçå¼å¸¸ï¼å¸¸ææ°æ®å®¡æ ¸å³å¯ï¼\n2.è¥æ¶åè¶
æ æå¨çº¿çãææççå¼å¸¸ï¼å»ºè®®éè¿å®æ³æå¡å°ç¨åºãçæµç管微信群ççº¿ä¸æ¹å¼æç¤ºç«ç¹æå±åä½ï¼åæ¶å¼å±èªæ¥èªçº ï¼' |
| | | temp.push(advice) |
| | |
| | | '', |
| | | this.tableCurrentRowData.exception, |
| | | areaObj, |
| | | '', |
| | | this.tableCurrentRowData.exceptionType |
| | | ) |
| | | }, |
| | |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="flag" label="flag" align="center" show-overflow-tooltip /> |
| | | <el-table-column prop="flag" label="æ°æ®æ è¯" align="center" show-overflow-tooltip /> |
| | | </el-table> |
| | | </div> |
| | | <template #footer> |
| | |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æä»½ |
| | | month:{ |
| | | // æ¥æ¶é´æè
ææ¶é´ |
| | | time:{ |
| | | type:String, |
| | | default:'' |
| | | }, |
| | |
| | | showAll: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | |
| | | // 0ä»£è¡¨æ¥æ¶é´ï¼1ä»£è¡¨ææ¶é´ |
| | | timeType:{ |
| | | type:Number, |
| | | default:-1 |
| | | } |
| | | }, |
| | | components: { |
| | |
| | | } |
| | | }, |
| | | setup() { |
| | | // provide('search',readonly(form)) |
| | | const { isExceedOneMonth } = useCommonFunction() |
| | | return { |
| | | isExceedOneMonth |
| | |
| | | this.backExceptionDataAWeekAgo() |
| | | } |
| | | }, |
| | | siteName(){ |
| | | this.beginTime = dayjs(this.month).startOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | this.endTime = dayjs(this.month).endOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | this.backExceptionDataAWeekAgo() |
| | | this.getShopNames() |
| | | }, |
| | | month(){ |
| | | this.beginTime = dayjs(this.month).startOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | this.endTime = dayjs(this.month).endOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | this.backExceptionDataAWeekAgo() |
| | | this.getShopNames() |
| | | // siteName(){ |
| | | // if(this.siteName!=''){ |
| | | // this.beginTime = dayjs(this.month).startOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | // this.endTime = dayjs(this.month).endOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | // this.backExceptionDataAWeekAgo() |
| | | // this.getShopNames() |
| | | // } |
| | | |
| | | // }, |
| | | |
| | | timeType(){ |
| | | if(this.timeType == '0'){ |
| | | this.beginTime = dayjs(this.time).format('YYYY-MM-DD 00:00:00') |
| | | this.endTime = dayjs(this.time).format('YYYY-MM-DD 23:59:59') |
| | | }else if(this.timeType == '1'){ |
| | | this.beginTime = dayjs(this.time).startOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | this.endTime = dayjs(this.time).endOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | this.backExceptionDataAWeekAgo() |
| | | this.getShopNames() |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | mounted() { |
| | | |
| | | this.getSiteNume() |
| | | |
| | | // é£è¡å·¡æ£é¡µé¢ï¼è¿å»å è½½ |
| | | if(this.showAll == true){ |
| | | this.backExceptionDataAWeekAgo() |
| | | this.getShopNames() |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | // let rangeTime_1 = time.splitTime(rangeTime) |
| | | // å¾å°èæ¯åºé´çé
ç½® |
| | | let areaObj = lineChart.getMarkArea(rangeTime, 'å¼å¸¸') |
| | | |
| | | // let lineColor = lineChart.getLineColor(rangeTime,xList) |
| | | let lineColor = [] |
| | | // console.log('线段',lineColor); |
| | | // ä¼ å
¥åæ° |
| | | this.dialog.option = exceptionOption.setExceptionChartOption( |
| | | xList, |
| | |
| | | '', |
| | | this.tableCurrentRowData.exception, |
| | | areaObj, |
| | | lineColor, |
| | | this.tableCurrentRowData.exceptionType |
| | | ) |
| | | }, |
| | |
| | | startIndex, |
| | | endIndex, |
| | | this.tableCurrentRowData.exception, |
| | | '', |
| | | '', |
| | | this.tableCurrentRowData.exceptionType |
| | | ) |
| | |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="flag" label="flag" align="center" show-overflow-tooltip /> |
| | | <el-table-column prop="flag" label="æ°æ®æ è¯" align="center" show-overflow-tooltip /> |
| | | </el-table> |
| | | </div> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-tag type="success" class="mx-1" effect="dark" round |
| | | ><span class="table-line-lable" v-show="tableCurrentRowData.exceptionType == '0'" |
| | | >ç¼ºå¤±æ°æ®ï¼ |
| | |
| | | tableCurrentRowData.exceptionType == '1' || |
| | | tableCurrentRowData.exceptionType == '2' || |
| | | tableCurrentRowData.exceptionType == '3' || |
| | | tableCurrentRowData.exceptionType == '4' |
| | | tableCurrentRowData.exceptionType == '4' || |
| | | tableCurrentRowData.exceptionType == '5' || |
| | | tableCurrentRowData.exceptionType == '6' || |
| | | tableCurrentRowData.exceptionType == '7' || |
| | | tableCurrentRowData.exceptionType == '8' |
| | | " |
| | | >å¼å¸¸æ°æ®ï¼</span |
| | | > |
| | | <span class="table-line-num">{{ dialog.exceptionTotal }}æ¡</span> |
| | | <span v-show="tableCurrentRowData.exceptionType == '0'"> (é»è¾è®¡ç®)</span> |
| | | </el-tag> |
| | | <el-text v-show="tableCurrentRowData.exceptionType == '8'" type="warning" class="dialog-footer-text">æ°æ®æ è¯Aä¸ºæ°æ®é¿æç¼ºå¤±,ç³»ç»èªå¨è¡¥å
¨</el-text> |
| | | <!-- <el-text class="mx-1" type="warning">Warning</el-text> --> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | } |
| | | |
| | | .mx-1 { |
| | | position: absolute; |
| | | /* position: absolute; |
| | | left: 10px; |
| | | bottom: 10px; |
| | | bottom: 10px; */ |
| | | justify-content: flex-start; |
| | | } |
| | | .dialog-footer{ |
| | | display: flex; |
| | | } |
| | | .dialog-footer-text { |
| | | justify-content: flex-end; |
| | | margin-left: auto; |
| | | font-size: 14px; |
| | | /* color: #333333; */ |
| | | } |
| | | /* æ¥ç详æ
å¯¹è¯æ¡æ¨¡åç»æ */ |
| | | </style> |
| | |
| | | import ButtonExportExcel from '@/sfc/ButtonExportExcel.vue' |
| | | import ButtonClick from '@/sfc/ButtonClick.vue' |
| | | |
| | | |
| | | |
| | | export default { |
| | | components: { |
| | | TimeShortCuts, |
| | |
| | | } |
| | | } |
| | | |
| | | // å¨çº¿çï¼ææç 䏿»¡è¶³æ åæ¶ åé¢è² |
| | | if (columnIndex == 7) { |
| | | if (row.dayOnline < 0.9) { |
| | | return 'red-color' |
| | | } |
| | | } |
| | | |
| | | |
| | | if (columnIndex == 8) { |
| | | if (row.dayValid < 0.9) { |
| | | return 'red-color' |
| | |
| | | }, |
| | | openDetail(row) { |
| | | const encodedSiteName = encodeURIComponent(row.name) |
| | | this.$router.push(`/exceptionDetail/${encodedSiteName}/${row.lst}`) |
| | | const timeType = '0' |
| | | const jumpPage = '2' |
| | | this.$router.push(`/exceptionDetail/${encodedSiteName}/${row.lst}/${timeType}/${jumpPage}`) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | |
| | | |
| | | <template> |
| | | <el-form :inline="true" :model="form" ref="h1"> |
| | | <el-form-item> |
| | |
| | | <!-- æ¥åå¼ --> |
| | | |
| | | <script> |
| | | import InputSearch from '@/sfc/InputSearch.vue' |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' |
| | | import DustRadarChart from './components/DustRadarChart.vue' |
| | | import exceptionApi from '@/api/exceptionApi.js' |
| | | import LineChart from './components/LineChart.vue' |
| | | import index from '@/utils/risk_estimate_common_function/index.js' |
| | | 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' |
| | | import siteInfo from '@/api/site/siteInfo.js' |
| | | export default { |
| | | components: { |
| | | LineChart, |
| | | InputSearch, |
| | | AreaAndmonitorType, |
| | | DustRadarChart, |
| | | ButtonClick, |
| | | MonthSelect |
| | | }, |
| | | data() { |
| | | return { |
| | | isNoData: false, |
| | | loading: false, |
| | | screenLoading: false, |
| | | parentDataFlag: false, |
| | | chartData: [], |
| | | chartData1: {}, //ä¿åæ¥è¯¢çç»æ |
| | | chartData2: {}, |
| | | chartData3: {}, |
| | | chartData4: {}, |
| | | begin: '', //å¼å§æ¶é´ |
| | | end: '', //ç»ææ¶é´ |
| | | |
| | | form: { |
| | | // ç«ç¹åç§° |
| | | name: '', |
| | | // 设å¤ç¼å· |
| | | number: '3234', |
| | | // å¼å§æ¶é´ |
| | | beginTime: '', |
| | | // ç»ææ¶é´ |
| | | endTime: '' |
| | | }, |
| | | month: '', |
| | | |
| | | // æçº¿å¾é
置项 |
| | | option: {}, |
| | | // æ°æ®æ¸
å |
| | | bill: { |
| | | min: '', |
| | | max: '', |
| | | avg: '', |
| | | online: 100, |
| | | valid: 100, |
| | | exceeding: 0, |
| | | |
| | | // å
¸åå¼å¸¸å¤ç°ç |
| | | exceptionRecurrence: 0, |
| | | // å¼å¸¸ç±»åæ®èé度 |
| | | exceptionTypeAggregation: 0 |
| | | }, |
| | | |
| | | // æ¥è¯¢æé®å è½½ææ |
| | | queryButton: false, |
| | | |
| | | // é£é©å¼æåååçç«ç¹ |
| | | top_10_sites_with_risk_values: [{ name: '', riskValue: 0.2 }], |
| | | // é£é©å¼ |
| | | weight: '', |
| | | // æ æ°æ®é
ç½®æ¶é´æ®µ |
| | | areaColor: [], |
| | | // æç«ç¹çåºæ¬ä¿¡æ¯ |
| | | siteInfo: {}, |
| | | |
| | | // å¼å¸¸é£é©çå¼ |
| | | exceptionRisk: { |
| | | // å¨çº¿çé£é© |
| | | onlineRisk: '', |
| | | // ææçé£é© |
| | | validRisk: '', |
| | | // è¶
æ é£é© |
| | | exceedRisk: '', |
| | | // å¼å¸¸ç±»åèé度 |
| | | exceptionTypeAggregation: '', |
| | | // å
¸åå¼å¸¸å¤ç°ç |
| | | typicalExceptionRepetitionRate:'' |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | // // å è½½é£é©å¼æé«çç«ç¹æ°æ® |
| | | this.ShowDefaultData() |
| | | }, |
| | | computed: { |
| | | // é£é©ç级 |
| | | riskGradeAndAdvice() { |
| | | return riskApi.getRiskAdvice(this.weight) |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | |
| | | |
| | | // æ¥è¯¢ç«ç¹ç»è®¡ä¿¡æ¯ |
| | | async querySiteStaticsInfo(row) { |
| | | this.form.name = row.siteName |
| | | // æ´æ°ç»è®¡æ°æ® |
| | | await this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | import CompDataRiskModel from '@/views/risk_assessment/components/CompDataRiskModel.vue' |
| | | export default { |
| | | components:{ |
| | | CompDataRiskModel |
| | | }, |
| | | data() { |
| | | return{ |
| | | |
| | | // æ ¼å¼åæä»½ |
| | | giveMonth(val) { |
| | | //å°ä¸å½æ åæ¶é´è½¬ä¸ºæå®æ ¼å¼(该ç»ä»¶è¿åçæ åæ¶é´çæ ¼å¼ï¼æä»¥å¿
é¡»çå è¿ä¸ªå½æ°) |
| | | this.month = dayjs(val).format('YYYY-MM-DD') |
| | | // åæ¶æ´æ°å¼å§åç»ææ¶é´ |
| | | 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') |
| | | }, |
| | | |
| | | /** |
| | | * é£é©è¯ä¼°æé® |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | riskAssessment() { |
| | | // æ´æ°æåæ¸
å |
| | | this.getRiskRank() |
| | | // æ´æ°è¯¥ç«ç¹çæå±åºæ¯åè¿ç»´å |
| | | this.getSiteInfo(this.form.number) |
| | | // æ´æ°åææ°æ® |
| | | this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | }, |
| | | |
| | | // æ´æ°åææ°æ® |
| | | getAnalysisData() { |
| | | // æ¥ç»è®¡æ°æ® |
| | | this.fetchDayAnalysisData() |
| | | // å¼å¸¸æ°æ® |
| | | // this.fetchExceptionAnalysisData() |
| | | }, |
| | | |
| | | findObjectByPropertyValue(array, property, value) { |
| | | return array.find((obj) => obj[property] === value) |
| | | }, |
| | | |
| | | // æ¤é¡µé¢æå¼æ¶ |
| | | ShowDefaultData() { |
| | | // é»è®¤å è½½å±ç¤ºçå
容 |
| | | this.updateOriginPage() |
| | | }, |
| | | |
| | | // å è½½é»è®¤å±ç¤ºçå
容 |
| | | async updateOriginPage() { |
| | | this.screenLoading = true |
| | | // æ´æ°æåæ¸
åï¼å¹¶å¾å°é£é©å¼æé«ç«ç¹ |
| | | let arr = await this.getRiskRank() |
| | | this.form.name = arr[0] |
| | | this.form.number = arr[1] |
| | | this.screenLoading = false |
| | | |
| | | // æ´æ°è¯¥ç«ç¹çæå±åºæ¯åè¿ç»´å |
| | | this.getSiteInfo(this.form.number) |
| | | // æ´æ°æ¥ç»è®¡æ°æ® |
| | | this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | |
| | | }, |
| | | |
| | | |
| | | /** |
| | | * å¾å°æ°æ®é£é©å¼ ï¼å¹¶è®¡ç®é£é©å¼ |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | calRiskValue() { |
| | | riskApi.queryRiskValue(this.form.number, this.month, 'month').then((response) => { |
| | | |
| | | |
| | | const riskValue = response.data.data[0] |
| | | this.exceptionRisk.onlineRisk = riskValue.onlineRisk |
| | | this.exceptionRisk.validRisk = riskValue.validRisk |
| | | this.exceptionRisk.exceedRisk = riskValue.exceedRisk |
| | | this.exceptionRisk.exceptionTypeAggregation = riskValue.exceptionTypeAggregation |
| | | this.exceptionRisk.typicalExceptionRepetitionRate = riskValue.typicalExceptionRepetitionRate |
| | | |
| | | this.weight = riskValue.calRiskValue(riskValue).toFixed(2) |
| | | }) |
| | | }, |
| | | |
| | | // æ ¹æ®ç®åç«ç¹ï¼æä»½ï¼æ¥æçº¿å¾æ¥ç»è®¡æ°æ® |
| | | fetchDayAnalysisData() { |
| | | let params = {} |
| | | if (this.form.name) { |
| | | params['siteName'] = this.form.name |
| | | } |
| | | if (this.form.beginTime) { |
| | | params['beginTime'] = this.form.beginTime |
| | | } |
| | | if (this.form.endTime) { |
| | | params['endTime'] = this.form.endTime |
| | | } |
| | | this.loading = true |
| | | this.queryButton = true |
| | | exceptionApi |
| | | .analysisdata(this.form.name, this.form.beginTime, this.form.endTime, 'day') |
| | | .then((response) => { |
| | | this.chartData = response.data.data |
| | | this.loading = false |
| | | this.queryButton = false |
| | | if (response.data.data.length == 0) { |
| | | this.isNoData = true |
| | | return |
| | | } |
| | | // åææ°æ®ä¸çææ©æ¶é´ |
| | | 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) |
| | | this.setChart() |
| | | |
| | | |
| | | // æçº¿å¾æ°æ® |
| | | let temp = index.calBillData(this.chartData, begin, end) |
| | | this.bill.min = temp['min'] |
| | | this.bill.max = temp['max'] |
| | | |
| | | this.bill.avg = temp['avg'] |
| | | this.bill.online = temp['online'] |
| | | this.bill.valid = temp['valid'] |
| | | this.bill.exceeding = temp['exceeding'] |
| | | }) |
| | | }, |
| | | // ä¼ä¸å¼å¸¸ç»è®¡æ°æ® |
| | | fetchExceptionAnalysisData() { |
| | | exceptionApi |
| | | .exceptiondata1({ |
| | | siteName: this.form.name, |
| | | beginTime: this.form.beginTime, |
| | | endTime: this.form.endTime |
| | | }) |
| | | .then((res) => { |
| | | let obj = index.calRecur(res.data.data) |
| | | this.bill.exceptionRecurrence = obj['exceptionRecurrence'] |
| | | this.bill.exceptionTypeAggregation = obj['exceptionTypeAggregation'] |
| | | }) |
| | | }, |
| | | |
| | | // éæ©å
¶ä»å¼ç±»åæ¶ |
| | | setChart() { |
| | | if (this.chartData.length) { |
| | | // æå»ºæçº¿å¾x,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 |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | // å¾å°å10é£é©æåæ¸
å |
| | | async getRiskRank() { |
| | | let response = await riskApi.queryRiskValue('', this.month, 'month') |
| | | |
| | | let tableData = riskValue.backComprehensiveRiskTableData(response.data.data) |
| | | |
| | | 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') |
| | | }) |
| | | // ä¿åé£é©å¼æé«çç«ç¹åç§°å设å¤ç¼å· |
| | | 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ï¼ å¯¹è±¡æ°ç»ï¼è¿åçæ°é |
| | | */ |
| | | getTopRiskData(arr, num) { |
| | | // æç
§riskValueéåºæå |
| | | arr.sort((a, b) => b.riskValue - a.riskValue) |
| | | // è·åånum个å
ç´ |
| | | return arr.slice(0, num) |
| | | }, |
| | | /** |
| | | * æ ¹æ®è®¾å¤ç¼å·æ¥è¯¢ç«ç¹åºæ¬ä¿¡æ¯ |
| | | * @paramï¼ è®¾å¤ç¼å· |
| | | */ |
| | | getSiteInfo(mnCode) { |
| | | siteInfo.querySiteInfoByMnCode(mnCode).then(response => { |
| | | this.siteInfo = response.data.data[0] |
| | | }) |
| | | }, |
| | | methods: { |
| | | |
| | | openDetail() { |
| | | const encodedSiteName = encodeURIComponent(this.form.name) |
| | | this.$router.push(`/exceptionDetail/${encodedSiteName}/${this.month}`) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <el-form :inline="true" :model="form"> |
| | | <el-form-item class="form-item"> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | | <el-form-item class="form-item"> |
| | | <InputSearch |
| | | :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 @submit-value="giveMonth"></MonthSelect> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <ButtonClick |
| | | content="é£é©è¯ä¼°" |
| | | type="primary" |
| | | :loading="queryButton" |
| | | @do-search="riskAssessment" |
| | | ></ButtonClick> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | |
| | | |
| | | <div v-loading="screenLoading" class="wait-name"> |
| | | <div class="chart-container" v-show="!isNoData && !screenLoading"> |
| | | |
| | | <el-card class="time-text" > |
| | | <h4>{{form.name}}</h4> |
| | | <br/> |
| | | <br/> |
| | | <span>æ°æ®ç»è®¡æ¶æ®µï¼{{ form.beginTime }} ~ {{ form.endTime }}</span> |
| | | <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" @click="openDetail"> |
| | | æ°æ®å¼å¸¸è¯¦æ
|
| | | </el-button> |
| | | </el-card> |
| | | |
| | | <el-row :gutter="10"> |
| | | <el-col :span="5"> |
| | | <el-card shadow="never" class="table-class"> |
| | | <el-table |
| | | ref="table" |
| | | :highlight-current-row="true" |
| | | :data="top_10_sites_with_risk_values" |
| | | :default-sort="{ prop: 'riskValue', order: 'descending' }" |
| | | height="540" |
| | | > |
| | | |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | fixed |
| | | width="52" |
| | | show-overflow-tooltip |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | prop="siteName" |
| | | label="ç¹ä½åç§°" |
| | | show-overflow-tooltip |
| | | width="97" |
| | | align="center" |
| | | > |
| | | <template #default="{ row }"> |
| | | <el-button |
| | | type="primary" |
| | | text |
| | | class="table-button" |
| | | @click="querySiteStaticsInfo(row)" |
| | | > |
| | | <span class="risk-rank-site"> |
| | | {{ row.siteName }} |
| | | </span> |
| | | </el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="riskValue" |
| | | label="é£é©å¼" |
| | | sortable |
| | | show-overflow-tooltip |
| | | align="center" |
| | | /> |
| | | </el-table> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="11"> |
| | | <el-card shadow="never" class="table-class"> |
| | | <DustRadarChart |
| | | :name="[ |
| | | 'æ°æ®ææé£é©', |
| | | 'å
¸åå¼å¸¸å¤ç°é£é©', |
| | | 'å¼å¸¸ç±»åèéé£é©', |
| | | 'è¶
æ å¼å¸¸é£é©', |
| | | 'æ°æ®å¨çº¿é£é©' |
| | | ]" |
| | | :yData="exceptionRisk" |
| | | ></DustRadarChart> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="4"> |
| | | <el-card shadow="never" class="card-height risk-card"> |
| | | <template #header> |
| | | <h1 |
| | | :class="{ |
| | | 'weightColor-low': weight < 0.2, |
| | | 'weightColor-medium': weight >= 0.2 && weight < 0.6, |
| | | 'weightColor-heigh': weight >= 0.6 |
| | | }" |
| | | > |
| | | é£é©å¼(0~1)ï¼{{ weight }} |
| | | </h1> |
| | | </template> |
| | | <div class="risk-text-container"> |
| | | |
| | | <div class="risk-grade"> |
| | | <h1 class="sub-title">é£é©ç级ï¼</h1> |
| | | <span class="sub-title">{{ riskGradeAndAdvice.riskGrade }} </span> |
| | | </div> |
| | | |
| | | <div class="risk-advice"> |
| | | <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.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color medium"></div> |
| | | <div>ä¸é£é©(0.2~0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color low"></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> |
| | | |
| | | <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 }}% </el-form-item> |
| | | <el-form-item label="æ°æ®å¨çº¿çï¼"> {{ bill.valid }}% </el-form-item> |
| | | <el-form-item label="æ°æ®è¶
æ çï¼"> {{ bill.exceeding }}% </el-form-item> |
| | | <el-form-item label="å¼å¸¸ç±»åèé度ï¼"> |
| | | {{ bill.exceptionTypeAggregation * 100 }}% |
| | | </el-form-item> |
| | | <el-form-item label="å
¸åå¼å¸¸å¤ç°çï¼"> |
| | | {{ bill.exceptionRecurrence * 100 }}% |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-card shadow="never" class="card-value"> |
| | | <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="chartData3" |
| | | yName="%" |
| | | seriesName="æ¥ææç" |
| | | :areaColor="areaColor" |
| | | > |
| | | </LineChart> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | <el-empty description="ææ æ°æ®" v-show="isNoData" :image-size="200" /> |
| | | <CompDataRiskModel :show-all="true"/> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .el-form { |
| | | margin: 10px; |
| | | } |
| | | .form-item { |
| | | margin-top: 10px; |
| | | } |
| | | .chart-container { |
| | | margin-left: 10px; |
| | | } |
| | | .time-text { |
| | | font-size: 14px; |
| | | color: #333333; |
| | | letter-spacing: 1px; |
| | | |
| | | } |
| | | .el-card { |
| | | margin-top: 15px; |
| | | border-radius: 9px; |
| | | } |
| | | .chart-container { |
| | | width: 98%; |
| | | /* height: 600px; */ |
| | | } |
| | | <style scoped> |
| | | |
| | | .card-height { |
| | | height: 570px; |
| | | } |
| | | .el-header { |
| | | background-color: #010408; |
| | | color: #333; |
| | | line-height: 60px; |
| | | } |
| | | .risk-advice { |
| | | /* margin: 20px 0px; */ |
| | | } |
| | | .container { |
| | | display: flex; |
| | | margin-bottom: 10px; |
| | | } |
| | | .grade-instance { |
| | | /* margin-top: 50px; */ |
| | | } |
| | | .block-color { |
| | | width: 1em; |
| | | height: 1em; |
| | | margin-right: 10px; |
| | | margin-top: 3px; |
| | | } |
| | | .heigh { |
| | | background-color: red; |
| | | } |
| | | .medium { |
| | | background-color: #fadc19; |
| | | } |
| | | .low { |
| | | background-color: #9fdb1d; |
| | | } |
| | | |
| | | .el-text { |
| | | align-self: left; |
| | | } |
| | | .el-form-item { |
| | | margin-bottom: 20px; |
| | | } |
| | | :deep().el-form-item__content { |
| | | justify-content: flex-end; |
| | | } |
| | | .title-16 { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | .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; |
| | | } |
| | | :deep().el-table__header-wrapper { |
| | | color: red; |
| | | } |
| | | /* .wait-name { |
| | | width: 500px; |
| | | height: 600px; |
| | | } */ |
| | | .table-class { |
| | | /* border: 1px solid blue; */ |
| | | /* margin: 20px 0px 20px 0px; */ |
| | | height: 570px; |
| | | } |
| | | |
| | | .table-button { |
| | | letter-spacing: 1px; |
| | | text-decoration: underline; |
| | | /* border-radius: 0px; */ |
| | | |
| | | } |
| | | .risk-rank-site { |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | width: 80px; |
| | | } |
| | | .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; |
| | | } |
| | | |
| | | .el-tag{ |
| | | margin-left: 25px; |
| | | font-size: 14px; |
| | | vertical-align: baseline; |
| | | } |
| | | .exception-button { |
| | | vertical-align: baseline; |
| | | margin-left: 150px; |
| | | } |
| | | |
| | | .site-info-detail{ |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .mx-1{ |
| | | margin-left: 100px; |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | }, |
| | | openDetail(row) { |
| | | const encodedSiteName = encodeURIComponent(row.siteName) |
| | | let titleName = 'ç«ç¹é£é©æ°æ®è¯¦æ
' |
| | | this.$router.push(`/detail/${encodedSiteName}/${this.form.month}/${titleName}`) |
| | | const jumpPage = 1 |
| | | this.$router.push(`/exceptionDetail/${encodedSiteName}/${this.form.month}/1/${jumpPage}`) |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- æ¥åå¼ --> |
| | | |
| | | <script> |
| | | import InputSearch from '@/sfc/InputSearch.vue' |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' |
| | | import exceptionApi from '@/api/exceptionApi.js' |
| | | |
| | | import DustRadarChart from '@/views/risk_assessment/components/DustRadarChart.vue' |
| | | import LineChart from '@/views/risk_assessment/components/LineChart.vue' |
| | | |
| | | import index from '@/utils/risk_estimate_common_function/index.js' |
| | | 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' |
| | | import siteInfo from '@/api/site/siteInfo.js' |
| | | export default { |
| | | props: { |
| | | // ç¹ä½åå |
| | | siteName: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æä»½ |
| | | time: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // å±ç¤ºé¡µé¢çå
¨é¨ |
| | | showAll: { |
| | | type: Boolean, |
| | | default: true |
| | | } |
| | | }, |
| | | components: { |
| | | LineChart, |
| | | InputSearch, |
| | | AreaAndmonitorType, |
| | | DustRadarChart, |
| | | ButtonClick, |
| | | MonthSelect |
| | | }, |
| | | data() { |
| | | return { |
| | | isNoData: false, |
| | | loading: false, |
| | | screenLoading: false, |
| | | parentDataFlag: false, |
| | | chartData: [], |
| | | chartData1: {}, //ä¿åæ¥è¯¢çç»æ |
| | | chartData2: {}, |
| | | chartData3: {}, |
| | | chartData4: {}, |
| | | begin: '', //å¼å§æ¶é´ |
| | | end: '', //ç»ææ¶é´ |
| | | |
| | | form: { |
| | | // ç«ç¹åç§° |
| | | name: '', |
| | | // 设å¤ç¼å· |
| | | number: '3234', |
| | | // å¼å§æ¶é´ |
| | | beginTime: '', |
| | | // ç»ææ¶é´ |
| | | endTime: '' |
| | | }, |
| | | month: '', |
| | | |
| | | // æçº¿å¾é
置项 |
| | | option: {}, |
| | | // æ°æ®æ¸
å |
| | | bill: { |
| | | min: '', |
| | | max: '', |
| | | avg: '', |
| | | online: 100, |
| | | valid: 100, |
| | | exceeding: 0, |
| | | |
| | | // å
¸åå¼å¸¸å¤ç°ç |
| | | exceptionRecurrence: 0, |
| | | // å¼å¸¸ç±»åæ®èé度 |
| | | exceptionTypeAggregation: 0, |
| | | |
| | | exception: 0, |
| | | mutationCount: 0, |
| | | exceedingNearCount: 0, |
| | | exceedingCriticalDegree: 0 |
| | | }, |
| | | |
| | | // æ¥è¯¢æé®å è½½ææ |
| | | queryButton: false, |
| | | |
| | | // é£é©å¼æåååçç«ç¹ |
| | | top_10_sites_with_risk_values: [{ name: '', riskValue: 0.2 }], |
| | | // é£é©å¼ |
| | | weight: '', |
| | | // æ æ°æ®é
ç½®æ¶é´æ®µ |
| | | areaColor: [], |
| | | // æç«ç¹çåºæ¬ä¿¡æ¯ |
| | | siteInfo: {}, |
| | | |
| | | // å¼å¸¸é£é©çå¼ |
| | | exceptionRisk: { |
| | | // å¨çº¿çé£é© |
| | | onlineRisk: '', |
| | | // ææçé£é© |
| | | validRisk: '', |
| | | // è¶
æ é£é© |
| | | exceedRisk: '', |
| | | // å¼å¸¸ç±»åèé度 |
| | | exceptionTypeAggregation: '', |
| | | // å
¸åå¼å¸¸å¤ç°ç |
| | | typicalExceptionRepetitionRate: '' |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | // showAll() { |
| | | // console.log('1111') |
| | | // // 页é¢å è½½æ¶showAllæä¼åå䏿¬¡ |
| | | // // 为true表示çé£é©æ¨¡åé¡µé¢ |
| | | // if (this.showAll) { |
| | | // // å è½½é£é©å¼æé«çç«ç¹æ°æ® |
| | | // this.ShowDefaultData() |
| | | // } |
| | | // }, |
| | | 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') |
| | | |
| | | // æ´æ°è¯¥ç«ç¹çæå±åºæ¯åè¿ç»´å |
| | | this.getSiteInfo(this.form.number) |
| | | // æ´æ°ç»è®¡æ°æ® |
| | | this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | this.screenLoading = false |
| | | }) |
| | | } |
| | | |
| | | } |
| | | }, |
| | | |
| | | computed: { |
| | | // é£é©ç级 |
| | | riskGradeAndAdvice() { |
| | | return riskApi.getRiskAdvice(this.weight) |
| | | } |
| | | }, |
| | | mounted(){ |
| | | if(this.showAll){ |
| | | // å è½½é£é©å¼æé«çç«ç¹æ°æ® |
| | | this.ShowDefaultData() |
| | | } |
| | | }, |
| | | methods: { |
| | | // æ¥è¯¢ç«ç¹ç»è®¡ä¿¡æ¯ |
| | | async querySiteStaticsInfo(row) { |
| | | this.form.name = row.siteName |
| | | // æ´æ°ç»è®¡æ°æ® |
| | | await this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | }, |
| | | |
| | | // æ ¼å¼åæä»½ |
| | | giveMonth(val) { |
| | | //å°ä¸å½æ åæ¶é´è½¬ä¸ºæå®æ ¼å¼(该ç»ä»¶è¿åçæ åæ¶é´çæ ¼å¼ï¼æä»¥å¿
é¡»çå è¿ä¸ªå½æ°) |
| | | this.month = dayjs(val).format('YYYY-MM-DD') |
| | | // åæ¶æ´æ°å¼å§åç»ææ¶é´ |
| | | 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') |
| | | }, |
| | | |
| | | /** |
| | | * é£é©è¯ä¼°æé® |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | riskAssessment() { |
| | | // æ´æ°æåæ¸
å |
| | | this.getRiskRank() |
| | | // æ´æ°è¯¥ç«ç¹çæå±åºæ¯åè¿ç»´å |
| | | this.getSiteInfo(this.form.number) |
| | | // æ´æ°åææ°æ® |
| | | this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | }, |
| | | |
| | | // æ´æ°åææ°æ® |
| | | getAnalysisData() { |
| | | // æ¥ç»è®¡æ°æ® |
| | | this.fetchDayAnalysisData() |
| | | // å¼å¸¸æ°æ® |
| | | this.fetchExceptionAnalysisData() |
| | | }, |
| | | |
| | | findObjectByPropertyValue(array, property, value) { |
| | | return array.find((obj) => obj[property] === value) |
| | | }, |
| | | |
| | | // æ¤é¡µé¢æå¼æ¶ |
| | | ShowDefaultData() { |
| | | // é»è®¤å è½½å±ç¤ºçå
容 |
| | | this.updateOriginPage() |
| | | }, |
| | | |
| | | // å è½½é»è®¤å±ç¤ºçå
容 |
| | | async updateOriginPage() { |
| | | this.screenLoading = true |
| | | // æ´æ°æåæ¸
åï¼å¹¶å¾å°é£é©å¼æé«ç«ç¹ |
| | | let arr = await this.getRiskRank() |
| | | this.form.name = arr[0] |
| | | this.form.number = arr[1] |
| | | this.screenLoading = false |
| | | |
| | | // æ´æ°è¯¥ç«ç¹çæå±åºæ¯åè¿ç»´å |
| | | this.getSiteInfo(this.form.number) |
| | | // æ´æ°æ¥ç»è®¡æ°æ® |
| | | this.getAnalysisData() |
| | | // 计ç®é£é©å¼ |
| | | this.calRiskValue() |
| | | }, |
| | | |
| | | /** |
| | | * å¾å°æ°æ®é£é©å¼ ï¼å¹¶è®¡ç®é£é©å¼ |
| | | * @paramï¼ |
| | | * @returnsï¼ |
| | | */ |
| | | calRiskValue() { |
| | | riskApi.queryRiskValue(this.form.number, this.month, 'month').then((response) => { |
| | | const rValue = response.data.data[0] |
| | | this.exceptionRisk.onlineRisk = rValue.onlineRisk |
| | | this.exceptionRisk.validRisk = rValue.validRisk |
| | | this.exceptionRisk.exceedRisk = rValue.exceedRisk |
| | | this.exceptionRisk.exceptionTypeAggregation = rValue.exceptionTypeAggregation |
| | | this.exceptionRisk.typicalExceptionRepetitionRate = rValue.typicalExceptionRepetitionRate |
| | | |
| | | this.weight = riskValue.calRiskValue(rValue).toFixed(2) |
| | | }) |
| | | }, |
| | | |
| | | // æ ¹æ®ç®åç«ç¹ï¼æä»½ï¼æ¥æçº¿å¾æ¥ç»è®¡æ°æ® |
| | | fetchDayAnalysisData() { |
| | | let params = {} |
| | | if (this.form.name) { |
| | | params['siteName'] = this.form.name |
| | | } |
| | | if (this.form.beginTime) { |
| | | params['beginTime'] = this.form.beginTime |
| | | } |
| | | if (this.form.endTime) { |
| | | params['endTime'] = this.form.endTime |
| | | } |
| | | this.loading = true |
| | | this.queryButton = true |
| | | exceptionApi |
| | | .analysisdata(this.form.name, this.form.beginTime, this.form.endTime, 'day') |
| | | .then((response) => { |
| | | this.chartData = response.data.data |
| | | this.loading = false |
| | | this.queryButton = false |
| | | if (response.data.data.length == 0) { |
| | | this.isNoData = true |
| | | return |
| | | } |
| | | // åææ°æ®ä¸çææ©æ¶é´ |
| | | 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) |
| | | this.setChart() |
| | | |
| | | // æçº¿å¾æ°æ® |
| | | let temp = index.calBillData(this.chartData, begin, end) |
| | | this.bill.min = temp['min'] |
| | | this.bill.max = temp['max'] |
| | | |
| | | this.bill.avg = temp['avg'] |
| | | this.bill.online = temp['online'] |
| | | this.bill.valid = temp['valid'] |
| | | this.bill.exceeding = temp['exceeding'] |
| | | }) |
| | | }, |
| | | // ä¼ä¸å¼å¸¸ç»è®¡æ°æ® |
| | | fetchExceptionAnalysisData() { |
| | | exceptionApi |
| | | .exceptiondata1({ |
| | | siteName: this.form.name, |
| | | beginTime: this.form.beginTime, |
| | | endTime: this.form.endTime |
| | | }) |
| | | .then((res) => { |
| | | let obj = index.calRecur(res.data.data) |
| | | this.bill.exceptionRecurrence = obj['exceptionRecurrence'] |
| | | this.bill.exceptionTypeAggregation = obj['exceptionTypeAggregation'] |
| | | this.bill.exception = obj['exception'] |
| | | this.bill.mutationCount = obj['mutationCount'] |
| | | this.bill.exceedingNearCount = obj['exceedingNearCount'] |
| | | this.bill.exceedingCriticalDegree = obj['exceedingCriticalDegree'] |
| | | }) |
| | | }, |
| | | |
| | | // éæ©å
¶ä»å¼ç±»åæ¶ |
| | | setChart() { |
| | | if (this.chartData.length) { |
| | | // æå»ºæçº¿å¾x,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é£é©æåæ¸
å |
| | | async getRiskRank() { |
| | | let response = await riskApi.queryRiskValue('', this.month, 'month') |
| | | |
| | | let tableData = riskValue.backComprehensiveRiskTableData(response.data.data) |
| | | |
| | | 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') |
| | | }) |
| | | // ä¿åé£é©å¼æé«çç«ç¹åç§°å设å¤ç¼å· |
| | | 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ï¼ å¯¹è±¡æ°ç»ï¼è¿åçæ°é |
| | | */ |
| | | getTopRiskData(arr, num) { |
| | | // æç
§riskValueéåºæå |
| | | arr.sort((a, b) => b.riskValue - a.riskValue) |
| | | // è·åånum个å
ç´ |
| | | return arr.slice(0, num) |
| | | }, |
| | | /** |
| | | * æ ¹æ®è®¾å¤ç¼å·æ¥è¯¢ç«ç¹åºæ¬ä¿¡æ¯ |
| | | * @paramï¼ è®¾å¤ç¼å· |
| | | */ |
| | | getSiteInfo(mnCode) { |
| | | siteInfo.querySiteInfoByMnCode(mnCode).then((response) => { |
| | | this.siteInfo = response.data.data[0] |
| | | }) |
| | | }, |
| | | |
| | | openDetail() { |
| | | const encodedSiteName = encodeURIComponent(this.form.name) |
| | | const timeType = '1' |
| | | const jumpPage = '2' |
| | | this.$router.push(`/exceptionDetail/${encodedSiteName}/${this.month}/${timeType}/${jumpPage}`) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <el-form :inline="true" :model="form"> |
| | | <el-form-item class="form-item"> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | | |
| | | <el-form-item class="form-item"> |
| | | <InputSearch |
| | | :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 v-show="showAll"> |
| | | <MonthSelect @submit-value="giveMonth"></MonthSelect> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item v-show="showAll"> |
| | | <ButtonClick |
| | | content="é£é©è¯ä¼°" |
| | | type="primary" |
| | | :loading="queryButton" |
| | | @do-search="riskAssessment" |
| | | ></ButtonClick> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <div v-loading="screenLoading" class="wait-name"> |
| | | <div class="chart-container" v-show="!isNoData && !screenLoading"> |
| | | <el-card class="time-text"> |
| | | <h4>{{ form.name }}</h4> |
| | | |
| | | <br /> |
| | | <br /> |
| | | <span>æ°æ®ç»è®¡æ¶æ®µï¼{{ form.beginTime }} ~ {{ form.endTime }}</span> |
| | | <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> |
| | | </el-card> |
| | | |
| | | <el-row :gutter="10"> |
| | | <el-col :span="5" v-show="showAll"> |
| | | <el-card shadow="never" class="table-class"> |
| | | <el-table |
| | | ref="table" |
| | | :highlight-current-row="true" |
| | | :data="top_10_sites_with_risk_values" |
| | | :default-sort="{ prop: 'riskValue', order: 'descending' }" |
| | | height="540" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | fixed |
| | | width="52" |
| | | show-overflow-tooltip |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | prop="siteName" |
| | | label="ç¹ä½åç§°" |
| | | show-overflow-tooltip |
| | | width="99" |
| | | align="center" |
| | | > |
| | | <template #default="{ row }"> |
| | | <el-button |
| | | type="primary" |
| | | text |
| | | class="table-button" |
| | | @click="querySiteStaticsInfo(row)" |
| | | > |
| | | <span class="risk-rank-site"> |
| | | {{ row.siteName }} |
| | | </span> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="riskValue" |
| | | label="é£é©å¼" |
| | | sortable |
| | | show-overflow-tooltip |
| | | align="center" |
| | | /> |
| | | </el-table> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="11"> |
| | | <el-card shadow="never" class="table-class"> |
| | | <DustRadarChart |
| | | :name="[ |
| | | 'æ°æ®ææé£é©', |
| | | 'å¼å¸¸å¤ç°é£é©', |
| | | 'å¼å¸¸ç±»åèéé£é©', |
| | | 'è¶
æ å¼å¸¸é£é©', |
| | | 'æ°æ®å¨çº¿é£é©' |
| | | ]" |
| | | :yData="exceptionRisk" |
| | | ></DustRadarChart> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :span="4"> |
| | | <el-card shadow="never" class="card-height risk-card"> |
| | | <template #header> |
| | | <h1 |
| | | :class="{ |
| | | 'weightColor-low': weight < 0.15, |
| | | 'weightColor-medium': weight >= 0.15 && weight <= 0.6, |
| | | 'weightColor-heigh': weight > 0.6 |
| | | }" |
| | | > |
| | | é£é©å¼(0~1)ï¼{{ weight }} |
| | | </h1> |
| | | </template> |
| | | <div class="risk-text-container"> |
| | | <div class="risk-grade"> |
| | | <h1 class="sub-title">é£é©ç级ï¼</h1> |
| | | <span class="sub-title">{{ riskGradeAndAdvice.riskGrade }} </span> |
| | | </div> |
| | | |
| | | <div class="risk-advice"> |
| | | <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.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color medium"></div> |
| | | <div>ä¸é£é©(0.15~0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block-color low"></div> |
| | | <div>ä½é£é©(ï¼0.15)</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> |
| | | |
| | | <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 }}% </el-form-item> |
| | | <el-form-item label="æ°æ®å¨çº¿çï¼"> {{ bill.valid }}% </el-form-item> |
| | | <el-form-item label="æ°æ®è¶
æ çï¼"> {{ bill.exceeding }}% </el-form-item> |
| | | <el-form-item label="å¼å¸¸ç±»åèé度ï¼"> |
| | | {{ exceptionRisk.exceptionTypeAggregation * 100 }}% |
| | | </el-form-item> |
| | | <el-tag :size="small">å
±åºç°äº{{ bill.exception.length }}ç±»å¼å¸¸</el-tag> |
| | | <el-form-item label="å
¸åå¼å¸¸å¤ç°çï¼"> |
| | | {{ exceptionRisk.typicalExceptionRepetitionRate * 100 }}% |
| | | </el-form-item> |
| | | <div> |
| | | <el-tag :size="small">é级çªåå¼å¸¸:{{ bill.mutationCount }}æ¡</el-tag> |
| | | </div> |
| | | |
| | | <div> |
| | | <el-tag :size="small">临è¿è¶
æ å¼å¸¸:{{ bill.exceedingNearCount }}æ¡</el-tag> |
| | | </div> |
| | | |
| | | <div> |
| | | <el-tag :size="small" |
| | | >忥è¶
æ æ¬¡æ°ä¸´çå¼å¸¸:{{ bill.exceedingCriticalDegree }}æ¡</el-tag |
| | | > |
| | | </div> |
| | | </el-form> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-card shadow="never" class="card-value"> |
| | | <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="chartData3" |
| | | yName="%" |
| | | seriesName="æ¥ææç" |
| | | :areaColor="areaColor" |
| | | > |
| | | </LineChart> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | <el-empty description="ææ æ°æ®" v-show="isNoData" :image-size="200" /> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .el-form { |
| | | margin: 10px; |
| | | } |
| | | .form-item { |
| | | margin-top: 10px; |
| | | } |
| | | .chart-container { |
| | | margin-left: 10px; |
| | | } |
| | | .time-text { |
| | | font-size: 14px; |
| | | color: #333333; |
| | | letter-spacing: 1px; |
| | | } |
| | | .el-card { |
| | | margin-top: 15px; |
| | | border-radius: 9px; |
| | | } |
| | | .chart-container { |
| | | width: 98%; |
| | | /* height: 600px; */ |
| | | } |
| | | |
| | | .card-height { |
| | | height: 570px; |
| | | } |
| | | .el-header { |
| | | background-color: #010408; |
| | | color: #333; |
| | | line-height: 60px; |
| | | } |
| | | .risk-advice { |
| | | /* margin: 20px 0px; */ |
| | | } |
| | | .container { |
| | | display: flex; |
| | | margin-bottom: 10px; |
| | | } |
| | | .grade-instance { |
| | | /* margin-top: 50px; */ |
| | | } |
| | | .block-color { |
| | | width: 1em; |
| | | height: 1em; |
| | | margin-right: 10px; |
| | | margin-top: 3px; |
| | | } |
| | | .heigh { |
| | | background-color: red; |
| | | } |
| | | .medium { |
| | | background-color: #fadc19; |
| | | } |
| | | .low { |
| | | background-color: #9fdb1d; |
| | | } |
| | | |
| | | .el-text { |
| | | align-self: left; |
| | | } |
| | | .el-form-item { |
| | | margin-bottom: 20px; |
| | | } |
| | | :deep().el-form-item__content { |
| | | justify-content: flex-end; |
| | | } |
| | | .title-16 { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | .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; |
| | | } |
| | | :deep().el-table__header-wrapper { |
| | | color: red; |
| | | } |
| | | /* .wait-name { |
| | | width: 500px; |
| | | height: 600px; |
| | | } */ |
| | | .table-class { |
| | | /* border: 1px solid blue; */ |
| | | /* margin: 20px 0px 20px 0px; */ |
| | | height: 570px; |
| | | } |
| | | |
| | | .table-button { |
| | | letter-spacing: 1px; |
| | | text-decoration: underline; |
| | | /* border-radius: 0px; */ |
| | | } |
| | | .risk-rank-site { |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | width: 80px; |
| | | } |
| | | .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; |
| | | } |
| | | |
| | | .el-tag { |
| | | margin-left: 25px; |
| | | font-size: 14px; |
| | | vertical-align: baseline; |
| | | } |
| | | .exception-button { |
| | | vertical-align: baseline; |
| | | margin-left: 150px; |
| | | } |
| | | |
| | | .site-info-detail { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .mx-1 { |
| | | margin-left: 100px; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | |
| | | initRadarChart() { |
| | | this.chart = echarts.init(document.getElementById('main')); |
| | | }, |
| | |
| | | <!--ç¹å»ç«ç¹ 跳转è³é£é©æ¨¡åé¡µé¢ --> |
| | | <script> |
| | | import CompFlightInspection from '@/views/exception/components/CompFlightInspection.vue' |
| | | import CompDataRiskModel from '@/views/risk_assessment/components/CompDataRiskModel.vue' |
| | | |
| | | export default { |
| | | components: { |
| | | CompFlightInspection |
| | | CompFlightInspection, |
| | | CompDataRiskModel |
| | | }, |
| | | data() { |
| | | return { |
| | | siteName: '', |
| | | month: '', |
| | | time: '', |
| | | // æ¶é´ç±»å |
| | | timeType: '', |
| | | // 1代表é£é©æ¨¡å 2代表é£è¡å·¡æ£ |
| | | jumpPage: -1 |
| | | } |
| | | }, |
| | | watch: {}, |
| | |
| | | next((vm) => { |
| | | // éè¿ `vm` 访é®ç»ä»¶å®ä¾ |
| | | vm.siteName = to.params.siteName |
| | | vm.month = to.params.month |
| | | vm.$nextTick(() => { |
| | | }) |
| | | vm.time = to.params.time |
| | | vm.timeType = to.params.timeType |
| | | vm.jumpPage = to.params.jumpPage |
| | | |
| | | vm.$nextTick(() => {}) |
| | | }) |
| | | }, |
| | | methods: { |
| | |
| | | <template> |
| | | <el-page-header @back="onBack"> |
| | | <template #content> |
| | | <span> å¼å¸¸è¯¦æ
</span> |
| | | <span v-if="jumpPage == '1'"> é£é©æ¨¡å </span> |
| | | <span v-else-if="jumpPage == '2'"> å¼å¸¸è¯¦æ
</span> |
| | | </template> |
| | | </el-page-header> |
| | | |
| | | <CompFlightInspection :site-name="siteName" :month="month" :show-all="false"> </CompFlightInspection> |
| | | <div v-show="jumpPage == '1'"> |
| | | <CompDataRiskModel :site-name="siteName" :time="time" :show-all="false"></CompDataRiskModel> |
| | | </div> |
| | | |
| | | <div v-show="jumpPage == '2'"> |
| | | <CompFlightInspection |
| | | :site-name="siteName" |
| | | :time="time" |
| | | :time-type="timeType" |
| | | :show-all="false" |
| | | > |
| | | </CompFlightInspection> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | |
| | | <script> |
| | | // import InputSearch from '@/sfc/InputSearch.vue' |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' |
| | | import DustRadarChart from '@/views/risk_assessment/components/DustRadarChart.vue' |
| | | import exceptionApi from '@/api/exceptionApi.js' |
| | | |
| | | import DustRadarChart from '@/views/risk_assessment/components/DustRadarChart.vue' |
| | | import LineChart from '@/views/risk_assessment/components/LineChart.vue' |
| | | import index from '@/utils/risk_estimate_common_function/index.js' |
| | | import ButtonClick from '@/sfc/ButtonClick.vue' |