事件分析

This commit is contained in:
仲么了
2024-02-27 11:17:16 +08:00
parent ed90f125be
commit 92000b039f
5 changed files with 103 additions and 114 deletions

View File

@@ -0,0 +1,20 @@
import request from '@/utils/request'
export function downloadWaveFile(data: any) {
return request({
url: '/event-boot/transient/downloadWaveFile',
method: 'post',
data: data.lineId,
responseType: 'blob'
})
}
// 事件分析 shushiboxi 获取数据
export function getMonitorEventAnalyseWave(data:any) {
return request({
url: "/event-boot/transient/getTransientAnalyseWave",
method: "post",
data
});
}

View File

@@ -23,7 +23,7 @@ const tableStore = new TableStore({
method: 'POST', method: 'POST',
url: '/user-boot/user/checkUserList', url: '/user-boot/user/checkUserList',
column: [ column: [
// { width: '60', type: 'checkbox' }, { width: '60', type: 'checkbox' },
{ title: '名称', field: 'name' }, { title: '名称', field: 'name' },
{ title: '登录名', field: 'loginName' }, { title: '登录名', field: 'loginName' },
{ title: '角色', field: 'roleName' }, { title: '角色', field: 'roleName' },

View File

@@ -1,22 +1,22 @@
<template> <template>
<el-tabs v-model='activeName' type='border-card' class='event-statistics' tab-position='left' :style='height'> <el-tabs v-model='activeName' type='border-card' class='event-statistics' tab-position='left' :style='height'>
<el-tab-pane label='ITIC曲线分析' name='1'> <el-tab-pane lazy label='ITIC曲线分析' name='1'>
<ITICquxianfenxi v-if='activeName === "1"' /> <ITICquxianfenxi />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='SEMI F47 分析' name='2'> <el-tab-pane lazy label='SEMI F47 分析' name='2'>
<SEMIF47fenxi v-if='activeName === "2"' /> <SEMIF47fenxi />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='电压暂降表及密度' name='3'> <el-tab-pane lazy label='电压暂降表及密度' name='3'>
<Dianyazanjiangbiaojimidu v-if='activeName === "3"' /> <Dianyazanjiangbiaojimidu />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='暂降分布统计' name='4'> <el-tab-pane lazy label='暂降分布统计' name='4'>
<Zanjiangfenbutongji v-if='activeName === "4"' /> <Zanjiangfenbutongji />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='暂降幅值概率分布' name='5'> <el-tab-pane lazy label='暂降幅值概率分布' name='5'>
<Zanjiangfuzhigailvfenbu v-if='activeName === "5"' /> <Zanjiangfuzhigailvfenbu />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='持续时间概率分布' name='6'> <el-tab-pane lazy label='持续时间概率分布' name='6'>
<Chixushijiangailvfenbu v-if='activeName === "6"' /> <Chixushijiangailvfenbu />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</template> </template>

View File

@@ -3,57 +3,48 @@
<!-- 表头 --> <!-- 表头 -->
<TableHeader date-picker> <TableHeader date-picker>
<template v-slot:operation> <template v-slot:operation>
<el-button :icon='Plus' type='primary' @click='addUser'>添加</el-button> <el-button :icon='Download' type='primary' @click='download'>波形下载</el-button>
</template> </template>
</TableHeader> </TableHeader>
<!-- 表格 --> <!-- 表格 -->
<Table ref='tableRef' /> <Table ref='tableRef' :checkboxConfig='checkboxConfig' />
</div> </div>
</template> </template>
<script setup lang='ts'> <script setup lang='ts'>
import { Plus } from '@element-plus/icons-vue' import { Download } from '@element-plus/icons-vue'
import { ref, onMounted, provide, defineOptions } from 'vue' import { ref, onMounted, provide, reactive } from 'vue'
import { ElMessageBox, ElMessage } from 'element-plus' import { ElMessageBox, ElMessage } from 'element-plus'
import TableStore from '@/utils/tableStore' import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue' import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue' import TableHeader from '@/components/table/header/index.vue'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import { useMonitoringPoint } from '@/views/pms/voltageSags/monitoringPoint/online/store'
import { useDictData } from '@/stores/dictData'
import { checkUser } from '@/api/user-boot/user'
import { VxeTablePropTypes } from 'vxe-table'
import { downloadWaveFile, getMonitorEventAnalyseWave } from '@/api/event-boot/transient'
const dictData = useDictData()
const eventTypeOptions = dictData.getBasicData('Event_Statis')
const monitoringPoint = useMonitoringPoint()
const tableStore = new TableStore({ const tableStore = new TableStore({
publicHeight: 60, publicHeight: 60,
url: '/user-boot/user/list', url: '/event-boot/monitor/getMonitorEventAnalyseQuery',
method: 'POST', method: 'POST',
column: [ column: [
{ title: '用户名称', field: 'name', minWidth: '130' }, { width: '60', type: 'checkbox' },
{ title: '登录名', field: 'loginName', minWidth: '130' }, { title: '序号', type: 'seq', width: '60' },
{ title: '角色', field: 'roleName', minWidth: '130' }, { title: '变电站名称', field: 'subName', minWidth: '130' },
{ title: '部门', field: 'deptName', minWidth: '200' }, { title: '监测点名称', field: 'lineName', minWidth: '130' },
{ title: '电话', field: 'phoneShow', minWidth: '100' }, { title: '网络参数', field: 'ip', minWidth: '130' },
{ title: '注册时间', field: 'registerTime', minWidth: '130' }, { title: '电压等级(kV)', field: 'voltageScale', width: '100' },
{ title: '登录时间', field: 'loginTime', minWidth: '130' }, { title: '暂降发生时刻', field: 'startTime', width: '200' },
{ title: '类型', field: 'casualUserName', minWidth: '80' }, { title: '暂降类型', field: 'advanceType', minWidth: '130' },
{ { title: '暂降原因', field: 'advanceReason', minWidth: '130' },
title: '状态', { title: '触发类型', field: 'eventTypeName', minWidth: '80' },
field: 'state', { title: '暂降(骤升)幅值(%)', field: 'featureAmplitude', minWidth: '80' },
width: '100', { title: '持续时间(s)', field: 'duration', minWidth: '80' },
render: 'tag', { title: '严重度', field: 'severity', minWidth: '80' },
custom: {
0: 'danger',
1: 'success',
2: 'warning',
3: 'warning',
4: 'info',
5: 'danger'
},
replaceValue: {
0: '注销',
1: '正常',
2: '锁定',
3: '待审核',
4: '休眠',
5: '密码过期'
}
},
{ {
title: '操作', title: '操作',
width: '180', width: '180',
@@ -62,89 +53,67 @@ const tableStore = new TableStore({
buttons: [ buttons: [
{ {
name: 'edit', name: 'edit',
title: '编辑', title: '波形查看',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
disabled: row => {
return row.state !== 1
},
click: row => {
}
},
{
name: 'edit',
title: '修改密码',
type: 'primary', type: 'primary',
icon: 'el-icon-Lock', icon: 'el-icon-Lock',
render: 'basicButton', render: 'basicButton',
disabled: row => { disabled: row => {
return row.state !== 1 return row.fileFlag === 0
}, },
click: row => { click: row => {
ElMessageBox.prompt('二次校验密码确认', '注销用户', { getMonitorEventAnalyseWave({
confirmButtonText: '确认', id: row.eventId,
cancelButtonText: '取消', systemType: 0,
inputType: 'password' type: 0
}).then(({ value }) => { }).then(res => {
console.log(res)
ElMessage.error('暂无可下载的波形文件!')
}) })
} }
},
{
name: 'edit',
title: '激活',
type: 'primary',
icon: 'el-icon-Open',
render: 'basicButton',
disabled: row => {
return row.state !== 2 && row.state !== 5 && row.state !== 0 && row.state !== 4
},
click: row => {
}
},
{
name: 'edit',
title: '注销',
type: 'danger',
icon: 'el-icon-SwitchButton',
render: 'basicButton',
disabled: row => {
return row.state !== 1 && row.state !== 3
},
click: row => {
}
} }
] ]
} }
], ],
loadCallback: () => { loadCallback: () => {
tableStore.table.data.forEach((item: any) => { tableStore.table.data.forEach((item: any) => {
item.deptName = item.deptName || '/' item.eventTypeName = eventTypeOptions.find(item2 => item2.id === item.eventType)?.name
item.phoneShow = item.phone || '/' item.featureAmplitude = (item.featureAmplitude * 100).toFixed(0)
item.roleName = item.role.length ? item.role : '/'
switch (item.casualUser) {
case 0:
item.casualUserName = '临时用户'
break
case 1:
item.casualUserName = '长期用户'
break
default:
item.casualUserName = '/'
break
}
}) })
} }
}) })
provide('tableStore', tableStore) provide('tableStore', tableStore)
tableStore.table.params.searchState = 1 tableStore.table.params.lineId = monitoringPoint.state.lineId
tableStore.table.params.casualUser = -1 tableStore.table.params.searchState = 0
tableStore.table.params.orderBy = ''
onMounted(() => { onMounted(() => {
// 加载数据 // 加载数据
tableStore.index() tableStore.index()
}) })
const checkboxConfig = reactive<VxeTablePropTypes.CheckboxConfig<any>>({
const addUser = () => { checkMethod: ({ row }) => {
return row.fileFlag === 1
}
})
const download = () => {
if (!tableStore.table.selection.length) {
ElMessage.warning('请选择数据')
return
}
downloadWaveFile({
lineId: tableStore.table.selection.map((item: any) => item.eventId)
}).then((res: any) => {
if (res.type == 'application/json') {
ElMessage.warning('暂无可下载的波形文件!')
return
}
ElMessage.success('下载中。。。!')
let blob = new Blob([res], { type: 'application/zip' }) // console.log(blob) // var href = window.URL.createObjectURL(blob); //创建下载的链接
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') // 创建a标签
link.href = url
link.download = '波形分析下载' // 设置下载的文件名
document.body.appendChild(link)
link.click() //执行下载
document.body.removeChild(link) //释放标签
})
} }
</script> </script>

View File

@@ -1,16 +1,16 @@
<template> <template>
<div class='default-main' style='position: relative'> <div class='default-main' style='position: relative'>
<el-tabs v-model='activeName' type='border-card' class='demo-tabs'> <el-tabs v-model='activeName' type='border-card' class='demo-tabs'>
<el-tab-pane label='导航' name='1' :style='height'> <el-tab-pane label='导航' name='1' :style='height' lazy>
<Navigation @changeTab='changeTab' /> <Navigation @changeTab='changeTab' />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='事件统计' name='2' > <el-tab-pane label='事件统计' name='2' lazy>
<EventStatistics /> <EventStatistics />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='事件分析' name='3' > <el-tab-pane label='事件分析' name='3' lazy>
<EventStudy /> <EventStudy />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='运行情况' name='4' > <el-tab-pane label='运行情况' name='4' lazy>
<RunningCondition /> <RunningCondition />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>