修改冀北现场问题

绘制 算法库 案例库页面
联调 辽宁 有功功率页面
This commit is contained in:
GGJ
2024-09-04 20:59:57 +08:00
parent 3ac62fc98c
commit 630156f221
21 changed files with 7777 additions and 81 deletions

View File

@@ -1,6 +1,6 @@
<template>
<div class="default-main">
<TableHeader datePicker area ref="header">
<TableHeader datePicker theCurrentTime area ref="header">
<!-- <template v-slot:select>
</template> -->
@@ -49,15 +49,17 @@
field="featureAmplitude"
title="暂降(骤升)幅值(%)"
sortable
min-width="150px"
></vxe-column>
<vxe-column
field="advanceReason"
title="暂降原因"
sortable
:formatter="formFilter"
min-width="100px"
></vxe-column>
<vxe-column field="severity" title="严重度" sortable></vxe-column>
<vxe-column title="操作">
<vxe-column field="severity" title="严重度" min-width="100px" sortable></vxe-column>
<vxe-column title="操作" width="80px">
<template #default="{ row }">
<el-button
type="primary"
@@ -81,6 +83,7 @@
<div v-if="wp != null">
<rmsboxi :value="1" :height="height" :boxoList="boxoList" :wp="wp" />
</div>
<el-empty v-else description="暂无数据" class="custom-empty" />
</div>
</el-card>
</el-col>
@@ -100,6 +103,7 @@ import { getMonitorEventAnalyseWave, getTransientDetailById } from '@/api/event-
import rmsboxi from '@/components/echarts/rmsboxi.vue'
import { ref, onMounted, provide } from 'vue'
import { mainHeight } from '@/utils/layout'
import { FormItem } from 'vxe-table'
defineOptions({
name: 'newEnergy/highAndLowPressure'
})
@@ -181,15 +185,17 @@ const map = (res: any) => {
},
viewControl: {
alpha: 60,
distance: 120
distance: 120,
panMouseButton: 'right', //平移操作使用的鼠标按键
rotateMouseButton: 'left' //旋转操作使用的鼠标按键
},
label: {
show: true,
color: '#000',
fontSize: 14,
distance: 0,
textStyle: {
color: '#000',
backgroundColor: '#000'
}
},
@@ -210,7 +216,7 @@ const map = (res: any) => {
show: true,
position: 'top',
formatter: params => {
return params.value[2] || ''
return params.value[2]
}
},
@@ -231,8 +237,7 @@ const map = (res: any) => {
},
emphasis: {
label: { show: true }
},
zlevel: 1
}
},
{
name: '高压',
@@ -241,9 +246,9 @@ const map = (res: any) => {
shading: 'lambert',
label: {
show: true,
position: 'top',
// position: 'top',
formatter: params => {
return params.value[2] || ''
return params.value[2]
}
},
@@ -253,7 +258,7 @@ const map = (res: any) => {
: res.map((item: any) => {
return {
...item,
value: [item.lng - 0.07, item.lat, item.highPressure || 0]
value: [item.lng - 0.1, item.lat, item.highPressure || 0]
}
}),
// [
@@ -296,6 +301,21 @@ const tabulation = (e: any) => {
})
.then(res => {
distributionData.value = res.data
for (let i = 0; i < res.data.length; i++) {
if (res.data[i].wavePath != null) {
boxi(res.data[i])
break
}
}
// res.data.forEach((item: any) => {
// if (item.wavePath != null) {
// boxi(item)
// return
// }
// })
// 。wavePath
loading.value = false
})
.catch(() => {
@@ -369,4 +389,19 @@ const layout1 = mainHeight(93) as any
:deep(.el-card__body) {
padding: 10px;
}
/* 自定义 el-empty 的样式 */
:deep(.custom-empty) {
display: flex;
justify-content: center;
align-items: center;
height: 100%; /* 调整高度 */
padding: 20px; /* 调整内边距 */
.el-empty__image {
display: none; /* 隐藏默认图片 */
}
.el-empty__description {
font-size: 14px; /* 调整字体大小 */
color: var(--vxe-font-color);
}
}
</style>

View File

@@ -3,14 +3,14 @@
<TableHeader :showSearch="false">
<template #select>
<el-form-item label="">
<span class="text-large font-600 mr-3">{{ props.timePopUpBox.num }}</span>
<span class="text-large font-600 mr-3">{{ props.timePopUpBox.time }}</span>
</el-form-item>
<el-form-item>
<el-radio-group v-model="radio2" @change="tableStore.index()">
<el-radio-button label="基础数据" value="1" />
<el-radio-button label="谐波电压" value="2" />
<el-radio-button label="谐波电流" value="3" />
<el-radio-button label="间谐波电压含有率" value="4" />
<el-radio-button label="间谐波电压" value="4" />
</el-radio-group>
</el-form-item>
</template>
@@ -47,41 +47,54 @@ const tableStore = new TableStore({
method: 'POST',
showPage: false,
column: [
{ title: '指标', field: 'anotherName' },
{
title: '指标',
field: 'anotherName',
formatter: row => {
row.column.title =
radio2.value == '1' ? '指标' : (row.column.title = radio2.value == '4' ? '间谐波次数' : '谐波次数')
return row.cellValue
}
},
{ title: '单位', field: 'unit' },
{
title: '最小值',
field: 'code',
field: 'min',
children: [
{ title: 'A', field: 'num' },
{ title: 'B', field: 'num' },
{ title: 'C', field: 'num' }
{
title: 'A',
field: 'minphaseA',
formatter: row => formatter(row)
},
{ title: 'B', field: 'minphaseB', formatter: row => formatter(row) },
{ title: 'C', field: 'minphaseC', formatter: row => formatter(row) }
]
},
{
title: '最大值',
field: 'sort',
field: 'max',
children: [
{ title: 'A', field: 'num' },
{ title: 'B', field: 'num' },
{ title: 'C', field: 'num' }
{ title: 'A', field: 'maxphaseA', formatter: row => formatter(row) },
{ title: 'B', field: 'maxphaseB', formatter: row => formatter(row) },
{ title: 'C', field: 'maxphaseC', formatter: row => formatter(row) }
]
},
{
title: '平均值',
field: 'value',
field: 'avg',
children: [
{ title: 'A', field: 'num' },
{ title: 'B', field: 'num' },
{ title: 'C', field: 'num' }
{ title: 'A', field: 'avgphaseA', formatter: row => formatter(row) },
{ title: 'B', field: 'avgphaseB', formatter: row => formatter(row) },
{ title: 'C', field: 'avgphaseC', formatter: row => formatter(row) }
]
},
{
title: 'cp95值',
field: 'levelName',
field: 'cp95',
children: [
{ title: 'A', field: 'num' },
{ title: 'B', field: 'num' },
{ title: 'C', field: 'num' }
{ title: 'A', field: 'cp95PhaseA', formatter: row => formatter(row) },
{ title: 'B', field: 'cp95PhaseB', formatter: row => formatter(row) },
{ title: 'C', field: 'cp95PhaseC', formatter: row => formatter(row) }
]
}
],
@@ -96,7 +109,9 @@ const tableStore = new TableStore({
})
provide('tableStore', tableStore)
const formatter = (row: any) => {
return row.cellValue || '/'
}
onMounted(() => {
tableStore.index()
})

View File

@@ -45,7 +45,7 @@
</div>
</div>
</el-card>
<el-card class="card-top mt15">
<div
v-for="(item, index) in powerList2"
@@ -55,7 +55,7 @@
@click="analyseList(item.label, index + 5)"
>
<div style="font-size: 24px; font-weight: 700">
<span :style="{ color: item.crossTheLine == '1' ? 'red' : 'green' }">
<span :style="{ color: item.crossTheLine > 0 ? 'red' : 'green' }">
{{ item.quantity }}
</span>
<span style="font-size: 14px; font-weight: 500"></span>
@@ -83,7 +83,7 @@
:data="tableData"
v-loading="loading"
>
<vxe-column field="num" title="时间" width="180px">
<vxe-column field="time" title="时间" width="180px">
<template #default="{ row }">
<el-link
type="primary"
@@ -443,7 +443,7 @@ const tableStore = new TableStore({
column: [],
beforeSearchFun: () => {
treeList.value = dotList.value
tableStore.table.params.lineId = dotList.value.id
tableStore.table.params.searchBeginTime = TableHeaderRef.value.datePickerRef.timeValue[0]
tableStore.table.params.searchEndTime = TableHeaderRef.value.datePickerRef.timeValue[1]
@@ -451,49 +451,39 @@ const tableStore = new TableStore({
loadCallback: () => {
let res = tableStore.table.data
let mun =
res.minsNum1 +
res.minsNum2 +
res.minsNum3 +
res.minsNum4 +
res.minsNum5 +
res.minsNum6 +
res.minsNum7 +
res.minsNum8 +
res.minsNum9
powerList1.value = [
{
label: '0%~10%',
quantity: res.minsNum0,
percentage: ((res.minsNum0 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion0 + '%',
crossTheLine: res.isOrNot0,
value: '0%~10%'
},
{
label: '10%~20%',
quantity: res.minsNum1,
percentage: ((res.minsNum1 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion1 + '%',
crossTheLine: res.isOrNot1,
value: '10%~10%'
},
{
label: '20%~30%',
quantity: res.minsNum2,
percentage: ((res.minsNum2 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion2 + '%',
crossTheLine: res.isOrNot2,
value: '10%~30%'
},
{
label: '30%~40%',
quantity: res.minsNum3,
percentage: ((res.minsNum3 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion3 + '%',
crossTheLine: res.isOrNot3,
value: '30%~40%'
},
{
label: '40%~50%',
quantity: res.minsNum4,
percentage: ((res.minsNum4 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion4 + '%',
crossTheLine: res.isOrNot4,
value: '40%~50%'
}
@@ -502,35 +492,35 @@ const tableStore = new TableStore({
{
label: '50%~60%',
quantity: res.minsNum5,
percentage: ((res.minsNum5 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion5 + '%',
crossTheLine: res.isOrNot5,
value: '50%~60%'
},
{
label: '60%~70%',
quantity: res.minsNum6,
percentage: ((res.minsNum6 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion6 + '%',
crossTheLine: res.isOrNot6,
value: '60%~70%'
},
{
label: '70%~80%',
quantity: res.minsNum7,
percentage: ((res.minsNum7 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion7 + '%',
crossTheLine: res.isOrNot7,
value: '70%~80%'
},
{
label: '80%~90%',
quantity: res.minsNum8,
percentage: ((res.minsNum8 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion8 + '%',
crossTheLine: res.isOrNot8,
value: '80%~90%'
},
{
label: '90%~100%',
quantity: res.minsNum9,
percentage: ((res.minsNum9 / mun || 0) * 100).toFixed(2) + '%',
percentage: res.proportion9 + '%',
crossTheLine: res.isOrNot9,
value: '90%~100%'
}
@@ -552,7 +542,7 @@ const tableStore = new TableStore({
series: [
{
type: 'pie',
center: ['50%', '60%'],
center: ['50%', '55%'],
selectedOffset: 30,
label: {
show: true,
@@ -657,7 +647,7 @@ const exportData = () => {
ElMessage('正在下载中,请稍等...')
exportExcelRangTemplate({
lineId: dotList.value.id,
searchValue: treeList.value?.name + ' 0%-100% 区间数据',
searchBeginTime: tableStore.table.params.searchBeginTime,
searchEndTime: tableStore.table.params.searchEndTime
}).then((res: any) => {
@@ -678,6 +668,7 @@ const exportData = () => {
const generateReports = () => {
let data: any = {
lineId: dotList.value.id,
searchValue: treeList.value?.name + ' 报告',
searchBeginTime: tableStore.table.params.searchBeginTime,
searchEndTime: tableStore.table.params.searchEndTime
}
@@ -693,7 +684,7 @@ const generateReports = () => {
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') // 创建a标签
link.href = url
link.download = treeList.value?.name +' 报告' // 设置下载的文件名
link.download = treeList.value?.name + ' 报告' // 设置下载的文件名
document.body.appendChild(link)
link.click() //执行下载
document.body.removeChild(link)
@@ -726,7 +717,7 @@ const analyseList = (e: string, i: number) => {
lineId: dotList.value.id,
searchBeginTime: tableStore.table.params.searchBeginTime,
searchEndTime: tableStore.table.params.searchEndTime,
statisticalId: i
field: i
})
.then(res => {
loading.value = false
@@ -750,6 +741,7 @@ const handleNodeClick = (data: any, node: any) => {
console.log('🚀 ~ handleNodeClick ~ data:', data)
if (data.level == 6) {
dotList.value = data
// dotList.value.id = '6469e77fda42db12c7ca6620a092f03c1'
tableStore.index()
}
}

View File

@@ -13,11 +13,11 @@
</el-form-item>
<el-form-item label="电压等级:" prop="scale">
<el-select v-model="addData.scale" clearable collapse-tags placeholder="请选择干扰源类型">
<el-select v-model="addData.scale" clearable collapse-tags placeholder="请选择电压等级">
<el-option v-for="item in scaleList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="额定有功功率:" prop="ratedPower">
<el-form-item label="额定有功功率(kV):" prop="ratedPower">
<el-input-number v-model="addData.ratedPower" :min="0" style="width: 100%" />
</el-form-item>
<el-form-item label="经度:" prop="longitude">
@@ -103,7 +103,7 @@ const config = () => {
formRef.value.validate((valid: any) => {
if (valid) {
editNewStation(addData.value).then((res: any) => {
ElMessage.success('新增成功!')
ElMessage.success(title.value + '成功!')
emit('onSubmit')
cancel()
})
@@ -135,8 +135,11 @@ const open = (row: any) => {
longitude: row.row.longitude,
latitude: row.row.latitude
}
}
}
userAdd.value = true
setTimeout(() => {
formRef.value.clearValidate()
}, 20)
}
defineExpose({ open })

View File

@@ -41,10 +41,9 @@ const tableStore = new TableStore({
method: 'POST',
column: [
{
field: 'index',
title: '序号',
type: 'seq',
align: 'center',
width: 60,
width: '80',
formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
@@ -62,9 +61,9 @@ const tableStore = new TableStore({
formatter: (row: any) => scaleList.filter(item => item.id == row.cellValue)[0]?.name
},
{ field: 'ratedPower', title: '额定有功功率' },
{ field: 'ratedPower', title: '额定有功功率(kV)' },
{ field: 'longitude', title: '经度' },
{ field: 'latitude', title: '度' },
{ field: 'latitude', title: '度' },
{
title: '操作',
align: 'center',