完成 区域报告 事件报告 迁移
This commit is contained in:
@@ -1,7 +1,15 @@
|
|||||||
import createAxios from '@/utils/request'
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
//波形高级分析
|
||||||
|
export function analysis(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/waveAnalysis/analysis',
|
||||||
|
method: 'post',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
// 分析记录管理
|
// 分析记录管理
|
||||||
export function queryRelevantLogPage(data: any) {
|
export function queryRelevantLogPage(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/process/queryRelevantLogPage',
|
url: '/advance-boot/process/queryRelevantLogPage',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
@@ -9,34 +17,34 @@ export function queryRelevantLogPage(data: any) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 删除策略
|
// 删除策略
|
||||||
export function delRelevantLog(data: any) {
|
export function delRelevantLog(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/process/delRelevantLog',
|
url: '/advance-boot/process/delRelevantLog',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params:data,
|
params: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 影响范围分析 查询
|
// 影响范围分析 查询
|
||||||
export function queryEventsAssPage(data: any) {
|
export function queryEventsAssPage(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/process/queryEventsAssPage',
|
url: '/advance-boot/process/queryEventsAssPage',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data,
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 启动关联分析
|
// 启动关联分析
|
||||||
export function processEvents(data: any) {
|
export function processEvents(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/process/processEvents',
|
url: '/advance-boot/process/processEvents',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params:data,
|
params: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 暂降源定位
|
// 暂降源定位
|
||||||
export function queryEventDetailByAssId(data: any) {
|
export function queryEventDetailByAssId(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/advance-boot/process/queryEventDetailByAssId',
|
url: '/advance-boot/process/queryEventDetailByAssId',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params:data,
|
params: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
34
src/api/event-boot/report.ts
Normal file
34
src/api/event-boot/report.ts
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
//事件报告
|
||||||
|
export function getEventReport(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/event-boot/report/getEventReport',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 生成报告
|
||||||
|
export function getAreaReport(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: "/event-boot/report/getAreaReport",
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
responseType: "blob",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//查询所有模板
|
||||||
|
export function getList(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: "/system-boot/EventTemplate/getList",
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
export function selectReleation(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: "/system-boot/EventTemplate/selectReleation",
|
||||||
|
method: "post",
|
||||||
|
params:data
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -821,11 +821,7 @@ export default {
|
|||||||
var newDivRms = $(
|
var newDivRms = $(
|
||||||
` <div style="height:${
|
` <div style="height:${
|
||||||
this.vh
|
this.vh
|
||||||
};overflow: hidden;"><div class='bx' id='${rmsId}' style="zoom:${
|
};overflow: hidden;"><div class='bx' id='${rmsId}' ></div></div>`
|
||||||
this.zoom
|
|
||||||
};transform:scale(${
|
|
||||||
1 / this.zoom
|
|
||||||
});transform-origin:0 0;"></div></div>`
|
|
||||||
);
|
);
|
||||||
newDivRms.insertAfter($("#rmsp"));
|
newDivRms.insertAfter($("#rmsp"));
|
||||||
$("#" + rmsId).css("height", picHeight);
|
$("#" + rmsId).css("height", picHeight);
|
||||||
|
|||||||
@@ -502,9 +502,7 @@ export default {
|
|||||||
for (var step = 1; step < waveDatas.length; step++) {
|
for (var step = 1; step < waveDatas.length; step++) {
|
||||||
var waveId = 'wave' + step
|
var waveId = 'wave' + step
|
||||||
var newDivShunshi = $(` <div style="height:${this.vh};overflow: hidden;">
|
var newDivShunshi = $(` <div style="height:${this.vh};overflow: hidden;">
|
||||||
<div class='bx1' id='${waveId}' style="zoom:${this.zoom};transform:scale(${
|
<div class='bx1' id='${waveId}'>
|
||||||
1 / this.zoom
|
|
||||||
});transform-origin:0 0;">
|
|
||||||
</div>
|
</div>
|
||||||
</div>`)
|
</div>`)
|
||||||
newDivShunshi.insertAfter($('#shushi'))
|
newDivShunshi.insertAfter($('#shushi'))
|
||||||
|
|||||||
@@ -17,13 +17,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<slot name="select"></slot>
|
<slot name="select"></slot>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template v-if="$slots.select || datePicker">
|
<template v-if="($slots.select || datePicker) ">
|
||||||
<el-button type="primary" @click="showSelectChange" v-if="showUnfoldButton">
|
<el-button type="primary" @click="showSelectChange" v-if="showUnfoldButton">
|
||||||
<Icon size="14" name="el-icon-ArrowUp" style="color: #fff" v-if="showSelect" />
|
<Icon size="14" name="el-icon-ArrowUp" style="color: #fff" v-if="showSelect" />
|
||||||
<Icon size="14" name="el-icon-ArrowDown" style="color: #fff" v-else />
|
<Icon size="14" name="el-icon-ArrowDown" style="color: #fff" v-else />
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button @click="onComSearch" type="primary" :icon="Search">查询</el-button>
|
<el-button @click="onComSearch" v-if="showSearch" type="primary" :icon="Search">查询</el-button>
|
||||||
<el-button @click="onResetForm" :icon="RefreshLeft">重置</el-button>
|
<el-button @click="onResetForm" v-if="showSearch" :icon="RefreshLeft">重置</el-button>
|
||||||
</template>
|
</template>
|
||||||
<slot name="operation"></slot>
|
<slot name="operation"></slot>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,11 +56,13 @@ const areaRef = ref()
|
|||||||
interface Props {
|
interface Props {
|
||||||
datePicker?: boolean
|
datePicker?: boolean
|
||||||
area?: boolean
|
area?: boolean
|
||||||
|
showSearch?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = withDefaults(defineProps<Props>(), {
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
datePicker: false,
|
datePicker: false,
|
||||||
area: false
|
area: false,
|
||||||
|
showSearch: true
|
||||||
})
|
})
|
||||||
// 动态计算table高度
|
// 动态计算table高度
|
||||||
const resizeObserver = new ResizeObserver(entries => {
|
const resizeObserver = new ResizeObserver(entries => {
|
||||||
@@ -153,9 +155,8 @@ const onComSearch = async () => {
|
|||||||
const onResetForm = () => {
|
const onResetForm = () => {
|
||||||
tableStore.onTableAction('reset', {})
|
tableStore.onTableAction('reset', {})
|
||||||
}
|
}
|
||||||
const setDatePicker = (list:any) => {
|
const setDatePicker = (list: any) => {
|
||||||
datePickerRef.value.setTimeOptions(list)
|
datePickerRef.value.setTimeOptions(list)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ onComSearch, areaRef, setDatePicker })
|
defineExpose({ onComSearch, areaRef, setDatePicker })
|
||||||
|
|||||||
@@ -86,9 +86,11 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
|||||||
response => {
|
response => {
|
||||||
removePending(response.config)
|
removePending(response.config)
|
||||||
options.loading && closeLoading(options) // 关闭loading
|
options.loading && closeLoading(options) // 关闭loading
|
||||||
|
|
||||||
if (
|
if (
|
||||||
response.data.code === 'A0000' ||
|
response.data.code === 'A0000' ||
|
||||||
response.data.type === 'application/json' ||
|
response.data.type === 'application/json' ||
|
||||||
|
response.data.type === 'application/octet-stream' ||
|
||||||
response.data.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
response.data.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||||
) {
|
) {
|
||||||
return options.reductDataFormat ? response.data : response
|
return options.reductDataFormat ? response.data : response
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div>
|
||||||
<div> </div>
|
<!--大屏页面 -->
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, reactive } from 'vue'
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|||||||
452
src/views/pqs/voltageSags/analyse/eventCorrelation/boxi.vue
Normal file
452
src/views/pqs/voltageSags/analyse/eventCorrelation/boxi.vue
Normal file
@@ -0,0 +1,452 @@
|
|||||||
|
<template>
|
||||||
|
<div v-loading="loading">
|
||||||
|
<div>
|
||||||
|
<div id="boxi" :style="`height:${vh};overflow: hidden;`">
|
||||||
|
<div class="bx" id="wave"></div>
|
||||||
|
</div>
|
||||||
|
<el-tabs type="border-card">
|
||||||
|
<el-tab-pane label="暂态波形上送" :style="'height:' + vhh">
|
||||||
|
<el-table
|
||||||
|
stripe
|
||||||
|
:data="Data"
|
||||||
|
:height="height"
|
||||||
|
border
|
||||||
|
style="width: 100%"
|
||||||
|
header-cell-class-name="table_header"
|
||||||
|
>
|
||||||
|
<el-table-column align="center" prop="number" label="事件段"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="波形起始点相位(°)">
|
||||||
|
<el-table-column align="center" prop="number" label="A相"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="B相"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="C相"></el-table-column>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="跳变段电压变化率(V/ms)">
|
||||||
|
<el-table-column align="center" prop="number" label="A相"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="B相"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="C相"></el-table-column>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="相位跳变(°)">
|
||||||
|
<el-table-column align="center" prop="number" label="A相"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="B相"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="C相"></el-table-column>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="总分段数目"></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="number"
|
||||||
|
label="三相电压不平衡度(%)"
|
||||||
|
width="180"
|
||||||
|
></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="暂降类型"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="number" label="暂降原因"></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { downloadWaveFile, getMonitorEventAnalyseWave } from '@/api/event-boot/transient'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import * as echarts from 'echarts'
|
||||||
|
import url from '@/assets/img/point.png'
|
||||||
|
import $ from 'jquery'
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
flag: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
DColor: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
boxoList: {
|
||||||
|
type: [Object, Array]
|
||||||
|
},
|
||||||
|
GJList: {
|
||||||
|
type: [Object, Array]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: true,
|
||||||
|
|
||||||
|
valA: 0,
|
||||||
|
isOpen: false,
|
||||||
|
time: '',
|
||||||
|
type: '',
|
||||||
|
severity: '',
|
||||||
|
iphasic: '',
|
||||||
|
eventValue: '',
|
||||||
|
persistTime: '',
|
||||||
|
lineName: '',
|
||||||
|
subName: '',
|
||||||
|
waveDatas: [],
|
||||||
|
|
||||||
|
Data: [],
|
||||||
|
height: null,
|
||||||
|
vhh: null,
|
||||||
|
ptpass: '',
|
||||||
|
waveHeight: undefined,
|
||||||
|
$wave: undefined,
|
||||||
|
color: '#006565',
|
||||||
|
charts: {},
|
||||||
|
arrpoints: [],
|
||||||
|
titles: '',
|
||||||
|
vh: null,
|
||||||
|
vw: null,
|
||||||
|
zoom: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
watch: {
|
||||||
|
value: function (a, b) {
|
||||||
|
if (a == 2) {
|
||||||
|
// $("#wave1").remove();
|
||||||
|
this.initWaves()
|
||||||
|
} else {
|
||||||
|
$('#wave1').remove()
|
||||||
|
this.initWaves()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.setHeight()
|
||||||
|
window.addEventListener('resize', this.setHeight)
|
||||||
|
this.$wave = $('#wave').eq(0)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.query()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
window.removeEventListener('resize', this.setHeight)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setHeight() {
|
||||||
|
this.zoom = 1 / document.body.style.zoom
|
||||||
|
if (this.flag) {
|
||||||
|
// console.log(123);
|
||||||
|
this.vh = mainHeight(250).height
|
||||||
|
} else {
|
||||||
|
// console.log(3333);
|
||||||
|
this.vh = mainHeight(270).height
|
||||||
|
}
|
||||||
|
},
|
||||||
|
query() {
|
||||||
|
this.loading = true
|
||||||
|
this.initWave()
|
||||||
|
},
|
||||||
|
|
||||||
|
//开始画图
|
||||||
|
initWave() {
|
||||||
|
//清除之前增加的div
|
||||||
|
// $("#wave ~ .bx1").remove();
|
||||||
|
$('div.bx1').remove()
|
||||||
|
//设置暂降触发点的位置 一次值与二次值Y轴不同(不是计算出来的)
|
||||||
|
// var height = $(window).height() - 90;
|
||||||
|
var picHeight
|
||||||
|
var show = true
|
||||||
|
|
||||||
|
//var v = $("#interval").val();
|
||||||
|
var isvisible = false
|
||||||
|
|
||||||
|
picHeight = this.vh
|
||||||
|
// this.$wave.css('height', picHeight)
|
||||||
|
// this.$wave.css('width', '100%')
|
||||||
|
$('#wave').css('height', picHeight)
|
||||||
|
$('#wave').css('width', this.vw)
|
||||||
|
|
||||||
|
var adata = []
|
||||||
|
var bdata = []
|
||||||
|
var cdata = []
|
||||||
|
var max = 0
|
||||||
|
var min = 0
|
||||||
|
//绘制横向第一个波形图
|
||||||
|
this.GJList.smp_x.forEach((item, ind) => {
|
||||||
|
if (this.GJList.smp_a[ind] > max) {
|
||||||
|
max = this.GJList.smp_a[ind]
|
||||||
|
} else if (this.GJList.smp_a[ind] < min) {
|
||||||
|
min = this.GJList.smp_a[ind]
|
||||||
|
}
|
||||||
|
if (this.GJList.smp_b[ind] > max) {
|
||||||
|
max = this.GJList.smp_b[ind]
|
||||||
|
} else if (this.GJList.smp_b[ind] < min) {
|
||||||
|
min = this.GJList.smp_b[ind]
|
||||||
|
}
|
||||||
|
if (this.GJList.smp_c[ind] > max) {
|
||||||
|
max = this.GJList.smp_c[ind]
|
||||||
|
} else if (this.GJList.smp_c[ind] < min) {
|
||||||
|
min = this.GJList.smp_c[ind]
|
||||||
|
}
|
||||||
|
|
||||||
|
adata.push([item, this.GJList.smp_a[ind]])
|
||||||
|
bdata.push([item, this.GJList.smp_b[ind]])
|
||||||
|
cdata.push([item, this.GJList.smp_c[ind]])
|
||||||
|
})
|
||||||
|
//绘制瞬时波形图
|
||||||
|
// const echarts = require('echarts')
|
||||||
|
let wave = document.getElementById('wave')
|
||||||
|
let _this = this
|
||||||
|
var myChartes = echarts.init(wave)
|
||||||
|
let echartsColor = {
|
||||||
|
WordColor: '#000',
|
||||||
|
thread: '#000000',
|
||||||
|
FigureColor: [
|
||||||
|
'#07CCCA ',
|
||||||
|
'#00BFF5',
|
||||||
|
'#FFBF00',
|
||||||
|
'#77DA63',
|
||||||
|
'#D5FF6B',
|
||||||
|
'#Ff6600',
|
||||||
|
'#FF9100',
|
||||||
|
'#5B6E96',
|
||||||
|
'#66FFCC',
|
||||||
|
'#B3B3B3',
|
||||||
|
'#FF00FF',
|
||||||
|
'#CC00FF',
|
||||||
|
'#FF9999'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
var option = {
|
||||||
|
tooltip: {
|
||||||
|
top: '10px',
|
||||||
|
trigger: 'axis',
|
||||||
|
borderColor: 'grey',
|
||||||
|
backgroundColor: '#fff',
|
||||||
|
style: {
|
||||||
|
color: '#000',
|
||||||
|
fontSize: '15px',
|
||||||
|
padding: 10
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
// console.log(params)
|
||||||
|
var tips = ''
|
||||||
|
tips += '时刻:' + params[0].data[0] + '</br/>'
|
||||||
|
|
||||||
|
for (var i = 0; i < params.length; i++) {
|
||||||
|
if (params[i].seriesName != '暂降触发点') {
|
||||||
|
tips += params[i].seriesName + ':' + params[i].value[1] + '<br/>'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tips
|
||||||
|
},
|
||||||
|
// axisPointer: {
|
||||||
|
// type: "cross",
|
||||||
|
// label: {
|
||||||
|
// color: "#fff",
|
||||||
|
// fontSize: 16,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontStyle: 'normal',
|
||||||
|
opacity: 0.35,
|
||||||
|
fontSize: 14
|
||||||
|
},
|
||||||
|
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||||
|
borderWidth: 0
|
||||||
|
},
|
||||||
|
|
||||||
|
title: {
|
||||||
|
left: 'center',
|
||||||
|
text: '发生时刻:' + this.boxoList.startTime + ' PT变化:' + this.boxoList.measurementPointName,
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 16,
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.WordColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: '5%',
|
||||||
|
top: '20',
|
||||||
|
verticalAlign: 'top',
|
||||||
|
enabled: true,
|
||||||
|
itemDistance: 5,
|
||||||
|
textStyle: {
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.WordColor,
|
||||||
|
rich: {
|
||||||
|
a: {
|
||||||
|
verticalAlign: 'middle'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
show: false,
|
||||||
|
feature: {
|
||||||
|
//restore: {},
|
||||||
|
saveAsImage: {
|
||||||
|
iconStyle: {
|
||||||
|
borderColor: _this.DColor ? '#fff' : echartsColor.WordColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'value',
|
||||||
|
name: '时刻',
|
||||||
|
boundaryGap: false,
|
||||||
|
min: this.GJList.smp_x[0],
|
||||||
|
max: this.GJList.smp_x[this.GJList.smp_x.length - 1] + 1,
|
||||||
|
title: {
|
||||||
|
text: 'ms',
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 12,
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.WordColor
|
||||||
|
},
|
||||||
|
enabled: true,
|
||||||
|
align: 'high'
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
alignWithLabel: true
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.thread
|
||||||
|
},
|
||||||
|
onZero: false //-----------重点
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.WordColor,
|
||||||
|
formatter: function (value, index) {
|
||||||
|
if (_this.valA != (value - 0).toFixed(0)) {
|
||||||
|
_this.valA = (value - 0).toFixed(0)
|
||||||
|
return (value - 0).toFixed(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//rotate:39
|
||||||
|
}
|
||||||
|
// data: this.syncExtremes,
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
name: 'kV',
|
||||||
|
title: {
|
||||||
|
align: 'high',
|
||||||
|
offset: 0,
|
||||||
|
text: 'kV',
|
||||||
|
rotation: 0,
|
||||||
|
y: -10
|
||||||
|
},
|
||||||
|
|
||||||
|
boundaryGap: [0, '100%'],
|
||||||
|
showLastLabel: true,
|
||||||
|
max: (max + 10).toFixed(2),
|
||||||
|
min: (min - 10).toFixed(2),
|
||||||
|
opposite: false,
|
||||||
|
nameTextStyle: {
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.WordColor
|
||||||
|
},
|
||||||
|
//minInterval: 1,
|
||||||
|
type: 'value',
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.thread
|
||||||
|
},
|
||||||
|
onZero: false //-----------重点
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: _this.DColor ? '#fff' : echartsColor.WordColor,
|
||||||
|
formatter: function (value, index) {
|
||||||
|
return (value - 0).toFixed(2)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
// 使用深浅的间隔色
|
||||||
|
color: [_this.DColor ? '#fff' : echartsColor.thread],
|
||||||
|
type: 'dashed',
|
||||||
|
opacity: 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '1%',
|
||||||
|
right: '40px',
|
||||||
|
bottom: '40px',
|
||||||
|
top: '55px',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
dataZoom: [
|
||||||
|
{
|
||||||
|
type: 'inside',
|
||||||
|
height: 13,
|
||||||
|
start: 0,
|
||||||
|
bottom: '20px',
|
||||||
|
end: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
start: 0,
|
||||||
|
height: 13,
|
||||||
|
bottom: '20px',
|
||||||
|
end: 100
|
||||||
|
}
|
||||||
|
],
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'A相',
|
||||||
|
type: 'line',
|
||||||
|
smooth: true,
|
||||||
|
symbol: 'none',
|
||||||
|
sampling: 'lttb',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#FFCC00'
|
||||||
|
},
|
||||||
|
data: adata
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'B相',
|
||||||
|
type: 'line',
|
||||||
|
smooth: true,
|
||||||
|
symbol: 'none',
|
||||||
|
sampling: 'lttb',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#009900'
|
||||||
|
},
|
||||||
|
data: bdata
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'C相',
|
||||||
|
type: 'line',
|
||||||
|
smooth: true,
|
||||||
|
symbol: 'none',
|
||||||
|
sampling: 'lttb',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#CC0000'
|
||||||
|
},
|
||||||
|
data: cdata
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '暂降触发点',
|
||||||
|
type: 'scatter',
|
||||||
|
symbol: 'image://' + url,
|
||||||
|
itemStyle: {
|
||||||
|
width: 16,
|
||||||
|
height: 16
|
||||||
|
},
|
||||||
|
data: [[0, min]]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
myChartes.setOption(option)
|
||||||
|
// window.echartsArr.push(myChartes)
|
||||||
|
setTimeout(() => {
|
||||||
|
myChartes.resize()
|
||||||
|
this.loading = false
|
||||||
|
}, 400)
|
||||||
|
|
||||||
|
//第一个波形图数据绘制完毕后,绘制后续的波形图
|
||||||
|
|
||||||
|
// let waveDatasTemp = waveDatas.slice(1);
|
||||||
|
// waveDatasTemp.reverse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<div v-show="view">
|
<div v-show="flag">
|
||||||
<TableHeader datePicker>
|
<TableHeader datePicker>
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="筛选">
|
<el-form-item label="筛选">
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template #operation>
|
<template #operation>
|
||||||
<el-button icon="el-icon-Tickets" type="primary" @click="analysis">分析记录管理</el-button>
|
<el-button icon="el-icon-Tickets" type="primary" @click="analysis1">分析记录管理</el-button>
|
||||||
<el-button icon="el-icon-SuccessFilled" type="primary" @click="firing">启动关联分析</el-button>
|
<el-button icon="el-icon-SuccessFilled" type="primary" @click="firing">启动关联分析</el-button>
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
</vxe-table>
|
</vxe-table>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
<div :style="{ height: pageHeight.height }" style="padding: 10px; overflow: hidden" v-if="!view">
|
<div :style="{ height: pageHeight.height }" style="padding: 10px; overflow: hidden" v-if="view2">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<span v-if="view2" style="font-size: 14px; font-weight: ; line-height: 30px">值类型选择:</span>
|
<span v-if="view2" style="font-size: 14px; font-weight: ; line-height: 30px">值类型选择:</span>
|
||||||
@@ -53,6 +53,7 @@
|
|||||||
:value="item.value"
|
:value="item.value"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
<el-button v-if="view2" class="ml10" type="primary" @click="AdvancedAnalytics">高级分析</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button
|
<el-button
|
||||||
@@ -96,7 +97,13 @@
|
|||||||
></rmsboxi>
|
></rmsboxi>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<!-- <xiebofenxi ref="child" :bxshuju="bxshuju" @backfh="back"></xiebofenxi> -->
|
</div>
|
||||||
|
<!-- 高级分析-->
|
||||||
|
|
||||||
|
<div v-if="view3" class="pd10">
|
||||||
|
<span style="font-weight: 500; font-size: 22px">高级分析</span>
|
||||||
|
<el-button type="primary" @click="gaoBack" style="float: right">返回</el-button>
|
||||||
|
<boxi :flag="true" :GJList="GJList" :boxoList="boxoList"></boxi>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -106,14 +113,16 @@ import TableStore from '@/utils/tableStore'
|
|||||||
import Table from '@/components/table/index.vue'
|
import Table from '@/components/table/index.vue'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { queryRelevantLogPage, delRelevantLog, processEvents } from '@/api/advance-boot/analyse.ts'
|
import { queryRelevantLogPage, delRelevantLog, processEvents, analysis } from '@/api/advance-boot/analyse.ts'
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import shushiboxi from '@/components/echarts/shushiboxi.vue'
|
import shushiboxi from '@/components/echarts/shushiboxi.vue'
|
||||||
import rmsboxi from '@/components/echarts/rmsboxi.vue'
|
import rmsboxi from '@/components/echarts/rmsboxi.vue'
|
||||||
|
import boxi from './boxi.vue'
|
||||||
import { getMonitorEventAnalyseWave } from '@/api/event-boot/transient.ts'
|
import { getMonitorEventAnalyseWave } from '@/api/event-boot/transient.ts'
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'govern/log/operation'
|
name: 'Advancedanalysis/eventcorrelation'
|
||||||
})
|
})
|
||||||
const dialogAnalysis = ref(false)
|
const dialogAnalysis = ref(false)
|
||||||
const AnalysisData = ref([])
|
const AnalysisData = ref([])
|
||||||
@@ -121,8 +130,13 @@ const pageHeight = mainHeight(20)
|
|||||||
const bxecharts = mainHeight(95).height as any
|
const bxecharts = mainHeight(95).height as any
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const view = ref(true)
|
const view = ref(true)
|
||||||
|
|
||||||
const view2 = ref(false)
|
const view2 = ref(false)
|
||||||
|
const view3 = ref(false)
|
||||||
const showBoxi = ref(true)
|
const showBoxi = ref(true)
|
||||||
|
const flag = ref(true)
|
||||||
|
const GJList = ref([])
|
||||||
|
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
url: '/advance-boot/process/querySagEventsPage',
|
url: '/advance-boot/process/querySagEventsPage',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -197,6 +211,7 @@ const tableStore = new TableStore({
|
|||||||
if (res != undefined) {
|
if (res != undefined) {
|
||||||
wp.value = res.data
|
wp.value = res.data
|
||||||
view.value = false
|
view.value = false
|
||||||
|
flag.value = false
|
||||||
view2.value = true
|
view2.value = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -219,13 +234,7 @@ const tableStore = new TableStore({
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
loadCallback: () => {
|
loadCallback: () => {}
|
||||||
tableStore.table.data.forEach((item: any) => {
|
|
||||||
item.failReason = item.failReason || '/'
|
|
||||||
item.result = item.result === 1 ? '成功' : '失败'
|
|
||||||
item.loginName = item.loginName || '/'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const bxactiveName = ref('ssbx')
|
const bxactiveName = ref('ssbx')
|
||||||
@@ -247,7 +256,7 @@ onMounted(() => {
|
|||||||
tableStore.index()
|
tableStore.index()
|
||||||
})
|
})
|
||||||
//分析记录管理
|
//分析记录管理
|
||||||
const analysis = () => {
|
const analysis1 = () => {
|
||||||
queryRelevantLogPage({}).then((res: any) => {
|
queryRelevantLogPage({}).then((res: any) => {
|
||||||
AnalysisData.value = res.data.records
|
AnalysisData.value = res.data.records
|
||||||
})
|
})
|
||||||
@@ -278,12 +287,16 @@ const details = (row: any) => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const nodeClick = async (e: anyObj) => {
|
// 高级分析
|
||||||
if (e.level == 2) {
|
const AdvancedAnalytics = () => {
|
||||||
loading.value = false
|
analysis({
|
||||||
tableStore.table.params.deviceId = e.id
|
eventIndex: boxoList.value.eventId
|
||||||
tableStore.index()
|
}).then(res => {
|
||||||
}
|
GJList.value = res.data
|
||||||
|
flag.value = false
|
||||||
|
view3.value = true
|
||||||
|
view2.value = false
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const changeView = () => {
|
const changeView = () => {
|
||||||
@@ -302,6 +315,11 @@ const bxhandleClick = (tab: any) => {
|
|||||||
}
|
}
|
||||||
const backbxlb = () => {
|
const backbxlb = () => {
|
||||||
view.value = true
|
view.value = true
|
||||||
|
flag.value = true
|
||||||
view2.value = false
|
view2.value = false
|
||||||
}
|
}
|
||||||
|
const gaoBack = () => {
|
||||||
|
view2.value = true
|
||||||
|
view3.value = false
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,7 +1,264 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>3</div>
|
<div class="default-main">
|
||||||
|
<TableHeader datePicker ref="TableHeaderRef">
|
||||||
|
<template #select>
|
||||||
|
<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-Download" type="primary" @click="exportEvent">导出</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
<!-- 波形分析 -->
|
||||||
|
<el-dialog v-model="dialogAnalysis" title="波形分析" width="70%">
|
||||||
|
<div class="mb10" style="display: flex; justify-content: space-between">
|
||||||
|
<span>事件关联编号为:{{ AssociationNumber }}</span>
|
||||||
|
<div>
|
||||||
|
<el-button icon="el-icon-Download" type="primary" @click="positioningexport">导出</el-button>
|
||||||
|
<el-button icon="el-icon-Download" type="primary" @click="bxcontrast">波形对比</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<vxe-table
|
||||||
|
height="500"
|
||||||
|
ref="positioningtableRef"
|
||||||
|
auto-resize
|
||||||
|
:data="AnalysisData"
|
||||||
|
v-bind="defaultAttribute"
|
||||||
|
>
|
||||||
|
<vxe-column type="checkbox" width="60"></vxe-column>
|
||||||
|
<vxe-table-column title="序号" width="70" type="seq" align="center">
|
||||||
|
<template v-slot="row">
|
||||||
|
<span>{{ (form.pageNum - 1) * form.pageSize + row.rowIndex + 1 }}</span>
|
||||||
|
</template>
|
||||||
|
</vxe-table-column>
|
||||||
|
<vxe-table-column
|
||||||
|
field="startTime"
|
||||||
|
title="发生时间"
|
||||||
|
align="center"
|
||||||
|
: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">
|
||||||
|
<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="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>
|
||||||
|
<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'"
|
||||||
|
:total="total"
|
||||||
|
@size-change="onTableSizeChange"
|
||||||
|
@current-change="onTableCurrentChange"
|
||||||
|
></el-pagination>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 波形分析 -->
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, onMounted, provide } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { queryEventDetailByAssId } from '@/api/advance-boot/analyse.ts'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { queryEventsAssPage } from '@/api/advance-boot/analyse.ts'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
defineOptions({
|
||||||
|
name: 'Advancedanalysis/eventwaveform'
|
||||||
|
})
|
||||||
|
const dialogAnalysis = ref(false)
|
||||||
|
const AnalysisData = ref([])
|
||||||
|
const AssociationNumber = ref()
|
||||||
|
const total = ref(0)
|
||||||
|
const tableRef = ref()
|
||||||
|
const TableHeaderRef = ref()
|
||||||
|
const dictData = useDictData()
|
||||||
|
const positioningtableRef = ref()
|
||||||
|
const reason = dictData.getBasicData('Event_Reason')
|
||||||
|
const type = dictData.getBasicData('Event_Type')
|
||||||
|
const form = ref({
|
||||||
|
pageSize: 20,
|
||||||
|
pageNum: 1,
|
||||||
|
id: ''
|
||||||
|
})
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/advance-boot/process/queryEventsAssPage',
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
field: 'index',
|
||||||
|
title: '序号',
|
||||||
|
width: '60',
|
||||||
|
formatter: (row: any) => {
|
||||||
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ field: 'timeId', title: '时间', width: '200' },
|
||||||
|
{ field: 'timeId', title: '事件关联分析名称', width: '200' },
|
||||||
|
{
|
||||||
|
field: 'contentDes',
|
||||||
|
title: '事件关联分析描述'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: '200',
|
||||||
|
render: 'buttons',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '事件查看',
|
||||||
|
type: 'primary',
|
||||||
|
icon: 'el-icon-Plus',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: row => {
|
||||||
|
AssociationNumber.value = row.timeId
|
||||||
|
form.value.id = row.eventAssId
|
||||||
|
source()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
loadCallback: () => {}
|
||||||
|
})
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
TableHeaderRef.value.setDatePicker([
|
||||||
|
{ label: '年份', value: 1 },
|
||||||
|
{ label: '季度', value: 2 },
|
||||||
|
{ label: '月份', value: 3 },
|
||||||
|
{ label: '周', value: 4 }
|
||||||
|
])
|
||||||
|
})
|
||||||
|
|
||||||
|
// 波形对比
|
||||||
|
const bxcontrast = () => {
|
||||||
|
if (positioningtableRef.value.getCheckboxRecords().length == 0) {
|
||||||
|
ElMessage({
|
||||||
|
message: '请选择数据!',
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 波形分析
|
||||||
|
const source = () => {
|
||||||
|
queryEventDetailByAssId(form.value).then(res => {
|
||||||
|
AnalysisData.value = res.data.records
|
||||||
|
total.value = res.data.total
|
||||||
|
dialogAnalysis.value = true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页
|
||||||
|
const onTableSizeChange = (val: number) => {
|
||||||
|
form.value.pageSize = val
|
||||||
|
source()
|
||||||
|
}
|
||||||
|
|
||||||
|
const onTableCurrentChange = (val: number) => {
|
||||||
|
form.value.pageNum = val
|
||||||
|
source()
|
||||||
|
}
|
||||||
|
// 数据过滤
|
||||||
|
const formFilter = (row: any) => {
|
||||||
|
if (row.column.property == 'advanceType') {
|
||||||
|
let title = ''
|
||||||
|
type.forEach(item => {
|
||||||
|
if (item.id == row.row.advanceType) {
|
||||||
|
title = item.name
|
||||||
|
} else if (row.row.advanceType == null || row.row.advanceType == '') {
|
||||||
|
title = '/'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return title
|
||||||
|
} else 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 exportEvent = () => {
|
||||||
|
queryEventsAssPage({
|
||||||
|
searchBeginTime: tableStore.table.params.searchBeginTime,
|
||||||
|
searchEndTime: tableStore.table.params.searchEndTime,
|
||||||
|
searchValue: tableStore.table.params.searchValue,
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: tableStore.table.total
|
||||||
|
}).then(res => {
|
||||||
|
tableRef.value.getRef().exportData({
|
||||||
|
filename: '影响范围分析', // 文件名字
|
||||||
|
sheetName: 'Sheet1',
|
||||||
|
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||||
|
useStyle: true,
|
||||||
|
data: res.data.records, // 数据源 // 过滤那个字段导出
|
||||||
|
columnFilterMethod: function (column, $columnIndex) {
|
||||||
|
return !(column.$columnIndex === 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 导出波形分析
|
||||||
|
const positioningexport = () => {
|
||||||
|
positioningtableRef.value.exportData({
|
||||||
|
filename: '事件波形分析', // 文件名字
|
||||||
|
sheetName: 'Sheet1',
|
||||||
|
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||||
|
useStyle: true,
|
||||||
|
data: dialogAnalysis.value, // 数据源 // 过滤那个字段导出
|
||||||
|
columnFilterMethod: function (column, $columnIndex) {
|
||||||
|
return !(column.$columnIndex === 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped></style>
|
<style scoped lang="scss">
|
||||||
|
::v-deep .el-pagination__sizes {
|
||||||
|
.el-select {
|
||||||
|
min-width: 128px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ import { queryEventDetailByAssId } from '@/api/advance-boot/analyse.ts'
|
|||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { queryEventsAssPage } from '@/api/advance-boot/analyse.ts'
|
import { queryEventsAssPage } from '@/api/advance-boot/analyse.ts'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'govern/log/operation'
|
name: 'Advancedanalysis/impactscope'
|
||||||
})
|
})
|
||||||
const dialogAnalysis = ref(false)
|
const dialogAnalysis = ref(false)
|
||||||
const AnalysisData = ref([])
|
const AnalysisData = ref([])
|
||||||
@@ -155,11 +155,7 @@ const tableStore = new TableStore({
|
|||||||
],
|
],
|
||||||
|
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
tableStore.table.data.forEach((item: any) => {
|
|
||||||
item.failReason = item.failReason || '/'
|
|
||||||
item.result = item.result === 1 ? '成功' : '失败'
|
|
||||||
item.loginName = item.loginName || '/'
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
@@ -227,7 +223,7 @@ const exportEvent = () => {
|
|||||||
searchEndTime: tableStore.table.params.searchEndTime,
|
searchEndTime: tableStore.table.params.searchEndTime,
|
||||||
searchValue: tableStore.table.params.searchValue,
|
searchValue: tableStore.table.params.searchValue,
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: tableStore.table.params.total
|
pageSize: tableStore.table.total
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
tableRef.value.getRef().exportData({
|
tableRef.value.getRef().exportData({
|
||||||
filename: '影响范围分析', // 文件名字
|
filename: '影响范围分析', // 文件名字
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<TableHeader date-picker area>
|
<TableHeader date-picker area>
|
||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
|
|
||||||
<el-form-item label="终端状态">
|
<el-form-item label="终端状态">
|
||||||
<el-select
|
<el-select
|
||||||
multiple
|
multiple
|
||||||
@@ -70,7 +69,15 @@ const tableStore = new TableStore({
|
|||||||
url: '/device-boot/runManage/getRuntimeData',
|
url: '/device-boot/runManage/getRuntimeData',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
{ title: '序号', type: 'seq', align: 'center', width: 60 },
|
{
|
||||||
|
title: '序号',
|
||||||
|
type: 'seq',
|
||||||
|
align: 'center',
|
||||||
|
width: 60,
|
||||||
|
formatter: (row: any) => {
|
||||||
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
{ title: '区域', field: 'areaName', align: 'center', width: 120 },
|
{ title: '区域', field: 'areaName', align: 'center', width: 120 },
|
||||||
{ title: '供电公司', field: 'gdName', align: 'center', width: 120 },
|
{ title: '供电公司', field: 'gdName', align: 'center', width: 120 },
|
||||||
{ title: '变电站', field: 'bdName', align: 'center', showOverflow: true, minWidth: 100 },
|
{ title: '变电站', field: 'bdName', align: 'center', showOverflow: true, minWidth: 100 },
|
||||||
|
|||||||
144
src/views/pqs/voltageSags/report/eventReports/index.vue
Normal file
144
src/views/pqs/voltageSags/report/eventReports/index.vue
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
|
<TableHeader date-picker area>
|
||||||
|
<template v-slot:select>
|
||||||
|
<el-form-item label="统计类型">
|
||||||
|
<el-radio-group v-model="tableStore.table.params.comFlag">
|
||||||
|
<el-radio-button label="1">在线</el-radio-button>
|
||||||
|
<el-radio-button label="0">离线</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="触发类型">
|
||||||
|
<el-select v-model.trim="tableStore.table.params.waveType" placeholder="请选择" clearable>
|
||||||
|
<el-option
|
||||||
|
v-for="item in triggerType"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="筛选">
|
||||||
|
<el-input v-model="tableStore.table.params.searchValue" placeholder="筛选数据" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="筛选数据">
|
||||||
|
<el-input
|
||||||
|
v-model="tableStore.table.params.searchValue"
|
||||||
|
placeholder="根据变电站,终端编号,型号或网络参数查询"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="tsx">
|
||||||
|
import { ref, onMounted, provide, reactive } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { getEventReport } from '@/api/event-boot/report.ts'
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'Operationmanagement/terminalmanagement'
|
||||||
|
})
|
||||||
|
const dictData = useDictData()
|
||||||
|
const triggerType = dictData.getBasicData('Event_Statis')
|
||||||
|
const tableRef = ref()
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
|
||||||
|
url: '/event-boot/report/getEventReport',
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
type: 'seq',
|
||||||
|
align: 'center',
|
||||||
|
width: 60,
|
||||||
|
formatter: (row: any) => {
|
||||||
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'startTime',
|
||||||
|
title: '暂态事件发生时刻',
|
||||||
|
width: '180'
|
||||||
|
},
|
||||||
|
{ field: 'gdName', title: '供电公司' },
|
||||||
|
{ field: 'subName', title: '变电站' },
|
||||||
|
{ field: 'ip', title: '网络参数' },
|
||||||
|
{ field: 'lineName', title: '监测点' },
|
||||||
|
{
|
||||||
|
field: 'eventType',
|
||||||
|
title: '触发类型',
|
||||||
|
formatter: (row: any) => {
|
||||||
|
return triggerType.filter(item => item.id === row.cellValue)[0].name
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'advanceType',
|
||||||
|
title: '暂态类型'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'advanceReason',
|
||||||
|
title: '暂态原因'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'voltageScale',
|
||||||
|
title: '电压等级',
|
||||||
|
width: '100'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'featureAmplitude',
|
||||||
|
title: '暂降(骤升)幅值(%)',
|
||||||
|
width: '140'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'duration',
|
||||||
|
title: '持续时间(s)',
|
||||||
|
width: '100'
|
||||||
|
},
|
||||||
|
{ field: 'severity', title: '严重度' }
|
||||||
|
],
|
||||||
|
|
||||||
|
})
|
||||||
|
tableStore.table.params.comFlag = '1'
|
||||||
|
tableStore.table.params.monitorFlag = 0
|
||||||
|
tableStore.table.params.powerFlag = 1
|
||||||
|
tableStore.table.params.serverName = 'event-boot'
|
||||||
|
tableStore.table.params.statisticalType = dictData.getBasicData('Statistical_Type', [
|
||||||
|
'Report_Type',
|
||||||
|
'Manufacturer',
|
||||||
|
'Voltage_Level',
|
||||||
|
'Load_Type'
|
||||||
|
])[0]
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
const exportEvent = () => {
|
||||||
|
|
||||||
|
let form: any = JSON.parse(JSON.stringify(tableStore.table.params))
|
||||||
|
form.pageNum = 1
|
||||||
|
form.pageSize = tableStore.table.total
|
||||||
|
getEventReport(form).then(res => {
|
||||||
|
tableRef.value.getRef().exportData({
|
||||||
|
filename: '事件报告', // 文件名字
|
||||||
|
sheetName: 'Sheet1',
|
||||||
|
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||||
|
useStyle: true,
|
||||||
|
data: res.data.records, // 数据源 // 过滤那个字段导出
|
||||||
|
columnFilterMethod: function (column, $columnIndex) {
|
||||||
|
return !(column.$columnIndex === 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<div> 监测点报告</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script setup lang='ts'>
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
289
src/views/pqs/voltageSags/report/regionalReports/index.vue
Normal file
289
src/views/pqs/voltageSags/report/regionalReports/index.vue
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
|
<TableHeader date-picker area :show-search="false">
|
||||||
|
<template v-slot:select>
|
||||||
|
<el-form-item label="报告类型">
|
||||||
|
<el-select v-model="tableStore.table.params.waveType" placeholder="请选择" clearable>
|
||||||
|
<el-option
|
||||||
|
v-for="item in waveTypeList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label=" 模板策略">
|
||||||
|
<el-select v-model="value" placeholder="请选择" @change="changeFn" clearable>
|
||||||
|
<el-option
|
||||||
|
v-for="item in templatePolicy"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">生成报告</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<div class="box" :style="`height: calc(${tableStore.table.height} + 45px)`">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">监测网分布</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.monitorDistributeChart">图形</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">暂降事件统计</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.eventCountTable">表格</el-checkbox>
|
||||||
|
<el-checkbox v-model="formInline.eventCountChart">图形</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">暂降密度</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.densityTable">表格</el-checkbox>
|
||||||
|
<el-checkbox v-model="formInline.densityChart">图形</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">暂降事件点</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.itic">ITIC</el-checkbox>
|
||||||
|
<el-checkbox v-model="formInline.f47">F47</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">概率分布</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.sagAmplitude">暂降幅值</el-checkbox>
|
||||||
|
<el-checkbox v-model="formInline.duration">持续时间</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">事件关联统计</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.eventRelevanceCountTable">表格</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">暂降原因</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.eventReasonTable">表格</el-checkbox>
|
||||||
|
<el-checkbox v-model="formInline.eventReasonChart">图形</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">暂降类型</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.eventTypeTable">表格</el-checkbox>
|
||||||
|
<el-checkbox v-model="formInline.eventTypeChart">图形</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="grid-content">
|
||||||
|
<div class="divBox">暂降热力图</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-checkbox v-model="formInline.thermodynamicChart">图形</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="tsx">
|
||||||
|
import { ref, onMounted, provide, reactive } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { getAreaReport, getList, selectReleation } from '@/api/event-boot/report.ts'
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'TransientReport/regionalreports'
|
||||||
|
})
|
||||||
|
const dictData = useDictData()
|
||||||
|
const waveTypeList = ref([
|
||||||
|
{
|
||||||
|
value: 0,
|
||||||
|
label: '暂态'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: '暂降'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
const templatePolicy: any = ref([])
|
||||||
|
const value = ref<string>('')
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '',
|
||||||
|
method: '',
|
||||||
|
column: []
|
||||||
|
})
|
||||||
|
const formInline: any = ref({
|
||||||
|
monitorDistributeChart: false,
|
||||||
|
eventCountTable: false,
|
||||||
|
eventCountChart: false,
|
||||||
|
densityTable: false,
|
||||||
|
densityChart: false,
|
||||||
|
itic: false,
|
||||||
|
f47: false,
|
||||||
|
sagAmplitude: false,
|
||||||
|
duration: false,
|
||||||
|
eventRelevanceCountTable: false,
|
||||||
|
eventReasonTable: false,
|
||||||
|
eventReasonChart: false,
|
||||||
|
eventTypeTable: false,
|
||||||
|
eventTypeChart: false,
|
||||||
|
thermodynamicChart: false
|
||||||
|
})
|
||||||
|
tableStore.table.params.waveType = 0
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// tableStore.index()
|
||||||
|
})
|
||||||
|
getList({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
type: 1
|
||||||
|
}).then(res => {
|
||||||
|
templatePolicy.value = res.data.records
|
||||||
|
})
|
||||||
|
// 模板策略变化
|
||||||
|
const changeFn = val => {
|
||||||
|
formInline.value = {
|
||||||
|
monitorDistributeChart: false,
|
||||||
|
eventCountTable: false,
|
||||||
|
eventCountChart: false,
|
||||||
|
densityTable: false,
|
||||||
|
densityChart: false,
|
||||||
|
itic: false,
|
||||||
|
f47: false,
|
||||||
|
sagAmplitude: false,
|
||||||
|
duration: false,
|
||||||
|
eventRelevanceCountTable: false,
|
||||||
|
eventReasonTable: false,
|
||||||
|
eventReasonChart: false,
|
||||||
|
eventTypeTable: false,
|
||||||
|
eventTypeChart: false,
|
||||||
|
thermodynamicChart: false
|
||||||
|
}
|
||||||
|
let data = {
|
||||||
|
id: val
|
||||||
|
}
|
||||||
|
|
||||||
|
selectReleation(data).then(res => {
|
||||||
|
res.data.forEach(item => {
|
||||||
|
for (let k in formInline.value) {
|
||||||
|
if (item.name == k) {
|
||||||
|
formInline.value[k] = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const exportEvent = () => {
|
||||||
|
formInline.value.statisticalType = dictData.getBasicData('Statistical_Type', [
|
||||||
|
'Report_Type',
|
||||||
|
'Manufacturer',
|
||||||
|
'Voltage_Level',
|
||||||
|
'Load_Type'
|
||||||
|
])[0]
|
||||||
|
formInline.value.monitorFlag = 2
|
||||||
|
formInline.value.powerFlag = 2
|
||||||
|
formInline.value.searchBeginTime = tableStore.table.params.searchBeginTime
|
||||||
|
formInline.value.searchEndTime = tableStore.table.params.searchEndTime
|
||||||
|
formInline.value.deptIndex = tableStore.table.params.deptIndex
|
||||||
|
formInline.value.monitorFlag = 2
|
||||||
|
formInline.value.powerFlag = 2
|
||||||
|
formInline.value.waveType = tableStore.table.params.waveType
|
||||||
|
formInline.value.interval = tableStore.table.params.timeFlag
|
||||||
|
getAreaReport(formInline.value).then(res => {
|
||||||
|
let blob = new Blob([res], {
|
||||||
|
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8'
|
||||||
|
})
|
||||||
|
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)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-select-dropdown__item.selected {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.grid-content {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.divBox {
|
||||||
|
width: 250px;
|
||||||
|
height: 31px;
|
||||||
|
margin: auto;
|
||||||
|
line-height: 32px;
|
||||||
|
border: 1px solid #c9c9c9;
|
||||||
|
&:hover {
|
||||||
|
border: 1px solid #002255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.box {
|
||||||
|
padding: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
border: 1px solid var(--el-border-color);
|
||||||
|
}
|
||||||
|
.el-divider--horizontal {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
11
src/views/pqs/voltageSags/report/weekly/index.vue
Normal file
11
src/views/pqs/voltageSags/report/weekly/index.vue
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<div>周报 </div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script setup lang='ts'>
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user