Files
admin-sjzx/src/views/pqs/harmonicMonitoring/harmonicGovern/index.vue

412 lines
14 KiB
Vue
Raw Normal View History

2024-04-19 14:35:12 +08:00
<!--谐波治理参数准备页面-->
<template>
<el-form :inline='false' :model='form' label-width='135px' :rules='rules' ref='formRef'>
<!--基础数据-->
<div class='singleParamContent'>
<el-divider content-position='left' class='divider'>
<span class='dividerFontStyle'>负荷工况</span>
</el-divider>
<el-row>
<el-col :span='7'>
<el-form-item label='有功' prop='yggl'>
<el-input
v-model='form.yggl'
clearable
>
<template #append>kW</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
<el-form-item label='无功' prop='wggl'>
<el-input
v-model='form.wggl'
clearable
>
<template #append>kvar</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='8'>
<el-button style='height: 45px;width:250px;position: absolute;right: 0;' type='primary'
@click='calcSag'>开始评估
</el-button>
</el-col>
<el-col :span='7'>
<el-form-item label='负载电压' prop='fzdy'>
<el-input
v-model='form.fzdy'
:min='0.4'
:max='500'
clearable
>
<template #append>kV</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
<el-form-item label='负载接线方式' prop='ptType'>
<el-select v-model='form.ptType' filterable>
<el-option
v-for='item in ptTypeList'
:key='item.id'
:label='item.name'
:value='item.id'
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span='6' :offset='1'>
<el-form-item label='负荷谐波电流' prop='ptType'>
<el-select v-model='form.ptType' filterable>
<el-option
v-for='item in ptTypeList'
:key='item.id'
:label='item.name'
:value='item.id'
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span='1'>
<el-button @click='importData' style='margin-left: 5px' type='primary' :icon='Plus' />
</el-col>
</el-row>
</div>
<!--UPS参数-->
<div class='singleParamContent'>
<el-divider content-position='left' class='divider'>
<span class='dividerFontStyle'>变压器参数</span>
</el-divider>
<el-row>
<el-col :span='7'>
<el-form-item label='负载损耗' prop='fhsh'>
<el-input
v-model='form.fhsh'
clearable
>
<template #append>kW</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
<el-form-item label='短路阻抗百分比' prop='dlzk'>
<el-input
v-model='form.dlzk'
clearable
>
<template #append>%</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
<el-form-item label='额定容量' prop='edrl'>
<el-input
v-model='form.edrl'
clearable
>
<template #append>MVA</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7'>
<el-form-item label='一次侧电压' prop='ycdy'>
<el-input
v-model='form.ycdy'
clearable
>
<template #append>kV</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
<el-form-item label='二次测电压' prop='ecdy'>
<el-input
v-model='form.ecdy'
clearable
>
<template #append>kV</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
<el-form-item label='空载电流百分比' prop='kzdl'>
<el-input
v-model='form.kzdl'
clearable
>
<template #append>%</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7'>
<el-form-item label='空载损耗' prop='kzsh'>
<el-input
v-model='form.kzsh'
clearable
>
<template #append>kW</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</div>
<!--滤波器参数-->
<div class='singleParamContent'>
<el-divider content-position='left' class='divider'>
<span class='dividerFontStyle'>滤波器参数</span>
</el-divider>
<el-row>
<el-col :span='7'>
<el-form-item label='目标功率因数' prop='glys'>
<el-input
v-model='form.glys'
clearable
>
</el-input>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
<el-form-item label='分配方式' prop='calcflag'>
<el-select v-model='form.calcflag' filterable>
<el-option
v-for='item in calcList'
:key='item.id'
:label='item.name'
:value='item.id'
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span='7' :offset='1'>
</el-col>
<el-col :span='7'>
</el-col>
<el-col :span='7' :offset='1'>
</el-col>
</el-row>
</div>
</el-form>
<data-upload-popup ref='dataUploadPopup' />
</template>
<script setup lang='ts'>
import { Plus } from '@element-plus/icons-vue'
import { ref, reactive, onMounted } from 'vue'
import emitter from '@/utils/emitter'
import { numberRegex, numberRegexSag } from '@/utils/regexPattern'
import { ElMessage } from 'element-plus'
import { calc } from '@/api/advance-boot/sgGroven/sgScheme'
import DataUploadPopup from '@/views/pqs/harmonicMonitoring/harmonicGovern/dataUploadPopup.vue'
defineOptions({
name: 'calcParamPrepare'
})
const dataUploadPopup = ref()
const formRef = ref()
const ptTypeList: any = ref(
[
{ 'id': 1, 'name': '星型' },
{ 'id': 2, 'name': '三角型' }
]
)
const calcList: any = ref(
[
{ 'id': 1, 'name': '按谐波电流大小分配' },
{ 'id': 2, 'name': '无功均分' }
]
)
const incomingLineListData: any = ref([])
// 注意不要和表单ref的命名冲突
let form = reactive({
yggl: '155.83',
wggl: '96.57',
fzdy: '0.4',
ptType: 1,
fhsh: '',
dlzk: '',
edrl: '',
ycdy: '',
ecdy: '',
kzdl: '',
kzsh: '',
glys: '',
pzys: '',
jzcs: '',
calcflag: ''
})
//form表单校验规则
const rules = {
yggl: [
{ required: true, message: '有功功率必填', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
wggl: [
{ required: true, message: '无功必填', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
fzdy: [
{ required: true, message: '负载电压必填', trigger: 'blur' },
{ pattern: numberRegexSag, message: '请确保电压范围0.4kV~500kV', trigger: 'blur' }
],
productLineId: [{ required: true, message: '生产线必选', trigger: 'change' }],
payBackPeriod: [{ required: true, message: '期望回收周期必填', trigger: 'change' }],
ups: {
price: [
{ required: true, message: '购置价格不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
compensation: [
{ required: true, message: '补偿能力不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
maintainFee: [
{ required: true, message: '年维护费不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
responseTime: [
{ required: true, message: '响应时间不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
backupTime: [
{ required: true, message: '后备时间不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
]
},
avc: {
price: [
{ required: true, message: '购置价格不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
compensation: [
{ required: true, message: '补偿能力不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
maintainFee: [
{ required: true, message: '年维护费不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
responseTime: [
{ required: true, message: '响应时间不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
backupTime: [
{ required: true, message: '后备时间不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
]
},
quick: {
governMachinePower: [
2024-06-13 13:32:50 +08:00
{ required: true, message: '终端容量不能为空', trigger: 'blur' },
2024-04-19 14:35:12 +08:00
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
price: [
{ required: true, message: '购置价格不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
buildFee: [
{ required: true, message: '构建成本不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
quickMaintainFee: [
{ required: true, message: '年维护费不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
actionTime: [
{ required: true, message: '动作时间不能为空', trigger: 'blur' },
{ pattern: numberRegex, message: '请输入有效的数值', trigger: 'blur' }
],
incomingLineId: [{ required: true, message: '备用进线必选', trigger: 'change' }]
}
}
//新增负荷谐波电流
const importData = () => {
// 弹出框,联级选择生产线--进线,上传文件
dataUploadPopup.value.open('导入谐波电流数据')
}
/**
* 挂载时初始化数据内容
*/
onMounted(() => {
//todo...动态加载数据文件
})
/**
* 计算暂降治理
*/
function calcSag() {
2024-11-21 19:50:24 +08:00
formRef.value.validate((valid: any, errorMsg: any) => {
2024-04-19 14:35:12 +08:00
if (valid) {
//将所有参数传递到后端进行数据计算
2024-11-21 19:50:24 +08:00
calc(form).then(res => {
2024-04-19 14:35:12 +08:00
//先通知父组件打开历史页面
emitter.emit('schemeRadio', '评估计算结果')
emitter.emit('calcResult', false)
//再将历史数据传递到历史页面
emitter.emit('send-scheme-result', res.data)
})
} else {
for (const item in errorMsg) {
ElMessage.error(errorMsg[item][0].message)
}
}
})
}
</script>
<style scoped>
.divider {
font-family: AlimamaDongFangDaKai;
}
@keyframes colorChange {
0% {
color: #205CE8;
}
100% {
color: #32B9FC;
}
}
.dividerFontStyle {
font-size: 25px !important;
animation: colorChange 3s infinite;
}
.singleParamContent {
padding: 5px 30px;
}
.el-col {
margin-top: 15px !important;
}
</style>