修改限值显示问题

This commit is contained in:
guanj
2026-07-06 10:41:33 +08:00
parent 2445cfbff3
commit 1ca8e536dd

View File

@@ -10,30 +10,53 @@
<DatePicker ref="datePickerRef" :theCurrentTime="true"></DatePicker> <DatePicker ref="datePickerRef" :theCurrentTime="true"></DatePicker>
</el-form-item> </el-form-item>
<el-form-item label="指标类型:"> <el-form-item label="指标类型:">
<el-select v-model="formData.condition" multiple collapse-tags :multiple-limit="checked ? 1 : 3" <el-select
filterable placeholder="请选择指标" @change="conditionChange"> v-model="formData.condition"
multiple
collapse-tags
:multiple-limit="checked ? 1 : 3"
filterable
placeholder="请选择指标"
@change="conditionChange"
>
<el-option-group v-for="group in indexOptions" :key="group.label" :label="group.label"> <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" <el-option
:value="item.value"></el-option> v-for="item in group.options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-option-group> </el-option-group>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数值类型:"> <el-form-item label="数值类型:">
<el-select style="width: 100%" v-model="formData.valueType" placeholder="请选择类型"> <el-select style="width: 100%" v-model="formData.valueType" placeholder="请选择类型">
<el-option v-for="item in typeOptions" :key="item.value" :label="item.label" <el-option
:value="item.value"></el-option> v-for="item in typeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="谐波次数:" v-show="showXieBoCiShu"> <el-form-item label="谐波次数:" v-show="showXieBoCiShu">
<el-select style="width: 100%" v-model="formData.harmonic" placeholder="请选择谐波"> <el-select style="width: 100%" v-model="formData.harmonic" placeholder="请选择谐波">
<el-option v-for="item in harmonicOptions" :key="item.value" :label="item.label" <el-option
:value="item.value"></el-option> v-for="item in harmonicOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-show="showJianXieBoCiShu" label="间谐波次数:"> <el-form-item v-show="showJianXieBoCiShu" label="间谐波次数:">
<el-select style="width: 100%" v-model="formData.inHarmonic" placeholder="请选择间谐波"> <el-select style="width: 100%" v-model="formData.inHarmonic" placeholder="请选择间谐波">
<el-option v-for="item in inharmonicOptions" :key="item.value" :label="item.label" <el-option
:value="item.value"></el-option> v-for="item in inharmonicOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
@@ -44,10 +67,21 @@
<!-- <el-form :inline="true"> <!-- <el-form :inline="true">
</el-form> --> </el-form> -->
<div id="canvas" class="mt10" :style="height1" style="overflow-y: auto; overflow-x: hidden" <div
v-loading="loading"> id="canvas"
<my-echart :options="item.option" v-for="item in list" style="min-height: 190px" :style="height" class="mt10"
@triggerPoint="triggerPoint" @group="group" /> :style="height1"
style="overflow-y: auto; overflow-x: hidden"
v-loading="loading"
>
<my-echart
:options="item.option"
v-for="item in list"
style="min-height: 190px"
:style="height"
@triggerPoint="triggerPoint"
@group="group"
/>
</div> </div>
</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="!view">
@@ -72,7 +106,7 @@ import html2canvas from 'html2canvas'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { yMethod, completeTimeSeries } from '@/utils/echartMethod' import { yMethod, completeTimeSeries } from '@/utils/echartMethod'
import * as echarts from 'echarts' // 全引入 import * as echarts from 'echarts' // 全引入
import { min } from 'xe-utils'
const datePickerRef = ref() const datePickerRef = ref()
const monitoringPoint = useMonitoringPoint() const monitoringPoint = useMonitoringPoint()
const checked = ref(monitoringPoint.state.showCheckBox) const checked = ref(monitoringPoint.state.showCheckBox)
@@ -198,8 +232,8 @@ const shujuchuli = (res: any) => {
let cvalue = [] let cvalue = []
let topLimit = [] let topLimit = []
let lowerLimit = [] let lowerLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -234,12 +268,7 @@ const shujuchuli = (res: any) => {
//不存在一个暂降点或1个 //处理暂降点 //不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) { if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) { for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([ chufa.push([item.eventDetail[k].time, (0).toFixed(3), item.eventDetail[k].id, 99])
item.eventDetail[k].time,
(0).toFixed(3),
item.eventDetail[k].id,
99
])
} }
} }
let shuju = { let shuju = {
@@ -267,8 +296,8 @@ const shujuchuli = (res: any) => {
let gvalue = [] let gvalue = []
let topLimit = [] let topLimit = []
let lowerLimit = [] let lowerLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -289,12 +318,7 @@ const shujuchuli = (res: any) => {
//不存在一个暂降点或1个 //处理暂降点 //不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) { if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) { for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([ chufa.push([item.eventDetail[k].time, (0).toFixed(3), item.eventDetail[k].id, 99])
item.eventDetail[k].time,
(0).toFixed(3),
item.eventDetail[k].id,
99
])
} }
} }
let shuju = { let shuju = {
@@ -345,7 +369,7 @@ const shujuchuli = (res: any) => {
let bvalue = [] let bvalue = []
let cvalue = [] let cvalue = []
let topLimit = [] let topLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -379,12 +403,7 @@ const shujuchuli = (res: any) => {
//不存在一个暂降点或1个 //处理暂降点 //不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) { if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) { for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([ chufa.push([item.eventDetail[k].time, (0).toFixed(3), item.eventDetail[k].id, 99])
item.eventDetail[k].time,
(0).toFixed(3),
item.eventDetail[k].id,
99
])
} }
} }
let shuju = { let shuju = {
@@ -409,7 +428,7 @@ const shujuchuli = (res: any) => {
if (item.phaiscType.length == 3) { if (item.phaiscType.length == 3) {
let gvalue = [] let gvalue = []
let topLimit = [] let topLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -479,7 +498,7 @@ const shujuchuli = (res: any) => {
let bvalue = [] let bvalue = []
let cvalue = [] let cvalue = []
let lowerLimit = [] let lowerLimit = []
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -538,7 +557,7 @@ const shujuchuli = (res: any) => {
if (item.phaiscType.length == 3) { if (item.phaiscType.length == 3) {
let gvalue = [] let gvalue = []
let lowerLimit = [] let lowerLimit = []
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -599,7 +618,6 @@ const shujuchuli = (res: any) => {
} }
//无限值 //无限值
if (item.topLimit == 0 && item.lowerLimit == 0) { if (item.topLimit == 0 && item.lowerLimit == 0) {
if (item.minValue !== null && item.maxValue !== null) { if (item.minValue !== null && item.maxValue !== null) {
//最小值等于下限值 //最小值等于下限值
//图列为A,B,C,暂降 //图列为A,B,C,暂降
@@ -638,12 +656,7 @@ const shujuchuli = (res: any) => {
//不存在一个暂降点或1个 //处理暂降点 //不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) { if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) { for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([ chufa.push([item.eventDetail[k].time, (0).toFixed(3), item.eventDetail[k].id, 99])
item.eventDetail[k].time,
(0).toFixed(3),
item.eventDetail[k].id,
99
])
} }
} }
let shuju = { let shuju = {
@@ -683,12 +696,7 @@ const shujuchuli = (res: any) => {
//不存在一个暂降点或1个 //处理暂降点 //不存在一个暂降点或1个 //处理暂降点
if (item.eventDetail.length > 0) { if (item.eventDetail.length > 0) {
for (let k = 0; k < item.eventDetail.length; k++) { for (let k = 0; k < item.eventDetail.length; k++) {
chufa.push([ chufa.push([item.eventDetail[k].time, (0).toFixed(3), item.eventDetail[k].id, 99])
item.eventDetail[k].time,
(0).toFixed(3),
item.eventDetail[k].id,
99
])
} }
} }
let shuju = { let shuju = {
@@ -740,8 +748,8 @@ const shujuchuli = (res: any) => {
let cvalue = [] let cvalue = []
let topLimit = [] let topLimit = []
let lowerLimit = [] let lowerLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -796,8 +804,8 @@ const shujuchuli = (res: any) => {
let gvalue = [] let gvalue = []
let topLimit = [] let topLimit = []
let lowerLimit = [] let lowerLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -863,7 +871,7 @@ const shujuchuli = (res: any) => {
let bvalue = [] let bvalue = []
let cvalue = [] let cvalue = []
let topLimit = [] let topLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
// item.minValue=item.lowerLimit // item.minValue=item.lowerLimit
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
@@ -916,7 +924,7 @@ const shujuchuli = (res: any) => {
if (item.phaiscType.length == 2) { if (item.phaiscType.length == 2) {
let gvalue = [] let gvalue = []
let topLimit = [] let topLimit = []
item.maxValue = (item.topLimit > item.maxValue ? item.topLimit : item.maxValue) item.maxValue = item.topLimit > item.maxValue ? item.topLimit : item.maxValue
// item.minValue=item.lowerLimit // item.minValue=item.lowerLimit
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
@@ -981,7 +989,7 @@ const shujuchuli = (res: any) => {
let cvalue = [] let cvalue = []
let lowerLimit = [] let lowerLimit = []
// item.maxValue=item.topLimit // item.maxValue=item.topLimit
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -1034,7 +1042,7 @@ const shujuchuli = (res: any) => {
let gvalue = [] let gvalue = []
let lowerLimit = [] let lowerLimit = []
// item.maxValue=item.topLimit // item.maxValue=item.topLimit
item.minValue = (item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue) item.minValue = item.lowerLimit < item.minValue ? item.lowerLimit : item.minValue
//判断数据是否存在 //判断数据是否存在
if (item.value !== null) { if (item.value !== null) {
for (let j = 0; j < item.value.length; j++) { for (let j = 0; j < item.value.length; j++) {
@@ -1202,6 +1210,7 @@ const getSeriesDataValues = (data: any[]) => {
.filter((v): v is number => v != null && !Number.isNaN(v)) .filter((v): v is number => v != null && !Number.isNaN(v))
} }
const buildItemYAxis = (item: any) => { const buildItemYAxis = (item: any) => {
console.log('🚀 ~ buildItemYAxis ~ item:', item)
if (item.useDualAxis && item.serise?.length) { if (item.useDualAxis && item.serise?.length) {
const uniqueUnits = [...new Set(item.units.filter((u: string) => u != null && u !== ''))] as string[] const uniqueUnits = [...new Set(item.units.filter((u: string) => u != null && u !== ''))] as string[]
const valuesByUnit: Record<string, number[]> = {} const valuesByUnit: Record<string, number[]> = {}
@@ -1214,8 +1223,8 @@ const buildItemYAxis = (item: any) => {
if (unit) valuesByUnit[unit].push(...getSeriesDataValues(s.data)) if (unit) valuesByUnit[unit].push(...getSeriesDataValues(s.data))
}) })
return uniqueUnits.map((unit, index) => { return uniqueUnits.map((unit, index) => {
const [min, max] = yMethod(valuesByUnit[unit].length ? valuesByUnit[unit] : [0]) const [min, max] = yMethod(valuesByUnit[unit].length ? valuesByUnit[unit] : [0])
return { return {
type: 'value', type: 'value',
min, min,
@@ -1232,7 +1241,14 @@ const buildItemYAxis = (item: any) => {
}) })
} }
const values = item.value?.length ? item.value.map((k: any) => k[1]) : [0] const values = item.value?.length ? item.value.map((k: any) => k[1]) : [0]
const [min, max] = yMethod([item.maxValue, item.minValue, ...values])
const [min, max] = yMethod([
item.maxValue,
item.minValue,
...values,
item.topLimit?.[0]?.[1] || null,
item.lowerLimit?.[0]?.[1] || null
])
return [ return [
{ {
type: 'value', type: 'value',
@@ -1281,10 +1297,7 @@ const rendering = () => {
let opitonserise: any[] = [] let opitonserise: any[] = []
item.legend.forEach((item2: any) => { item.legend.forEach((item2: any) => {
if ( if (item.avalue !== undefined && (item2 == 'A相' || item2 == 'AB相' || item2.startsWith('零序电压'))) {
item.avalue !== undefined &&
(item2 == 'A相' || item2 == 'AB相' || item2.startsWith('零序电压'))
) {
let data = { let data = {
name: item2, name: item2,
symbol: 'none', symbol: 'none',
@@ -1592,10 +1605,7 @@ const getEcharts = () => {
let tips = '' let tips = ''
tips += '时刻:' + params[0].data[0] + '</br/>' tips += '时刻:' + params[0].data[0] + '</br/>'
for (let i = 0; i < params.length; i++) { for (let i = 0; i < params.length; i++) {
if (params[i].seriesName == '暂态触发点') { if (params[i].seriesName == '暂态触发点') {
tips += '' tips += ''
return tips return tips
@@ -1605,29 +1615,29 @@ const getEcharts = () => {
params[i].marker + params[i].value[1] > 0 params[i].marker + params[i].value[1] > 0
? 'A相谐波电流方向:流入<br/>' ? 'A相谐波电流方向:流入<br/>'
: params[i].value[1] == 0 : params[i].value[1] == 0
? 'A相谐波电流方向:无<br/>' ? 'A相谐波电流方向:无<br/>'
: 'A相谐波电流方向:流出<br/>' : 'A相谐波电流方向:流出<br/>'
} else if (params[i].seriesName == 'B相谐波电流方向') { } else if (params[i].seriesName == 'B相谐波电流方向') {
tips += tips +=
params[i].marker + params[i].value[1] > 0 params[i].marker + params[i].value[1] > 0
? 'B相谐波电流方向:流入<br/>' ? 'B相谐波电流方向:流入<br/>'
: params[i].value[1] == 0 : params[i].value[1] == 0
? 'B相谐波电流方向:无<br/>' ? 'B相谐波电流方向:无<br/>'
: 'B相谐波电流方向:流出<br/>' : 'B相谐波电流方向:流出<br/>'
} else if (params[i].seriesName == 'C相谐波电流方向') { } else if (params[i].seriesName == 'C相谐波电流方向') {
tips += tips +=
params[i].marker + params[i].value[1] > 0 params[i].marker + params[i].value[1] > 0
? 'C相谐波电流方向:流入<br/>' ? 'C相谐波电流方向:流入<br/>'
: params[i].value[1] == 0 : params[i].value[1] == 0
? 'C相谐波电流方向:无<br/>' ? 'C相谐波电流方向:无<br/>'
: 'C相谐波电流方向:流出<br/>' : 'C相谐波电流方向:流出<br/>'
} else if (params[i].seriesName == '总谐波电流方向') { } else if (params[i].seriesName == '总谐波电流方向') {
tips += tips +=
params[i].marker + params[i].value[1] > 0 params[i].marker + params[i].value[1] > 0
? '总谐波电流方向:流入<br/>' ? '总谐波电流方向:流入<br/>'
: params[i].value[1] == 0 : params[i].value[1] == 0
? '总谐波电流方向:无<br/>' ? '总谐波电流方向:无<br/>'
: '总谐波电流方向:流出<br/>' : '总谐波电流方向:流出<br/>'
} else if (params[i].seriesName.includes('正序电压')) { } else if (params[i].seriesName.includes('正序电压')) {
let str = (params[i].value[1] * 1).toString() let str = (params[i].value[1] * 1).toString()
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
@@ -1699,8 +1709,6 @@ const getEcharts = () => {
':' + ':' +
(Number.isNaN(Number(str2)) ? '/' : str2) + (Number.isNaN(Number(str2)) ? '/' : str2) +
'<br/>' '<br/>'
} }
} }
@@ -1908,7 +1916,6 @@ const getEcharts = () => {
echarts.connect('group') echarts.connect('group')
} }
const conditionChange = () => { const conditionChange = () => {
//判断一个指标时 //判断一个指标时
if (formData.condition.length == 1) { if (formData.condition.length == 1) {
if ( if (
@@ -2045,7 +2052,6 @@ const conditionChange = () => {
} }
setTimeout(() => { setTimeout(() => {
//console.log('🚀 ~ setTimeout ~ tableHeaderRef.value:', tableHeaderRef.value) //console.log('🚀 ~ setTimeout ~ tableHeaderRef.value:', tableHeaderRef.value)
//tableHeaderRef.value && tableHeaderRef.value?.computedSearchRow() //tableHeaderRef.value && tableHeaderRef.value?.computedSearchRow()
}, 100) }, 100)
} }