优化波形

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

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