From c2f95b0b9090a2394b5b068582b932a5e57b86aa Mon Sep 17 00:00:00 2001 From: zmc <zmc_li@foxmail.com> Date: 星期二, 05 九月 2023 18:19:37 +0800 Subject: [PATCH] 雷达图 新增综合风险排名 数据接入配置 --- src/views/line_graph/SiteComprehensiveRskRanking.vue | 271 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 258 insertions(+), 13 deletions(-) diff --git a/src/views/line_graph/SiteComprehensiveRskRanking.vue b/src/views/line_graph/SiteComprehensiveRskRanking.vue index fccc0d1..cf6130c 100644 --- a/src/views/line_graph/SiteComprehensiveRskRanking.vue +++ b/src/views/line_graph/SiteComprehensiveRskRanking.vue @@ -1,25 +1,270 @@ <script> - export default { - data() { - return{ +import TimeSelectWithShortCuts from '@/sfc/TimeSelectWithShortCuts.vue'; +import InputSearch from '@/sfc/InputSearch.vue'; +import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue'; +import exceptionApi from '@/api/exceptionApi.js'; +import {useCommonFunction} from '../../utils/common.js'; +import index from '@/utils/risk_estimate_common_function/index.js' +import dayjs from 'dayjs'; +export default { + components: { + TimeSelectWithShortCuts, + AreaAndmonitorType, + InputSearch + }, + data() { + return { + // 褰撳墠椤� + currentPage: 1, + // 姣忛〉鏉℃暟 + pageSize: 20, + total: 0, + // 琛ㄦ牸鏁版嵁 + tableData: [], + isNoData: false, + loading: false, + form: { + // 绔欑偣鍚嶇О + name: '', + // 寮�濮嬫椂闂� + beginTime: '', + // 缁撴潫鏃堕棿 + endTime: '' + }, + bill: { + min: '', + max: '', + avg: '', + online: '', + valid: '', + exceeding: '', + + // 鍏稿瀷寮傚父澶嶇幇鐜� + exceptionRecurrence: '', + // 寮傚父绫诲瀷鎹仛闆嗗害 + exceptionTypeAggregation: '', + }, + // { + // siteName:'', + // region:'', + // monitorType:'', + // riskValue:'', + // riskGrage:'', + // riskAdvice:'', + // beginTime:'', + // endTime:'', + // } + table:[] + }; + }, + setup(){ + // 寮曞叆 鐧惧垎鍙锋瘮杈冨ぇ灏� 瀵煎嚭鍔熻兘 + const {exportToExcel} = useCommonFunction() + return {exportToExcel} + }, + + computed: { + weight() { + return ( + (100 - this.bill.online) * 0.1 + + (100 - this.bill.valid) * 0.2 + + this.bill.exceeding * 0.2 + + this.bill.exceptionTypeAggregation * 0.2 + + this.bill.exceptionRecurrence * 0.3 + ).toFixed(2); + } + }, + watch:{ + weight(){ + this.table[0].riskValue = this.weight + } + }, + methods: { + /** + * 灏嗕腑鍥芥爣鍑嗘椂闂磋浆涓烘寚瀹氭牸寮� + * @param锛� + * @returns锛� + */ + giveTime(val) { + //灏嗕腑鍥芥爣鍑嗘椂闂磋浆涓烘寚瀹氭牸寮�(璇ョ粍浠惰繑鍥炵殑鏍囧噯鏃堕棿鐨勬牸寮忥紝鎵�浠ュ繀椤荤殑鍔犺繖涓嚱鏁�) + this.form.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss'); + this.form.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss'); + }, + // 鐐瑰嚮灞曠ず鎸夐挳 + fetchData() { + + 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; + exceptionApi + .analysisdata(this.form.name, this.form.beginTime, this.form.endTime) + .then((response) => { + this.chartData = response.data.data; + this.loading = false; + if (response.data.data.length == 0) { + this.isNoData = true; + return; + } + // 绉婚櫎绌烘暟鎹姸鎬� + this.isNoData = false; + let temp = index.calBillData(this.chartData,this.form.beginTime,this.form.endTime); + 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']; + + this.begin = this.chartData[0].lst; + this.end = this.chartData[this.chartData.length - 1].lst; + const tempObj = {} + tempObj.region = '閲戝北鍖�' + tempObj.monitorType = '鎵皹' + tempObj.siteName = this.form.name + tempObj.beginTime = this.form.beginTime + tempObj.endTime = this.form.endTime + + // this.table[0].region = '閲戝北鍖�' + // this.table[0].monitorType = '鎵皹' + // this.table[0].siteName = this.form.name + // this.table[0].beginTime = this.form.beginTime + // this.table[0].endTime = this.form.endTime + + if(this.weight>=0.6){ + tempObj.riskGrage = '楂橀闄�' + tempObj.riskAdvice = '寤鸿瀵硅绔欑偣杩涜绾夸笅鎵ф硶妫�鏌ワ紝涓撻」鏁版嵁瀵规瘮' + // this.table[0].riskGrage = '楂橀闄�' + // this.table[0].riskAdvice = '寤鸿瀵硅绔欑偣杩涜绾夸笅鎵ф硶妫�鏌ワ紝涓撻」鏁版嵁瀵规瘮' + }else if(this.weight<0.6 && this.weight>=0.2){ + tempObj.riskGrage = '涓闄�' + tempObj.riskAdvice = '寤鸿寮�灞曞父鎬佽拷韪垎鏋�' + // this.table[0].riskGrage = '涓闄�' + // this.table[0].riskAdvice = '寤鸿寮�灞曞父鎬佽拷韪垎鏋�' + }else { + tempObj.riskGrage = '浣庨闄�' + tempObj.riskAdvice = '寤鸿寮曞浼佷笟闀挎�佷繚鎸�' + // this.table[0].riskGrage = '浣庨闄�' + // this.table[0].riskAdvice = '寤鸿寮曞浼佷笟闀挎�佷繚鎸�' + } + this.table.push(tempObj) + }); }, - mounted() { + + // 浼佷笟寮傚父璇︽儏 + exceptiondataCount() { + 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']; + }); + }, + + /** + * 鍒濆鍔犺浇鍑芥暟 + */ + fetch() { + // 鍒嗘瀽鏁版嵁 + this.fetchData(); + // 寮傚父鏁版嵁 + this.exceptiondataCount(); + }, + + /** + * 瀵煎嚭涓篍xcel + + */ + exportData(){ + if(this.table.length!=0){ + const tableColumns = ['siteName','region','monitorType','riskValue','riskGrage','riskAdvice','beginTime','endTime'] + const excelColumns = [['A1','绔欑偣鍚嶇О'], + ['B1','鍖哄煙'],['C1','鐩戞祴绫诲瀷'],['D1','椋庨櫓鍊�'], + ['E1','椋庨櫓绛夌骇'],['F1','绠℃帶鎺柦'],['G1','寮�濮嬫棩鏈�'], + ['H1','缁撴潫鏃ユ湡']] + + this.exportToExcel(this.table,tableColumns,excelColumns,'缁煎悎椋庨櫓鎺掑悕.xlsx') + } }, - methods: { - } -} + } +}; </script> <template> - <div> -绔欑偣缁煎悎椋庨櫓鎺掑悕 - </div> + <el-row> + <el-row> + <el-form :inline="true" :model="form"> + <el-form-item> + <AreaAndmonitorType></AreaAndmonitorType> + </el-form-item> + <el-form-item> + <InputSearch + isNeedDefaultSite="1" + @submit-value="(n) => (form.name = n)" + ></InputSearch> + </el-form-item> + <el-form-item> + <TimeSelectWithShortCuts + @submit-time="giveTime" + ></TimeSelectWithShortCuts> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="fetch">椋庨櫓鎺掑悕</el-button> + <el-button type="warning" @click="exportData">瀵煎嚭</el-button> + </el-form-item> + </el-form> + </el-row> + </el-row> + + <el-table + :data="table" + height="600px" + style="width: 100%" + v-loading="loading" + :cell-class-name="tableCellClassName" + > + <el-table-column + type="index" + prop="name" + label="搴忓彿" + :index="indexMethod" + fixed + show-overflow-tooltip + /> + <el-table-column prop="siteName" label="绔欑偣鍚嶇О" show-overflow-tooltip /> + <el-table-column prop="region" label="鍖哄煙" show-overflow-tooltip /> + <el-table-column prop="monitorType" label="妫�娴嬬被鍨�" show-overflow-tooltip /> + <el-table-column prop="riskValue" label="椋庨櫓鍊�" show-overflow-tooltip /> + <el-table-column prop="riskGrage" label="椋庨櫓绛夌骇" show-overflow-tooltip /> + <el-table-column prop="riskAdvice" label="绠℃帶鎺柦" show-overflow-tooltip /> + <el-table-column prop="beginTime" label="寮�濮嬫棩鏈�" show-overflow-tooltip /> + <el-table-column prop="endTime" label="缁撴潫鏃ユ湡" show-overflow-tooltip /> + </el-table> + <el-empty v-show="isNoData" :image-size="200" /> + </template> -<style scoped> - -</style> \ No newline at end of file +<style scoped> +.el-row,.el-table { + margin: 10px 0px 0px 10px +} +.el-table{ + +} +</style> -- Gitblit v1.9.3