微调 全景展示

This commit is contained in:
GGJ
2025-04-27 15:53:53 +08:00
parent a68283c296
commit ec52564874
4 changed files with 8373 additions and 7074 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -187,7 +187,6 @@ const GetEchar = async (name: string) => {
} }
} }
}) })
} }
const MapReturn = (name: string) => { const MapReturn = (name: string) => {
@@ -213,6 +212,7 @@ const circle = () => {
} }
const resizeHandler = () => { const resizeHandler = () => {
myCharts.value?.resize() myCharts.value?.resize()
myCharts.value?.setOption(myCharts.value.getOption()) // 强制更新配置
} }
onBeforeUnmount(() => { onBeforeUnmount(() => {
window.removeEventListener('resize', resizeHandler) window.removeEventListener('resize', resizeHandler)

View File

@@ -11,6 +11,11 @@
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item" /> <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="电网标志">
<el-select v-model="tableStore.table.params.powerFlag" placeholder="请选择电网标志">
<el-option v-for="item in sign" :key="item.id" :label="item.label" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-DataAnalysis" @click="rankingClick(null, true)"> <el-button type="primary" icon="el-icon-DataAnalysis" @click="rankingClick(null, true)">
排名前10监测点 排名前10监测点
@@ -21,17 +26,7 @@
<div v-loading="tableStore.table.loading" class="pr10"> <div v-loading="tableStore.table.loading" class="pr10">
<el-row> <el-row>
<el-col :span="12" class="pd10" style="position: relative"> <el-col :span="12" class="pd10" style="position: relative">
<el-radio-group v-model="radio1" class="ml10 group" @change="radioChange" size="small"> <div class="legend">
<el-radio-button label="列表" :value="0" />
<el-radio-button label="图形" :value="1" />
</el-radio-group>
<el-carousel
ref="carouselRef"
:autoplay="false"
:arrow="'never'"
:height="`calc(${layout.height} + 35px)`"
>
<el-carousel-item style="padding: 0 1px">
<el-tag style="background: #339966" class="tag" size="small">1</el-tag> <el-tag style="background: #339966" class="tag" size="small">1</el-tag>
<span style="color: #339966" class="text">:无污染(0,1]</span> <span style="color: #339966" class="text">:无污染(0,1]</span>
<el-tag style="background: #3399ff" class="tag" size="small">2</el-tag> <el-tag style="background: #3399ff" class="tag" size="small">2</el-tag>
@@ -42,7 +37,10 @@
<span style="color: #ff9900" class="text">:中度污染(1.6,2]</span> <span style="color: #ff9900" class="text">:中度污染(1.6,2]</span>
<el-tag style="background: #cc0000" class="tag" size="small">5</el-tag> <el-tag style="background: #cc0000" class="tag" size="small">5</el-tag>
<span style="color: #cc0000" class="text">:重度污染(2,+)</span> <span style="color: #cc0000" class="text">:重度污染(2,+)</span>
<div :style="{ height: layout.height }" style="overflow-y: auto" class="mt10"> </div>
<el-tabs v-model="radio1" type="border-card" @tab-change="handleTabChange">
<el-tab-pane label="列表" :name="0">
<div :style="{ height: layout.height }" style="overflow-y: auto">
<div class="cardBox"> <div class="cardBox">
<el-card v-for="(item, index) in tableStore.table.data" :key="index"> <el-card v-for="(item, index) in tableStore.table.data" :key="index">
<template #header> <template #header>
@@ -161,11 +159,18 @@
</el-card> </el-card>
</div> </div>
</div> </div>
</el-carousel-item> </el-tab-pane>
<el-carousel-item> <el-tab-pane label="图形" :name="1">
<MyEchartMap ref="EchartMap" :options="echartMapList" class="map" /> <MyEchartMap
</el-carousel-item> :style="layout"
</el-carousel> style="width: 100%"
id="EchartMap"
ref="EchartMap"
:options="echartMapList"
class="map"
/>
</el-tab-pane>
</el-tabs>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<my-echart class="tall" :options="echartList" /> <my-echart class="tall" :options="echartList" />
@@ -260,15 +265,16 @@ const options = dictData.getBasicData('Pollution_Statis', [
'Plt', 'Plt',
'Freq_Dev' 'Freq_Dev'
]) ])
const sign = ref([
{ label: '电网侧', id: '0' },
{ label: '用户侧', id: '1' }
])
const tableStore = new TableStore({ const tableStore = new TableStore({
url: '/harmonic-boot/PollutionSubstation/deptSubstationRelations', url: '/harmonic-boot/PollutionSubstation/deptSubstationRelations',
method: 'POST', method: 'POST',
column: [], column: [],
loadCallback: () => { loadCallback: () => {
map(tableStore.table.data)
histogram(tableStore.table.data) histogram(tableStore.table.data)
EchartMap.value.GetEchar(dictData.state.area[0].name)
header.value.areaRef.change()
} }
}) })
provide('tableStore', tableStore) provide('tableStore', tableStore)
@@ -276,11 +282,16 @@ provide('tableStore', tableStore)
tableStore.table.params.deptIndex = dictData.state.area[0].id tableStore.table.params.deptIndex = dictData.state.area[0].id
tableStore.table.params.statisticalType = options[0] tableStore.table.params.statisticalType = options[0]
tableStore.table.params.monitorFlag = 2 tableStore.table.params.monitorFlag = 2
tableStore.table.params.powerFlag = 2 tableStore.table.params.powerFlag = '2'
tableStore.table.params.reportFlag = 3 tableStore.table.params.reportFlag = 3
tableStore.table.params.serverName = 'event-boot' tableStore.table.params.serverName = 'event-boot'
const radioChange = (val: any) => { const handleTabChange = (val: any) => {
carouselRef.value.setActiveItem(val) if (val == 0) return
setTimeout(() => {
map(tableStore.table.data)
EchartMap.value.GetEchar(dictData.state.area[0].name)
// header.value.areaRef.change()
}, 100)
} }
// 地图数处理 // 地图数处理
const rankingClick = () => { const rankingClick = () => {
@@ -629,6 +640,7 @@ const map = (res: any) => {
max: 2, max: 2,
left: 25, left: 25,
bottom: 40, bottom: 40,
show: false,
pieces: [ pieces: [
{ {
gt: 2, gt: 2,
@@ -686,7 +698,7 @@ onMounted(() => {
tableStore.index() tableStore.index()
}, 10) }, 10)
}) })
const layout = mainHeight(133) as any const layout = mainHeight(160) as any
const layout1 = mainHeight(93) as any const layout1 = mainHeight(93) as any
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@@ -767,14 +779,15 @@ const layout1 = mainHeight(93) as any
} }
.map { .map {
height: v-bind('layout.height'); height: v-bind('layout.height');
width: 100%;
} }
:deep(.el-carousel__indicators) { :deep(.el-carousel__indicators) {
display: none; display: none;
} }
.group { .legend {
position: absolute; position: absolute;
right: 10px; right: 15px;
top: 10px; top: 17px;
z-index: 99; z-index: 99;
} }
</style> </style>

View File

@@ -10,8 +10,11 @@
<div class="boxSteps"> <div class="boxSteps">
<el-steps> <el-steps>
<template v-for="(item, i) in Voltage"> <template v-for="(item, i) in Voltage">
<el-step :class="active == i ? 'highlight' : ''" :title="item.name" <el-step
@click="handleClick(i)"></el-step> :class="active == i ? 'highlight' : ''"
:title="item.name"
@click="handleClick(i)"
></el-step>
</template> </template>
</el-steps> </el-steps>
</div> </div>
@@ -56,12 +59,12 @@
<vxe-colgroup :title="item" v-for="(item, i) in title"> <vxe-colgroup :title="item" v-for="(item, i) in title">
<vxe-column title="监测点数 " field="overNum"> <vxe-column title="监测点数 " field="overNum">
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.list[i].overNum }}</span> <span>{{ scope.row.list == null ? '' : scope.row.list[i].overNum }}</span>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column title="天数" field="overDay"> <vxe-column title="天数" field="overDay">
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.list[i].overDay }}</span> <span>{{ scope.row.list == null ? '' : scope.row.list[i].overDay }}</span>
</template> </template>
</vxe-column> </vxe-column>
</vxe-colgroup> </vxe-colgroup>
@@ -108,7 +111,8 @@ const echart = (row: any) => {
let chart = echarts.init(chartRef.value as HTMLDivElement) let chart = echarts.init(chartRef.value as HTMLDivElement)
let dataname = ['频率偏差(Hz)', let dataname = [
'频率偏差(Hz)',
'电压偏差(%)', '电压偏差(%)',
'电压总谐波畸变率(%)', '电压总谐波畸变率(%)',
'三相电压不平衡度(%)', '三相电压不平衡度(%)',
@@ -116,7 +120,8 @@ const echart = (row: any) => {
'谐波电压(%)', '谐波电压(%)',
'谐波电流(%)', '谐波电流(%)',
'间谐波电压(%)', '间谐波电压(%)',
'负序电流(A)'] '负序电流(A)'
]
// let datamax = [100, 100, 100, 100, 100, 100] // let datamax = [100, 100, 100, 100, 100, 100]
let indicator = [] let indicator = []
for (let i = 0; i < dataname.length; i++) { for (let i = 0; i < dataname.length; i++) {