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

This commit is contained in:
GGJ
2024-03-13 20:33:01 +08:00
parent 88ab8c2526
commit 7429e2270b
14 changed files with 1137 additions and 159 deletions

View File

@@ -27,18 +27,11 @@
<div v-loading="loading">
<el-descriptions class="mb10" title="基础数据" :column="2" size="" border>
<el-descriptions-item label="电压等级" label-align="center" width="25%">
12
</el-descriptions-item>
<el-descriptions-item label="额定容量" label-align="center" width="25%">
12
</el-descriptions-item>
<el-descriptions-item label="待评估用户" label-align="center" width="25%">
<el-select
v-model="user"
placeholder="请选择待评估用户"
size="small"
clearable
filterable
style="width: 240px"
value-key="id"
@@ -55,24 +48,25 @@
<el-descriptions-item label="拟接入光伏容量(MVA)" label-align="center" width="25%">
{{ userData?.protocolCapacity }}
</el-descriptions-item>
<el-descriptions-item label="电压等级" label-align="center" width="25%">
{{ voltageLevelArr.filter(item => item.id === userData?.voltage)[0]?.name }}
</el-descriptions-item>
<el-descriptions-item label="额定容量(MVA)" label-align="center" width="25%">
{{ lineList?.standardCapacity }}
</el-descriptions-item>
</el-descriptions>
<el-tabs v-model="activeName" class="mb10" :style="`height: calc(${tabsHeight} / 2 + 100px)`">
<el-tab-pane label="有功功率" name="1" class="mt10">
<MyEChart v-if="activeName == '1'" :options="options1" />
<MyEChart :options="options1" />
</el-tab-pane>
<el-tab-pane label="无功功率" name="2">
<MyEChart v-if="activeName == '2'" :options="options2" />
<MyEChart :options="options2" />
</el-tab-pane>
<el-tab-pane label="谐波电流幅值" name="3">
<MyEChart v-if="activeName == '3'" :options="options3" />
<MyEChart :options="options3" />
</el-tab-pane>
<el-tab-pane label="首端电压模型参数" name="4">
<vxe-table
v-if="activeName == '4'"
height="auto"
v-bind="defaultAttribute"
:data="voltageList"
>
<vxe-table height="auto" v-bind="defaultAttribute" :data="voltageList">
<vxe-column field="name" title="项别模型参数"></vxe-column>
<vxe-column field="c" title="C"></vxe-column>
<vxe-column field="a" title="a"></vxe-column>
@@ -82,7 +76,7 @@
</el-tabs>
<div class="bottomBox">
<el-row v-if="showAssess">
<el-col :span="16" :style="`height: calc(${tabsHeight} / 2 - 105px)`">
<el-col :span="16" :style="`height: calc(${tabsHeight} / 2 - 107px)`">
<vxe-table
style="flex: 1.5"
v-bind="defaultAttribute"
@@ -124,7 +118,7 @@
</el-col>
</el-row>
<el-button type="primary" icon="el-icon-Document" @click="assess" v-show="!loading">
<el-button type="primary" icon="el-icon-Document" @click="assess" v-show="showBtn">
承载能力评估
</el-button>
</div>
@@ -153,7 +147,8 @@ import {
queryCarryCapacityQData,
queryCarryCapacityIData,
carryCapacityCal,
getExcelTemplate
getExcelTemplate,
getLineDetailData
} from '@/api/advance-boot/bearingCapacity'
import { useDictData } from '@/stores/dictData'
const monitoringPoint = useMonitoringPoint()
@@ -163,6 +158,7 @@ const dictData = useDictData()
const datePickerRef = ref()
const height = mainHeight(80).height
const tabsHeight = mainHeight(260).height
const voltageLevelArr = dictData.getBasicData('Dev_Voltage_Stand')
const tableData = ref([
{
name: '配变首端电压',
@@ -195,9 +191,12 @@ const tableData = ref([
])
const voltageList: any = ref([])
const showAssess = ref(false)
const loading = ref(false)
const showBtn = ref(false)
const flag = ref(true)
const loading = ref(true)
const user = ref('')
const userList: any = ref([])
const lineList: any = ref([])
const options1 = ref({})
const options2 = ref({})
const options3 = ref({})
@@ -233,34 +232,33 @@ const info = () => {
])[0]?.id
}).then(res => {
userList.value = res.data.records
user.value = userList.value[0] || {}
userData.value = res.data.records[0] || {}
})
setTimeout(() => {
onSubmit()
}, 100)
}
// 查询
const onSubmit = async () => {
if (dotList.value.level != 6) {
return ElMessage.error('请选择线路')
return ElMessage.warning('请选择线路')
}
loading.value = true
let data: any = []
let form = {
// endTime: datePickerRef.value.timeValue[1],
// lineId: dotList.value.id,
// startTime: datePickerRef.value.timeValue[0],
lineId: '086c7774e30839d30fdfb0544bf776de',
startTime: '2024-02-05',
endTime: '2024-02-11',
endTime: datePickerRef.value.timeValue[1],
lineId: dotList.value.id,
startTime: datePickerRef.value.timeValue[0],
userId: dictData.state.area[0].id
}
Promise.all([queryCarryCapacityData(form), queryCarryCapacityQData(form), queryCarryCapacityIData(form)]).then(
res => {
options1.value = {}
options2.value = {}
options3.value = {}
voltageList.value = []
showBtn.value = false
Promise.all([queryCarryCapacityData(form), queryCarryCapacityQData(form), queryCarryCapacityIData(form)])
.then(res => {
// 有功功率
voltageList.value = []
stringMap.value = res[0].data.stringMap
p_βminMap.value = res[0].data.p_βminMap
q_βminMap.value = res[1].data.q_βminMap
@@ -276,10 +274,12 @@ const onSubmit = async () => {
setEChart(1, res[0].data.data)
setEChart(2, res[1].data.data)
setEChart(3, res[2].data.data)
showBtn.value = true
loading.value = false
}
)
})
.catch(err => {
loading.value = false
})
}
// 用户变化
const userChange = e => {
@@ -348,6 +348,9 @@ const setEChart = (val: any, data: any) => {
// 承载能力评估
const assess = () => {
if (dotList.value.level != 6) {
return ElMessage.warning('请选择线路')
}
let ChartsList = [
{
name: '安全',
@@ -371,17 +374,17 @@ const assess = () => {
}
]
carryCapacityCal({
startTime: '2024-02-05', //修改
endTime: '2024-02-11', //修改
endTime: datePickerRef.value.timeValue[1],
lineId: dotList.value.id,
startTime: datePickerRef.value.timeValue[0],
userId: userData.value.userId, //dictData.state.area[0].id,
i_βmax: i_βmax.value,
lineId: '086c7774e30839d30fdfb0544bf776de', //修改
p_βminMap: p_βminMap.value,
q_βminMap: q_βminMap.value,
s_T: 200, //修改
s_pv: 200, //修改
scale: '220', //修改
stringMap: stringMap.value,
userId: '49d45dc6390690874b5df064deec56c7'
s_T: lineList.value.standardCapacity,
s_pv: userData.value.protocolCapacity,
scale: userData.value.voltage,
stringMap: stringMap.value
}).then(res => {
tableData.value[0][`level` + res.data.utlevel] = 1
tableData.value[1][`level` + res.data.pfTLevel] = 1
@@ -434,7 +437,7 @@ const assess = () => {
const exportTemplate = () => {
getExcelTemplate().then(res => {
let blob = new Blob([res], {
type: "application/vnd.ms-excel;charset=UTF-8",
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
const url = window.URL.createObjectURL(blob)
@@ -450,7 +453,7 @@ const exportTemplate = () => {
// 离线导入
const choose = (e: any) => {
if (dotList.value.level != 6) {
return ElMessage.error('请选择线路')
return ElMessage.warning('请选择线路')
}
let form = {
endTime: datePickerRef.value.timeValue[1],
@@ -463,8 +466,18 @@ const choose = (e: any) => {
})
}
const handleNodeClick = (data: any, node: any) => {
console.log('🚀 ~ handleNodeClick ~ data:', data)
lineList.value = {}
dotList.value = data
if (data.level == 6) {
getLineDetailData({ id: data.id }).then((res: any) => {
lineList.value = res.data
})
}
if (flag.value) {
onSubmit()
flag.value = false
}
}
</script>
<style lang="scss" scoped>