修改 电网一张图bug 技术监督新增 重新发起页面绘制

This commit is contained in:
GGJ
2024-06-02 17:55:37 +08:00
parent 91fa1f60e3
commit c7025c615f
16 changed files with 668 additions and 463 deletions

View File

@@ -23,7 +23,6 @@ export const submitGoNet = (data: any) => {
})
}
export const userReportGoNetById = (data: any) => {
return createAxios({
url: '/supervision-boot/userReportNormal/userReportGoNetById',
@@ -31,4 +30,11 @@ export const userReportGoNetById = (data: any) => {
params: data
})
}
// 根据id获取用户档案录入的详细数据
export const getById = (data: any) => {
return createAxios({
url: '/supervision-boot/userReport/getById',
method: 'get',
params: data
})
}

View File

@@ -116,7 +116,7 @@ body,
align-items: center !important;
}
.el-upload-list__item-name {
width: 120px !important;
width: 150px !important;
}
.el-upload-list--text {
margin: 0px 20px 0 !important;

View File

@@ -124,7 +124,7 @@ const tableStore = new TableStore({
3: 'info'
},
replaceValue: {
0: '禁用',
0: '中断',
1: '正常',
3: '/'
}

View File

@@ -124,7 +124,7 @@ const tableStore = new TableStore({
3: 'info'
},
replaceValue: {
0: '禁用',
0: '中断',
1: '正常',
3: '/'
}

View File

@@ -4,32 +4,143 @@
<div>
<vxe-table v-bind="defaultAttribute" ref="vxeRef" height="300px" :data="tableData">
<vxe-column field="deptName" title="地市" />
<vxe-column field="assessData" title="综合评估得分" :formatter="formatter" />
<vxe-column field="qualifyData" title="指标合格率(%)" :formatter="formatter" />
<vxe-column field="assessLevel" title="综合评估结论">
<template #default="scope">
<span
class="conclusion"
:class="
scope.row.assessLevel == '特质'
? 'background1'
: scope.row.assessLevel == '较差'
? 'background2'
: scope.row.assessLevel == '极差'
? 'background3'
: ''
"
>
{{ scope.row.assessLevel }}
</span>
</template>
</vxe-column>
<vxe-column field="qualifyData" title="指标合格率(%)" />
<vxe-colgroup title="电压偏差">
<vxe-column field="vdevAssessData" title="评估得分" :formatter="formatter" />
<vxe-column field="vdevQualifyData" title="指标合格率(%)" :formatter="formatter" />
<vxe-column field="vdevAssessLevel" title="评估结论">
<template #default="scope">
<span
class="conclusion"
:class="
scope.row.vdevAssessLevel == '特质'
? 'background1'
: scope.row.vdevAssessLevel == '较差'
? 'background2'
: scope.row.vdevAssessLevel == '极差'
? 'background3'
: ''
"
>
{{ scope.row.vdevAssessLevel }}
</span>
</template>
</vxe-column>
<vxe-column field="vdevQualifyData" title="指标合格率(%)" />
</vxe-colgroup>
<vxe-colgroup title="频率偏差">
<vxe-column field="freqAssessData" title="评估得分" :formatter="formatter" />
<vxe-column field="freqQualifyData" title="指标合格率(%)" :formatter="formatter" />
<vxe-column field="freqAssessLevel" title="评估结论">
<template #default="scope">
<span
class="conclusion"
:class="
scope.row.freqAssessLevel == '特质'
? 'background1'
: scope.row.freqAssessLevel == '较差'
? 'background2'
: scope.row.freqAssessLevel == '极差'
? 'background3'
: ''
"
>
{{ scope.row.freqAssessLevel }}
</span>
</template>
</vxe-column>
<vxe-column field="freqQualifyData" title="指标合格率(%)" />
</vxe-colgroup>
<vxe-colgroup title="电压总谐波畸变率">
<vxe-column field="harmAssessData" title="评估得分" :formatter="formatter" />
<vxe-column field="harmQualifyData" title="指标合格率(%)" :formatter="formatter" />
<vxe-column field="harmAssessLevel" title="评估结论">
<template #default="scope">
<span
class="conclusion"
:class="
scope.row.harmAssessLevel == '特质'
? 'background1'
: scope.row.harmAssessLevel == '较差'
? 'background2'
: scope.row.harmAssessLevel == '极差'
? 'background3'
: ''
"
>
{{ scope.row.harmAssessLevel }}
</span>
</template>
</vxe-column>
<vxe-column field="harmQualifyData" title="指标合格率(%)" />
</vxe-colgroup>
<vxe-colgroup title="电压闪变">
<vxe-column field="flickerAssessData" title="评估得分" :formatter="formatter" />
<vxe-column field="flickerQualifyData" title="指标合格率(%)" :formatter="formatter" />
<vxe-column field="flickerAssessLevel" title="评估结论">
<template #default="scope">
<span
class="conclusion"
:class="
scope.row.flickerAssessLevel == '特质'
? 'background1'
: scope.row.flickerAssessLevel == '较差'
? 'background2'
: scope.row.flickerAssessLevel == '极差'
? 'background3'
: ''
"
>
{{ scope.row.flickerAssessLevel }}
</span>
</template>
</vxe-column>
<vxe-column field="flickerQualifyData" title="指标合格率(%)" />
</vxe-colgroup>
<vxe-colgroup title="三相电压不平衡度">
<vxe-column field="unbalanceAssessData" title="评估得分" :formatter="formatter" />
<vxe-column field="unbalanceQualifyData" title="指标合格率(%)" :formatter="formatter" />
<vxe-column field="unbalanceAssessLevel" title="评估结论">
<template #default="scope">
<span
class="conclusion"
:class="
scope.row.unbalanceAssessLevel == '特质'
? 'background1'
: scope.row.unbalanceAssessLevel == '较差'
? 'background2'
: scope.row.unbalanceAssessLevel == '极差'
? 'background3'
: ''
"
>
{{ scope.row.unbalanceAssessLevel }}
</span>
</template>
</vxe-column>
<vxe-column field="unbalanceQualifyData" title="指标合格率(%)" />
</vxe-colgroup>
</vxe-table>
</div>
<div style="height: 300px; margin-top: 10px">
<div style="height: 300px; margin-top: 10px; position: relative" v-loading="loading">
<el-select
v-model="time"
size="small"
style="width: 50px; position: absolute; top: 20px; right: 20px; z-index: 1"
@change="analysis"
>
<el-option label="年" value="1" />
<el-option label="月" value="3" />
</el-select>
<MyEChart style="height: 300px" :options="picEChart" />
</div>
</el-dialog>
@@ -40,7 +151,9 @@ import MyEChart from '@/components/echarts/MyEchart.vue'
import { defaultAttribute } from '@/components/table/defaultAttribute'
import { getAssessDetail, getAssessTrend } from '@/api/device-boot/panorama'
const dialogVisible: any = ref(false)
const rowList: any = ref({})
const time = ref('1')
const loading = ref(false)
const tableData: any = ref([])
const picEChart = ref()
@@ -48,7 +161,14 @@ const open = async (row: any) => {
getAssessDetail(row).then(res => {
tableData.value = res.data
})
getAssessTrend(row).then(res => {
rowList.value = row
analysis(1)
dialogVisible.value = true
}
const analysis = (e: any) => {
loading.value = true
let time = rowList.value.searchBeginTime.slice(0, 4) + `-01-01`
getAssessTrend({ ...rowList.value, searchBeginTime: time, type: e }).then(res => {
picEChart.value = {
title: {
text: '各地市综合评估趋势对比'
@@ -57,9 +177,11 @@ const open = async (row: any) => {
name: '时间',
data: res.data[0].children.map((item: any) => item.dataTime)
},
grid: {
bottom: '10px'
},
yAxis: {
name: ''
},
@@ -85,16 +207,8 @@ const open = async (row: any) => {
data: item
})
})
loading.value = false
})
dialogVisible.value = true
}
const formatter = (row: any) => {
if (row.cellValue == 3.14159) {
return '/'
} else {
return row.cellValue
}
}
defineExpose({ open })
@@ -103,4 +217,27 @@ defineExpose({ open })
:deep(.el-dialog__body) {
max-height: none !important;
}
.conclusion {
display: inline-block;
padding: 0 10px;
height: 24px;
line-height: 24px;
border-radius: 4px;
}
.background1 {
background-color: #339966;
color: #fff;
}
.background2 {
background-color: #97017e;
color: #fff;
}
.background3 {
background-color: #cc0000;
color: #fff;
}
:deep(.el-select) {
min-width: 80px !important;
}
</style>

View File

@@ -96,21 +96,45 @@
<el-col :span="12" style="display: flex">
<div>
综合评估得分:
<span style="color: #299edf">
{{ dropList.assessData == 3.14159 ? '--' : dropList.assessData }}
<span
class="conclusion"
:class="
dropList.assessData == '特质'
? 'background1'
: dropList.assessData == '较差'
? 'background2'
: dropList.assessData == '极差'
? 'background3'
: ''
"
>
{{ dropList.assessData }}
</span>
</div>
</el-col>
</el-row>
<el-row style="width: 96%" v-for="(item, i) in evaluationData" class="row pb5">
<el-row style="width: 96%" v-for="(item, i) in evaluationData" class="row pb4 pt3">
<el-col :span="14" style="display: flex">
<img :src="url[i]" />
<span>{{ item.targetName }}</span>
<span style="line-height: 20px">{{ item.targetName }}</span>
</el-col>
<el-col :span="10" style="display: flex">
<div style="width: 100%">
评估得分
<span style="color: #299edf">{{ item.avg == 3.14159 ? '--' : item.avg }}</span>
<span
class="conclusion"
:class="
item.avg == '特质'
? 'background1'
: item.avg == '较差'
? 'background2'
: item.avg == '极差'
? 'background3'
: ''
"
>
{{ item.avg }}
</span>
</div>
</el-col>
</el-row>
@@ -207,7 +231,7 @@ const open = async (id: string) => {
// 完整性
getTotalIntegrityByLineIds(form).then((res: any) => {
let num = (res.data || 0) / 100
IntegrityNum.value = num
IntegrityNum.value = res.data
ComCharts.value = {
title: {
text: '完整性',
@@ -256,7 +280,7 @@ const open = async (id: string) => {
label: {
normal: {
formatter: () => {
return num * 100 + '%'
return (num * 100).toFixed(2) + '%'
},
textStyle: {
fontSize: 20,
@@ -328,7 +352,7 @@ const open = async (id: string) => {
label: {
normal: {
formatter: () => {
return num * 100 + '%'
return (num * 100).toFixed(2) + '%'
},
textStyle: {
fontSize: 20,
@@ -356,31 +380,31 @@ const open = async (id: string) => {
startTime: datePickerRef.value.timeValue[0],
endTime: datePickerRef.value.timeValue[1]
}).then((res: any) => {
dropList.value.assessData = res.data.assessData
dropList.value.assessData = res.data.assessLevel
evaluationData.value = [
{
targetName: '频率偏差',
avg: res.data.freqAssessData,
avg: res.data.freqAssessLevel,
sd: res.data.freqQualifyData
},
{
targetName: '电压偏差',
avg: res.data.vdevAssessData,
avg: res.data.vdevAssessLevel,
sd: res.data.vdevQualifyData
},
{
targetName: '电压总谐波畸变率',
avg: res.data.harmAssessData,
avg: res.data.harmAssessLevel,
sd: res.data.harmQualifyData
},
{
targetName: '三相电压不平衡度',
avg: res.data.unbalanceAssessData,
avg: res.data.unbalanceAssessLevel,
sd: res.data.unbalanceQualifyData
},
{
targetName: '闪变',
avg: res.data.flickerAssessData,
avg: res.data.flickerAssessLevel,
sd: res.data.flickerQualifyData
}
]
@@ -645,7 +669,7 @@ defineExpose({ open })
display: grid;
grid-template-rows: repeat(5, auto);
.row {
margin: 4px 2%;
margin: 4px 2% 0;
width: 100%;
box-shadow: 1px 1px 1px 1px #e8e3e3;
}
@@ -665,4 +689,23 @@ defineExpose({ open })
margin-left: 3px;
}
}
.conclusion {
display: inline-block;
padding: 0 5px;
height: 20px;
line-height: 20px;
border-radius: 4px;
}
.background1 {
background-color: #339966;
color: #fff;
}
.background2 {
background-color: #97017e;
color: #fff;
}
.background3 {
background-color: #cc0000;
color: #fff;
}
</style>

View File

@@ -329,6 +329,7 @@ const info = async (row: any) => {
numOneList: []
})
})
// 监测点告警
getGridDiagramAreaData(form).then((res: any) => {
let numOne = 0
let numOneList: any = []

View File

@@ -52,7 +52,7 @@
: ''
}"
>
{{ assessList.score }}
{{ assessList.level }}
</span>
</div>
<div class="evaluate">
@@ -80,7 +80,7 @@
: ''
}"
>
{{ item.score == 3.14159 ? '/' : item.score }}
{{ item.level }}
</div>
</div>
</div>

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="dialogFormVisible"
title="用户档案录入"
:title="title"
width="65%"
:append-to-body="true"
:before-close="close"
@@ -161,7 +161,7 @@
<el-select v-model="form.evaluationType" placeholder="请选择评估类型">
<el-option
v-for="(item, index) in evaluationTypeList"
:key="indedx"
:key="index"
:label="item.name"
:value="item.id"
/>
@@ -464,7 +464,13 @@
</template>
</el-upload>
</el-form-item>
<el-form-item class="uploadFile" for="-" label="背景电能质量测试报告:" prop="powerQualityReport">
<el-form-item
class="uploadFile"
for="-"
v-if="form.userType == '6'"
label="背景电能质量测试报告:"
prop="powerQualityReport"
>
<el-upload
v-model:file-list="form.powerQualityReport"
ref="uploadRef"
@@ -501,7 +507,7 @@ import type { ComponentSize, FormInstance, FormRules } from 'element-plus'
import { useAdminInfo } from '@/stores/adminInfo'
import { queryByAllCode } from '@/api/system-boot/dictTree'
import { uploadFile } from '@/api/system-boot/file'
import { submitFormData } from '@/api/supervision-boot/interfere/index'
import { submitFormData, getById } from '@/api/supervision-boot/interfere/index'
defineProps({
openType: {
type: String,
@@ -532,52 +538,53 @@ const evaluationDeptList = dictData.getBasicData('evaluation_dept')
const userTypeList = reactive([
{
label: '新建电网工程',
value: '0'
value: 0
},
{
label: '扩建电网工程',
value: '1'
value: 1
},
{
label: '新建非线性负荷用户',
value: '2'
value: 2
},
{
label: '扩建非线性负荷用户',
value: '3'
value: 3
},
{
label: '新建新能源发电站',
value: '4'
value: 4
},
{
label: '扩建新能源发电站',
value: '5'
value: 5
},
{
label: '敏感及重要用户',
value: '6'
value: 6
}
])
//用户状态数组
const userStateList = reactive([
{
label: '可研',
value: '0'
value: 0
},
{
label: '建设',
value: '1'
value: 1
},
{
label: '运行',
value: '2'
value: 2
},
{
label: '退运',
value: '3'
value: 3
}
])
const title = ref('')
//获取非线性设备类型树形下拉
const defaultProps = {
children: 'children',
@@ -593,7 +600,7 @@ const resetForm = () => {
reportDate: new Date(), //填报日期 1
orgId: '', //填报部门 1
expectedProductionDate: '', //工程预期投产日期 1
userType: '0', //用户性质 1
userType: 0, //用户性质 1
city: areaOptionList[0].name, //所属地市 1
responsibleDepartment: '', //归口管理部门 1
userStatus: userStateList[0].value, //用户状态 1
@@ -684,7 +691,7 @@ const subForm: any = ref({
responsibleDepartment: '', //归口管理部门
substation: '', ////变电站
userStatus: '0', //用户状态
userType: '0', //用户性质
userType: 0, //用户性质
voltageLevel: '',
//userType=='0' '1'
userReportProjectPO: {
@@ -749,286 +756,46 @@ const subForm: any = ref({
//定义校验规则
const rules = ref({
reporter: [
{
required: true,
message: '请输入填报人',
trigger: 'blur'
}
],
reportDate: [
{
required: true,
message: '请选择填报日期',
trigger: 'change'
}
],
orgId: [
{
required: true,
message: '请选择填报部门',
trigger: 'change'
}
],
expectedProductionDate: [
{
required: true,
message: '请选择工程预期投产日期',
trigger: 'change'
}
],
userType: [
{
required: true,
message: '清选择用户性质',
trigger: 'change'
}
],
city: [
{
required: true,
message: '请选择所属地市',
trigger: 'change'
}
],
responsibleDepartment: [
{
required: true,
message: '请输入归口管理部门',
trigger: 'blur'
}
],
userStatus: [
{
required: true,
message: '请选择用户状态',
trigger: 'change'
}
],
projectName: [
{
required: true,
message: '请输入工程名称',
trigger: 'blur'
}
],
substation: [
{
required: true,
message: '请输入变电站',
trigger: 'blur'
}
],
voltageLevel: [
{
required: true,
message: '请选择电压等级',
trigger: 'change'
}
],
evaluationDept: [
{
required: true,
message: '请选择预测评估单位',
trigger: 'change'
}
],
evaluationConclusion: [
{
required: true,
message: '请输入预测评估结论',
trigger: 'blur'
}
],
agreementCapacity: [
{
required: true,
message: '请选择用户协议容量',
trigger: 'blur'
}
],
nonlinearDeviceType: [
{
required: true,
message: '请选择非线性设备类型',
trigger: 'change'
}
],
needGovernance: [
{
required: true,
message: '请选择是否需要治理',
trigger: 'change'
}
],
backgroundTestPerformed: [
{
required: true,
message: '请选择是否开展背景测试',
trigger: 'change'
}
],
state: [
{
required: true,
message: '请选择数据状态',
trigger: 'change'
}
],
pccPoint: [
{
required: true,
message: '请输入PCC点',
trigger: 'blur'
}
],
industry: [
{
required: true,
message: '请选择行业',
trigger: 'change'
}
],
deviceName: [
{
required: true,
message: '请输入敏感装置名称',
trigger: 'blur'
}
],
powerSupplyCount: [
{
required: true,
message: '请输入供电电源数量',
trigger: 'blur'
}
],
energyQualityIndex: [
{
required: true,
message: '请输入敏感电能质量指标',
trigger: 'blur'
}
],
evaluationType: [
{
required: true,
message: '请选择评估类型',
trigger: 'change'
}
],
antiInterferenceTest: [
{
required: true,
message: '请选择是否开展抗扰度测试',
trigger: 'change'
}
],
evaluationChekDept: [
{
required: true,
message: '请输入预测评估审单位',
trigger: 'blur'
}
],
baseShortCircuitCapacity: [
{
required: true,
message: '请输入基准短路容量',
trigger: 'blur'
}
],
minShortCircuitCapacity: [
{
required: true,
message: '请输入系统最小短路容量',
trigger: 'blur'
}
],
pccEquipmentCapacity: [
{
required: true,
message: '请输入PCC供电设备容量',
trigger: 'blur'
}
],
userAgreementCapacity: [
{
required: true,
message: '请输入用户用电协议容量',
trigger: 'blur'
}
],
nonlinearLoadType: [
{
required: true,
message: '请输入非线性负荷类型',
trigger: 'blur'
}
],
substationMainWiringDiagram: [
{
required: true,
message: '请上传用户接入变电站主接线示意图',
trigger: 'change'
}
],
sensitiveDevices: [
{
required: true,
message: '请上传主要敏感设备清单',
trigger: 'change'
}
],
antiInterferenceReport: [
{
required: true,
message: '请上传抗扰度测试报告',
trigger: 'change'
}
],
powerQualityReport: [
{
required: true,
message: '请上传背景电能质量测试报告',
trigger: 'change'
}
],
feasibilityReport: [
{
required: true,
message: '请上传可研报告',
trigger: 'blur'
}
],
preliminaryDesignDescription: [
{
required: true,
message: '请上传项目初步设计说明书',
trigger: 'blur'
}
],
predictionEvaluationReport: [
{
required: true,
message: '请上传预测评估报告',
trigger: 'blur'
}
],
predictionEvaluationReviewOpinions: [
{
required: true,
message: '请上传预测评估评审意见报告',
trigger: 'blur'
}
],
additionalAttachments: [
{
required: false,
message: '请上传其他附件',
trigger: 'blur'
}
]
reporter: [{ required: true, message: '请输入填报人', trigger: 'blur' }],
reportDate: [{ required: true, message: '请选择填报日期', trigger: 'change' }],
orgId: [{ required: true, message: '请选择填报部门', trigger: 'change' }],
expectedProductionDate: [{ required: true, message: '请选择工程预期投产日期', trigger: 'change' }],
userType: [{ required: true, message: '清选择用户性质', trigger: 'change' }],
city: [{ required: true, message: '请选择所属地市', trigger: 'change' }],
responsibleDepartment: [{ required: true, message: '请输入归口管理部门', trigger: 'blur' }],
userStatus: [{ required: true, message: '请选择用户状态', trigger: 'change' }],
projectName: [{ required: true, message: '请输入工程名称', trigger: 'blur' }],
substation: [{ required: true, message: '请输入变电站', trigger: 'blur' }],
voltageLevel: [{ required: true, message: '请选择电压等级', trigger: 'change' }],
evaluationDept: [{ required: true, message: '请选择预测评估单位', trigger: 'change' }],
evaluationConclusion: [{ required: true, message: '请输入预测评估结论', trigger: 'blur' }],
agreementCapacity: [{ required: true, message: '请选择用户协议容量', trigger: 'blur' }],
nonlinearDeviceType: [{ required: true, message: '请选择非线性设备类型', trigger: 'change' }],
needGovernance: [{ required: true, message: '请选择是否需要治理', trigger: 'change' }],
backgroundTestPerformed: [{ required: true, message: '请选择是否开展背景测试', trigger: 'change' }],
state: [{ required: true, message: '请选择数据状态', trigger: 'change' }],
pccPoint: [{ required: true, message: '请输入PCC点', trigger: 'blur' }],
industry: [{ required: true, message: '请选择行业', trigger: 'change' }],
deviceName: [{ required: true, message: '请输入敏感装置名称', trigger: 'blur' }],
powerSupplyCount: [{ required: true, message: '请输入供电电源数量', trigger: 'blur' }],
energyQualityIndex: [{ required: true, message: '请输入敏感电能质量指标', trigger: 'blur' }],
evaluationType: [{ required: true, message: '请选择评估类型', trigger: 'change' }],
antiInterferenceTest: [{ required: true, message: '请选择是否开展抗扰度测试', trigger: 'change' }],
evaluationChekDept: [{ required: true, message: '请输入预测评估审单位', trigger: 'blur' }],
baseShortCircuitCapacity: [{ required: true, message: '请输入基准短路容量', trigger: 'blur' }],
minShortCircuitCapacity: [{ required: true, message: '请输入系统最小短路容量', trigger: 'blur' }],
pccEquipmentCapacity: [{ required: true, message: '请输入PCC供电设备容量', trigger: 'blur' }],
userAgreementCapacity: [{ required: true, message: '请输入用户用电协议容量', trigger: 'blur' }],
nonlinearLoadType: [{ required: true, message: '请输入非线性负荷类型', trigger: 'blur' }],
substationMainWiringDiagram: [{ required: true, message: '请上传用户接入变电站主接线示意图', trigger: 'change' }],
sensitiveDevices: [{ required: true, message: '请上传主要敏感设备清单', trigger: 'change' }],
antiInterferenceReport: [{ required: true, message: '请上传抗扰度测试报告', trigger: 'change' }],
powerQualityReport: [{ required: true, message: '请上传背景电能质量测试报告', trigger: 'change' }],
feasibilityReport: [{ required: true, message: '请上传可研报告', trigger: 'blur' }],
preliminaryDesignDescription: [{ required: true, message: '请上传项目初步设计说明书', trigger: 'blur' }],
predictionEvaluationReport: [{ required: true, message: '请上传预测评估报告', trigger: 'blur' }],
predictionEvaluationReviewOpinions: [{ required: true, message: '请上传预测评估评审意见报告', trigger: 'blur' }],
additionalAttachments: [{ required: false, message: '请上传其他附件', trigger: 'blur' }]
})
watch(
() => form.value,
@@ -1137,8 +904,63 @@ watch(
deep: true
}
)
const open = () => {
const open = async (row: any) => {
title.value = row.title
dialogFormVisible.value = true
if (row.row) {
await getById({ id: row.row.id }).then(res => {
// form.value.userType = res.data.userType
if (res.data.userReportProjectPO != null) {
// userType 0 1
form.value = { ...res.data, ...res.data.userReportProjectPO }
fileRaw(res.data, 'userReportProjectPO')
} else if (res.data.userReportSubstationPO != null) {
// userType 2 3 4 5
form.value = { ...res.data, ...res.data.userReportSubstationPO }
fileRaw(res.data, 'userReportSubstationPO')
} else if (res.data.userReportSensitivePO != null) {
// userType6
form.value = { ...res.data, ...res.data.userReportSensitivePO }
fileRaw(res.data, 'userReportSensitivePO')
}
form.value.orgId = adminInfo.$state.deptName
})
}
}
// 处理上传文件回显
const fileRaw = (row: any, key: string) => {
let list = [
'feasibilityReport',
'preliminaryDesignDescription',
'predictionEvaluationReport',
'predictionEvaluationReviewOpinions',
'additionalAttachments',
'substationMainWiringDiagram',
'sensitiveDevices',
'antiInterferenceReport',
'powerQualityReport'
]
for (let k of list) {
if (row[key][k]) {
form.value[k] = [
{
name: row[key][k].split('/')[2]
}
]
}
}
feasibilityReport.value = row[key].feasibilityReport
preliminaryDesignDescription.value = row[key].preliminaryDesignDescription
predictionEvaluationReport.value = row[key].predictionEvaluationReport
predictionEvaluationReviewOpinions.value = row[key].predictionEvaluationReviewOpinions
additionalAttachments.value = row[key].additionalAttachments
substationMainWiringDiagram.value = row[key].substationMainWiringDiagram
sensitiveDevices.value = row[key].sensitiveDevices
antiInterferenceReport.value = row[key].antiInterferenceReport
powerQualityReport.value = row.powerQualityReport
}
const close = () => {
//重置表单内容
@@ -1189,6 +1011,7 @@ const antiInterferenceReport = ref('')
//背景电能质量测试报告:
const powerQualityReport = ref('')
const choose = (e: any) => {
// console.log('🚀 ~ choose ~ e:', e)
uploadFile(e.raw, '/supervision/').then(res => {
//可研报告
if (uploadName.value == 'feasibilityReport') {
@@ -1235,7 +1058,7 @@ const disabledDate = time => {
}
//提交
const confirmForm = () => {
ruleFormRef.value.validate(valid => {
ruleFormRef.value.validate((valid: any) => {
if (valid) {
//整理上传文件的数据
// userType==0,1
@@ -1395,6 +1218,7 @@ const confirmForm = () => {
}
}
}
if (title.value == '用户档案录入') {
submitFormData(confirmFormData).then(res => {
if (res.code == 'A0000') {
ElMessage({
@@ -1406,6 +1230,9 @@ const confirmForm = () => {
close()
}
})
} else {
console.log(confirmFormData)
}
} else {
console.log('表单验证失败')
return false

View File

@@ -122,7 +122,35 @@ const tableStore = new TableStore({
click: row => {
handleAudit(row.processInstanceId)
}
}
},
// {
// name: 'edit',
// title: '重新发起',
// type: 'warning',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 1 || row.status == 2
// },
// click: row => {
// addForms.value.open({
// title: '重新发起',
// row: row
// })
// }
// },
// {
// name: 'cancel',
// title: '取消',
// type: 'danger',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 3 || row.status == 2 || row.status == 4
// },
// click: row => {
// }
// }
]
}
],
@@ -148,9 +176,10 @@ const addForms = ref()
const addFormModel = () => {
show.value = true
setTimeout(() => {
addForms.value.open()
}, 0);
addForms.value.open({
title: '用户档案录入'
})
}, 0)
}
// 导出

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="dialogFormVisible"
title="技术监督计划"
:title="title"
width="65%"
:append-to-body="true"
:before-close="close"
@@ -197,7 +197,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item for="-" label="其他要求:" style="width:100%;">
<el-form-item for="-" label="其他要求:" style="width: 100%">
<el-input
type="textarea"
v-model="form.otherRemark"
@@ -362,12 +362,13 @@ import { genFileId, ElMessage } from 'element-plus'
import { useDictData } from '@/stores/dictData'
import { useAdminInfo } from '@/stores/adminInfo'
import { uploadFile } from '@/api/system-boot/file'
import { addPlanFormData, getUserByDeptId } from '@/api/supervision-boot/plan/index'
import { addPlanFormData, getUserByDeptId, getPlanDetailsById } from '@/api/supervision-boot/plan/index'
import Area from '@/components/form/area/index.vue'
const emits = defineEmits(['onSubmit'])
const dictData = useDictData()
const dialogFormVisible = ref(false)
const form: any = ref({})
const title = ref('')
const ruleFormRef = ref(null)
// .xls,.xlsx
const acceptType = ''
@@ -556,8 +557,14 @@ watch(
immediate: true
}
)
const open = () => {
const open = (row: any) => {
title.value = row.title
dialogFormVisible.value = true
if (row.row) {
getPlanDetailsById({ id: '861efbc90d1fae8e276f477081dd85fe' }).then(res => {
form.value = res.data
})
}
}
const close = () => {
//重置表单内容
@@ -681,6 +688,7 @@ const confirmForm = () => {
// alarmFeedbackMaterials: alarmFeedbackMaterials.value, //告预警单反馈材料
// assessReport: assessReport.value //评估报告
// }
if (title.value == '技术监督计划') {
addPlanFormData(confirmFormData).then(res => {
if (res.code == 'A0000') {
ElMessage({
@@ -692,6 +700,9 @@ const confirmForm = () => {
close()
}
})
} else {
console.log(confirmFormData)
}
} else {
console.log('表单验证失败')
return false
@@ -700,6 +711,4 @@ const confirmForm = () => {
}
defineExpose({ open })
</script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>

View File

@@ -46,8 +46,9 @@ import addForm from './components/addForm.vue'
import effectProblem from './components/effectProblem/index.vue'
import { planDetailsAudit, sendAlarm } from '@/api/supervision-boot/plan/index'
import { ElMessage } from 'element-plus'
defineOptions({
name: 'supervise/plan'
name: 'plan'
})
// const layout = mainHeight(120) as any
const dictData = useDictData()
@@ -174,6 +175,23 @@ const tableStore = new TableStore({
return !row.processInstanceId
}
},
// {
// name: 'edit',
// title: '重新发起',
// type: 'warning',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 1 || row.status == 2
// },
// click: row => {
// addForms.value.open({
// title: '重新发起',
// row: row
// })
// }
// },
{
name: 'productSetting',
title: '实施问题',
@@ -197,6 +215,20 @@ const tableStore = new TableStore({
handleAudit(row)
}
},
// {
// name: 'cancel',
// title: '取消',
// type: 'danger',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 3 || row.status == 2 || row.status == 4
// },
// click: row => {
// // cancelLeave(row)
// }
// },
{
name: 'productSetting',
title: '发起告警单',
@@ -240,7 +272,9 @@ provide('tableStore', tableStore)
const addForms = ref()
const addFormModel = () => {
setTimeout(() => {
addForms.value.open()
addForms.value.open({
title: '技术监督计划'
})
}, 0)
}
const exportEvent = () => {

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="dialogFormVisible"
title="监测点信息"
:title="title"
width="65%"
:append-to-body="true"
:before-close="close"
@@ -348,12 +348,13 @@
</el-dialog>
</template>
<script lang="ts" setup>
import { ref, onMounted, reactive, defineExpose, defineProps, 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 { genFileId, ElMessage } from 'element-plus'
import { useDictData } from '@/stores/dictData'
import { useAdminInfo } from '@/stores/adminInfo'
import { uploadFile } from '@/api/system-boot/file'
import { getTempLineDetailsById } from '@/api/supervision-boot/monitorpoint/index'
import { getDeviceList } from '@/api/supervision-boot/terminal/index'
import { addMointorPointFormData, getList } from '@/api/supervision-boot/monitorpoint/index'
import { queryByAllCode } from '@/api/system-boot/dictTree'
@@ -362,7 +363,8 @@ const emits = defineEmits(['onSubmit'])
const dictData = useDictData()
const dialogFormVisible = ref(false)
const form: any = ref({})
const ruleFormRef = ref(null)
const title = ref('')
const ruleFormRef:any = ref(null)
// acceptType .doc,.docx,.xlsx,.xls,.pdf
const acceptType = ''
//字典获取所属地市
@@ -435,7 +437,7 @@ const ptTypeList=[
{
id: '2',
name: '开口三角型接法'
},
}
]
//定义线路号下拉框数据
const numList = [
@@ -478,7 +480,7 @@ const numList = [
{
id: '10',
name: '10'
},
}
]
//获取登陆用户姓名和部门
const adminInfo = useAdminInfo()
@@ -548,7 +550,7 @@ const resetForm = () => {
voltageDeviationUpperLimit: '0', // 电压偏差上限
voltageLevel: voltageLevelList[0].id, //监测点电压等级
ptType: ptTypeList[0].id, //接线方式
num:numList[0].id,//线路号
num: numList[0].id //线路号
}
let obj = {}
getList(obj).then(res => {
@@ -567,7 +569,7 @@ const resetForm = () => {
expectedProductionDate: obj.expectedProductionDate,
userName: userNameList.value[0]?.projectName,
userId: userNameList.value[0]?.id,
objName:userNameList.value[0]?.projectName,
objName: userNameList.value[0]?.projectName
}
})
changevoltageDeviationLimit()
@@ -604,13 +606,13 @@ findAllMonitoringTerminalList()
//获取树形图数据
const treeData: any = ref('')
//干扰源类型 取树形图第一层children数据
const loadTypeList = ref([])
const loadTypeList: any = ref([])
//干扰源类别 取树形图第二层children数据
const businessTypeList = ref([])
const businessTypeList: any = ref([])
const getTreeList = () => {
queryByAllCode().then(res => {
treeData.value = [res.data.find(item => item.code == 'Major_Nonlinear_Device')]
treeData.value[0].children.map(item => {
treeData.value = [res.data.find((item: any) => item.code == 'Major_Nonlinear_Device')]
treeData.value[0].children.map((item: any) => {
//干扰源类型数据
loadTypeList.value.push({
id: item?.id,
@@ -632,7 +634,7 @@ const changeLoadType = async () => {
}
//选择关联干扰源回显数据
const changeUserName = () => {
let obj = projectList.value.find(item => {
let obj: any = projectList.value.find((item: any) => {
return form.value.userName == item.id
})
form.value = {
@@ -873,10 +875,28 @@ watch(
immediate: true
}
)
const open = () => {
const open = (row: any) => {
dialogFormVisible.value = true
//初始化数据
resetForm()
title.value = row.title
nextTick(() => {
if (row.row) {
getTempLineDetailsById({ id: row.row.id }).then(res => {
form.value = res.data
form.value.loadType = loadTypeList.value.filter((item: any) => item.name == res.data.loadType)[0]?.id
form.value.businessType = businessTypeList.value.filter(
(item: any) => item.name == res.data.businessType
)[0]?.id
form.value.mainWiringDiagram = [
{
name: res.data.mainWiringDiagram.split('/')[2]
}
]
mainWiringDiagram.value = res.data.mainWiringDiagram
})
}
})
}
const close = () => {
//重置表单内容
@@ -951,8 +971,8 @@ const confirmForm = () => {
ptRatio: form.value.ptRatio / form.value.ptRatio2, //PT变比
ctRatio: form.value.ctRatio / form.value.ctRatio2 //CT变比
}
if (title.value == '监测点信息') {
addMointorPointFormData(confirmFormData).then(res => {
if (res.code == 'A0000') {
ElMessage({
message: '新增成功',
type: 'success'
@@ -960,8 +980,9 @@ const confirmForm = () => {
ruleFormRef.value.resetFields()
resetForm()
close()
}
})
} else {
}
} else {
console.log('表单验证失败')
return false

View File

@@ -96,7 +96,36 @@ const tableStore = new TableStore({
click: row => {
handleAudit(row.processInstanceId)
}
}
},
// {
// name: 'edit',
// title: '重新发起',
// type: 'warning',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 1 || row.status == 2
// },
// click: row => {
// addForms.value.open({
// title: '重新发起',
// row: row
// })
// }
// },
// {
// name: 'cancel',
// title: '取消',
// type: 'danger',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 3 || row.status == 2 || row.status == 4
// },
// click: row => {
// // cancelLeave(row)
// }
// }
]
}
],
@@ -116,7 +145,9 @@ provide('tableStore', tableStore)
const addForms = ref()
const addFormModel = () => {
setTimeout(() => {
addForms.value.open()
addForms.value.open({
title: '监测点信息'
})
}, 0)
}

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
v-model="dialogFormVisible"
title="终端信息"
:title="title"
width="65%"
:append-to-body="true"
:before-close="close"
@@ -405,8 +405,8 @@
<el-form-item for="-" label="对时功能:" prop="timeSyncFunction">
<!-- 默认值 开启 -->
<el-radio-group v-model="form.timeSyncFunction">
<el-radio value="1">开启</el-radio>
<el-radio value="0">关闭</el-radio>
<el-radio :value="1">开启</el-radio>
<el-radio :value="0">关闭</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item for="-" label="电镀功能:" prop="electroplatingFunction">
@@ -446,7 +446,6 @@
</el-form-item>
<!-- </div> -->
<el-divider content-position="left">附件材料</el-divider>
<!-- <div id="part3" class="form-two"> -->
<el-form-item for="-" label="信息安全检测报告:" class="uploadFile" prop="informationSecurityTestReport">
<el-upload
v-model:file-list="form.informationSecurityTestReport"
@@ -573,8 +572,6 @@
</template>
</el-upload>
</el-form-item>
<!-- </div> -->
<!-- </el-tabs> -->
</el-form>
<template #footer>
<div class="dialog-footer">
@@ -596,13 +593,14 @@ import { useAdminInfo } from '@/stores/adminInfo'
import { uploadFile } from '@/api/system-boot/file'
import { addTerminalFormData, getSubstationVoltageLevel } from '@/api/supervision-boot/terminal/index'
import { getAllDeptList } from '@/api/common'
import { formatDate } from '@/utils/formatTime'
import { getTerminalDetailsById } from '@/api/supervision-boot/terminal/index'
import { nodeAllList } from '@/api/device-boot/Business'
const emits = defineEmits(['onSubmit'])
const dictData = useDictData()
const dialogFormVisible = ref(false)
const form: any = ref({})
const ruleFormRef = ref(null)
const ruleFormRef: any = ref(null)
const title = ref('')
// acceptType .xls,.xlsx
const acceptType = ''
//字典获取所属地市
@@ -668,6 +666,7 @@ const terminalModelList = [
name: '离线'
}
]
const substationList: any = ref([])
//字典获取通讯类型
const frontTypeList = dictData.getBasicData('Front_Type')
//定义通讯状态下拉框数据
@@ -706,18 +705,18 @@ const summonFlagList = [
//定义电镀功能下拉框数据
const electroplatingFunctionList = [
{
id: '0',
id: 0,
name: '关闭'
},
{
id: '1',
id: 1,
name: '开启'
}
]
//获取登陆用户姓名和部门
const adminInfo = useAdminInfo()
//获取所属前置机数据
const frontEndMachineList = ref([])
const frontEndMachineList: any = ref([])
const getFrontEndMachineList = () => {
nodeAllList().then(res => {
frontEndMachineList.value = res.data
@@ -727,7 +726,7 @@ const changeSubstationFlag = () => {
console.log(form.value.customSubstaionFlag)
//处理所属变电站手都输入/下拉数据
if (form.value.customSubstaionFlag == '0') {
form.value.substationName = substationList.value.find(item => {
form.value.substationName = substationList.value.find((item: any) => {
return form.value.substation == item.id
})?.name
} else {
@@ -740,7 +739,7 @@ watch(
() => form.value.substation,
(val, oldVal) => {
if (val) {
form.value.substationName = substationList.value.find(item => {
form.value.substationName = substationList.value.find((item: any) => {
return form.value.substation == item.id
})?.name
}
@@ -752,7 +751,7 @@ watch(
)
getFrontEndMachineList()
//定义所属供电公司数据
const powerCompanyList = ref([])
const powerCompanyList: any = ref([])
//获取所属供电公司,区域列表第三层数据
const getPowerCompanyList = async () => {
getAllDeptList().then(res => {
@@ -763,7 +762,7 @@ const getPowerCompanyList = async () => {
})
}
//根据所选供电公司查询所选获取变电站与变电站电压等级
const substationList = ref([])
const findSubstationVoltageLevel = async () => {
getSubstationVoltageLevel({ orgIds: [form.value.powerCompany] }).then(res => {
substationList.value = res.data
@@ -773,7 +772,7 @@ const findSubstationVoltageLevel = async () => {
}
//变电站选择的时候切换变电站电压等级
const changeSubstation = async () => {
let obj = substationList.value.find(item => item.id == form.value.substation)
let obj = substationList.value.find((item: any) => item.id == form.value.substation)
form.value.substationVoltageLevel = obj?.voltageLevel
}
const containerRef = ref<HTMLElement | null>(null)
@@ -781,7 +780,7 @@ const containerRef = ref<HTMLElement | null>(null)
const handleClick = (e: MouseEvent) => {
e.preventDefault()
}
const resetForm = async () => {
const resetForm: any = async () => {
form.value = {
reporter: '', //填报人
reportDate: new Date(), //填报日期
@@ -831,7 +830,7 @@ const resetForm = async () => {
terminalSecretKey: '', //终端秘钥
terminalType: terminalTypeList[0].id, // 终端型号
terminalWiringMethodType: terminalWiringMethodTypeList[0].id, // 终端接线方式类型
timeSyncFunction: '0', // 对时功能
timeSyncFunction: 0, // 对时功能
voltageTransformerType: voltageTransformerTypeList[0].id //电压互感器类型
}
form.value.reporter = adminInfo.$state.name
@@ -841,7 +840,7 @@ const resetForm = async () => {
//初始化数据
resetForm()
//终端信息表单格式
const devReportForm = ref({
const devReportForm: any = ref({
reporter: '', //填报人
reportDate: new Date(), //填报日期
orgId: '', //填报部门
@@ -893,7 +892,7 @@ const devReportForm = ref({
terminalSecretKey: '', //终端秘钥
terminalType: terminalTypeList[0].id, // 终端型号
terminalWiringMethodType: terminalWiringMethodTypeList[0].id, // 终端接线方式类型
timeSyncFunction: '0', // 对时功能
timeSyncFunction: 0, // 对时功能
voltageTransformerType: voltageTransformerTypeList[0].id //电压互感器类型
}
})
@@ -1344,9 +1343,43 @@ const disabledDate = time => {
}
const activeName = ref('0')
const open = async () => {
getPowerCompanyList()
const open = async (row: any) => {
await getPowerCompanyList()
title.value = row.title
dialogFormVisible.value = true
if (row.row) {
await getTerminalDetailsById({ id: row.row.id }).then((res: any) => {
form.value = { customSubstaionFlag: '0', ...res.data, ...res.data.supervisionTempDeviceReport }
let list = [
'deviceFilePath',
'acceptanceInspectionReportSingle',
'acceptanceInspectionReport',
'typeExperimentReport',
'factoryInspectionReport',
'performanceTestReport',
'informationSecurityTestReport',
'otherAttachments'
]
for (let k of list) {
if (res.data[k]) {
form.value[k] = [
{
name: res.data[k].split('/')[2]
}
]
}
}
form.value.orgId = adminInfo.$state.deptName
deviceFilePath.value = res.data.deviceFilePath
acceptanceInspectionReportSingle.value = res.data.acceptanceInspectionReportSingle
acceptanceInspectionReport.value = res.data.acceptanceInspectionReport
typeExperimentReport.value = res.data.typeExperimentReport
factoryInspectionReport.value = res.data.factoryInspectionReport
performanceTestReport.value = res.data.performanceTestReport
informationSecurityTestReport.value = res.data.informationSecurityTestReport
otherAttachments.value = res.data.otherAttachments
})
}
}
const close = async () => {
//重置表单内容
@@ -1413,7 +1446,8 @@ const confirmForm = () => {
typeExperimentReport: typeExperimentReport.value, //型式实验报告
otherAttachments: otherAttachments?.value //其他附件
}
addTerminalFormData(confirmFormData).then(res => {
if (title.value == '终端信息') {
addTerminalFormData(confirmFormData).then((res: any) => {
if (res.code == 'A0000') {
ElMessage({
message: '新增成功',
@@ -1424,6 +1458,9 @@ const confirmForm = () => {
close()
}
})
} else {
console.log(confirmFormData)
}
} else {
console.log('表单验证失败')
return false

View File

@@ -110,7 +110,36 @@ const tableStore = new TableStore({
click: row => {
handleAudit(row.processInstanceId)
}
}
},
// {
// name: 'edit',
// title: '重新发起',
// type: 'warning',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 1 || row.status == 2
// },
// click: row => {
// addForms.value.open({
// title: '重新发起',
// row: row
// })
// }
// },
// {
// name: 'cancel',
// title: '取消',
// type: 'danger',
// icon: 'el-icon-Open',
// render: 'basicButton',
// disabled: row => {
// return row.status == 3 || row.status == 2 || row.status == 4
// },
// click: row => {
// // cancelLeave(row)
// }
// }
]
}
],
@@ -129,9 +158,10 @@ provide('tableStore', tableStore)
const addForms = ref()
const addFormModel = () => {
setTimeout(() => {
addForms.value.open()
}, 0);
addForms.value.open({
title: '终端信息'
})
}, 0)
}
const exportEvent = () => {