修改冀北现场反馈问题

This commit is contained in:
GGJ
2025-12-15 09:33:34 +08:00
parent d30b8247cf
commit 9f5b2ecc46
28 changed files with 700 additions and 468 deletions

View File

@@ -1,15 +1,16 @@
<template>
<!-- 综合评估详情 -->
<el-dialog draggable title="区域污染水平评估" v-model="dialogVisible" width="1400px">
<el-dialog draggable title="稳态电能质量水平评估" v-model="dialogVisible" width="1400px">
<div style="display: flex">
<div style="width: 400px">
<vxe-table
v-bind="defaultAttribute"
ref="tableRef"
@current-change="currentChangeEvent"
@cell-click="currentChangeEvent"
height="250px"
:row-config="{ isCurrent: true, isHover: true }"
:data="tableData"
style="cursor: pointer"
>
<vxe-column field="deptName" title="地市" />
<vxe-column field="score" title="污染值" sortable>
@@ -26,7 +27,15 @@
</vxe-table>
</div>
<div class="ml10" style="width: 990px">
<vxe-table v-bind="defaultAttribute" v-loading="loadingTab" ref="vxeRef" height="250px" :data="subdata">
<vxe-table
v-bind="defaultAttribute"
@cell-click="clickAttribute"
v-loading="loadingTab"
ref="vxeRef"
height="250px"
:data="subdata"
style="cursor: pointer"
>
<vxe-column type="seq" width="70" title="序号"></vxe-column>
<vxe-column field="subName" title="变电站名称" min-width="120"></vxe-column>
<vxe-column field="lineName" title="监测点名称" align="center" min-width="120"></vxe-column>
@@ -59,7 +68,7 @@
</el-radio-group>
</div> -->
<MyEChart style="height: 300px" :options="picEChart" @echartClick="echartClick"/>
<MyEChart style="height: 300px" :options="picEChart" @echartClick="echartClick" />
</div>
</el-dialog>
</template>
@@ -121,7 +130,7 @@ const analysis = () => {
name: '',
data: first10Items.map((item: any) => item.projectName.split('(')[0].trim()),
axisLabel: {
rotate: 30 // 核心:倾斜 45 度(推荐 30/45/60角度太大易读性差
rotate: 20 // 核心:倾斜 45 度(推荐 30/45/60角度太大易读性差
}
},
grid: {
@@ -171,16 +180,25 @@ const setColor = val => {
? '#00B07D'
: ''
}
const echartClick = (res:any) => {
router.push({
const echartClick = (res: any) => {
router.push({
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
query: {
type: '4',
name: res.name,
t: Date.now()
}
})
}
const clickAttribute = (row: any) => {
router.push({
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
query: {
type: '1',
name: row.row.lineName,
t: Date.now()
}
})
console.log("🚀 ~ echartClick ~ res:", res)
}
defineExpose({ open })
</script>

View File

@@ -2,9 +2,16 @@
<div class="propInfo" v-if="show">
<div class="top">
<el-form :inline="false" label-width="auto">
<el-form-item label=" 筛选:">
<el-form-item label=" 筛选数据">
<el-input v-model="value" size="small" clearable placeholder="请输入关键字进行筛选"></el-input>
</el-form-item>
<!-- <el-form-item label="电网标志">
<el-select v-model="powerFlag" placeholder="请选择电网标志">
<el-option label="全部" value="0"></el-option>
<el-option label="电网侧" value="1"></el-option>
<el-option label="非电网侧" value="2"></el-option>
</el-select>
</el-form-item> -->
</el-form>
<Close class="ico" @click="show = false" />
</div>
@@ -19,8 +26,8 @@
v-loading="loading"
:row-config="{ isCurrent: true, isHover: true }"
:columnConfig="{ resizable: true }"
@current-change="currentChangeEvent"
style="z-index: 0;"
@cell-click="currentChangeEvent"
style="z-index: 0"
>
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
<vxe-column field="gdName" title="供电公司"></vxe-column>
@@ -28,6 +35,11 @@
<!-- <vxe-column field="deviceName" title="终端名称"></vxe-column> -->
<!-- <vxe-column field="ip" title="IP"></vxe-column> -->
<vxe-column field="lineName" title="监测点名称"></vxe-column>
<vxe-column field="powerFlag" title="电网标志">
<template #default="{ row }">
{{ row.powerFlag == 0 ? '电网侧' : '非电网侧' }}
</template>
</vxe-column>
<!-- <vxe-column field="loadType" title="干扰源"></vxe-column> -->
<vxe-column field="loadType" title="干扰源类型"></vxe-column>
<vxe-column field="objName" title="监测对象"></vxe-column>
@@ -40,9 +52,10 @@ import { defaultAttribute } from '@/components/table/defaultAttribute'
import { Close } from '@element-plus/icons-vue'
const emit = defineEmits(['flyTo'])
const value = ref('')
const tableRef=ref()
const tableRef = ref()
const dataList = ref([])
const loading = ref(false)
const powerFlag = ref('0')
const open = (data: any) => {
dataList.value = []
loading.value = true
@@ -99,11 +112,11 @@ function filterDataByKeyword(data, keyword) {
})
})
}
const currentChangeEvent=()=>{
const currentChangeEvent = () => {
// tableRef.value.getCurrentRecord()
console.log("🚀 ~ currentChangeEvent ~ tableRef.value.getCurrentRecord():", tableRef.value.getCurrentRecord())
let data=tableRef.value.getCurrentRecord()
emit('flyTo',{ coordinate: [data.lng, data.lat] }, 16)
console.log('🚀 ~ currentChangeEvent ~ tableRef.value.getCurrentRecord():', tableRef.value.getCurrentRecord())
let data = tableRef.value.getCurrentRecord()
emit('flyTo', { coordinate: [data.lng, data.lat] }, 16)
}
const show = ref(false)

View File

@@ -496,7 +496,7 @@ const jump = () => {
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
query: {
type: '2',
statisticalType:contaminate.value,
statisticalType: contaminate.value,
t: Date.now()
}
})
@@ -536,5 +536,7 @@ defineExpose({ open })
.text-style {
cursor: pointer;
text-decoration: underline;
text-decoration-color: var(--el-color-primary);
text-underline-offset: 4px;
}
</style>

View File

@@ -1,7 +1,14 @@
<!-- 暂态 -->
<template>
<el-dialog draggable :title="title" v-model="dialogVisible" width="800px">
<vxe-table v-bind="defaultAttribute" ref="vxeRef" height="360px" :data="tableData">
<vxe-table
v-bind="defaultAttribute"
ref="vxeRef"
height="360px"
:data="tableData"
@cell-click="currentChangeEvent"
style="cursor: pointer;"
>
<vxe-column title="序号" width="70" type="seq"></vxe-column>
<vxe-column field="lineName" title="监测点名称" />
<vxe-column field="subName" title="变电站名称"></vxe-column>
@@ -16,6 +23,8 @@ import MyEChart from '@/components/echarts/MyEchart.vue'
import { useDictData } from '@/stores/dictData'
import { defaultAttribute } from '@/components/table/defaultAttribute'
import { getEventDetailByList } from '@/api/device-boot/panorama'
import { useRouter } from 'vue-router'
const router = useRouter()
const dictData = useDictData()
const dialogVisible: any = ref(false)
const list = dictData.getBasicData('Event_Statis')
@@ -30,6 +39,19 @@ const open = async (row: any, name: string, type: string) => {
dialogVisible.value = true
}
const currentChangeEvent = (row: any) => {
router.push({
name: 'Descentsystem/transientList',
query: {
type: '1',
name:row.row.lineName,
dicData: types.value,
t: Date.now()
}
})
}
// 跳转暂态列表
// 查看详情
defineExpose({ open })

View File

@@ -5,9 +5,9 @@
<template #content>
<span style="">{{ dropList.gdName }}_{{ dropList.bdName }}_{{ dropList.lineName }}</span>
<span style="font-weight: 500" class="ml20">最新数据时间</span>
<span style="color: var(--color-primary-default)">{{ dropList.updateTime }}</span>
<span style="color: var(--el-color-primary)">{{ dropList.updateTime }}</span>
<span style="font-weight: 500" class="ml20">统计日期</span>
<span style="color: var(--color-primary-default)">
<span style="color: var(--el-color-primary)">
{{ getTimeOfTheMonth('3')[0] + '至' + getTimeOfTheMonth('3')[1] }}
</span>
</template>
@@ -88,7 +88,7 @@
</el-descriptions>
</el-col>
<el-col :span="8">
<h3 class="mb10 iconBox text-style" @click="clickAlarm(8)" >
<h3 class="mb10 iconBox text-style" @click="clickAlarm(8)">
<span></span>
告警明细
</h3>
@@ -107,11 +107,11 @@
<vxe-column field="xz" title="最大限值"></vxe-column>
</vxe-table> -->
<el-table :data="evaluationData" size="small" border>
<el-table :data="evaluationData.filter((item) => item.avg != 3.14159)" height="200px" size="small" border>
<el-table-column prop="targetName" align="center" label="指标名称" />
<el-table-column prop="avg" align="center" label="最大幅值">
<el-table-column prop="avg" align="center" label="最大越限幅值">
<template #default="{ row }">
{{ row.avg == 3.14159 ? '/' : Math.floor(row.avg * 100) / 100 }}
{{ Math.floor(row.avg * 100) / 100 }}
</template>
</el-table-column>
<el-table-column prop="xz" align="center" label="限值">
@@ -190,7 +190,6 @@ import {
} from '@/api/device-boot/panorama'
import { formatter } from 'element-plus'
const emit = defineEmits(['back'])
const dropList: any = ref({})
const TargetData: any = ref({})
@@ -382,8 +381,7 @@ const open = async (id: string) => {
searchBeginTime: datePickerRef.value.timeValue[0],
searchEndTime: datePickerRef.value.timeValue[1],
searchState: 0,
lineRunFlag: 0,
lineRunFlag: 0
}).then((res: any) => {
// dropList.value.assessData = res.data.assessLevel
evaluationData.value = [
@@ -398,19 +396,40 @@ const open = async (id: string) => {
xz: res.data.vdevLimit
},
{
targetName: '电压总谐波畸变率',
avg: res.data.udevData,
xz: res.data.uaberranceLimit
targetName: '谐波电流',
avg: res.data.iharmData,
xz: res.data.iharmLimit
},
{
targetName: '三相电压不平衡度',
avg: res.data.unbalanceData,
xz: res.data.unbalanceLimit
targetName: '负序电流',
avg: res.data.inegData,
xz: res.data.inegLimit
},
{
targetName: '间谐波电压',
avg: res.data.inuharmData,
xz: res.data.inuharmLimit
},
{
targetName: '电压总谐波畸变率',
avg: res.data.uaberranceData,
xz: res.data.uaberranceLimit
},
{
targetName: '闪变',
avg: res.data.flickerData,
xz: res.data.flickerLimit
},
{
targetName: '谐波电压',
avg: res.data.uharmData,
xz: res.data.uharmLimit
},
{
targetName: '三相电压不平衡度',
avg: res.data.unbalanceData,
xz: res.data.unbalanceLimit
}
]
})
@@ -770,7 +789,7 @@ defineExpose({ open })
.iconBox {
display: flex;
align-items: center;
align-items: center;
span {
display: inline-block;
width: 3px;
@@ -808,5 +827,7 @@ align-items: center;
.text-style {
cursor: pointer;
text-decoration: underline;
text-decoration-color: var(--el-color-primary);
text-underline-offset: 4px;
}
</style>

View File

@@ -118,7 +118,7 @@
{{ linList[0].lineNumOne || 0 }}
</span>
告警:
<span style="color: #a52a2a" @click="LookMap(linList[0].lineListOne, [], 0)">
<span style="color: #a52a2a" @click="LookMap(linList[0].lineListTwo, [], 1)">
{{ linList[0].lineNumTwo || 0 }}
</span>
)

View File

@@ -4,34 +4,7 @@
<!-- 综合评估 -->
<div style="height: 110px">
<div class="title">
<span>
区域污染水平评估
<el-popover placement="right" :width="190" trigger="hover">
<template #reference>
<WarningFilled class="WarningFilled" />
</template>
<div class="text">
<span style="color: #00b07d">无污染0</span>
<br />
<span style="color: #3399ff">轻微污染(0 , 100]</span>
<br />
<span style="color: #ffcc33">轻度污染(100 , 1000]</span>
<br />
<span style="color: #ff9900">中度污染(1000 , 10000]</span>
<br />
<span style="color: #a52a2a">重度污染(10000</span>
</div>
</el-popover>
<el-switch
v-model="heat"
class="ml5"
@change="changeHeat"
size="small"
inline-prompt
active-text="热力图"
inactive-text="热力图"
/>
</span>
<span>稳态电能质量水平评估</span>
<span class="info" @click="open(0)">
详情
<ArrowRight style="width: 12px" />
@@ -41,29 +14,33 @@
<img src="@/assets/img/FGX.png" />
</div>
<div class="mt10 TJTop">
<!-- <img src="@/assets/img/TJ.png" />
综合评估得分
<span
:style="{
color:
assessList.score == 3.14159
? ''
: assessList.score > 4.5
? '#339966'
: assessList.score > 4
? '#2b7fd3'
: assessList.score > 3
? '#ffcc33'
: assessList.score > 2
? '#97017e'
: assessList.score > 0
? '#A52a2a'
: ''
}"
>
{{ assessList.score == 3.14159 ? '/' : assessList.score }}
</span> -->
<img src="@/assets/img/TJ.png" />
区域污染水平评估
<el-popover placement="right" :width="190" trigger="hover">
<template #reference>
<WarningFilled class="WarningFilled ml5 " />
</template>
<div class="text">
<span style="color: #00b07d">无污染0</span>
<br />
<span style="color: #3399ff">轻微污染(0 , 100]</span>
<br />
<span style="color: #ffcc33">轻度污染(100 , 1000]</span>
<br />
<span style="color: #ff9900">中度污染(1000 , 10000]</span>
<br />
<span style="color: #a52a2a">重度污染(10000</span>
</div>
</el-popover>
<el-switch
v-model="heat"
class="ml5"
@change="changeHeat"
size="small"
inline-prompt
active-text="热力图"
inactive-text="热力图"
/>
</div>
<div class="evaluate">
<div v-for="item in assessList" style="min-width: 60px">
@@ -89,16 +66,16 @@
</div>
<!-- 稳态电能质量水平评估 -->
<div>
<div class="title">
<!-- <div class="title">
<span>稳态电能质量水平评估</span>
<span class="info" @click="open(1)">
详情
<ArrowRight style="width: 12px" />
</span>
</div>
<div style="display: flex" class="mt2">
</div> -->
<!-- <div style="display: flex" class="mt2">
<img src="@/assets/img/FGX.png" />
</div>
</div> -->
<div :style="boxHeight" class="boxR">
<div class="top">
<div class="TJTop">
@@ -386,10 +363,10 @@ const open = (e: number) => {
techniqueRef.value.open(formRow.value)
}
}
const changeHeat = (e:any) => {
const changeHeat = (e: any) => {
emit('changeHeat', e)
}
const setColor = (val:any) => {
const setColor = (val: any) => {
return val == 3.14159
? ''
: val > 10000
@@ -404,7 +381,7 @@ const setColor = (val:any) => {
? '#00B07D'
: ''
}
const setVal = (val:any) => {
const setVal = (val: any) => {
return val == 3.14159
? '/'
: val > 10000
@@ -511,14 +488,15 @@ defineExpose({ info, show })
cursor: pointer;
color: #757575;
}
.WarningFilled {
width: 12px;
font-weight: 500;
cursor: pointer;
}
}
.WarningFilled {
width: 12px;
font-weight: 500;
cursor: pointer;
}
.TJTop {
display: flex;
align-items: center;
img {
height: 1.2rem;
width: 1.2rem;
@@ -526,7 +504,7 @@ defineExpose({ info, show })
}
}
.evaluate {
margin: 10px 0;
margin: 5px 0 10px 0;
display: flex;
justify-content: space-around;
text-align: center;