From c14643202fff8bc6995aa9c54196ef994c9e53e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B2=E4=B9=88=E4=BA=86?= Date: Mon, 26 Feb 2024 19:29:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E9=99=8D=E5=B9=85=E5=80=BC=E6=A6=82?= =?UTF-8?q?=E7=8E=87=E5=88=86=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/event-boot/monitor.ts | 28 ++ .../zanjiangfuzhigailvfenbu/index.vue | 353 +++++------------- 2 files changed, 128 insertions(+), 253 deletions(-) diff --git a/src/api/event-boot/monitor.ts b/src/api/event-boot/monitor.ts index a04c2094..46cc4b42 100644 --- a/src/api/event-boot/monitor.ts +++ b/src/api/event-boot/monitor.ts @@ -61,4 +61,32 @@ export function getStatistic(data: any) { method: 'post', data }) +} + +// 暂降分布统计 右 获取数据 +export function getProbabilityDistribution(data: any) { + return request({ + url: '/event-boot/monitor/getProbabilityDistribution', + method: 'post', + data + }) +} + +// 事件分析 获取数据 +export function getMonitorEventAnalyseQuery(data: any) { + return request({ + url: '/event-boot/monitor/getMonitorEventAnalyseQuery', + method: 'post', + data + }) +} + +// 事件分析 下载 +export function downloadMonitorEventWaveFile(data: any) { + return request({ + url: '/event-boot/monitor/downloadMonitorEventWaveFile', + method: 'post', + data: data.lineId, + responseType: 'blob' + }) } \ No newline at end of file diff --git a/src/views/pms/voltageSags/monitoringPoint/online/eventStatistics/zanjiangfuzhigailvfenbu/index.vue b/src/views/pms/voltageSags/monitoringPoint/online/eventStatistics/zanjiangfuzhigailvfenbu/index.vue index e8a462ba..689bbec6 100644 --- a/src/views/pms/voltageSags/monitoringPoint/online/eventStatistics/zanjiangfuzhigailvfenbu/index.vue +++ b/src/views/pms/voltageSags/monitoringPoint/online/eventStatistics/zanjiangfuzhigailvfenbu/index.vue @@ -8,17 +8,6 @@ 查询 - - {{ data.name }} - {{ data.gs }} - {{ data.krr }} - {{ data.bkrr }} -
@@ -29,7 +18,7 @@ import { nextTick, onMounted, reactive, ref } from 'vue' import DatePicker from '@/components/form/datePicker/index.vue' import MyEchart from '@/components/echarts/MyEchart.vue' import { useMonitoringPoint } from '@/views/pms/voltageSags/monitoringPoint/online/store' -import { getPlot } from '@/api/event-boot/monitor' +import { getProbabilityDistribution } from '@/api/event-boot/monitor' const datePickerRef = ref() const monitoringPoint = useMonitoringPoint() @@ -39,37 +28,43 @@ const formData = reactive({ startTime: '', endTime: '' }) -const data = reactive({ - name: '事件个数', - gs: 0, - krr: 0, - bkrr: 0 -}) const options = ref({}) const init = () => { loading.value = true formData.startTime = datePickerRef.value.timeValue[0] formData.endTime = datePickerRef.value.timeValue[1] - getPlot(formData).then( + getProbabilityDistribution(formData).then( (res: any) => { - const gongData = gongfunction(res.data.voltageToleranceCurveDataList) - data.gs = res.data.voltageToleranceCurveDataList.length - data.krr = gongData.pointI.length - data.bkrr = gongData.pointIun.length - console.log(gongData) + let data = res.data + let eventValue = data.eventvalue + let pereventValue = data.pereventvalue options.value = { - // backgroundColor: "#f9f9f9", //地图背景色深蓝 + backgroundColor: '#fff', //背景色, title: { - text: `SEMI F47曲线` + text: '暂降幅值的概率分布函数', + x: 'center' }, legend: { - data: ['上限', '下限', '可容忍事件', '不可容忍事件'], - x: 'left' - }, - tooltip: { - trigger: 'item', show: true, + left: 10, + data: ['概率分布', '占比'], + + textStyle: { + rich: { + a: { + verticalAlign: 'middle' + } + }, + + padding: [2, 0, 0, 0] //[上、右、下、左] + } + }, + + tooltip: { + //提示框组件 + trigger: 'axis', + axisPointer: { type: 'shadow', label: { @@ -84,83 +79,93 @@ const init = () => { fontSize: 14 }, backgroundColor: 'rgba(0,0,0,0.35)', - borderWidth: 0, - formatter: function(a: any) { - var relVal = '' - relVal = - '发生时间:' + - a.value[2] + - '
' - relVal += - '持续时间:' + - a.value[0] + - 's
' - relVal += - '特征幅值:' + - a.value[1].toFixed(2) + - '%' - return relVal - } + borderWidth: 0 }, + calculable: true, xAxis: [ { - type: 'log', - min: 0.001, - max: 1000, - splitLine: { - show: false + type: 'category', + name: '暂降幅值', + nameGap: 10, + nameTextStyle: { + fontSize: 12 }, - name: 's' + data: [ + '0', + '10%', + '20%', + '30%', + '40%', + '50%', + '60%', + '70%', + '80%', + '90%', + '100%' + ] } ], yAxis: [ { type: 'value', - max: function(value: any) { - return value.max + 20 + name: '概率分布', + nameTextStyle: { + fontSize: 15 }, - splitNumber: 10, - minInterval: 0.1, - name: '%' + axisLabel: { + formatter: '{value}%' + }, + axisLine: { + show: true + }, + splitLine: { + lineStyle: { + // 使用深浅的间隔色 + type: 'dashed', + opacity: 0.5 + } + } + }, + { + type: 'value', + name: '占比', + + nameTextStyle: { + fontSize: 15 + }, + axisLine: { + show: true + }, + + splitLine: { + lineStyle: { + type: 'dashed', + opacity: 0.5 + } + } } ], - options: { - dataZoom: null, - series: [ - { - name: '边界线', - type: 'line', - data: [ - [0.05, 0], - [0.05, 50], - [0.2, 50], - [0.2, 70], - [0.5, 70], - [0.5, 80], - [10, 80], - [1000, 80] - ], - showSymbol: false, - tooltips: { - show: false - } - }, - { - name: '可容忍事件', - type: 'scatter', - symbol: 'circle', - data: gongData.pointI - }, - { - name: '不可容忍事件', - type: 'scatter', - symbol: 'circle', - data: gongData.pointIun + series: [ + { + name: '概率分布', + type: 'line', + data: eventValue, + itemStyle: { + normal: { show: true } } - ] + }, + { + name: '占比', + type: 'bar', + data: pereventValue, + barWidth: 30, + itemStyle: { + normal: { show: true } + } + } + ], + options:{ + dataZoom: null, } } nextTick(() => { @@ -170,164 +175,6 @@ const init = () => { ) } -function gongfunction(arr: any) { - let standI = 0 - let unstandI = 0 - let standF = 0 - let unstandF = 0 - let total = 0 - let pointIun = [] - let pointI = [] - let pointF = [] - let pointFun = [] - total = arr.length - if (total == 0) { - } else { - for (let i = 0; i < arr.length; i++) { - let point = [] - let xx = arr[i].persistTime - let yy = arr[i].eventValue - let time = arr[i].time - let eventId = arr[i].eventId - // let index =arr[i].eventDetailIndex; - point = [xx, yy, time, eventId] - - if (xx <= 0.003) { - let line = 0 - line = 250 - 30000 * xx - if (yy > line) { - unstandI++ - pointIun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } else { - standI++ - pointI.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } - } else if (xx <= 0.02) { - if (yy > 120) { - unstandI++ - pointIun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } else { - standI++ - pointI.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } - } else if (xx <= 0.5) { - if (yy > 120 || yy < 70) { - unstandI++ - pointIun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } else { - standI++ - pointI.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } - } else if (xx <= 10) { - if (yy > 110 || yy < 80) { - unstandI++ - pointIun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } else { - standI++ - pointI.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } - } else { - if (yy > 110 || yy < 90) { - unstandI++ - pointIun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } else { - standI++ - pointI.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } - } - - if (xx < 0.05) { - standF++ - pointF.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } else if (xx < 0.2) { - if (yy > 50) { - standF++ - pointF.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } else { - unstandF++ - pointFun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } - } else if (xx < 0.5) { - if (yy > 70) { - standF++ - pointF.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } else { - unstandF++ - pointFun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } - } else { - if (yy > 80) { - standF++ - pointF.push({ - value: point, - itemStyle: { normal: { color: 'green' } } - }) - } else { - unstandF++ - pointFun.push({ - value: point, - itemStyle: { normal: { color: 'red' } } - }) - } - } - } - } - return { - standI, - unstandI, - pointI, - pointIun, - standF, - unstandF, - pointF, - pointFun - } -} onMounted(() => { init()