修改冀北现场问题
绘制 算法库 案例库页面 联调 辽宁 有功功率页面
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 })
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user