联调承载能力评估 技术监督ui绘制

This commit is contained in:
GGJ
2024-03-15 16:31:06 +08:00
parent 02cb3fa518
commit 1b6b8c8777
8 changed files with 571 additions and 331 deletions

View File

@@ -4,18 +4,11 @@
<el-button icon="el-icon-Refresh" type="primary" @click="restores">一键还原</el-button>
</div>
<el-divider content-position="left">光伏电站承载能力评估策略</el-divider>
<vxe-table
v-bind="defaultAttribute"
ref="xTable"
:loading="loading"
:data="photovoltaicData"
:column-config="{ resizable: true }"
:mouse-config="{ area: true, extension: false }"
>
<vxe-table v-bind="defaultAttribute" :loading="loading" :data="photovoltaicData" :span-method="mergeRowMethod">
<vxe-colgroup field="group0" title="等级" align="right">
<vxe-column field="name" width="180" title="结果"></vxe-column>
</vxe-colgroup>
<vxe-column field="count1" title="安全(个)">
<vxe-column field="comparisonOperators1" title="安全(个)">
<template #default="row">
<div @click="cells(row, row.row.comparisonOperators1, row.row.count1)">
{{ row.row.comparisonOperators1
@@ -23,7 +16,7 @@
</div>
</template>
</vxe-column>
<vxe-column field="count2" title="III级预警(个)">
<vxe-column field="comparisonOperators2" title="III级预警(个)">
<template #default="row">
<div @click="cells(row, row.row.comparisonOperators2, row.row.count2)">
{{ row.row.comparisonOperators2
@@ -31,7 +24,7 @@
</div>
</template>
</vxe-column>
<vxe-column field="count3" title="II级预警(个)">
<vxe-column field="comparisonOperators3" title="II级预警(个)">
<template #default="row">
<div @click="cells(row, row.row.comparisonOperators3, row.row.count3)">
{{ row.row.comparisonOperators3
@@ -39,7 +32,7 @@
</div>
</template>
</vxe-column>
<vxe-column field="count4" title="I级预警(个)">
<vxe-column field="comparisonOperators4" title="I级预警(个)">
<template #default="row">
<div @click="cells(row, row.row.comparisonOperators4, row.row.count4)">
{{ row.row.comparisonOperators4
@@ -92,7 +85,7 @@ import { defaultAttribute } from '@/components/table/defaultAttribute'
import { mainHeight } from '@/utils/layout'
import { queyDetail, addCarryc, restore } from '@/api/advance-boot/bearingCapacity'
import { ElMessage, ElMessageBox } from 'element-plus'
import { VxeTablePropTypes } from 'vxe-table'
defineOptions({
name: 'Advancedanalysis/eventcorrelation'
})
@@ -147,32 +140,35 @@ const info = () => {
queyDetail().then(res => {
photovoltaicData.value = []
let title = ['安全', 'III级预警', 'II级预警', 'I级预警']
// photovoltaicData.value = res.data
for (let i: number = 1; i < 5; i++) {
photovoltaicData.value.push({
...setData(res.data.filter(item => item.indexResult == i)),
name: title[i - 1]
let p = 0
res.data.forEach((item: any, i: any) => {
item.capacityStrategysingleVOList.forEach((item1: any, i1: any) => {
photovoltaicData.value.push({
name: title[i],
id: item1.id,
result: item.result
})
p++
item1.carryCapacityStrategyIndexVOList.forEach((item2: any) => {
photovoltaicData.value[p - 1]['comparisonOperators' + item2.indexResult] = item2.comparisonOperators
photovoltaicData.value[p - 1]['count' + item2.indexResult] = item2.count
})
})
}
})
console.log('🚀 ~ queyDetail ~ photovoltaicData.value:', photovoltaicData.value)
})
}
// 处理返回数据
const setData = (row: any) => {
let data = {}
row.forEach((item: any) => {
data[`comparisonOperators${item.result}`] = item.comparisonOperators
data[`count${item.result}`] = item.count
})
return data
}
// <span @click="cells(row,comparisonOperators2,count2)">
const cells = (row: any, comparisonOperators: any, count: any) => {
form.value = {
comparisonOperators: comparisonOperators,
count: count,
result: row.columnIndex,
indexResult: row.rowIndex + 1
result: row.row.result,
id: row.row.id,
indexResult: row.columnIndex
}
groupChang(comparisonOperators)
dialogVisible.value = true
}
@@ -200,6 +196,26 @@ const restores = () => {
info()
})
}
// 通用行合并函数(将相同多列数据合并为一行)
const mergeRowMethod: VxeTablePropTypes.SpanMethod = ({ row, _rowIndex, column, visibleData }) => {
const fields = ['name']
const cellValue = row[column.field]
if (cellValue && fields.includes(column.field)) {
const prevRow = visibleData[_rowIndex - 1]
let nextRow = visibleData[_rowIndex + 1]
if (prevRow && prevRow[column.field] === cellValue) {
return { rowspan: 0, colspan: 0 }
} else {
let countRowspan = 1
while (nextRow && nextRow[column.field] === cellValue) {
nextRow = visibleData[++countRowspan + _rowIndex]
}
if (countRowspan > 1) {
return { rowspan: countRowspan, colspan: 1 }
}
}
}
}
onMounted(() => {
info()
})