优化波形

This commit is contained in:
guanj
2026-06-16 08:36:22 +08:00
parent 765507398e
commit 56b8158f4a
25 changed files with 3704 additions and 3437 deletions

View File

@@ -1,423 +1,423 @@
<template>
<div class="default-main">
<TableHeader datePicker theCurrentTime area ref="header">
<!-- <template v-slot:select>
</template> -->
</TableHeader>
<div v-loading="tableStore.table.loading">
<el-row :gutter="10" class="pd10">
<el-col :span="11" style="position: relative">
<el-card>
<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="2" />
</el-radio-group>
<MyEchartMap
ref="EchartMap"
:options="echartMapList"
class="map"
@eliminate="eliminate"
@getRegionByRegion="getRegionByRegion"
@clickMap="clickMap"
/>
</el-card>
</el-col>
<el-col :span="13">
<el-card>
<template #header>
<div class="card-header">
<span>暂降列表</span>
</div>
</template>
<!-- <h3 class="mb10">暂降列表</h3> -->
<div class="tall1">
<vxe-table
height="auto"
auto-resize
:data="distributionData"
v-loading="loading"
v-bind="defaultAttribute"
>
<vxe-column
field="newStationName"
title="新能源站名称"
min-width="150px"
show-overflow-tooltip
></vxe-column>
<vxe-column field="startTime" title="暂降发生时刻" min-width="150px"></vxe-column>
<vxe-column
field="featureAmplitude"
title="暂降(骤升)幅值(%)"
sortable
min-width="150px"
></vxe-column>
<vxe-column
field="advanceReason"
title="暂降原因"
sortable
:formatter="formFilter"
min-width="100px"
></vxe-column>
<vxe-column field="severity" title="严重度" min-width="100px" sortable></vxe-column>
<vxe-column title="操作" width="80px">
<template #default="{ row }">
<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>
</vxe-column>
</vxe-table>
</div>
</el-card>
<el-card class="mt10">
<template #header>
<div class="card-header">
<span>暂降波形</span>
</div>
</template>
<div class="tall" v-loading="loading1">
<!-- <h3 class="mb10">暂降波形</h3> -->
<div v-if="wp != null">
<rmsboxi :value="1" :height="height" :boxoList="boxoList" :wp="wp" />
</div>
<el-empty v-else description="暂无数据" class="custom-empty" />
</div>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
<script setup lang="ts">
import TableHeader from '@/components/table/header/index.vue'
import { useDictData } from '@/stores/dictData'
import { defaultAttribute } from '@/components/table/defaultAttribute'
import MyEchartMap from '@/components/echarts/MyEchartMap.vue'
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 { mainHeight } from '@/utils/layout'
import { FormItem } from 'vxe-table'
defineOptions({
name: 'newEnergy/highAndLowPressure'
})
const EchartMap = ref()
const dictData = useDictData()
const reason = dictData.getBasicData('Event_Reason')
const triggerType = dictData.getBasicData('Event_Statis')
const echartMapList: any = ref({})
const header = 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({
url: '/event-boot/voltageRideThrough/view',
method: 'POST',
column: [],
beforeSearchFun: () => {
tableStore.table.params.areaId = tableStore.table.params.deptIndex
},
loadCallback: () => {
// 处理地图数据
map(tableStore.table.data)
// tabulation(tableStore.table.data)
EchartMap.value.GetEchar(header.value.areaRef.areaName)
if (tableStore.table.data.length > 0) {
tabulation({ data: tableStore.table.data[0], seriesName: '高压' })
}
}
})
const height = mainHeight(200, 2).height
provide('tableStore', tableStore)
tableStore.table.params.type = '1'
// 地图点击事件
const getRegionByRegion = (list: any) => {
tableStore.table.params.deptIndex = list.id
tableStore.onTableAction('search', {})
}
// 消除点
const eliminate = (name: string) => {
echartMapList.value.options.series = []
EchartMap.value.GetEchar(name)
}
// 地图数处理
const map = (res: any) => {
echartMapList.value = {
title: {
text: '高/低电压穿越'
},
tooltip: {
trigger: 'item',
formatter: function (params) {
if (params.seriesType == 'bar3D') {
return [params.seriesName, params.name + '' + params.value[2] + (params.value[3] || '')].join(
'<br />'
)
}
}
},
legend: {
selectedMode: false
},
geo3D: {
show: true,
// name: '浙江',
itemStyle: {
color: getComputedStyle(document.documentElement).getPropertyValue('--el-color-primary-light-3'),
borderWidth: 1,
borderColor: '#fff'
},
emphasis: {
label: { show: true, fontSize: 16 },
itemStyle: {
color: getComputedStyle(document.documentElement).getPropertyValue('--el-color-primary-light-7')
}
},
viewControl: {
alpha: 60,
distance: 120,
panMouseButton: 'right', //平移操作使用的鼠标按键
rotateMouseButton: 'left' //旋转操作使用的鼠标按键
},
label: {
show: true,
color: '#000',
fontSize: 14,
distance: 0,
textStyle: {
color: '#000',
backgroundColor: '#000'
}
},
data: [
{ name: '低压', field: 'lowPressure', unit: '次' },
{ name: '高压', field: 'highPressure', unit: '次' }
]
},
options: {
series: [
{
name: '低压',
type: 'bar3D',
coordinateSystem: 'geo3D',
shading: 'lambert',
label: {
show: true,
position: 'top',
formatter: params => {
return params.value[2]
}
},
data:
res.length == 0
? []
: res.map((item: any) => {
return {
...item,
value: [item.lng, item.lat, item.lowPressure || 0]
}
}),
// data:[],
barSize: 1,
minHeight: 1,
itemStyle: {
color: '#77DA63'
},
emphasis: {
label: { show: true }
}
},
{
name: '高压',
type: 'bar3D',
coordinateSystem: 'geo3D',
shading: 'lambert',
label: {
show: true,
// position: 'top',
formatter: params => {
return params.value[2]
}
},
data:
res.length == 0
? []
: res.map((item: any) => {
return {
...item,
value: [item.lng - 0.1, item.lat, item.highPressure || 0]
}
}),
// [
// {
// adcode: 330400,
// name: '大连',
// wcs: 10,
// mbs: 40,
// wcl: 100,
// value: [121.67391, 38.947468, 40, '']
// }
// ],
barSize: 1,
minHeight: 1,
itemStyle: {
color: '#FFBF00'
},
emphasis: {
label: { show: true }
}
}
]
}
}
}
// 点击地图
const clickMap = (e: any) => {
tabulation(e)
}
// 表格数据处理
const tabulation = (e: any) => {
console.log()
loading.value = true
voltageRideThroughEventQueryPage({
...tableStore.table.params,
areaId: e.data.id,
frequencyType:
e.seriesName == '高压'
? triggerType.filter(item => item.code == 'Voltage_Rise')[0].id
: triggerType.filter(item => item.code == 'Voltage_Dip')[0].id
})
.then(res => {
distributionData.value = res.data
for (let i = 0; i < res.data.length; i++) {
if (res.data[i].wavePath != null) {
boxi(res.data[i])
break
}
}
// res.data.forEach((item: any) => {
// if (item.wavePath != null) {
// boxi(item)
// return
// }
// })
// 。wavePath
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(() => {
tableStore.index()
})
const layout = mainHeight(83) as any
const layout1 = mainHeight(93) as any
</script>
<style lang="scss" scoped>
.map {
height: calc(v-bind('layout1.height') - 30px);
}
.tall {
height: calc((v-bind('layout1.height') - 100px) / 2);
}
.tall1 {
height: calc((v-bind('layout1.height') - 100px) / 2 - 50px);
}
.group {
position: absolute;
top: 15px;
right: 20px;
z-index: 10;
}
:deep(.el-card__body) {
padding: 10px;
}
/* 自定义 el-empty 的样式 */
:deep(.custom-empty) {
display: flex;
justify-content: center;
align-items: center;
height: 100%; /* 调整高度 */
padding: 20px; /* 调整内边距 */
.el-empty__image {
display: none; /* 隐藏默认图片 */
}
.el-empty__description {
font-size: 14px; /* 调整字体大小 */
color: var(--vxe-font-color);
}
}
</style>
<template>
<div class="default-main">
<TableHeader datePicker theCurrentTime area ref="header">
<!-- <template v-slot:select>
</template> -->
</TableHeader>
<div v-loading="tableStore.table.loading">
<el-row :gutter="10" class="pd10">
<el-col :span="11" style="position: relative">
<el-card>
<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="2" />
</el-radio-group>
<MyEchartMap
ref="EchartMap"
:options="echartMapList"
class="map"
@eliminate="eliminate"
@getRegionByRegion="getRegionByRegion"
@clickMap="clickMap"
/>
</el-card>
</el-col>
<el-col :span="13">
<el-card>
<template #header>
<div class="card-header">
<span>暂降列表</span>
</div>
</template>
<!-- <h3 class="mb10">暂降列表</h3> -->
<div class="tall1">
<vxe-table
height="auto"
auto-resize
:data="distributionData"
v-loading="loading"
v-bind="defaultAttribute"
>
<vxe-column
field="newStationName"
title="新能源站名称"
min-width="150px"
show-overflow-tooltip
></vxe-column>
<vxe-column field="startTime" title="暂降发生时刻" min-width="180px" sortable></vxe-column>
<vxe-column
field="featureAmplitude"
title="暂降(骤升)幅值(%)"
sortable
min-width="160px"
></vxe-column>
<vxe-column
field="advanceReason"
title="暂降原因"
sortable
:formatter="formFilter"
min-width="100px"
></vxe-column>
<vxe-column field="severity" title="严重度" min-width="100px" sortable></vxe-column>
<vxe-column title="操作" width="80px">
<template #default="{ row }">
<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>
</vxe-column>
</vxe-table>
</div>
</el-card>
<el-card class="mt10">
<template #header>
<div class="card-header">
<span>暂降波形</span>
</div>
</template>
<div class="tall" v-loading="loading1">
<!-- <h3 class="mb10">暂降波形</h3> -->
<div v-if="wp != null">
<rmsboxi :value="1" :height="height" :boxoList="boxoList" :wp="wp" />
</div>
<el-empty v-else description="暂无数据" class="custom-empty" />
</div>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
<script setup lang="ts">
import TableHeader from '@/components/table/header/index.vue'
import { useDictData } from '@/stores/dictData'
import { defaultAttribute } from '@/components/table/defaultAttribute'
import MyEchartMap from '@/components/echarts/MyEchartMap.vue'
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 { mainHeight } from '@/utils/layout'
import { FormItem } from 'vxe-table'
defineOptions({
name: 'newEnergy/highAndLowPressure'
})
const EchartMap = ref()
const dictData = useDictData()
const reason = dictData.getBasicData('Event_Reason')
const triggerType = dictData.getBasicData('Event_Statis')
const echartMapList: any = ref({})
const header = 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({
url: '/event-boot/voltageRideThrough/view',
method: 'POST',
column: [],
beforeSearchFun: () => {
tableStore.table.params.areaId = tableStore.table.params.deptIndex
},
loadCallback: () => {
// 处理地图数据
map(tableStore.table.data)
// tabulation(tableStore.table.data)
EchartMap.value.GetEchar(header.value.areaRef.areaName)
if (tableStore.table.data.length > 0) {
tabulation({ data: tableStore.table.data[0], seriesName: '高压' })
}
}
})
const height = mainHeight(200, 2).height
provide('tableStore', tableStore)
tableStore.table.params.type = '1'
// 地图点击事件
const getRegionByRegion = (list: any) => {
tableStore.table.params.deptIndex = list.id
tableStore.onTableAction('search', {})
}
// 消除点
const eliminate = (name: string) => {
echartMapList.value.options.series = []
EchartMap.value.GetEchar(name)
}
// 地图数处理
const map = (res: any) => {
echartMapList.value = {
title: {
text: '高/低电压穿越'
},
tooltip: {
trigger: 'item',
formatter: function (params) {
if (params.seriesType == 'bar3D') {
return [params.seriesName, params.name + '' + params.value[2] + (params.value[3] || '')].join(
'<br />'
)
}
}
},
legend: {
selectedMode: false
},
geo3D: {
show: true,
// name: '浙江',
itemStyle: {
color: getComputedStyle(document.documentElement).getPropertyValue('--el-color-primary-light-3'),
borderWidth: 1,
borderColor: '#fff'
},
emphasis: {
label: { show: true, fontSize: 16 },
itemStyle: {
color: getComputedStyle(document.documentElement).getPropertyValue('--el-color-primary-light-7')
}
},
viewControl: {
alpha: 60,
distance: 120,
panMouseButton: 'right', //平移操作使用的鼠标按键
rotateMouseButton: 'left' //旋转操作使用的鼠标按键
},
label: {
show: true,
color: '#000',
fontSize: 14,
distance: 0,
textStyle: {
color: '#000',
backgroundColor: '#000'
}
},
data: [
{ name: '低压', field: 'lowPressure', unit: '次' },
{ name: '高压', field: 'highPressure', unit: '次' }
]
},
options: {
series: [
{
name: '低压',
type: 'bar3D',
coordinateSystem: 'geo3D',
shading: 'lambert',
label: {
show: true,
position: 'top',
formatter: params => {
return params.value[2]
}
},
data:
res.length == 0
? []
: res.map((item: any) => {
return {
...item,
value: [item.lng, item.lat, item.lowPressure || 0]
}
}),
// data:[],
barSize: 1,
minHeight: 1,
itemStyle: {
color: '#77DA63'
},
emphasis: {
label: { show: true }
}
},
{
name: '高压',
type: 'bar3D',
coordinateSystem: 'geo3D',
shading: 'lambert',
label: {
show: true,
// position: 'top',
formatter: params => {
return params.value[2]
}
},
data:
res.length == 0
? []
: res.map((item: any) => {
return {
...item,
value: [item.lng - 0.1, item.lat, item.highPressure || 0]
}
}),
// [
// {
// adcode: 330400,
// name: '大连',
// wcs: 10,
// mbs: 40,
// wcl: 100,
// value: [121.67391, 38.947468, 40, '']
// }
// ],
barSize: 1,
minHeight: 1,
itemStyle: {
color: '#FFBF00'
},
emphasis: {
label: { show: true }
}
}
]
}
}
}
// 点击地图
const clickMap = (e: any) => {
tabulation(e)
}
// 表格数据处理
const tabulation = (e: any) => {
console.log()
loading.value = true
voltageRideThroughEventQueryPage({
...tableStore.table.params,
areaId: e.data.id,
frequencyType:
e.seriesName == '高压'
? triggerType.filter(item => item.code == 'Voltage_Rise')[0].id
: triggerType.filter(item => item.code == 'Voltage_Dip')[0].id
})
.then(res => {
distributionData.value = res.data
for (let i = 0; i < res.data.length; i++) {
if (res.data[i].wavePath != null) {
boxi(res.data[i])
break
}
}
// res.data.forEach((item: any) => {
// if (item.wavePath != null) {
// boxi(item)
// return
// }
// })
// 。wavePath
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(() => {
tableStore.index()
})
const layout = mainHeight(83) as any
const layout1 = mainHeight(93) as any
</script>
<style lang="scss" scoped>
.map {
height: calc(v-bind('layout1.height') - 30px);
}
.tall {
height: calc((v-bind('layout1.height') - 100px) / 2);
}
.tall1 {
height: calc((v-bind('layout1.height') - 100px) / 2 - 50px);
}
.group {
position: absolute;
top: 15px;
right: 20px;
z-index: 10;
}
:deep(.el-card__body) {
padding: 10px;
}
/* 自定义 el-empty 的样式 */
:deep(.custom-empty) {
display: flex;
justify-content: center;
align-items: center;
height: 100%; /* 调整高度 */
padding: 20px; /* 调整内边距 */
.el-empty__image {
display: none; /* 隐藏默认图片 */
}
.el-empty__description {
font-size: 14px; /* 调整字体大小 */
color: var(--vxe-font-color);
}
}
</style>

View File

@@ -79,7 +79,7 @@ onMounted(() => {
})
const urlKey=ref('')
const VITE_FLAG = import.meta.env.VITE_NAME == 'jibei'
const VITE_FLAG = false//import.meta.env.VITE_NAME == 'jibei'
const handleNodeClick = (data: any, node: any) => {
// console.log("🚀 ~ handleNodeClick ~ data:", data)
dotList.value = data

View File

@@ -4,7 +4,13 @@
<TableHeader datePicker area showExport>
<template #select>
<el-form-item label="筛选数据">
<el-input v-model="tableStore.table.params.searchValue" placeholder="输入关键字筛选" clearable maxlength="32" show-word-limit/>
<el-input
v-model="tableStore.table.params.searchValue"
placeholder="输入关键字筛选"
clearable
maxlength="32"
show-word-limit
/>
</el-form-item>
<el-form-item label="统计类型">
<el-select
@@ -127,7 +133,7 @@ const tableStore = new TableStore({
{ field: 'lineName', title: '监测点名称', minWidth: '180' },
{ field: 'gdName', title: '供电公司', minWidth: '120' },
{ field: 'subName', title: '变电站', minWidth: '150' },
{ field: 'ip', title: '网络参数' ,width:'120px' },
{ field: 'ip', title: '网络参数', width: '120px' },
{ field: 'scale', title: '电压等级', minWidth: '110' },
{
field: 'advanceType',
@@ -137,7 +143,7 @@ const tableStore = new TableStore({
return row.cellValue || '其他'
}
},
{
{
field: 'eventType',
title: '触发类型',
minWidth: '120',
@@ -153,7 +159,7 @@ const tableStore = new TableStore({
return row.cellValue || '其他'
}
},
// {
// field: 'severity', title: '严重度', minWidth: "80", formatter: (row: any) => {
// return row.cellValue.toFixed(2)
@@ -180,7 +186,8 @@ const tableStore = new TableStore({
{ field: 'duration', title: '持续时间(s)', minWidth: '100' },
{
title: '操作',fixed: 'right',
title: '操作',
fixed: 'right',
width: '120',
render: 'buttons',
buttons: [
@@ -278,6 +285,7 @@ const download = () => {
document.body.appendChild(link)
link.click() //执行下载
document.body.removeChild(link) //释放标签
ElMessage.success('波形下载成功')
})
}
</script>

View File

@@ -1,5 +1,6 @@
<template>
<div class="default-main online">
<div class="online_header">
<TableHeader date-picker ref="tableHeaderRef">
<template #select>
@@ -54,6 +55,14 @@
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="通讯状态">
<el-select v-model="tableStore.table.params.comFlagStatus" clearable placeholder="请选择通讯状态"
style="width: 100%" >
<el-option label="正常" value="1" />
<el-option label="中断" value="0" />
</el-select>
</el-form-item>
<el-form-item label="筛选数据">
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="请输入关键字"></el-input>
</el-form-item>
@@ -313,6 +322,7 @@ tableStore.table.params.statisticalType = []
tableStore.table.params.scale = []
tableStore.table.params.manufacturer = []
tableStore.table.params.loadType = []
tableStore.table.params.comFlagStatus=''
provide('tableStore', tableStore)
const tree2List = (list: any, id?: string) => {
//存储结果的数组
@@ -479,13 +489,13 @@ const socket = async (form: any) => {
await dataSocket.socketServe.send(form)
logList.value.push({
type: '',
time: formatDate(new Date(), 'YYYY-MM-DD hh:mm:ss'),
time: formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'),
name: '开始补召,请稍等...',
})
await dataSocket.socketServe.registerCallBack('message', (res: any) => {
logList.value.push({
type: res.code == 500 ? 'error' : '',
time: formatDate(new Date(), 'YYYY-MM-DD hh:mm:ss'),
time: formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'),
name: res.message
})

View File

@@ -10,39 +10,81 @@
</el-radio-group>
</el-form-item>
<el-form-item label="筛选数据">
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入关键字筛选"
style="width: 200px" maxlength="32" show-word-limit />
<el-input
v-model="tableStore.table.params.searchValue"
clearable
placeholder="输入关键字筛选"
style="width: 200px"
maxlength="32"
show-word-limit
/>
</el-form-item>
<el-form-item label="触发类型">
<el-select v-model="tableStore.table.params.waveType" placeholder="请选择触发类型" clearable multiple
collapse-tags style="width: 100%">
<el-option v-for="item in triggeroptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
<el-select
v-model="tableStore.table.params.waveType"
placeholder="请选择触发类型"
clearable
multiple
collapse-tags
style="width: 100%"
>
<el-option
v-for="item in triggeroptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否有波形">
<el-select v-model="tableStore.table.params.fileFlag" placeholder="请选择是否存在波形" clearable
style="width: 100%">
<el-option v-for="item in wareaoptions" :key="item.id" :label="item.label"
:value="item.id"></el-option>
<el-select
v-model="tableStore.table.params.fileFlag"
placeholder="请选择是否存在波形"
clearable
style="width: 100%"
>
<el-option
v-for="item in wareaoptions"
:key="item.id"
:label="item.label"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="暂态持续时间(s)">
<el-input v-model="tableStore.table.params.persistMin" placeholder="请输入X秒"
onkeyup="value=value.replace(/[^\d.]/g,'')" clearable style="width: 94px"></el-input>
<el-input
v-model="tableStore.table.params.persistMin"
placeholder="请输入X秒"
onkeyup="value=value.replace(/[^\d.]/g,'')"
clearable
style="width: 94px"
></el-input>
<el-tag style="margin-left: 5px">&lt; 时间数 &lt;</el-tag>
<el-input v-model="tableStore.table.params.persistMax" placeholder="请输入X秒"
onkeyup="value=value.replace(/[^\d.]/g,'')" clearable
style="margin-left: 5px; width: 94px"></el-input>
<el-input
v-model="tableStore.table.params.persistMax"
placeholder="请输入X秒"
onkeyup="value=value.replace(/[^\d.]/g,'')"
clearable
style="margin-left: 5px; width: 94px"
></el-input>
</el-form-item>
<el-form-item label="事件严重度">
<el-input v-model="tableStore.table.params.severityMin" placeholder="请输入正负数"
onkeyup="value=value.replace(/[^\d\.-]/g,'')" clearable style="width: 94px"></el-input>
<el-input
v-model="tableStore.table.params.severityMin"
placeholder="请输入正负数"
onkeyup="value=value.replace(/[^\d\.-]/g,'')"
clearable
style="width: 94px"
></el-input>
<el-tag style="margin-left: 5px">&lt; 严重度 &lt;</el-tag>
<el-input v-model="tableStore.table.params.severityMax" placeholder="请输入正负数"
onkeyup="value=value.replace(/[^\d\.-]/g,'')" clearable
style="margin-left: 5px; width: 94px"></el-input>
<el-input
v-model="tableStore.table.params.severityMax"
placeholder="请输入正负数"
onkeyup="value=value.replace(/[^\d\.-]/g,'')"
clearable
style="margin-left: 5px; width: 94px"
></el-input>
</el-form-item>
<!-- <el-form-item label="触发类型:">
@@ -53,23 +95,52 @@
</el-select>
</el-form-item> -->
<el-form-item label="暂态原因">
<el-select v-model="tableStore.table.params.eventReason" placeholder="请选择暂态原因" clearable
multiple collapse-tags style="width: 100%">
<el-option v-for="item in reasonoptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
<el-select
v-model="tableStore.table.params.eventReason"
placeholder="请选择暂态原因"
clearable
multiple
collapse-tags
style="width: 100%"
>
<el-option
v-for="item in reasonoptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="暂态核实原因">
<el-select v-model="tableStore.table.params.verifyReason" placeholder="请选择暂态核实原因" clearable
multiple collapse-tags collapse-tags-tooltip>
<el-option v-for="item in verifyReasonList" :key="item.id" :label="item.name"
:value="item.id"></el-option>
<el-select
v-model="tableStore.table.params.verifyReason"
placeholder="请选择暂态核实原因"
clearable
multiple
collapse-tags
collapse-tags-tooltip
>
<el-option
v-for="item in verifyReasonList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="变电站(监测点)">
<el-cascader v-model="tableStore.table.params.lineIds" :options="options" :props="defaultProps"
collapse-tags-tooltip style="width: 257px" filterable clearable collapse-tags
placeholder="请选择变电站(监测点)" :show-all-levels="true" />
<el-cascader
v-model="tableStore.table.params.lineIds"
:options="options"
:props="defaultProps"
collapse-tags-tooltip
style="width: 257px"
filterable
clearable
collapse-tags
placeholder="请选择变电站(监测点)"
:show-all-levels="true"
/>
</el-form-item>
</template>
<template #operation>
@@ -146,33 +217,17 @@ const tableStore = new TableStore({
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'startTime', title: '暂降发生时刻', minWidth: '200' },
{ field: 'gdName', title: '供电公司', minWidth: '100' },
{ field: 'subName', title: '变电站', minWidth: '200' },
{ field: 'ip', title: '网络参数', width: '120px' },
{ field: 'lineName', title: '监测点', minWidth: '100' },
{ field: 'scale', title: '电压等级(kV)', minWidth: '120' },
{
field: 'verifyReason',
title: '暂态核实原因',
minWidth: '120',
formatter: function (row) {
return verifyReasonList.filter(item => item.id == row.cellValue)[0]?.name || '/' //row.cellValue ? row.cellValue : '/'
}
},
// {
// field: 'verifyReasonDetail', title: '暂降核实原因详情', minWidth: '200', formatter: function (row) {
// return row.cellValue ? row.cellValue : '/'
// }
// },
{ field: 'startTime', title: '暂降发生时刻', minWidth: '200', sortable: true },
{
field: 'featureAmplitude',
title: '暂降(骤升)幅值(%)',
minWidth: '130',
minWidth: '160',
sortable: true,
formatter: (row: any) => {
return Math.floor(row.cellValue * 10000) / 100
}
},
{ field: 'duration', title: '持续时间(s)', minWidth: 120, sortable: true },
{
field: 'eventType',
title: '触发类型',
@@ -182,17 +237,32 @@ const tableStore = new TableStore({
return triggeroptions.filter(item => item.id == row.eventType)[0]?.name
}
},
// { field: 'advanceType', title: '触发类型', minWidth: '100', },
{ field: 'advanceReason', title: '暂态原因', minWidth: '100' },
{
field: 'depth',
title: '暂降深度(%)',
minWidth: '100',
minWidth: 120,
formatter: ({ row }: any) =>
row.featureAmplitude < 1 ? 100 - (row.featureAmplitude * 100).toFixed(0) : '/'
},
{ field: 'duration', title: '持续时间(s)', minWidth: '100' },
{ field: 'advanceReason', title: '暂态原因', minWidth: '100' },
{
field: 'verifyReason',
title: '暂态核实原因',
minWidth: '120',
formatter: function (row) {
return verifyReasonList.filter(item => item.id == row.cellValue)[0]?.name || '/' //row.cellValue ? row.cellValue : '/'
}
},
{ field: 'gdName', title: '供电公司', minWidth: '100' },
{ field: 'subName', title: '变电站', minWidth: '200' },
{ field: 'lineName', title: '监测点', minWidth: '100' },
{ field: 'ip', title: '网络参数', width: '120px' },
{ field: 'scale', title: '电压等级(kV)', minWidth: '130', sortable: true },
// { field: 'advanceType', title: '触发类型', minWidth: '100', },
{
field: 'severity',
title: '严重度',
@@ -201,7 +271,8 @@ const tableStore = new TableStore({
},
{
title: '操作', fixed: 'right',
title: '操作',
fixed: 'right',
width: '150',
render: 'buttons',
@@ -259,7 +330,7 @@ const tableStore = new TableStore({
}
],
loadCallback: () => { }
loadCallback: () => {}
})
const options = ref([])
const defaultProps = {
@@ -353,6 +424,7 @@ const download = () => {
document.body.appendChild(link)
link.click() //执行下载
document.body.removeChild(link) //释放标签
ElMessage.success('波形下载成功')
})
}
</script>

View File

@@ -3,9 +3,9 @@
<div v-show="view">
<TableHeader datePicker :showReset="false" showExport ref="TableHeaderRef">
<template #select>
<!-- <el-form-item label="筛选数据">-->
<!-- <el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入关键字筛选" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="筛选数据">-->
<!-- <el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入关键字筛选" />-->
<!-- </el-form-item>-->
</template>
<template #operation>
<el-button icon="el-icon-Tickets" type="primary" @click="analysis1">分析记录管理</el-button>
@@ -29,7 +29,7 @@
</template>
</vxe-column>
</vxe-table>
<el-pagination
<el-pagination
class="mt10"
:currentPage="form.pageNum"
:page-size="form.pageSize"
@@ -39,7 +39,7 @@
:total="total"
@size-change="onTableSizeChange"
@current-change="onTableCurrentChange"
></el-pagination>
></el-pagination>
</el-dialog>
</div>
<div :style="{ height: pageHeight.height }" style="padding: 10px; overflow: hidden" v-if="!view">
@@ -70,7 +70,7 @@ const loading = ref(false)
const view = ref(true)
const view2 = ref(false)
const TableHeaderRef = ref()
const waveFormRef = ref()
const waveFormRef = ref()
const tableStore = new TableStore({
url: '/advance-boot/process/querySagEventsPage',
method: 'POST',
@@ -83,19 +83,23 @@ const tableStore = new TableStore({
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'startTime', title: '发生时间' },
{ field: 'duration', title: '持续时间(s)' },
{ field: 'startTime', title: '暂降发生时刻', sortable: true, minWidth: 200 },
{
field: 'featureAmplitude',
title: '暂降(骤升)幅值(%)'
title: '暂降(骤升)幅值(%)',
sortable: true,
minWidth: 160
},
{ field: 'gdName', title: '供电公司' },
{ field: 'subName', title: '变电站' },
{ field: 'lineName', title: '监测点' },
{ field: 'duration', title: '持续时间(s)', sortable: true, minWidth: 120 },
{ field: 'gdName', title: '供电公司', minWidth: 140 },
{ field: 'subName', title: '变电站', minWidth: 140 },
{ field: 'lineName', title: '监测点', minWidth: 140 },
{
field: 'dealFlag',
title: '暂降特征幅值计算',
render: 'tag',
minWidth: 160,
custom: {
0: 'warning',
1: 'success',
@@ -115,6 +119,7 @@ const tableStore = new TableStore({
field: 'fileFlag',
title: '录波文件',
render: 'tag',
minWidth: 140,
custom: {
0: 'warning',
1: 'success'
@@ -125,7 +130,8 @@ const tableStore = new TableStore({
}
},
{
title: '操作',fixed: 'right',
title: '操作',
fixed: 'right',
width: '120',
render: 'buttons',
buttons: [
@@ -140,9 +146,9 @@ const tableStore = new TableStore({
render: 'basicButton',
click: async row => {
view.value = false
setTimeout(() => {
waveFormRef.value.open(row)
},100)
setTimeout(() => {
waveFormRef.value.open(row)
}, 100)
// row.loading = true
// boxoList.value = row
// await getMonitorEventAnalyseWave({ id: row.eventId, systemType: 0 })
@@ -173,7 +179,7 @@ const tableStore = new TableStore({
}
],
loadCallback: () => { }
loadCallback: () => {}
})
tableStore.table.params.searchValue = ''
const bxactiveName = ref('ssbx')
@@ -190,25 +196,21 @@ provide('tableStore', tableStore)
onMounted(() => {
TableHeaderRef.value.setTheDate(1)
nextTick(() => {
// tableStore.index()
TableHeaderRef.value.onComSearch()
})
})
// 分页
const onTableSizeChange = (val: number) => {
form.value.pageSize = val
form.value.pageNum = 1 // 改变每页条数时回到第一页
loadAnalysisData() // 重新加载数据
form.value.pageSize = val
form.value.pageNum = 1 // 改变每页条数时回到第一页
loadAnalysisData() // 重新加载数据
}
const onTableCurrentChange = (val: number) => {
form.value.pageNum = val
loadAnalysisData() // 重新加载数据
loadAnalysisData() // 重新加载数据
}
// 封装数据加载逻辑
@@ -230,13 +232,12 @@ const loadAnalysisData = async () => {
//分析记录管理
const analysis1 = async () => {
// 初始化分页参数
// 初始化分页参数
form.value.pageNum = 1
await loadAnalysisData()
dialogAnalysis.value = true
}
// 启动关联分析
const firing = () => {
processEvents({
@@ -257,7 +258,7 @@ const details = (row: any) => {
type: 'success',
message: res.message
})
// 重新加载当前页的数据
// 重新加载当前页的数据
loadAnalysisData()
})
}
@@ -266,6 +267,4 @@ const backbxlb = () => {
view.value = true
view2.value = false
}
</script>

View File

@@ -3,7 +3,13 @@
<TableHeader datePicker ref="TableHeaderRef">
<template #select>
<el-form-item label="筛选数据">
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="输入事件关联分析描述" maxlength="32" show-word-limit/>
<el-input
v-model="tableStore.table.params.searchValue"
clearable
placeholder="输入事件关联分析描述"
maxlength="32"
show-word-limit
/>
</el-form-item>
</template>
<template #operation>
@@ -35,25 +41,18 @@
</vxe-table-column>
<vxe-table-column
field="startTime"
title="发生时"
title="暂降发生时"
align="center"
sortable
width="200"
:show-overflow="true"
></vxe-table-column>
<vxe-table-column field="gdName" title="供电公司" align="center"></vxe-table-column>
<vxe-table-column
field="subName"
:show-overflow="true"
title="变电站"
align="center"
></vxe-table-column>
<vxe-table-column field="lineName" title="监测点" align="center"></vxe-table-column>
<vxe-table-column field="voltageId" title="电压等级(kV)" align="center"></vxe-table-column>
<vxe-table-column field="featureAmplitude" title="暂降(骤升)幅值(%)" align="center" width="140">
<vxe-table-column field="featureAmplitude" title="暂降(骤升)幅值(%)" sortable align="center" width="160">
<template #default="{ row }">
<span>{{ (row.featureAmplitude * 100).toFixed(2) }}</span>
</template>
</vxe-table-column>
<vxe-table-column field="duration" title="持续时间(s)" align="center" width="120"></vxe-table-column>
<vxe-table-column field="duration" title="持续时间(s)" sortable align="center" width="120"></vxe-table-column>
<vxe-table-column
field="advanceType"
title="触发类型"
@@ -68,6 +67,15 @@
width="120"
:formatter="formFilter"
></vxe-table-column>
<vxe-table-column field="gdName" title="供电公司" align="center"></vxe-table-column>
<vxe-table-column
field="subName"
:show-overflow="true"
title="变电站"
align="center"
></vxe-table-column>
<vxe-table-column field="lineName" title="监测点" align="center"></vxe-table-column>
<vxe-table-column field="voltageId" title="电压等级(kV)" align="center"></vxe-table-column>
</vxe-table>
<el-pagination
class="mt10"
@@ -131,7 +139,8 @@ const tableStore = new TableStore({
title: '事件关联分析描述'
},
{
title: '操作',fixed: 'right',
title: '操作',
fixed: 'right',
width: '200',
render: 'buttons',
buttons: [
@@ -176,7 +185,6 @@ const bxcontrast = () => {
}
}
// 波形分析
const source = () => {
queryEventDetailByAssId(form.value).then(res => {
@@ -245,14 +253,14 @@ const exportEvent = () => {
}
// 导出波形分析
const positioningexport = () => {
const selectedRecords = positioningtableRef.value.getCheckboxRecords();
const selectedRecords = positioningtableRef.value.getCheckboxRecords()
if (selectedRecords.length === 0) {
ElMessage({
message: '请先选择要导出的数据!',
type: 'warning'
});
return;
})
return
}
positioningtableRef.value.exportData({

View File

@@ -27,22 +27,23 @@
<span>{{ (form.pageNum - 1) * form.pageSize + row.rowIndex + 1 }}</span>
</template>
</vxe-table-column>
<vxe-table-column field="startTime" title="发生时" align="center"
<vxe-table-column field="startTime" title="暂降发生时" align="center" sortable width="200"
:show-overflow="true"></vxe-table-column>
<vxe-table-column field="gdName" title="供电公司" align="center"></vxe-table-column>
<vxe-table-column field="subName" :show-overflow="true" title="变电站" align="center"></vxe-table-column>
<vxe-table-column field="lineName" title="监测点" align="center"></vxe-table-column>
<vxe-table-column field="voltageId" title="电压等级(kV)" align="center"></vxe-table-column>
<vxe-table-column field="featureAmplitude" title="暂降(骤升)幅值(%)" align="center" width="140">
<vxe-table-column field="featureAmplitude" title="暂降(骤升)幅值(%)" sortable align="center" width="160">
<template #default="{ row }">
<span>{{ (row.featureAmplitude * 100).toFixed(2) }}</span>
</template>
</vxe-table-column>
<vxe-table-column field="duration" title="持续时间(s)" align="center" width="120"></vxe-table-column>
<vxe-table-column field="duration" title="持续时间(s)" align="center" sortable width="120"></vxe-table-column>
<vxe-table-column field="advanceType" title="触发类型" align="center" width="120"
:formatter="formFilter"></vxe-table-column>
<vxe-table-column field="advanceReason" title="暂降原因" align="center" width="120"
:formatter="formFilter"></vxe-table-column>
<vxe-table-column field="gdName" title="供电公司" align="center"></vxe-table-column>
<vxe-table-column field="subName" :show-overflow="true" title="变电站" align="center"></vxe-table-column>
<vxe-table-column field="lineName" title="监测点" align="center"></vxe-table-column>
<vxe-table-column field="voltageId" title="电压等级(kV)" align="center"></vxe-table-column>
</vxe-table>
<el-pagination class="mt10" :currentPage="form.pageNum" :page-size="form.pageSize"
:page-sizes="[10, 20, 50, 100]" background :layout="'sizes,total, ->, prev, pager, next, jumper'"

View File

@@ -56,37 +56,40 @@ const tableStore = new TableStore({
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ title: '变电站名称', field: 'subName', minWidth: '140' },
{ title: '监测点名称', field: 'lineName', minWidth: '130' },
{ title: '网络参数', field: 'ip', width: '120px' },
{ title: '电压等级(kV)', field: 'voltageScale', width: '120' },
{ title: '暂降发生时刻', field: 'startTime', width: '200' },
// { title: '触发类型', field: 'advanceType', minWidth: '130' },
{ title: '暂降原因', field: 'advanceReason', minWidth: '130' },
{
title: '触发类型',
field: 'eventType',
minWidth: '80',
formatter: (row: any) => {
return eventTypeOptions.find(item => item.id === row.cellValue)?.name || '/'
}
},
{ title: '暂降发生时刻', field: 'startTime', width: '200', sortable: true, },
{
title: '暂降(骤升)幅值(%)',
field: 'featureAmplitude',
minWidth: '140',
minWidth: '160',
sortable: true,
formatter: (row: any) => {
return Math.floor(row.cellValue * 10000) / 100
}
},
{ title: '持续时间(s)', field: 'duration', minWidth: '100' },
{ title: '持续时间(s)', field: 'duration', minWidth: '120' , sortable: true, },
{
title: '触发类型',
field: 'eventType',
minWidth: '100',
formatter: (row: any) => {
return eventTypeOptions.find(item => item.id === row.cellValue)?.name || '/'
}
},
{ title: '暂降原因', field: 'advanceReason', minWidth: '130' },
{ title: '变电站名称', field: 'subName', minWidth: '140' },
{ title: '监测点名称', field: 'lineName', minWidth: '130' },
{ title: '网络参数', field: 'ip', width: '120px' },
{ title: '电压等级(kV)', field: 'voltageScale', width: '120' },
// { title: '触发类型', field: 'advanceType', minWidth: '130' },
// { title: '严重度', field: 'severity', minWidth: '80' },
{
title: '操作',fixed: 'right',
title: '操作',
fixed: 'right',
width: '180',
render: 'buttons',
buttons: [
{
name: 'edit',
@@ -127,7 +130,6 @@ const tableStore = new TableStore({
],
beforeSearchFun: () => {
tableStore.table.params.lineId = monitoringPoint.state.lineId
},
loadCallback: () => {}
})
@@ -174,6 +176,7 @@ const download = () => {
document.body.appendChild(link)
link.click() //执行下载
document.body.removeChild(link) //释放标签
ElMessage.success('波形下载成功')
})
}
</script>

View File

@@ -3,21 +3,21 @@
<div style="height: 40vh">
<vxe-table v-loading="loading" height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
<vxe-column type="seq" title="序号" width="80px"></vxe-column>
<vxe-column field="startTime" title="发生时" width="180"></vxe-column>
<vxe-column field="duration" title="持续时间(s)" width="100"></vxe-column>
<vxe-column field="gdName" title="供电公司" min-width="150"></vxe-column>
<vxe-column field="subName" title="变电站" min-width="150"></vxe-column>
<vxe-column field="lineName" title="监测点" min-width="150"></vxe-column>
<vxe-column field="startTime" title="暂降发生时" width="200" sortable></vxe-column>
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="160" sortable>
<template #default="{ row }">
{{ (row.featureAmplitude * 100).toFixed(2) }}
</template>
</vxe-column>
<vxe-column field="duration" title="持续时间(s)" width="120" sortable></vxe-column>
<vxe-column field="advanceType" title="触发类型" width="100">
<template #default="{ row }">
{{ type.find(item => item.id === row.advanceType)?.name }}
</template>
</vxe-column>
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="150">
<template #default="{ row }">
{{ (row.featureAmplitude * 100).toFixed(2) }}
</template>
</vxe-column>
<vxe-column field="gdName" title="供电公司" min-width="140"></vxe-column>
<vxe-column field="subName" title="变电站" min-width="140"></vxe-column>
<vxe-column field="lineName" title="监测点名称" min-width="140"></vxe-column>
</vxe-table>
</div>
</el-dialog>

View File

@@ -23,14 +23,15 @@
<div style="flex: 1; overflow: hidden">
<vxe-table height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
<vxe-column field="startTime" title="发生时刻" width="200"></vxe-column>
<vxe-column field="lineName" title="监测点" width="120"></vxe-column>
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)">
<vxe-column field="startTime" title="暂降发生时刻" width="200" sortable></vxe-column>
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="160" sortable>
<template #default="{ row }">
{{ row.featureAmplitude.toFixed(2) }}
</template>
</vxe-column>
<vxe-column field="duration" title="持续时间(s)"></vxe-column>
<vxe-column field="duration" title="持续时间(s)" sortable width="120"></vxe-column>
<vxe-column field="lineName" title="监测点" width="120"></vxe-column>
</vxe-table>
</div>
</div>

View File

@@ -1,6 +1,6 @@
<template>
<div class="default-main">
<TableHeader date-picker area >
<TableHeader date-picker area>
<template v-slot:select>
<el-form-item label="统计类型">
<el-radio-group v-model="tableStore.table.params.comFlag">
@@ -48,10 +48,12 @@
</el-form-item>
</template>
<template #operation>
<el-button icon="el-icon-Download" type="primary" @click="exportEvent" :loading="loading">导出</el-button>
<el-button icon="el-icon-Download" type="primary" @click="exportEvent" :loading="loading">
报告生成
</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
<Table ref="tableRef" :checkboxConfig="checkboxConfig" />
</div>
</template>
<script setup lang="tsx">
@@ -64,7 +66,7 @@ import { getEventReport } from '@/api/event-boot/report'
import { ElMessage } from 'element-plus'
defineOptions({
name: 'Operationmanagement/terminalmanagement'
name: 'TransientReport/eventreports'
})
const dictData = useDictData()
const triggerType = dictData.getBasicData('Event_Statis')
@@ -82,6 +84,7 @@ const tableStore = new TableStore({
url: '/event-boot/report/getEventReport',
method: 'POST',
column: [
{ width: '60', type: 'checkbox' },
{
title: '序号',
@@ -93,19 +96,34 @@ const tableStore = new TableStore({
},
{
field: 'startTime',
title: '发生时刻',
title: '暂降发生时刻',
width: '180',
sortable: true,
formatter: (row: any) => {
return row.cellValue ? row.cellValue.replace('T', ' ') : '/'
}
},
{ field: 'gdName', title: '供电公司', minWidth: '120' },
{ field: 'subName', title: '变电站', minWidth: '120' },
{ field: 'ip', title: '网络参数', width: '120px' },
{ field: 'lineName', title: '监测点', minWidth: '120' },
{
field: 'featureAmplitude',
title: '暂降(骤升)幅值(%)',
width: '160',
sortable: true,
formatter: (row: any) => {
// return (row.cellValue * 100).toFixed(0)
return Math.floor(row.cellValue * 10000) / 100
}
},
{
field: 'duration',
title: '持续时间(s)',
width: '120',
sortable: true
},
{
field: 'eventType',
title: '触发类型',minWidth: '100' ,
title: '触发类型',
minWidth: '100',
formatter: (row: any) => {
return triggerType.filter(item => item.id === row.cellValue)[0].name
}
@@ -113,33 +131,30 @@ const tableStore = new TableStore({
{
field: 'advanceType',
title: '暂态类型',
minWidth: '100'
minWidth: '100',
formatter: (row: any) => {
return row.cellValue ? row.cellValue : '/'
}
},
{
field: 'advanceReason',
title: '暂态原因',
minWidth: '100'
minWidth: '100',
formatter: (row: any) => {
return row.cellValue ? row.cellValue : '/'
}
},
{ field: 'gdName', title: '供电公司', minWidth: '120' },
{ field: 'subName', title: '变电站', minWidth: '120' },
{ field: 'lineName', title: '监测点', minWidth: '120' },
{ field: 'ip', title: '网络参数', width: '120px' },
{
field: 'voltageScale',
title: '电压等级',
minWidth: '100'
},
{
field: 'featureAmplitude',
title: '暂降(骤升)幅值(%)',
width: '140',
formatter: (row: any) => {
// return (row.cellValue * 100).toFixed(0)
return Math.floor(row.cellValue * 10000) / 100
}
},
{
field: 'duration',
title: '持续时间(s)',
width: '100'
}
// { field: 'severity', title: '严重度' }
]
})
@@ -156,7 +171,11 @@ tableStore.table.params.statisticalType = dictData.getBasicData('Statistical_Typ
'Voltage_Level',
'Load_Type'
])[0]
const checkboxConfig = reactive<VxeTablePropTypes.CheckboxConfig<any>>({
checkMethod: ({ row }) => {
return row.fileFlag === 1
}
})
provide('tableStore', tableStore)
onMounted(() => {
@@ -178,15 +197,17 @@ const exportEvent = () => {
// }
// })
// })
const ids = tableStore.table.data.map((item: any) => item.eventId);
if (!tableStore.table.selection.length) {
ElMessage.warning('请选择数据')
return
}
const ids = tableStore.table.selection.map((item: any) => item.eventId)
loading.value = true
ElMessage('生成报告中,请稍等!')
getEventReport(ids)
.then((res: any) => {
if (res == undefined) {
if (res == undefined) {
loading.value = false
return
}
@@ -197,14 +218,14 @@ const exportEvent = () => {
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') // 创建a标签
link.href = url
link.download = '事件报告' // 设置下载的文件名
link.download = '事件报告' // 设置下载的文件名
document.body.appendChild(link)
link.click() //执行下载
document.body.removeChild(link)
loading.value = false
}) .catch(() => {
})
.catch(() => {
loading.value = false
})
}
</script>

View File

@@ -56,19 +56,20 @@ const list = ref([
)
}
},
{ field: 'startTime', title: '暂态事件发生时刻', width: '200' },
{ field: 'gdName', title: '供电公司' },
{ field: 'subName', title: '变电站' },
{ field: 'lineName', title: '监测点' },
{ field: 'voltageScale', title: '监测点电压等级' },
{ field: 'loadType', title: '干扰源类型' },
{ field: 'startTime', title: '暂态发生时刻', width: '200',sortable: true, },
{
field: 'featureAmplitude',
title: '暂降(骤升)幅值(%)',
title: '暂降(骤升)幅值(%)',sortable: true,width: '160',
formatter: ({ row }: any) => (row.featureAmplitude * 100).toFixed(2)
},
{ field: 'duration', title: '持续时间(s)' },
{ field: 'severity', title: '暂态事件严重度' }
{ field: 'duration', title: '持续时间(s)',sortable: true,width: '120', },
{ field: 'gdName', title: '供电公司' ,minWidth: '120'},
{ field: 'subName', title: '变电站' ,minWidth: '120'},
{ field: 'lineName', title: '监测点' ,minWidth: '120'},
{ field: 'voltageScale', title: '监测点电压等级' ,minWidth: '120'},
{ field: 'loadType', title: '干扰源类型' ,minWidth: '120'},
{ field: 'severity', title: '暂态事件严重度' ,minWidth: '120'}
]
}
]
@@ -86,7 +87,16 @@ const list = ref([
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'startTime', title: '暂降事件发生时刻', width: '200' },
{ field: 'startTime', title: '暂降发生时刻', width: '200',sortable: true, },
{
field: 'featureAmplitude',
title: '暂降(骤升)幅值(%)',
width: '160',sortable: true,
formatter: (row: any) => {
return Math.floor(row.cellValue * 10000) / 100
}
},
{ field: 'duration', title: '持续时间(s)', width: '120',sortable: true, },
{ field: 'gdName', title: '供电公司', width: '150' },
{ field: 'subName', title: '变电站', minWidth: '150' },
{ field: 'lineName', title: '监测点', minWidth: '150' },
@@ -99,15 +109,7 @@ const list = ref([
{ field: 'voltageScale', title: '电压等级', width: '80' },
{ field: 'loadType', title: '干扰源类型', width: '150' },
{
field: 'featureAmplitude',
title: '暂降(骤升)幅值(%)',
width: '150',
formatter: (row: any) => {
return Math.floor(row.cellValue * 10000) / 100
}
},
{ field: 'duration', title: '持续时间(s)', width: '120' },
{ field: 'advanceType', title: '暂降类型(机器判断)', width: '150' }
]
},