Files
admin-sjzx/src/views/pqs/runManage/assessment/components/uese/form.vue

444 lines
20 KiB
Vue
Raw Normal View History

2025-03-25 10:57:52 +08:00
<template>
2025-06-17 15:48:22 +08:00
<div class="default-main">
2025-03-25 17:46:19 +08:00
<div class="actionButtons">
2025-08-26 11:07:11 +08:00
<el-button type="primary" icon="el-icon-Check" class="md8" @click="onsubmit" v-if="showSaveButton">保存</el-button>
2025-03-25 17:46:19 +08:00
<back-component style="margin: 8px" />
2025-08-26 11:07:11 +08:00
2025-03-25 17:46:19 +08:00
</div>
<div :style="pageHeight" style="overflow-y: auto">
<el-collapse v-model="activeNames" class="pl10 pr10">
2025-03-31 14:33:05 +08:00
<el-collapse-item title="用户参数维护" :name="1">
2025-06-17 15:48:22 +08:00
<el-form
ref="form1"
:inline="true"
:model="form"
class="form-four"
:rules="rules"
label-width="auto"
2025-08-26 11:07:11 +08:00
:disabled="formDisabled"
2025-06-17 15:48:22 +08:00
>
<el-form-item label="所在地市" prop="deptId">
<!-- <el-select v-model="form.deptId" clearable placeholder="请选择所在地市">
2025-03-31 14:33:05 +08:00
<el-option
v-for="item in areaOptionList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
2025-06-17 15:48:22 +08:00
</el-select> -->
<Area ref="areaRef" v-model="form.deptId" style="width: 100%" @changeValue="changeArea" />
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="用户名称" prop="assessName">
<el-input v-model="form.assessName" placeholder="用户名称" clearable show-word-limit maxlength="32"/>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-09-04 09:08:45 +08:00
<el-form-item label="用户电压等级" prop="userScale">
2025-08-26 11:07:11 +08:00
<el-select v-model="form.userScale" clearable placeholder="请选择电压等级">
2025-06-17 15:48:22 +08:00
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="用户协议容量(MVA)" prop="agreedCapacity">
<el-input-number
style="width: 100%"
v-model.trim="form.agreedCapacity"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="是否包含电容器" prop="withCapacitor">
<el-select v-model="form.withCapacitor" placeholder="请选择是否包含电容器" clearable>
<el-option label="是" value="01" />
<el-option label="否" value="00" />
2025-03-31 14:33:05 +08:00
</el-select>
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="用户负荷类型" prop="isWindfarm">
<el-select v-model="form.isWindfarm" clearable placeholder="请选择用户负荷类型">
<el-option label="风电场" value="01"></el-option>
<el-option label="光伏" value="02"></el-option>
<el-option label="其他" value="03"></el-option>
2025-03-31 14:33:05 +08:00
</el-select>
</el-form-item>
2025-08-26 11:07:11 +08:00
<el-form-item :label="windfarmCapacityLabel" prop="windfarmCapacity">
2025-06-17 15:48:22 +08:00
<el-input-number
style="width: 100%"
v-model="form.windfarmCapacity"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="是否单相负荷" prop="singleLoad">
<el-select v-model="form.singleLoad" clearable placeholder="请选择是否单相负荷">
<el-option label="是" value="00"></el-option>
<el-option label="否" value="01"></el-option>
</el-select>
2025-03-31 14:33:05 +08:00
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item title="系统参数维护" :name="2">
2025-06-17 15:48:22 +08:00
<el-form
:inline="true"
ref="form2"
:model="form"
class="form-four"
:rules="rules"
label-width="auto"
2025-08-26 11:07:11 +08:00
:disabled="formDisabled"
2025-06-17 15:48:22 +08:00
>
<el-form-item label="接入变电站" prop="powerstationId">
<el-select
v-model="form.powerstationId"
filterable
clearable
@change="changePowerstation"
placeholder="请选择接入变电站"
>
2025-03-31 14:33:05 +08:00
<el-option
2025-06-17 15:48:22 +08:00
v-for="item in powerstationList"
2025-03-31 14:33:05 +08:00
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="变电站电压等级" prop="powerstationScale">
<el-select v-model="form.powerstationScale" disabled clearable placeholder="请选择变电站">
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="接入母线" prop="busId">
<el-select v-model="form.busId" clearable @change="changeBus" placeholder="请选择母线">
<el-option
v-for="item in busList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="母线电压等级" prop="busScale">
<el-select v-model="form.busScale" disabled clearable placeholder="请选择母线">
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
2025-03-31 14:33:05 +08:00
</el-select>
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="供电设备容量(MVW)" prop="powersupplyCapacity">
<el-input-number
style="width: 100%"
v-model.trim="form.powersupplyCapacity"
show-word-limit
placeholder="请输入值"
2025-09-03 18:26:19 +08:00
min="1"
max="9999"
2025-06-17 15:48:22 +08:00
></el-input-number>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="最小短路容量(MVA)" prop="minshortcircuitCapacity">
<el-input-number
style="width: 100%"
v-model.trim="form.minshortcircuitCapacity"
show-word-limit
placeholder="请输入值"
2025-09-03 18:26:19 +08:00
min="1"
max="9999"
2025-06-17 15:48:22 +08:00
></el-input-number>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="PCC点名称" prop="lineId">
<el-select v-model="form.lineId" clearable @change="LineChange" placeholder="请选择PCC点">
<el-option
v-for="item in pccList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
2025-03-31 14:33:05 +08:00
</el-select>
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="导线类型" prop="linetypeId">
<el-select v-model="form.linetypeId" clearable placeholder="请选择变电站">
<el-option
v-for="item in linetypeList"
:key="item.linetypeId"
:label="item.linetypeName"
:value="item.linetypeId"
></el-option>
</el-select>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="长度(km)" prop="lineLen">
<el-input-number
style="width: 100%"
v-model.trim="form.lineLen"
show-word-limit
placeholder="请输入值"
></el-input-number>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="回路数" prop="lineNum">
<el-input-number
style="width: 100%"
v-model.trim="form.lineNum"
show-word-limit
placeholder="请输入值"
></el-input-number>
2025-03-31 14:33:05 +08:00
</el-form-item>
2025-06-17 15:48:22 +08:00
<el-form-item label="PCC点电网电阻" prop="lineGridreactance">
<el-input-number
style="width: 100%"
v-model.trim="form.lineGridreactance"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="PCC电电网电抗" prop="lineGridresistance">
<el-input-number
style="width: 100%"
v-model.trim="form.lineGridresistance"
show-word-limit
placeholder="请输入值"
></el-input-number>
2025-03-31 14:33:05 +08:00
</el-form-item>
</el-form>
2025-03-25 17:46:19 +08:00
</el-collapse-item>
2025-06-17 15:48:22 +08:00
<div v-if="form.assessId">
2025-08-26 11:07:11 +08:00
<tabFrom :assessId="form.assessId" :isWindfarm="form.isWindfarm" :isWithCapacitor="form.withCapacitor" :disabled="formDisabled"/>
2025-06-17 15:48:22 +08:00
</div>
2025-03-25 17:46:19 +08:00
</el-collapse>
</div>
</div>
2025-03-25 10:57:52 +08:00
</template>
2025-03-25 17:46:19 +08:00
<script setup lang="ts">
2025-06-17 15:48:22 +08:00
import { ref, reactive, onMounted } from 'vue'
2025-03-25 17:46:19 +08:00
import BackComponent from '@/components/icon/back/index.vue'
2025-03-31 14:33:05 +08:00
import { useDictData } from '@/stores/dictData'
2025-03-25 17:46:19 +08:00
import { mainHeight } from '@/utils/layout'
2025-06-17 15:48:22 +08:00
import Area from '@/components/form/area/index.vue'
2025-08-26 11:07:11 +08:00
import { useRouter } from 'vue-router'
2025-06-17 15:48:22 +08:00
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
import { useRoute } from 'vue-router'
import { getSubstationSelect } from '@/api/device-boot/line'
import tabFrom from './tabFrom.vue'
2025-08-26 11:07:11 +08:00
import { cableList, getBusBarSelect, getMonitorSelect, userAdd, userGetInfo ,userEdit} from '@/api/advance-boot/assess'
2025-03-31 14:33:05 +08:00
const activeNames = ref([1, 2, 3, 4, 5, 6, 7])
const dictData = useDictData()
const pageHeight = mainHeight(70)
2025-03-31 14:33:05 +08:00
const areaOptionList = dictData.getBasicData('jibei_area')
2025-08-26 11:07:11 +08:00
const { query} = useRoute() // 查询参数
2025-06-17 15:48:22 +08:00
//字典获取电压等级
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
const powerstationList: any = ref([]) //变电站列表
const busList: any = ref([]) //generatrix列表
const linetypeList: any = ref([]) //线路类型
const pccList: any = ref([]) //pcc列表
2025-08-26 11:07:11 +08:00
const route = useRoute()
const isViewMode = ref(route.query.mode === 'view')
// 根据 isViewMode 控制表单的禁用状态
const formDisabled = ref(isViewMode.value)
// 或者在保存按钮上根据模式控制显示
const showSaveButton = !isViewMode.value
2025-03-31 14:33:05 +08:00
const form: any = ref({
2025-06-17 15:48:22 +08:00
assessId: '',
deptId: dictData.state.area[0].id,
deptName: dictData.state.area[0].name,
assessName: '', //用户名称
userScale: '', //电压等级
agreedCapacity: 0, //用户协议容量,
withCapacitor: '', //是否包含电容器
isWindfarm: '', //用户负荷类型
2025-06-18 16:39:28 +08:00
windfarmCapacity: 0, //用户有功功率MW
2025-06-17 15:48:22 +08:00
singleLoad: '', //是否为单相负荷
powerstationId: '', //变电站id
powerstationName: '', //变电站名称
powerstationScale: '', //变电站电压等级
busId: '', //母线id
busName: '', //母线名称
busScale: '', //母线电压等级
powersupplyCapacity: 0, //供电设备容量
minshortcircuitCapacity: 0, //最小短路容量
lineId: '', //Pccid
lineName: '', //Pccid
lineLen: 0, //长度
lineNum: 0, //回路数
linetypeId: '', //导线类型
lineGridreactance: 0, // PCC电电网电抗
lineGridresistance: 0 //PCC电电网电阻
2025-03-31 14:33:05 +08:00
})
2025-06-17 15:48:22 +08:00
const rules = {
deptId: [{ required: true, message: '请选择部门', trigger: 'change' }],
assessName: [{ required: true, message: '请输入评估名称', trigger: 'blur' }],
agreedCapacity: [{ required: true, message: '请输入用户协议容量', trigger: 'blur' }],
withCapacitor: [{ required: true, message: '请选择是否带电容器', trigger: 'change' }],
isWindfarm: [{ required: true, message: '请选择用户负荷类型', trigger: 'change' }],
windfarmCapacity: [{ required: true, message: '请输入用户有功功率', trigger: 'blur' }],
singleLoad: [{ required: true, message: '请输入是否单相负荷', trigger: 'blur' }],
powerstationId: [{ required: true, message: '请选择接入变电站', trigger: 'change' }],
powerstationScale: [{ required: true, message: '请选择变电站电压等级', trigger: 'change' }],
busId: [{ required: true, message: '请选择接入母线', trigger: 'change' }],
userScale: [{ required: true, message: '请选择母线电压等级', trigger: 'change' }],
busScale: [{ required: true, message: '请选择母线电压等级', trigger: 'change' }],
powersupplyCapacity: [{ required: true, message: '请输入供电设备容量', trigger: 'blur' }],
minshortcircuitCapacity: [{ required: true, message: '请输入最小短路容量', trigger: 'blur' }],
lineId: [{ required: true, message: '请选择PCC点名称', trigger: 'change' }],
linetypeId: [{ required: true, message: '请选择导线类型', trigger: 'change' }],
lineLength: [{ required: true, message: '请输入长度', trigger: 'blur' }],
lineNum: [{ required: true, message: '请输入回路数', trigger: 'blur' }],
lineGridreactance: [{ required: true, message: '请输入PCC点电网电阻', trigger: 'blur' }],
lineGridresistance: [{ required: true, message: '请输入PCC点电网电抗', trigger: 'blur' }]
}
2025-06-18 16:39:28 +08:00
2025-08-26 11:07:11 +08:00
const windfarmCapacityLabel = computed(() => {
if (form.value.isWindfarm === '01') {
return '风电场装机容量(MW)'
} else {
return '用户有功功率(MW)'
}
})
2025-06-17 15:48:22 +08:00
const form1 = ref()
const form2 = ref()
2025-08-26 11:07:11 +08:00
2025-06-17 15:48:22 +08:00
// 保存
const onsubmit = () => {
form1.value.validate((valid: any) => {
if (valid) {
form2.value.validate((valid2: any) => {
if (valid2) {
2025-08-26 11:07:11 +08:00
if(form.value.assessId){
userEdit(form.value).then((res: any) => {
2025-09-03 18:26:19 +08:00
//form.value.assessId = res.data
2025-08-26 11:07:11 +08:00
ElMessage({
type: 'success',
message: '编辑成功!'
})
})
}else{
userAdd(form.value).then((res: any) => {
2025-06-17 15:48:22 +08:00
form.value.assessId = res.data
2025-08-26 11:07:11 +08:00
ElMessage({
type: 'success',
message: '新增成功!'
})
})
}
2025-06-17 15:48:22 +08:00
}
})
}
2025-03-31 14:33:05 +08:00
})
}
2025-06-17 15:48:22 +08:00
const info = async (id?: string) => {
// 获取电站
await getSubstationSelect().then(res => {
powerstationList.value = res.data
})
// 获取线路类型
await cableList({}).then(res => {
linetypeList.value = res.data
2025-03-31 14:33:05 +08:00
})
2025-06-17 15:48:22 +08:00
if (id) {
userGetInfo({ assessId: id }).then(async (res: any) => {
form.value = res.data
await changePowerstation(res.data.powerstationId, false)
})
}
}
// 地市切换
const changeArea = (e: any) => {
form.value.deptName = e.label
2025-03-31 14:33:05 +08:00
}
2025-06-17 15:48:22 +08:00
// 点击变电站
const changePowerstation = (e: any, flag: boolean = true) => {
if (flag) {
form.value.busScale = ''
form.value.busId = ''
form.value.lineId = ''
form.value.lineName = ''
}
let data = powerstationList.value.filter((item: any) => item.id == e)[0]
2025-08-26 11:07:11 +08:00
form.value.powerstationName = data.name
2025-06-17 15:48:22 +08:00
form.value.powerstationScale = data.voltageLevel
getBusBarSelect({ stationId: data.id }).then(res => {
busList.value = res.data
})
getMonitorSelect({ stationId: data.id }).then(res => {
pccList.value = res.data
})
}
// 点击母线
const changeBus = (e: any) => {
let data = busList.value.filter((item: any) => item.id == e)[0]
2025-08-26 11:07:11 +08:00
form.value.busName = data.name
2025-06-17 15:48:22 +08:00
form.value.busScale = data.voltageLevel
}
// 点击pcc
const LineChange = (e: any) => {
let data = pccList.value.filter((item: any) => item.id == e)[0]
form.value.lineName = data.name
}
2025-08-26 11:07:11 +08:00
2025-06-17 15:48:22 +08:00
onMounted(() => {
info(query?.id)
})
2025-08-26 11:07:11 +08:00
2025-03-25 10:57:52 +08:00
</script>
<style lang="scss" scoped>
2025-03-25 17:46:19 +08:00
.actionButtons {
display: flex;
justify-content: end;
}
2025-03-31 14:33:05 +08:00
:deep(.el-collapse-item__header) {
// font-family: AlimamaDongFangDaKai;
2025-03-31 14:33:05 +08:00
font-size: 20px;
&::before {
content: '▍'; /* 添加星号 */
font-size: 16px;
color: var(--el-color-primary);
}
2025-03-31 14:33:05 +08:00
}
.el-collapse-item__content {
padding-bottom: 10px;
}
.form-four {
display: flex;
flex-wrap: wrap;
.el-form-item {
display: flex;
width: 22%;
2025-06-17 15:48:22 +08:00
margin-bottom: 20px;
2025-03-31 14:33:05 +08:00
.el-form-item__content {
flex: 1;
.el-select,
.el-cascader,
.el-input__inner,
.el-date-editor {
width: 100%;
}
}
}
}
2025-08-11 16:13:51 +08:00
:deep(.el-select) {
min-width: 120px;
}
2025-03-25 10:57:52 +08:00
</style>
2025-08-26 11:07:11 +08:00