Files
admin-sjzx/src/views/pqs/supervise/interfere/components/undocumented/addForm.vue
zhujiyan cd2a09061e 提交
2024-05-13 10:18:48 +08:00

1525 lines
59 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-dialog v-model="dialogFormVisible" title="用户档案录入" width="80%" height="400" :append-to-body="true">
<!-- 用户档案录入 新建1 -->
<el-form :model="form" :rules="rules" ref="ruleFormRef">
<el-row>
<el-col :span="12">
<el-form-item label="填报人:" :label-width="formLabelWidth" prop="reporter">
<el-input
v-model="form.reporter"
autocomplete="off"
:disabled="true"
place-holder="请输入填报人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="填报日期:" :label-width="formLabelWidth" prop="reportDate">
<el-date-picker
:disabled="true"
style="width: 100%"
v-model="form.reportDate"
type="date"
placeholder="请选择填报日期"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="填报部门:" :label-width="formLabelWidth" prop="orgId">
<el-input v-model="form.orgId" :disabled="true" autocomplete="off" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="工程预期投产日期:"
:label-width="formLabelWidth"
prop="expectedProductionDate"
class="label_over_warp"
>
<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-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="用户性质:" :label-width="formLabelWidth" prop="userType">
<el-select v-model="form.userType" placeholder="请选择用户性质">
<el-option
v-for="(item, index) in userTypeList"
:label="item.label"
:value="item.value"
:key="index"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属地市:" :label-width="formLabelWidth" 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.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="归口管理部门:" :label-width="formLabelWidth" prop="responsibleDepartment">
<el-input
v-model="form.responsibleDepartment"
autocomplete="off"
placeholder="请输入归口管理部门"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工程名称:" :label-width="formLabelWidth" prop="projectName">
<el-input
v-model="form.projectName"
autocomplete="off"
placeholder="请输入工程名称"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="用户状态:" :label-width="formLabelWidth" 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-col>
<el-col :span="12">
<el-form-item label="变电站:" :label-width="formLabelWidth" prop="substation">
<el-input
v-model="form.substation"
autocomplete="off"
placeholder="请输入变电站"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
</el-row>
<!-- 用户性质1独有 -->
<el-row v-if="form.userType == '0' || form.userType == '1'">
<el-col :span="12">
<el-form-item label="用户协议容量:" :label-width="formLabelWidth" prop="agreementCapacity">
<el-input
v-model="form.agreementCapacity"
autocomplete="off"
placeholder="请输入用户协议容量"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
<!-- 用户性质1独有 -->
<el-col :span="12">
<el-form-item
label="非线性设备类型:"
:label-width="formLabelWidth"
class="label_over_warp"
prop="nonlinearDeviceType"
>
<!-- <el-select
v-model="form.nonlinearDeviceType"
placeholder="请选择非线性设备类型"
:disabled="openType == 'detail'"
>
<el-option v-for="(item,index) in nonlinearDeviceTypeList" :label="name" :value="item.id" :key="index"/>
</el-select> -->
<el-tree
accordion
ref="treeRef"
:default-expand-all="false"
show-checkbox
check-strictly
:highlight-current="true"
readonly
node-key="id"
:props="defaultProps"
:data="nonlinearDeviceTypeList"
:expand-on-click-node="false"
@check-change="handleCheckChange"
></el-tree>
</el-form-item>
</el-col>
</el-row>
<!-- 字典 -->
<el-row>
<el-col :span="12">
<el-form-item label="电压等级:" :label-width="formLabelWidth" 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-col>
<!-- 字典 -->
<el-col :span="12">
<el-form-item label="预测评估单位:" :label-width="formLabelWidth" 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.id"
:key="index"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否需要治理:" :label-width="formLabelWidth" 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-col>
<el-col :span="12">
<el-form-item
label="是否开展背景测试:"
:label-width="formLabelWidth"
prop="backgroundTestPerformed"
class="label_over_warp"
>
<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-col>
</el-row>
<el-row v-if="form.userType != '0' && form.userType != '1'">
<el-col :span="12">
<!-- 字典 -->
<el-form-item label="评估类型:" :label-width="formLabelWidth" 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-col>
<el-col :span="12">
<el-form-item label="PCC点" :label-width="formLabelWidth" prop="pccPoint">
<el-input
v-model="form.pccPoint"
autocomplete="off"
placeholder="请输入PCC点"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'">
<el-col :span="12">
<el-form-item label="基准短路容量:" :label-width="formLabelWidth" prop="baseShortCircuitCapacity">
<el-input
v-model="form.baseShortCircuitCapacity"
placeholder="请输入基准短路容量"
:disabled="openType == 'detail'"
>
<template #append>MVA</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="系统最小短路容量:"
:label-width="formLabelWidth"
class="label_over_warp"
prop="minShortCircuitCapacity"
>
<el-input
v-model="form.minShortCircuitCapacity"
autocomplete="off"
placeholder="请选择系统最小短路容量"
:disabled="openType == 'detail'"
>
<template #append>MVA</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'">
<el-col :span="12">
<el-form-item
label="PCC供电设备容量"
:label-width="formLabelWidth"
class="label_over_warp"
prop="pccEquipmentCapacity"
>
<el-input
v-model="form.pccEquipmentCapacity"
placeholder="请输入PCC供电设备容量"
:disabled="openType == 'detail'"
>
<template #append>MVA</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="用户用电协议容量:"
:label-width="formLabelWidth"
class="label_over_warp"
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-col>
</el-row>
<el-row v-if="form.userType == '6'">
<el-col :span="12">
<el-form-item label="行业:" :label-width="formLabelWidth" 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-col>
<el-col :span="12">
<el-form-item label="敏感装置名称:" prop="deviceName" :label-width="formLabelWidth">
<el-input
v-model="form.deviceName"
autocomplete="off"
placeholder="请输入敏感装置名称"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.userType == '6'">
<el-col :span="12">
<el-form-item label="供电电源数量:" prop="powerSupplyCount" :label-width="formLabelWidth">
<el-input-number
style="width: 100%"
v-model="form.powerSupplyCount"
:min="0"
placeholder="请输入供电电源数量"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="敏感电能质量指标:"
prop="energyQualityIndex"
:label-width="formLabelWidth"
class="label_over_warp"
>
<el-select
v-model="form.energyQualityIndex"
placeholder="请选择敏感电能质量指标"
:disabled="openType == 'detail'"
>
<el-option
v-for="(item, index) in energyQualityIndexList"
:label="item.name"
:value="item.id"
:key="index"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span="12"
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
>
<!-- 字典 -->
<el-form-item
label="非线性负荷类型:"
prop="nonlinearLoadType"
:label-width="formLabelWidth"
class="label_over_warp"
>
<el-select
v-model="form.nonlinearLoadType"
placeholder="请选择非线性负荷类型"
:disabled="openType == 'detail'"
>
<el-option label="Zone No.1" value="shanghai" />
<el-option label="Zone No.2" value="beijing" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="form.userType == '6'">
<el-form-item
label="是否开展抗扰度测试:"
prop="antiInterferenceTest"
:label-width="formLabelWidth"
class="label_over_warp"
>
<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-col>
<el-col :span="12" v-if="form.userType != '0' && form.userType != '1'">
<el-form-item
label="预测评估评审单位:"
prop="evaluationChekDept"
:label-width="formLabelWidth"
class="label_over_warp"
>
<el-input
v-model="form.evaluationChekDept"
autocomplete="off"
placeholder="请输入预测评估评审单位"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="预测评估结论:" prop="evaluationConclusion" :label-width="formLabelWidth">
<el-input
v-model="form.evaluationConclusion"
autocomplete="off"
placeholder="请输入预测评估结论"
:disabled="openType == 'detail'"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="可研报告:" prop="feasibilityReport" :label-width="formLabelWidth">
<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-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
label="项目初步设计说明书:"
prop="preliminaryDesignDescription"
:label-width="formLabelWidth"
class="label_over_warp"
>
<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-col>
<el-col :span="12">
<el-form-item
label="预测评估报告:"
prop="predictionEvaluationReport"
:label-width="formLabelWidth"
>
<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-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
label="预测评估评审意见报告:"
prop="predictionEvaluationReviewOpinions"
:label-width="formLabelWidth"
class="label_over_warp"
>
<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-col>
<el-col :span="12">
<el-form-item label="其他附件:" prop="additionalAttachments" :label-width="formLabelWidth">
<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-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
v-if="form.userType != '0' && form.userType != '1'"
label="用户接入变电站主接线示意图"
:label-width="formLabelWidth"
class="label_over_warp"
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-col>
<el-col :span="12">
<el-form-item
v-if="form.userType == '6'"
label="主要敏感设备清单:"
:label-width="formLabelWidth"
class="label_over_warp"
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-col>
</el-row>
<el-row v-if="form.userType == '6'">
<el-col :span="12">
<el-form-item
label="抗扰度测试报告:"
prop="antiInterferenceReport"
:label-width="formLabelWidth"
class="label_over_warp"
>
<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-col>
<el-col :span="12">
<el-form-item
label="背景电能质量测试报告:"
prop="powerQualityReport"
:label-width="formLabelWidth"
class="label_over_warp"
>
<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>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="close()">取消</el-button>
<el-button type="primary" v-if="openType != 'detail'" @click="confirmForm()">确定</el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ref, onMounted, reactive, defineExpose, defineProps, watch } from 'vue'
// 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'
import moment from 'moment'
import { queryByAllCode } from '@/api/system-boot/dictTree'
import { useAdminInfo } from '@/stores/adminInfo'
import { uploadFile } from '@/api/system-boot/file'
import { submitFormData } from '@/api/supervise/interfere/index.ts'
// defineProps({
// openType: {
// type: String,
// default: 'create'
// }
// })
const dictData = useDictData()
const dialogFormVisible = ref(false)
const formLabelWidth = '120px'
const form = ref(null)
const ruleFormRef = ref(null)
//字典获取所属地市
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')
//获取非线性设备类型树形下拉
const defaultProps = {
children: 'children',
label: 'name'
}
const nonlinearDeviceTypeList = ref('')
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 => {})
})
})
})
})
}
const treeRef = ref()
const handleCheckChange = data => {
const checkedNodes = treeRef.value.getCheckedKeys()
if (checkedNodes.length > 1) {
checkedNodes.map((item, index) => {
// if (index == checkedNodes.length - 1) {
// treeRef.value.setCheckedKeys(item, true)
// } else {
// treeRef.value.setCheckedKeys(item, false)
// }
})
form.value.nonlinearDeviceType = checkedNodes[checkedNodes.length - 1]
} else if (checkedNodes.length == 1) {
form.value.nonlinearDeviceType = checkedNodes[0]
}
}
getTreeList()
//获取登陆用户姓名和部门
const adminInfo = useAdminInfo()
console.log(adminInfo.$state, '打印登陆用户新信息')
const resetForm = () => {
form.value = {
reporter: '', //填报人
reportDate: new Date(), //填报日期
orgId: '', //填报部门
expectedProductionDate: '', //工程预期投产日期
userType: '0', //用户性质
city: '', //所属地市
responsibleDepartment: '', //归口管理部门
userStatus: '', //用户状态
projectName: '', //工程名称
substation: '', //变电站
voltageLevel: '', //电压等级
evaluationDept: '', //预测评估单位
evaluationConclusion: '', //预测评估结论
backgroundTestPerformed: '', //是否开展背景测试
feasibilityReport: '', // 可研报告告地址
preliminaryDesignDescription: '', //项目初步设计说明书告地址
predictionEvaluationReport: '', //预测评估报告告地址
predictionEvaluationReviewOpinions: '', //预测评估评审意见报告地址
additionalAttachments: '', //其他附件告地址
state: '', //数据状态
pccPoint: '', //PCC点
evaluationType: '', //评估类型
evaluationChekDept: '', //预测评估审单位
substationMainWiringDiagram: '', //用户接入变电站主接线示意图地址
powerQualityReport: '', //背景电能质量测试报告
minShortCircuitCapacity: '', //系统最小短路容量MVA
userAgreementCapacity: '', //用户用电协议容量MVA
needGovernance: '', //是否需要治理
//userType=='0' '1'
// userReportProjectPO: {
agreementCapacity: '', //用户协议容量
nonlinearDeviceType: '', //非线性设备类型
// },
//userType=='2' '3' '4' '5'
// userReportSensitivePO: {
nonlinearLoadType: '', //非线性负荷类型
pccEquipmentCapacity: '', // PCC供电设备容量MVA
baseShortCircuitCapacity: '', //基准短路容量MVA
// },
//userType=='6'
// userReportSubstationPO: {
industry: '', //行业
deviceName: '', //敏感装置名称
powerSupplyCount: 0, //供电电源数量
energyQualityIndex: '', //敏感电能质量指标
antiInterferenceTest: '', //是否开展抗扰度测试
sensitiveDevices: '', //主要敏感设备清单
antiInterferenceReport: '' //抗扰度测试报告
// }
}
form.value.reporter = adminInfo.$state.name
form.value.orgId = adminInfo.$state.deptName
}
//初始化数据
resetForm()
const subForm = ref({
city: '', //所属地市
evaluationConclusion: '', //预测评估结论
evaluationDept: '', //预测评估单位
expectedProductionDate: '', //工程预期投产日期
orgId: '', //填报部门
projectName: '',
reporter: '', //填报人
reportDate: new Date(), //填报日期
responsibleDepartment: '', //归口管理部门
substation: '', ////变电站
userStatus: '0', //用户状态
userType: '0',//用户性质
voltageLevel: "",
//userType=='0' '1'
userReportProjectPO: {
additionalAttachments: '', //其他附件告地址
agreementCapacity: 0,
backgroundTestPerformed: 0,
feasibilityReport: '', //可研报告
id: '',
needGovernance: 0,
nonlinearDeviceType: '',
predictionEvaluationReport: '', //预测评估报告告地址
predictionEvaluationReviewOpinions: '', //预测评估评审意见报告地址
preliminaryDesignDescription: '', //项目初步设计说明书告地址
state: 0
},
//userType=='2,3,4,5'
userReportSubstationPO: {
additionalAttachments: '', //其他附件告地址
backgroundTestPerformed: 0,
baseShortCircuitCapacity: 0,
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: '', //可研报告
id: '',
minShortCircuitCapacity: 0,
needGovernance: 0,
nonlinearLoadType: '',
pccEquipmentCapacity: 0,
pccPoint: '',
predictionEvaluationReport: '', //预测评估报告告地址
predictionEvaluationReviewOpinions: '', //预测评估评审意见报告地址
preliminaryDesignDescription: '', //项目初步设计说明书告地址
state: 0,
substationMainWiringDiagram: '', //用户接入变电站主接线示意图地址
userAgreementCapacity: 0
},
//userType=='6'
userReportSensitivePO: {
additionalAttachments: '', //其他附件告地址
antiInterferenceReport: '', //抗扰度测试报告
antiInterferenceTest: '',
backgroundTestPerformed: 0,
deviceName: '',
energyQualityIndex: '',
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: '', //可研报告告地址
id: '',
industry: '',
needGovernance: 0,
pccPoint: '',
powerQualityReport: '', //背景电能质量测试报告
powerSupplyCount: 0,
predictionEvaluationReport: '', //预测评估报告告地址
predictionEvaluationReviewOpinions: '', //预测评估评审意见报告地址
preliminaryDesignDescription: '', //项目初步设计说明书告地址
sensitiveDevices: '', //主要敏感设备清单
state: 0,
substationMainWiringDiagram: '' //用户接入变电站主接线示意图地址
}
})
watch(
() => form.value,
(val, oldVal) => {
for (let key in val) {
if (subForm.value.hasOwnProperty(key)) {
subForm.value[key] = val[key] // 对相同的key进行赋值
}
}
//处理填报日期时间格式
subForm.value.reportDate = moment(form.value.reportDate).format('YYYY-MM-DD')
//userType==0,1
if (val.userType == '0' || val.userType == '1') {
subForm.value.userReportProjectPO = {
additionalAttachments: '', //其他附件告地址
agreementCapacity: 0,
backgroundTestPerformed: 0,
feasibilityReport: '', //可研报告
id: '',
needGovernance: 0,
nonlinearDeviceType: '',
predictionEvaluationReport: '', //预测评估报告告地址
predictionEvaluationReviewOpinions: '', //预测评估评审意见报告地址
preliminaryDesignDescription: '', //项目初步设计说明书告地址
state: 0
}
for (let key in val) {
if (subForm.value.userReportProjectPO.hasOwnProperty(key)) {
// 对相同的key进行赋值
subForm.value.userReportProjectPO[key] = val[key]
}
}
delete subForm.value.userReportSubstationPO
delete subForm.value.userReportSensitivePO
}
//userType==2,3,4,5
if (val.userType == '2' || val.userType == '3' || val.userType == '4' || val.userType == '5') {
subForm.value.userReportSubstationPO = {
additionalAttachments: '', //其他附件告地址
backgroundTestPerformed: 0,
baseShortCircuitCapacity: 0,
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: '', //可研报告
id: '',
minShortCircuitCapacity: 0,
needGovernance: 0,
nonlinearLoadType: '',
pccEquipmentCapacity: 0,
pccPoint: '',
predictionEvaluationReport: '', //预测评估报告告地址
predictionEvaluationReviewOpinions: '', //预测评估评审意见报告地址
preliminaryDesignDescription: '', //项目初步设计说明书告地址
state: 0,
substationMainWiringDiagram: '', //用户接入变电站主接线示意图地址
userAgreementCapacity: 0
}
for (let key in val) {
if (subForm.value.userReportSensitivePO.hasOwnProperty(key)) {
// 对相同的key进行赋值
subForm.value.userReportSensitivePO[key] = val[key]
}
}
delete subForm.value.userReportProjectPO
delete subForm.value.userReportSensitivePO
}
//userType==6
if (val.userType == '6') {
subForm.value.userReportSensitivePO = {
additionalAttachments: '', //其他附件告地址
antiInterferenceReport: '', //抗扰度测试报告
antiInterferenceTest: '',
backgroundTestPerformed: 0,
deviceName: '',
energyQualityIndex: '',
evaluationChekDept: '',
evaluationType: '',
feasibilityReport: '', //可研报告告地址
id: '',
industry: '',
needGovernance: 0,
pccPoint: '',
powerQualityReport: '', //背景电能质量测试报告
powerSupplyCount: 0,
predictionEvaluationReport: '', //预测评估报告告地址
predictionEvaluationReviewOpinions: '', //预测评估评审意见报告地址
preliminaryDesignDescription: '', //项目初步设计说明书告地址
sensitiveDevices: '', //主要敏感设备清单
state: 0,
substationMainWiringDiagram: '' //用户接入变电站主接线示意图地址
}
for (let key in val) {
if (subForm.value.userReportSubstationPO.hasOwnProperty(key)) {
// 对相同的key进行赋值
subForm.value.userReportSubstationPO[key] = val[key]
}
}
delete subForm.value.userReportProjectPO
delete subForm.value.userReportSubstationPO
}
},
{
deep: true
}
)
//定义校验规则
const rules = reactive({
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'
}
],
feasibilityReport: [
{
required: true,
message: '请上传可研报告',
trigger: 'blur'
}
],
preliminaryDesignDescription: [
{
required: true,
message: '请上传项目初步设计说明书',
trigger: 'blur'
}
],
predictionEvaluationReport: [
{
required: true,
message: '请上传预测评估报告',
trigger: 'blur'
}
],
predictionEvaluationReviewOpinions: [
{
required: true,
message: '请上传预测评估评审意见报告',
trigger: 'blur'
}
],
additionalAttachments: [
{
required: false,
message: '请上传其他附件',
trigger: 'blur'
}
],
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'
}
],
substationMainWiringDiagram: [
{
required: true,
message: '请上传用户接入变电站主接线示意图',
trigger: 'change'
}
],
sensitiveDevices: [
{
required: true,
message: '请上传主要敏感设备清单',
trigger: 'change'
}
],
antiInterferenceReport: [
{
required: true,
message: '请上传抗扰度测试报告',
trigger: 'change'
}
],
powerQualityReport: [
{
required: true,
message: '请上传背景电能质量测试报告',
trigger: 'change'
}
],
baseShortCircuitCapacity: [
{
required: true,
message: '请输入基准短路容量',
trigger: 'blur'
}
],
minShortCircuitCapacity: [
{
required: true,
message: '请输入系统最小短路容量',
trigger: 'blur'
}
],
pccEquipmentCapacity: [
{
required: true,
message: '请输入PCC供电设备容量',
trigger: 'blur'
}
],
userAgreementCapacity: [
{
required: true,
message: '请输入用户用电协议容量',
trigger: 'blur'
}
],
nonlinearLoadType: [
{
required: true,
message: '请输入非线性负荷类型',
trigger: 'blur'
}
]
})
//用户性质数组
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'
}
])
const open = () => {
dialogFormVisible.value = true
}
const close = () => {
//重置表单内容
resetForm()
//取消表单校验状态
ruleFormRef.value.resetFields()
dialogFormVisible.value = false
}
onMounted(() => {
console.log()
})
// 上传报告
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) {
//整理上传文件的数据
// userType==0,1
form.value.reporter = adminInfo.$state.id
form.value.orgId = adminInfo.$state.deptName
subForm.value.reporter = adminInfo.$state.id
let confirmFormData = JSON.parse(JSON.stringify(subForm.value))
if(subForm.value.userType=='0'||subForm.value.userType=='1'){
confirmFormData.userReportProjectPO = {
...confirmFormData.userReportProjectPO,
feasibilityReport: feasibilityReport.value, //可研报告
preliminaryDesignDescription: preliminaryDesignDescription.value, //项目初步设计说明书告地址
predictionEvaluationReport: predictionEvaluationReport.value, //预测评估报告告地址
predictionEvaluationReviewOpinions: predictionEvaluationReviewOpinions.value, //预测评估评审意见报告地址
additionalAttachments: additionalAttachments.value //其他附件告地址
}
}else{
delete subForm.value.userReportProjectPO;
}
console.log(
feasibilityReport.value,
'feasibilityReport.value++++++++',
confirmFormData,
)
//userType==2,3,4,5
if(subForm.value.userType=='0'||subForm.value.userType=='1'){
confirmFormData.userReportProjectPO = {
...confirmFormData.userReportProjectPO,
feasibilityReport: feasibilityReport.value, //可研报告
preliminaryDesignDescription: preliminaryDesignDescription.value, //项目初步设计说明书告地址
predictionEvaluationReport: predictionEvaluationReport.value, //预测评估报告告地址
predictionEvaluationReviewOpinions: predictionEvaluationReviewOpinions.value, //预测评估评审意见报告地址
additionalAttachments: additionalAttachments.value //其他附件告地址
}
}else{
delete subForm.value.userReportProjectPO;
}
//userType==6
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 //背景电能质量测试报告
}
console.log('提交的数据:', confirmFormData)
return
submitFormData(subForm.value).then(res => {
console.log(res, '打印提交结果2333=======>>>>>')
})
} else {
console.log('表单验证失败')
return false
}
})
}
defineExpose({ open })
</script>
<style lang="less" scoped>
.el-form {
width: 96%;
height: 400px;
margin: 0 auto;
overflow-y: auto;
padding-top: 20px;
}
.dialog-footer {
padding: 10px;
}
/* 调整标签的换行行为 */
.label_over_warp::v-deep .el-form-item__label {
white-space: pre-line !important;
line-height: 16px !important;
}
.el-form-item {
padding: 0 20px;
height: auto !important;
}
::v-deep .el-form-item__label {
justify-content: flex-start !important;
}
.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;
}
</style>