Files
admin-sjzx/src/views/pqs/supervise/interfere/components/undocumented/addForm.vue

1480 lines
54 KiB
Vue
Raw Normal View History

2024-05-11 17:09:36 +08:00
<template>
2024-05-14 09:45:47 +08:00
<el-dialog
2024-05-14 19:07:02 +08:00
v-model="dialogFormVisible"
2024-05-14 09:45:47 +08:00
title="用户档案录入"
width="65%"
2024-05-14 09:45:47 +08:00
:append-to-body="true"
2024-05-14 11:31:24 +08:00
:before-close="close"
:close-on-click-modal="false"
draggable
2024-05-14 09:45:47 +08:00
>
2024-05-11 17:09:36 +08:00
<!-- 用户档案录入 新建1 -->
2024-05-14 19:07:02 +08:00
<el-form
:model="form"
class="form-two"
2024-05-14 19:07:02 +08:00
:validate-on-rule-change="false"
:rules="rules"
:scroll-to-error="true"
ref="ruleFormRef"
label-width="auto"
2024-05-14 19:07:02 +08:00
>
<el-form-item label="填报人:" prop="reporter">
<el-input v-model="form.reporter" autocomplete="off" :disabled="true" place-holder="请输入填报人" />
</el-form-item>
2024-05-11 17:09:36 +08:00
<el-form-item label="填报日期:" prop="reportDate">
<el-date-picker
:disabled="true"
style="width: 100%"
v-model="form.reportDate"
type="date"
placeholder="请选择填报日期"
/>
</el-form-item>
2024-05-11 17:09:36 +08:00
<el-form-item label="填报部门:" prop="orgId">
<el-input v-model="form.orgId" :disabled="true" autocomplete="off" />
</el-form-item>
<el-form-item label="工程预期投产日期:" prop="expectedProductionDate">
<el-date-picker
style="width: 100%"
v-model="form.expectedProductionDate"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
:disabled-date="disabledDate"
placeholder="请选择工程预期投产日期"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item label="用户性质:" prop="userType">
<el-select v-model="form.userType" placeholder="请选择用户性质" @change="changeUserType()">
<el-option
v-for="(item, index) in userTypeList"
:label="item.label"
:value="item.value"
:key="index"
/>
</el-select>
</el-form-item>
<el-form-item label="所属地市:" prop="city">
<el-select v-model="form.city" clearable placeholder="请选择所属地市" :disabled="openType == 'detail'">
<el-option
v-for="item in areaOptionList"
:key="item.id"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="归口管理部门:" prop="responsibleDepartment">
<el-input
v-model="form.responsibleDepartment"
autocomplete="off"
placeholder="请输入归口管理部门"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item label="工程名称:" prop="projectName">
<el-input
v-model="form.projectName"
autocomplete="off"
placeholder="请输入工程名称"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item label="用户状态:" prop="userStatus">
<el-select v-model="form.userStatus" placeholder="请选择用户状态" :disabled="openType == 'detail'">
<el-option
v-for="(item, index) in userStateList"
:label="item.label"
:value="item.value"
:disabled="item.label != '可研'"
:key="index"
/>
</el-select>
</el-form-item>
<el-form-item label="变电站:" prop="substation">
<el-input
v-model="form.substation"
autocomplete="off"
placeholder="请输入变电站"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item
v-if="form.userType == '0' || form.userType == '1'"
label="用户协议容量:"
prop="agreementCapacity"
>
<el-input
v-model="form.agreementCapacity"
autocomplete="off"
placeholder="请输入用户协议容量"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item
v-if="form.userType == '0' || form.userType == '1'"
label="非线性设备类型:"
prop="nonlinearDeviceType"
>
<el-tree-select
accordion
ref="treeRef"
:default-expand-all="false"
show-checkbox
check-strictly
:highlight-current="true"
readonly
node-key="id"
:props="defaultProps"
v-model="form.nonlinearDeviceType"
:data="nonlinearDeviceTypeList"
:render-after-expand="false"
/>
</el-form-item>
<el-form-item label="电压等级:" prop="voltageLevel">
<el-select
v-model="form.voltageLevel"
placeholder="请选择电压等级"
node-key="id"
:disabled="openType == 'detail'"
>
<el-option
v-for="(item, index) in voltageLevelList"
:label="item.name"
:value="item.id"
:key="index"
/>
</el-select>
</el-form-item>
<el-form-item label="预测评估单位:" prop="evaluationDept">
<el-select
v-model="form.evaluationDept"
placeholder="请选择预测评估单位"
:disabled="openType == 'detail'"
>
<el-option
v-for="(item, index) in evaluationDeptList"
:label="item.name"
:value="item.name"
:key="index"
/>
</el-select>
</el-form-item>
<el-form-item label="是否需要治理:" prop="needGovernance">
<el-radio-group v-model="form.needGovernance" :disabled="openType == 'detail'">
<el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="是否开展背景测试:" prop="backgroundTestPerformed">
<el-radio-group v-model="form.backgroundTestPerformed" :disabled="openType == 'detail'">
<el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.userType != '0' && form.userType != '1'" label="评估类型:" prop="evaluationType">
<el-select v-model="form.evaluationType" placeholder="请选择评估类型" :disabled="openType == 'detail'">
<el-option
v-for="(item, index) in evaluationTypeList"
:key="indedx"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item v-if="form.userType != '0' && form.userType != '1'" label="PCC点" prop="pccPoint">
<el-input
v-model="form.pccPoint"
autocomplete="off"
placeholder="请输入PCC点"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="基准短路容量:"
prop="baseShortCircuitCapacity"
>
<el-input
v-model="form.baseShortCircuitCapacity"
placeholder="请输入基准短路容量"
:disabled="openType == 'detail'"
>
<template #append>MVA</template>
</el-input>
</el-form-item>
<el-form-item
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="系统最小短路容量:"
prop="minShortCircuitCapacity"
>
<el-input
v-model="form.minShortCircuitCapacity"
autocomplete="off"
placeholder="请选择系统最小短路容量"
:disabled="openType == 'detail'"
>
<template #append>MVA</template>
</el-input>
</el-form-item>
<el-form-item
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="PCC供电设备容量"
prop="pccEquipmentCapacity"
>
<el-input
v-model="form.pccEquipmentCapacity"
placeholder="请输入PCC供电设备容量"
:disabled="openType == 'detail'"
>
<template #append>MVA</template>
</el-input>
</el-form-item>
<el-form-item
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="用户用电协议容量:"
prop="userAgreementCapacity"
>
<el-input
v-model="form.userAgreementCapacity"
autocomplete="off"
:disabled="openType == 'detail'"
place-holder="请输入用户用电协议容量"
>
<template #append>MVA</template>
</el-input>
</el-form-item>
<el-form-item v-if="form.userType == '6'" label="行业:" prop="industry">
<el-select v-model="form.industry" placeholder="请选择行业" :disabled="openType == 'detail'">
<el-option v-for="(item, index) in industryList" :label="item.name" :value="item.id" :key="index" />
</el-select>
</el-form-item>
<el-form-item v-if="form.userType == '6'" label="敏感装置名称:" prop="deviceName">
<el-input
v-model="form.deviceName"
autocomplete="off"
placeholder="请输入敏感装置名称"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item v-if="form.userType == '6'" label="供电电源数量:" prop="powerSupplyCount">
<el-input-number
style="width: 100%"
v-model="form.powerSupplyCount"
:min="0"
placeholder="请输入供电电源数量"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item v-if="form.userType == '6'" label="敏感电能质量指标:" prop="energyQualityIndex">
<el-select
v-model="form.energyQualityIndex"
placeholder="请选择敏感电能质量指标"
:disabled="openType == 'detail'"
2024-05-11 17:09:36 +08:00
>
<el-option
v-for="(item, index) in energyQualityIndexList"
:label="item.name"
:value="item.id"
:key="index"
/>
</el-select>
</el-form-item>
<el-form-item
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="非线性负荷类型:"
prop="nonlinearLoadType"
>
<el-tree-select
accordion
ref="treeRef"
:default-expand-all="false"
show-checkbox
check-strictly
:highlight-current="true"
readonly
node-key="id"
:props="defaultProps"
v-model="form.nonlinearLoadType"
:data="nonlinearDeviceTypeList"
:render-after-expand="false"
/>
</el-form-item>
<el-form-item v-if="form.userType == '6'" label="是否开展抗扰度测试:" prop="antiInterferenceTest">
<el-radio-group v-model="form.antiInterferenceTest" :disabled="openType == 'detail'">
<el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
v-if="form.userType != '0' && form.userType != '1'"
label="预测评估评审单位:"
prop="evaluationChekDept"
>
<el-input
v-model="form.evaluationChekDept"
autocomplete="off"
placeholder="请输入预测评估评审单位"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item label="预测评估结论:" prop="evaluationConclusion">
<el-input
v-model="form.evaluationConclusion"
autocomplete="off"
placeholder="请输入预测评估结论"
:disabled="openType == 'detail'"
/>
</el-form-item>
<el-form-item label="可研报告:" prop="feasibilityReport">
<el-upload
v-model:file-list="form.feasibilityReport"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('feasibilityReport')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item label="项目初步设计说明书:" prop="preliminaryDesignDescription">
<el-upload
v-model:file-list="form.preliminaryDesignDescription"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('preliminaryDesignDescription')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item label="预测评估报告:" prop="predictionEvaluationReport">
<el-upload
v-model:file-list="form.predictionEvaluationReport"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('predictionEvaluationReport')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item label="预测评估评审意见报告:" prop="predictionEvaluationReviewOpinions">
<el-upload
v-model:file-list="form.predictionEvaluationReviewOpinions"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('predictionEvaluationReviewOpinions')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item label="其他附件:" prop="additionalAttachments">
<el-upload
v-model:file-list="form.additionalAttachments"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('additionalAttachments')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item
v-if="form.userType != '0' && form.userType != '1'"
label="用户接入变电站主接线示意图:"
prop="substationMainWiringDiagram"
>
<el-upload
v-model:file-list="form.substationMainWiringDiagram"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('substationMainWiringDiagram')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item label="主要敏感设备清单:" v-if="form.userType == '6'" prop="sensitiveDevices">
<el-upload
v-model:file-list="form.sensitiveDevices"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('sensitiveDevices')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item v-if="form.userType == '6'" label="抗扰度测试报告:" prop="antiInterferenceReport">
<el-upload
v-model:file-list="form.antiInterferenceReport"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('antiInterferenceReport')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item label="背景电能质量测试报告:" prop="powerQualityReport">
<el-upload
v-model:file-list="form.powerQualityReport"
ref="uploadRef"
action=""
accept=".doc,.docx,.xlsx,.xls,.pdf"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('powerQualityReport')"
>
<template #trigger>
<el-button type="primary" :disabled="openType == 'detail'">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
2024-05-14 19:07:02 +08:00
</el-form>
2024-05-11 17:09:36 +08:00
<template #footer>
<div class="dialog-footer">
<el-button @click="close()">取消</el-button>
2024-05-14 19:07:02 +08:00
<el-button type="primary" @click="confirmForm()">确定</el-button>
2024-05-11 17:09:36 +08:00
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
2024-05-14 19:07:02 +08:00
import { ref, onMounted, reactive, defineExpose, defineProps, defineEmits, watch, onUnmounted } from 'vue'
2024-05-11 17:09:36 +08:00
// import { upload, insertTerminal, updateTerminal } from '@/api/process-boot/terminal'
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
import { genFileId, ElMessage } from 'element-plus'
import { useDictData } from '@/stores/dictData'
import type { ComponentSize, FormInstance, FormRules } from 'element-plus'
2024-05-14 19:07:02 +08:00
import { useAdminInfo } from '@/stores/adminInfo'
import { queryByAllCode } from '@/api/system-boot/dictTree'
import { uploadFile } from '@/api/system-boot/file'
import { submitFormData } from '@/api/supervision-boot/interfere/index'
2024-05-14 09:45:47 +08:00
defineProps({
openType: {
type: String,
default: 'create'
}
})
const emits = defineEmits(['onSubmit'])
2024-05-11 17:09:36 +08:00
const dictData = useDictData()
const dialogFormVisible = ref(false)
2024-05-14 19:07:02 +08:00
const form: any = ref({})
const ruleFormRef: any = ref(null)
2024-05-11 17:09:36 +08:00
//字典获取所属地市
const areaOptionList = dictData.getBasicData('jibei_area')
//字典获取敏感电能质量指标
const energyQualityIndexList = dictData.getBasicData('Indicator_Type')
//字典获取行业类型
const industryList = dictData.getBasicData('industry_type_jb')
//字典电压等级
const voltageLevelList = dictData.getBasicData('Dev_Voltage_Stand')
//字典评估类型
const evaluationTypeList = dictData.getBasicData('Evaluation_Type')
//字典预测评估单位
const evaluationDeptList = dictData.getBasicData('evaluation_dept')
2024-05-14 09:45:47 +08:00
//用户性质数组
const userTypeList = reactive([
{
label: '新建电网工程',
value: '0'
},
{
label: '扩建电网工程',
value: '1'
},
{
label: '新建非线性负荷用户',
value: '2'
},
{
label: '扩建非线性负荷用户',
value: '3'
},
{
label: '新建新能源发电站',
value: '4'
},
{
label: '扩建新能源发电站',
value: '5'
},
{
label: '敏感及重要用户',
value: '6'
}
])
//用户状态数组
const userStateList = reactive([
{
label: '可研',
value: '0'
},
{
label: '建设',
value: '1'
},
{
label: '运行',
value: '2'
},
{
label: '退运',
value: '3'
}
])
2024-05-11 17:09:36 +08:00
//获取非线性设备类型树形下拉
const defaultProps = {
children: 'children',
2024-05-14 09:45:47 +08:00
label: 'name',
key: 'id'
2024-05-11 17:09:36 +08:00
}
2024-05-14 19:07:02 +08:00
const nonlinearDeviceTypeList: any = ref('')
2024-05-14 09:45:47 +08:00
//获取登陆用户姓名和部门
const adminInfo = useAdminInfo()
const resetForm = () => {
form.value = {
reporter: '', //填报人 1
reportDate: new Date(), //填报日期 1
orgId: '', //填报部门 1
expectedProductionDate: '', //工程预期投产日期 1
userType: '0', //用户性质 1
city: areaOptionList[0].name, //所属地市 1
responsibleDepartment: '', //归口管理部门 1
userStatus: userStateList[0].value, //用户状态 1
projectName: '', //工程名称 1
substation: '', //变电站 1
voltageLevel: voltageLevelList[0].id, //电压等级 1
2024-05-14 11:31:24 +08:00
evaluationDept: evaluationDeptList[0].name, //预测评估单位 1
2024-05-14 09:45:47 +08:00
evaluationConclusion: '', //预测评估结论 1
backgroundTestPerformed: 0, //是否开展背景测试 1
feasibilityReport: [], // 可研报告告地址 1
preliminaryDesignDescription: [], //项目初步设计说明书告地址 1
predictionEvaluationReport: [], //预测评估报告地址 1
predictionEvaluationReviewOpinions: [], //预测评估评审意见报告地址 1
additionalAttachments: [], //其他附件告地址 1
2024-05-14 09:45:47 +08:00
state: '', //数据状态
pccPoint: '', //PCC点 1
evaluationType: evaluationTypeList[0].id, //评估类型 1
evaluationChekDept: '', //预测评估审单位 1
2024-05-14 19:07:02 +08:00
substationMainWiringDiagram: [], //用户接入变电站主接线示意图地址 1
powerQualityReport: [], //背景电能质量测试报告 1
2024-05-14 09:45:47 +08:00
minShortCircuitCapacity: '', //系统最小短路容量MVA 1
userAgreementCapacity: '', //用户用电协议容量MVA 1
needGovernance: 0, //是否需要治理 1
agreementCapacity: '', //用户协议容量 1
nonlinearDeviceType: '', //非线性设备类型 1
nonlinearLoadType: '', //非线性负荷类型 1
pccEquipmentCapacity: '', // PCC供电设备容量MVA 1
baseShortCircuitCapacity: '', //基准短路容量MVA1
industry: industryList[0].id, //行业 1
deviceName: '', //敏感装置名称 1
powerSupplyCount: 0, //供电电源数量 1
energyQualityIndex: energyQualityIndexList[0].id, //敏感电能质量指标 1
antiInterferenceTest: 0, //是否开展抗扰度测试 1
2024-05-14 19:07:02 +08:00
sensitiveDevices: [], //主要敏感设备清单 1
antiInterferenceReport: [] //抗扰度测试报告 1
2024-05-14 09:45:47 +08:00
}
form.value.reporter = adminInfo.$state.name
form.value.orgId = adminInfo.$state.deptName
}
//初始化数据
resetForm()
//获取树形图数据
2024-05-11 17:09:36 +08:00
const getTreeList = () => {
queryByAllCode().then(res => {
nonlinearDeviceTypeList.value = [res.data.find(item => item.code == 'Major_Nonlinear_Device')]
nonlinearDeviceTypeList.value.map(item => {
//tree禁用根节点
item.disabled = 'disabled'
item.children.map(vv => {
//tree禁用二级节点
vv.disabled = 'disabled'
vv.children.map(kk => {
//tree禁用三级节点
kk.disabled = 'disabled'
kk.children.map(ss => {})
})
})
})
})
}
2024-05-14 09:45:47 +08:00
getTreeList()
2024-05-11 17:09:36 +08:00
const treeRef = ref()
2024-05-14 09:45:47 +08:00
//选中树形节点变化事件
2024-05-11 17:09:36 +08:00
const handleCheckChange = data => {
const checkedNodes = treeRef.value.getCheckedKeys()
if (checkedNodes.length > 1) {
checkedNodes.map((item, index) => {
2024-05-14 09:45:47 +08:00
if (index == checkedNodes.length - 1) {
treeRef.value.setChecked(checkedNodes[index], true)
} else {
treeRef.value.setChecked(checkedNodes[index], false)
}
2024-05-11 17:09:36 +08:00
})
form.value.nonlinearDeviceType = checkedNodes[checkedNodes.length - 1]
} else if (checkedNodes.length == 1) {
form.value.nonlinearDeviceType = checkedNodes[0]
}
}
2024-05-14 19:07:02 +08:00
const subForm: any = ref({
2024-05-13 10:18:48 +08:00
city: '', //所属地市
evaluationConclusion: '', //预测评估结论
evaluationDept: '', //预测评估单位
expectedProductionDate: '', //工程预期投产日期
orgId: '', //填报部门
projectName: '',
2024-05-11 17:09:36 +08:00
reporter: '', //填报人
reportDate: new Date(), //填报日期
responsibleDepartment: '', //归口管理部门
2024-05-13 10:18:48 +08:00
substation: '', ////变电站
userStatus: '0', //用户状态
2024-05-14 09:45:47 +08:00
userType: '0', //用户性质
voltageLevel: '',
2024-05-11 17:09:36 +08:00
//userType=='0' '1'
userReportProjectPO: {
additionalAttachments: [], //其他附件告地址
2024-05-13 10:18:48 +08:00
agreementCapacity: 0,
2024-05-11 17:09:36 +08:00
backgroundTestPerformed: 0,
feasibilityReport: [], //可研报告
2024-05-11 17:09:36 +08:00
id: '',
needGovernance: 0,
2024-05-13 10:18:48 +08:00
nonlinearDeviceType: '',
predictionEvaluationReport: [], //预测评估报告告地址
2024-05-14 19:07:02 +08:00
predictionEvaluationReviewOpinions: [], //预测评估评审意见报告地址
preliminaryDesignDescription: [], //项目初步设计说明书告地址
2024-05-11 17:09:36 +08:00
state: 0
},
2024-05-13 10:18:48 +08:00
//userType=='2,3,4,5'
userReportSubstationPO: {
additionalAttachments: [], //其他附件告地址
2024-05-11 17:09:36 +08:00
backgroundTestPerformed: 0,
2024-05-13 10:18:48 +08:00
baseShortCircuitCapacity: 0,
2024-05-11 17:09:36 +08:00
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: [], //可研报告
2024-05-11 17:09:36 +08:00
id: '',
2024-05-13 10:18:48 +08:00
minShortCircuitCapacity: 0,
2024-05-11 17:09:36 +08:00
needGovernance: 0,
2024-05-13 10:18:48 +08:00
nonlinearLoadType: '',
pccEquipmentCapacity: 0,
2024-05-11 17:09:36 +08:00
pccPoint: '',
predictionEvaluationReport: [], //预测评估报告告地址
2024-05-14 19:07:02 +08:00
predictionEvaluationReviewOpinions: [], //预测评估评审意见报告地址
preliminaryDesignDescription: [], //项目初步设计说明书告地址
2024-05-11 17:09:36 +08:00
state: 0,
2024-05-14 19:07:02 +08:00
substationMainWiringDiagram: [], //用户接入变电站主接线示意图地址
2024-05-13 10:18:48 +08:00
userAgreementCapacity: 0
2024-05-11 17:09:36 +08:00
},
//userType=='6'
2024-05-13 10:18:48 +08:00
userReportSensitivePO: {
additionalAttachments: [], //其他附件告地址
2024-05-14 19:07:02 +08:00
antiInterferenceReport: [], //抗扰度测试报告
2024-05-13 10:18:48 +08:00
antiInterferenceTest: '',
2024-05-11 17:09:36 +08:00
backgroundTestPerformed: 0,
2024-05-13 10:18:48 +08:00
deviceName: '',
energyQualityIndex: '',
2024-05-11 17:09:36 +08:00
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: [], //可研报告告地址
2024-05-11 17:09:36 +08:00
id: '',
2024-05-13 10:18:48 +08:00
industry: '',
2024-05-11 17:09:36 +08:00
needGovernance: 0,
pccPoint: '',
2024-05-14 19:07:02 +08:00
powerQualityReport: [], //背景电能质量测试报告
2024-05-13 10:18:48 +08:00
powerSupplyCount: 0,
predictionEvaluationReport: [], //预测评估报告告地址
2024-05-14 19:07:02 +08:00
predictionEvaluationReviewOpinions: [], //预测评估评审意见报告地址
preliminaryDesignDescription: [], //项目初步设计说明书告地址
2024-05-14 19:07:02 +08:00
sensitiveDevices: [], //主要敏感设备清单
2024-05-11 17:09:36 +08:00
state: 0,
2024-05-14 19:07:02 +08:00
substationMainWiringDiagram: [] //用户接入变电站主接线示意图地址
2024-05-11 17:09:36 +08:00
}
})
2024-05-14 09:45:47 +08:00
2024-05-11 17:09:36 +08:00
//定义校验规则
2024-05-14 09:45:47 +08:00
const rules = ref({
2024-05-11 17:09:36 +08:00
reporter: [
{
required: true,
message: '请输入填报人',
trigger: 'blur'
}
],
reportDate: [
{
required: true,
message: '请选择填报日期',
trigger: 'change'
}
],
orgId: [
{
required: true,
message: '请选择填报部门',
trigger: 'change'
}
],
expectedProductionDate: [
{
required: true,
message: '请选择工程预期投产日期',
trigger: 'change'
}
],
userType: [
{
required: true,
message: '清选择用户性质',
trigger: 'change'
}
],
city: [
{
required: true,
message: '请选择所属地市',
trigger: 'change'
}
],
responsibleDepartment: [
{
required: true,
message: '请输入归口管理部门',
trigger: 'blur'
}
],
userStatus: [
{
required: true,
message: '请选择用户状态',
trigger: 'change'
}
],
projectName: [
{
required: true,
message: '请输入工程名称',
trigger: 'blur'
}
],
substation: [
{
required: true,
message: '请输入变电站',
trigger: 'blur'
}
],
voltageLevel: [
{
required: true,
message: '请选择电压等级',
trigger: 'change'
}
],
evaluationDept: [
{
required: true,
message: '请选择预测评估单位',
trigger: 'change'
}
],
evaluationConclusion: [
{
required: true,
message: '请输入预测评估结论',
trigger: 'blur'
}
],
agreementCapacity: [
{
required: true,
message: '请选择用户协议容量',
trigger: 'change'
}
],
nonlinearDeviceType: [
{
required: true,
message: '请选择非线性设备类型',
trigger: 'change'
}
],
needGovernance: [
{
required: true,
message: '请选择是否需要治理',
trigger: 'change'
}
],
backgroundTestPerformed: [
{
required: true,
message: '请选择是否开展背景测试',
trigger: 'change'
}
],
state: [
{
required: true,
message: '请选择数据状态',
trigger: 'change'
}
],
pccPoint: [
{
required: true,
message: '请输入PCC点',
trigger: 'blur'
}
],
industry: [
{
required: true,
message: '请选择行业',
trigger: 'change'
}
],
deviceName: [
{
required: true,
message: '请输入敏感装置名称',
trigger: 'blur'
}
],
powerSupplyCount: [
{
required: true,
message: '请输入供电电源数量',
trigger: 'blur'
}
],
energyQualityIndex: [
{
required: true,
message: '请输入敏感电能质量指标',
trigger: 'blur'
}
],
evaluationType: [
{
required: true,
message: '请选择评估类型',
trigger: 'change'
}
],
antiInterferenceTest: [
{
required: true,
message: '请选择是否开展抗扰度测试',
trigger: 'change'
}
],
evaluationChekDept: [
{
required: true,
message: '请输入预测评估审单位',
trigger: 'blur'
}
],
2024-05-14 09:45:47 +08:00
baseShortCircuitCapacity: [
2024-05-11 17:09:36 +08:00
{
required: true,
2024-05-14 09:45:47 +08:00
message: '请输入基准短路容量',
trigger: 'blur'
2024-05-11 17:09:36 +08:00
}
],
2024-05-14 09:45:47 +08:00
minShortCircuitCapacity: [
{
required: true,
message: '请输入系统最小短路容量',
trigger: 'blur'
}
],
pccEquipmentCapacity: [
{
required: true,
message: '请输入PCC供电设备容量',
trigger: 'blur'
}
],
userAgreementCapacity: [
2024-05-11 17:09:36 +08:00
{
required: true,
2024-05-14 09:45:47 +08:00
message: '请输入用户用电协议容量',
trigger: 'blur'
}
],
nonlinearLoadType: [
{
required: true,
message: '请输入非线性负荷类型',
trigger: 'blur'
}
],
substationMainWiringDiagram: [
{
required: true,
2024-05-14 09:45:47 +08:00
message: '请上传用户接入变电站主接线示意图',
trigger: 'change'
}
],
sensitiveDevices: [
{
required: true,
2024-05-11 17:09:36 +08:00
message: '请上传主要敏感设备清单',
trigger: 'change'
}
],
antiInterferenceReport: [
{
required: true,
2024-05-11 17:09:36 +08:00
message: '请上传抗扰度测试报告',
trigger: 'change'
}
],
powerQualityReport: [
{
required: true,
2024-05-11 17:09:36 +08:00
message: '请上传背景电能质量测试报告',
trigger: 'change'
}
],
2024-05-14 09:45:47 +08:00
feasibilityReport: [
2024-05-11 17:09:36 +08:00
{
required: true,
2024-05-14 09:45:47 +08:00
message: '请上传可研报告',
2024-05-11 17:09:36 +08:00
trigger: 'blur'
}
],
2024-05-14 09:45:47 +08:00
preliminaryDesignDescription: [
2024-05-11 17:09:36 +08:00
{
required: true,
2024-05-14 09:45:47 +08:00
message: '请上传项目初步设计说明书',
2024-05-11 17:09:36 +08:00
trigger: 'blur'
}
],
2024-05-14 09:45:47 +08:00
predictionEvaluationReport: [
2024-05-11 17:09:36 +08:00
{
required: true,
2024-05-14 09:45:47 +08:00
message: '请上传预测评估报告',
2024-05-11 17:09:36 +08:00
trigger: 'blur'
}
],
2024-05-14 09:45:47 +08:00
predictionEvaluationReviewOpinions: [
2024-05-11 17:09:36 +08:00
{
required: true,
2024-05-14 09:45:47 +08:00
message: '请上传预测评估评审意见报告',
2024-05-11 17:09:36 +08:00
trigger: 'blur'
}
],
2024-05-14 09:45:47 +08:00
additionalAttachments: [
2024-05-11 17:09:36 +08:00
{
2024-05-14 09:45:47 +08:00
required: false,
message: '请上传其他附件',
2024-05-11 17:09:36 +08:00
trigger: 'blur'
}
]
})
2024-05-14 09:45:47 +08:00
watch(
() => form.value,
(val, oldVal) => {
for (let key in val) {
if (subForm.value.hasOwnProperty(key)) {
subForm.value[key] = val[key] // 对相同的key进行赋值
}
}
2024-05-14 19:07:02 +08:00
2024-05-14 09:45:47 +08:00
//处理填报日期时间格式
subForm.value.reportDate = window.XEUtils.toDateString(form.value.reportDate, 'yyyy-MM-dd')
2024-05-14 09:45:47 +08:00
//userType==0,1
if (val.userType == '0' || val.userType == '1') {
subForm.value.userReportProjectPO = {
additionalAttachments: [], //其他附件告地址
2024-05-14 09:45:47 +08:00
agreementCapacity: 0,
backgroundTestPerformed: 0,
feasibilityReport: [], //可研报告
2024-05-14 09:45:47 +08:00
id: '',
needGovernance: 0,
nonlinearDeviceType: '',
predictionEvaluationReport: [], //预测评估报告告地址
2024-05-14 19:07:02 +08:00
predictionEvaluationReviewOpinions: [], //预测评估评审意见报告地址
preliminaryDesignDescription: [], //项目初步设计说明书告地址
2024-05-14 09:45:47 +08:00
state: 0
}
for (let key in val) {
if (subForm.value.userReportProjectPO && subForm.value.userReportProjectPO.hasOwnProperty(key)) {
// 对相同的key进行赋值
subForm.value.userReportProjectPO[key] = val[key]
}
}
delete subForm.value.userReportSubstationPO
delete subForm.value.userReportSensitivePO
return
}
//userType==2,3,4,5
if (val.userType == '2' || val.userType == '3' || val.userType == '4' || val.userType == '5') {
subForm.value.userReportSubstationPO = {
additionalAttachments: [], //其他附件告地址
2024-05-14 09:45:47 +08:00
backgroundTestPerformed: 0,
baseShortCircuitCapacity: 0,
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: [], //可研报告
2024-05-14 09:45:47 +08:00
id: '',
minShortCircuitCapacity: 0,
needGovernance: 0,
nonlinearLoadType: '',
pccEquipmentCapacity: 0,
pccPoint: '',
predictionEvaluationReport: [], //预测评估报告告地址
2024-05-14 19:07:02 +08:00
predictionEvaluationReviewOpinions: [], //预测评估评审意见报告地址
preliminaryDesignDescription: [], //项目初步设计说明书告地址
2024-05-14 09:45:47 +08:00
state: 0,
2024-05-14 19:07:02 +08:00
substationMainWiringDiagram: [], //用户接入变电站主接线示意图地址
2024-05-14 09:45:47 +08:00
userAgreementCapacity: 0
}
for (let key in val) {
if (subForm.value.userReportSubstationPO && subForm.value.userReportSubstationPO.hasOwnProperty(key)) {
// 对相同的key进行赋值
subForm.value.userReportSubstationPO[key] = val[key]
}
}
delete subForm.value.userReportProjectPO
delete subForm.value.userReportSensitivePO
return
}
//userType==6
if (val.userType == '6') {
subForm.value.userReportSensitivePO = {
additionalAttachments: [], //其他附件告地址
2024-05-14 19:07:02 +08:00
antiInterferenceReport: [], //抗扰度测试报告
2024-05-14 09:45:47 +08:00
antiInterferenceTest: '',
backgroundTestPerformed: 0,
deviceName: '',
energyQualityIndex: '',
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: [], //可研报告告地址
2024-05-14 09:45:47 +08:00
id: '',
industry: '',
needGovernance: 0,
pccPoint: '',
2024-05-14 19:07:02 +08:00
powerQualityReport: [], //背景电能质量测试报告
2024-05-14 09:45:47 +08:00
powerSupplyCount: 0,
predictionEvaluationReport: [], //预测评估报告告地址
2024-05-14 19:07:02 +08:00
predictionEvaluationReviewOpinions: [], //预测评估评审意见报告地址
preliminaryDesignDescription: [], //项目初步设计说明书告地址
2024-05-14 19:07:02 +08:00
sensitiveDevices: [], //主要敏感设备清单
2024-05-14 09:45:47 +08:00
state: 0,
2024-05-14 19:07:02 +08:00
substationMainWiringDiagram: [] //用户接入变电站主接线示意图地址
2024-05-14 09:45:47 +08:00
}
for (let key in val) {
if (subForm.value.userReportSensitivePO && subForm.value.userReportSensitivePO.hasOwnProperty(key)) {
// 对相同的key进行赋值
subForm.value.userReportSensitivePO[key] = val[key]
}
}
delete subForm.value.userReportProjectPO
delete subForm.value.userReportSubstationPO
return
}
2024-05-11 17:09:36 +08:00
},
{
2024-05-14 09:45:47 +08:00
deep: true
2024-05-11 17:09:36 +08:00
}
2024-05-14 09:45:47 +08:00
)
2024-05-11 17:09:36 +08:00
const open = () => {
dialogFormVisible.value = true
}
const close = () => {
//重置表单内容
//取消表单校验状态
2024-05-14 19:07:02 +08:00
ruleFormRef.value && ruleFormRef.value.resetFields()
2024-05-11 17:09:36 +08:00
dialogFormVisible.value = false
2024-05-14 09:45:47 +08:00
emits('onSubmit')
2024-05-14 11:31:24 +08:00
resetForm()
2024-05-11 17:09:36 +08:00
}
onMounted(() => {
console.log()
})
2024-05-14 11:31:24 +08:00
2024-05-14 19:07:02 +08:00
const changeUserType = value => {}
2024-05-11 17:09:36 +08:00
// 上传报告
const uploadRef = ref()
const handleExceed: UploadProps['onExceed'] = files => {
uploadRef.value!.clearFiles()
const file = files[0] as UploadRawFile
file.uid = genFileId()
uploadRef.value!.handleStart(file)
}
let uploadName = ref('')
//上传报告改变
const uploadFileName = val => {
uploadName.value = val
}
// 可研报告数组
const feasibilityReport = ref('')
//项目初步设计说明书
const preliminaryDesignDescription = ref('')
//预测评估报告
const predictionEvaluationReport = ref('')
//预测评估评审意见报告:
const predictionEvaluationReviewOpinions = ref('')
//其他附件:
const additionalAttachments = ref('')
//用户接入变电站主接线示意图
const substationMainWiringDiagram = ref('')
//主要敏感设备清单:
const sensitiveDevices = ref('')
//抗扰度测试报告:
const antiInterferenceReport = ref('')
//背景电能质量测试报告:
const powerQualityReport = ref('')
const choose = (e: any) => {
uploadFile(e.raw, '/supervision/').then(res => {
//可研报告
if (uploadName.value == 'feasibilityReport') {
feasibilityReport.value = res.data.name
}
//项目初步设计说明书
else if (uploadName.value == 'preliminaryDesignDescription') {
preliminaryDesignDescription.value = res.data.name
}
//预测评估报告:
else if (uploadName.value == 'predictionEvaluationReport') {
predictionEvaluationReport.value = res.data.name
}
//预测评估评审意见报告:
else if (uploadName.value == 'predictionEvaluationReviewOpinions') {
predictionEvaluationReviewOpinions.value = res.data.name
}
//其他附件:
else if (uploadName.value == 'additionalAttachments') {
additionalAttachments.value = res.data.name
}
//用户接入变电站主接线示意图
else if (uploadName.value == 'substationMainWiringDiagram') {
substationMainWiringDiagram.value = res.data.name
}
//主要敏感设备清单:
else if (uploadName.value == 'sensitiveDevices') {
sensitiveDevices.value = res.data.name
}
//抗扰度测试报告:
else if (uploadName.value == 'antiInterferenceReport') {
antiInterferenceReport.value = res.data.name
}
//背景电能质量测试报告:
else if (uploadName.value == 'powerQualityReport') {
powerQualityReport.value = res.data.name
}
})
}
//设置工程预期投产日期时间选择范围不能<今天
const disabledDate = time => {
return time.getTime() < Date.now() - 8.64e7 // 8.64e7 毫秒数代表一天
}
//提交
const confirmForm = () => {
ruleFormRef.value.validate(valid => {
if (valid) {
2024-05-13 10:18:48 +08:00
//整理上传文件的数据
// userType==0,1
subForm.value.reporter = adminInfo.$state.id
2024-05-14 09:45:47 +08:00
subForm.value.orgId = adminInfo.$state.deptId
2024-05-13 10:18:48 +08:00
let confirmFormData = JSON.parse(JSON.stringify(subForm.value))
2024-05-14 09:45:47 +08:00
//1.判断是否上传
if (subForm.value.userType == '0' || subForm.value.userType == '1') {
if (!feasibilityReport.value) {
return ElMessage({
message: '请上传可研报告',
type: 'warning'
})
}
if (!preliminaryDesignDescription.value) {
return ElMessage({
message: '请上传项目初步设计说明书',
type: 'warning'
})
}
if (!predictionEvaluationReport.value) {
return ElMessage({
message: '请上传预测评估报告',
type: 'warning'
})
}
if (!predictionEvaluationReviewOpinions.value) {
return ElMessage({
message: '请上传预测评估评审意见报告',
type: 'warning'
})
} else {
//其他报告非必填
confirmFormData.userReportProjectPO = {
...confirmFormData.userReportProjectPO,
feasibilityReport: feasibilityReport.value, //可研报告
preliminaryDesignDescription: preliminaryDesignDescription.value, //项目初步设计说明书告地址
predictionEvaluationReport: predictionEvaluationReport.value, //预测评估报告告地址
predictionEvaluationReviewOpinions: predictionEvaluationReviewOpinions.value, //预测评估评审意见报告地址
additionalAttachments: additionalAttachments?.value //其他附件告地址
}
}
2024-05-13 10:18:48 +08:00
}
//userType==2,3,4,5
2024-05-14 09:45:47 +08:00
if (
subForm.value.userType == '2' ||
subForm.value.userType == '3' ||
subForm.value.userType == '4' ||
subForm.value.userType == '5'
) {
if (!feasibilityReport.value) {
return ElMessage({
message: '请上传可研报告',
type: 'warning'
})
}
if (!preliminaryDesignDescription.value) {
return ElMessage({
message: '请上传项目初步设计说明书',
type: 'warning'
})
}
if (!predictionEvaluationReport.value) {
return ElMessage({
message: '请上传预测评估报告',
type: 'warning'
})
}
if (!predictionEvaluationReviewOpinions.value) {
return ElMessage({
message: '请上传预测评估评审意见报告',
type: 'warning'
})
}
if (!substationMainWiringDiagram.value) {
return ElMessage({
message: '请上传用户接入变电站主接线示意图',
type: 'warning'
})
}
//其他附件非必填
else {
confirmFormData.userReportSubstationPO = {
...confirmFormData.userReportSubstationPO,
feasibilityReport: feasibilityReport.value, //可研报告
preliminaryDesignDescription: preliminaryDesignDescription.value, //项目初步设计说明书告地址
predictionEvaluationReport: predictionEvaluationReport.value, //预测评估报告告地址
predictionEvaluationReviewOpinions: predictionEvaluationReviewOpinions.value, //预测评估评审意见报告地址
additionalAttachments: additionalAttachments.value, //其他附件告地址
substationMainWiringDiagram: substationMainWiringDiagram.value //用户接入变电站主接线示意图地址
}
}
2024-05-13 10:18:48 +08:00
}
2024-05-14 09:45:47 +08:00
2024-05-13 10:18:48 +08:00
//userType==6
2024-05-14 09:45:47 +08:00
if (subForm.value.userType == '6') {
if (!feasibilityReport.value) {
return ElMessage({
message: '请上传可研报告',
type: 'warning'
})
}
if (!preliminaryDesignDescription.value) {
return ElMessage({
message: '请上传项目初步设计说明书',
type: 'warning'
})
}
if (!predictionEvaluationReport.value) {
return ElMessage({
message: '请上传预测评估报告',
type: 'warning'
})
}
if (!predictionEvaluationReviewOpinions.value) {
return ElMessage({
message: '请上传预测评估评审意见报告',
type: 'warning'
})
}
if (!substationMainWiringDiagram.value) {
return ElMessage({
message: '请上传用户接入变电站主接线示意图',
type: 'warning'
})
}
if (!sensitiveDevices.value) {
return ElMessage({
message: '请上传主要敏感设备清单',
type: 'warning'
})
}
if (!antiInterferenceReport.value) {
return ElMessage({
message: '请上传抗扰度测试报告',
type: 'warning'
})
}
if (!powerQualityReport.value) {
return ElMessage({
message: '请上传背景电能质量测试报告',
type: 'warning'
})
}
//其他附件非必填
else {
confirmFormData.userReportSensitivePO = {
...confirmFormData.userReportSensitivePO,
feasibilityReport: feasibilityReport.value, //可研报告
preliminaryDesignDescription: preliminaryDesignDescription.value, //项目初步设计说明书告地址
predictionEvaluationReport: predictionEvaluationReport.value, //预测评估报告告地址
predictionEvaluationReviewOpinions: predictionEvaluationReviewOpinions.value, //预测评估评审意见报告地址
additionalAttachments: additionalAttachments.value, //其他附件告地址
substationMainWiringDiagram: substationMainWiringDiagram.value, //用户接入变电站主接线示意图地址
sensitiveDevices: sensitiveDevices.value, //主要敏感设备清单
antiInterferenceReport: antiInterferenceReport.value, //抗扰度测试报告
powerQualityReport: powerQualityReport.value //背景电能质量测试报告
}
}
2024-05-13 10:18:48 +08:00
}
2024-05-14 09:45:47 +08:00
submitFormData(confirmFormData).then(res => {
ruleFormRef.value.resetFields()
resetForm()
close()
2024-05-11 17:09:36 +08:00
})
} else {
console.log('表单验证失败')
return false
}
})
}
defineExpose({ open })
</script>
2024-05-14 09:45:47 +08:00
<style lang="scss" scoped>
2024-05-11 17:09:36 +08:00
.el-form {
}
2024-05-15 21:33:54 +08:00
2024-05-11 17:09:36 +08:00
.form-label-left-align {
text-align: left;
}
::v-deep .el-input__wrapper {
// border: 2px solid red;
}
::v-deep .el-input-number .el-input__inner {
text-align: left;
}
::v-deep .el-tree__empty-text {
width: 200px !important;
margin-left: 150px !important;
top: 20% !important;
left: 50% !important;
}
2024-05-14 19:07:02 +08:00
:deep(.el-upload-list__item-file-name) {
width: 250px;
text-align: left;
}
2024-05-11 17:09:36 +08:00
</style>