bug调整

This commit is contained in:
2024-12-07 13:55:56 +08:00
parent 7255c3ea90
commit e56f01db93
7 changed files with 535 additions and 377 deletions

View File

@@ -22,19 +22,20 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报表类型"> <el-form-item label="报表类型">
<el-select <el-input readonly type='text' value='分析报表'></el-input>
:disabled="true" <!-- <el-select-->
v-model="reportForm" <!-- :disabled="true"-->
:popper-append-to-body="false" <!-- v-model="reportForm"-->
placeholder="请选择报表类型" <!-- :popper-append-to-body="false"-->
> <!-- placeholder="请选择报表类型"-->
<el-option <!-- >-->
v-for="item in reportFormList" <!-- <el-option-->
:key="item.value" <!-- v-for="item in reportFormList"-->
:label="item.label" <!-- :key="item.value"-->
:value="item.value" <!-- :label="item.label"-->
></el-option> <!-- :value="item.value"-->
</el-select> <!-- ></el-option>-->
<!-- </el-select>-->
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>

View File

@@ -12,7 +12,7 @@
<el-input v-model="tableStore.table.params.crmName" maxlength="32" show-word-limit clearable placeholder="请输入客户名称" /> <el-input v-model="tableStore.table.params.crmName" maxlength="32" show-word-limit clearable placeholder="请输入客户名称" />
</el-form-item> </el-form-item>
<el-form-item label="报表编号"> <el-form-item label="报表编号">
<el-input v-model="tableStore.table.params.reportNumber" clearable placeholder="请输入报表编号" /> <el-input v-model="tableStore.table.params.reportNumber" clearable placeholder="请输入报表编号" maxlength="12" show-word-limit />
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>
@@ -46,7 +46,7 @@ import TableHeader from '@/components/table/header/index.vue'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import { exportModel } from '@/api/process-boot/reportForms' import { exportModel } from '@/api/process-boot/reportForms'
import { genFileId, ElMessage } from 'element-plus' import { genFileId, ElMessage, ElNotification } from 'element-plus'
import type { UploadProps, UploadUserFile } from 'element-plus' import type { UploadProps, UploadUserFile } from 'element-plus'
defineOptions({ defineOptions({
// name: 'harmonic-boot/report/word' // name: 'harmonic-boot/report/word'
@@ -114,6 +114,12 @@ const exportEvent = () => {
form.append('file', uploadList.value?.raw ||'') form.append('file', uploadList.value?.raw ||'')
exportModel(form).then((res: any) => { exportModel(form).then((res: any) => {
if(res.size == 79){
ElNotification({
type: 'error',
message: '包含特殊字符,请注意修改!'
})
}else{
let blob = new Blob([res], { let blob = new Blob([res], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8", type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8",
}) })
@@ -125,6 +131,7 @@ const exportEvent = () => {
document.body.appendChild(link) document.body.appendChild(link)
link.click() //执行下载 link.click() //执行下载
document.body.removeChild(link) document.body.removeChild(link)
}
}) })
} }
</script> </script>

View File

@@ -104,7 +104,7 @@
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="cancelFn">取消</el-button> <el-button @click="cancelFn">取消</el-button>
<el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button> <!-- <el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button>-->
<el-button type="primary" @click="submitFn(false)" :loading="loading">提交审批</el-button> <el-button type="primary" @click="submitFn(false)" :loading="loading">提交审批</el-button>
</div> </div>
</template> </template>

View File

@@ -1,303 +1,318 @@
<template> <template>
<el-dialog v-model="dialogFormVisible" :title="title" width="65%" :append-to-body="true" :before-close="close" <el-dialog v-model='dialogFormVisible' :title='title' width='65%' :append-to-body='true' :before-close='close'
:close-on-click-modal="false" draggable> :close-on-click-modal='false' draggable>
<!-- 用户档案录入 新建1 --> <!-- 用户档案录入 新建1 -->
<el-form :model="form" class="form-two" :validate-on-rule-change="false" :rules="rules" :scroll-to-error="true" <el-form :model='form' class='form-two' :validate-on-rule-change='false' :rules='rules' :scroll-to-error='true'
ref="ruleFormRef" label-width="auto"> ref='ruleFormRef' label-width='auto'>
<el-form-item for="-" label="填报人:" prop="reporter"> <el-form-item for='-' label='填报人:' prop='reporter'>
<el-input v-model.trim="form.reporter" autocomplete="off" :disabled="true" placeholder="请输入填报人" /> <el-input v-model.trim='form.reporter' autocomplete='off' :disabled='true' placeholder='请输入填报人' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="填报日期:" prop="reportDate"> <el-form-item for='-' label='填报日期:' prop='reportDate'>
<el-date-picker :disabled="true" style="width: 100%" v-model="form.reportDate" type="date" <el-date-picker :disabled='true' style='width: 100%' v-model='form.reportDate' type='date'
placeholder="请选择填报日期" /> placeholder='请选择填报日期' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="填报部门:" prop="orgId"> <el-form-item for='-' label='填报部门:' prop='orgId'>
<el-input v-model.trim="form.orgId" :disabled="true" autocomplete="off" /> <el-input v-model.trim='form.orgId' :disabled='true' autocomplete='off' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="工程预期投产日期:" prop="expectedProductionDate"> <el-form-item for='-' label='工程预期投产日期:' prop='expectedProductionDate'>
<el-date-picker style="width: 100%" v-model="form.expectedProductionDate" type="date" <el-date-picker style='width: 100%' v-model='form.expectedProductionDate' type='date'
format="YYYY-MM-DD" value-format="YYYY-MM-DD" :disabled-date="disabledDate" format='YYYY-MM-DD' value-format='YYYY-MM-DD' :disabled-date='disabledDate'
placeholder="请选择工程预期投产日期" /> placeholder='请选择工程预期投产日期' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="用户性质:" prop="userType"> <el-form-item for='-' label='用户性质:' prop='userType'>
<!-- :disabled="resendId != '' && title != '编辑'" --> <!-- :disabled="resendId != '' && title != '编辑'" -->
<el-select v-model="form.userType" placeholder="请选择用户性质"> <el-select v-model='form.userType' placeholder='请选择用户性质'>
<el-option v-for="(item, index) in userTypeList" :label="item.label" :value="item.value" <el-option v-for='(item, index) in userTypeList' :label='item.label' :value='item.value'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="所在地市:" prop="city"> <el-form-item for='-' label='所在地市:' prop='city'>
<el-select v-model="form.city" clearable placeholder="请选择所在地市"> <el-select v-model='form.city' clearable placeholder='请选择所在地市'>
<el-option v-for="item in areaOptionList" :key="item.id" :label="item.name" <el-option v-for='item in areaOptionList' :key='item.id' :label='item.name'
:value="item.name"></el-option> :value='item.name'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="归口管理部门:" prop="responsibleDepartment"> <el-form-item for='-' label='归口管理部门:' prop='responsibleDepartment'>
<el-input v-model.trim="form.responsibleDepartment" autocomplete="off" placeholder="请输入归口管理部门" /> <el-input v-model.trim='form.responsibleDepartment' autocomplete='off'
placeholder='请输入归口管理部门' maxlength='32' show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="项目名称:" prop="projectName"> <el-form-item for='-' label='项目名称:' prop='projectName'>
<el-input v-model.trim="form.projectName" autocomplete="off" placeholder="请输入项目名称" /> <el-input v-model.trim='form.projectName' autocomplete='off' placeholder='请输入项目名称' maxlength='64' show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="用户状态:" prop="userStatus"> <el-form-item for='-' label='用户状态:' prop='userStatus'>
<el-select v-model="form.userStatus" placeholder="请选择用户状态"> <el-select v-model='form.userStatus' placeholder='请选择用户状态'>
<el-option v-for="(item, index) in userStateList" :label="item.label" :value="item.value" <el-option v-for='(item, index) in userStateList' :label='item.label' :value='item.value'
:disabled="item.disabled" :key="index" /> :disabled='item.disabled' :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="厂站名称:" prop="substation"> <el-form-item for='-' label='厂站名称:' prop='substation'>
<el-input v-model.trim="form.substation" autocomplete="off" placeholder="请输入厂站名称" /> <el-input v-model.trim='form.substation' autocomplete='off' placeholder='请输入厂站名称' maxlength='64' show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '0' || form.userType == '1'" label="用户协议容量:" <el-form-item for='-' v-if="form.userType == '0' || form.userType == '1'" label='用户协议容量:'
prop="agreementCapacity"> prop='agreementCapacity'>
<el-input v-model.trim="form.agreementCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.agreementCapacity' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete="off" placeholder="请输入用户协议容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete='off' placeholder='请输入用户协议容量' maxlength="6" show-word-limit>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '0' || form.userType == '1'" label="非线性终端类型:" <el-form-item for='-' v-if="form.userType == '0' || form.userType == '1'" label='非线性终端类型:'
prop="nonlinearDeviceType"> prop='nonlinearDeviceType'>
<el-tree-select accordion ref="treeRef" :default-expand-all="false" show-checkbox check-strictly <el-tree-select accordion ref='treeRef' :default-expand-all='false' show-checkbox check-strictly
:highlight-current="true" readonly node-key="id" :props="defaultProps" :highlight-current='true' readonly node-key='id' :props='defaultProps'
v-model="form.nonlinearDeviceType" :data="nonlinearDeviceTypeList" :render-after-expand="false" /> v-model='form.nonlinearDeviceType' :data='nonlinearDeviceTypeList'
:render-after-expand='false' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="电压等级:" prop="voltageLevel"> <el-form-item for='-' label='电压等级:' prop='voltageLevel'>
<el-select v-model="form.voltageLevel" placeholder="请选择电压等级" node-key="id"> <el-select v-model='form.voltageLevel' placeholder='请选择电压等级' node-key='id'>
<el-option v-for="(item, index) in voltageLevelList" :label="item.name" :value="item.id" <el-option v-for='(item, index) in voltageLevelList' :label='item.name' :value='item.id'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="预测评估单位:" prop="evaluationDept"> <el-form-item for='-' label='预测评估单位:' prop='evaluationDept'>
<el-select v-model="form.evaluationDept" allow-create filterable placeholder="请选择预测评估单位"> <el-select v-model='form.evaluationDept' allow-create filterable placeholder='请选择预测评估单位'>
<el-option v-for="(item, index) in evaluationDeptList" :label="item.name" :value="item.name" <el-option v-for='(item, index) in evaluationDeptList' :label='item.name' :value='item.name'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="是否需要治理:" prop="needGovernance"> <el-form-item for='-' label='是否需要治理:' prop='needGovernance'>
<el-radio-group v-model="form.needGovernance"> <el-radio-group v-model='form.needGovernance'>
<el-radio :value="1"></el-radio> <el-radio :value='1'></el-radio>
<el-radio :value="0"></el-radio> <el-radio :value='0'></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item for="-" label="是否开展背景测试:" prop="backgroundTestPerformed"> <el-form-item for='-' label='是否开展背景测试:' prop='backgroundTestPerformed'>
<el-radio-group v-model="form.backgroundTestPerformed"> <el-radio-group v-model='form.backgroundTestPerformed'>
<el-radio :value="1"></el-radio> <el-radio :value='1'></el-radio>
<el-radio :value="0"></el-radio> <el-radio :value='0'></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="关联终端" prop="devId" v-if="props.openType != 'create'"> <el-form-item label='关联终端' prop='devId' v-if="props.openType != 'create'">
<el-select v-model="form.devId" filterable placeholder="请选择关联终端" @change="changeDevId"> <el-select v-model='form.devId' filterable placeholder='请选择关联终端' @change='changeDevId'>
<el-option v-for="(item, index) in devIdList" :label="item.devName" :value="item.devId" <el-option v-for='(item, index) in devIdList' :label='item.devName' :value='item.devId'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关联监测点" prop="lineId" v-if="props.openType != 'create'"> <el-form-item label='关联监测点' prop='lineId' v-if="props.openType != 'create'">
<el-select v-model="form.lineId" placeholder="请选择关联监测点"> <el-select v-model='form.lineId' placeholder='请选择关联监测点'>
<el-option v-for="(item, index) in lineIdList" :label="item.lineName" :value="item.lineId" <el-option v-for='(item, index) in lineIdList' :label='item.lineName' :value='item.lineId'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType != '0' && form.userType != '1'" label="评估类型:" <el-form-item for='-' v-if="form.userType != '0' && form.userType != '1'" label='评估类型:'
prop="evaluationType"> prop='evaluationType'>
<el-select v-model="form.evaluationType" placeholder="请选择评估类型"> <el-select v-model='form.evaluationType' placeholder='请选择评估类型'>
<el-option v-for="(item, index) in evaluationTypeList" :key="index" :label="item.name" <el-option v-for='(item, index) in evaluationTypeList' :key='index' :label='item.name'
:value="item.id" /> :value='item.id' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType != '0' && form.userType != '1'" label="PCC点" prop="pccPoint"> <el-form-item for='-' v-if="form.userType != '0' && form.userType != '1'" label='PCC点' prop='pccPoint'>
<el-input v-model.trim="form.pccPoint" autocomplete="off" placeholder="请输入PCC点" /> <el-input v-model.trim='form.pccPoint' autocomplete='off' placeholder='请输入PCC点' />
</el-form-item> </el-form-item>
<el-form-item for="-" <el-form-item for='-'
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="基准短路容量:" prop="baseShortCircuitCapacity"> label='基准短路容量:' prop='baseShortCircuitCapacity'>
<el-input v-model.trim="form.baseShortCircuitCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.baseShortCircuitCapacity' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入基准短路容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入基准短路容量'>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" <el-form-item for='-'
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="系统最小短路容量:" prop="minShortCircuitCapacity"> label='系统最小短路容量:' prop='minShortCircuitCapacity'>
<el-input v-model.trim="form.minShortCircuitCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.minShortCircuitCapacity' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete="off" placeholder="请选择系统最小短路容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete='off' placeholder='请选择系统最小短路容量'>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" <el-form-item for='-'
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="PCC供电终端容量" prop="pccEquipmentCapacity"> label='PCC供电终端容量' prop='pccEquipmentCapacity'>
<el-input v-model.trim="form.pccEquipmentCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.pccEquipmentCapacity' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入PCC供电终端容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入PCC供电终端容量'>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" <el-form-item for='-'
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="用户用电协议容量:" prop="userAgreementCapacity"> label='用户用电协议容量:' prop='userAgreementCapacity'>
<el-input v-model.trim="form.userAgreementCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.userAgreementCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入用户用电协议容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入用户用电协议容量'>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="行业:" prop="industry"> <el-form-item for='-' v-if="form.userType == '6'" label='行业:' prop='industry'>
<el-select v-model="form.industry" placeholder="请选择行业"> <el-select v-model='form.industry' placeholder='请选择行业'>
<el-option v-for="(item, index) in industryList" :label="item.name" :value="item.id" :key="index" /> <el-option v-for='(item, index) in industryList' :label='item.name' :value='item.id' :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="敏感终端名称:" prop="deviceName"> <el-form-item for='-' v-if="form.userType == '6'" label='敏感终端名称:' prop='deviceName'>
<el-input v-model.trim="form.deviceName" autocomplete="off" placeholder="请输入敏感终端名称" /> <el-input v-model.trim='form.deviceName' autocomplete='off' placeholder='请输入敏感终端名称' />
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="供电电源数量:" prop="powerSupplyCount"> <el-form-item for='-' v-if="form.userType == '6'" label='供电电源数量:' prop='powerSupplyCount'>
<el-input-number style="width: 100%" v-model="form.powerSupplyCount" :min="0" placeholder="请输入供电电源数量" /> <el-input-number style='width: 100%' v-model='form.powerSupplyCount' :min='0'
placeholder='请输入供电电源数量' />
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="敏感电能质量指标:" prop="energyQualityIndex"> <el-form-item for='-' v-if="form.userType == '6'" label='敏感电能质量指标:' prop='energyQualityIndex'>
<el-select v-model="form.energyQualityIndex" multiple collapse-tags collapse-tags-tooltip <el-select v-model='form.energyQualityIndex' multiple collapse-tags collapse-tags-tooltip
placeholder="请选择敏感电能质量指标"> placeholder='请选择敏感电能质量指标'>
<el-option v-for="(item, index) in energyQualityIndexList" :label="item.name" :value="item.id" <el-option v-for='(item, index) in energyQualityIndexList' :label='item.name' :value='item.id'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" <el-form-item for='-'
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
:label="form.userType == '4' || form.userType == '5' ? '非线性设备类型: ' : '非线性负荷类型:'" :label="form.userType == '4' || form.userType == '5' ? '非线性设备类型: ' : '非线性负荷类型:'"
prop="nonlinearLoadType"> prop='nonlinearLoadType'>
<el-tree-select accordion ref="treeRef" :default-expand-all="false" show-checkbox check-strictly <el-tree-select accordion ref='treeRef' :default-expand-all='false' show-checkbox check-strictly
:highlight-current="true" readonly node-key="id" :props="defaultProps" filterable :highlight-current='true' readonly node-key='id' :props='defaultProps' filterable
v-model="form.nonlinearLoadType" :data="nonlinearDeviceTypeList" :render-after-expand="false" v-model='form.nonlinearLoadType' :data='nonlinearDeviceTypeList'
placeholder="请选择" /> :render-after-expand='false'
placeholder='请选择' />
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="是否开展抗扰度测试:" prop="antiInterferenceTest"> <el-form-item for='-' v-if="form.userType == '6'" label='是否开展抗扰度测试:' prop='antiInterferenceTest'>
<el-radio-group v-model="form.antiInterferenceTest"> <el-radio-group v-model='form.antiInterferenceTest'>
<el-radio value="1"></el-radio> <el-radio value='1'></el-radio>
<el-radio value="0"></el-radio> <el-radio value='0'></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6' && isInterferencemanagement" label="负荷级别:" <el-form-item for='-' v-if="form.userType == '6' && isInterferencemanagement" label='负荷级别:'
prop="loadLevel"> prop='loadLevel'>
<el-select v-model="form.loadLevel" collapse-tags collapse-tags-tooltip placeholder="请选择负荷级别"> <el-select v-model='form.loadLevel' collapse-tags collapse-tags-tooltip placeholder='请选择负荷级别'>
<el-option v-for="(item, index) in loadLevelOptionList" :label="item.name" :value="item.id" <el-option v-for='(item, index) in loadLevelOptionList' :label='item.name' :value='item.id'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6' && isInterferencemanagement" label="供电电源情况:" <el-form-item for='-' v-if="form.userType == '6' && isInterferencemanagement" label='供电电源情况:'
prop="powerSupplyInfo"> prop='powerSupplyInfo'>
<el-select v-model="form.powerSupplyInfo" collapse-tags collapse-tags-tooltip placeholder="请选择供电电源情况"> <el-select v-model='form.powerSupplyInfo' collapse-tags collapse-tags-tooltip
<el-option v-for="(item, index) in powerSupplyInfoOptionList" :label="item.name" :value="item.id" placeholder='请选择供电电源情况'>
:key="index" /> <el-option v-for='(item, index) in powerSupplyInfoOptionList' :label='item.name' :value='item.id'
:key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType != '0' && form.userType != '1'" label="预测评估评审单位:" <el-form-item for='-' v-if="form.userType != '0' && form.userType != '1'" label='预测评估评审单位:'
prop="evaluationChekDept"> prop='evaluationChekDept'>
<el-input v-model.trim="form.evaluationChekDept" autocomplete="off" placeholder="请输入预测评估评审单位" /> <el-input v-model.trim='form.evaluationChekDept' autocomplete='off'
placeholder='请输入预测评估评审单位' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="预测评估结论:" prop="evaluationConclusion" style="width: 100%"> <el-form-item for='-' label='预测评估结论:' prop='evaluationConclusion' style='width: 100%'>
<el-input type="textarea" v-model.trim="form.evaluationConclusion" autocomplete="off" <el-input type='textarea' v-model.trim='form.evaluationConclusion' autocomplete='off'
placeholder="请输入预测评估结论" /> placeholder='请输入预测评估结论' maxlength='300' show-word-limit />
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="可研报告:" prop="feasibilityReport"> <el-form-item class='uploadFile' for='-' label='可研报告:' prop='feasibilityReport'>
<el-upload v-model:file-list="form.feasibilityReport" ref="uploadRef" action="" :accept="acceptType" <el-upload v-model:file-list='form.feasibilityReport' ref='uploadRef' action='' :accept='acceptType'
:limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :limit='1' :on-change='choose' :auto-upload='false' :on-remove='removeFile'
:on-progress="uploadFileName('feasibilityReport')"> :on-progress="uploadFileName('feasibilityReport')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="项目初步设计说明书:" prop="preliminaryDesignDescription"> <el-form-item class='uploadFile' for='-' label='项目初步设计说明书:' prop='preliminaryDesignDescription'>
<el-upload v-model:file-list="form.preliminaryDesignDescription" ref="uploadRef" action="" <el-upload v-model:file-list='form.preliminaryDesignDescription' ref='uploadRef' action=''
:accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :accept='acceptType' :limit='1' :on-change='choose' :auto-upload='false'
:on-remove='removeFile'
:on-progress="uploadFileName('preliminaryDesignDescription')"> :on-progress="uploadFileName('preliminaryDesignDescription')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="预测评估报告:" prop="predictionEvaluationReport"> <el-form-item class='uploadFile' for='-' label='预测评估报告:' prop='predictionEvaluationReport'>
<el-upload v-model:file-list="form.predictionEvaluationReport" ref="uploadRef" action="" <el-upload v-model:file-list='form.predictionEvaluationReport' ref='uploadRef' action=''
:accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :accept='acceptType' :limit='1' :on-change='choose' :auto-upload='false'
:on-remove='removeFile'
:on-progress="uploadFileName('predictionEvaluationReport')"> :on-progress="uploadFileName('predictionEvaluationReport')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="预测评估评审意见报告:" prop="predictionEvaluationReviewOpinions"> <el-form-item class='uploadFile' for='-' label='预测评估评审意见报告:'
<el-upload v-model:file-list="form.predictionEvaluationReviewOpinions" ref="uploadRef" action="" prop='predictionEvaluationReviewOpinions'>
:accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" <el-upload v-model:file-list='form.predictionEvaluationReviewOpinions' ref='uploadRef' action=''
:accept='acceptType' :limit='1' :on-change='choose' :auto-upload='false'
:on-remove='removeFile'
:on-progress="uploadFileName('predictionEvaluationReviewOpinions')"> :on-progress="uploadFileName('predictionEvaluationReviewOpinions')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="其他附件:" prop="additionalAttachments"> <el-form-item class='uploadFile' for='-' label='其他附件:' prop='additionalAttachments'>
<el-upload v-model:file-list="form.additionalAttachments" ref="uploadRef" action="" :accept="acceptType" <el-upload v-model:file-list='form.additionalAttachments' ref='uploadRef' action='' :accept='acceptType'
:limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :limit='1' :on-change='choose' :auto-upload='false' :on-remove='removeFile'
:on-progress="uploadFileName('additionalAttachments')"> :on-progress="uploadFileName('additionalAttachments')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item for="-" class="uploadFile" v-if="form.userType != '0' && form.userType != '1'" <el-form-item for='-' class='uploadFile' v-if="form.userType != '0' && form.userType != '1'"
label="用户接入变电站主接线示意图:" prop="substationMainWiringDiagram"> label='用户接入变电站主接线示意图:' prop='substationMainWiringDiagram'>
<el-upload v-model:file-list="form.substationMainWiringDiagram" ref="uploadRef" action="" <el-upload v-model:file-list='form.substationMainWiringDiagram' ref='uploadRef' action=''
:accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :accept='acceptType' :limit='1' :on-change='choose' :auto-upload='false'
:on-remove='removeFile'
:on-progress="uploadFileName('substationMainWiringDiagram')"> :on-progress="uploadFileName('substationMainWiringDiagram')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="主要敏感终端清单:" v-if="form.userType == '6'" <el-form-item class='uploadFile' for='-' label='主要敏感终端清单:' v-if="form.userType == '6'"
prop="sensitiveDevices"> prop='sensitiveDevices'>
<el-upload v-model:file-list="form.sensitiveDevices" ref="uploadRef" action="" :accept="acceptType" <el-upload v-model:file-list='form.sensitiveDevices' ref='uploadRef' action='' :accept='acceptType'
:limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :limit='1' :on-change='choose' :auto-upload='false' :on-remove='removeFile'
:on-progress="uploadFileName('sensitiveDevices')"> :on-progress="uploadFileName('sensitiveDevices')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" v-if="form.userType == '6'" label="抗扰度测试报告:" <el-form-item class='uploadFile' for='-' v-if="form.userType == '6'" label='抗扰度测试报告:'
prop="antiInterferenceReport"> prop='antiInterferenceReport'>
<el-upload v-model:file-list="form.antiInterferenceReport" ref="uploadRef" action="" <el-upload v-model:file-list='form.antiInterferenceReport' ref='uploadRef' action=''
:accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :accept='acceptType' :limit='1' :on-change='choose' :auto-upload='false'
:on-remove='removeFile'
:on-progress="uploadFileName('antiInterferenceReport')"> :on-progress="uploadFileName('antiInterferenceReport')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" v-if="form.userType == '6'" label="背景电能质量测试报告:" <el-form-item class='uploadFile' for='-' v-if="form.userType == '6'" label='背景电能质量测试报告:'
prop="powerQualityReport"> prop='powerQualityReport'>
<el-upload v-model:file-list="form.powerQualityReport" ref="uploadRef" action="" :accept="acceptType" <el-upload v-model:file-list='form.powerQualityReport' ref='uploadRef' action='' :accept='acceptType'
:limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile" :limit='1' :on-change='choose' :auto-upload='false' :on-remove='removeFile'
:on-progress="uploadFileName('powerQualityReport')"> :on-progress="uploadFileName('powerQualityReport')">
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<addUpload ref="addUploadRef" v-if="props.openType == 'sourcesOfInterference'" /> <addUpload ref='addUploadRef' v-if="props.openType == 'sourcesOfInterference'" />
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class='dialog-footer'>
<el-button @click="close()">取消</el-button> <el-button @click='close()'>取消</el-button>
<el-button type="primary" @click="confirmForm(true)" :loading="loading">保存</el-button> <!-- <el-button type='primary' @click='confirmForm(true)' :loading='loading'>保存</el-button>-->
<el-button type="primary" v-if="props.submissionControl" @click="confirmForm(false)" :loading="loading"> <!-- <el-button type='primary' v-if='props.submissionControl' @click='confirmForm(false)' :loading='loading'>-->
<el-button type='primary' @click='confirmForm(false)' :loading='loading'>
提交审批 提交审批
</el-button> </el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script lang="ts" setup> <script lang='ts' setup>
import { ref, onMounted, reactive, defineExpose, defineProps, defineEmits, watch, onUnmounted } from 'vue' import { ref, onMounted, reactive, defineExpose, defineProps, defineEmits, watch, onUnmounted } from 'vue'
// import { upload, insertTerminal, updateTerminal } from '@/api/process-boot/terminal' // import { upload, insertTerminal, updateTerminal } from '@/api/process-boot/terminal'
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus' import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
@@ -318,6 +333,7 @@ import {
import { getUserReportUpdateById } from '@/api/supervision-boot/userReport/form' import { getUserReportUpdateById } from '@/api/supervision-boot/userReport/form'
import addUpload from './addUpload.vue' import addUpload from './addUpload.vue'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
const isInterferencemanagement: any = ref(false) const isInterferencemanagement: any = ref(false)
if (route.path.includes('interferencemanagement')) { if (route.path.includes('interferencemanagement')) {
@@ -618,7 +634,8 @@ const subForm: any = ref({
substationMainWiringDiagram: [] //用户接入变电站主接线示意图地址 substationMainWiringDiagram: [] //用户接入变电站主接线示意图地址
} }
}) })
// 特殊字符正则表达式
const specialCharRegex = /[<>\"'\%;()&+\-———|@*_?#$!,.html<script>]/
//定义校验规则 //定义校验规则
const rules = ref({ const rules = ref({
reporter: [{ required: true, message: '请输入填报人', trigger: 'blur' }], reporter: [{ required: true, message: '请输入填报人', trigger: 'blur' }],
@@ -627,16 +644,58 @@ const rules = ref({
expectedProductionDate: [{ required: true, message: '请选择工程预期投产日期', trigger: 'change' }], expectedProductionDate: [{ required: true, message: '请选择工程预期投产日期', trigger: 'change' }],
userType: [{ required: true, message: '清选择用户性质', trigger: 'change' }], userType: [{ required: true, message: '清选择用户性质', trigger: 'change' }],
city: [{ required: true, message: '请选择所在地市', trigger: 'change' }], city: [{ required: true, message: '请选择所在地市', trigger: 'change' }],
responsibleDepartment: [{ required: true, message: '请输入归口管理部门', trigger: 'blur' }], responsibleDepartment: [{ required: true, message: '请输入归口管理部门', trigger: 'blur' },
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'))
} else {
callback()
}
},
trigger: 'blur'
}],
userStatus: [{ required: true, message: '请选择用户状态', trigger: 'change' }], userStatus: [{ required: true, message: '请选择用户状态', trigger: 'change' }],
projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }], projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' },
substation: [{ required: true, message: '请输入变电站', trigger: 'blur' }], {
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'))
} else {
callback()
}
},
trigger: 'blur'
}],
substation: [{ required: true, message: '请输入厂站名称', trigger: 'blur' },
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'))
} else {
callback()
}
},
trigger: 'blur'
}],
voltageLevel: [{ required: true, message: '请选择电压等级', trigger: 'change' }], voltageLevel: [{ required: true, message: '请选择电压等级', trigger: 'change' }],
evaluationDept: [{ required: true, message: '请选择预测评估单位', trigger: 'change' }], evaluationDept: [{ required: true, message: '请选择预测评估单位', trigger: 'change' }],
evaluationConclusion: [{ required: true, message: '请输入预测评估结论', trigger: 'blur' }], evaluationConclusion: [{ required: true, message: '请输入预测评估结论', trigger: 'blur' },
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'))
} else {
callback()
}
},
trigger: 'blur'
}],
devId: [{ required: true, message: '请选择关联终端', trigger: 'change' }], devId: [{ required: true, message: '请选择关联终端', trigger: 'change' }],
lineId: [{ required: true, message: '请选择关联监测点', trigger: 'change' }], lineId: [{ required: true, message: '请选择关联监测点', trigger: 'change' }],
agreementCapacity: [{ required: true, message: '请选择用户协议容量', trigger: 'blur' }], agreementCapacity: [
{ required: true, message: '请选择用户协议容量', trigger: 'blur' }
],
nonlinearDeviceType: [{ required: true, message: '请选择非线性终端类型', trigger: 'change' }], nonlinearDeviceType: [{ required: true, message: '请选择非线性终端类型', trigger: 'change' }],
needGovernance: [{ required: true, message: '请选择是否需要治理', trigger: 'change' }], needGovernance: [{ required: true, message: '请选择是否需要治理', trigger: 'change' }],
backgroundTestPerformed: [{ required: true, message: '请选择是否开展背景测试', trigger: 'change' }], backgroundTestPerformed: [{ required: true, message: '请选择是否开展背景测试', trigger: 'change' }],
@@ -784,6 +843,8 @@ watch(
deep: true deep: true
} }
) )
const resendId = ref('') const resendId = ref('')
const status = ref('') const status = ref('')
const open = async (row: any) => { const open = async (row: any) => {
@@ -819,6 +880,7 @@ const open = async (row: any) => {
}) })
}, 10) }, 10)
} }
async function handleResponse(data: any) { async function handleResponse(data: any) {
// userType logic is commented out; if needed, implement accordingly // userType logic is commented out; if needed, implement accordingly
if (data.userReportProjectPO) { if (data.userReportProjectPO) {
@@ -884,7 +946,8 @@ const close = () => {
emits('onSubmit') emits('onSubmit')
resetForm() resetForm()
} }
onMounted(() => { }) onMounted(() => {
})
// 上传报告 // 上传报告
const uploadRef = ref() const uploadRef = ref()
@@ -1050,7 +1113,9 @@ const confirmForm = async (flag: boolean) => {
addUploadRef.value?.submitForm(res.data) addUploadRef.value?.submitForm(res.data)
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} else { } else {
await submitFormData(confirmFormData).then(res => { await submitFormData(confirmFormData).then(res => {
ElMessage({ ElMessage({
@@ -1061,10 +1126,12 @@ const confirmForm = async (flag: boolean) => {
addUploadRef.value?.submitForm(res.data) addUploadRef.value?.submitForm(res.data)
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} }
} else { } else {
await ruleFormRef.value.validate( async (valid: any) => { await ruleFormRef.value.validate(async (valid: any) => {
if (valid) { if (valid) {
//整理上传文件的数据 //整理上传文件的数据
// userType==0,1 // userType==0,1
@@ -1202,7 +1269,9 @@ const confirmForm = async (flag: boolean) => {
addUploadRef.value?.submitForm(res.data) addUploadRef.value?.submitForm(res.data)
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} else { } else {
confirmFormData.id = resendId.value confirmFormData.id = resendId.value
if (controFlag.value) confirmFormData.dataType = 1 if (controFlag.value) confirmFormData.dataType = 1
@@ -1219,7 +1288,9 @@ const confirmForm = async (flag: boolean) => {
addUploadRef.value?.submitForm(res.data) addUploadRef.value?.submitForm(res.data)
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} else { } else {
await resend(confirmFormData).then(res => { await resend(confirmFormData).then(res => {
ElMessage({ ElMessage({
@@ -1229,7 +1300,9 @@ const confirmForm = async (flag: boolean) => {
ruleFormRef.value.resetFields() ruleFormRef.value.resetFields()
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} }
} else { } else {
await updateFormData(confirmFormData).then(res => { await updateFormData(confirmFormData).then(res => {
@@ -1241,7 +1314,9 @@ const confirmForm = async (flag: boolean) => {
ruleFormRef.value.resetFields() ruleFormRef.value.resetFields()
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} }
} }
} else { } else {
@@ -1268,8 +1343,9 @@ const setcontroFlag = () => {
} }
defineExpose({ open, filterUsers, setcontroFlag }) defineExpose({ open, filterUsers, setcontroFlag })
</script> </script>
<style lang="scss" scoped> <style lang='scss' scoped>
.el-form {} .el-form {
}
.form-label-left-align { .form-label-left-align {
text-align: left; text-align: left;

View File

@@ -1,203 +1,213 @@
<template> <template>
<el-dialog v-model="dialogFormVisible" :title="title" width="65%" :append-to-body="true" :before-close="close" <el-dialog v-model='dialogFormVisible' :title='title' width='65%' :append-to-body='true' :before-close='close'
:close-on-click-modal="false" :lazy="true" draggable> :close-on-click-modal='false' :lazy='true' draggable>
<!--监测点信息录入 基础信息+监测点信息 监测点信息要有用户名称用户状态 --> <!--监测点信息录入 基础信息+监测点信息 监测点信息要有用户名称用户状态 -->
<el-form :model="form" :validate-on-rule-change="false" :scroll-to-error="true" :rules="rules" ref="ruleFormRef" <el-form :model='form' :validate-on-rule-change='false' :scroll-to-error='true' :rules='rules' ref='ruleFormRef'
label-width="auto" label-position="right" class="form-two"> label-width='auto' label-position='right' class='form-two'>
<div class="fixed_upload" v-if="false"> <div class='fixed_upload' v-if='false'>
<el-upload v-model:file-list="form.lineFilePath" ref="uploadRef" action="" accept=".xls,.xlsx" <el-upload v-model:file-list='form.lineFilePath' ref='uploadRef' action='' accept='.xls,.xlsx'
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false" :limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
:on-progress="uploadFileName('lineFilePath')" :on-remove="removeFile"> :on-progress="uploadFileName('lineFilePath')" :on-remove='removeFile'>
<template #trigger> <template #trigger>
<el-button type="primary">监测点台账信息</el-button> <el-button type='primary'>监测点台账信息</el-button>
</template> </template>
</el-upload> </el-upload>
</div> </div>
<!-- 基础信息 --> <!-- 基础信息 -->
<el-form-item v-if="false" for="-" label="填报人:" prop="reporterName"> <el-form-item v-if='false' for='-' label='填报人:' prop='reporterName'>
<el-input v-model.trim="form.reporterName" autocomplete="off" placeholder="请输入填报人" :disabled="true" /> <el-input v-model.trim='form.reporterName' autocomplete='off' placeholder='请输入填报人'
:disabled='true' />
</el-form-item> </el-form-item>
<el-form-item v-if="false" for="-" label="填报日期:" prop="reportDate"> <el-form-item v-if='false' for='-' label='填报日期:' prop='reportDate'>
<el-date-picker style="width: 100%" v-model="form.reportDate" :disabled="true" type="date" <el-date-picker style='width: 100%' v-model='form.reportDate' :disabled='true' type='date'
format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请选择填报日期" /> format='YYYY-MM-DD' value-format='YYYY-MM-DD' placeholder='请选择填报日期' />
</el-form-item> </el-form-item>
<el-form-item v-if="false" for="-" label="填报部门:" prop="orgId"> <el-form-item v-if='false' for='-' label='填报部门:' prop='orgId'>
<el-input v-model.trim="form.orgName" :disabled="true" autocomplete="off" /> <el-input v-model.trim='form.orgName' :disabled='true' autocomplete='off' />
</el-form-item> </el-form-item>
<el-form-item v-if="false" for="-" label="工程投产日期:" prop="expectedProductionDate"> <el-form-item v-if='false' for='-' label='工程投产日期:' prop='expectedProductionDate'>
<el-date-picker style="width: 100%" v-model="form.expectedProductionDate" type="date" <el-date-picker style='width: 100%' v-model='form.expectedProductionDate' type='date'
format="YYYY-MM-DD" value-format="YYYY-MM-DD" :disabled="true" :disabled-date="disabledDate" format='YYYY-MM-DD' value-format='YYYY-MM-DD' :disabled='true'
placeholder="请选择工程投产日期" /> :disabled-date='disabledDate'
placeholder='请选择工程投产日期' />
</el-form-item> </el-form-item>
<el-form-item v-if="false" for="-" label="所在地市:" prop="city"> <el-form-item v-if='false' for='-' label='所在地市:' prop='city'>
<el-select v-model="form.city" clearable style="width: 100%" :disabled="true" placeholder="请选择所在地市"> <el-select v-model='form.city' clearable style='width: 100%' :disabled='true'
<el-option v-for="item in areaOptionList" :key="item.id" :label="item.name" placeholder='请选择所在地市'>
:value="item.id"></el-option> <el-option v-for='item in areaOptionList' :key='item.id' :label='item.name'
:value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="false" for="-" label="用户状态:" prop="userStatus"> <el-form-item v-if='false' for='-' label='用户状态:' prop='userStatus'>
<el-select v-model="form.userStatus" placeholder="请选择用户状态" :disabled="true" style="width: 100%"> <el-select v-model='form.userStatus' placeholder='请选择用户状态' :disabled='true' style='width: 100%'>
<el-option v-for="(item, index) in userStateList" :label="item.name" :value="item.id" <el-option v-for='(item, index) in userStateList' :label='item.name' :value='item.id'
:disabled="item.name != '建设'" :key="index" /> :disabled="item.name != '建设'" :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="关联干扰源:" prop="userName"> <el-form-item for='-' label='关联干扰源:' prop='userName'>
<el-select v-model="form.userName" clearable style="width: 100%" placeholder="请选择关联干扰源" <el-select v-model='form.userName' clearable style='width: 100%' placeholder='请选择关联干扰源'
@change="changeUserName"> @change='changeUserName'>
<el-option v-for="(item, index) in userNameList" :key="index" :label="item.projectName" <el-option v-for='(item, index) in userNameList' :key='index' :label='item.projectName'
:value="item.id"></el-option> :value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="关联终端:" prop="monitoringTerminalCode"> <el-form-item for='-' label='关联终端:' prop='monitoringTerminalCode'>
<el-select v-model="form.monitoringTerminalCode" clearable style="width: 100%" filterable <el-select v-model='form.monitoringTerminalCode' clearable style='width: 100%' filterable
placeholder="请选择关联终端" @change="changeDevice"> placeholder='请选择关联终端' @change='changeDevice'>
<el-option v-for="(item, index) in monitoringTerminalList" :key="index" <el-option v-for='(item, index) in monitoringTerminalList' :key='index'
:label="item.monitoringTerminalCode" :value="item.id"></el-option> :label='item.monitoringTerminalCode' :value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="接入母线:" prop="connectedBus"> <el-form-item for='-' label='接入母线:' prop='connectedBus'>
<el-input v-model.trim="form.connectedBus" autocomplete="off" placeholder="请输入接入母线 如110kV4母线" /> <el-input v-model.trim='form.connectedBus' autocomplete='off' placeholder='请输入接入母线 如110kV4母线'
maxlength='32' show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="监测点运行状态:" prop="operationStatus"> <el-form-item for='-' label='监测点运行状态:' prop='operationStatus'>
<el-select v-model="form.operationStatus" placeholder="请选择运行状态"> <el-select v-model='form.operationStatus' placeholder='请选择运行状态'>
<el-option v-for="(item, index) in operationStatusList" :label="item.name" :value="item.id" <el-option v-for='(item, index) in operationStatusList' :label='item.name' :value='item.id'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="监测点名称:" prop="lineName"> <el-form-item for='-' label='监测点名称:' prop='lineName'>
<el-input v-model.trim="form.lineName" autocomplete="off" placeholder="请输入监测点名称" /> <el-input v-model.trim='form.lineName' autocomplete='off' placeholder='请输入监测点名称' maxlength='32'
show-word-limit />
</el-form-item> </el-form-item>
<!-- {{ voltageLevelList[2].value * 10 }}:{{ 1 }} --> <!-- {{ voltageLevelList[2].value * 10 }}:{{ 1 }} -->
<el-form-item for="-" label="监测点电压等级:" prop="voltageLevel"> <el-form-item for='-' label='监测点电压等级:' prop='voltageLevel'>
<el-select v-model="form.voltageLevel" clearable style="width: 100%" placeholder="请选择监测点电压等级" filterable <el-select v-model='form.voltageLevel' clearable style='width: 100%' placeholder='请选择监测点电压等级'
@change="changevoltageDeviationLimit"> filterable
<el-option v-for="item in voltageLevelList" :key="item.id" :label="item.name" @change='changevoltageDeviationLimit'>
:value="item.id"></el-option> <el-option v-for='item in voltageLevelList' :key='item.id' :label='item.name'
:value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="PT变比" prop="pt1"> <el-form-item for='-' label='PT变比' prop='pt1'>
<el-input style="width: 48%" v-model.trim="form.pt1" autocomplete="off" placeholder="请输入PT变比" <el-input style='width: 48%' v-model.trim='form.pt1' autocomplete='off' placeholder='请输入PT变比'
oninput="value=value.replace(/[^0-9.]/g,'')" /> oninput="value=value.replace(/[^0-9.]/g,'')" maxlength='8' show-word-limit />
<el-input style="width: 48%" v-model.trim="form.pt2" autocomplete="off" placeholder="请输入PT变比" <el-input style='width: 48%' v-model.trim='form.pt2' autocomplete='off' placeholder='请输入PT变比'
oninput="value=value.replace(/[^0-9.]/g,'')" /> oninput="value=value.replace(/[^0-9.]/g,'')" maxlength='8' show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="CT变比" prop="ct1"> <el-form-item for='-' label='CT变比' prop='ct1'>
<el-input v-model.trim="form.ct1" style="width: 48%" autocomplete="off" <el-input v-model.trim='form.ct1' style='width: 48%' autocomplete='off'
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" /> oninput="value=value.replace(/[^0-9.]/g,'')" placeholder='请输入CT变比' maxlength='8'
<el-input v-model.trim="form.ct2" style="width: 48%" autocomplete="off" show-word-limit />
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" /> <el-input v-model.trim='form.ct2' style='width: 48%' autocomplete='off'
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder='请输入CT变比' maxlength='8'
show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="短路容量:" prop="shortCapacity"> <el-form-item for='-' label='短路容量:' prop='shortCapacity'>
<el-input v-model.trim="form.shortCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.shortCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入短路容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入短路容量' maxlength='6' show-word-limit>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" label="协议容量:" prop="dealCapacity"> <el-form-item for='-' label='协议容量:' prop='dealCapacity'>
<el-input v-model.trim="form.dealCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.dealCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入协议容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入协议容量' maxlength='6' show-word-limit>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端容量:" prop="devCapacity"> <el-form-item for='-' label='终端容量:' prop='devCapacity'>
<el-input v-model.trim="form.devCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.devCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入终端容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入终端容量' maxlength='6' show-word-limit>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" label="基准容量:" prop="standardCapacity"> <el-form-item for='-' label='基准容量:' prop='standardCapacity'>
<el-input v-model.trim="form.standardCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'') <el-input v-model.trim='form.standardCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入基准容量"> .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入基准容量' maxlength='6' show-word-limit>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" label="干扰源类型:" prop="loadType"> <el-form-item for='-' label='干扰源类型:' prop='loadType'>
<el-select v-model="form.loadType" style="width: 100%" placeholder="请选择干扰源类型" @change="changeLoadType"> <el-select v-model='form.loadType' style='width: 100%' placeholder='请选择干扰源类型'
<el-option v-for="item in loadTypeList" :key="item.id" :label="item.name" @change='changeLoadType'>
:value="item.id"></el-option> <el-option v-for='item in loadTypeList' :key='item.id' :label='item.name'
:value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="干扰源类别:" prop="businessType"> <el-form-item for='-' label='干扰源类别:' prop='businessType'>
<el-select v-model="form.businessType" style="width: 100%" placeholder="请选择干扰源类别"> <el-select v-model='form.businessType' style='width: 100%' placeholder='请选择干扰源类别'>
<el-option v-for="item in businessTypeList" :key="item.id" :label="item.name" <el-option v-for='item in businessTypeList' :key='item.id' :label='item.name'
:value="item.id"></el-option> :value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="接线方式:"> <el-form-item for='-' label='接线方式:'>
<el-select v-model="form.ptType" clearable style="width: 100%" placeholder="请选择接线方式"> <el-select v-model='form.ptType' clearable style='width: 100%' placeholder='请选择接线方式'>
<el-option v-for="item in ptTypeList" :key="item.id" :label="item.name" <el-option v-for='item in ptTypeList' :key='item.id' :label='item.name'
:value="item.id"></el-option> :value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="线路号:"> <el-form-item for='-' label='线路号:'>
<el-select v-model="form.num" clearable style="width: 100%" placeholder="请选择线路号"> <el-select v-model='form.num' clearable style='width: 100%' placeholder='请选择线路号'>
<el-option v-for="item in numList" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for='item in numList' :key='item.id' :label='item.name' :value='item.id'></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="电压偏差上限:" prop="voltageDeviationUpperLimit"> <el-form-item for='-' label='电压偏差上限:' prop='voltageDeviationUpperLimit'>
<el-input-number style="width: 100%" v-model="form.voltageDeviationUpperLimit" /> <el-input-number style='width: 100%' v-model='form.voltageDeviationUpperLimit' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="电压偏差下限:" prop="voltageDeviationLowerLimit"> <el-form-item for='-' label='电压偏差下限:' prop='voltageDeviationLowerLimit'>
<el-input-number style="width: 100%" v-model="form.voltageDeviationLowerLimit" /> <el-input-number style='width: 100%' v-model='form.voltageDeviationLowerLimit' />
</el-form-item> </el-form-item>
<el-form-item for="-" label="测量间隔:" prop="timeInterval"> <el-form-item for='-' label='测量间隔:' prop='timeInterval'>
<el-select v-model="form.timeInterval" placeholder="请选择测量间隔"> <el-select v-model='form.timeInterval' placeholder='请选择测量间隔'>
<el-option v-for="(item, index) in timeIntervalList" :label="item.name" :value="item.id" <el-option v-for='(item, index) in timeIntervalList' :label='item.name' :value='item.id'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item for="-" label="上送网公司编码:"> <!-- <el-form-item for="-" label="上送网公司编码:">
<el-input v-model="form.lineId" autocomplete="off" placeholder="请输入上送网公司编码" /> <el-input v-model="form.lineId" autocomplete="off" placeholder="请输入上送网公司编码" />
</el-form-item> --> </el-form-item> -->
<el-form-item for="-" label="监测点性质:" prop="pointNature"> <el-form-item for='-' label='监测点性质:' prop='pointNature'>
<el-select v-model="form.pointNature" placeholder="请选择监测点性质"> <el-select v-model='form.pointNature' placeholder='请选择监测点性质'>
<el-option v-for="(item, index) in pointNatureList" :label="item.name" :value="item.id" <el-option v-for='(item, index) in pointNatureList' :label='item.name' :value='item.id'
:key="index" /> :key='index' />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="是否参与统计:" prop="isStatistical"> <el-form-item for='-' label='是否参与统计:' prop='isStatistical'>
<el-radio-group v-model="form.isStatistical"> <el-radio-group v-model='form.isStatistical'>
<el-radio :value="1"></el-radio> <el-radio :value='1'></el-radio>
<el-radio :value="0"></el-radio> <el-radio :value='0'></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- <el-form-item for="-" label="对象名称(对端)" prop="objName"> <!-- <el-form-item for="-" label="对象名称(对端)" prop="objName">
<el-input v-model="form.objName" autocomplete="off" placeholder="请输入监测点对象名称" /> <el-input v-model="form.objName" autocomplete="off" placeholder="请输入监测点对象名称" />
</el-form-item> --> </el-form-item> -->
<el-form-item for="-" label="电网侧变电站:" prop="powerSubstationName"> <el-form-item for='-' label='电网侧变电站:' prop='powerSubstationName'>
<el-input v-model.trim="form.powerSubstationName" autocomplete="off" placeholder="请输入电网侧变电站" /> <el-input v-model.trim='form.powerSubstationName' autocomplete='off' placeholder='请输入电网侧变电站'
maxlength='32' show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="是否并网点:" prop="isGridConnectionPoint"> <el-form-item for='-' label='是否并网点:' prop='isGridConnectionPoint'>
<el-radio-group v-model="form.isGridConnectionPoint"> <el-radio-group v-model='form.isGridConnectionPoint'>
<el-radio :value="1"></el-radio> <el-radio :value='1'></el-radio>
<el-radio :value="0"></el-radio> <el-radio :value='0'></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item for="-" label="主接线图:" prop="mainWiringDiagram" class="uploadFile"> <el-form-item for='-' label='主接线图:' prop='mainWiringDiagram' class='uploadFile'>
<el-upload v-model:file-list="form.mainWiringDiagram" ref="uploadRef" action="" :accept="acceptType" <el-upload v-model:file-list='form.mainWiringDiagram' ref='uploadRef' action='' :accept='acceptType'
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false" :limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
:on-progress="uploadFileName('mainWiringDiagram')" :on-remove="removeFile"> :on-progress="uploadFileName('mainWiringDiagram')" :on-remove='removeFile'>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class='dialog-footer'>
<el-button @click="close()">取消</el-button> <el-button @click='close()'>取消</el-button>
<el-button type="primary" @click="confirmForm(true)" :loading="loading">保存</el-button> <!-- <el-button type="primary" @click="confirmForm(true)" :loading="loading">保存</el-button>-->
<el-button type="primary" @click="confirmForm(false)" :loading="loading">提交审批</el-button> <el-button type='primary' @click='confirmForm(false)' :loading='loading'>提交审批</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script lang="ts" setup> <script lang='ts' setup>
import { ref, onMounted, reactive, defineExpose, nextTick, defineEmits, watch, onUnmounted } from 'vue' import { ref, onMounted, reactive, defineExpose, nextTick, defineEmits, watch, onUnmounted } from 'vue'
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus' import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
import { genFileId, ElMessage } from 'element-plus' import { genFileId, ElMessage } from 'element-plus'
@@ -210,6 +220,7 @@ import { addMointorPointFormData, getList, updateMointorPointFormData } from '@/
import { queryByAllCode } from '@/api/system-boot/dictTree' import { queryByAllCode } from '@/api/system-boot/dictTree'
import { getUserReportById } from '@/api/supervision-boot/userReport/form' import { getUserReportById } from '@/api/supervision-boot/userReport/form'
import { getDictTreeById } from '@/api/system-boot/dictTree' import { getDictTreeById } from '@/api/system-boot/dictTree'
const emits = defineEmits(['onSubmit']) const emits = defineEmits(['onSubmit'])
const dictData = useDictData() const dictData = useDictData()
const dialogFormVisible = ref(false) const dialogFormVisible = ref(false)
@@ -603,6 +614,8 @@ const getDictTree = (e?: string) => {
businessTypeList.value = [] businessTypeList.value = []
} }
} }
// 特殊字符正则表达式
const specialCharRegex = /[<>\"'\%;()&+\-———|@*_?#$!,.html<script>]/
//定义校验规则 //定义校验规则
const rules = ref({ const rules = ref({
//基础信息 //基础信息
@@ -668,6 +681,16 @@ const rules = ref({
required: true, required: true,
message: '请输入监测点名称', message: '请输入监测点名称',
trigger: 'blur' trigger: 'blur'
},
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'))
} else {
callback()
}
},
trigger: 'blur'
} }
], ],
voltageLevel: [ voltageLevel: [
@@ -680,7 +703,17 @@ const rules = ref({
connectedBus: [ connectedBus: [
{ {
required: true, required: true,
message: '请选择接入母线', message: '请输入接入母线',
trigger: 'blur'
},
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'))
} else {
callback()
}
},
trigger: 'blur' trigger: 'blur'
} }
], ],
@@ -778,8 +811,18 @@ const rules = ref({
powerSubstationName: [ powerSubstationName: [
{ {
required: true, required: true,
message: '请选择电网侧变电站', message: '请输入电网侧变电站',
trigger: 'change' trigger: 'change'
},
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'))
} else {
callback()
}
},
trigger: 'blur'
} }
], ],
isGridConnectionPoint: [ isGridConnectionPoint: [
@@ -861,7 +904,8 @@ const close = () => {
dialogFormVisible.value = false dialogFormVisible.value = false
emits('onSubmit') emits('onSubmit')
} }
onMounted(() => { }) onMounted(() => {
})
watch( watch(
() => projectList.value, () => projectList.value,
@@ -954,7 +998,9 @@ const confirmForm = async (flag: boolean) => {
ruleFormRef.value.resetFields() ruleFormRef.value.resetFields()
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} else { } else {
// 先判断提交终端信息与监测点信息 // 先判断提交终端信息与监测点信息
// 提交监测点信息 // 提交监测点信息
@@ -994,7 +1040,9 @@ const confirmForm = async (flag: boolean) => {
ruleFormRef.value.resetFields() ruleFormRef.value.resetFields()
resetForm() resetForm()
close() close()
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} else { } else {
confirmFormData.id = resendId.value confirmFormData.id = resendId.value
await updateMointorPointFormData(confirmFormData).then(res => { await updateMointorPointFormData(confirmFormData).then(res => {
@@ -1007,7 +1055,9 @@ const confirmForm = async (flag: boolean) => {
resetForm() resetForm()
close() close()
} }
}).catch(() => { loading.value = false}) }).catch(() => {
loading.value = false
})
} }
} else { } else {
// // console.log('表单验证失败') // // console.log('表单验证失败')
@@ -1021,7 +1071,7 @@ const confirmForm = async (flag: boolean) => {
} }
defineExpose({ open }) defineExpose({ open })
</script> </script>
<style lang="scss" scoped> <style lang='scss' scoped>
.fixed_upload { .fixed_upload {
width: 100%; width: 100%;
height: auto; height: auto;

View File

@@ -119,11 +119,11 @@
<el-form-item for="-" label="终端编码:" prop="monitoringTerminalCode"> <el-form-item for="-" label="终端编码:" prop="monitoringTerminalCode">
<el-input v-model.trim="form.monitoringTerminalCode" autocomplete="off" placeholder="请输入终端编码" <el-input v-model.trim="form.monitoringTerminalCode" autocomplete="off" placeholder="请输入终端编码"
@input="encode" /> @input="encode" maxlength="32" show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端名称:" prop="monitoringTerminalName"> <el-form-item for="-" label="终端名称:" prop="monitoringTerminalName">
<el-input v-model.trim="form.monitoringTerminalName" autocomplete="off" placeholder="请输入终端名称" /> <el-input v-model.trim="form.monitoringTerminalName" autocomplete="off" placeholder="请输入终端名称" maxlength="32" show-word-limit/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端型号:" prop="terminalType"> <el-form-item for="-" label="终端型号:" prop="terminalType">
<el-select v-model="form.terminalType" filterable clearable style="width: 100%" placeholder="请选择终端型号"> <el-select v-model="form.terminalType" filterable clearable style="width: 100%" placeholder="请选择终端型号">
@@ -176,10 +176,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="识别码:" prop="identificationCode"> <el-form-item for="-" label="识别码:" prop="identificationCode">
<el-input v-model.trim="form.identificationCode" autocomplete="off" placeholder="请输入识别码" /> <el-input v-model.trim="form.identificationCode" autocomplete="off" placeholder="请输入识别码" maxlength="64" show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端秘钥:" prop="terminalSecretKey"> <el-form-item for="-" label="终端秘钥:" prop="terminalSecretKey">
<el-input v-model.trim="form.terminalSecretKey" autocomplete="off" placeholder="请输入终端秘钥" /> <el-input v-model.trim="form.terminalSecretKey" autocomplete="off" placeholder="请输入终端秘钥" maxlength="64" show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端模型:" prop="terminalModel"> <el-form-item for="-" label="终端模型:" prop="terminalModel">
<el-select v-model="form.terminalModel" clearable style="width: 100%" placeholder="请选择终端模型"> <el-select v-model="form.terminalModel" clearable style="width: 100%" placeholder="请选择终端模型">
@@ -229,11 +229,11 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="厂家终端编号:" prop="manufacturerDeviceNumber"> <el-form-item for="-" label="厂家终端编号:" prop="manufacturerDeviceNumber">
<el-input v-model.trim="form.manufacturerDeviceNumber" autocomplete="off" placeholder="请输入厂家终端编号" /> <el-input v-model.trim="form.manufacturerDeviceNumber" autocomplete="off" placeholder="请输入厂家终端编号" maxlength="64" show-word-limit/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="SIM卡号" prop="simCardNumber"> <el-form-item for="-" label="SIM卡号" prop="simCardNumber">
<el-input v-model.trim="form.simCardNumber" autocomplete="off" placeholder="请输入SIM卡号" /> <el-input v-model.trim="form.simCardNumber" autocomplete="off" placeholder="请输入SIM卡号" maxlength="128" show-word-limit />
</el-form-item> </el-form-item>
<el-form-item for="-" label="对时功能:" prop="timeSyncFunction"> <el-form-item for="-" label="对时功能:" prop="timeSyncFunction">
<!-- 默认值 开启 --> <!-- 默认值 开启 -->
@@ -262,7 +262,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item for="-" label="合同号:" prop="contractNumber"> <el-form-item for="-" label="合同号:" prop="contractNumber">
<el-input v-model.trim="form.contractNumber" autocomplete="off" placeholder="请输入合同号" /> <el-input v-model.trim="form.contractNumber" autocomplete="off" placeholder="请输入合同号" maxlength="64" show-word-limit />
</el-form-item> </el-form-item>
<!-- </div> --> <!-- </div> -->
<el-divider content-position="left">附件材料</el-divider> <el-divider content-position="left">附件材料</el-divider>
@@ -335,9 +335,10 @@
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="close()">取消</el-button> <el-button @click="close()">取消</el-button>
<el-button type="primary" @click="confirmForm(true)" :loading="loading">保存</el-button> <!-- <el-button type="primary" @click="confirmForm(true)" :loading="loading">保存</el-button>-->
<el-button type="primary" @click="confirmForm(false)" :loading="loading" <el-button type="primary" @click="confirmForm(false)" :loading="loading"
v-if="importType != 1">提交审批</el-button> >提交审批</el-button>
<!-- v-if="importType != 1">提交审批</el-button>-->
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@@ -698,6 +699,9 @@ const longitudeReg = /^[-+]?((180(\.0{1,10})?)|(1[0-7][0-9](\.\d{1,10})?)|([1-9]
// 纬度正则表达式 // 纬度正则表达式
const latitudeReg = /^[-+]?((90(\.0{1,10})?)|([1-8]?\d(\.\d{1,10})?)|(0(\.\d{1,10})?))$/ const latitudeReg = /^[-+]?((90(\.0{1,10})?)|([1-8]?\d(\.\d{1,10})?)|(0(\.\d{1,10})?))$/
// 特殊字符正则表达式
const specialCharRegex = /[<>\"'\%;()&+\-———|@*_?#$!,.html<script>]/;
//定义校验规则 //定义校验规则
const rules = ref({ const rules = ref({
//基础信息 //基础信息
@@ -791,14 +795,34 @@ const rules = ref({
required: true, required: true,
message: '请输入终端编码', message: '请输入终端编码',
trigger: 'blur' trigger: 'blur'
},
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'));
} else {
callback();
} }
},
trigger: 'blur',
},
], ],
monitoringTerminalName: [ monitoringTerminalName: [
{ {
required: true, required: true,
message: '请输入监测名称', message: '请输入监测名称',
trigger: 'blur' trigger: 'blur'
},
{
validator: (rule, value, callback) => {
if (specialCharRegex.test(value)) {
callback(new Error('输入包含不允许的特殊字符'));
} else {
callback();
} }
},
trigger: 'blur',
},
], ],
voltageTransformerType: [ voltageTransformerType: [
{ {