冀北项目添加表格导出功能 技术监督添加下载模版上传功能

This commit is contained in:
GGJ
2025-03-28 16:05:03 +08:00
parent 76f41e9a24
commit ef04022f14
153 changed files with 4208 additions and 3480 deletions

View File

@@ -1,14 +1,18 @@
<template>
<div>
<TableHeader datePicker nextFlag theCurrentTime ref='TableHeaderRef'>
<TableHeader datePicker nextFlag theCurrentTime showTimeAll showExport ref='TableHeaderRef'>
<template #select>
<el-form-item label='项目名称'>
<el-input v-model='tableStore.table.params.projectName' placeholder='请输入项目名称' clearable maxlength="32"
show-word-limit></el-input>
<el-input v-model='tableStore.table.params.projectName' placeholder='请输入项目名称'></el-input>
</el-form-item>
<el-form-item label='所在地市'>
<el-select v-model='tableStore.table.params.city' clearable placeholder='请选择所在地市'>
<el-option v-for='item in areaOptionList' :key='item.id' :label='item.name' :value='item.name'></el-option>
<el-option
v-for='item in areaOptionList'
:key='item.id'
:label='item.name'
:value='item.name'
></el-option>
</el-select>
</el-form-item>
</template>
@@ -16,39 +20,51 @@
<!-- <el-button icon='el-icon-Download' type='primary'>导出</el-button> -->
</template>
</TableHeader>
<Table ref='tableRef' />
<Table ref='tableRef'/>
</div>
<el-dialog title='干扰源用户详细信息' v-if='dialogVisible' v-model='dialogVisible' width='65%' :append-to-body='true'
:close-on-click-modal='false' draggable>
<el-dialog
title='干扰源用户详细信息'
v-if='dialogVisible'
v-model='dialogVisible'
width='65%'
:append-to-body='true'
:close-on-click-modal='false'
draggable
>
<BpmUserReportDetail :id='interId' ref='detailsRef'></BpmUserReportDetail>
</el-dialog>
<!-- 查看详情 detail 新增/修改 create-->
<addForm ref='addForms' @onSubmit='tableStore.index()' :update='update' :normalizedControl='true' openType='create'>
</addForm>
<addForm
ref='addForms'
@onSubmit='tableStore.index()'
:update='update'
:normalizedControl='true'
openType='create'
></addForm>
</template>
<script setup lang='ts'>
defineOptions({
name: 'supervision/interferenceUserTable'
})
import { ref, onMounted, provide, watch } from 'vue'
import {ref, onMounted, provide, watch} from 'vue'
import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { useDictData } from '@/stores/dictData'
import {useDictData} from '@/stores/dictData'
import addForm from '@/views/pqs/supervise/interfere/components/undocumented/addForm.vue'
import { getUserReportById, getUserReportByFangAnId } from '@/api/supervision-boot/interfere'
import {getUserReportById, getUserReportByFangAnId} from '@/api/supervision-boot/interfere'
import BpmUserReportDetail from '../../components/undocumented/detail.vue'
import { useAdminInfo } from '@/stores/adminInfo'
import { ElMessage, ElMessageBox } from 'element-plus'
import { userReportRenewalCancel } from '@/api/process-boot/generalTest'
import {useAdminInfo} from '@/stores/adminInfo'
import {ElMessage, ElMessageBox} from 'element-plus'
import {userReportRenewalCancel} from '@/api/process-boot/generalTest'
const dictData = useDictData()
const flag = ref(false)
const areaOptionList = dictData
.getBasicData('jibei_area')
.filter(item => !(item.name == '超高压' || item.name == '风光储'))
.getBasicData('jibei_area')
.filter(item => !(item.name == '超高压' || item.name == '风光储'))
const statusSelect = dictData.statusSelect()
//获取登陆用户姓名和部门
const adminInfo = useAdminInfo()
@@ -57,31 +73,30 @@ const jb_dky = ref(false)
const update = ref(false)
const addForms = ref()
jb_pl.value =
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_pl'
}).length != 0
? true
: false
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_pl'
}).length != 0
? true
: false
jb_dky.value =
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_dky'
}).length != 0
? true
: false
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_dky'
}).length != 0
? true
: false
const { push, options, currentRoute } = useRouter()
const {push, options, currentRoute} = useRouter()
const TableHeaderRef = ref()
const tableStore = new TableStore({
url: '/supervision-boot/userReport/getNormalUserPage',
publicHeight: 65,
method: 'POST',
filename:'常态化干扰源用户管理',
column: [
{
title: '序号', width: 80, formatter: (row: any) => {
{title: '序号', width: 80,formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'city', title: '所在地市', minWidth: 80 },
}},
{field: 'city', title: '所在地市', minWidth: 80},
{
field: 'substation',
title: '厂站名称',
@@ -91,7 +106,7 @@ const tableStore = new TableStore({
return row.cellValue
}
},
{ field: 'projectName', title: '项目名称', minWidth: 170 },
{field: 'projectName', title: '项目名称', minWidth: 170},
{
field: 'userType',
title: '用户性质',
@@ -101,7 +116,7 @@ const tableStore = new TableStore({
return getUserTypeName(userType)
}
},
{ field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130},
{
field: 'userStatus',
title: '用户状态',
@@ -200,8 +215,8 @@ const tableStore = new TableStore({
render: 'basicButton',
showDisabled: row => {
return (
row.createBy != adminInfo.$state.id ||
!(row.status == 0 || row.status == 2 || row.status == null)
row.createBy != adminInfo.$state.id ||
!(row.status == 0 || row.status == 2 || row.status == null)
)
},
disabled: row => {
@@ -227,7 +242,7 @@ const tableStore = new TableStore({
return row.createBy != adminInfo.$state.id || !(row.status == 3 || row.status == 4)
},
click: row => {
addForms.value.open({ title: '重新发起', row: row })
addForms.value.open({title: '重新发起', row: row})
}
},
{
@@ -290,7 +305,24 @@ const tableStore = new TableStore({
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.relationUserName = tableStore.table.params.userName
}
},
exportProcessingData: () => {
tableStore.table.allData = tableStore.table.allData.filter(item => {
item.userStatus =
item.userStatus == 0 ? '可研' : item.userStatus == 1 ? '建设' : item.userStatus == 2 ? '运行' : '退运'
item.status =
item.status == 0
? '待提交审批'
: item.status == 1
? '审批中'
: item.status == 2
? '审批通过'
: item.status == 3
? '审批不通过'
: '已取消'
return item
})
}
})
tableStore.table.params.city = ''
@@ -324,7 +356,7 @@ const handleAudit = (instanceId: string, historyInstanceId: string) => {
/**取消流程操作*/
const cancelLeave = async (row: any) => {
// 二次确认
const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
const {value} = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputType: 'textarea',
@@ -353,10 +385,10 @@ const toFangAn = (row: any, typeNo: number) => {
if (res.data.userType == '0' || res.data.userType == '1') {
needGovernance.value = res.data.userReportProjectPO?.needGovernance
} else if (
res.data.userType == '2' ||
res.data.userType == '3' ||
res.data.userType == '4' ||
res.data.userType == '5'
res.data.userType == '2' ||
res.data.userType == '3' ||
res.data.userType == '4' ||
res.data.userType == '5'
) {
needGovernance.value = res.data.userReportSubstationPO?.needGovernance
} else if (res.data.userType == '6') {
@@ -383,10 +415,10 @@ const toFangAnById = (id: string, typeNo: number) => {
userId = res.data.userReportProjectPO?.id
needGovernance.value = res.data.userReportProjectPO?.needGovernance
} else if (
res.data.userType == '2' ||
res.data.userType == '3' ||
res.data.userType == '4' ||
res.data.userType == '5'
res.data.userType == '2' ||
res.data.userType == '3' ||
res.data.userType == '4' ||
res.data.userType == '5'
) {
userId = res.data.userReportSubstationPO?.id
needGovernance.value = res.data.userReportSubstationPO?.needGovernance
@@ -433,16 +465,16 @@ const getUserTypeName = (userType: any) => {
return '新建电网工程'
}
watch(
() => currentRoute.value.path,
() => {
if (flag.value && options.history.state.forward?.split('/')[1] == 'bpm') {
tableStore.index()
flag.value = false
() => currentRoute.value.path,
() => {
if (flag.value && options.history.state.forward?.split('/')[1] == 'bpm') {
tableStore.index()
flag.value = false
}
},
{
deep: true
}
},
{
deep: true
}
)
//初始进来时如果有id就直接打开重新发起
@@ -477,7 +509,7 @@ watch(() => props.id, async (newValue, oldValue) => {
})
}
}, { immediate: true })
}, {immediate: true})
</script>

View File

@@ -57,8 +57,8 @@
{{ detailData.evaluationConclusion }}
</el-descriptions-item>
<el-descriptions-item :label="detailData.userType == '4' || detailData.userType == '5'
? '非线性设备类型: '
: '非线性负荷类型:'
? '非线性设备类型: '
: '非线性负荷类型:'
" v-if="
detailData.userType == '2' ||
detailData.userType == '3' ||
@@ -286,72 +286,94 @@
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="1" border style="flex: 1" title="变更后">
<el-descriptions-item label="填报人">
<el-descriptions-item label="填报人" :label-class-name="changeTheField?.reporter ? 'my-content' : ''"
:class-name="changeTheField?.reporter ? 'my-content' : ''">
{{ detailData1.reporter }}
</el-descriptions-item>
<el-descriptions-item label="填报日期">
<el-descriptions-item label="填报日期" :label-class-name="changeTheField?.reportDate ? 'my-content' : ''"
:class-name="changeTheField?.reportDate ? 'my-content' : ''">
{{ formatDate(detailData1.reportDate, 'YYYY-MM-DD') }}
</el-descriptions-item>
<el-descriptions-item label="填报部门">
<el-descriptions-item label="填报部门" :label-class-name="changeTheField?.orgName ? 'my-content' : ''"
:class-name="changeTheField?.orgName ? 'my-content' : ''">
{{ detailData1.orgName }}
</el-descriptions-item>
<el-descriptions-item label="工程预期投产日期">
<el-descriptions-item label="工程预期投产日期"
:label-class-name="changeTheField?.expectedProductionDate ? 'my-content' : ''"
:class-name="changeTheField?.expectedProductionDate ? 'my-content' : ''">
{{ formatDate(detailData1.expectedProductionDate, 'YYYY-MM-DD') }}
</el-descriptions-item>
<el-descriptions-item label="用户性质">
<el-descriptions-item label="用户性质" :label-class-name="changeTheField?.userType ? 'my-content' : ''"
:class-name="changeTheField?.userType ? 'my-content' : ''">
{{
userTypeList.find(item => {
return item.value == detailData1.userType
})?.label
}}
</el-descriptions-item>
<el-descriptions-item label="所在地市">
<el-descriptions-item label="所在地市" :label-class-name="changeTheField?.city ? 'my-content' : ''"
:class-name="changeTheField?.city ? 'my-content' : ''">
{{ detailData1.city }}
</el-descriptions-item>
<el-descriptions-item label="归口管理部门">
<el-descriptions-item label="归口管理部门"
:label-class-name="changeTheField?.responsibleDepartment ? 'my-content' : ''"
:class-name="changeTheField?.responsibleDepartment ? 'my-content' : ''">
{{ detailData1.responsibleDepartment }}
</el-descriptions-item>
<el-descriptions-item label="用户状态">
<el-descriptions-item label="用户状态" :label-class-name="changeTheField?.userStatus ? 'my-content' : ''"
:class-name="changeTheField?.userStatus ? 'my-content' : ''">
{{
userStateList.find(item => {
return item.value == detailData1.userStatus
})?.label
}}
</el-descriptions-item>
<el-descriptions-item label="变电站">
<el-descriptions-item label="变电站" :label-class-name="changeTheField?.substation ? 'my-content' : ''"
:class-name="changeTheField?.substation ? 'my-content' : ''">
{{ detailData1.substation }}
</el-descriptions-item>
<el-descriptions-item label="工程名">
<el-descriptions-item label="工程名" :label-class-name="changeTheField?.projectName ? 'my-content' : ''"
:class-name="changeTheField?.projectName ? 'my-content' : ''">
{{ detailData1.projectName }}
</el-descriptions-item>
<el-descriptions-item label="电压等级">
<el-descriptions-item label="电压等级" :label-class-name="changeTheField?.voltageLevel ? 'my-content' : ''"
:class-name="changeTheField?.voltageLevel ? 'my-content' : ''">
{{
voltageLevelList.find(item => {
return item.id == detailData1.voltageLevel
})?.name
}}
</el-descriptions-item>
<el-descriptions-item label="非线性终端类型" v-if="detailData1.userType == 0 || detailData1.userType == 1">
<el-descriptions-item label="非线性终端类型" v-if="detailData1.userType == 0 || detailData1.userType == 1"
:label-class-name="changeTheField?.nonlinearDeviceType ? 'my-content' : ''"
:class-name="changeTheField?.nonlinearDeviceType ? 'my-content' : ''">
{{ proviteData1.nonlinearDeviceType ? proviteData1.nonlinearDeviceType : '-' }}
</el-descriptions-item>
<el-descriptions-item label="预测评估单位">
<el-descriptions-item label="预测评估单位"
:label-class-name="changeTheField?.evaluationDept ? 'my-content' : ''"
:class-name="changeTheField?.evaluationDept ? 'my-content' : ''">
{{ detailData1.evaluationDept }}
</el-descriptions-item>
<el-descriptions-item label="预测评估结论" :span="2">
<el-descriptions-item label="预测评估结论" :span="2"
:label-class-name="changeTheField?.evaluationConclusion ? 'my-content' : ''"
:class-name="changeTheField?.evaluationConclusion ? 'my-content' : ''">
{{ detailData1.evaluationConclusion }}
</el-descriptions-item>
<el-descriptions-item :label="detailData1.userType == '4' || detailData1.userType == '5'
? '非线性设备类型: '
: '非线性负荷类型:'
? '非线性设备类型: '
: '非线性负荷类型:'
" v-if="
detailData1.userType == '2' ||
detailData1.userType == '3' ||
detailData1.userType == '4' ||
detailData1.userType == '5'
">
" :label-class-name="changeTheField?.nonlinearLoadType ? 'my-content' : ''"
:class-name="changeTheField?.nonlinearLoadType ? 'my-content' : ''">
{{ proviteData1.nonlinearLoadType }}
</el-descriptions-item>
<el-descriptions-item label="是否需要治理">
<el-descriptions-item label="是否需要治理"
:label-class-name="changeTheField?.needGovernance ? 'my-content' : ''"
:class-name="changeTheField?.needGovernance ? 'my-content' : ''">
<span v-if="detailData1.userType == 0 || detailData1.userType == 1">
{{ proviteData1.needGovernance == 0 ? '否' : '是' }}
</span>
@@ -365,7 +387,9 @@
</span>
<span v-if="detailData1.userType == 6">{{ proviteData1.needGovernance == 0 ? '否' : '是' }}</span>
</el-descriptions-item>
<el-descriptions-item label="是否开展背景测试">
<el-descriptions-item label="是否开展背景测试"
:label-class-name="changeTheField?.backgroundTestPerformed ? 'my-content' : ''"
:class-name="changeTheField?.backgroundTestPerformed ? 'my-content' : ''">
<span v-if="detailData1.userType == 0 || detailData1.userType == 1">
{{ proviteData1.backgroundTestPerformed == 0 ? '否' : '是' }}
</span>
@@ -381,12 +405,16 @@
{{ proviteData1.backgroundTestPerformed == 0 ? '否' : '是' }}
</span>
</el-descriptions-item>
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData1.userType == 6">
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.antiInterferenceTest ? 'my-content' : ''"
:class-name="changeTheField?.antiInterferenceTest ? 'my-content' : ''">
<span>
{{ proviteData1.antiInterferenceTest == 0 ? '否' : '是' }}
</span>
</el-descriptions-item>
<el-descriptions-item label="用户协议容量MVA" v-if="detailData1.userType == 0 || detailData1.userType == 1">
<el-descriptions-item label="用户协议容量MVA" v-if="detailData1.userType == 0 || detailData1.userType == 1"
:label-class-name="changeTheField?.agreementCapacity ? 'my-content' : ''"
:class-name="changeTheField?.agreementCapacity ? 'my-content' : ''">
{{ proviteData1.agreementCapacity }}
</el-descriptions-item>
<el-descriptions-item label="PCC供电设备容量MVA" v-if="
@@ -394,7 +422,8 @@
detailData1.userType == '3' ||
detailData1.userType == '4' ||
detailData1.userType == '5'
">
" :label-class-name="changeTheField?.pccEquipmentCapacity ? 'my-content' : ''"
:class-name="changeTheField?.pccEquipmentCapacity ? 'my-content' : ''">
{{ proviteData1.pccEquipmentCapacity }}
</el-descriptions-item>
<el-descriptions-item label="基准短路容量MVA" v-if="
@@ -402,7 +431,8 @@
detailData1.userType == '3' ||
detailData1.userType == '4' ||
detailData1.userType == '5'
">
" :label-class-name="changeTheField?.baseShortCircuitCapacity ? 'my-content' : ''"
:class-name="changeTheField?.baseShortCircuitCapacity ? 'my-content' : ''">
{{ proviteData1.baseShortCircuitCapacity }}
</el-descriptions-item>
<el-descriptions-item label="系统最小短路容量MVA" v-if="
@@ -410,7 +440,8 @@
detailData1.userType == '3' ||
detailData1.userType == '4' ||
detailData1.userType == '5'
">
" :label-class-name="changeTheField?.minShortCircuitCapacity ? 'my-content' : ''"
:class-name="changeTheField?.minShortCircuitCapacity ? 'my-content' : ''">
{{ proviteData1?.minShortCircuitCapacity }}
</el-descriptions-item>
<el-descriptions-item label="用户用电协议容量MVA" v-if="
@@ -418,61 +449,84 @@
detailData1.userType == '3' ||
detailData1.userType == '4' ||
detailData1.userType == '5'
">
" :label-class-name="changeTheField?.userAgreementCapacity ? 'my-content' : ''"
:class-name="changeTheField?.userAgreementCapacity ? 'my-content' : ''">
{{ proviteData1?.userAgreementCapacity }}
</el-descriptions-item>
<el-descriptions-item label="PCC点" v-if="detailData1.userType != 0 && detailData1.userType != 1">
<el-descriptions-item label="PCC点" v-if="detailData1.userType != 0 && detailData1.userType != 1"
:label-class-name="changeTheField?.pccPoint ? 'my-content' : ''"
:class-name="changeTheField?.pccPoint ? 'my-content' : ''">
{{ proviteData1?.pccPoint }}
</el-descriptions-item>
<el-descriptions-item label="评估类型" v-if="detailData1.userType != 0 && detailData1.userType != 1">
<el-descriptions-item label="评估类型" v-if="detailData1.userType != 0 && detailData1.userType != 1"
:label-class-name="changeTheField?.evaluationType ? 'my-content' : ''"
:class-name="changeTheField?.evaluationType ? 'my-content' : ''">
{{
evaluationTypeList.find(item => {
return item.id == proviteData1?.evaluationType
})?.name
}}
</el-descriptions-item>
<el-descriptions-item label="预测评估评审单位" v-if="detailData1.userType != 0 && detailData1.userType != 1">
<el-descriptions-item label="预测评估评审单位" v-if="detailData1.userType != 0 && detailData1.userType != 1"
:label-class-name="changeTheField?.evaluationChekDept ? 'my-content' : ''"
:class-name="changeTheField?.evaluationChekDept ? 'my-content' : ''">
{{ proviteData1?.evaluationChekDept }}
</el-descriptions-item>
<el-descriptions-item label="行业" v-if="detailData1.userType == 6">
<el-descriptions-item label="行业" v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.industry ? 'my-content' : ''"
:class-name="changeTheField?.industry ? 'my-content' : ''">
{{
industryList.find(item => {
return item.id == proviteData1.industry
})?.name
}}
</el-descriptions-item>
<el-descriptions-item label="敏感终端名称" v-if="detailData1.userType == 6">
<el-descriptions-item label="敏感终端名称" v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.deviceName ? 'my-content' : ''"
:class-name="changeTheField?.deviceName ? 'my-content' : ''">
{{ proviteData1.deviceName }}
</el-descriptions-item>
<!-- <el-descriptions-item label="供电电源数量" v-if="detailData1.userType == 6">-->
<!-- {{ proviteData1.powerSupplyCount }}-->
<!-- </el-descriptions-item>-->
<el-descriptions-item label="供电电源情况" v-if="detailData1.userType == 6">
<el-descriptions-item label="供电电源情况" v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.powerSupplyInfo ? 'my-content' : ''"
:class-name="changeTheField?.powerSupplyInfo ? 'my-content' : ''">
{{
powerSupplyInfoOptionList.find(item => {
return item.id == proviteData1.powerSupplyInfo
})?.name
}}
</el-descriptions-item>
<el-descriptions-item label="供电电源" :span="2" v-if="detailData1.userType == 6">
<el-descriptions-item label="供电电源" :span="2" v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.powerSupply ? 'my-content' : ''"
:class-name="changeTheField?.powerSupply ? 'my-content' : ''">
{{ proviteData1.powerSupply }}
</el-descriptions-item>
<el-descriptions-item label="负荷级别" v-if="detailData1.userType == 6">
<el-descriptions-item label="负荷级别" v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.loadLevel ? 'my-content' : ''"
:class-name="changeTheField?.loadLevel ? 'my-content' : ''">
{{
loadLevelOptionList.find(item => {
return item.id == proviteData1.loadLevel
})?.name
}}
</el-descriptions-item>
<el-descriptions-item label="敏感电能质量指标" v-if="detailData1.userType == 6">
<el-descriptions-item label="敏感电能质量指标" v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.energyQualityIndex ? 'my-content' : ''"
:class-name="changeTheField?.energyQualityIndex ? 'my-content' : ''">
{{
energyQualityIndexList.find(item => {
return item.id == proviteData1.energyQualityIndex
})?.name
}}
</el-descriptions-item>
<el-descriptions-item label="可研报告">
<span v-if="detailData1.userType == 0 || detailData1.userType == 1">
<el-descriptions-item label="可研报告"
:label-class-name="changeTheField?.feasibilityReport ? 'my-content' : ''"
:class-name="changeTheField?.feasibilityReport ? 'my-content' : ''">
<span v-if="detailData1.userType == 0 || detailData1.userType == 1"
:label-class-name="changeTheField?.feasibilityReport ? 'my-content' : ''"
:class-name="changeTheField?.feasibilityReport ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.feasibilityReport?.name">
<View @click="openFile(proviteData1?.feasibilityReport?.name)" />
</el-icon>
@@ -493,7 +547,9 @@
{{ proviteData1.feasibilityReport?.name }}
</a>
</span>
<span v-if="detailData1.userType == 6">
<span v-if="detailData1.userType == 6"
:label-class-name="changeTheField?.feasibilityReport ? 'my-content' : ''"
:class-name="changeTheField?.feasibilityReport ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.feasibilityReport?.name">
<View @click="openFile(proviteData1?.feasibilityReport?.name)" />
</el-icon>
@@ -502,7 +558,9 @@
</a>
</span>
</el-descriptions-item>
<el-descriptions-item label="项目初步设计说明书">
<el-descriptions-item label="项目初步设计说明书"
:label-class-name="changeTheField?.preliminaryDesignDescription ? 'my-content' : ''"
:class-name="changeTheField?.preliminaryDesignDescription ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.preliminaryDesignDescription?.name">
<View @click="openFile(proviteData1?.preliminaryDesignDescription?.name)" />
</el-icon>
@@ -511,7 +569,9 @@
{{ proviteData1?.preliminaryDesignDescription?.name }}
</a>
</el-descriptions-item>
<el-descriptions-item label="预测评估报告">
<el-descriptions-item label="预测评估报告"
:label-class-name="changeTheField?.predictionEvaluationReport ? 'my-content' : ''"
:class-name="changeTheField?.predictionEvaluationReport ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.predictionEvaluationReport?.name">
<View @click="openFile(proviteData1?.predictionEvaluationReport?.name)" />
</el-icon>
@@ -519,7 +579,9 @@
{{ proviteData1?.predictionEvaluationReport?.name }}
</a>
</el-descriptions-item>
<el-descriptions-item label="预测评估评审意见报告">
<el-descriptions-item label="预测评估评审意见报告"
:label-class-name="changeTheField?.predictionEvaluationReviewOpinions ? 'my-content' : ''"
:class-name="changeTheField?.predictionEvaluationReviewOpinions ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.predictionEvaluationReviewOpinions?.name">
<View @click="openFile(proviteData1?.predictionEvaluationReviewOpinions?.name)" />
</el-icon>
@@ -527,7 +589,9 @@
{{ proviteData1?.predictionEvaluationReviewOpinions?.name }}
</a>
</el-descriptions-item>
<el-descriptions-item label="用户接入变电站主接线示意图" v-if="detailData.userType != 0 && detailData.userType != 1">
<el-descriptions-item label="用户接入变电站主接线示意图" v-if="detailData.userType != 0 && detailData.userType != 1"
:label-class-name="changeTheField?.substationMainWiringDiagram ? 'my-content' : ''"
:class-name="changeTheField?.substationMainWiringDiagram ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.substationMainWiringDiagram?.name">
<View @click="openFile(proviteData1?.substationMainWiringDiagram?.name)" />
</el-icon>
@@ -535,7 +599,9 @@
{{ proviteData1?.substationMainWiringDiagram?.name }}
</a>
</el-descriptions-item>
<el-descriptions-item label="主要敏感终端清单" v-if="detailData.userType == 6">
<el-descriptions-item label="主要敏感终端清单" v-if="detailData.userType == 6"
:label-class-name="changeTheField?.sensitiveDevices ? 'my-content' : ''"
:class-name="changeTheField?.sensitiveDevices ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.sensitiveDevices?.name">
<View @click="openFile(proviteData1?.sensitiveDevices?.name)" />
</el-icon>
@@ -543,7 +609,9 @@
{{ proviteData1?.sensitiveDevices?.name }}
</a>
</el-descriptions-item>
<el-descriptions-item label="抗扰度测试报告" v-if="detailData.userType == 6">
<el-descriptions-item label="抗扰度测试报告" v-if="detailData.userType == 6"
:label-class-name="changeTheField?.antiInterferenceReport ? 'my-content' : ''"
:class-name="changeTheField?.antiInterferenceReport ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.antiInterferenceReport?.name">
<View @click="openFile(proviteData1?.antiInterferenceReport?.name)" />
</el-icon>
@@ -551,7 +619,9 @@
{{ proviteData1?.antiInterferenceReport?.name }}
</a>
</el-descriptions-item>
<el-descriptions-item label="背景电能质量测试报告" v-if="detailData.userType == 6">
<el-descriptions-item label="背景电能质量测试报告" v-if="detailData.userType == 6"
:label-class-name="changeTheField?.powerQualityReport ? 'my-content' : ''"
:class-name="changeTheField?.powerQualityReport ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.powerQualityReport?.name">
<View @click="openFile(proviteData1?.powerQualityReport?.name)" />
</el-icon>
@@ -560,7 +630,9 @@
</a>
</el-descriptions-item>
<el-descriptions-item label="其他附件"
v-if="proviteData1?.additionalAttachments && proviteData1?.additionalAttachments?.url">
v-if="proviteData1?.additionalAttachments && proviteData1?.additionalAttachments?.url"
:label-class-name="changeTheField?.additionalAttachments ? 'my-content' : ''"
:class-name="changeTheField?.additionalAttachments ? 'my-content' : ''">
<el-icon class="elView" v-if="proviteData1?.additionalAttachments?.name">
<View @click="openFile(proviteData1?.additionalAttachments?.name)" />
</el-icon>
@@ -652,6 +724,7 @@ const userStateList = reactive([
value: '3'
}
])
const dictData = useDictData()
//字典获取所在地市
const areaOptionList = dictData.getBasicData('jibei_area')
@@ -667,23 +740,80 @@ const evaluationTypeList = dictData.getBasicData('Evaluation_Type')
const evaluationDeptList = dictData.getBasicData('evaluation_dept')
const loadLevelOptionList = dictData.getBasicData('load_level')
const powerSupplyInfoOptionList = dictData.getBasicData('supply_condition')
const changeTheField: any = ref({})
/** 获得数据 */
const getInfo = async () => {
detailLoading.value = true
let obj1: any = {}
let obj2: any = {}
try {
await getUserReportUpdateById(props.id || queryId).then(res => {
detailData1.value = res.data.userReportMessageJson
obj1 = JSON.parse(JSON.stringify(res.data.userReportMessageJson))
detailData1.value = JSON.parse(JSON.stringify(res.data.userReportMessageJson))
getProviteData1()
})
await getUserReportById(props.id || queryId).then(res => {
detailData.value = res.data
obj2 = JSON.parse(JSON.stringify(res.data))
detailData.value = JSON.parse(JSON.stringify(res.data))
getProviteData()
})
} finally {
detailLoading.value = false
changeTheField.value = compareObjects({
...obj1, ...obj1.userReportProjectPO, ...obj1.userReportSensitivePO, ...obj1.userReportSubstationPO
}, { ...obj2, ...obj2.userReportProjectPO, ...obj2.userReportSensitivePO, ...obj2.userReportSubstationPO })
}
}
const compareObjects = (obj1: any, obj2: any) => {
const differences: any = {};
for (const key in obj1) {
if (obj1.hasOwnProperty(key)) {
if (obj1[key] !== obj2[key]) {
differences[key] = { obj1: obj1[key], obj2: obj2[key] };
}
}
}
for (const key in obj2) {
if (obj2.hasOwnProperty(key) && !obj1.hasOwnProperty(key)) {
differences[key] = { obj1: undefined, obj2: obj2[key] };
}
}
return differences;
}
// const compareObjects = (obj1: any, obj2: any) => {
// const differences: any = {};
// function findDifferences(o1, o2, path = '') {
// for (const key in o1) {
// if (o1.hasOwnProperty(key)) {
// const newPath = path ? `${path}.${key}` : key;
// if (typeof o1[key] === 'object' && o1[key] !== null && typeof o2[key] === 'object' && o2[key] !== null) {
// findDifferences(o1[key], o2[key], newPath);
// } else if (o1[key] !== o2[key]) {
// differences[newPath] = { obj1: o1[key], obj2: o2[key] };
// }
// }
// }
// for (const key in o2) {
// if (o2.hasOwnProperty(key) && !o1.hasOwnProperty(key)) {
// const newPath = path ? `${path}.${key}` : key;
// differences[newPath] = { obj1: undefined, obj2: o2[key] };
// }
// }
// }
// findDifferences(obj1, obj2);
// return differences;
// }
const proviteData = ref()
const proviteData1 = ref()
@@ -1001,3 +1131,8 @@ onMounted(() => {
margin-right: 10px;
}
</style>
<style scoped>
:deep(.my-content) {
background: var(--el-color-success-light-7) !important;
}
</style>

View File

@@ -16,26 +16,37 @@
</el-select>
</el-form-item>
</template>
<template #operation>
<template #operation>
<el-button icon='' type='primary' @click='toGoNet()'>{{ titleButton }}</el-button>
<el-button style='margin-left: 50px' :icon='Back' @click='go(-1)'>返回</el-button>
</template>
</TableHeader> -->
</TableHeader> -->
<div class="header_btn">
<el-button v-if="bussType == 0 && !(jb_pl || jb_dky)" icon="" type="primary" @click="toGoNet()">
{{ titleButton }}
</el-button>
<el-button v-if="bussType == 1 && needGovernance != '0' && !(jb_pl || jb_dky)" icon="" type="primary"
@click="toGoNet()">
<el-button
v-if="bussType == 1 && needGovernance != '0' && !(jb_pl || jb_dky)"
icon=""
type="primary"
@click="toGoNet()"
>
{{ titleButton }}
</el-button>
<el-button style="margin-left: 50px" :icon="Back" @click="go(-1)">返回</el-button>
</div>
<Table ref="tableRef" />
<Table ref="tableRef"/>
<addForm v-if="dialogVisible" ref="addForms" :id="bussId" :bussType="bussType" :title="titleButton1"
openType="detail" @onSubmit="tableStore.index()"></addForm>
<addForm
v-if="dialogVisible"
ref="addForms"
:id="bussId"
:bussType="bussType"
:title="titleButton1"
openType="detail"
@onSubmit="tableStore.index()"
></addForm>
</div>
</template>
@@ -44,20 +55,20 @@ defineOptions({
name: 'ProgramReview'
})
import { ref, onMounted, provide, nextTick, onUnmounted } from 'vue'
import {ref, onMounted, provide, nextTick, onUnmounted} from 'vue'
import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import { cancel, userReportGoNetById } from '@/api/supervision-boot/interfere/index'
import { useDictData } from '@/stores/dictData'
import {cancel, userReportGoNetById} from '@/api/supervision-boot/interfere/index'
import {useDictData} from '@/stores/dictData'
import addForm from './addForm.vue'
import { useRouter, useRoute } from 'vue-router'
import { Back } from '@element-plus/icons-vue'
import { useAdminInfo } from '@/stores/adminInfo'
import {useRouter, useRoute} from 'vue-router'
import {Back} from '@element-plus/icons-vue'
import {useAdminInfo} from '@/stores/adminInfo'
const { go, currentRoute, push } = useRouter()
const { query } = useRoute() // 查询参数
import { ElMessage } from 'element-plus'
import { ElMessageBox } from 'element-plus/es'
const {go, currentRoute, push} = useRouter()
const {query} = useRoute() // 查询参数
import {ElMessage} from 'element-plus'
import {ElMessageBox} from 'element-plus/es'
const needGovernance = query.needGovernance as unknown as string // 从 URL 传递过来的 是否需要治理
const dictData = useDictData()
@@ -66,28 +77,26 @@ const adminInfo = useAdminInfo()
const jb_pl = ref(false)
const jb_dky = ref(false)
jb_pl.value =
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_pl'
}).length != 0
? true
: false
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_pl'
}).length != 0
? true
: false
jb_dky.value =
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_dky'
}).length != 0
? true
: false
adminInfo.$state.roleCode.filter(item => {
return item == 'jb_dky'
}).length != 0
? true
: false
const tableStore = new TableStore({
url: '/supervision-boot/userReportNormal/userReportGoNetPage',
method: 'POST',
column: [
{
title: '序号', width: 80, formatter: (row: any) => {
{title: '序号', width: 80,formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'projectName', title: '用户名称', minWidth: 170 },
}},
{field: 'projectName', title: '用户名称', minWidth: 170},
{
field: 'userType',
title: '用户性质',
@@ -97,8 +106,8 @@ const tableStore = new TableStore({
return getUserTypeName(userType)
}
},
{ field: 'city', title: '所在地市', minWidth: 80 },
{ field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{field: 'city', title: '所在地市', minWidth: 80},
{field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130},
{
field: 'userStatus',
title: '用户状态',
@@ -117,7 +126,7 @@ const tableStore = new TableStore({
3: '退运'
}
},
{ field: 'substation', title: '厂站名称', minWidth: 100 },
{field: 'substation', title: '厂站名称', minWidth: 100},
{
field: 'status',
title: '流程状态',
@@ -146,7 +155,7 @@ const tableStore = new TableStore({
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
}
},
{ field: 'createTime', title: '创建时间', minWidth: 100 },
{field: 'createTime', title: '创建时间', minWidth: 100},
{
title: '操作',
minWidth: 180,
@@ -254,7 +263,7 @@ onMounted(async () => {
document.addEventListener('visibilitychange', handleVisibilityChange)
if (query.fangAnId) {
//根据id查询待编辑的数据
await userReportGoNetById({ id: query.fangAnId }).then(res => {
await userReportGoNetById({id: query.fangAnId}).then(res => {
if (res && res.code == 'A0000') {
dialogVisible.value = true
titleButton1.value = '重新发起'
@@ -274,7 +283,7 @@ onUnmounted(() => {
/**取消流程操作*/
const cancelLeave = async (row: any) => {
// 二次确认
const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
const {value} = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputType: 'textarea',

View File

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

View File

@@ -62,11 +62,11 @@
detailData.userType == '4' ||
detailData.userType == '5'
">
{{ proviteData.nonlinearLoadType }}
{{ proviteData?.nonlinearLoadType || '' }}
</el-descriptions-item>
<el-descriptions-item label="是否需要治理">
<span v-if="detailData.userType == 0 || detailData.userType == 1">
{{ proviteData.needGovernance == 0 ? '' : '' }}
{{ proviteData?.needGovernance == 1 ? '' : '' }}
</span>
<span v-if="
detailData.userType == 2 ||
@@ -74,13 +74,13 @@
detailData.userType == 4 ||
detailData.userType == 5
">
{{ proviteData.needGovernance == 0 ? '' : '' }}
{{ proviteData?.needGovernance == 1 ? '' : '' }}
</span>
<span v-if="detailData.userType == 6">{{ proviteData.needGovernance == 0 ? '' : '' }}</span>
<span v-if="detailData.userType == 6">{{ proviteData?.needGovernance == 1 ? '' : '' }}</span>
</el-descriptions-item>
<el-descriptions-item label="是否开展背景测试">
<span v-if="detailData.userType == 0 || detailData.userType == 1">
{{ proviteData.backgroundTestPerformed == 0 ? '' : '' }}
{{ proviteData?.backgroundTestPerformed == 1 ? '' : '' }}
</span>
<span v-if="
detailData.userType == 2 ||
@@ -88,10 +88,10 @@
detailData.userType == 4 ||
detailData.userType == 5
">
{{ proviteData.backgroundTestPerformed == 0 ? '' : '' }}
{{ proviteData?.backgroundTestPerformed == 1 ? '' : '' }}
</span>
<span v-if="detailData.userType == 6">
{{ proviteData.backgroundTestPerformed == 0 ? '' : '' }}
{{ proviteData?.backgroundTestPerformed == 1 ? '' : '' }}
</span>
</el-descriptions-item>
@@ -109,11 +109,11 @@
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData.userType == 6">
<span>
{{ proviteData.antiInterferenceTest == 0 ? '' : '' }}
{{ proviteData.antiInterferenceTest == 1 ? '' : '' }}
</span>
</el-descriptions-item>
<el-descriptions-item label="用户协议容量MVA" v-if="detailData.userType == 0 || detailData.userType == 1">
{{ proviteData.agreementCapacity }}
{{ proviteData?.agreementCapacity }}
</el-descriptions-item>
<el-descriptions-item label="PCC供电设备容量MVA" v-if="
detailData.userType == '2' ||
@@ -121,7 +121,7 @@
detailData.userType == '4' ||
detailData.userType == '5'
">
{{ proviteData.pccEquipmentCapacity }}
{{ proviteData?.pccEquipmentCapacity }}
</el-descriptions-item>
<el-descriptions-item label="基准短路容量MVA" v-if="
detailData.userType == '2' ||
@@ -129,7 +129,7 @@
detailData.userType == '4' ||
detailData.userType == '5'
">
{{ proviteData.baseShortCircuitCapacity }}
{{ proviteData?.baseShortCircuitCapacity }}
</el-descriptions-item>
<el-descriptions-item label="系统最小短路容量MVA" v-if="
detailData.userType == '2' ||
@@ -202,8 +202,8 @@
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
</el-icon>
<a target="_blank" :href="proviteData.feasibilityReport?.url" rel="nofollow">
{{ proviteData.feasibilityReport?.name }}
<a target="_blank" :href="proviteData?.feasibilityReport?.url" rel="nofollow">
{{ proviteData?.feasibilityReport?.name }}
</a>
</span>
<span v-if="
@@ -215,16 +215,16 @@
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
</el-icon>
<a target="_blank" :href="proviteData.feasibilityReport?.url">
{{ proviteData.feasibilityReport?.name }}
<a target="_blank" :href="proviteData?.feasibilityReport?.url">
{{ proviteData?.feasibilityReport?.name }}
</a>
</span>
<span v-if="detailData.userType == 6">
<el-icon class="elView" v-if="proviteData?.feasibilityReport?.name">
<View @click="openFile(proviteData?.feasibilityReport?.name)" />
</el-icon>
<a target="_blank" :href="proviteData.feasibilityReport?.url">
{{ proviteData.feasibilityReport?.name }}
<a target="_blank" :href="proviteData?.feasibilityReport?.url">
{{ proviteData?.feasibilityReport?.name }}
</a>
</span>
</el-descriptions-item>
@@ -573,7 +573,6 @@ const preview = (val: any, url: any) => {
}
//预测评估报告
if (val == 'predictionEvaluationReport') {
console.log(url, '9999999')
predictionEvaluationReportRef?.value.open(url)
}
//预测评估评审意见报告
@@ -626,59 +625,66 @@ const getProviteData = async () => {
) {
proviteData.value = detailData.value.userReportSubstationPO
//查询非线性负荷类型
await getDictTreeById(proviteData.value.nonlinearLoadType).then(res => {
proviteData.value.nonlinearLoadType = res.data?.name
})
if (proviteData.value?.nonlinearLoadType != undefined) {
await getDictTreeById(proviteData.value.nonlinearLoadType).then(res => {
proviteData.value.nonlinearLoadType = res.data?.name
})
}
} else {
proviteData.value = detailData.value.userReportSensitivePO
}
//可研报告
if (proviteData.value.feasibilityReport) {
if (proviteData.value?.feasibilityReport != undefined && proviteData.value?.feasibilityReport.length>7) {
await getFileNamePath(proviteData.value.feasibilityReport, 'feasibilityReport')
}
//项目初步设计说明书
if (proviteData.value.preliminaryDesignDescription) {
if (proviteData.value?.preliminaryDesignDescription != undefined && proviteData.value?.preliminaryDesignDescription.length>7) {
await getFileNamePath(proviteData.value.preliminaryDesignDescription, 'preliminaryDesignDescription')
}
//预测评估报告
if (proviteData.value.predictionEvaluationReport) {
if (proviteData.value?.predictionEvaluationReport != undefined && proviteData.value?.predictionEvaluationReport.length>7) {
await getFileNamePath(proviteData.value.predictionEvaluationReport, 'predictionEvaluationReport')
}
//预测评估评审意见报告
if (proviteData.value.predictionEvaluationReviewOpinions) {
if (proviteData.value?.predictionEvaluationReviewOpinions != undefined && proviteData.value?.predictionEvaluationReviewOpinions.length>7) {
await getFileNamePath(
proviteData.value.predictionEvaluationReviewOpinions,
'predictionEvaluationReviewOpinions'
)
}
//用户接入变电站主接线示意图
if (proviteData.value.substationMainWiringDiagram) {
if (proviteData.value?.substationMainWiringDiagram != undefined && proviteData.value?.substationMainWiringDiagram.length>7) {
await getFileNamePath(proviteData.value.substationMainWiringDiagram, 'substationMainWiringDiagram')
}
//主要敏感终端清单
if (proviteData.value.sensitiveDevices) {
if (proviteData.value?.sensitiveDevices != undefined && proviteData.value?.sensitiveDevices.length>7) {
await getFileNamePath(proviteData.value.sensitiveDevices, 'sensitiveDevices')
}
//抗扰度测试报告
if (proviteData.value.antiInterferenceReport) {
if (proviteData.value?.antiInterferenceReport != undefined && proviteData.value?.antiInterferenceReport.length>7) {
await getFileNamePath(proviteData.value.antiInterferenceReport, 'antiInterferenceReport')
}
//背景电能质量测试报告
if (proviteData.value.powerQualityReport) {
if (proviteData.value?.powerQualityReport != undefined && proviteData.value?.powerQualityReport.length>7) {
await getFileNamePath(proviteData.value.powerQualityReport, 'powerQualityReport')
}
//其他附件
if (proviteData.value.additionalAttachments) {
if (proviteData.value?.additionalAttachments != undefined && proviteData.value?.additionalAttachments.length>7) {
getFileNamePath(proviteData.value.additionalAttachments, 'additionalAttachments')
}
// 入网评估报告
if (detailData.value.netInReport.length > 0) {
if ( detailData.value.netInReport.length > 0 ) {
netInReportList.value = []
detailData.value.netInReport.forEach((item: any) => {
if (item != null) {

View File

@@ -1,37 +1,47 @@
<template>
<TableHeader datePicker nextFlag theCurrentTime ref='TableHeaderRef'>
<template #select>
<el-form-item label='项目名称'>
<el-input v-model='tableStore.table.params.projectName' placeholder='请输入项目名称' clearable maxlength="32" show-word-limit></el-input>
</el-form-item>
<el-form-item label='所在地市'>
<el-select v-model='tableStore.table.params.city' clearable placeholder='请选择所在地市'>
<el-option v-for='item in areaOptionList' :key='item.id' :label='item.name' :value='item.name'></el-option>
</el-select>
</el-form-item>
<TableHeader datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
<template #select>
<el-form-item label="项目名称">
<el-input v-model="tableStore.table.params.projectName" placeholder="请输入项目名称"></el-input>
</el-form-item>
<el-form-item label="所在地市">
<el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市">
<el-option
v-for="item in areaOptionList"
:key="item.id"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</el-form-item>
<el-form-item label='流程状态'>
<el-select v-model='tableStore.table.params.status' clearable placeholder='请选择流程状态'>
<el-option v-for='item in statusSelect' :key='item.id' :label='item.name' :value='item.id'></el-option>
</el-select>
</el-form-item>
</template>
<template #operation>
<!-- <el-button icon="el-icon-Plus" type="primary" @click="addList">新增</el-button> -->
<el-button icon='el-icon-Plus' type='primary' @click='addFormModel'>新增</el-button>
<el-button icon='el-icon-Delete' type='primary' @click='deleteEven'>删除</el-button>
<!-- <el-button icon="el-icon-Download" @click="exportEvent" type="primary">导出</el-button> -->
</template>
</TableHeader>
<Table ref='tableRef' :checkbox-config='checkboxConfig' />
<!-- 新增 -->
<Add ref='addRef' @onSubmit='tableStore.index()' />
<!-- 上传 -->
<Audit ref='AuditRef' @onSubmit='tableStore.index()' />
<!-- 查看详情 detail 新增/修改 create-->
<addForm ref='addForms' @onSubmit='tableStore.index()'></addForm>
<el-form-item label="流程状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
<el-option
v-for="item in statusSelect"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</template>
<template #operation>
<!-- <el-button icon="el-icon-Plus" type="primary" @click="addList">新增</el-button> -->
<el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button>
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
<!-- <el-button icon="el-icon-Download" @click="exportEvent" type="primary">导出</el-button> -->
</template>
</TableHeader>
<Table ref="tableRef" :checkbox-config="checkboxConfig" />
<!-- 新增 -->
<Add ref="addRef" @onSubmit="tableStore.index()" />
<!-- 上传 -->
<Audit ref="AuditRef" @onSubmit="tableStore.index()" />
<!-- 查看详情 detail 新增/修改 create-->
<addForm ref="addForms" @onSubmit="tableStore.index()"></addForm>
</template>
<script setup lang='ts'>
<script setup lang="ts">
import { ref, onMounted, provide, watch, reactive } from 'vue'
import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
@@ -53,8 +63,8 @@ const { push, options, currentRoute } = useRouter()
const TableHeaderRef = ref()
const tableRef = ref()
const areaOptionList = dictData
.getBasicData('jibei_area')
.filter(item => !(item.name == '超高压' || item.name == '风光储'))
.getBasicData('jibei_area')
.filter(item => !(item.name == '超高压' || item.name == '风光储'))
const statusSelect = dictData.statusSelect()
const addRef = ref()
const AuditRef = ref()
@@ -63,169 +73,191 @@ const show: any = ref(false)
const fileList = ref([])
const flag = ref(false)
const tableStore = new TableStore({
url: '/supervision-boot/userReport/getUserReport',
publicHeight: 65,
method: 'POST',
column: [
{
width: '60',
type: 'checkbox'
},
{ title: '序号', width: 80,formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
} },
// { field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{
field: 'city',
title: '所在地市',
minWidth: 80
// formatter: (obj: any) => {
// return areaOptionList.filter(item => item.id == obj.row.city)[0]?.name
// }
},
{
field: 'substation',
title: '厂站名称',
minWidth: 100,
formatter: (row: any) => {
row.cellValue = row.cellValue ? row.cellValue : '/'
return row.cellValue
}
},
{ field: 'projectName', title: '项目名称', minWidth: 170 },
{
field: 'userType',
title: '用户性质',
minWidth: 150,
formatter: (obj: any) => {
const userType = obj.row.userType
return getUserTypeName(userType)
}
},
{ field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{
field: 'userStatus',
title: '用户状态',
minWidth: 100,
render: 'tag',
custom: {
0: 'primary',
1: 'primary',
2: 'success',
3: 'warning'
},
replaceValue: {
0: '可研',
1: '建设',
2: '运行',
3: '退运'
}
},
{
field: 'status',
title: '流程状态',
minWidth: 100,
render: 'tag',
custom: {
0: 'warning',
1: 'primary',
2: 'success',
3: 'danger',
4: 'warning'
},
replaceValue: {
0: '待提交审批',
1: '审批中',
2: '审批通过',
3: '审批不通过',
4: '已取消'
}
},
{ field: 'createTime', title: '开始时间', minWidth: 170 },
{
field: 'createBy',
title: '填报人',
minWidth: 80,
formatter: (row: any) => {
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
}
},
{
title: '操作',
minWidth: 150,
fixed: 'right',
render: 'buttons',
buttons: [
url: '/supervision-boot/userReport/getUserReport',
publicHeight: 65,
method: 'POST',
filename:'未建档用户档案录入管理',
column: [
{
name: 'productSetting',
title: '流程详情',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
disabled: row => {
return !row.processInstanceId
},
click: row => {
flag.value = true
handleAudit(row.processInstanceId, row.historyInstanceId)
}
width: '60',
type: 'checkbox'
},
{
name: 'edit',
title: '编辑',
type: 'primary',
icon: 'el-icon-Open',
render: 'basicButton',
showDisabled: row => {
return row.createBy != adminInfo.$state.id || !(row.status == 0)
},
disabled: row => {
return !(row.status == 0)
},
click: row => {
addForms.value.open({
title: '编辑',
row: row
})
}
title: '序号',
width: 80,
formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
// { field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{
field: 'city',
title: '所在地市',
minWidth: 80
// formatter: (obj: any) => {
// return areaOptionList.filter(item => item.id == obj.row.city)[0]?.name
// }
},
{
name: 'edit',
title: '重新发起',
type: 'warning',
icon: 'el-icon-Open',
render: 'basicButton',
disabled: row => {
return row.createBy != adminInfo.$state.id || !(row.status == 3 || row.status == 4)
},
click: row => {
addForms.value.open({
title: '重新发起',
row: row
})
}
field: 'substation',
title: '厂站名称',
minWidth: 100,
formatter: (row: any) => {
row.cellValue = row.cellValue ? row.cellValue : '/'
return row.cellValue
}
},
{ field: 'projectName', title: '项目名称', minWidth: 170 },
{
field: 'userType',
title: '用户性质',
minWidth: 150,
formatter: (obj: any) => {
const userType = obj.row.userType
return getUserTypeName(userType)
}
},
{ field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{
field: 'userStatus',
title: '用户状态',
minWidth: 100,
render: 'tag',
custom: {
0: 'primary',
1: 'primary',
2: 'success',
3: 'warning'
},
replaceValue: {
0: '可研',
1: '建设',
2: '运行',
3: '退运'
}
},
{
name: 'cancel',
title: '取消',
type: 'danger',
icon: 'el-icon-Open',
render: 'basicButton',
disabled: row => {
return row.createBy != adminInfo.$state.id || row.status != 1
},
click: row => {
cancelLeave(row)
}
field: 'status',
title: '流程状态',
minWidth: 100,
render: 'tag',
custom: {
0: 'warning',
1: 'primary',
2: 'success',
3: 'danger',
4: 'warning'
},
replaceValue: {
0: '待提交审批',
1: '审批中',
2: '审批通过',
3: '审批不通过',
4: '已取消'
}
},
{ field: 'createTime', title: '开始时间', minWidth: 170 },
{
field: 'createBy',
title: '填报人',
minWidth: 80,
formatter: (row: any) => {
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
}
},
{
title: '操作',
minWidth: 150,
fixed: 'right',
render: 'buttons',
buttons: [
{
name: 'productSetting',
title: '流程详情',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
disabled: row => {
return !row.processInstanceId
},
click: row => {
flag.value = true
handleAudit(row.processInstanceId, row.historyInstanceId)
}
},
{
name: 'edit',
title: '编辑',
type: 'primary',
icon: 'el-icon-Open',
render: 'basicButton',
showDisabled: row => {
return row.createBy != adminInfo.$state.id || !(row.status == 0)
},
disabled: row => {
return !(row.status == 0)
},
click: row => {
addForms.value.open({
title: '编辑',
row: row
})
}
},
{
name: 'edit',
title: '重新发起',
type: 'warning',
icon: 'el-icon-Open',
render: 'basicButton',
disabled: row => {
return row.createBy != adminInfo.$state.id || !(row.status == 3 || row.status == 4)
},
click: row => {
addForms.value.open({
title: '重新发起',
row: row
})
}
},
{
name: 'cancel',
title: '取消',
type: 'danger',
icon: 'el-icon-Open',
render: 'basicButton',
disabled: row => {
return row.createBy != adminInfo.$state.id || row.status != 1
},
click: row => {
cancelLeave(row)
}
}
]
}
]
}
],
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.relationUserName = tableStore.table.params.userName
}
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.relationUserName = tableStore.table.params.userName
},
exportProcessingData: () => {
tableStore.table.allData = tableStore.table.allData.filter(item => {
item.userStatus =
item.userStatus == 0 ? '可研' : item.userStatus == 1 ? '建设' : item.userStatus == 2 ? '运行' : '退运'
item.status =
item.status == 0
? '待提交审批'
: item.status == 1
? '审批中'
: item.status == 2
? '审批通过'
: item.status == 3
? '审批不通过'
: '已取消'
return item
})
}
})
tableStore.table.params.city = ''
tableStore.table.params.projectName = ''
@@ -238,167 +270,162 @@ tableStore.table.params.status = ''
provide('tableStore', tableStore)
// 新增
const addList = () => {
addRef.value.open()
addRef.value.open()
}
// 禁止点击
const checkboxConfig = reactive({
checkMethod: ({ row }) => {
return adminInfo.roleCode.includes('delete_info')
? true
: row.createBy == adminInfo.$state.id && row.status == 0
}
checkMethod: ({ row }) => {
return adminInfo.roleCode.includes('delete_info')
? true
: row.createBy == adminInfo.$state.id && row.status == 0
}
})
const deleteEven = () => {
if (tableStore.table.selection.length == 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
} else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({
type: 'success',
message: '删除成功!'
})
tableStore.index()
if (tableStore.table.selection.length == 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
})
}
} else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({
type: 'success',
message: '删除成功!'
})
tableStore.index()
})
})
}
}
const addForms = ref()
const addFormModel = () => {
show.value = true
setTimeout(() => {
addForms.value.open({
title: '用户档案录入'
})
}, 0)
show.value = true
setTimeout(() => {
addForms.value.open({
title: '用户档案录入'
})
}, 0)
}
// 导出
const exportEvent = () => {
let form = JSON.parse(JSON.stringify(tableStore.table.params))
form.pageNum = 1
form.pageSize = tableStore.table.total
getLoadTypeUserList(form).then(res => {
tableRef.value.getRef().exportData({
filename: '未建档非线性用户', // 文件名字
sheetName: 'Sheet1',
type: 'xlsx', //导出文件类型 xlsx 和 csv
useStyle: true,
data: res.data.records, // 数据源 // 过滤那个字段导出
columnFilterMethod: function (column: any) {
return !(column.$columnIndex === 0)
}
let form = JSON.parse(JSON.stringify(tableStore.table.params))
form.pageNum = 1
form.pageSize = tableStore.table.total
getLoadTypeUserList(form).then(res => {
tableRef.value.getRef().exportData({
filename: '未建档非线性用户', // 文件名字
sheetName: 'Sheet1',
type: 'xlsx', //导出文件类型 xlsx 和 csv
useStyle: true,
data: res.data.records, // 数据源 // 过滤那个字段导出
columnFilterMethod: function (column: any) {
return !(column.$columnIndex === 0)
}
})
})
})
}
/**取消流程操作*/
const cancelLeave = async (row: any) => {
// 二次确认
const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputType: 'textarea',
inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格
inputErrorMessage: '取消原因不能为空'
})
// 发起取消
let data = {
id: row.id,
processInstanceId: row.processInstanceId,
reason: value
}
await cancelFormData(data)
ElMessage.success('取消成功')
// 加载数据
tableStore.index()
// 二次确认
const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputType: 'textarea',
inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格
inputErrorMessage: '取消原因不能为空'
})
// 发起取消
let data = {
id: row.id,
processInstanceId: row.processInstanceId,
reason: value
}
await cancelFormData(data)
ElMessage.success('取消成功')
// 加载数据
tableStore.index()
}
onMounted(() => {
tableStore.index()
tableStore.index()
})
watch(
() => currentRoute.value.path,
() => {
if (flag.value && options.history.state.forward?.split('/')[1] == 'bpm') {
tableStore.index()
flag.value = false
() => currentRoute.value.path,
() => {
if (flag.value && options.history.state.forward?.split('/')[1] == 'bpm') {
tableStore.index()
flag.value = false
}
},
{
deep: true
}
},
{
deep: true
}
)
/** 处理审批按钮 */
const handleAudit = (instanceId: any, historyInstanceId: any) => {
push({
name: 'BpmProcessInstanceDetail',
state: {
id: instanceId,
historyInstanceId
}
})
push({
name: 'BpmProcessInstanceDetail',
state: {
id: instanceId,
historyInstanceId
}
})
}
/**获取用户性质*/
const getUserTypeName = (userType: any) => {
if (userType === 0) {
if (userType === 0) {
return '新建电网工程'
}
if (userType === 1) {
return '扩建电网工程'
}
if (userType === 2) {
return '新建非线性负荷用户'
}
if (userType === 3) {
return '扩建非线性负荷用户'
}
if (userType === 4) {
return '新建新能源发电站'
}
if (userType === 5) {
return '扩建新能源发电站'
}
if (userType === 6) {
return '敏感及重要用户'
}
return '新建电网工程'
}
if (userType === 1) {
return '扩建电网工程'
}
if (userType === 2) {
return '新建非线性负荷用户'
}
if (userType === 3) {
return '扩建非线性负荷用户'
}
if (userType === 4) {
return '新建新能源发电站'
}
if (userType === 5) {
return '扩建新能源发电站'
}
if (userType === 6) {
return '敏感及重要用户'
}
return '新建电网工程'
}
const props = defineProps({ id: { type: String, default: 'null' } })
watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0]
let nowTime = Date.now()
const routeTime = Number(newValue.split('@')[1])
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getUserReportById(fullId).then(res => {
if (res && res.code == 'A0000') {
addForms.value.open({
title: '重新发起',
row: res.data
})
}
})
}, { immediate: true })
watch(
() => props.id,
async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0]
let nowTime = Date.now()
const routeTime = Number(newValue.split('@')[1])
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getUserReportById(fullId).then(res => {
if (res && res.code == 'A0000') {
addForms.value.open({
title: '重新发起',
row: res.data
})
}
})
},
{ immediate: true }
)
</script>
<style scoped lang='scss'></style>
<style scoped lang="scss"></style>