提交 高低电压穿越 页面

This commit is contained in:
GGJ
2024-08-22 11:39:47 +08:00
parent 760a7d9c5c
commit 439310e971
8 changed files with 201 additions and 2507 deletions

View 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
})
}

View File

@@ -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

View File

@@ -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) {

View File

@@ -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
} }

View File

@@ -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;

View File

@@ -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)

View File

@@ -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',