Files
admin-sjzx/src/views/pqs/panorama/components/line/history.vue
2024-12-23 09:29:59 +08:00

1520 lines
66 KiB
Vue

<template>
<DatePicker ref="datePickerRef" style="display: none" theCurrentTime />
<el-select class="conditions" v-model="formData.conditions" placeholder="请选择指标" style="width: 200px"
@change="History">
<el-option-group v-for="group in indexOptions" :key="group.label" :label="group.label">
<el-option v-for="item in group.options" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-option-group>
</el-select>
<MyEChart v-loading="loading" :options="list[0]?.option" :style="`height: calc(${rowHeight} - 31px)`" />
</template>
<script setup lang="ts">
import { onMounted, reactive, ref, nextTick } from 'vue'
import { mainHeight } from '@/utils/layout'
import { indexOptions } from '@/utils/dictionary'
import DatePicker from '@/components/form/datePicker/index.vue'
import MyEChart from '@/components/echarts/MyEchart.vue'
import { getHistoryResult } from '@/api/harmonic-boot/harmonic'
const prop = defineProps({
lineId: {
type: String
}
})
const datePickerRef = ref()
const loading = ref(true)
const traceability = ref<any>([])
const list = ref<any>([])
const rowHeight = mainHeight(-80, 3).height
const formData: any = reactive({
lineId: [],
searchBeginTime: '',
searchEndTime: '',
conditions: '10',
valueType: 1,
harmonic: 2,
inHarmonic: 1,
ptType: 0
})
const History = () => {
loading.value = true
formData.lineId = [prop.lineId]
formData.searchBeginTime = datePickerRef.value.timeValue[0]
formData.searchEndTime = datePickerRef.value.timeValue[1]
formData.condition = [formData.conditions]
getHistoryResult(formData).then(res => {
shujuchuli(res)
})
}
const shujuchuli = (res: any) => {
list.value = []
let shujuData = res.data
shujuData.forEach((item: any, i: number) => {
//判断是否存在暂降点
if (item.eventDetail !== null || item.eventDetail.length === 0) {
//向项别中添加暂降点
let chufa = []
item.phaiscType.push('暂态触发点')
//判断是否有限值(有上下限)
if (item.topLimit !== 0 && item.lowerLimit !== 0) {
item.phaiscType.push('上限')
item.phaiscType.push('下限')
if (item.minValue !== null && item.maxValue !== null) {
//最小值等于下限值
//图列为A,B,C,暂降,上限,下限
if (item.phaiscType.length == 6) {
let avalue = []
let bvalue = []
let cvalue = []
let topLimit = []
let lowerLimit = []
item.maxValue = item.topLimit
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
//上下限值
topLimit.push([item.value[j][0], item.topLimit])
lowerLimit.push([item.value[j][0], item.lowerLimit])
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([
item.eventDetail[k].time,
item.minValue.toFixed(3),
item.eventDetail[k].id,
99
])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue,
topLimit: topLimit,
lowerLimit: lowerLimit,
chufa: chufa
}
list.value.push(shuju)
}
//图列为频率等,暂降,上限,下限
if (item.phaiscType.length == 4) {
let gvalue = []
let topLimit = []
let lowerLimit = []
item.maxValue = item.topLimit
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
//上下限值
topLimit.push([item.value[j][0], item.topLimit])
lowerLimit.push([item.value[j][0], item.lowerLimit])
}
//数据为空
} else {
gvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([
item.eventDetail[k].time,
item.minValue.toFixed(3),
item.eventDetail[k].id,
99
])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
gvalue: gvalue,
topLimit: topLimit,
lowerLimit: lowerLimit,
chufa: chufa
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
//有上限值
if (item.topLimit !== 0 && item.lowerLimit == 0) {
item.phaiscType.push('上限')
if (item.minValue !== null && item.maxValue !== null) {
//最小值等于下限值
//图列为A,B,C,暂降,上限
if (item.phaiscType.length == 5) {
let avalue = []
let bvalue = []
let cvalue = []
let topLimit = []
item.maxValue = item.topLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
//上限值
topLimit.push([item.value[j][0], item.topLimit])
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([
item.eventDetail[k].time,
item.minValue.toFixed(3),
item.eventDetail[k].id,
99
])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue,
topLimit: topLimit,
chufa: chufa
}
list.value.push(shuju)
}
//图列为频率等,暂降,上限
if (item.phaiscType.length == 3) {
let gvalue = []
let topLimit = []
item.maxValue = item.topLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
//上限值
topLimit.push([item.value[j][0], item.topLimit])
}
//数据为空
} else {
gvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([item.eventDetail[k].time, item.minValue.toFixed(3)])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
gvalue: gvalue,
topLimit: topLimit,
chufa: chufa
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
//有下限值
if (item.topLimit == 0 && item.lowerLimit !== 0) {
item.phaiscType.push('下限')
if (item.minValue !== null && item.maxValue !== null) {
//最小值等于下限值
//图列为A,B,C,暂降,下限
if (item.phaiscType.length == 5) {
let avalue = []
let bvalue = []
let cvalue = []
let lowerLimit = []
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
//下限值
lowerLimit.push([item.value[j][0], item.lowerLimit.toFixed(3)])
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([item.eventDetail[k].time, item.minValue.toFixed(3)])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue,
lowerLimit: lowerLimit,
chufa: chufa
}
list.value.push(shuju)
}
//图列为频率等,暂降,下限
if (item.phaiscType.length == 3) {
let gvalue = []
let lowerLimit = []
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
//下限值
lowerLimit.push([item.value[j][0], item.lowerLimit.toFixed(3)])
}
//数据为空
} else {
gvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([item.eventDetail[k].time, item.minValue.toFixed(3)])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
gvalue: gvalue,
lowerLimit: lowerLimit,
chufa: chufa
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
//无限值
if (item.topLimit == 0 && item.lowerLimit == 0) {
if (item.minValue !== null && item.maxValue !== null) {
//最小值等于下限值
//图列为A,B,C,暂降
if (item.phaiscType.length == 4) {
let avalue = []
let bvalue = []
let cvalue = []
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([
item.eventDetail[k].time,
item.minValue.toFixed(3),
item.eventDetail[k].id,
99
])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: item.minValue > 1 ? (item.minValue - 0.5).toFixed(3) : item.minValue.toFixed(3),
maxValue: item.maxValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue,
chufa: chufa
}
list.value.push(shuju)
}
//图列为频率等,暂降
if (item.phaiscType.length == 2) {
let gvalue = []
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
}
//数据为空
} else {
gvalue = []
}
//不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([
item.eventDetail[k].time,
item.minValue.toFixed(3),
item.eventDetail[k].id,
99
])
}
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: item.minValue.toFixed(3),
maxValue: item.maxValue.toFixed(3),
gvalue: gvalue,
chufa: chufa
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
} else if (item.eventDetail == null) {
//判断是否有限值(有上下限)
if (item.topLimit !== 0 && item.lowerLimit !== 0) {
item.phaiscType.push('上限')
item.phaiscType.push('下限')
if (item.minValue !== null && item.maxValue !== null) {
//最小值等于下限值
//图列为A,B,C,上限,下限
if (item.phaiscType.length == 5) {
let avalue = []
let bvalue = []
let cvalue = []
let topLimit = []
let lowerLimit = []
item.maxValue = item.topLimit
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
//上下限值
topLimit.push([item.value[j][0], item.topLimit.toFixed(3)])
lowerLimit.push([item.value[j][0], item.lowerLimit.toFixed(3)])
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue,
topLimit: topLimit,
lowerLimit: lowerLimit
}
list.value.push(shuju)
}
//图列为频率等,上限,下限
if (item.phaiscType.length == 3) {
let gvalue = []
let topLimit = []
let lowerLimit = []
item.maxValue = item.topLimit
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
//上下限值
topLimit.push([item.value[j][0], item.topLimit.toFixed(3)])
lowerLimit.push([item.value[j][0], item.lowerLimit.toFixed(3)])
}
//数据为空
} else {
gvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
gvalue: gvalue,
topLimit: topLimit,
lowerLimit: lowerLimit,
chufa: []
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
//有上限值
if (item.topLimit !== 0 && item.lowerLimit == 0) {
item.phaiscType.push('上限')
if (item.minValue !== null) {
//最小值等于下限值
//图列为A,B,C,上限
if (item.phaiscType.length == 4) {
let avalue = []
let bvalue = []
let cvalue = []
let topLimit = []
item.maxValue = item.topLimit
// item.minValue=item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
//上限值
topLimit.push([item.value[j][0], item.topLimit.toFixed(3)])
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
maxValue: item.maxValue.toFixed(3),
minValue: item.minValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue,
topLimit: topLimit
}
list.value.push(shuju)
}
//图列为频率等,上限
if (item.phaiscType.length == 2) {
let gvalue = []
let topLimit = []
item.maxValue = item.topLimit
// item.minValue=item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
//上限值
topLimit.push([item.value[j][0], item.topLimit.toFixed(3)])
}
//数据为空
} else {
gvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: item.minValue.toFixed(3),
maxValue: item.maxValue.toFixed(3),
gvalue: gvalue,
topLimit: topLimit
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
//有下限值
if (item.topLimit == 0 && item.lowerLimit !== 0) {
item.phaiscType.push('下限')
if (item.minValue !== null) {
//最小值等于下限值
//图列为A,B,C,下限
if (item.phaiscType.length == 4) {
let avalue = []
let bvalue = []
let cvalue = []
let lowerLimit = []
// item.maxValue=item.topLimit
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
//下限值
lowerLimit.push([item.value[j][0], item.lowerLimit.toFixed(3)])
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: item.minValue.toFixed(3),
maxValue: item.maxValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue,
lowerLimit: lowerLimit
}
list.value.push(shuju)
}
//图列为频率等,下限
if (item.phaiscType.length == 2) {
let gvalue = []
let lowerLimit = []
// item.maxValue=item.topLimit
item.minValue = item.lowerLimit
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
//下限值
lowerLimit.push([item.value[j][0], item.lowerLimit.toFixed(3)])
}
//数据为空
} else {
gvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: item.minValue.toFixed(3),
maxValue: item.maxValue.toFixed(3),
gvalue: gvalue,
lowerLimit: lowerLimit
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
//无限值
if (item.topLimit == 0 && item.lowerLimit == 0) {
if (item.minValue !== null) {
//最小值等于下限值
//图列为A,B,C
if (item.phaiscType.length == 3) {
let avalue = []
let bvalue = []
let cvalue = []
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
avalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
avalue.push([])
}
//判断存在缺失值b
if (item.value[j][2] != undefined) {
bvalue.push([item.value[j][0], item.value[j][2].toFixed(3)])
} else {
bvalue.push([])
}
//判断存在缺失值c
if (item.value[j][3] != undefined) {
cvalue.push([item.value[j][0], item.value[j][3].toFixed(3)])
} else {
cvalue.push([])
}
}
//数据为空
} else {
avalue = []
bvalue = []
cvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: item.minValue.toFixed(3),
maxValue: item.maxValue.toFixed(3),
avalue: avalue,
bvalue: bvalue,
cvalue: cvalue
}
list.value.push(shuju)
}
//图列为频率等
if (item.phaiscType.length == 1) {
let gvalue = []
//判断数据是否存在
if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) {
//判断存在缺失值a
if (item.value[j][1] != undefined) {
gvalue.push([item.value[j][0], item.value[j][1].toFixed(3)])
} else {
gvalue.push([])
}
}
//数据为空
} else {
gvalue = []
}
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: item.minValue.toFixed(3),
maxValue: item.maxValue.toFixed(3),
gvalue: gvalue
}
list.value.push(shuju)
}
} else {
let shuju = {
id: 'qushifenx' + i,
title: item.lineName + '--' + item.targetName,
targetName: item.targetName,
legend: item.phaiscType,
valueName: item.unit[0],
minValue: null,
avalue: [],
bvalue: [],
cvalue: [],
topLimit: [],
lowerLimit: [],
chufa: []
}
list.value.push(shuju)
}
}
}
})
rendering()
}
const rendering = () => {
list.value.forEach((item: any) => {
let opitonserise: any[] = []
item.legend.forEach((item2: any) => {
if (item.avalue !== undefined && (item2 == 'A相' || item2 == 'AB相' || item2 == '零序电压')) {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
smooth: true,
itemStyle: {
normal: {
color: '#FFCC00'
}
},
data: item.avalue
}
opitonserise.push(data)
} else if (item.bvalue !== undefined && (item2 == 'B相' || item2 == 'BC相' || item2 == '正序电压')) {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
smooth: true,
itemStyle: {
normal: {
color: '#339900'
}
},
data: item.bvalue
}
opitonserise.push(data)
} else if (item.cvalue !== undefined && (item2 == 'C相' || item2 == 'CA相' || item2 == '负序电压')) {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
smooth: true,
barWidth: 22,
itemStyle: {
normal: {
color: '#CC0000'
}
},
data: item.cvalue
}
opitonserise.push(data)
} else if (item.topLimit !== undefined && item2 == '上限') {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
smooth: true,
itemStyle: {
normal: {
color: '#FF33FF',
lineStyle: {
width: 2,
color: '#FF33FF',
type: 'dotted' //'dotted'虚线 'solid'实线
}
}
},
data: item.topLimit
}
opitonserise.push(data)
} else if (item.lowerLimit !== undefined && item2 == '下限') {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
smooth: true,
barWidth: 22,
itemStyle: {
normal: {
color: '#3399FF',
lineStyle: {
width: 2,
color: '#3399FF',
type: 'dotted' //'dotted'虚线 'solid'实线
}
}
},
data: item.lowerLimit
}
opitonserise.push(data)
} else if (item.chufa !== undefined && item2 == '暂态触发点') {
console.log(123, new URL('@/assets/point.png', import.meta.url).href)
let data = {
name: item2,
type: 'scatter',
symbol: `image://` + new URL('@/assets/point.png', import.meta.url).href,
symbolSize: 16,
itemStyle: {
width: '16px',
height: '16px'
},
data: item.chufa
}
opitonserise.push(data)
} else if (item.gvalue !== undefined && item2 == '频率') {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
smooth: true,
itemStyle: {
normal: {
color: '#990099',
lineStyle: {
width: 2,
color: '#990099',
type: 'solid' //'dotted'虚线 'solid'实线
}
}
},
data: item.gvalue
}
opitonserise.push(data)
} else if (item.gvalue !== undefined && item2 == '负序电流') {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
barWidth: 22,
itemStyle: {
normal: {
color: '#999933'
}
},
data: item.gvalue
}
opitonserise.push(data)
} else if (item.gvalue !== undefined && item2 == '三相电压不平衡度') {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
barWidth: 22,
itemStyle: {
normal: {
color: '#FF6600'
}
},
data: item.gvalue
}
opitonserise.push(data)
} else if (
item.gvalue !== undefined &&
(item2 == '三相总有功功率' || item2 == '三相总无功功率' || item2 == '三相总视在功率')
) {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
barWidth: 22,
itemStyle: {
normal: {
color: '#0033ff'
}
},
data: item.gvalue
}
opitonserise.push(data)
} else if (item.gvalue !== undefined && (item2 == '总视在功率因数' || item2 == '总位移功率因数')) {
let data = {
name: item2,
symbol: 'none',
symbolSize: 5,
type: 'line',
barWidth: 22,
itemStyle: {
normal: {
color: '#00FF00'
}
},
data: item.gvalue
}
opitonserise.push(data)
}
})
if (item.valueName == undefined) {
item.valueName = '无'
}
// console.log('渲染数据体', opitonserise)
item.serise = opitonserise
})
getEcharts()
}
const getEcharts = () => {
list.value.forEach((item: any, i: number) => {
item.option = {
backgroundColor: '#fff',
title: {
left: 'center',
text: item.title
},
tooltip: {
trigger: 'axis',
axisPointer: {
//type: "shadow",
type: 'cross', // 默认为直线,可选为:'line' | 'shadow'
label: {
color: '#fff',
fontSize: 16
}
},
textStyle: {
color: '#fff',
fontStyle: 'normal',
opacity: 0.35,
fontSize: 14
},
backgroundColor: 'rgba(0,0,0,0.55)',
formatter: function (params: any) {
let tips = ''
tips += '时刻:' + params[0].data[0] + '</br/>'
for (let i = 0; i < params.length; i++) {
if (params[i].seriesName == '暂态触发点') {
tips += ''
return tips
}
if (params[i].seriesName == 'A相谐波电流方向') {
tips +=
params[i].value[1] > 0
? 'A相谐波电流方向:流入<br/>'
: params[i].value[1] == 0
? 'A相谐波电流方向:无<br/>'
: 'A相谐波电流方向:流出<br/>'
} else if (params[i].seriesName == 'B相谐波电流方向') {
tips +=
params[i].value[1] > 0
? 'B相谐波电流方向:流入<br/>'
: params[i].value[1] == 0
? 'B相谐波电流方向:无<br/>'
: 'B相谐波电流方向:流出<br/>'
} else if (params[i].seriesName == 'C相谐波电流方向') {
tips +=
params[i].value[1] > 0
? 'C相谐波电流方向:流入<br/>'
: params[i].value[1] == 0
? 'C相谐波电流方向:无<br/>'
: 'C相谐波电流方向:流出<br/>'
} else if (params[i].seriesName == '总谐波电流方向') {
tips +=
params[i].value[1] > 0
? '总谐波电流方向:流入<br/>'
: params[i].value[1] == 0
? '总谐波电流方向:无<br/>'
: '总谐波电流方向:流出<br/>'
} else if (params[i].seriesName == '正序电压') {
let str = (params[i].value[1] * 1).toString()
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
let str1 = str.replace(reg, '$1,')
tips += params[i].seriesName + ':' + str1 + 'kV<br/>'
} else if (params[i].seriesName == '零序电压' || params[i].seriesName == '负序电压') {
let str = (params[i].value[1] * 1).toString()
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
let str1 = str.replace(reg, '$1,')
tips += params[i].seriesName + ':' + str1 + 'V<br/>'
} else if (params[i].seriesName !== '正序电压') {
let str = (params[i].value[1] * 1).toString()
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
let str1 = str.replace(reg, '$1,')
tips += params[i].seriesName + ':' + str1 + '<br/>'
} else {
let str = (params[i].value[2] * 1).toString()
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
let str1 = str.replace(reg, '$1,')
tips += params[i].seriesName + ':' + str1 + '<br/>'
let str2 = (params[i].value[3] * 1).toString()
let reg2 = str2.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
let str12 = str.replace(reg2, '$1,')
// if(params[i].seriesName){
// }
tips += params[i].seriesName + ':' + str12 + '<br/>'
}
}
return tips
}
},
legend: {
left: '140px',
verticalAlign: 'top',
enabled: true,
itemDistance: 5,
textStyle: {
rich: {
a: {
verticalAlign: 'middle'
}
},
padding: [0, 0, 0, 0] //[上、右、下、左]
}
},
xAxis: [
{
type: 'time',
axisLine: {
show: true,
onZero: false
},
axisLabel: {
textStyle: {
fontFamily: 'dinproRegular'
}
}
}
],
toolbox: {
show: true,
feature: {
dataZoom: {
// bottom: '10px',
yAxisIndex: 'none'
}
}
},
yAxis: [
{
type: 'value',
min: item.minValue,
name: item.valueName,
axisLabel: {
interval: 0,
formatter: function (value: any) {
return value.toFixed(3)
},
left: '20px'
},
axisLine: {
show: true,
onZero: false, //-----------重点
lineStyle: {}
},
splitLine: {
lineStyle: {
// 使用深浅的间隔色
type: 'dashed',
opacity: 0.5
}
}
}
],
series: item.serise
}
let aValues = []
let bValues = []
let CValues = []
let ZValues = []
if (
traceability.value.length > 0 &&
traceability.value[0].value != null &&
traceability.value[0].value.length > 0
) {
for (let i = 0; i < traceability.value[0].value.length; i++) {
let T = traceability.value[0].value[i][0]
let A = traceability.value[0].value[i][1]
let B = traceability.value[0].value[i][2]
let C = traceability.value[0].value[i][3]
let Z = A + B + C
aValues.push([T, A > 0 ? 1 : A == 0 ? 0 : -1])
bValues.push([T, B > 0 ? 1 : B == 0 ? 0 : -1])
CValues.push([T, C > 0 ? 1 : C == 0 ? 0 : -1])
ZValues.push([T, Z > 0 ? 1 : Z == 0 ? 0 : -1])
}
}
if (item.targetName == '谐波电流方向') {
item.option.tooltip.axisPointer = null
item.option.yAxis[0] = {
type: 'value',
interval: 1,
min: -2, //最小值
max: 2,
axisLine: {
show: true,
onZero: false //-----------重点
},
splitLine: {
lineStyle: {
// 使用深浅的间隔色
type: 'dashed',
opacity: 0.5
}
},
axisLabel: {
formatter: function (value: any) {
if (value == 0) {
return '无'
} else if (value == -1) {
return '流出'
} else if (value == 1) {
return '流入'
}
}
}
}
item.option.series = [
{
name: 'A相谐波电流方向',
type: 'line',
data: aValues,
symbol: 'none',
symbolSize: 0,
itemStyle: {
normal: {
color: '#FFCC00'
}
}
},
{
name: 'B相谐波电流方向',
type: 'line',
data: bValues,
symbol: 'none',
symbolSize: 0,
itemStyle: {
normal: {
color: '#339900'
}
}
},
{
name: 'C相谐波电流方向',
type: 'line',
data: CValues,
symbol: 'none',
symbolSize: 0,
itemStyle: {
normal: {
color: '#FF3300'
}
}
},
{
name: '总谐波电流方向',
type: 'line',
data: ZValues,
symbol: 'none',
symbolSize: 0,
itemStyle: {
normal: {
color: '#0033ff'
}
}
}
]
}
})
loading.value = false
}
onMounted(() => {
nextTick(() => {
setTimeout(() => {
History()
}, 0)
})
})
defineExpose({ History })
</script>
<style lang="scss" scoped>
.conditions {
position: absolute;
top: 10px;
right: 10px;
}
</style>