Files
admin-sjzx/src/views/pqs/harmonicMonitoring/area/qualifiedRate.vue
2024-08-05 18:07:23 +08:00

621 lines
22 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="pd10" v-loading="loading" element-loading-text="数据加载中">
<div class="container" id="container">
<i @click="closeHandle" class="el-icon-circle-close coles"></i>
<el-form :inline="true" :model="formInline" label-width="90px" class="">
<!-- <div style="display: flex;"> -->
<el-form-item v-if="this.quyunames != undefined">
<el-switch
class="tableScopeSwitch"
:active-value="2"
:inactive-value="1"
@change="handleStatusChange"
:active-text="quyuname"
:inactive-text="quyunames"
inactive-color="#007878"
active-color="#666666"
v-model="this.formData.monitorFlag"
></el-switch>
</el-form-item>
<el-form-item label="统计类型:">
<el-select
v-model="formData.statisticalType"
@change="changeclasss"
placeholder="请选择统计类型"
style="width: 100%"
>
<el-option
v-for="item in classificationData"
:key="item.id"
:label="item.name"
:value="{
label: item.name,
value: item.id,
name: item.name,
id: item.id,
code: item.code,
sort: item.sort
}"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<Area ref="Area" @click="handleNodeClick"></Area>
</el-form-item>
<el-form-item label="电压等级:">
<el-select
v-model="formData.scale"
multiple
collapse-tags
clearable
placeholder="请选择电压等级"
style="width: 100%"
>
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="{
label: item.name,
value: item.id,
code: item.code,
name: item.name,
id: item.id,
sort: item.sort
}"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="终端厂家:">
<el-select
v-model="formData.manufacturer"
multiple
collapse-tags
clearable
placeholder="请选择终端厂家"
style="width: 100%"
>
<el-option
v-for="item in terminaloption"
:key="item.id"
:label="item.name"
:value="{
label: item.name,
value: item.id,
code: item.code,
name: item.name,
id: item.id,
sort: item.sort
}"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="干扰源类型:">
<el-select
v-model="formData.loadType"
multiple
collapse-tags
clearable
placeholder="请选择干扰源类型"
style="width: 100%"
>
<el-option
v-for="item in interfereoption"
:key="item.id"
:label="item.name"
:value="{
label: item.name,
value: item.id,
code: item.code,
name: item.name,
id: item.id,
sort: item.sort
}"
></el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<el-row v-show="falg">
<el-form :inline="true" class="demo-form-inline">
<el-form-item>
<timepicker
ref="timehg"
:id="id"
:interval="interval"
:treenode="treenode"
:tablename="tablename"
:name="name"
:path="path"
:dataTree="dataTree"
></timepicker>
<!-- <el-button class="el-icon-d-arrow-right" type="primary" round @click="timechange">时间选择</el-button> -->
</el-form-item>
<el-form-item>
<el-button @click="querfromdata" type="primary" icon="el-icon-search">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="text" @click="closeHandle">
条件筛选
<i :class="!view ? 'el-icon-arrow-down' : 'el-icon-arrow-right'"></i>
</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-tabs :style="'height:' + vh" type="border-card" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="稳态合格率表格" name="tab1">
<qualifiedataintegrity
:classvalue="classt"
:tableData="tableData"
:loading="loading"
></qualifiedataintegrity>
</el-tab-pane>
<el-tab-pane label="稳态合格率图表" name="tab2" id="hgceshi">
<!-- <span style="font-weight: bold;color:#333;position: absolute;right: 100px;top: 25px;">注意:<span style="color:#CC0000">{{'合格率<60%'}}红色</span><span style="color:#FFCC33">&nbsp&nbsp&nbsp{{'60%≤合格率<90%'}}黄色</span><span style="color:#339966"> &nbsp&nbsp&nbsp{{ '合格率≥90%' }}绿色</span></span> -->
<qualifiedechart
:loading="loading"
:title="title"
:classvalue="classt"
:xdata="xdata"
:ydata1="ydata1"
:ydata2="ydata2"
:ydata3="ydata3"
:ydata4="ydata4"
:ydata5="ydata5"
:ydata6="ydata6"
:ydata7="ydata7"
:ydata8="ydata8"
v-show="'tab2' == activeName"
ref="child"
></qualifiedechart>
</el-tab-pane>
</el-tabs>
</el-col>
</el-row>
</div>
</template>
<script>
import { dicData } from '../../../assets/commjs/dictypeData'
import api from '../../../api/integraliy/integraliy'
import timepicker from '../../components/TimePicker/index4'
import qualifiedataintegrity from '../../components/qualifiedataintegrity'
import qualifiedechart from '../../components/echarts/qualifiedechart'
import Area from '@/views/components/Area/Area.vue'
export default {
name: 'qualificationratestatistics',
components: {
Area,
timepicker,
qualifiedataintegrity,
qualifiedechart
},
computed: {},
data() {
return {
view: false,
falg: true,
quyuname: undefined,
quyunames: undefined,
dd: false,
formInline: {},
xdata: [],
ydata1: [],
ydata2: [],
ydata3: [],
ydata4: [],
ydata5: [],
ydata6: [],
ydata7: [],
ydata8: [],
classt: 'Power_Network',
tablename: 'tab1',
eacjartflag: true,
interval: 3,
treeData: [],
defaultProps: {
children: 'children',
label: 'name'
},
deptName: '',
deptIndex: '',
name: 'sjwzx',
path: '/harmonic-boot/harmonic/getIntegrityData',
asideheight: undefined,
id: 1,
title: '电网拓扑',
xdata: [],
ydata: [],
ydata1: [],
classvalue: 0,
activeName: 'tab1',
treenode: '',
dataTree: '',
voltageleve1: '',
//电压等级
voltageleveloption: [],
terminal: '',
terminaloption: [],
interfere: '',
interfereoption: [],
classificationData: [],
dictypeData: undefined,
deptIndex: '',
formData: {
//后面需要修改
deptIndex: '',
monitorFlag: 2,
powerFlag: 2,
loadType: [],
manufacturer: [],
searchBeginTime: '',
searchEndTime: '',
statisticalType: '',
scale: []
},
periodBeginTime: '',
periodEndTime: '',
timehuanbiValue: [],
tableData: [],
ping: '',
time: '',
loading: true,
vh: null,
cu: ''
}
},
created() {
this.setHeight()
window.addEventListener('resize', this.setHeight)
let data = window.sessionStorage.getItem('sysData')
let yudata = eval('(' + data + ')')
let str = yudata.dataReport.split('')
this.quyuname = str[0]
this.quyunames = str[1]
var info = window.sessionStorage.getItem('Info')
info = eval('(' + info + ')')
this.formData.deptIndex = info.deptId
this.getclassificationData()
this.getVoltage()
this.getManufacturer()
this.getLoadType()
},
mounted() {
if (this.$route.params.mapid0 != undefined && this.$route.params.mapName0 != undefined) {
setTimeout(() => {
this.RoutingChanges(this.$route.params.mapid0, this.$route.params.mapName0)
}, 500)
} else {
this.querfromdata()
}
},
beforeDestroy() {
window.removeEventListener('resize', this.setHeight)
},
methods: {
setHeight() {
this.vh = window.sessionStorage.getItem('appheight') - 55 + 'px'
},
timechange() {
this.dd = true
},
closeHandle() {
if (this.view) {
this.view = false
} else {
this.view = true
}
//console.log('关闭和展开');
const dom = document.getElementById('container')
const closeDom = document.getElementsByClassName('close')[0]
if (!dom.className.match(/(?:^|\s)expend(?!\S)/)) {
dom.className = 'container expend'
} else {
dom.className = 'container close-container'
}
},
//切换统计类型
changeclasss(val) {
this.cu = val.code
},
//时间格式转化
dateFormat(dateData1, dateData2) {
var timearr = []
var date = new Date(dateData1)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var f = date.getMinutes()
f = f < 10 ? '0' + f : f
var s = date.getSeconds()
s = s < 10 ? '0' + s : s
this.formData.searchBeginTime = y + '-' + m + '-' + d
timearr.push(this.formData.startTime)
var date = new Date(dateData2)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
var h = date.getHours()
h = h < 10 ? '0' + h : h
var f = date.getMinutes()
f = f < 10 ? '0' + f : f
var s = date.getSeconds()
s = s < 10 ? '0' + s : s
this.formData.searchEndTime = y + '-' + m + '-' + d
timearr.push(this.formData.endTime)
return timearr
},
//部门绑定区域触发区域树节点
handleNodeClick(data, node) {
this.deptId = data.id
this.formData.deptIndex = data.id
},
formatDate(date) {
// date = new Date();
date = new Date(Date.parse(date.replace(/-/g, '/'))) //转换成Data();
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
return y + '-' + m + '-' + d
},
//2次组件触发事件
querfromdata() {
this.classt = this.cu
//this.closeHandle()
this.dd = false
this.interval = this.$refs.timehg.intervald
this.loading = true
this.timeValue = this.$refs.timehg.timeValue
// this.timeValue = data;
// this.timehuanbiValue = timehbValue;
// this.periodBeginTime = this.timehuanbiValue[0];
// this.periodEndTime = this.timehuanbiValue[1];
// this.ping = this.periodBeginTime + "至" + this.periodEndTime;
this.dateFormat(this.timeValue[0], this.timeValue[1])
this.time = this.formData.searchBeginTime + '至' + this.formData.searchEndTime
api.getSteadyQualifyData(this.formData).then(res => {
if (res.code == 'A0000') {
if (res.data.length == 0) {
this.tableData = []
} else {
if (
res.data[0].children[0].children[0].children[0].children !== [] &&
res.data[0].children[0].children[0].children[0].children !== null
) {
res.data.forEach(m => {
m.id = this.guid()
m.children.forEach(n => {
n.id = this.guid()
n.children.forEach(d => {
d.id = this.guid()
d.children.forEach(p => {
p.id = this.guid()
p.children.forEach(h => {
h.id = this.guid()
})
})
})
})
})
} else {
res.data.forEach(m => {
m.id = this.guid()
m.children.forEach(n => {
n.id = this.guid()
n.children.forEach(d => {
d.id = this.guid()
d.children.forEach(p => {
p.id = this.guid()
})
})
})
})
}
this.tableData = res.data
}
this.gettubiao()
}
})
},
gettubiao() {
this.loading = true
var data = {
deptIndex: this.formData.deptIndex,
loadType: this.formData.loadType,
monitorFlag: this.formData.monitorFlag,
powerFlag: 2,
manufacturer: this.formData.manufacturer,
searchBeginTime: this.formData.searchBeginTime,
searchEndTime: this.formData.searchEndTime,
statisticalType: this.formData.statisticalType,
scale: this.formData.scale,
periodBeginTime: this.periodBeginTime,
periodEndTime: this.periodEndTime
}
this.ydata = []
this.ydata1 = []
this.ydata2 = []
this.ydata3 = []
this.ydata4 = []
this.ydata5 = []
this.ydata6 = []
this.ydata7 = []
this.ydata8 = []
api.getSteadyQualifyCensus(data).then(res => {
this.eacjartflag = true
if (res.code == 'A0000') {
this.xdata = res.data.type
this.ydata1 = res.data.freqOffset
this.ydata2 = res.data.flicker
this.ydata3 = res.data.voltageUnbalance
this.ydata4 = res.data.harmonicVoltage
this.ydata5 = res.data.voltageOffset
this.ydata6 = res.data.harmonicCurrent
this.ydata7 = res.data.negativeCurrent
this.ydata8 = res.data.interHarmonic
this.loading = false
this.$nextTick(() => {
this.$refs.child.qualifiedechart()
})
}
})
},
//标签切换
handleClick(tab, event) {
this.activeName = tab.name
if (tab.name == 'tab1') {
this.eacjartflag = false
this.$nextTick(() => {
this.$refs.child.qualifiedechart()
})
} else if (tab.name == 'tab2') {
// this.gettubiao();
this.$nextTick(() => {
// this.$refs.child.qualifiedechart();
})
}
},
//开关触发
handleStatusChange(val) {
this.formData.monitorFlag = val
},
//字典获取数据电压等级
getVoltage() {
var code = 'Dev_Voltage_Stand'
this.voltageleveloption = dicData(code, [])
this.formData.scale = this.voltageleveloption
},
//字典获取数据终端厂家
getManufacturer() {
var code = 'Dev_Manufacturers'
this.terminaloption = dicData(code, [])
this.formData.manufacturer = this.terminaloption
},
//字典获取数据干扰源类型
getLoadType() {
var code = 'Interference_Source'
this.interfereoption = dicData(code, [])
this.formData.loadType = this.interfereoption
},
//获取统计类型
getclassificationData() {
var code = 'Statistical_Type'
this.classificationData = dicData(code, ['Report_Type'])
this.formData.statisticalType = this.classificationData[0]
},
//获取数据完整性列表数据
getQueryData() {
let data = {
area: '0',
comparison: 0,
interference: [],
manufacturer: [],
searchBeginTime: '',
searchEndTime: '',
statisticalType: 0,
voltageLevel: []
}
},
guid() {
return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
let r = (Math.random() * 16) | 0,
v = c === 'x' ? r : (r & 0x3) | 0x8
return v.toString(16)
})
},
rest() {},
RoutingChanges(id, name) {
this.deptId = id
this.formData.deptIndex = id
this.$refs.Area.form.valueTitle = name
this.querfromdata()
}
},
watch: {
$route: {
handler: function (val, oldVal) {
if (val.params.mapid0 != undefined && val.params.mapName0 != undefined) {
this.$nextTick(() => {
this.RoutingChanges(val.params.mapid0, val.params.mapName0)
})
}
},
// 深度观察监听
deep: true
}
}
}
</script>
<style lang="less" scoped>
@import url('../../../styles/comStyle.less');
.container {
/* margin: auto; */
top: 0px;
right: 0;
width: 50%;
height: 0px;
z-index: 2000;
position: absolute;
background-color: #e4e7ebb9;
overflow: auto;
scroll-behavior: smooth;
-radius: 20px;
}
/* 隐藏滚动条 */
::-webkit-scrollbar {
display: block;
}
.expend {
animation: expend ease 5s forwards;
}
.close-container {
animation: no-expend ease 1s forwards;
}
@keyframes expend {
from {
top: 0px;
height: auto;
}
to {
height: auto;
top: 0px;
}
}
@keyframes no-expend {
from {
height: 20%;
top: 0px;
}
to {
top: 0px;
height: 0px;
}
}
.coles {
position: absolute;
right: 0;
font-size: 20px;
cursor: pointer;
}
</style>