暂降治理评估
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
<!--上传负荷谐波电流数据-->
|
||||
<template>
|
||||
<el-dialog
|
||||
draggable
|
||||
class='cn-operate-dialog'
|
||||
v-model='eventDataUploadVisible'
|
||||
:title='title'
|
||||
style='width: 415px; height: 380px'
|
||||
top='25vh'
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' ref='formRef' :rules='rules'>
|
||||
<el-form-item label='数据名称' prop='dataName'>
|
||||
<el-input v-model='form.dataName' />
|
||||
</el-form-item>
|
||||
<el-form-item label='负荷谐波电流'>
|
||||
<el-upload
|
||||
v-model:file-list='fileList'
|
||||
ref='uploadEventData'
|
||||
action=''
|
||||
:limit='1'
|
||||
:on-exceed='handleExceed'
|
||||
:auto-upload='false'
|
||||
:on-change='choose'
|
||||
>
|
||||
<template #trigger>
|
||||
<el-button type='primary'>选择数据文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='eventDataUploadVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang='ts'>
|
||||
import { ref, inject, reactive } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import type { UploadInstance, UploadProps, UploadRawFile, UploadUserFile } from 'element-plus'
|
||||
import { genFileId } from 'element-plus'
|
||||
import { importEventData } from '@/api/advance-boot/sgGroven/sgEvent'
|
||||
|
||||
const fileList = ref<UploadUserFile[]>([])
|
||||
|
||||
const formRef = ref()
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
const eventDataUploadVisible = ref(false)
|
||||
const title = ref('')
|
||||
const uploadEventData = ref<UploadInstance>()
|
||||
|
||||
const rules = {
|
||||
dataName: [
|
||||
{ required: true, message: '数据名不能为空', trigger: 'blur' },
|
||||
],
|
||||
|
||||
}
|
||||
|
||||
// 注意不要和表单ref的命名冲突
|
||||
const form = reactive({
|
||||
dataName: '',
|
||||
file: null
|
||||
})
|
||||
|
||||
//弹出界面,默认选择用户的第一个生产线的第一条进线进行数据导入
|
||||
const open = async (text: string) => {
|
||||
title.value = text
|
||||
resetForm()
|
||||
form.file = null
|
||||
fileList.value = []
|
||||
// 在此处恢复默认表单
|
||||
for (let key in form) {
|
||||
form[key] = ''
|
||||
}
|
||||
eventDataUploadVisible.value = true
|
||||
}
|
||||
|
||||
//重置表单内容
|
||||
const resetForm = () => {
|
||||
if (formRef.value) {
|
||||
formRef.value.resetFields()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 选择待上传文件
|
||||
*/
|
||||
const choose = (e: any) => {
|
||||
form.dataName = e.name.substring(0,e.name.lastIndexOf('.'))
|
||||
form.file = e.raw
|
||||
|
||||
}
|
||||
const handleExceed: UploadProps['onExceed'] = files => {
|
||||
uploadEventData.value!.clearFiles()
|
||||
const file = files[0] as UploadRawFile
|
||||
file.uid = genFileId()
|
||||
uploadEventData.value!.handleStart(file)
|
||||
fileList.value = [{ name: file.name, url: '' }]
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交用户表单数据
|
||||
*/
|
||||
const submit = async () => {
|
||||
if (form.file) {
|
||||
formRef.value.validate(async (valid: any) => {
|
||||
if (valid) {
|
||||
let data = new FormData()
|
||||
data.append('file', form.file)
|
||||
data.append('name', form.dataName)
|
||||
await importEventData(data).then((res: any) => {
|
||||
if (res.code == 'A0000') {
|
||||
ElMessage.success('导入成功')
|
||||
tableStore.index()
|
||||
eventDataUploadVisible.value = false
|
||||
} else {
|
||||
ElMessage.error('导入失败,请检查表格文件')
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
ElMessage.error('请选择数据文件')
|
||||
}
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-form-item__content div {
|
||||
width: 100% !important;
|
||||
}
|
||||
</style>
|
||||
412
src/views/pqs/harmonicMonitoring/harmonicGovern/index.vue
Normal file
412
src/views/pqs/harmonicMonitoring/harmonicGovern/index.vue
Normal file
@@ -0,0 +1,412 @@
|
||||
<!--谐波治理参数准备页面-->
|
||||
<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: [
|
||||
{ required: true, message: '设备容量不能为空', trigger: 'blur' },
|
||||
{ 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() {
|
||||
formRef.value.validate(async (valid: any, errorMsg: any) => {
|
||||
if (valid) {
|
||||
//将所有参数传递到后端进行数据计算
|
||||
await calc(form).then(res => {
|
||||
//先通知父组件打开历史页面
|
||||
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>
|
||||
Reference in New Issue
Block a user