提交 高低电压穿越 页面
This commit is contained in:
10
src/api/event-boot/highAndLowPressure.ts
Normal file
10
src/api/event-boot/highAndLowPressure.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
//获取地图点位数据
|
||||||
|
export function voltageRideThroughEventQueryPage(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/event-boot/voltageRideThrough/voltageRideThroughEventQueryPage',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -12,9 +12,16 @@ export function downloadWaveFile(data: any) {
|
|||||||
// 事件分析 shushiboxi 获取数据
|
// 事件分析 shushiboxi 获取数据
|
||||||
export function getMonitorEventAnalyseWave(data: any) {
|
export function getMonitorEventAnalyseWave(data: any) {
|
||||||
return request({
|
return request({
|
||||||
url: "/event-boot/transient/getTransientAnalyseWave",
|
url: '/event-boot/transient/getTransientAnalyseWave',
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
|
}
|
||||||
|
// 事件分析 根据暂降事件id获取详情
|
||||||
|
export function getTransientDetailById(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/event-boot/rmpEventDetail/getTransientDetailById',
|
||||||
|
method: 'post',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -165,12 +165,19 @@ const GetEchar = async (name: string) => {
|
|||||||
}
|
}
|
||||||
myCharts.value.setOption(option)
|
myCharts.value.setOption(option)
|
||||||
window.addEventListener('resize', resizeHandler)
|
window.addEventListener('resize', resizeHandler)
|
||||||
|
const flag1 = ref(true)
|
||||||
// 点击事件
|
// 点击事件
|
||||||
myCharts.value.off('click')
|
myCharts.value.off('click')
|
||||||
myCharts.value.on('click', (e: any) => {
|
myCharts.value.on('click', (e: any) => {
|
||||||
if (props.options.geo3D) {
|
if (props.options.geo3D) {
|
||||||
|
// emit('clickMap', e)
|
||||||
|
if (flag1.value) {
|
||||||
|
flag1.value = false
|
||||||
|
setTimeout(() => {
|
||||||
emit('clickMap', e)
|
emit('clickMap', e)
|
||||||
|
flag1.value = true
|
||||||
|
}, 100)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// if (name == dictData.state.area?.[0].name && e.componentIndex == 0) {
|
// if (name == dictData.state.area?.[0].name && e.componentIndex == 0) {
|
||||||
if (name == '中国' && e.componentIndex == 0) {
|
if (name == '中国' && e.componentIndex == 0) {
|
||||||
|
|||||||
@@ -46,6 +46,11 @@ export default {
|
|||||||
wp: {
|
wp: {
|
||||||
type: [Object, Array],
|
type: [Object, Array],
|
||||||
},
|
},
|
||||||
|
height: {
|
||||||
|
type: [String,Number],
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -93,6 +98,8 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
if (this.flag == 1) {
|
if (this.flag == 1) {
|
||||||
this.vh = mainHeight(165).height
|
this.vh = mainHeight(165).height
|
||||||
|
}else if( this.height != false){
|
||||||
|
this.vh = this.height
|
||||||
} else {
|
} else {
|
||||||
this.vh = mainHeight(165,2).height
|
this.vh = mainHeight(165,2).height
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,11 @@
|
|||||||
<el-row :gutter="10" class="pd10">
|
<el-row :gutter="10" class="pd10">
|
||||||
<el-col :span="11" style="position: relative">
|
<el-col :span="11" style="position: relative">
|
||||||
<el-card>
|
<el-card>
|
||||||
<el-radio-group v-model="tableStore.table.params.radio" class="group">
|
<el-radio-group
|
||||||
|
v-model="tableStore.table.params.type"
|
||||||
|
class="group"
|
||||||
|
@change="tableStore.index()"
|
||||||
|
>
|
||||||
<el-radio-button label="风电场" value="1" />
|
<el-radio-button label="风电场" value="1" />
|
||||||
<el-radio-button label="光伏电站" value="2" />
|
<el-radio-button label="光伏电站" value="2" />
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@@ -27,23 +31,56 @@
|
|||||||
<el-card>
|
<el-card>
|
||||||
<div class="tall">
|
<div class="tall">
|
||||||
<h3 class="mb10">暂降列表</h3>
|
<h3 class="mb10">暂降列表</h3>
|
||||||
<vxe-table height="auto" auto-resize :data="distributionData" v-bind="defaultAttribute">
|
<div class="tall1">
|
||||||
<vxe-column field="qy" title="风电场 " show-overflow-tooltip></vxe-column>
|
<vxe-table
|
||||||
<vxe-column field="jcd" title="暂降发生时刻"></vxe-column>
|
height="auto"
|
||||||
<vxe-column field="zc" title="暂降(骤升)幅值(%)" sortable></vxe-column>
|
auto-resize
|
||||||
<vxe-column field="zc" title="暂降原因" sortable></vxe-column>
|
:data="distributionData"
|
||||||
<vxe-column field="zc" title="严重度" sortable></vxe-column>
|
v-loading="loading"
|
||||||
|
v-bind="defaultAttribute"
|
||||||
|
>
|
||||||
|
<vxe-column
|
||||||
|
field="newStationName"
|
||||||
|
title="新能源站名称"
|
||||||
|
show-overflow-tooltip
|
||||||
|
></vxe-column>
|
||||||
|
<vxe-column field="startTime" title="暂降发生时刻"></vxe-column>
|
||||||
|
<vxe-column
|
||||||
|
field="featureAmplitude"
|
||||||
|
title="暂降(骤升)幅值(%)"
|
||||||
|
sortable
|
||||||
|
></vxe-column>
|
||||||
|
<vxe-column
|
||||||
|
field="advanceReason"
|
||||||
|
title="暂降原因"
|
||||||
|
sortable
|
||||||
|
:formatter="formFilter"
|
||||||
|
></vxe-column>
|
||||||
|
<vxe-column field="severity" title="严重度" sortable></vxe-column>
|
||||||
<vxe-column title="操作">
|
<vxe-column title="操作">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="text" size="small" link>查看波形</el-button>
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
v-if="row.wavePath != null"
|
||||||
|
size="small"
|
||||||
|
link
|
||||||
|
@click="boxi(row)"
|
||||||
|
>
|
||||||
|
查看波形
|
||||||
|
</el-button>
|
||||||
|
<el-button v-else disabled size="small" link>暂无波形</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="mt10">
|
<el-card class="mt10">
|
||||||
<div class="tall">
|
<div class="tall" v-loading="loading1">
|
||||||
<h3 class="mb10">暂降波形</h3>
|
<h3 class="mb10">暂降波形</h3>
|
||||||
|
<div v-if="wp != null">
|
||||||
|
<rmsboxi :value="1" :height="height" :boxoList="boxoList" :wp="wp" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -58,6 +95,9 @@ import { useDictData } from '@/stores/dictData'
|
|||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import MyEchartMap from '@/components/echarts/MyEchartMap.vue'
|
import MyEchartMap from '@/components/echarts/MyEchartMap.vue'
|
||||||
import TableStore from '@/utils/tableStore'
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import { voltageRideThroughEventQueryPage } from '@/api/event-boot/highAndLowPressure'
|
||||||
|
import { getMonitorEventAnalyseWave, getTransientDetailById } from '@/api/event-boot/transient'
|
||||||
|
import rmsboxi from '@/components/echarts/rmsboxi.vue'
|
||||||
import { ref, onMounted, provide } from 'vue'
|
import { ref, onMounted, provide } from 'vue'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
@@ -65,36 +105,34 @@ defineOptions({
|
|||||||
})
|
})
|
||||||
const EchartMap = ref()
|
const EchartMap = ref()
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const options = dictData.getBasicData('Statistical_Type', ['Report_Type'])
|
const reason = dictData.getBasicData('Event_Reason')
|
||||||
const echartMapList: any = ref({})
|
const echartMapList: any = ref({})
|
||||||
const titleA = ref('')
|
|
||||||
const header = ref()
|
const header = ref()
|
||||||
const distributionData: any = ref([])
|
const distributionData: any = ref([])
|
||||||
|
const loading = ref(false)
|
||||||
|
const loading1 = ref(false)
|
||||||
|
const boxoList = ref(null)
|
||||||
|
const wp = ref(null)
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
url: '/event-boot/voltageRideThrough/view',
|
url: '/event-boot/voltageRideThrough/view',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [],
|
column: [],
|
||||||
beforeSearchFun: () => {
|
beforeSearchFun: () => {
|
||||||
tableStore.table.params.areaId = tableStore.table.params.deptIndex
|
tableStore.table.params.areaId = tableStore.table.params.deptIndex
|
||||||
tableStore.table.params.type =tableStore.table.params.radio
|
|
||||||
},
|
},
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
titleA.value = tableStore.table.params.statisticalType.name
|
|
||||||
header.value.areaRef.change()
|
|
||||||
// 处理地图数据
|
// 处理地图数据
|
||||||
map(tableStore.table.data)
|
map(tableStore.table.data)
|
||||||
tabulation(tableStore.table.data)
|
// tabulation(tableStore.table.data)
|
||||||
EchartMap.value.GetEchar(header.value.areaRef.areaName)
|
EchartMap.value.GetEchar(header.value.areaRef.areaName)
|
||||||
|
if (tableStore.table.data.length > 0) {
|
||||||
|
tabulation({ data: tableStore.table.data[0], seriesName: '高压' })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const height = mainHeight(200, 4).height
|
||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
tableStore.table.params.radio = '1'
|
tableStore.table.params.type = '1'
|
||||||
// tableStore.table.params.deptIndex = dictData.state.area[0].id
|
|
||||||
tableStore.table.params.statisticalType = dictData.getBasicData('Statistical_Type', ['Report_Type'])[0]
|
|
||||||
tableStore.table.params.monitorFlag = 2
|
|
||||||
tableStore.table.params.powerFlag = 2
|
|
||||||
tableStore.table.params.serverName = 'event-boot'
|
|
||||||
|
|
||||||
// 地图点击事件
|
// 地图点击事件
|
||||||
const getRegionByRegion = (list: any) => {
|
const getRegionByRegion = (list: any) => {
|
||||||
@@ -129,7 +167,7 @@ const map = (res: any) => {
|
|||||||
},
|
},
|
||||||
geo3D: {
|
geo3D: {
|
||||||
show: true,
|
show: true,
|
||||||
name: '浙江',
|
// name: '浙江',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: getComputedStyle(document.documentElement).getPropertyValue('--el-color-primary-light-3'),
|
color: getComputedStyle(document.documentElement).getPropertyValue('--el-color-primary-light-3'),
|
||||||
borderWidth: 1,
|
borderWidth: 1,
|
||||||
@@ -147,18 +185,18 @@ const map = (res: any) => {
|
|||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
show: true,
|
show: true,
|
||||||
color: '#fff',
|
color: '#000',
|
||||||
fontSize: 16,
|
fontSize: 14,
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff',
|
color: '#000',
|
||||||
|
|
||||||
backgroundColor: '#fff'
|
backgroundColor: '#000'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data: [
|
data: [
|
||||||
{ name: '目标数', field: 'mbs', unit: '万人' },
|
{ name: '低压', field: 'lowPressure', unit: '次' },
|
||||||
{ name: '完成数', field: 'wcs', unit: '万人' }
|
{ name: '高压', field: 'highPressure', unit: '次' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
@@ -175,42 +213,14 @@ const map = (res: any) => {
|
|||||||
return params.value[2] || ''
|
return params.value[2] || ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: [
|
|
||||||
{
|
data: res.map((item: any) => {
|
||||||
adcode: 330100,
|
return {
|
||||||
name: '沈阳',
|
...item,
|
||||||
wcs: 10,
|
value: [item.lng, item.lat, item.lowPressure]
|
||||||
mbs: 50,
|
|
||||||
wcl: 100,
|
|
||||||
value: [123.364125, 41.722823, 50, '']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
adcode: 330200,
|
|
||||||
name: '葫芦岛',
|
|
||||||
wcs: 10,
|
|
||||||
mbs: 20,
|
|
||||||
wcl: 80,
|
|
||||||
value: [120.80488, 40.816372, 20, '']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
adcode: 330300,
|
|
||||||
name: '本溪',
|
|
||||||
wcs: 10,
|
|
||||||
mbs: 30,
|
|
||||||
wcl: 100,
|
|
||||||
value: [124.024811, 41.428257, 30, '']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
adcode: 330400,
|
|
||||||
name: '大连',
|
|
||||||
lng: '120.750865',
|
|
||||||
lat: '30.662653',
|
|
||||||
wcs: 10,
|
|
||||||
mbs: 40,
|
|
||||||
wcl: 100,
|
|
||||||
value: [121.57391, 38.947468, 40, '']
|
|
||||||
}
|
}
|
||||||
],
|
}),
|
||||||
|
// data:[],
|
||||||
barSize: 1,
|
barSize: 1,
|
||||||
minHeight: 1,
|
minHeight: 1,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
@@ -233,41 +243,25 @@ const map = (res: any) => {
|
|||||||
return params.value[2] || ''
|
return params.value[2] || ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: [
|
|
||||||
{
|
|
||||||
adcode: 330100,
|
|
||||||
name: '沈阳',
|
|
||||||
wcs: 10,
|
|
||||||
mbs: 50,
|
|
||||||
wcl: 100,
|
|
||||||
value: [123.464125, 41.722823, 50, '']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
adcode: 330200,
|
|
||||||
name: '葫芦岛',
|
|
||||||
wcs: 10,
|
|
||||||
mbs: 20,
|
|
||||||
wcl: 80,
|
|
||||||
value: [120.90488, 40.816372, 20, '']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
adcode: 330300,
|
|
||||||
name: '本溪',
|
|
||||||
wcs: 10,
|
|
||||||
mbs: 30,
|
|
||||||
wcl: 100,
|
|
||||||
value: [124.124811, 41.428257, 30, '']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
adcode: 330400,
|
|
||||||
name: '大连',
|
|
||||||
|
|
||||||
wcs: 10,
|
data: res.map((item: any) => {
|
||||||
mbs: 40,
|
return {
|
||||||
wcl: 100,
|
...item,
|
||||||
value: [121.67391, 38.947468, 40, '']
|
value: [item.lng - 0.07, item.lat, item.highPressure]
|
||||||
}
|
}
|
||||||
],
|
}),
|
||||||
|
// [
|
||||||
|
|
||||||
|
// {
|
||||||
|
// adcode: 330400,
|
||||||
|
// name: '大连',
|
||||||
|
|
||||||
|
// wcs: 10,
|
||||||
|
// mbs: 40,
|
||||||
|
// wcl: 100,
|
||||||
|
// value: [121.67391, 38.947468, 40, '']
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
barSize: 1,
|
barSize: 1,
|
||||||
minHeight: 1,
|
minHeight: 1,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
@@ -282,22 +276,66 @@ const map = (res: any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表格数据处理
|
|
||||||
const tabulation = (res: any) => {
|
|
||||||
distributionData.value = []
|
|
||||||
for (var i = 0; i < res.areaValue.length; i++) {
|
|
||||||
distributionData.value.push({
|
|
||||||
qy: res.areaValue[i][0],
|
|
||||||
jcd: res.areaValue[i][1],
|
|
||||||
zc: res.areaValue[i][2],
|
|
||||||
zd: res.areaValue[i][3]
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 点击地图
|
// 点击地图
|
||||||
const clickMap = (e: any) => {
|
const clickMap = (e: any) => {
|
||||||
console.log('🚀 ~ clickMap ~ e:', e)
|
tabulation(e)
|
||||||
}
|
}
|
||||||
|
// 表格数据处理
|
||||||
|
const tabulation = (e: any) => {
|
||||||
|
loading.value = true
|
||||||
|
voltageRideThroughEventQueryPage({
|
||||||
|
...tableStore.table.params,
|
||||||
|
areaId: e.data.id,
|
||||||
|
frequencyType: e.seriesName == '高压' ? 1 : 2
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
distributionData.value = res.data
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const formFilter = (row: any) => {
|
||||||
|
if (row.column.property == 'advanceReason') {
|
||||||
|
let title = ''
|
||||||
|
reason.forEach(item => {
|
||||||
|
if (item.id == row.row.advanceReason) {
|
||||||
|
title = item.name
|
||||||
|
} else if (row.row.advanceReason == null || row.row.advanceReason == '') {
|
||||||
|
title = '/'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return title
|
||||||
|
} else {
|
||||||
|
return row.row[row.column.property]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 查看波形数据
|
||||||
|
const boxi = async (row: any) => {
|
||||||
|
loading1.value = true
|
||||||
|
wp.value = null
|
||||||
|
await getTransientDetailById({
|
||||||
|
eventId: row.eventId,
|
||||||
|
sysType: 0,
|
||||||
|
smallType: 0
|
||||||
|
}).then(res => {
|
||||||
|
boxoList.value = res.data
|
||||||
|
})
|
||||||
|
|
||||||
|
await getMonitorEventAnalyseWave({
|
||||||
|
id: row.eventId,
|
||||||
|
systemType: 0,
|
||||||
|
type: 0
|
||||||
|
}).then(res => {
|
||||||
|
if (res != undefined) {
|
||||||
|
wp.value = res.data
|
||||||
|
}
|
||||||
|
loading1.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
})
|
})
|
||||||
@@ -311,6 +349,10 @@ const layout1 = mainHeight(93) as any
|
|||||||
.tall {
|
.tall {
|
||||||
height: calc((v-bind('layout1.height') - 60px) / 2);
|
height: calc((v-bind('layout1.height') - 60px) / 2);
|
||||||
}
|
}
|
||||||
|
.tall1 {
|
||||||
|
height: calc((v-bind('layout1.height') - 60px) / 2 - 35px);
|
||||||
|
}
|
||||||
|
|
||||||
.group {
|
.group {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 15px;
|
top: 15px;
|
||||||
|
|||||||
@@ -308,6 +308,7 @@ tableStore.table.params.projectName = ''
|
|||||||
tableStore.table.params.loadType = ''
|
tableStore.table.params.loadType = ''
|
||||||
tableStore.table.params.userName = ''
|
tableStore.table.params.userName = ''
|
||||||
tableStore.table.params.relationUserName = ''
|
tableStore.table.params.relationUserName = ''
|
||||||
|
tableStore.table.params.dataType = 0
|
||||||
tableStore.table.params.orgId = adminInfo.$state.deptId
|
tableStore.table.params.orgId = adminInfo.$state.deptId
|
||||||
tableStore.table.params.aisFileUpload = ''
|
tableStore.table.params.aisFileUpload = ''
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
|
|||||||
@@ -82,9 +82,9 @@ const tableStore = new TableStore({
|
|||||||
field: 'city',
|
field: 'city',
|
||||||
title: '所在地市',
|
title: '所在地市',
|
||||||
minWidth: 80,
|
minWidth: 80,
|
||||||
formatter: (obj: any) => {
|
// formatter: (obj: any) => {
|
||||||
return areaOptionList.filter(item => item.id == obj.row.city)[0]?.name
|
// return areaOptionList.filter(item => item.id == obj.row.city)[0]?.name
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'substation',
|
field: 'substation',
|
||||||
|
|||||||
Reference in New Issue
Block a user