冀北项目添加表格导出功能 技术监督添加下载模版上传功能
This commit is contained in:
@@ -67,6 +67,16 @@ export const downloadSensitiveReportTemplate = () => {
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 下载技术监督模版
|
||||
*/
|
||||
export const downloadPlanTemplate = () => {
|
||||
return createAxios({
|
||||
url: '/supervision-boot/surveyPlan/downloadPlanTemplate',
|
||||
method: 'GET',
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入敏感及重要用户数据
|
||||
@@ -90,6 +100,17 @@ export const importSensitiveReportData = (data: any) => {
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 批量导入技术监督数据
|
||||
*/
|
||||
export const importPlanData = (data: any) => {
|
||||
return createAxios({
|
||||
url: '/supervision-boot/surveyPlan/importPlanData',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量导入终端台账入网
|
||||
|
||||
@@ -63,7 +63,7 @@ interface Props {
|
||||
showSearch?: boolean
|
||||
nextFlag?: boolean //控制时间是否可以往后推
|
||||
theCurrentTime?: boolean //控制时间前3天展示上个月时间
|
||||
showReset?: boolean //控制时间前3天展示上个月时间
|
||||
showReset?: boolean //是否显示重置按钮
|
||||
showExport?: boolean //导出控制
|
||||
showTimeAll?: boolean //控制时间是否显示
|
||||
|
||||
|
||||
@@ -117,13 +117,13 @@ watch(
|
||||
if (tableStore.table.allFlag) {
|
||||
|
||||
tableRef.value?.exportData({
|
||||
filename: document.querySelectorAll('.ba-nav-tab.active')[0].textContent || '', // 文件名字
|
||||
filename:tableStore.table.filename|| document.querySelectorAll('.ba-nav-tab.active')[0].textContent || '', // 文件名字
|
||||
sheetName: 'Sheet1',
|
||||
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||
useStyle: true,
|
||||
data: tableStore.table.allData, // 数据源 // 过滤那个字段导出
|
||||
columnFilterMethod: function (column: any) {
|
||||
|
||||
|
||||
return !(column.column.title === undefined || column.column.title === '序号' || column.column.title === '操作')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -24,24 +24,31 @@ const info = (id: any) => {
|
||||
if (VITE_FLAG) {
|
||||
res.data.forEach((item: any) => {
|
||||
item.icon = 'el-icon-Menu'
|
||||
item.plevel = item.level
|
||||
item.level = 0
|
||||
item.children.forEach((item2: any) => {
|
||||
item2.icon = 'el-icon-HomeFilled'
|
||||
|
||||
item2.plevel = item2.level
|
||||
item2.level = 100
|
||||
expanded.value.push(item2.id)
|
||||
item2.children.forEach((item3: any) => {
|
||||
item3.icon = 'el-icon-CollectionTag'
|
||||
item3.plevel = item3.level
|
||||
item3.level = 200
|
||||
item3.children.forEach((item4: any) => {
|
||||
item4.icon = 'el-icon-Flag'
|
||||
item4.plevel = item4.level
|
||||
item4.level = 300
|
||||
// arr.push(item4)
|
||||
item4.children.forEach((item5: any) => {
|
||||
item5.icon = 'el-icon-OfficeBuilding'
|
||||
item5.plevel = item5.level
|
||||
item5.level = 300
|
||||
// item5.id = item4.id
|
||||
item5.children.forEach((item6: any) => {
|
||||
item6.icon = 'el-icon-HelpFilled'
|
||||
item6.plevel = 4
|
||||
if (item6.name == '电网侧' && item6.children.length == 0) {
|
||||
item6.level = 400
|
||||
} else {
|
||||
@@ -49,15 +56,19 @@ const info = (id: any) => {
|
||||
}
|
||||
item6.children.forEach((item7: any) => {
|
||||
item7.icon = 'el-icon-Film'
|
||||
item7.plevel = item7.level
|
||||
item7.level = 400
|
||||
item7.children.forEach((item8: any) => {
|
||||
item8.icon = 'el-icon-Collection'
|
||||
item8.plevel = item8.level
|
||||
item8.level = 500
|
||||
item8.children.forEach((item9: any) => {
|
||||
item9.icon = 'el-icon-Share'
|
||||
item9.plevel = item9.level
|
||||
item9.level = 600
|
||||
item9.children.forEach((item10: any) => {
|
||||
item10.icon = 'el-icon-Location'
|
||||
item10.plevel = item10.level
|
||||
item10.level = 700
|
||||
})
|
||||
})
|
||||
@@ -90,7 +101,7 @@ const info = (id: any) => {
|
||||
item4.children.forEach((item5: any) => {
|
||||
item5.icon = 'el-icon-OfficeBuilding'
|
||||
item5.plevel = item5.level
|
||||
item5.level = (item5.level == 7 ? 4 : item5.level+1) * 100
|
||||
item5.level = (item5.level == 7 ? 4 : item5.level + 1) * 100
|
||||
item5.children.forEach((item6: any) => {
|
||||
item6.icon = 'el-icon-Film'
|
||||
item6.plevel = item6.level
|
||||
|
||||
@@ -3,9 +3,50 @@ const dataProcessing = (arr: any[]) => {
|
||||
.filter(item => typeof item === 'number' || (typeof item === 'string' && !isNaN(parseFloat(item))))
|
||||
.map(item => (typeof item === 'number' ? item : parseFloat(item)))
|
||||
}
|
||||
const calculateValue = (o:number,value: number, num: number, isMin: boolean) => {
|
||||
if (value === 0) {
|
||||
return 0
|
||||
}else if(value>0&& Math.abs(value)<1 && isMin==true){
|
||||
return 0
|
||||
}else if(value>-1&& value<0 && isMin==false){
|
||||
return 0
|
||||
}
|
||||
let base
|
||||
if (Math.abs(o) >= 100) {
|
||||
base = 100
|
||||
} else if (Math.abs(o) >= 10) {
|
||||
base = 10
|
||||
} else if (Math.abs(o) >= 1) {
|
||||
base = 1
|
||||
} else {
|
||||
base = 0.1
|
||||
}
|
||||
let calculatedValue
|
||||
if (isMin) {
|
||||
if (value < 0) {
|
||||
calculatedValue = value + num * value
|
||||
} else {
|
||||
calculatedValue = value - num * value
|
||||
}
|
||||
} else {
|
||||
if (value < 0) {
|
||||
calculatedValue = value - num * value
|
||||
} else {
|
||||
calculatedValue = value + num * value
|
||||
}
|
||||
}
|
||||
if (base === 0.1) {
|
||||
return parseFloat(calculatedValue.toFixed(1))
|
||||
} else if (isMin) {
|
||||
return Math.floor(calculatedValue / base) * base
|
||||
} else {
|
||||
return Math.ceil(calculatedValue / base) * base
|
||||
}
|
||||
}
|
||||
|
||||
// 处理y轴最大最小值
|
||||
export const yMethod = (arr: any) => {
|
||||
let num = 0.2
|
||||
let numList = dataProcessing(arr)
|
||||
let maxValue = 0
|
||||
let minValue = 0
|
||||
@@ -13,32 +54,76 @@ export const yMethod = (arr: any) => {
|
||||
let min = 0
|
||||
maxValue = Math.max(...numList)
|
||||
minValue = Math.min(...numList)
|
||||
if (maxValue > 1000 || minValue < -1000) {
|
||||
max = Math.ceil(maxValue / 100) * 100
|
||||
if (minValue == 0) {
|
||||
min = 0
|
||||
} else {
|
||||
min = Math.floor(minValue / 100) * 100
|
||||
}
|
||||
} else if (maxValue < 60 && minValue > 40) {
|
||||
max = 60
|
||||
min = 40
|
||||
} else if (maxValue == minValue && maxValue < 10 && minValue > 0) {
|
||||
max = Math.ceil(maxValue / 10) * 10
|
||||
min = Math.floor(minValue / 10) * 10
|
||||
} else if (maxValue == minValue && maxValue != 0 && minValue != 0) {
|
||||
max = Math.ceil(maxValue / 10 + 1) * 10
|
||||
min = Math.floor(minValue / 10 - 1) * 10
|
||||
} else {
|
||||
max = Math.ceil(maxValue / 10) * 10
|
||||
min = Math.floor(minValue / 10) * 10
|
||||
}
|
||||
const o=maxValue-minValue
|
||||
min = calculateValue( o,minValue, num, true)
|
||||
max = calculateValue(o,maxValue, num, false)
|
||||
// if (-100 >= minValue) {
|
||||
// min = Math.floor((minValue + num * minValue) / 100) * 100
|
||||
// } else if (-10 >= minValue && minValue > -100) {
|
||||
// min = Math.floor((minValue + num * minValue) / 10) * 10
|
||||
// } else if (-1 >= minValue && minValue > -10) {
|
||||
// min = Math.floor(minValue + num * minValue)
|
||||
// } else if (0 > minValue && minValue > -1) {
|
||||
// min = parseFloat((minValue + num * minValue).toFixed(1))
|
||||
// } else if (minValue == 0) {
|
||||
// min = 0
|
||||
// } else if (0 < minValue && minValue < 1) {
|
||||
// min = parseFloat((minValue - num * minValue).toFixed(1))
|
||||
// } else if (1 <= minValue && minValue < 10) {
|
||||
// min = Math.floor(minValue - num * minValue)
|
||||
// } else if (10 <= minValue && minValue < 100) {
|
||||
// min = Math.floor((minValue - num * minValue) / 10) * 10
|
||||
// } else if (100 <= minValue) {
|
||||
// min = Math.floor((minValue - num * minValue) / 100) * 100
|
||||
// }
|
||||
|
||||
// if (-100 >= maxValue) {
|
||||
// max = Math.ceil((maxValue - num * maxValue) / 100) * 100
|
||||
// } else if (-10 >= maxValue && maxValue > -100) {
|
||||
// max = Math.ceil((maxValue - num * maxValue) / 10) * 10
|
||||
// } else if (-1 >= maxValue && maxValue > -10) {
|
||||
// max = Math.ceil(maxValue - num * maxValue)
|
||||
// } else if (0 > maxValue && maxValue > -1) {
|
||||
// max = parseFloat((maxValue - num * maxValue).toFixed(1))
|
||||
// } else if (maxValue == 0) {
|
||||
// max = 0
|
||||
// } else if (0 < maxValue && maxValue < 1) {
|
||||
// max = parseFloat((maxValue + num * maxValue).toFixed(1))
|
||||
// } else if (1 <= maxValue && maxValue < 10) {
|
||||
// max = Math.ceil(maxValue + num * maxValue)
|
||||
// } else if (10 <= maxValue && maxValue < 100) {
|
||||
// max = Math.ceil((maxValue + num * maxValue) / 10) * 10
|
||||
// } else if (100 <= maxValue) {
|
||||
// max = Math.ceil((maxValue + num * maxValue) / 100) * 100
|
||||
// }
|
||||
|
||||
// if (maxValue > 1000 || minValue < -1000) {
|
||||
// max = Math.ceil(maxValue / 100) * 100
|
||||
// if (minValue == 0) {
|
||||
// min = 0
|
||||
// } else {
|
||||
// min = Math.floor(minValue / 100) * 100
|
||||
// }
|
||||
// } else if (maxValue < 60 && minValue > 40) {
|
||||
// max = 60
|
||||
// min = 40
|
||||
// } else if (maxValue == minValue && maxValue < 10 && minValue > 0) {
|
||||
// max = Math.ceil(maxValue / 10) * 10
|
||||
// min = Math.floor(minValue / 10) * 10
|
||||
// } else if (maxValue == minValue && maxValue != 0 && minValue != 0) {
|
||||
// max = Math.ceil(maxValue / 10 + 1) * 10
|
||||
// min = Math.floor(minValue / 10 - 1) * 10
|
||||
// } else {
|
||||
// max = Math.ceil(maxValue / 10) * 10
|
||||
// min = Math.floor(minValue / 10) * 10
|
||||
// }
|
||||
|
||||
// if (maxValue > 0 && maxValue < 1) {
|
||||
// max = 1
|
||||
// } else if (max == 0 && minValue > -1 && minValue < 0) {
|
||||
// min = -1
|
||||
// }
|
||||
|
||||
if (maxValue > 0 && maxValue < 1) {
|
||||
max = 1
|
||||
} else if (max == 0 && minValue > -1 && minValue < 0) {
|
||||
min = -1
|
||||
}
|
||||
return [min, max]
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import { filtration } from './tableMethod'
|
||||
interface TableStoreParams {
|
||||
url: string // 请求地址
|
||||
pk?: string
|
||||
filename?: any // 导出文件名
|
||||
column: TableColumn[]
|
||||
params?: anyObj
|
||||
method?: Method // 请求方式
|
||||
@@ -18,12 +19,14 @@ interface TableStoreParams {
|
||||
publicHeight?: number //计算高度
|
||||
resetCallback?: () => void // 重置
|
||||
loadCallback?: () => void // 接口调用后的回调
|
||||
exportProcessingData?:() => void //导出处理数据
|
||||
beforeSearchFun?: () => void // 接口调用前的回调
|
||||
}
|
||||
|
||||
export default class TableStore {
|
||||
public url
|
||||
public pk
|
||||
public filename: any = null
|
||||
public method: Method
|
||||
public initData: any = null
|
||||
public isWebPaging = false
|
||||
@@ -42,9 +45,11 @@ export default class TableStore {
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
filename:null,
|
||||
loading: true,
|
||||
column: [],
|
||||
loadCallback: null,
|
||||
exportProcessingData: null,
|
||||
resetCallback: null,
|
||||
beforeSearchFun: null,
|
||||
height: '',
|
||||
@@ -57,12 +62,14 @@ export default class TableStore {
|
||||
this.paramsPOST = options.paramsPOST || false
|
||||
this.isWebPaging = options.isWebPaging || false
|
||||
this.method = options.method || 'GET'
|
||||
this.table.filename = options.filename || null
|
||||
this.table.column = options.column
|
||||
this.showPage = options.showPage !== false
|
||||
|
||||
this.table.publicHeight = options.publicHeight || 0
|
||||
this.table.resetCallback = options.resetCallback || null
|
||||
this.table.loadCallback = options.loadCallback || null
|
||||
this.table.exportProcessingData = options.exportProcessingData || null
|
||||
this.table.beforeSearchFun = options.beforeSearchFun || null
|
||||
Object.assign(this.table.params, options.params)
|
||||
this.table.height = mainHeight(20 + (this.showPage ? 58 : 0) + this.table.publicHeight).height as string
|
||||
@@ -206,6 +213,7 @@ export default class TableStore {
|
||||
)
|
||||
).then(res => {
|
||||
this.table.allData = filtration(res.data.records || res.data)
|
||||
this.table.exportProcessingData && this.table.exportProcessingData()
|
||||
this.table.allFlag = data.showAllFlag || true
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1318,7 +1318,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="form-item"
|
||||
label="用户大类:"
|
||||
label="对象大类:"
|
||||
:prop="
|
||||
'deviceParam.' +
|
||||
[deviceIndex] +
|
||||
@@ -1328,12 +1328,12 @@
|
||||
lIndex +
|
||||
'.bigObjType'
|
||||
"
|
||||
:rules="{ required: true, message: '请选择用户大类', trigger: 'blur' }"
|
||||
:rules="{ required: true, message: '请选择对象大类', trigger: 'blur' }"
|
||||
>
|
||||
<el-select
|
||||
filterable
|
||||
v-model="lineItem.bigObjType"
|
||||
placeholder="请选择用户大类"
|
||||
placeholder="请选择对象大类"
|
||||
:disabled="pageStatus == 1"
|
||||
@change="lineItem.smallObjType = ''"
|
||||
>
|
||||
@@ -1347,7 +1347,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="form-item"
|
||||
label="用户小类:"
|
||||
label="对象小类:"
|
||||
:prop="
|
||||
'deviceParam.' +
|
||||
[deviceIndex] +
|
||||
@@ -1357,12 +1357,12 @@
|
||||
lIndex +
|
||||
'.smallObjType'
|
||||
"
|
||||
:rules="{ required: true, message: '请选择用户小类', trigger: 'blur' }"
|
||||
:rules="{ required: true, message: '请选择对象小类', trigger: 'blur' }"
|
||||
>
|
||||
<el-select
|
||||
filterable
|
||||
v-model="lineItem.smallObjType"
|
||||
placeholder="请选择用户小类"
|
||||
placeholder="请选择对象小类"
|
||||
:disabled="pageStatus == 1"
|
||||
>
|
||||
<el-option
|
||||
@@ -1777,9 +1777,9 @@ const busBarDetail = ref({
|
||||
})
|
||||
/**监测点详情 */
|
||||
const monitorPointDetail: any = ref({
|
||||
/**用户大类 */
|
||||
/**对象大类 */
|
||||
bigObjType: '',
|
||||
/**用户小类 */
|
||||
/**对象小类 */
|
||||
smallObjType: '',
|
||||
/**行业类型 */
|
||||
businessType: '',
|
||||
|
||||
@@ -8,10 +8,12 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { yMethod } from '@/utils/echartMethod'
|
||||
defineOptions({
|
||||
name: 'runManage/assessment'
|
||||
})
|
||||
import User from '@/views/pqs/runManage/assessment/components/uese/index.vue'
|
||||
import { ref, reactive } from 'vue'
|
||||
console.log("🚀 ~ reactive:", yMethod([3.2,3.2]))
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane label="异常数据清洗"><abnormal/></el-tab-pane>
|
||||
<el-tab-pane label="稳态告警统计"><alarm/></el-tab-pane>
|
||||
|
||||
<el-tab-pane label="异常数据清洗"><abnormal /></el-tab-pane>
|
||||
<el-tab-pane label="稳态告警统计"><alarm /></el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -19,116 +19,104 @@
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
<template v-slot:operation></template>
|
||||
<template v-slot:operation>
|
||||
<el-button type="primary" class="ml10" @click="toggle" :icon="leftVisible ? 'el-icon-Hide' : 'el-icon-View'">
|
||||
{{ leftVisible ? '隐藏' : '显示' }}
|
||||
</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Map />
|
||||
|
||||
<div class="left" :style="height">
|
||||
<BorderBox13 :color="[color[0], color[0]]" class="box" :backgroundColor="`${color[0]}24`" title="终端统计">
|
||||
<div class="title">
|
||||
<span class="iconfont icon-zhongduantongji-xian"></span>
|
||||
终端统计
|
||||
</div>
|
||||
</BorderBox13>
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="终端运行评价"
|
||||
>
|
||||
<div class="title"> <span class="iconfont icon-daipingjia"></span>终端运行评价</div>
|
||||
</BorderBox13>
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="最近一周终端评价趋势"
|
||||
>
|
||||
<div class="title"> <span class="iconfont icon-a-qushi1"></span>最近一周终端评价趋势</div>
|
||||
</BorderBox13>
|
||||
</div>
|
||||
<div class="center" :style="height3">
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="异常终端详情"
|
||||
>
|
||||
<div class="title"> <span class="iconfont icon-yichangxiangqing-xian"></span>异常终端详情</div>
|
||||
</BorderBox13>
|
||||
</div>
|
||||
<div class="right" :style="height">
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box box-2"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="区域终端运行评价"
|
||||
>
|
||||
<div class="title"> <span class="iconfont icon-a-ziyuan118"></span>区域终端运行评价</div>
|
||||
</BorderBox13>
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="终端运行评价详情"
|
||||
>
|
||||
<div class="title"> <span class="iconfont icon-yunhangxiangqing"></span>终端运行评价详情</div>
|
||||
</BorderBox13>
|
||||
</div>
|
||||
<!-- <div class="container pt10 pl10" :style="height">
|
||||
<div class="left">
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div></div>
|
||||
<span>终端统计</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div></div><span>终端运行评价</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div></div><span>最近一周终端评价趋势</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<transition name="slide-left">
|
||||
<div class="left" :style="height" v-if="leftVisible">
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="终端统计"
|
||||
>
|
||||
<div class="title">
|
||||
<span class="iconfont icon-zhongduantongji-xian"></span>
|
||||
终端统计
|
||||
</div>
|
||||
</BorderBox13>
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="终端运行评价"
|
||||
>
|
||||
<div class="title">
|
||||
<span class="iconfont icon-daipingjia"></span>
|
||||
终端运行评价
|
||||
</div>
|
||||
</BorderBox13>
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="最近一周终端评价趋势"
|
||||
>
|
||||
<div class="title">
|
||||
<span class="iconfont icon-a-qushi1"></span>
|
||||
最近一周终端评价趋势
|
||||
</div>
|
||||
</BorderBox13>
|
||||
</div>
|
||||
<div class="center">
|
||||
<el-card class="box box-2">
|
||||
<template #header>
|
||||
<div></div><span>异常详情统计</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div></div><span>异常终端详情</span>
|
||||
</template>
|
||||
</el-card>
|
||||
</transition>
|
||||
|
||||
<transition name="slide-right">
|
||||
<div class="right" :style="height" v-if="rightVisible">
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box box-2"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="区域终端运行评价"
|
||||
>
|
||||
<div class="title">
|
||||
<span class="iconfont icon-a-ziyuan118"></span>
|
||||
区域终端运行评价
|
||||
</div>
|
||||
</BorderBox13>
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="终端运行评价详情"
|
||||
>
|
||||
<div class="title">
|
||||
<span class="iconfont icon-yunhangxiangqing"></span>
|
||||
终端运行评价详情
|
||||
</div>
|
||||
</BorderBox13>
|
||||
</div>
|
||||
<div class="right">
|
||||
<el-card class="box box-2">
|
||||
<template #header>
|
||||
<div></div><span>区域终端运行评价</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div></div><span>终端运行评价详情</span>
|
||||
</template>
|
||||
</el-card>
|
||||
</transition>
|
||||
|
||||
<transition name="slide-bottom">
|
||||
<div class="center" :style="height3" v-if="centerVisible">
|
||||
<BorderBox13
|
||||
:color="[color[0], color[0]]"
|
||||
class="box"
|
||||
:backgroundColor="`${color[0]}24`"
|
||||
title="异常终端详情"
|
||||
>
|
||||
<div class="title">
|
||||
<span class="iconfont icon-yichangxiangqing-xian"></span>
|
||||
异常终端详情
|
||||
</div>
|
||||
</BorderBox13>
|
||||
</div>
|
||||
</div> -->
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive } from 'vue'
|
||||
import { ref, reactive, onMounted, provide } from 'vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import Map from './components/map.vue'
|
||||
import { BorderBox13 } from '@dataview/datav-vue3'
|
||||
import { BorderBox13 } from '@kjgl77/datav-vue3'
|
||||
import { useConfig } from '@/stores/config'
|
||||
const config = useConfig()
|
||||
const color = config.layout.elementUiPrimary
|
||||
@@ -145,11 +133,9 @@ const tableStore = new TableStore({
|
||||
publicHeight: 480,
|
||||
column: [
|
||||
{ title: '序号', width: 80 },
|
||||
|
||||
{ title: '监测对象类型', field: 'name3' },
|
||||
{ title: '监测对象名称', field: 'name4' },
|
||||
{ title: '电压等级', field: 'name5' },
|
||||
|
||||
{
|
||||
title: '操作',
|
||||
width: '120',
|
||||
@@ -171,51 +157,31 @@ const tableStore = new TableStore({
|
||||
}
|
||||
})
|
||||
provide('tableStore', tableStore)
|
||||
const leftVisible = ref(true)
|
||||
const rightVisible = ref(true)
|
||||
const centerVisible = ref(true)
|
||||
|
||||
const toggle = () => {
|
||||
leftVisible.value = !leftVisible.value
|
||||
rightVisible.value = !rightVisible.value
|
||||
centerVisible.value = !centerVisible.value
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
// 加载数据
|
||||
tableStore.index()
|
||||
})
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
// .container {
|
||||
// display: flex;
|
||||
|
||||
// position: absolute;
|
||||
// top: 70px;
|
||||
// left: 10px;
|
||||
// width: 100%;
|
||||
|
||||
// z-index: 999;
|
||||
// .left,
|
||||
// .center,
|
||||
// .right {
|
||||
// display: flex;
|
||||
// flex-direction: column;
|
||||
|
||||
// // background: linear-gradient(to right, #cce5e5, #ffffff00);
|
||||
// }
|
||||
// .center {
|
||||
// flex: 1.5;
|
||||
// }
|
||||
// .box {
|
||||
// width: 500px;
|
||||
// height: 100%;
|
||||
// }
|
||||
|
||||
// .box-2 {
|
||||
// flex: 2; /* 占2份高度 */
|
||||
// }
|
||||
// }
|
||||
.left,
|
||||
.right {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: 80px;
|
||||
width: 25%;
|
||||
|
||||
min-width: 480px;
|
||||
flex-direction: column;
|
||||
z-index: 99;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.left {
|
||||
left: 15px;
|
||||
@@ -235,14 +201,15 @@ onMounted(() => {
|
||||
.center {
|
||||
position: absolute;
|
||||
bottom: 16px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
left: 26%;
|
||||
// transform: translateX(-50%);
|
||||
width: 48%;
|
||||
min-width: 480px;
|
||||
.box {
|
||||
flex: 1; /* 占2份高度 */
|
||||
padding: 20px 10px 10px;
|
||||
}
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.title {
|
||||
// padding: 5px 5px 5px 10px;
|
||||
@@ -257,4 +224,37 @@ onMounted(() => {
|
||||
margin: 0 5px 0 10px;
|
||||
}
|
||||
}
|
||||
.toggle-btn {
|
||||
position: absolute;
|
||||
z-index: 100;
|
||||
padding: 5px 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.slide-left-enter-active,
|
||||
.slide-left-leave-active {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.slide-left-enter-from,
|
||||
.slide-left-leave-to {
|
||||
transform: translateX(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
.slide-right-enter-active,
|
||||
.slide-right-leave-active {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.slide-right-enter-from,
|
||||
.slide-right-leave-to {
|
||||
transform: translateX(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
.slide-bottom-enter-active,
|
||||
.slide-bottom-leave-active {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.slide-bottom-enter-from,
|
||||
.slide-bottom-leave-to {
|
||||
transform: translateY(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- 用户投诉 -->
|
||||
<!-- 2 有新增 发起 预警单 -->
|
||||
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template v-slot:select>
|
||||
<el-form-item label="是否解决">
|
||||
<el-select v-model="tableStore.table.params.dealState" clearable placeholder="请选择是否解决">
|
||||
@@ -52,6 +52,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/SupervisionUserComplaint/list',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'用户投诉',
|
||||
column: [
|
||||
{
|
||||
title: '序号',
|
||||
@@ -199,16 +200,14 @@ const tableStore = new TableStore({
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.currentPage = tableStore.table.params.pageNum
|
||||
},
|
||||
loadCallback: () => {
|
||||
// tableStore.table.data = [
|
||||
// {
|
||||
// userName: '东润开阳堡光伏电站用户',
|
||||
// userId: '8115771123274',
|
||||
// complaintContent: '终端频繁重启',
|
||||
// complaintTime: '2024-05-16'
|
||||
// }
|
||||
// ]
|
||||
}
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.dealState =item.dealState==0?'未解决':item.dealState==1?'已解决':'/'
|
||||
item.detectionFlag=item.detectionFlag==0?'否':item.detectionFlag==1?'是':'/'
|
||||
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
@@ -102,7 +102,7 @@ const rules = {
|
||||
}
|
||||
const formRef = ref()
|
||||
const submit = () => {
|
||||
|
||||
console.log('🚀 ~ open ~ form.value:', form.value)
|
||||
formRef.value.validate(valid => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<!-- <div>1 监测点信息 发起预告警单 </div> -->
|
||||
|
||||
<TableHeader datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template v-slot:select>
|
||||
<el-form-item label="区域">
|
||||
<Area ref="areaRef" v-model="tableStore.table.params.deptId" @changeValue="changeArea"/>
|
||||
@@ -62,10 +62,10 @@
|
||||
</el-form-item> -->
|
||||
</template>
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Plus" :disabled="flag > 2" type="primary" @click="launch('发起预警单')">
|
||||
<el-button icon="el-icon-Plus" :disabled="flag != '2'" type="primary" @click="launch('发起预警单')">
|
||||
发起预警单
|
||||
</el-button>
|
||||
<el-button icon="el-icon-Plus" :disabled="flag > 2" type="primary" @click="launch('发起告警单')">
|
||||
<el-button icon="el-icon-Plus" :disabled="flag != '2'" type="primary" @click="launch('发起告警单')">
|
||||
发起告警单
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -112,6 +112,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/onlineMonitor/list',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'在线监测',
|
||||
// isWebPaging:true,
|
||||
column: [
|
||||
{title: '', type: 'checkbox', width: 40},
|
||||
@@ -328,7 +329,7 @@ tableStore.table.params.dataType = '1'
|
||||
tableStore.table.params.deptId = dictData.state.area[0].id
|
||||
provide('tableStore', tableStore)
|
||||
onMounted(() => {
|
||||
TableHeaderRef.value.setDatePicker([{label: '月', value: 3}])
|
||||
// TableHeaderRef.value.setDatePicker([{label: '月', value: 3}])
|
||||
|
||||
tableStore.index()
|
||||
setTimeout(() => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<!-- <div> 普测结果 发起预告警单</div> -->
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template v-slot:select>
|
||||
<el-form-item label="计划名称">
|
||||
<el-input style="width: 200px" v-model="tableStore.table.params.searchValue" clearable
|
||||
@@ -53,6 +53,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/surveyTest/pageProblemSurvey',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'计划问题',
|
||||
column: [
|
||||
{
|
||||
title: '序号',
|
||||
@@ -163,7 +164,14 @@ const tableStore = new TableStore({
|
||||
],
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.currentPage = tableStore.table.params.pageNum
|
||||
}
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.dealState = item.dealState == 0 ? '未解决' : item.dealState == 1 ? '已解决' : '/'
|
||||
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.dealState = ''
|
||||
tableStore.table.params.searchValue = ''
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!---试运行列表-->
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<el-form-item label="流程状态">
|
||||
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
|
||||
@@ -54,6 +54,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/lineRunTestProblem/pageProblem',
|
||||
method: 'POST',
|
||||
publicHeight: 65,
|
||||
filename:'试运行评估问题',
|
||||
column: [
|
||||
{
|
||||
title: '序号', width: 80, formatter: (row: any) => {
|
||||
@@ -233,7 +234,14 @@ const tableStore = new TableStore({
|
||||
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
|
||||
tableStore.table.params.statveList = [2]
|
||||
// tableStore.table.params.relationUserName = tableStore.table.params.userName
|
||||
}
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.dealState =item.dealState == 0 ? '未解决' :item.dealState == 1 ? '已解决' : '/'
|
||||
item.testRunState = item.testRunState == 0 ? '待试运行' : item.testRunState == 1 ? '试运行中' : item.testRunState == 2 ? '试运行成功' : item.testRunState == 3 ? '试运行失败' : '待试运行'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
tableStore.table.params.dealState = ''
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item for="-" label="关联电站:" :key="key" v-if="form.customSubstationFlag == 1" :prop="dynamicProp">
|
||||
<el-input v-model="form.substation" placeholder="请输入关联电站"></el-input>
|
||||
<el-input v-model="form.substation" placeholder="名称格式:220kV某某电站"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form :model="form" label-width="auto"> -->
|
||||
<!-- <el-form-item for="-" class="uploadFile" label="普测报告:" prop="fileList">
|
||||
@@ -104,7 +104,7 @@
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="cancelFn">取消</el-button>
|
||||
|
||||
<!-- <el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button>-->
|
||||
<el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button>
|
||||
<el-button type="primary" @click="submitFn(false)" :loading="loading">提交审批</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -213,12 +213,12 @@ const treeData = ref()
|
||||
const loadData = () => {
|
||||
initDetpStataionTree({ orgId: dictData.state.area[0].id }).then(res => {
|
||||
treeList.value = res.data
|
||||
// initDetpStataionTree({ orgId: '02d1b4e1680413eb72f3fa63d46c496c' }).then(res => {
|
||||
// treeListCgy.value = res.data
|
||||
setTimeout(() => {
|
||||
changeArea()
|
||||
}, 10)
|
||||
// })
|
||||
initDetpStataionTree({ orgId: 'a3069759b0b6072c99cf9a7af6c162e9' }).then(res => {
|
||||
treeListCgy.value = res.data
|
||||
setTimeout(() => {
|
||||
changeArea()
|
||||
}, 10)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ const submitFn = async (flag: boolean) => {
|
||||
}
|
||||
addForm.saveOrCheckflag = '1'
|
||||
|
||||
await addSurveyPlan(addForm).then(res => {
|
||||
await addSurveyPlan(addForm).then(res => {
|
||||
cancelFn()
|
||||
ElMessage.success('保存成功!')
|
||||
emit('onsubmit')
|
||||
@@ -263,7 +263,7 @@ const submitFn = async (flag: boolean) => {
|
||||
emit('onsubmit')
|
||||
}).catch(() => { loading.value = false})
|
||||
} else {
|
||||
await updateSurveyPlan(addForm).then(res => {
|
||||
await updateSurveyPlan(addForm).then(res => {
|
||||
cancelFn()
|
||||
ElMessage.success('重新发起成功!')
|
||||
emit('onsubmit')
|
||||
@@ -283,30 +283,14 @@ const changeArea = () => {
|
||||
treeList.value.forEach((item: any) => {
|
||||
if (item.id == form.value.deptId) {
|
||||
list.push(item)
|
||||
|
||||
} else {
|
||||
if (item.children.filter((v: any) => v.id == form.value.deptId).length == 0) {
|
||||
item.children.forEach((v: any) => {
|
||||
list.push(v.children.filter((K: any) => K.id == form.value.deptId)[0])
|
||||
})
|
||||
// list.push(item.children.filter((v: any) => {
|
||||
// return (v.children.filter((k: any) => {
|
||||
// if( k.id == form.value.deptId){
|
||||
// return k
|
||||
// }
|
||||
// }))
|
||||
// }))
|
||||
console.log("🚀 ~ list.push ~ list:", list)
|
||||
|
||||
|
||||
} else {
|
||||
list.push(item.children.filter((v: any) => v.id == form.value.deptId)[0])
|
||||
if (item.id != treeListCgy.value[0].id && item.name != '冀北电力有限公司' && item.name != '超高压') {
|
||||
list.push(...treeListCgy.value)
|
||||
}
|
||||
} else {
|
||||
list.push(item.children.filter((v: any) => v.id == form.value.deptId)[0])
|
||||
if (form.value.deptId != treeListCgy.value[0].id) {
|
||||
list.push(...treeListCgy.value)
|
||||
}
|
||||
|
||||
|
||||
// if (form.value.deptId != treeListCgy.value[0].id) {
|
||||
// list.push(...treeListCgy.value)
|
||||
// }
|
||||
}
|
||||
})
|
||||
treeData.value = list
|
||||
|
||||
@@ -1,25 +1,39 @@
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="监督类型">
|
||||
<el-select v-model="tableStore.table.params.supvType" clearable placeholder="请选择监督类型">
|
||||
<el-option v-for="item in supvTypeOptionList" :key="item.id" :label="item.name" :value="item.id"></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="add">新增计划</el-button>
|
||||
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" :checkbox-config="checkboxConfig" />
|
||||
<!-- 新增 -->
|
||||
<planAdd ref="planAddRef" @onsubmit="tableStore.index()" :openType="openType" />
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<el-form-item label="监督类型">
|
||||
<el-select v-model="tableStore.table.params.supvType" clearable placeholder="请选择监督类型">
|
||||
<el-option
|
||||
v-for="item in supvTypeOptionList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></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="add">新增计划</el-button>
|
||||
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
|
||||
<el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate" :loading="loading">模板下载</el-button>
|
||||
<el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" :checkbox-config="checkboxConfig" />
|
||||
<!-- 新增 -->
|
||||
<planAdd ref="planAddRef" @onsubmit="tableStore.index()" :openType="openType" />
|
||||
<!-- 批量导入 -->
|
||||
<sensitive-user-popup ref="sensitiveUserPopup" />
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
@@ -33,12 +47,14 @@ import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { cancel, getById } from '@/api/process-boot/generalTest'
|
||||
import planAdd from './planAdd.vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import SensitiveUserPopup from './sensitiveUserPopup.vue'
|
||||
import { queryPlan, removeSurvey } from '@/api/process-boot/generalTest'
|
||||
import { getUserByRoleType } from '@/api/user-boot/user'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { deleteSurveyPlan } from '@/api/supervision-boot/delete/index'
|
||||
import { getUserReportById } from "@/api/supervision-boot/interfere";
|
||||
|
||||
import { getUserReportById } from '@/api/supervision-boot/interfere'
|
||||
import { downloadPlanTemplate } from '@/api/supervision-boot/userReport/form'
|
||||
const loading = ref(false)
|
||||
const dictData = useDictData()
|
||||
const supvTypeOptionList = dictData.getBasicData('supv_type')
|
||||
const statusSelect = dictData.statusSelect()
|
||||
@@ -52,285 +68,321 @@ const auditUser = ref('')
|
||||
const flag = ref(false)
|
||||
const openType = ref('create')
|
||||
const tableStore = new TableStore({
|
||||
url: '/supervision-boot/surveyPlan/surveyPlanPage',
|
||||
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: 'planName',
|
||||
title: '计划名称',
|
||||
minWidth: 130
|
||||
},
|
||||
{
|
||||
field: 'supvType',
|
||||
title: '监督类型',
|
||||
minWidth: 130,
|
||||
formatter: (row: any) => {
|
||||
return supvTypeOptionList.filter(item => item.id === row.cellValue)[0]?.name
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'supvObjectName',
|
||||
minWidth: 130,
|
||||
title: '监督对象名称'
|
||||
},
|
||||
{
|
||||
field: 'deptName',
|
||||
minWidth: 130,
|
||||
title: '负责单位'
|
||||
},
|
||||
{
|
||||
field: 'substation',
|
||||
title: '变电站',
|
||||
minWidth: 110,
|
||||
formatter: (row: any) => {
|
||||
return row.cellValue
|
||||
}
|
||||
},
|
||||
url: '/supervision-boot/surveyPlan/surveyPlanPage',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename: '技术监督计划管理',
|
||||
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: 'planName',
|
||||
title: '计划名称',
|
||||
minWidth: 130
|
||||
},
|
||||
{
|
||||
field: 'supvType',
|
||||
title: '监督类型',
|
||||
minWidth: 130,
|
||||
formatter: (row: any) => {
|
||||
return supvTypeOptionList.filter(item => item.id === row.cellValue)[0]?.name
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'supvObjectName',
|
||||
minWidth: 130,
|
||||
title: '监督对象名称'
|
||||
},
|
||||
{
|
||||
field: 'deptName',
|
||||
minWidth: 130,
|
||||
title: '负责单位'
|
||||
},
|
||||
{
|
||||
field: 'substation',
|
||||
title: '变电站',
|
||||
minWidth: 110,
|
||||
formatter: (row: any) => {
|
||||
return row.cellValue
|
||||
}
|
||||
},
|
||||
|
||||
{ field: 'planStartTime', minWidth: 130, title: '计划开始时间' },
|
||||
{ field: 'planEndTime', minWidth: 130, title: '计划结束时间' },
|
||||
{
|
||||
field: 'status',
|
||||
title: '流程状态',
|
||||
render: 'tag',
|
||||
minWidth: 80,
|
||||
custom: {
|
||||
0: 'warning',
|
||||
1: 'primary',
|
||||
2: 'success',
|
||||
3: 'danger',
|
||||
4: 'warning'
|
||||
},
|
||||
replaceValue: {
|
||||
0: '待提交审批',
|
||||
1: '审批中',
|
||||
2: '审批通过',
|
||||
3: '审批不通过',
|
||||
4: '已取消'
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createBy',
|
||||
title: '填报人',
|
||||
minWidth: 80,
|
||||
formatter: (row: any) => {
|
||||
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
minWidth: '180',
|
||||
fixed: 'right',
|
||||
render: 'buttons',
|
||||
buttons: [
|
||||
{ field: 'planStartTime', minWidth: 130, title: '计划开始时间' },
|
||||
{ field: 'planEndTime', minWidth: 130, title: '计划结束时间' },
|
||||
{
|
||||
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)
|
||||
}
|
||||
field: 'status',
|
||||
title: '流程状态',
|
||||
render: 'tag',
|
||||
minWidth: 80,
|
||||
custom: {
|
||||
0: 'warning',
|
||||
1: 'primary',
|
||||
2: 'success',
|
||||
3: 'danger',
|
||||
4: 'warning'
|
||||
},
|
||||
replaceValue: {
|
||||
0: '待提交审批',
|
||||
1: '审批中',
|
||||
2: '审批通过',
|
||||
3: '审批不通过',
|
||||
4: '已取消'
|
||||
}
|
||||
},
|
||||
{
|
||||
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 => {
|
||||
planAddRef.value.open('编辑', row.id, false)
|
||||
}
|
||||
field: 'createBy',
|
||||
title: '填报人',
|
||||
minWidth: 80,
|
||||
formatter: (row: any) => {
|
||||
return dictData.state.userList.filter(item => item.id == row.cellValue)[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 => {
|
||||
// deviceQuitPopup.value.open('重新发起退运', row)
|
||||
planAddRef.value.open('重新发起计划', row.id, false)
|
||||
}
|
||||
},
|
||||
{
|
||||
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)
|
||||
}
|
||||
title: '操作',
|
||||
minWidth: '180',
|
||||
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 => {
|
||||
planAddRef.value.open('编辑', row.id, false)
|
||||
}
|
||||
},
|
||||
{
|
||||
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 => {
|
||||
// deviceQuitPopup.value.open('重新发起退运', row)
|
||||
planAddRef.value.open('重新发起计划', row.id, false)
|
||||
}
|
||||
},
|
||||
{
|
||||
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.currentPage = tableStore.table.params.pageNum
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: '已取消'
|
||||
return item
|
||||
})
|
||||
}
|
||||
],
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
|
||||
tableStore.table.params.currentPage = tableStore.table.params.pageNum
|
||||
}
|
||||
})
|
||||
|
||||
const sensitiveUserPopup = ref()
|
||||
tableStore.table.params.status = ''
|
||||
tableStore.table.params.supvType = ''
|
||||
provide('tableStore', tableStore)
|
||||
// 新增计划
|
||||
const add = () => {
|
||||
// title.value = '普测计划新增'
|
||||
planAddRef.value.open('计划新增')
|
||||
// title.value = '普测计划新增'
|
||||
planAddRef.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(() => {
|
||||
deleteSurveyPlan(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(() => {
|
||||
deleteSurveyPlan(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
const exportFn = () => {
|
||||
let form = JSON.parse(JSON.stringify(tableStore.table.params))
|
||||
form.pageNum = 1
|
||||
form.pageSize = tableStore.table.total
|
||||
queryPlan(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
|
||||
queryPlan(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 exportExcelTemplate = async() => {
|
||||
loading.value = true
|
||||
await downloadPlanTemplate().then((res: any) => {
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.ms-excel'
|
||||
})
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.download = '技术监督计划管理模板'
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
link.remove()
|
||||
})
|
||||
await setTimeout(() => {
|
||||
loading.value = false
|
||||
},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 cancel(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 cancel(data)
|
||||
ElMessage.success('取消成功')
|
||||
// 加载数据
|
||||
tableStore.index()
|
||||
}
|
||||
|
||||
const handleClose = () => {
|
||||
dialogVisible.value = false
|
||||
auditUser.value = ''
|
||||
dialogVisible.value = false
|
||||
auditUser.value = ''
|
||||
}
|
||||
//批量导入用户数据
|
||||
const importUserData = () => {
|
||||
sensitiveUserPopup.value.open('技术监督计划管理')
|
||||
}
|
||||
|
||||
/** 处理审批按钮 */
|
||||
const handleAudit = (instanceId: string, historyInstanceId: string) => {
|
||||
push({
|
||||
name: 'BpmProcessInstanceDetail',
|
||||
state: {
|
||||
id: instanceId,
|
||||
historyInstanceId
|
||||
}
|
||||
})
|
||||
push({
|
||||
name: 'BpmProcessInstanceDetail',
|
||||
state: {
|
||||
id: instanceId,
|
||||
historyInstanceId
|
||||
}
|
||||
})
|
||||
}
|
||||
// 取消
|
||||
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
getUserByRoleType(3).then(res => {
|
||||
auditList.value = res.data
|
||||
})
|
||||
tableStore.index()
|
||||
getUserByRoleType(3).then(res => {
|
||||
auditList.value = res.data
|
||||
})
|
||||
})
|
||||
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 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,则不执行
|
||||
nextTick(() => {
|
||||
planAddRef.value.open('重新发起计划', fullId, false)
|
||||
})
|
||||
}, { 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,则不执行
|
||||
nextTick(() => {
|
||||
planAddRef.value.open('重新发起计划', fullId, false)
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
draggable
|
||||
class="cn-operate-dialog"
|
||||
v-model="eventDataUploadVisible"
|
||||
:title="title"
|
||||
style="width: 415px"
|
||||
top="25vh"
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" ref="formRef">
|
||||
<el-form-item label="数据文件">
|
||||
<el-upload
|
||||
v-model:file-list="fileList"
|
||||
ref="uploadEventData"
|
||||
:limit="1"
|
||||
accept=".xls, .xlsx"
|
||||
:on-exceed="handleExceed"
|
||||
:auto-upload="false"
|
||||
:on-change="choose"
|
||||
>
|
||||
<template #trigger>
|
||||
<el-button type="primary">选择数据文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="eventDataUploadVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit" :loading="loading">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, inject } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import type { UploadInstance, UploadProps, UploadRawFile, UploadUserFile } from 'element-plus'
|
||||
import { genFileId } from 'element-plus'
|
||||
import { importSensitiveUserData, importPlanData } from '@/api/supervision-boot/userReport/form'
|
||||
|
||||
const fileList = ref<UploadUserFile[]>([])
|
||||
|
||||
const formRef = ref()
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
const eventDataUploadVisible = ref(false)
|
||||
const title = ref('')
|
||||
const uploadEventData = ref<UploadInstance>()
|
||||
|
||||
// 注意不要和表单ref的命名冲突
|
||||
const form = reactive({
|
||||
file: null
|
||||
})
|
||||
|
||||
const loading = ref(false)
|
||||
|
||||
//弹出界面,默认选择用户的第一个生产线的第一条进线进行数据导入
|
||||
const open = async (text: string) => {
|
||||
title.value = text
|
||||
resetForm()
|
||||
form.file = null
|
||||
fileList.value = []
|
||||
eventDataUploadVisible.value = true
|
||||
}
|
||||
|
||||
//重置表单内容
|
||||
const resetForm = () => {
|
||||
if (formRef.value) {
|
||||
formRef.value.resetFields()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择待上传文件
|
||||
*/
|
||||
const choose = (e: any) => {
|
||||
const file = e.raw
|
||||
if (!isValidFile(file)) {
|
||||
uploadEventData.value!.clearFiles()
|
||||
fileList.value = []
|
||||
return
|
||||
}
|
||||
form.file = file
|
||||
}
|
||||
|
||||
const handleExceed: UploadProps['onExceed'] = files => {
|
||||
uploadEventData.value!.clearFiles()
|
||||
const file = files[0] as UploadRawFile
|
||||
file.uid = genFileId()
|
||||
uploadEventData.value!.handleStart(file)
|
||||
fileList.value = [{ name: file.name, url: '' }]
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交用户表单数据
|
||||
*/
|
||||
const submit = async () => {
|
||||
if (form.file) {
|
||||
formRef.value.validate(async (valid: any) => {
|
||||
if (valid) {
|
||||
let data = new FormData()
|
||||
data.append('file', form.file)
|
||||
|
||||
if (title.value === '技术监督计划管理') {
|
||||
loading.value = true
|
||||
await importPlanData(data)
|
||||
.then(res => {
|
||||
loading.value = false
|
||||
handleImportResponse(title.value, res)
|
||||
}).catch(()=> loading.value = false)
|
||||
.finally(() => {
|
||||
tableStore.index()
|
||||
eventDataUploadVisible.value = false
|
||||
})
|
||||
} else {
|
||||
await importSensitiveUserData(data)
|
||||
.then(res => handleImportResponse(title.value, res))
|
||||
.finally(() => {
|
||||
tableStore.index()
|
||||
eventDataUploadVisible.value = false
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
ElMessage.error('请选择数据文件')
|
||||
}
|
||||
}
|
||||
|
||||
async function handleImportResponse(title: any, res: any) {
|
||||
if (res.type === 'application/json') {
|
||||
const fileReader = new FileReader()
|
||||
fileReader.onloadend = () => {
|
||||
try {
|
||||
const jsonData = JSON.parse(fileReader.result)
|
||||
if (jsonData.code === 'A0000') {
|
||||
ElMessage.success('导入成功')
|
||||
} else {
|
||||
ElMessage.error('导入失败,请查看下载附件!')
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
fileReader.readAsText(res)
|
||||
} else {
|
||||
ElMessage.error('导入失败,请查看下载附件!')
|
||||
let blob = new Blob([res], { type: 'application/vnd.ms-excel' })
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.download = '技术监督计划管理失败列表'
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
link.remove()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件校验函数
|
||||
*/
|
||||
const isValidFile = (file: UploadRawFile) => {
|
||||
const validExtensions = ['.xls', '.xlsx']
|
||||
const fileExtension = file.name.slice(((file.name.lastIndexOf('.') - 1) >>> 0) + 2)
|
||||
if (!validExtensions.includes(`.${fileExtension}`)) {
|
||||
ElMessage.error('文件类型不支持,请选择 .xls 或 .xlsx 文件')
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-form-item__content div {
|
||||
width: 100% !important;
|
||||
}
|
||||
</style>
|
||||
@@ -1,28 +1,36 @@
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref='TableHeaderRef'>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template v-slot:select>
|
||||
<el-form-item label='监督类型'>
|
||||
<el-select v-model='tableStore.table.params.supvType' clearable placeholder='请选择监督类型'>
|
||||
<el-option v-for='item in supvTypeOptionList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item label="监督类型">
|
||||
<el-select v-model="tableStore.table.params.supvType" clearable placeholder="请选择监督类型">
|
||||
<el-option
|
||||
v-for="item in supvTypeOptionList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></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-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-Delete' type='primary' @click='deleteEven'>删除</el-button>
|
||||
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref='tableRef' :checkbox-config='checkboxConfig' />
|
||||
<Table ref="tableRef" :checkbox-config="checkboxConfig" />
|
||||
<!-- 新增 -->
|
||||
<planTest ref='planTestRef' @onsubmit='tableStore.index()' />
|
||||
<planTest ref="planTestRef" @onsubmit="tableStore.index()" />
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide, watch, nextTick } from 'vue'
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
//获取登陆用户姓名和部门
|
||||
@@ -54,6 +62,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/surveyTest/surveyTestPage',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename: '技术监督测试管理',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
@@ -213,6 +222,22 @@ const tableStore = new TableStore({
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
|
||||
tableStore.table.params.currentPage = tableStore.table.params.pageNum
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.problemFlag = item.problemFlag == 0 ? '合格' : item.problemFlag == 1 ? '存在问题' : '待测试'
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: '已取消'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -239,25 +264,19 @@ const deleteEven = () => {
|
||||
message: '请选择要删除的数据'
|
||||
})
|
||||
} else {
|
||||
|
||||
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
deleteSurveyPlanTest(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
}).then(() => {
|
||||
deleteSurveyPlanTest(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
const exportFn = () => {
|
||||
@@ -320,20 +339,24 @@ onMounted(() => {
|
||||
})
|
||||
|
||||
const props = defineProps(['id', 'businessKey'])
|
||||
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,则不执行
|
||||
nextTick(() => {
|
||||
if (props.businessKey == '3') {
|
||||
planTestRef.value.open('编辑', fullId, false)
|
||||
} else {
|
||||
planTestRef.value.open('重新发起计划测试', fullId, false)
|
||||
}
|
||||
})
|
||||
}, { 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,则不执行
|
||||
nextTick(() => {
|
||||
if (props.businessKey == '3') {
|
||||
planTestRef.value.open('编辑', fullId, false)
|
||||
} else {
|
||||
planTestRef.value.open('重新发起计划测试', fullId, false)
|
||||
}
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped lang='scss'></style>
|
||||
<style scoped lang="scss"></style>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
<!--待办事项列表-->
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader date-picker nextFlag theCurrentTime>
|
||||
<TableHeader date-picker nextFlag theCurrentTime showTimeAll showExport>
|
||||
<template #select>
|
||||
<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-option
|
||||
v-for="item in statusSelect"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="筛选">
|
||||
<el-input v-model="tableStore.table.params.searchValue" placeholder="请输入关键字"
|
||||
clearable maxlength="32" show-word-limit></el-input>
|
||||
<el-form-item label="搜索">
|
||||
<el-input
|
||||
v-model="tableStore.table.params.searchValue"
|
||||
placeholder="输入变电站、监测点"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template #operation>
|
||||
@@ -54,13 +61,14 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/quitRunningDevice/list',
|
||||
method: 'POST',
|
||||
publicHeight: 65,
|
||||
filename:'监测点状态管理',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
type: 'checkbox'
|
||||
},
|
||||
{
|
||||
|
||||
field: 'index',
|
||||
title: '序号',
|
||||
width: '80',
|
||||
formatter: (row: any) => {
|
||||
@@ -220,6 +228,49 @@ const tableStore = new TableStore({
|
||||
|
||||
// }
|
||||
tableStore.table.params.deviceType = 2
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.devOriginalStatus =
|
||||
item.devOriginalStatus == 0
|
||||
? '运行'
|
||||
: item.devOriginalStatus == 1
|
||||
? '检修'
|
||||
: item.devOriginalStatus == 2
|
||||
? '停运'
|
||||
: item.devOriginalStatus == 3
|
||||
? '调试'
|
||||
: item.devOriginalStatus == 4
|
||||
? '退运'
|
||||
: '/'
|
||||
item.devStatus =
|
||||
item.devStatus == 0
|
||||
? '运行'
|
||||
: item.devStatus == 1
|
||||
? '检修'
|
||||
: item.devStatus == 2
|
||||
? '停运'
|
||||
: item.devStatus == 3
|
||||
? '调试'
|
||||
: item.devStatus == 4
|
||||
? '退运'
|
||||
: '/'
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: item.status == 4
|
||||
? '已取消'
|
||||
: item.status == 5
|
||||
? '新增'
|
||||
: '/'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.searchValue = ''
|
||||
@@ -250,19 +301,15 @@ const deleteEven = () => {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
}).then(() => {
|
||||
deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
/** 流程实例详情 */
|
||||
@@ -316,16 +363,20 @@ watch(
|
||||
)
|
||||
|
||||
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 getRunningDeviceById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
deviceQuitPopup.value.open('重新发起', 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 getRunningDeviceById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
deviceQuitPopup.value.open('重新发起', res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
@@ -1,16 +1,24 @@
|
||||
<!--待办事项列表-->
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader date-picker nextFlag theCurrentTime>
|
||||
<TableHeader date-picker nextFlag theCurrentTime showTimeAll showExport>
|
||||
<template v-slot:select>
|
||||
<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-option
|
||||
v-for="item in statusSelect"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="筛选">
|
||||
<el-input v-model="tableStore.table.params.searchValue" placeholder="请输入关键字" clearable maxlength="32" show-word-limit></el-input>
|
||||
<el-form-item label="搜索">
|
||||
<el-input
|
||||
v-model="tableStore.table.params.searchValue"
|
||||
placeholder="输入变电站、终端"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template #operation>
|
||||
@@ -53,6 +61,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/quitRunningDevice/list',
|
||||
method: 'POST',
|
||||
publicHeight: 65,
|
||||
filename:'终端状态管理',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
@@ -216,6 +225,49 @@ const tableStore = new TableStore({
|
||||
// }
|
||||
// }
|
||||
tableStore.table.params.deviceType = 1
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.devOriginalStatus =
|
||||
item.devOriginalStatus == 0
|
||||
? '运行'
|
||||
: item.devOriginalStatus == 1
|
||||
? '检修'
|
||||
: item.devOriginalStatus == 2
|
||||
? '停运'
|
||||
: item.devOriginalStatus == 3
|
||||
? '调试'
|
||||
: item.devOriginalStatus == 4
|
||||
? '退运'
|
||||
: '/'
|
||||
item.devStatus =
|
||||
item.devStatus == 0
|
||||
? '运行'
|
||||
: item.devStatus == 1
|
||||
? '检修'
|
||||
: item.devStatus == 2
|
||||
? '停运'
|
||||
: item.devStatus == 3
|
||||
? '调试'
|
||||
: item.devStatus == 4
|
||||
? '退运'
|
||||
: '/'
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: item.status == 4
|
||||
? '已取消'
|
||||
: item.status == 5
|
||||
? '新增'
|
||||
: '/'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
@@ -245,17 +297,15 @@ const deleteEven = () => {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
}).then(() => {
|
||||
deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
/** 流程实例详情 */
|
||||
@@ -309,16 +359,20 @@ watch(
|
||||
)
|
||||
|
||||
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 getRunningDeviceById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
deviceQuitPopup.value.open('重新发起', 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 getRunningDeviceById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
deviceQuitPopup.value.open('重新发起', res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<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-option
|
||||
v-for="item in statusSelect"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否解决">
|
||||
<el-select v-model="tableStore.table.params.dealState" clearable placeholder="请选择是否解决">
|
||||
<el-option label="未解决" value="0"></el-option>
|
||||
<!-- <el-option label="全部" value="1"></el-option> -->
|
||||
<!-- <el-option label="已解决" value="1"></el-option> -->
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
@@ -65,6 +69,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/warningLeaflet/alarmPageData',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'告警单列表',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
@@ -407,6 +412,34 @@ const tableStore = new TableStore({
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
|
||||
tableStore.table.params.currentPage = tableStore.table.params.pageNum
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.dealState=item.dealState==0?'未解决':item.dealState==1?'已解决':'/'
|
||||
item.problemType =
|
||||
item.problemType == 1
|
||||
? '技术监督计划'
|
||||
: item.problemType == 2
|
||||
? '在线监测超标问题'
|
||||
: item.problemType == 3
|
||||
? '用户投诉问题'
|
||||
: '试运行监测点问题'
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: item.status == 4
|
||||
? '已取消'
|
||||
: item.status == 5
|
||||
? '新增'
|
||||
: '/'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
// 禁止点击
|
||||
@@ -428,19 +461,15 @@ const deleteEven = () => {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
deleteWarningLeaflet(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
}).then(() => {
|
||||
deleteWarningLeaflet(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
/**取消流程操作*/
|
||||
@@ -485,46 +514,48 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
|
||||
}
|
||||
|
||||
const props = defineProps(['id', 'businessKey'])
|
||||
watch(() => props.id, async (newValue, oldValue) => {
|
||||
if (newValue === 'null') return // 直接返回,避免后续逻辑执行
|
||||
let fullId = newValue.split('@')[0]
|
||||
let nowTime = Date.now()
|
||||
const routeTime = Number(newValue.split('@')[1])
|
||||
watch(
|
||||
() => props.id,
|
||||
async (newValue, oldValue) => {
|
||||
if (newValue === 'null') return // 直接返回,避免后续逻辑执行
|
||||
let 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 || fullId == 'null') return // 路由时间超过500ms,则不执行
|
||||
await getById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT || fullId == 'null') return // 路由时间超过500ms,则不执行
|
||||
await getById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
if (props.businessKey == '3') {
|
||||
feedbackPopup.value.open(
|
||||
'填报告警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.supervisionReport,
|
||||
res.data.reformAdvice
|
||||
)
|
||||
} else {
|
||||
feedbackPopup.value.open(
|
||||
'重新填报告警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.supervisionReport,
|
||||
res.data.reformAdvice,
|
||||
res.data.takeStep,
|
||||
res.data.reportPath,
|
||||
res.data.reformAdvice
|
||||
)
|
||||
if (res && res.code == 'A0000') {
|
||||
if (props.businessKey == '3') {
|
||||
feedbackPopup.value.open(
|
||||
'填报告警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.supervisionReport,
|
||||
res.data.reformAdvice
|
||||
)
|
||||
} else {
|
||||
feedbackPopup.value.open(
|
||||
'重新填报告警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.supervisionReport,
|
||||
res.data.reformAdvice,
|
||||
res.data.takeStep,
|
||||
res.data.reportPath,
|
||||
res.data.reformAdvice
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
}, { immediate: true })
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
|
||||
</template>
|
||||
@@ -16,7 +16,7 @@ import TableHeader from '@/components/table/header/index.vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import FeedbackPopup from '@/views/pqs/supervise/technology/feedbackPopup.vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import {cancelFeedback, getById} from '@/api/supervision-boot/leaflet'
|
||||
import { cancelFeedback, getById } from '@/api/supervision-boot/leaflet'
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { deleteWarningLeaflet } from '@/api/supervision-boot/delete/index'
|
||||
@@ -31,6 +31,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/warningLeaflet/warningPageData',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'预警单列表',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
@@ -38,7 +39,6 @@ const tableStore = new TableStore({
|
||||
},
|
||||
{
|
||||
title: '序号',
|
||||
|
||||
align: 'center',
|
||||
width: 80,
|
||||
formatter: (row: any) => {
|
||||
@@ -258,6 +258,33 @@ const tableStore = new TableStore({
|
||||
],
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.currentPage = tableStore.table.params.pageNum
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.problemType =
|
||||
item.problemType == 1
|
||||
? '技术监督计划'
|
||||
: item.problemType == 2
|
||||
? '在线监测超标问题'
|
||||
: item.problemType == 3
|
||||
? '用户投诉问题'
|
||||
: '试运行监测点问题'
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: item.status == 4
|
||||
? '已取消'
|
||||
: item.status == 5
|
||||
? '新增'
|
||||
: '/'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -281,13 +308,11 @@ const deleteEven = () => {
|
||||
message: '请选择要删除的数据'
|
||||
})
|
||||
} else {
|
||||
|
||||
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteWarningLeaflet(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
@@ -295,9 +320,7 @@ const deleteEven = () => {
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
/**取消流程操作*/
|
||||
@@ -332,41 +355,45 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
|
||||
})
|
||||
}
|
||||
|
||||
const props = defineProps(['id','businessKey'])
|
||||
watch(() => props.id, async (newValue, oldValue) => {
|
||||
if (newValue === 'null') return // 直接返回,避免后续逻辑执行
|
||||
let 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 || fullId == 'null') return // 路由时间超过500ms,则不执行
|
||||
await getById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
if(props.businessKey == '3'){
|
||||
feedbackPopup.value.open(
|
||||
'填报预警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.reportPath,
|
||||
res.data.reformAdvice
|
||||
)
|
||||
}else{
|
||||
feedbackPopup.value.open(
|
||||
'重新填报预警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.reportPath,
|
||||
res.data.reformAdvice,
|
||||
res.data.takeStep,
|
||||
res.data.reportPath
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
}, {immediate: true})
|
||||
const props = defineProps(['id', 'businessKey'])
|
||||
watch(
|
||||
() => props.id,
|
||||
async (newValue, oldValue) => {
|
||||
if (newValue === 'null') return // 直接返回,避免后续逻辑执行
|
||||
let 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 || fullId == 'null') return // 路由时间超过500ms,则不执行
|
||||
await getById(fullId).then(res => {
|
||||
if (res && res.code == 'A0000') {
|
||||
if (props.businessKey == '3') {
|
||||
feedbackPopup.value.open(
|
||||
'填报预警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.reportPath,
|
||||
res.data.reformAdvice
|
||||
)
|
||||
} else {
|
||||
feedbackPopup.value.open(
|
||||
'重新填报预警反馈单',
|
||||
res.data.id,
|
||||
res.data.status,
|
||||
res.data.issueDetail,
|
||||
res.data.problemPath,
|
||||
res.data.reportPath,
|
||||
res.data.reformAdvice,
|
||||
res.data.takeStep,
|
||||
res.data.reportPath
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
||||
@@ -219,7 +219,7 @@ const submit = async (flag: boolean) => {
|
||||
ElMessage.success('重新发起成功')
|
||||
tableStore.index()
|
||||
dialogVisible.value = false
|
||||
}).catch(() => { loading.value = false })
|
||||
})
|
||||
} else {
|
||||
//此时该告警单处于待反馈状态
|
||||
await addFeedback(subForm).then(res => {
|
||||
@@ -227,7 +227,7 @@ const submit = async (flag: boolean) => {
|
||||
ElMessage.success('申请成功')
|
||||
tableStore.index()
|
||||
dialogVisible.value = false
|
||||
}).catch(() => { loading.value = false })
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -241,21 +241,10 @@ defineExpose({ open })
|
||||
|
||||
let uploadName = ref('')
|
||||
const choose = (e: any) => {
|
||||
const fileExtension = e.name.split('.')[1];
|
||||
if (fileExtension === 'doc' || fileExtension === 'docx' || fileExtension === 'pdf') {
|
||||
// 文件类型不符合要求,提示用户
|
||||
uploadFile(e.raw, '/supervision/').then(res => {
|
||||
reportFilePath.value = res.data.name
|
||||
ElMessage.success('上传成功!');
|
||||
// form.value.reportPath = res.data.name
|
||||
})
|
||||
} else {
|
||||
uploadRef.value!.clearFiles()
|
||||
ElMessage.error('请选择 .doc 或 .docx 或 .pdf 格式的文件!');
|
||||
}
|
||||
|
||||
|
||||
|
||||
uploadFile(e.raw, '/supervision/').then(res => {
|
||||
reportFilePath.value = res.data.name
|
||||
// form.value.reportPath = res.data.name
|
||||
})
|
||||
}
|
||||
|
||||
const handleExceed: UploadProps['onExceed'] = files => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader area ref='TableHeaderRef'>
|
||||
<TableHeader area ref='TableHeaderRef' showExport>
|
||||
<template #select>
|
||||
<el-form-item label='运行状态'>
|
||||
<el-select v-model="tableStore.table.params.runF" clearable placeholder="请选择运行状态">
|
||||
@@ -13,7 +13,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='信息查询'>
|
||||
<el-input style="width:200px;" placeholder="电站名称,终端编号,型号" v-model='tableStore.table.params.searchValue' maxlength="32" show-word-limit clearable></el-input>
|
||||
<el-input style="width:200px;" placeholder="电站名称,终端编号,型号" v-model='tableStore.table.params.searchValue' clearable></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</template>
|
||||
@@ -44,12 +44,11 @@ const tableStore = new TableStore({
|
||||
url: '/device-boot/runManage/getDeviceLedger',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'终端台账',
|
||||
column: [
|
||||
{
|
||||
title: '序号', width: 80, formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
}
|
||||
},
|
||||
{ title: '序号', width: 80,formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
} },
|
||||
{
|
||||
field: 'areaName',
|
||||
title: '省公司',
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader ref="TableHeaderRef">
|
||||
<TableHeader ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<el-form-item label="项目名称">
|
||||
<el-input style="width: 200px" placeholder="请输入项目名称" v-model="tableStore.table.params.projectName"
|
||||
clearable maxlength="32" show-word-limit></el-input>
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="所在地市">
|
||||
<el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市">
|
||||
@@ -16,8 +16,7 @@
|
||||
<template #operation>
|
||||
<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" type="primary" @click="exportExcelTemplate"
|
||||
:loading="loading">模板下载</el-button>
|
||||
<el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate" :loading="loading">模板下载</el-button>
|
||||
<el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
@@ -61,16 +60,15 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/userReport/getInterferenceUserPage',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'干扰源用户台账',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
type: 'checkbox'
|
||||
},
|
||||
{
|
||||
title: '序号', width: 80, formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
}
|
||||
},
|
||||
{ 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: 'substation', title: '厂站名称', minWidth: 100 },
|
||||
{ field: 'projectName', title: '项目名称', minWidth: 170 },
|
||||
@@ -261,20 +259,20 @@ const deleteEven = () => {
|
||||
} else {
|
||||
|
||||
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
@@ -346,9 +344,9 @@ const getUserTypeName = (userType: any) => {
|
||||
return '新建电网工程'
|
||||
}
|
||||
//导出模板
|
||||
const exportExcelTemplate = async () => {
|
||||
const exportExcelTemplate = async() => {
|
||||
loading.value = true
|
||||
await downloadSensitiveReportTemplate().then((res: any) => {
|
||||
await downloadSensitiveReportTemplate().then((res: any) => {
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.ms-excel'
|
||||
})
|
||||
@@ -362,7 +360,7 @@ const exportExcelTemplate = async () => {
|
||||
})
|
||||
await setTimeout(() => {
|
||||
loading.value = false
|
||||
}, 0)
|
||||
},0)
|
||||
}
|
||||
|
||||
//批量导入用户数据
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader area ref="TableHeaderRef">
|
||||
<TableHeader area ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<el-form-item label='运行状态'>
|
||||
<el-select v-model="tableStore.table.params.runF" clearable placeholder="请选择运行状态">
|
||||
<el-option v-for="item in runFlagList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
<el-option
|
||||
v-for="item in runFlagList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="信息查询">
|
||||
<el-input style="width:240px;" placeholder="电站名称,终端编号,监测点名称"
|
||||
v-model="tableStore.table.params.searchValue" maxlength="32" show-word-limit
|
||||
clearable></el-input>
|
||||
<el-input style="width:240px;" placeholder="电站名称,终端编号,监测点名称" v-model="tableStore.table.params.searchValue" clearable></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</template>
|
||||
@@ -43,12 +45,11 @@ const tableStore = new TableStore({
|
||||
publicHeight: 65,
|
||||
isWebPaging: true,
|
||||
method: 'POST',
|
||||
filename:'监测点台账',
|
||||
column: [
|
||||
{
|
||||
title: '序号', width: 80, formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
}
|
||||
},
|
||||
{ title: '序号', width: 80,formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
} },
|
||||
|
||||
{
|
||||
field: 'areaName',
|
||||
@@ -136,7 +137,7 @@ const tableStore = new TableStore({
|
||||
tableStore.table.params.serverName = 'harmonic-boot'
|
||||
|
||||
tableStore.table.params.runFlag = []
|
||||
if (tableStore.table.params.runF != null) {
|
||||
if(tableStore.table.params.runF!=null){
|
||||
tableStore.table.params.runFlag = [tableStore.table.params.runF]
|
||||
}
|
||||
tableStore.table.params.comFlag = [0, 1]
|
||||
@@ -147,12 +148,12 @@ const tableStore = new TableStore({
|
||||
}
|
||||
})
|
||||
|
||||
tableStore.table.params.runF = null
|
||||
tableStore.table.params.runFlag = []
|
||||
tableStore.table.params.searchValue = ''
|
||||
tableStore.table.params.runF=null
|
||||
tableStore.table.params.runFlag=[]
|
||||
tableStore.table.params.searchValue=''
|
||||
|
||||
|
||||
const runFlagList = [{ id: 0, name: '运行' }, { id: 1, name: '检修' }, { id: 2, name: '停运' }, { id: 3, name: '调试' }, { id: 4, name: '退运' }]
|
||||
const runFlagList = [{id:0,name:'运行'},{id:1,name:'检修'},{id:2,name:'停运'},{id:3,name:'调试'},{id:4,name:'退运'}]
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
onMounted(() => {
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
draggable
|
||||
class='cn-operate-dialog'
|
||||
v-model='eventDataUploadVisible'
|
||||
:title='title'
|
||||
style='width: 415px'
|
||||
top='25vh'
|
||||
class="cn-operate-dialog"
|
||||
v-model="eventDataUploadVisible"
|
||||
:title="title"
|
||||
style="width: 415px"
|
||||
top="25vh"
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' ref='formRef'>
|
||||
<el-form-item label='用户数据文件'>
|
||||
<el-form :inline="false" :model="form" label-width="120px" ref="formRef">
|
||||
<el-form-item label="用户数据文件">
|
||||
<el-upload
|
||||
v-model:file-list='fileList'
|
||||
ref='uploadEventData'
|
||||
action=''
|
||||
:limit='1'
|
||||
:on-exceed='handleExceed'
|
||||
:auto-upload='false'
|
||||
:on-change='choose'
|
||||
v-model:file-list="fileList"
|
||||
ref="uploadEventData"
|
||||
action=""
|
||||
:limit="1"
|
||||
:on-exceed="handleExceed"
|
||||
:auto-upload="false"
|
||||
:on-change="choose"
|
||||
>
|
||||
<template #trigger>
|
||||
<el-button type='primary'>选择数据文件</el-button>
|
||||
<el-button type="primary">选择数据文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='eventDataUploadVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="eventDataUploadVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, inject } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { ElMessage } from 'element-plus'
|
||||
@@ -95,11 +95,6 @@ const submit = async () => {
|
||||
if (valid) {
|
||||
let data = new FormData()
|
||||
data.append('file', form.file)
|
||||
const allowedTypes = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']
|
||||
if (!allowedTypes.includes(form.file.type)) {
|
||||
return ElMessage.warning('只能上传 Excel 文件 (.xls 或 .xlsx)!')
|
||||
}
|
||||
|
||||
if (title.value === '导入干扰源用户') {
|
||||
await importSensitiveReportData(data)
|
||||
.then(res => handleImportResponse(title.value, res))
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader ref="TableHeaderRef">
|
||||
<TableHeader ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<el-form-item label="项目名称">
|
||||
<el-input style="width: 200px" placeholder="请输入项目名称" v-model="tableStore.table.params.projectName"
|
||||
clearable maxlength="32" show-word-limit></el-input>
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="所在地市">
|
||||
<el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市">
|
||||
@@ -56,6 +56,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/userReport/getSensitiveUserPage',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'敏感及重要用户台账',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader datePicker area nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader datePicker area nextFlag theCurrentTime ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<el-form-item label="信息查询">
|
||||
<el-input
|
||||
@@ -8,7 +8,6 @@
|
||||
placeholder="请输入变电站/监测点名称"
|
||||
v-model="tableStore.table.params.searchValue"
|
||||
clearable
|
||||
maxlength="32" show-word-limit
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
@@ -33,12 +32,8 @@ const tableStore = new TableStore({
|
||||
method: 'POST',
|
||||
isWebPaging: true,
|
||||
paramsPOST: true,
|
||||
filename:'变电站台账',
|
||||
column: [
|
||||
{
|
||||
title: '序号', width: 80, formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
}
|
||||
},
|
||||
{ field: 'deptName', title: '所在地市', minWidth: 100 },
|
||||
{ field: 'substationName', title: '变电站名称', minWidth: 100 },
|
||||
|
||||
@@ -47,7 +42,7 @@ const tableStore = new TableStore({
|
||||
title: '电网侧监测点名称',
|
||||
minWidth: 150,
|
||||
formatter: (obj: any) => {
|
||||
return obj.cellValue.length == 0 ? '/' : obj.cellValue.join('\n')
|
||||
return obj.cellValue.length == 0 ? '/' : obj.cellValue.join('\n ')
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -55,7 +50,7 @@ const tableStore = new TableStore({
|
||||
title: '非电网侧监测点名称',
|
||||
minWidth: 150,
|
||||
formatter: (obj: any) => {
|
||||
return obj.cellValue.length == 0 ? '/' : obj.cellValue.join('\n')
|
||||
return obj.cellValue.length == 0 ? '/' : obj.cellValue.join('\n ')
|
||||
}
|
||||
},
|
||||
{ field: 'alarmFreq', title: '告警频次', minWidth: 80 },
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<!---终端入网检测-->
|
||||
<template>
|
||||
<TableHeader area ref='TableHeaderRef'>
|
||||
<TableHeader area ref='TableHeaderRef' showExport>
|
||||
<template #select>
|
||||
<el-form-item label='搜索'>
|
||||
<el-input
|
||||
v-model='tableStore.table.params.searchValue'
|
||||
placeholder='输入变电站.终端名称'
|
||||
clearable maxlength="32" show-word-limit
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='流程状态'>
|
||||
@@ -74,8 +74,9 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/checkDevice/list',
|
||||
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: 'substation', title: '变电站' },
|
||||
@@ -217,7 +218,24 @@ const tableStore = new TableStore({
|
||||
tableStore.table.params.deptId = tableStore.table.params.deptIndex
|
||||
tableStore.table.params.statveList = [2]
|
||||
// tableStore.table.params.relationUserName = tableStore.table.params.userName
|
||||
}
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: item.status == 4
|
||||
? '已取消':item.status == 5
|
||||
? '同步台账成功':'/'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
tableStore.table.params.state = ''
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<!---终端入网检测-->
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll showExport ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="搜索">
|
||||
<el-input v-model="tableStore.table.params.searchValue" placeholder="输入变电站、终端、监测点名称"
|
||||
clearable maxlength="32" show-word-limit style="width: 230px"></el-input>
|
||||
clearable style="width: 230px"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程状态">
|
||||
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
|
||||
@@ -53,6 +53,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/tempLinedebug/list',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'监测点联调列表',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
@@ -218,6 +219,23 @@ const tableStore = new TableStore({
|
||||
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
|
||||
tableStore.table.params.statveList = [2]
|
||||
// tableStore.table.params.relationUserName = tableStore.table.params.userName
|
||||
},
|
||||
exportProcessingData: () => {
|
||||
tableStore.table.allData = tableStore.table.allData.filter(item => {
|
||||
item.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: item.status == 4
|
||||
? '已取消':item.status == 5
|
||||
? '同步台账成功':'/'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
|
||||
@@ -1,213 +1,203 @@
|
||||
<template>
|
||||
<el-dialog v-model='dialogFormVisible' :title='title' width='65%' :append-to-body='true' :before-close='close'
|
||||
:close-on-click-modal='false' :lazy='true' draggable>
|
||||
<el-dialog v-model="dialogFormVisible" :title="title" width="65%" :append-to-body="true" :before-close="close"
|
||||
:close-on-click-modal="false" :lazy="true" draggable>
|
||||
<!--监测点信息录入 基础信息+监测点信息 监测点信息要有用户名称、用户状态 -->
|
||||
<el-form :model='form' :validate-on-rule-change='false' :scroll-to-error='true' :rules='rules' ref='ruleFormRef'
|
||||
label-width='auto' label-position='right' class='form-two'>
|
||||
<div class='fixed_upload' v-if='false'>
|
||||
<el-upload v-model:file-list='form.lineFilePath' ref='uploadRef' action='' accept='.xls,.xlsx'
|
||||
:limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
|
||||
:on-progress="uploadFileName('lineFilePath')" :on-remove='removeFile'>
|
||||
<el-form :model="form" :validate-on-rule-change="false" :scroll-to-error="true" :rules="rules" ref="ruleFormRef"
|
||||
label-width="auto" label-position="right" class="form-two">
|
||||
<div class="fixed_upload" v-if="false">
|
||||
<el-upload v-model:file-list="form.lineFilePath" ref="uploadRef" action="" accept=".xls,.xlsx"
|
||||
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('lineFilePath')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>监测点台账信息</el-button>
|
||||
<el-button type="primary">监测点台账信息</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</div>
|
||||
<!-- 基础信息 -->
|
||||
<el-form-item v-if='false' for='-' label='填报人:' prop='reporterName'>
|
||||
<el-input v-model.trim='form.reporterName' autocomplete='off' placeholder='请输入填报人'
|
||||
:disabled='true' />
|
||||
<el-form-item v-if="false" for="-" label="填报人:" prop="reporterName">
|
||||
<el-input v-model="form.reporterName" autocomplete="off" placeholder="请输入填报人" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if='false' for='-' label='填报日期:' prop='reportDate'>
|
||||
<el-date-picker style='width: 100%' v-model='form.reportDate' :disabled='true' type='date'
|
||||
format='YYYY-MM-DD' value-format='YYYY-MM-DD' placeholder='请选择填报日期' />
|
||||
<el-form-item v-if="false" for="-" label="填报日期:" prop="reportDate">
|
||||
<el-date-picker style="width: 100%" v-model="form.reportDate" :disabled="true" type="date"
|
||||
format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请选择填报日期" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if='false' for='-' label='填报部门:' prop='orgId'>
|
||||
<el-input v-model.trim='form.orgName' :disabled='true' autocomplete='off' />
|
||||
<el-form-item v-if="false" for="-" label="填报部门:" prop="orgId">
|
||||
<el-input v-model="form.orgName" :disabled="true" autocomplete="off" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if='false' 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='true'
|
||||
:disabled-date='disabledDate'
|
||||
placeholder='请选择工程投产日期' />
|
||||
<el-form-item v-if="false" 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="true" :disabled-date="disabledDate"
|
||||
placeholder="请选择工程投产日期" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if='false' for='-' label='所在地市:' prop='city'>
|
||||
<el-select v-model='form.city' clearable style='width: 100%' :disabled='true'
|
||||
placeholder='请选择所在地市'>
|
||||
<el-option v-for='item in areaOptionList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item v-if="false" for="-" label="所在地市:" prop="city">
|
||||
<el-select v-model="form.city" clearable style="width: 100%" :disabled="true" placeholder="请选择所在地市">
|
||||
<el-option v-for="item in areaOptionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if='false' for='-' label='用户状态:' prop='userStatus'>
|
||||
<el-select v-model='form.userStatus' placeholder='请选择用户状态' :disabled='true' style='width: 100%'>
|
||||
<el-option v-for='(item, index) in userStateList' :label='item.name' :value='item.id'
|
||||
:disabled="item.name != '建设'" :key='index' />
|
||||
<el-form-item v-if="false" for="-" label="用户状态:" prop="userStatus">
|
||||
<el-select v-model="form.userStatus" placeholder="请选择用户状态" :disabled="true" style="width: 100%">
|
||||
<el-option v-for="(item, index) in userStateList" :label="item.name" :value="item.id"
|
||||
:disabled="item.name != '建设'" :key="index" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='关联干扰源:' prop='userName'>
|
||||
<el-select v-model='form.userName' clearable style='width: 100%' placeholder='请选择关联干扰源'
|
||||
@change='changeUserName'>
|
||||
<el-option v-for='(item, index) in userNameList' :key='index' :label='item.projectName'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="关联干扰源:" prop="userName">
|
||||
<el-select v-model="form.userName" clearable style="width: 100%" placeholder="请选择关联干扰源"
|
||||
@change="changeUserName">
|
||||
<el-option v-for="(item, index) in userNameList" :key="index" :label="item.projectName"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='关联终端:' prop='monitoringTerminalCode'>
|
||||
<el-select v-model='form.monitoringTerminalCode' clearable style='width: 100%' filterable
|
||||
placeholder='请选择关联终端' @change='changeDevice'>
|
||||
<el-option v-for='(item, index) in monitoringTerminalList' :key='index'
|
||||
:label='item.monitoringTerminalCode' :value='item.id'></el-option>
|
||||
<el-form-item for="-" label="关联终端:" prop="monitoringTerminalCode">
|
||||
<el-select v-model="form.monitoringTerminalCode" clearable style="width: 100%" filterable
|
||||
placeholder="请选择关联终端" @change="changeDevice">
|
||||
<el-option v-for="(item, index) in monitoringTerminalList" :key="index"
|
||||
:label="item.monitoringTerminalCode" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='接入母线:' prop='connectedBus'>
|
||||
<el-input v-model.trim='form.connectedBus' autocomplete='off' placeholder='请输入接入母线 如:110kV4母线'
|
||||
maxlength='32' show-word-limit />
|
||||
<el-form-item for="-" label="接入母线:" prop="connectedBus">
|
||||
<el-input v-model="form.connectedBus" autocomplete="off" placeholder="请输入接入母线 如:110kV4母线" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='监测点运行状态:' prop='operationStatus'>
|
||||
<el-select v-model='form.operationStatus' placeholder='请选择运行状态'>
|
||||
<el-option v-for='(item, index) in operationStatusList' :label='item.name' :value='item.id'
|
||||
:key='index' />
|
||||
<el-form-item for="-" label="监测点运行状态:" prop="operationStatus">
|
||||
<el-select v-model="form.operationStatus" placeholder="请选择运行状态">
|
||||
<el-option v-for="(item, index) in operationStatusList" :label="item.name" :value="item.id"
|
||||
:key="index" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='监测点名称:' prop='lineName'>
|
||||
<el-input v-model.trim='form.lineName' autocomplete='off' placeholder='请输入监测点名称' maxlength='32'
|
||||
show-word-limit />
|
||||
<el-form-item for="-" label="监测点名称:" prop="lineName">
|
||||
<el-input v-model="form.lineName" autocomplete="off" placeholder="请输入监测点名称" />
|
||||
</el-form-item>
|
||||
<!-- {{ voltageLevelList[2].value * 10 }}:{{ 1 }} -->
|
||||
<el-form-item for='-' label='监测点电压等级:' prop='voltageLevel'>
|
||||
<el-select v-model='form.voltageLevel' clearable style='width: 100%' placeholder='请选择监测点电压等级'
|
||||
filterable
|
||||
@change='changevoltageDeviationLimit'>
|
||||
<el-option v-for='item in voltageLevelList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="监测点电压等级:" prop="voltageLevel">
|
||||
<el-select v-model="form.voltageLevel" clearable style="width: 100%" placeholder="请选择监测点电压等级" filterable
|
||||
@change="changevoltageDeviationLimit">
|
||||
<el-option v-for="item in voltageLevelList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='PT变比:' prop='pt1'>
|
||||
<el-input style='width: 48%' v-model.trim='form.pt1' autocomplete='off' placeholder='请输入PT变比'
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" maxlength='8' show-word-limit />
|
||||
<el-input style='width: 48%' v-model.trim='form.pt2' autocomplete='off' placeholder='请输入PT变比'
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" maxlength='8' show-word-limit />
|
||||
<el-form-item for="-" label="PT变比:" prop="pt1">
|
||||
<el-input style="width: 48%" v-model="form.pt1" autocomplete="off" placeholder="请输入PT变比"
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" />
|
||||
<el-input style="width: 48%" v-model="form.pt2" autocomplete="off" placeholder="请输入PT变比"
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item for='-' label='CT变比:' prop='ct1'>
|
||||
<el-input v-model.trim='form.ct1' style='width: 48%' autocomplete='off'
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder='请输入CT变比' maxlength='8'
|
||||
show-word-limit />
|
||||
<el-input v-model.trim='form.ct2' style='width: 48%' autocomplete='off'
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder='请输入CT变比' maxlength='8'
|
||||
show-word-limit />
|
||||
<el-form-item for="-" label="CT变比:" prop="ct1">
|
||||
<el-input v-model="form.ct1" style="width: 48%" autocomplete="off"
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" />
|
||||
<el-input v-model="form.ct2" style="width: 48%" autocomplete="off"
|
||||
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入CT变比" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='短路容量:' prop='shortCapacity'>
|
||||
<el-input v-model.trim='form.shortCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
<el-form-item for="-" label="短路容量:" prop="shortCapacity">
|
||||
<el-input v-model="form.shortCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入短路容量' maxlength='6' show-word-limit>
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入短路容量">
|
||||
<template #append>MVA</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='协议容量:' prop='dealCapacity'>
|
||||
<el-input v-model.trim='form.dealCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
<el-form-item for="-" label="协议容量:" prop="dealCapacity">
|
||||
<el-input v-model="form.dealCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入协议容量' maxlength='6' show-word-limit>
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入协议容量">
|
||||
<template #append>MVA</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='终端容量:' prop='devCapacity'>
|
||||
<el-input v-model.trim='form.devCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
<el-form-item for="-" label="终端容量:" prop="devCapacity">
|
||||
<el-input v-model="form.devCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入终端容量' maxlength='6' show-word-limit>
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入终端容量">
|
||||
<template #append>MVA</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='基准容量:' prop='standardCapacity'>
|
||||
<el-input v-model.trim='form.standardCapacity' autocomplete='off' oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
<el-form-item for="-" label="基准容量:" prop="standardCapacity">
|
||||
<el-input v-model="form.standardCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder='请输入基准容量' maxlength='6' show-word-limit>
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入基准容量">
|
||||
<template #append>MVA</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='干扰源类型:' prop='loadType'>
|
||||
<el-select v-model='form.loadType' style='width: 100%' placeholder='请选择干扰源类型'
|
||||
@change='changeLoadType'>
|
||||
<el-option v-for='item in loadTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="干扰源类型:" prop="loadType">
|
||||
<el-select v-model="form.loadType" style="width: 100%" placeholder="请选择干扰源类型" @change="changeLoadType">
|
||||
<el-option v-for="item in loadTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='干扰源类别:' prop='businessType'>
|
||||
<el-select v-model='form.businessType' style='width: 100%' placeholder='请选择干扰源类别'>
|
||||
<el-option v-for='item in businessTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="干扰源类别:" prop="businessType">
|
||||
<el-select v-model="form.businessType" style="width: 100%" placeholder="请选择干扰源类别">
|
||||
<el-option v-for="item in businessTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='接线方式:'>
|
||||
<el-select v-model='form.ptType' clearable style='width: 100%' placeholder='请选择接线方式'>
|
||||
<el-option v-for='item in ptTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="接线方式:">
|
||||
<el-select v-model="form.ptType" clearable style="width: 100%" placeholder="请选择接线方式">
|
||||
<el-option v-for="item in ptTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='线路号:'>
|
||||
<el-select v-model='form.num' clearable style='width: 100%' placeholder='请选择线路号'>
|
||||
<el-option v-for='item in numList' :key='item.id' :label='item.name' :value='item.id'></el-option>
|
||||
<el-form-item for="-" label="线路号:">
|
||||
<el-select v-model="form.num" clearable style="width: 100%" placeholder="请选择线路号">
|
||||
<el-option v-for="item in numList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='电压偏差上限:' prop='voltageDeviationUpperLimit'>
|
||||
<el-input-number style='width: 100%' v-model='form.voltageDeviationUpperLimit' />
|
||||
<el-form-item for="-" label="电压偏差上限:" prop="voltageDeviationUpperLimit">
|
||||
<el-input-number style="width: 100%" v-model="form.voltageDeviationUpperLimit" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='电压偏差下限:' prop='voltageDeviationLowerLimit'>
|
||||
<el-input-number style='width: 100%' v-model='form.voltageDeviationLowerLimit' />
|
||||
<el-form-item for="-" label="电压偏差下限:" prop="voltageDeviationLowerLimit">
|
||||
<el-input-number style="width: 100%" v-model="form.voltageDeviationLowerLimit" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='测量间隔:' prop='timeInterval'>
|
||||
<el-select v-model='form.timeInterval' placeholder='请选择测量间隔'>
|
||||
<el-option v-for='(item, index) in timeIntervalList' :label='item.name' :value='item.id'
|
||||
:key='index' />
|
||||
<el-form-item for="-" label="测量间隔:" prop="timeInterval">
|
||||
<el-select v-model="form.timeInterval" placeholder="请选择测量间隔">
|
||||
<el-option v-for="(item, index) in timeIntervalList" :label="item.name" :value="item.id"
|
||||
:key="index" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item for="-" label="上送网公司编码:">
|
||||
<el-form-item for="-" label="上送网公司编码:">
|
||||
<el-input v-model="form.lineId" autocomplete="off" placeholder="请输入上送网公司编码" />
|
||||
</el-form-item> -->
|
||||
<el-form-item for='-' label='监测点性质:' prop='pointNature'>
|
||||
<el-select v-model='form.pointNature' placeholder='请选择监测点性质'>
|
||||
<el-option v-for='(item, index) in pointNatureList' :label='item.name' :value='item.id'
|
||||
:key='index' />
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="监测点性质:" prop="pointNature">
|
||||
<el-select v-model="form.pointNature" placeholder="请选择监测点性质">
|
||||
<el-option v-for="(item, index) in pointNatureList" :label="item.name" :value="item.id"
|
||||
:key="index" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='是否参与统计:' prop='isStatistical'>
|
||||
<el-radio-group v-model='form.isStatistical'>
|
||||
<el-radio :value='1'>是</el-radio>
|
||||
<el-radio :value='0'>否</el-radio>
|
||||
<el-form-item for="-" label="是否参与统计:" prop="isStatistical">
|
||||
<el-radio-group v-model="form.isStatistical">
|
||||
<el-radio :value="1">是</el-radio>
|
||||
<el-radio :value="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item for="-" label="对象名称(对端):" prop="objName">
|
||||
<el-input v-model="form.objName" autocomplete="off" placeholder="请输入监测点对象名称" />
|
||||
</el-form-item> -->
|
||||
<el-form-item for='-' label='电网侧变电站:' prop='powerSubstationName'>
|
||||
<el-input v-model.trim='form.powerSubstationName' autocomplete='off' placeholder='请输入电网侧变电站'
|
||||
maxlength='32' show-word-limit />
|
||||
<el-form-item for="-" label="电网侧变电站:" prop="powerSubstationName">
|
||||
<el-input v-model="form.powerSubstationName" autocomplete="off" placeholder="请输入电网侧变电站" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='是否并网点:' prop='isGridConnectionPoint'>
|
||||
<el-radio-group v-model='form.isGridConnectionPoint'>
|
||||
<el-radio :value='1'>是</el-radio>
|
||||
<el-radio :value='0'>否</el-radio>
|
||||
<el-form-item for="-" label="是否并网点:" prop="isGridConnectionPoint">
|
||||
<el-radio-group v-model="form.isGridConnectionPoint">
|
||||
<el-radio :value="1">是</el-radio>
|
||||
<el-radio :value="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='主接线图:' prop='mainWiringDiagram' class='uploadFile'>
|
||||
<el-upload v-model:file-list='form.mainWiringDiagram' ref='uploadRef' action='' :accept='acceptType'
|
||||
:limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
|
||||
:on-progress="uploadFileName('mainWiringDiagram')" :on-remove='removeFile'>
|
||||
<el-form-item for="-" label="主接线图:" prop="mainWiringDiagram" class="uploadFile">
|
||||
<el-upload v-model:file-list="form.mainWiringDiagram" ref="uploadRef" action="" :accept="acceptType"
|
||||
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('mainWiringDiagram')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</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' @click='confirmForm(false)' :loading='loading'>提交审批</el-button>
|
||||
<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" @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, nextTick, defineEmits, watch, onUnmounted } from 'vue'
|
||||
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
|
||||
import { genFileId, ElMessage } from 'element-plus'
|
||||
@@ -220,7 +210,6 @@ import { addMointorPointFormData, getList, updateMointorPointFormData } from '@/
|
||||
import { queryByAllCode } from '@/api/system-boot/dictTree'
|
||||
import { getUserReportById } from '@/api/supervision-boot/userReport/form'
|
||||
import { getDictTreeById } from '@/api/system-boot/dictTree'
|
||||
|
||||
const emits = defineEmits(['onSubmit'])
|
||||
const dictData = useDictData()
|
||||
const dialogFormVisible = ref(false)
|
||||
@@ -418,7 +407,7 @@ const resetForm = async () => {
|
||||
devCapacity: 10, //终端容量
|
||||
standardCapacity: 10, //基准容量
|
||||
isGridConnectionPoint: 0, //是否并网点
|
||||
isStatistical: 1, // 是否参与统计
|
||||
isStatistical: 0, // 是否参与统计
|
||||
lineId: '', // 监测点编码
|
||||
lineName: '', // 监测点名称
|
||||
loadType: '', //干扰源类型
|
||||
@@ -614,8 +603,6 @@ const getDictTree = (e?: string) => {
|
||||
businessTypeList.value = []
|
||||
}
|
||||
}
|
||||
// 特殊字符正则表达式
|
||||
const specialCharRegex = /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/
|
||||
//定义校验规则
|
||||
const rules = ref({
|
||||
//基础信息
|
||||
@@ -681,16 +668,6 @@ const rules = ref({
|
||||
required: true,
|
||||
message: '请输入监测点名称',
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (specialCharRegex.test(value)) {
|
||||
callback(new Error('输入包含不允许的特殊字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
voltageLevel: [
|
||||
@@ -703,17 +680,7 @@ const rules = ref({
|
||||
connectedBus: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入接入母线',
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (specialCharRegex.test(value)) {
|
||||
callback(new Error('输入包含不允许的特殊字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
message: '请选择接入母线',
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
@@ -811,18 +778,8 @@ const rules = ref({
|
||||
powerSubstationName: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入电网侧变电站',
|
||||
message: '请选择电网侧变电站',
|
||||
trigger: 'change'
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (specialCharRegex.test(value)) {
|
||||
callback(new Error('输入包含不允许的特殊字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
isGridConnectionPoint: [
|
||||
@@ -904,8 +861,7 @@ const close = () => {
|
||||
dialogFormVisible.value = false
|
||||
emits('onSubmit')
|
||||
}
|
||||
onMounted(() => {
|
||||
})
|
||||
onMounted(() => { })
|
||||
|
||||
watch(
|
||||
() => projectList.value,
|
||||
@@ -1041,8 +997,8 @@ const confirmForm = async (flag: boolean) => {
|
||||
resetForm()
|
||||
close()
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false
|
||||
})
|
||||
} else {
|
||||
confirmFormData.id = resendId.value
|
||||
await updateMointorPointFormData(confirmFormData).then(res => {
|
||||
@@ -1056,8 +1012,8 @@ const confirmForm = async (flag: boolean) => {
|
||||
close()
|
||||
}
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// // console.log('表单验证失败')
|
||||
@@ -1071,7 +1027,7 @@ const confirmForm = async (flag: boolean) => {
|
||||
}
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
<style lang='scss' scoped>
|
||||
<style lang="scss" scoped>
|
||||
.fixed_upload {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
})?.label
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="接入场站">
|
||||
<el-descriptions-item label="关联干扰源">
|
||||
{{ detailData.userName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="关联终端">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<!---终端入网检测-->
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef" showExport>
|
||||
<template #select>
|
||||
<el-form-item label="搜索">
|
||||
<el-input v-model="tableStore.table.params.searchValue" placeholder="输入变电站、终端、监测点名称"
|
||||
clearable maxlength="32" show-word-limit style="width: 230px"></el-input>
|
||||
clearable style="width: 230px"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程状态">
|
||||
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
|
||||
@@ -56,6 +56,7 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/tempLine/list',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'监测点台账录入',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
@@ -181,6 +182,21 @@ 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.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: '已取消'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
<template>
|
||||
<el-dialog v-model='dialogFormVisible' :title='title' width='65%' :append-to-body='true' :before-close='close'
|
||||
:close-on-click-modal='false' :lazy='true' draggable>
|
||||
<el-dialog v-model="dialogFormVisible" :title="title" width="65%" :append-to-body="true" :before-close="close"
|
||||
:close-on-click-modal="false" :lazy="true" draggable>
|
||||
<!-- <el-anchor :container="containerRef" direction="vertical" type="default" :offset="30" @click="handleClick">
|
||||
<el-anchor-link href="#part1" title="基础信息" />
|
||||
<el-anchor-link href="#part2" title="终端信息" />
|
||||
<el-anchor-link href="#part3" title="附件材料" />
|
||||
</el-anchor> -->
|
||||
<!--终端信息录入 基础信息+终端信息+附件材料 -->
|
||||
<el-form :model='form' :validate-on-rule-change='false' :scroll-to-error='true' :rules='rules' ref='ruleFormRef'
|
||||
label-width='auto' class='form-two'>
|
||||
<el-form :model="form" :validate-on-rule-change="false" :scroll-to-error="true" :rules="rules" ref="ruleFormRef"
|
||||
label-width="auto" class="form-two">
|
||||
<!-- <el-tabs tab-position="left" class="tabs_form" v-model="activeName"> -->
|
||||
<el-divider content-position='left'>基础信息</el-divider>
|
||||
<el-divider content-position="left">基础信息</el-divider>
|
||||
<!-- <div id="part1" class="form-two"> -->
|
||||
<el-form-item for='-' label='填报人:' prop='reporter'>
|
||||
<el-input v-model.trim='form.reporter' autocomplete='off' placeholder='请输入填报人' :disabled='true' />
|
||||
<el-form-item for="-" label="填报人:" prop="reporter">
|
||||
<el-input v-model="form.reporter" autocomplete="off" placeholder="请输入填报人" :disabled="true" />
|
||||
</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' 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" placeholder="请选择工程投产日期" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='所在地市:' prop='city'>
|
||||
<el-select v-model='form.city' clearable style='width: 100%' placeholder='请选择所在地市'>
|
||||
<el-option v-for='item in areaOptionList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="所在地市:" prop="city">
|
||||
<el-select v-model="form.city" clearable style="width: 100%" placeholder="请选择所在地市">
|
||||
<el-option v-for="item in areaOptionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-col :span="12">
|
||||
@@ -67,301 +67,279 @@
|
||||
</el-form-item>
|
||||
-->
|
||||
<!-- </div> -->
|
||||
<el-divider content-position='left'>终端信息</el-divider>
|
||||
<el-divider content-position="left">终端信息</el-divider>
|
||||
<!-- <div id="part2" class="form-two"> -->
|
||||
<div class='fixed_upload' v-if='false'>
|
||||
<el-upload v-model:file-list='form.deviceFilePath' ref='uploadRef' action='' :accept='acceptType'
|
||||
:limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
|
||||
:on-progress="uploadFileName('deviceFilePath')" :on-remove='removeFile'>
|
||||
<div class="fixed_upload" v-if="false">
|
||||
<el-upload v-model:file-list="form.deviceFilePath" ref="uploadRef" action="" :accept="acceptType"
|
||||
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('deviceFilePath')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>终端台账信息</el-button>
|
||||
<el-button type="primary">终端台账信息</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</div>
|
||||
<el-form-item for='-' label='系统电站:' prop='customSubstationFlag'>
|
||||
<el-form-item for="-" label="系统电站:" prop="customSubstationFlag">
|
||||
<!-- 默认值 开启 -->
|
||||
<el-radio-group v-model='form.customSubstationFlag' @change='changeSubstationFlag'>
|
||||
<el-radio :value='0'>是</el-radio>
|
||||
<el-radio :value='1'>否</el-radio>
|
||||
<el-radio-group v-model="form.customSubstationFlag" @change="changeSubstationFlag">
|
||||
<el-radio :value="0">是</el-radio>
|
||||
<el-radio :value="1">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='所属供电公司:' prop='powerCompany'>
|
||||
<el-select v-model='form.powerCompany' clearable style='width: 100%' placeholder='请选择所属供电公司'
|
||||
@change='findSubstationVoltageLevel'>
|
||||
<el-option v-for='item in powerCompanyList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="所属供电公司:" prop="powerCompany">
|
||||
<el-select v-model="form.powerCompany" clearable style="width: 100%" placeholder="请选择所属供电公司"
|
||||
@change="findSubstationVoltageLevel">
|
||||
<el-option v-for="item in powerCompanyList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' v-if='form.customSubstationFlag == 0' label='并网变电站:' prop='substation'>
|
||||
<el-select v-model='form.substation' clearable style='width: 100%' placeholder='请选择并网变电站'
|
||||
filterable
|
||||
@change='changeSubstation'>
|
||||
<el-option v-for='item in substationList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" v-if="form.customSubstationFlag == 0" label="并网变电站:" prop="substation">
|
||||
<el-select v-model="form.substation" clearable style="width: 100%" placeholder="请选择并网变电站" filterable
|
||||
@change="changeSubstation">
|
||||
<el-option v-for="item in substationList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' v-if='form.customSubstationFlag == 1' label='并网变电站:' prop='substationName'>
|
||||
<el-input v-model.trim='form.substationName' autocomplete='off' placeholder='请输入并网变电站' />
|
||||
<el-form-item for="-" v-if="form.customSubstationFlag == 1" label="并网变电站:" prop="substationName">
|
||||
<el-input v-model="form.substationName" autocomplete="off" placeholder="请输入并网变电站" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='变电站电压等级:' prop='substationVoltageLevel'>
|
||||
<el-select v-model='form.substationVoltageLevel' clearable style='width: 100%'
|
||||
placeholder='请选择变压站电压等级'>
|
||||
<el-option v-for='item in voltageLevelList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="变电站电压等级:" prop="substationVoltageLevel">
|
||||
<el-select v-model="form.substationVoltageLevel" clearable style="width: 100%" placeholder="请选择变压站电压等级">
|
||||
<el-option v-for="item in voltageLevelList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='经度:' prop='longitude'>
|
||||
<el-input v-model.trim='form.longitude' :disabled='form.customSubstationFlag == 0' type='text'
|
||||
placeholder='请输入经度' />
|
||||
<el-form-item for="-" label="经度:" prop="longitude">
|
||||
<el-input v-model="form.longitude" :disabled="form.customSubstationFlag == 0" type="text"
|
||||
placeholder="请输入经度" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='纬度:' prop='latitude'>
|
||||
<el-input v-model.trim='form.latitude' :disabled='form.customSubstationFlag == 0' type='text'
|
||||
placeholder='请输入纬度' />
|
||||
<el-form-item for="-" label="纬度:" prop="latitude">
|
||||
<el-input v-model="form.latitude" :disabled="form.customSubstationFlag == 0" type="text"
|
||||
placeholder="请输入纬度" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item for='-' label='终端编码:' prop='monitoringTerminalCode'>
|
||||
<el-input v-model.trim='form.monitoringTerminalCode' autocomplete='off' placeholder='请输入终端编码'
|
||||
@input='encode' maxlength='32' show-word-limit />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item for='-' label='终端名称:' prop='monitoringTerminalName'>
|
||||
<el-input v-model.trim='form.monitoringTerminalName' autocomplete='off' placeholder='请输入终端名称'
|
||||
maxlength='32' show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='终端型号:' prop='terminalType'>
|
||||
<el-select v-model='form.terminalType' filterable clearable style='width: 100%'
|
||||
placeholder='请选择终端型号'>
|
||||
<el-option v-for='item in terminalTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='通讯类型:'>
|
||||
<el-select v-model='form.frontType' clearable style='width: 100%' placeholder='请选择通讯类型'>
|
||||
<el-option v-for='item in frontTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="终端型号:" prop="terminalType">
|
||||
<el-select v-model="form.terminalType" filterable clearable style="width: 100%" placeholder="请选择终端型号">
|
||||
<el-option v-for="item in terminalTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if='false' for='-' label='通讯状态:' prop='communicationStatus'>
|
||||
<el-select v-model='form.communicationStatus' clearable style='width: 100%' placeholder='请选择通讯状态'
|
||||
:disabled='true'>
|
||||
<el-option v-for='item in communicationStatusList' :key='item.id' :label='item.name'
|
||||
:value='item.id' :disabled="item.id == '1'"></el-option>
|
||||
<el-form-item for="-" label="终端名称:" prop="monitoringTerminalName">
|
||||
<el-input v-model="form.monitoringTerminalName" autocomplete="off" placeholder="请输入终端名称" />
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="通讯类型:">
|
||||
<el-select v-model="form.frontType" clearable style="width: 100%" placeholder="请选择通讯类型">
|
||||
<el-option v-for="item in frontTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='终端IP:' prop='terminalIp'>
|
||||
<el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model.trim='form.terminalIp' autocomplete='off'
|
||||
placeholder='请输入终端IP' />
|
||||
<el-form-item for="-" label="终端编码:" prop="monitoringTerminalCode">
|
||||
<el-input v-model="form.monitoringTerminalCode" autocomplete="off" placeholder="请输入终端编码"
|
||||
@change="encode" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='端口:' prop='terminalPort'>
|
||||
<el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model.trim='form.terminalPort'
|
||||
autocomplete='off'
|
||||
placeholder='请输入端口' maxlength='5' show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='投运时间:' prop='commissioningTime'>
|
||||
<el-date-picker style='width: 100%' v-model='form.commissioningTime' type='datetime'
|
||||
format='YYYY/MM/DD hh:mm:ss' value-format='YYYY-MM-DD hh:mm:ss'
|
||||
placeholder='请选择投运时间' />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='数据更新时间:' prop='dataUpdateTime'>
|
||||
<el-date-picker :disabled='true' style='width: 100%' v-model='form.dataUpdateTime' type='datetime'
|
||||
placeholder='请选择数据更新时间' />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='所属前置机:' prop='frontEndMachine'>
|
||||
<el-select v-model='form.frontEndMachine' clearable style='width: 100%' placeholder='请选择所属前置机'>
|
||||
<el-option v-for='item in frontEndMachineList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item v-if="false" for="-" label="通讯状态:" prop="communicationStatus">
|
||||
<el-select v-model="form.communicationStatus" clearable style="width: 100%" placeholder="请选择通讯状态"
|
||||
:disabled="true">
|
||||
<el-option v-for="item in communicationStatusList" :key="item.id" :label="item.name"
|
||||
:value="item.id" :disabled="item.id == '1'"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='监测终端安装位置:' prop='monitoringDeviceInstallationPosition'
|
||||
class='label_over_warp'>
|
||||
<el-form-item for="-" label="终端IP:" prop="terminalIp">
|
||||
<el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="form.terminalIp" autocomplete="off"
|
||||
placeholder="请输入终端IP" />
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="端口:" prop="terminalPort">
|
||||
<el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="form.terminalPort" autocomplete="off"
|
||||
placeholder="请输入端口" />
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="投运时间:" prop="commissioningTime">
|
||||
<el-date-picker style="width: 100%" v-model="form.commissioningTime" type="datetime"
|
||||
format="YYYY/MM/DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" placeholder="请选择投运时间" />
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="数据更新时间:" prop="dataUpdateTime">
|
||||
<el-date-picker :disabled="true" style="width: 100%" v-model="form.dataUpdateTime" type="datetime"
|
||||
placeholder="请选择数据更新时间" />
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="所属前置机:" prop="frontEndMachine">
|
||||
<el-select v-model="form.frontEndMachine" clearable style="width: 100%" placeholder="请选择所属前置机">
|
||||
<el-option v-for="item in frontEndMachineList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="监测终端安装位置:" prop="monitoringDeviceInstallationPosition" class="label_over_warp">
|
||||
<!-- 电网侧、用户侧 -->
|
||||
<el-select v-model='form.monitoringDeviceInstallationPosition' clearable style='width: 100%'
|
||||
placeholder='请选择监测终端安装位置'>
|
||||
<el-option v-for='item in monitoringDeviceInstallationPositionList' :key='item.id'
|
||||
:label='item.name' :value='item.id'></el-option>
|
||||
<el-select v-model="form.monitoringDeviceInstallationPosition" clearable style="width: 100%"
|
||||
placeholder="请选择监测终端安装位置">
|
||||
<el-option v-for="item in monitoringDeviceInstallationPositionList" :key="item.id"
|
||||
:label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='识别码:' prop='identificationCode'>
|
||||
<el-input v-model.trim='form.identificationCode' autocomplete='off' placeholder='请输入识别码'
|
||||
maxlength='64' show-word-limit />
|
||||
<el-form-item for="-" label="识别码:" prop="identificationCode">
|
||||
<el-input v-model="form.identificationCode" autocomplete="off" placeholder="请输入识别码" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='终端秘钥:' prop='terminalSecretKey'>
|
||||
<el-input v-model.trim='form.terminalSecretKey' autocomplete='off' placeholder='请输入终端秘钥'
|
||||
maxlength='64' show-word-limit />
|
||||
<el-form-item for="-" label="终端秘钥:" prop="terminalSecretKey">
|
||||
<el-input v-model="form.terminalSecretKey" autocomplete="off" placeholder="请输入终端秘钥" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='终端模型:' prop='terminalModel'>
|
||||
<el-select v-model='form.terminalModel' clearable style='width: 100%' placeholder='请选择终端模型'>
|
||||
<el-option v-for='item in terminalModelList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="终端模型:" prop="terminalModel">
|
||||
<el-select v-model="form.terminalModel" clearable style="width: 100%" placeholder="请选择终端模型">
|
||||
<el-option v-for="item in terminalModelList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='数据类型:' prop='dataType'>
|
||||
<el-select v-model='form.dataType' clearable style='width: 100%' placeholder='请选择数据类型'>
|
||||
<el-option v-for='item in dataTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="数据类型:" prop="dataType">
|
||||
<el-select v-model="form.dataType" clearable style="width: 100%" placeholder="请选择数据类型">
|
||||
<el-option v-for="item in dataTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='终端接线方式类型:' prop='terminalWiringMethodType' class='label_over_warp'>
|
||||
<el-select v-model='form.terminalWiringMethodType' clearable style='width: 100%'
|
||||
placeholder='请选择终端接线方式类型'>
|
||||
<el-option v-for='item in terminalWiringMethodTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="终端接线方式类型:" prop="terminalWiringMethodType" class="label_over_warp">
|
||||
<el-select v-model="form.terminalWiringMethodType" clearable style="width: 100%"
|
||||
placeholder="请选择终端接线方式类型">
|
||||
<el-option v-for="item in terminalWiringMethodTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='厂家:' prop='manufacturer'>
|
||||
<el-select v-model='form.manufacturer' clearable style='width: 100%' placeholder='请选择厂家'>
|
||||
<el-option v-for='item in manufacturerList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="厂家:" prop="manufacturer">
|
||||
<el-select v-model="form.manufacturer" clearable style="width: 100%" placeholder="请选择厂家">
|
||||
<el-option v-for="item in manufacturerList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='本次终端检测时间:' prop='currentTerminalDetectionTime' class='label_over_warp'>
|
||||
<el-date-picker style='width: 100%' v-model='form.currentTerminalDetectionTime' type='datetime'
|
||||
placeholder='请选择本次终端检测时间' :disabled-date='disableStartDate' />
|
||||
<el-form-item for="-" label="本次终端检测时间:" prop="currentTerminalDetectionTime" class="label_over_warp">
|
||||
<el-date-picker style="width: 100%" v-model="form.currentTerminalDetectionTime" type="datetime"
|
||||
placeholder="请选择本次终端检测时间" :disabled-date="disableStartDate" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='下次终端定检时间:' prop='nextTerminalInspectionTime' class='label_over_warp'>
|
||||
<el-date-picker style='width: 100%' v-model='form.nextTerminalInspectionTime' type='datetime'
|
||||
placeholder='请选择下次终端定检时间' :disabled-date='disableEndDate' />
|
||||
<el-form-item for="-" label="下次终端定检时间:" prop="nextTerminalInspectionTime" class="label_over_warp">
|
||||
<el-date-picker style="width: 100%" v-model="form.nextTerminalInspectionTime" type="datetime"
|
||||
placeholder="请选择下次终端定检时间" :disabled-date="disableEndDate" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item for='-' label='电压互感器类型:' prop='voltageTransformerType'>
|
||||
<el-select v-model='form.voltageTransformerType' clearable style='width: 100%'
|
||||
placeholder='请选择电压互感器类型'>
|
||||
<el-option v-for='item in voltageTransformerTypeList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="电压互感器类型:" prop="voltageTransformerType">
|
||||
<el-select v-model="form.voltageTransformerType" clearable style="width: 100%" placeholder="请选择电压互感器类型">
|
||||
<el-option v-for="item in voltageTransformerTypeList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='中性点接线方式:' prop='neutralPointWiringMethod'>
|
||||
<el-select v-model='form.neutralPointWiringMethod' clearable style='width: 100%'
|
||||
placeholder='请选择中性点接线方式'>
|
||||
<el-option v-for='item in neutralPointWiringMethodList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="中性点接线方式:" prop="neutralPointWiringMethod">
|
||||
<el-select v-model="form.neutralPointWiringMethod" clearable style="width: 100%"
|
||||
placeholder="请选择中性点接线方式">
|
||||
<el-option v-for="item in neutralPointWiringMethodList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='厂家终端编号:' prop='manufacturerDeviceNumber'>
|
||||
<el-input v-model.trim='form.manufacturerDeviceNumber' autocomplete='off'
|
||||
placeholder='请输入厂家终端编号' maxlength='64' show-word-limit />
|
||||
<el-form-item for="-" label="厂家终端编号:" prop="manufacturerDeviceNumber">
|
||||
<el-input v-model="form.manufacturerDeviceNumber" autocomplete="off" placeholder="请输入厂家终端编号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item for='-' label='SIM卡号:' prop='simCardNumber'>
|
||||
<el-input v-model.trim='form.simCardNumber' autocomplete='off' placeholder='请输入SIM卡号'
|
||||
maxlength='128' show-word-limit />
|
||||
<el-form-item for="-" label="SIM卡号:" prop="simCardNumber">
|
||||
<el-input v-model="form.simCardNumber" autocomplete="off" placeholder="请输入SIM卡号" />
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='对时功能:' prop='timeSyncFunction'>
|
||||
<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-group v-model="form.timeSyncFunction">
|
||||
<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'>
|
||||
<el-form-item for="-" label="电镀功能:" prop="electroplatingFunction">
|
||||
<!-- 默认 关闭 下拉框 -->
|
||||
<el-select v-model='form.electroplatingFunction' clearable style='width: 100%'
|
||||
placeholder='请选择电镀功能'>
|
||||
<el-option v-for='item in electroplatingFunctionList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-select v-model="form.electroplatingFunction" clearable style="width: 100%" placeholder="请选择电镀功能">
|
||||
<el-option v-for="item in electroplatingFunctionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='召唤标志:' prop='summonFlag'>
|
||||
<el-select v-model='form.summonFlag' clearable style='width: 100%' placeholder='请选择召唤标志'>
|
||||
<el-option v-for='item in summonFlagList' :key='item.id' :label='item.name'
|
||||
:value='item.id'></el-option>
|
||||
<el-form-item for="-" label="召唤标志:" prop="summonFlag">
|
||||
<el-select v-model="form.summonFlag" clearable style="width: 100%" placeholder="请选择召唤标志">
|
||||
<el-option v-for="item in summonFlagList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='告警功能:' prop='alarmFunction'>
|
||||
<el-radio-group v-model='form.alarmFunction'>
|
||||
<el-radio value='1'>是</el-radio>
|
||||
<el-radio value='0'>否</el-radio>
|
||||
<el-form-item for="-" label="告警功能:" prop="alarmFunction">
|
||||
<el-radio-group v-model="form.alarmFunction">
|
||||
<el-radio value="1">是</el-radio>
|
||||
<el-radio value="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='合同号:' prop='contractNumber'>
|
||||
<el-input v-model.trim='form.contractNumber' autocomplete='off' placeholder='请输入合同号'
|
||||
maxlength='64' show-word-limit />
|
||||
<el-form-item for="-" label="合同号:" prop="contractNumber">
|
||||
<el-input v-model="form.contractNumber" autocomplete="off" placeholder="请输入合同号" />
|
||||
</el-form-item>
|
||||
<!-- </div> -->
|
||||
<el-divider content-position='left'>附件材料</el-divider>
|
||||
<el-form-item for='-' label='信息安全检测报告:' class='uploadFile'>
|
||||
<el-upload v-model:file-list='form.informationSecurityTestReport' ref='uploadRef' action=''
|
||||
:accept='acceptType' :limit='1' :on-exceed='handleExceed' :on-change='choose'
|
||||
:auto-upload='false'
|
||||
:on-progress="uploadFileName('informationSecurityTestReport')" :on-remove='removeFile'>
|
||||
<el-divider content-position="left">附件材料</el-divider>
|
||||
<el-form-item for="-" label="信息安全检测报告:" class="uploadFile" prop="informationSecurityTestReport">
|
||||
<el-upload v-model:file-list="form.informationSecurityTestReport" ref="uploadRef" action=""
|
||||
:accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('informationSecurityTestReport')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item v-if='false' for='-' label='验收检验报告单:' class='uploadFile'
|
||||
prop='acceptanceInspectionReportSingle'>
|
||||
<el-upload v-model:file-list='form.acceptanceInspectionReportSingle' ref='uploadRef' action=''
|
||||
:accept='acceptType' :limit='1' :on-exceed='handleExceed' :on-change='choose'
|
||||
:auto-upload='false'
|
||||
:on-progress="uploadFileName('acceptanceInspectionReportSingle')" :on-remove='removeFile'>
|
||||
<el-form-item v-if="false" for="-" label="验收检验报告单:" class="uploadFile"
|
||||
prop="acceptanceInspectionReportSingle">
|
||||
<el-upload v-model:file-list="form.acceptanceInspectionReportSingle" ref="uploadRef" action=""
|
||||
:accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('acceptanceInspectionReportSingle')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item for='-' label='验收检验报告:' class='uploadFile' prop='acceptanceInspectionReport'>
|
||||
<el-upload v-model:file-list='form.acceptanceInspectionReport' ref='uploadRef' action=''
|
||||
:accept='acceptType' :limit='1' :on-exceed='handleExceed' :on-change='choose'
|
||||
:auto-upload='false'
|
||||
:on-progress="uploadFileName('acceptanceInspectionReport')" :on-remove='removeFile'>
|
||||
<el-form-item for="-" label="验收检验报告:" class="uploadFile" prop="acceptanceInspectionReport">
|
||||
<el-upload v-model:file-list="form.acceptanceInspectionReport" ref="uploadRef" action=""
|
||||
:accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('acceptanceInspectionReport')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='型式实验报告:' class='uploadFile'>
|
||||
<el-upload v-model:file-list='form.typeExperimentReport' ref='uploadRef' action='' :accept='acceptType'
|
||||
:limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
|
||||
:on-progress="uploadFileName('typeExperimentReport')" :on-remove='removeFile'>
|
||||
<el-form-item for="-" label="型式实验报告:" class="uploadFile" prop="typeExperimentReport">
|
||||
<el-upload v-model:file-list="form.typeExperimentReport" ref="uploadRef" action="" :accept="acceptType"
|
||||
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('typeExperimentReport')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='出厂检验报告:' class='uploadFile'>
|
||||
<el-upload v-model:file-list='form.factoryInspectionReport' ref='uploadRef' action=''
|
||||
:accept='acceptType' :limit='1' :on-exceed='handleExceed' :on-change='choose'
|
||||
:auto-upload='false'
|
||||
:on-progress="uploadFileName('factoryInspectionReport')" :on-remove='removeFile'>
|
||||
<el-form-item for="-" label="出厂检验报告:" class="uploadFile" prop="factoryInspectionReport">
|
||||
<el-upload v-model:file-list="form.factoryInspectionReport" ref="uploadRef" action=""
|
||||
:accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('factoryInspectionReport')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='性能检测报告:' class='uploadFile'>
|
||||
<el-upload v-model:file-list='form.performanceTestReport' ref='uploadRef' action='' :accept='acceptType'
|
||||
:limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
|
||||
:on-progress="uploadFileName('performanceTestReport')" :on-remove='removeFile'>
|
||||
<el-form-item for="-" label="性能检测报告:" class="uploadFile" prop="performanceTestReport">
|
||||
<el-upload v-model:file-list="form.performanceTestReport" ref="uploadRef" action="" :accept="acceptType"
|
||||
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('performanceTestReport')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item for='-' label='其他附件:' class='uploadFile'>
|
||||
<el-upload v-model:file-list='form.otherAttachments' ref='uploadRef' action='' :accept='acceptType'
|
||||
:limit='1' :on-exceed='handleExceed' :on-change='choose' :auto-upload='false'
|
||||
:on-progress="uploadFileName('otherAttachments')" :on-remove='removeFile'>
|
||||
<el-form-item for="-" label="其他附件:" class="uploadFile" prop="otherAttachments">
|
||||
<el-upload v-model:file-list="form.otherAttachments" ref="uploadRef" action="" :accept="acceptType"
|
||||
:limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
|
||||
:on-progress="uploadFileName('otherAttachments')" :on-remove="removeFile">
|
||||
<template #trigger>
|
||||
<el-button type='primary'>上传文件</el-button>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</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' @click='confirmForm(false)' :loading='loading'
|
||||
v-if='importType != 1'>提交审批
|
||||
</el-button>
|
||||
<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" @click="confirmForm(false)" :loading="loading"
|
||||
v-if="importType != 1">提交审批</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'
|
||||
@@ -379,7 +357,6 @@ import {
|
||||
import { getAllDeptList } from '@/api/common'
|
||||
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)
|
||||
@@ -455,7 +432,7 @@ const terminalModelList = [
|
||||
const substationList: any = ref([])
|
||||
//字典获取通讯类型
|
||||
const frontTypeList = dictData.getBasicData('Front_Type', ['CLD', '61850'])
|
||||
console.log('🚀 ~ frontTypeList:', frontTypeList)
|
||||
console.log("🚀 ~ frontTypeList:", frontTypeList)
|
||||
//定义通讯状态下拉框数据
|
||||
const communicationStatusList = [
|
||||
{
|
||||
@@ -718,9 +695,6 @@ const longitudeReg = /^[-+]?((180(\.0{1,10})?)|(1[0-7][0-9](\.\d{1,10})?)|([1-9]
|
||||
|
||||
// 纬度正则表达式
|
||||
const latitudeReg = /^[-+]?((90(\.0{1,10})?)|([1-8]?\d(\.\d{1,10})?)|(0(\.\d{1,10})?))$/
|
||||
|
||||
// 特殊字符正则表达式
|
||||
const specialCharRegex = /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/
|
||||
//定义校验规则
|
||||
const rules = ref({
|
||||
//基础信息
|
||||
@@ -814,16 +788,6 @@ const rules = ref({
|
||||
required: true,
|
||||
message: '请输入终端编码',
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (specialCharRegex.test(value)) {
|
||||
callback(new Error('输入包含不允许的特殊字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
monitoringTerminalName: [
|
||||
@@ -831,16 +795,6 @@ const rules = ref({
|
||||
required: true,
|
||||
message: '请输入监测名称',
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (specialCharRegex.test(value)) {
|
||||
callback(new Error('输入包含不允许的特殊字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
voltageTransformerType: [
|
||||
@@ -1175,10 +1129,10 @@ const choose = (e: any) => {
|
||||
if (uploadName.value == 'deviceFilePath') {
|
||||
deviceFilePath.value = res.data.name
|
||||
}
|
||||
//验收检验报告单
|
||||
// else if (uploadName.value == 'acceptanceInspectionReportSingle') {
|
||||
// acceptanceInspectionReportSingle.value = res.data.name
|
||||
// }
|
||||
//验收检验报告单
|
||||
// else if (uploadName.value == 'acceptanceInspectionReportSingle') {
|
||||
// acceptanceInspectionReportSingle.value = res.data.name
|
||||
// }
|
||||
//验收检验报告
|
||||
else if (uploadName.value == 'acceptanceInspectionReport') {
|
||||
acceptanceInspectionReport.value = res.data.name
|
||||
@@ -1212,7 +1166,7 @@ const disabledDate = time => {
|
||||
const importType = ref(null)
|
||||
const resendId = ref('')
|
||||
const open = async (row: any) => {
|
||||
|
||||
console.log('🚀 ~ open ~ row:', row.row)
|
||||
let flag = row.row ? true : false
|
||||
importType.value = null
|
||||
if (!flag) await getPowerCompanyList(false)
|
||||
@@ -1359,8 +1313,8 @@ const confirmForm = async (flag: boolean) => {
|
||||
close()
|
||||
}
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false
|
||||
})
|
||||
} else {
|
||||
confirmFormData.reporter = adminInfo.$state.id
|
||||
confirmFormData.orgId = adminInfo.$state.deptId
|
||||
@@ -1378,8 +1332,8 @@ const confirmForm = async (flag: boolean) => {
|
||||
close()
|
||||
}
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
} else {
|
||||
console.log('表单验证失败')
|
||||
@@ -1397,7 +1351,7 @@ const encode = (e: string) => {
|
||||
}
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
<style lang='scss' scoped>
|
||||
<style lang="scss" scoped>
|
||||
.fixed_upload {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll showExport ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="搜索">
|
||||
<el-input v-model="tableStore.table.params.searchValue" placeholder="输入变电站、终端名称"
|
||||
clearable maxlength="32" show-word-limit style="width: 180px"></el-input>
|
||||
clearable style="width: 180px"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程状态">
|
||||
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
|
||||
@@ -69,12 +69,13 @@ const tableStore = new TableStore({
|
||||
url: '/supervision-boot/deVReport/list',
|
||||
publicHeight: 65,
|
||||
method: 'POST',
|
||||
filename:'终端入网检测',
|
||||
column: [
|
||||
{
|
||||
width: '60',
|
||||
type: 'checkbox'
|
||||
},
|
||||
{ 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
|
||||
} },
|
||||
{
|
||||
@@ -217,6 +218,21 @@ 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.status =
|
||||
item.status == 0
|
||||
? '待提交审批'
|
||||
: item.status == 1
|
||||
? '审批中'
|
||||
: item.status == 2
|
||||
? '审批通过'
|
||||
: item.status == 3
|
||||
? '审批不通过'
|
||||
: '已取消'
|
||||
return item
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
|
||||
@@ -96,15 +96,11 @@ const submit = async () => {
|
||||
let data = new FormData()
|
||||
data.append('file', form.file)
|
||||
await deVReportImportSensitive(data)
|
||||
.then(res =>{
|
||||
handleImportResponse(title.value, res)
|
||||
.then(res => handleImportResponse(title.value, res))
|
||||
.finally(() => {
|
||||
tableStore.index()
|
||||
eventDataUploadVisible.value = false
|
||||
ElMessage.success('导入成功!')
|
||||
}).catch(() => {
|
||||
ElMessage.warning('导入失败!')
|
||||
})
|
||||
|
||||
}
|
||||
})
|
||||
} else {
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
<el-tab-pane label="终端入网检测" name="1">
|
||||
<terminal :id="id" v-if="activeName == '1'" />
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane label="监测点台账录入" name="2">
|
||||
<el-tab-pane label="监测点台账录入" name="2">
|
||||
<monitorpoint :id="id" v-if="activeName == '2'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="监测点联调列表" name="3">
|
||||
<jointDebugList :id="id" v-if="activeName == '3'" />
|
||||
</el-tab-pane> -->
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="终端周期检测" name="4">
|
||||
<cycleDetection :id="id" :businessKey='key' v-if="activeName == '4'" />
|
||||
</el-tab-pane>
|
||||
|
||||
@@ -1,71 +1,452 @@
|
||||
<!---试运行列表-->
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<el-tabs v-model="activeName" type="border-card">
|
||||
|
||||
<el-tab-pane label="监测点台账录入" name="1">
|
||||
<monitorpoint :id="id" v-if="activeName == '1'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="监测点联调列表" name="2">
|
||||
<jointDebugList :id="id" v-if="activeName == '2'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="试运行评估" name="3">
|
||||
<testRun :id="id" v-if="activeName == '3'" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<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="startRunTest">试运行</el-button>
|
||||
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" :checkbox-config="checkboxConfig" />
|
||||
|
||||
<!-- <el-dialog
|
||||
v-model='timeDialog'
|
||||
width='500px'
|
||||
append-to-body
|
||||
destroy-on-close>
|
||||
<div class='block'>
|
||||
<span class="demonstration">试运行时间</span>
|
||||
<el-date-picker
|
||||
:popper-append-to-body="false"
|
||||
:v-model="dateValue"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="datetimerange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
|
||||
</div>
|
||||
<div class='block' style='text-align: center'>
|
||||
<el-button type='primary' style='margin-top: 50px' @click='runTestSubmit'>确认</el-button>
|
||||
</div>
|
||||
</el-dialog>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide, reactive } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { addRunTest, update, cancel } from '@/api/supervision-boot/lineRunTest'
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import { VxeTablePropTypes } from 'vxe-table'
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
import { getFileNameAndFilePath } from '@/api/system-boot/file'
|
||||
import { deleteTempLineRunTestReport } from '@/api/supervision-boot/delete/index'
|
||||
const dictData = useDictData()
|
||||
const statusSelect = dictData.statusSelect()
|
||||
const { push } = useRouter()
|
||||
const adminInfo = useAdminInfo()
|
||||
const TableHeaderRef = ref()
|
||||
const tableRef = ref()
|
||||
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import monitorpoint from '@/views/pqs/supervise/terminalNetworkDetection/components/monitorpoint/index.vue'
|
||||
import jointDebugList from '@/views/pqs/supervise/terminalNetworkDetection/components/jointDebugList/index.vue'
|
||||
import testRun from './testRun.vue'
|
||||
const tableStore = new TableStore({
|
||||
url: '/supervision-boot/tempLinedebug/pageHasDebug',
|
||||
method: 'POST',
|
||||
// publicHeight: 65,
|
||||
column: [
|
||||
{ title: '', type: 'checkbox', width: 40 },
|
||||
{ field: 'lineName', title: '监测点名称', minWidth: 160 },
|
||||
{ field: 'connectedBus', title: '接入母线', minWidth: 160 },
|
||||
// { field: 'monitoringTerminalCode', title: '终端编号', minWidth: 140 },
|
||||
{ field: 'monitoringTerminalName', title: '终端名称', minWidth: 140 },
|
||||
{ field: 'powerSubstationName', title: '变电站', minWidth: 160 },
|
||||
{ field: 'reason', title: '调试原因', minWidth: 160 },
|
||||
{
|
||||
field: 'testRunState',
|
||||
title: '试运行状态',
|
||||
minWidth: 100,
|
||||
render: 'tag',
|
||||
custom: {
|
||||
0: 'primary',
|
||||
2: 'success',
|
||||
3: 'danger',
|
||||
1: 'warning'
|
||||
},
|
||||
replaceValue: {
|
||||
0: '待试运行',
|
||||
1: '试运行中',
|
||||
2: '试运行成功',
|
||||
3: '试运行失败',
|
||||
null: '待试运行'
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'testRunTime',
|
||||
title: '试运行时间范围',
|
||||
minWidth: 200,
|
||||
formatter: row => {
|
||||
return row.cellValue ? row.cellValue : '/'
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '流程状态',
|
||||
minWidth: 100,
|
||||
render: 'tag',
|
||||
custom: {
|
||||
0: 'warning',
|
||||
1: 'primary',
|
||||
2: 'success',
|
||||
3: 'danger',
|
||||
4: 'warning'
|
||||
},
|
||||
replaceValue: {
|
||||
0: '待提交审批',
|
||||
1: '审批中',
|
||||
2: '审批通过',
|
||||
3: '审批不通过',
|
||||
4: '已取消',
|
||||
null: '/',
|
||||
9: '/'
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createBy',
|
||||
title: '填报人',
|
||||
minWidth: 100,
|
||||
formatter: (row: any) => {
|
||||
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
minWidth: 230,
|
||||
fixed: 'right',
|
||||
render: 'buttons',
|
||||
buttons: [
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '查看报告',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
disabled: row => {
|
||||
return row.testRunReport == null || row.testRunReport.length == 0
|
||||
},
|
||||
click: row => {
|
||||
// const match = row.filePath.match(/excelreport(\/[^?#]*)/)
|
||||
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
defineOptions({
|
||||
name: 'terminalNetwotk'
|
||||
})
|
||||
const activeName = ref('1')
|
||||
|
||||
const route = useRoute()
|
||||
const id = ref('')
|
||||
const key = ref('')
|
||||
|
||||
watch(() => route.query.t, async (newValue, oldValue) => {
|
||||
if (route.fullPath.includes('terminalNetwotk')) {
|
||||
let type = (route.query.type as string) || 'null'
|
||||
if (type == 'null') { }
|
||||
else if (type == '1') {
|
||||
activeName.value = '1'
|
||||
} else if (type == '2') {
|
||||
activeName.value = '2'
|
||||
} else if (type == '3') {
|
||||
activeName.value = '3'
|
||||
} else {
|
||||
activeName.value = '4'
|
||||
}
|
||||
id.value = (route.query.id as string) || 'null'
|
||||
key.value = (route.query.key as string) || 'null'
|
||||
id.value = id.value + '@' + route.query.t
|
||||
window.open(window.location.origin + '/#/previewFile?' + row.testRunReport)
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '下载报告',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
downloadTheReport(row.testRunReport)
|
||||
},
|
||||
disabled: row => {
|
||||
return row.testRunReport == null || row.testRunReport.length == 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '流程详情',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
handleAudit(row.processInstanceId, row.historyInstanceId)
|
||||
},
|
||||
disabled: row => {
|
||||
return !row.processInstanceId
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '重新试运行',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
monitorIds = []
|
||||
monitorIds.push(row.id)
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() + 1)
|
||||
start.setHours(0, 0, 0)
|
||||
|
||||
const end = new Date()
|
||||
end.setDate(end.getDate() + 3)
|
||||
end.setHours(23, 59, 59)
|
||||
const startString = formatDate(start, 'YYYY-MM-DD') // 转换为 YYYY-MM-DD 格式
|
||||
const endString = formatDate(end, 'YYYY-MM-DD')
|
||||
const data = {
|
||||
startTime: startString,
|
||||
endTime: endString,
|
||||
lineIds: monitorIds,
|
||||
operateType: 1,
|
||||
id: row.id
|
||||
}
|
||||
update(data).then((res: any) => {
|
||||
if (res.code === 'A0000') {
|
||||
ElMessage({
|
||||
message: '发起试运行成功',
|
||||
type: 'success'
|
||||
})
|
||||
tableStore.index()
|
||||
}
|
||||
})
|
||||
},
|
||||
disabled: row => {
|
||||
return !(row.status == 3 || row.status == 4)
|
||||
}
|
||||
},
|
||||
{
|
||||
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.statveList = [2]
|
||||
// tableStore.table.params.relationUserName = tableStore.table.params.userName
|
||||
}
|
||||
}, { deep: true, immediate: true })
|
||||
|
||||
|
||||
const layout = mainHeight(63) as any
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.bars_w {
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
}
|
||||
|
||||
:deep(.el-tabs__content) {
|
||||
height: v-bind('layout.height');
|
||||
overflow-y: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
const checkboxConfig = reactive<VxeTablePropTypes.CheckboxConfig>({
|
||||
labelField: '',
|
||||
checkMethod: ({ row }) => {
|
||||
return adminInfo.roleCode.includes('delete_info') || !(row.testRunState == 1 || row.testRunState == 2)
|
||||
}
|
||||
})
|
||||
const deleteEven = () => {
|
||||
if (tableStore.table.selection.length == 0) {
|
||||
ElMessage({
|
||||
type: 'warning',
|
||||
message: '请选择要删除的数据'
|
||||
})
|
||||
} else {
|
||||
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
let createBy = tableStore.table.selection.map(item => item.createBy)
|
||||
let status = tableStore.table.selection.map(item => item.status)
|
||||
if (adminInfo.roleCode.includes('delete_info')) {
|
||||
deleteList()
|
||||
} else if (createBy.includes(adminInfo.$state.id) && status.includes(0)) {
|
||||
deleteList()
|
||||
} else {
|
||||
ElMessage({
|
||||
type: 'warning',
|
||||
message: '只能删除自己填报的数据!!!'
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
const deleteList = () => {
|
||||
deleteTempLineRunTestReport(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
}
|
||||
|
||||
/** 处理审批按钮 */
|
||||
const handleAudit = (instanceId: any, historyInstanceId: any) => {
|
||||
push({
|
||||
name: 'BpmProcessInstanceDetail',
|
||||
state: {
|
||||
id: instanceId,
|
||||
historyInstanceId
|
||||
}
|
||||
})
|
||||
}
|
||||
/**取消流程操作*/
|
||||
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 cancel(data).then(res => {
|
||||
ElMessage.success('取消成功')
|
||||
// 加载数据
|
||||
tableStore.index()
|
||||
})
|
||||
}
|
||||
//试运行
|
||||
let monitorIds: any = []
|
||||
|
||||
const startRunTest = () => {
|
||||
monitorIds = []
|
||||
let flag = true
|
||||
if (tableStore.table.selection.length === 0) {
|
||||
return ElMessage({
|
||||
message: '请至少选择一个监测点进行试运行',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
|
||||
tableStore.table.selection.forEach(item => {
|
||||
if (item.testRunState != 0) {
|
||||
flag = false
|
||||
}
|
||||
if (item.testRunState == 0) {
|
||||
monitorIds.push(item.id)
|
||||
}
|
||||
})
|
||||
|
||||
if (!flag) {
|
||||
return ElMessage({
|
||||
message: '请选择未试运行的监测点进行试运行',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ElMessageBox.confirm('是否确认执行72小时监测点试运行?', '试运行', {
|
||||
confirmButtonText: '确 认',
|
||||
cancelButtonText: '取 消'
|
||||
})
|
||||
.then(() => {
|
||||
runTestSubmit(0)
|
||||
})
|
||||
.catch(() => console.info('操作取消'))
|
||||
}
|
||||
|
||||
// 下载报告
|
||||
const downloadTheReport = (url: string) => {
|
||||
getFileNameAndFilePath({ filePath: url }).then((res: any) => {
|
||||
console.log(res.data.url, 'res')
|
||||
const link = document.createElement('a')
|
||||
link.href = res.data.url
|
||||
link.download = res.data.name
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link)
|
||||
})
|
||||
}
|
||||
|
||||
const runTestSubmit = (type: number) => {
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() + 1)
|
||||
start.setHours(0, 0, 0)
|
||||
|
||||
const end = new Date()
|
||||
end.setDate(end.getDate() + 3)
|
||||
end.setHours(23, 59, 59)
|
||||
const startString = formatDate(start, 'YYYY-MM-DD') // 转换为 YYYY-MM-DD 格式
|
||||
const endString = formatDate(end, 'YYYY-MM-DD')
|
||||
const data = {
|
||||
startTime: startString,
|
||||
endTime: endString,
|
||||
lineIds: monitorIds,
|
||||
operateType: type
|
||||
}
|
||||
addRunTest(data).then((res: any) => {
|
||||
if (res.code === 'A0000') {
|
||||
ElMessage({
|
||||
message: '发起试运行成功',
|
||||
type: 'success'
|
||||
})
|
||||
tableStore.index()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
watch(() => route.query.t, async (newValue, oldValue) => {
|
||||
let nowTime = Date.now()
|
||||
let routeTime = route.query.t as number || 1
|
||||
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms,则不执行
|
||||
if (route.fullPath.includes('/testRun')) {
|
||||
let id = (route.query.id as string) || 'null'
|
||||
if (id != 'null') {
|
||||
monitorIds = []
|
||||
monitorIds.push(id)
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() + 1)
|
||||
start.setHours(0, 0, 0)
|
||||
const end = new Date()
|
||||
end.setDate(end.getDate() + 3)
|
||||
end.setHours(23, 59, 59)
|
||||
const startString = formatDate(start, 'YYYY-MM-DD') // 转换为 YYYY-MM-DD 格式
|
||||
const endString = formatDate(end, 'YYYY-MM-DD')
|
||||
const data = {
|
||||
startTime: startString,
|
||||
endTime: endString,
|
||||
lineIds: monitorIds,
|
||||
operateType: 1,
|
||||
id
|
||||
}
|
||||
update(data).then((res: any) => {
|
||||
if (res.code === 'A0000') {
|
||||
ElMessage({
|
||||
message: '发起试运行成功',
|
||||
type: 'success'
|
||||
})
|
||||
tableStore.index()
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
}, { deep: true, immediate: true })
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
||||
@@ -1,457 +1,71 @@
|
||||
<!---试运行列表-->
|
||||
<template>
|
||||
<div >
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<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="startRunTest">试运行</el-button>
|
||||
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" :checkbox-config="checkboxConfig" />
|
||||
|
||||
<!-- <el-dialog
|
||||
v-model='timeDialog'
|
||||
width='500px'
|
||||
append-to-body
|
||||
destroy-on-close>
|
||||
<div class='block'>
|
||||
<span class="demonstration">试运行时间</span>
|
||||
<el-date-picker
|
||||
:popper-append-to-body="false"
|
||||
:v-model="dateValue"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="datetimerange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
|
||||
</div>
|
||||
<div class='block' style='text-align: center'>
|
||||
<el-button type='primary' style='margin-top: 50px' @click='runTestSubmit'>确认</el-button>
|
||||
</div>
|
||||
</el-dialog>-->
|
||||
<div class="default-main">
|
||||
<el-tabs v-model="activeName" type="border-card">
|
||||
|
||||
<el-tab-pane label="监测点台账录入" name="1">
|
||||
<monitorpoint :id="id" v-if="activeName == '1'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="监测点联调列表" name="2">
|
||||
<jointDebugList :id="id" v-if="activeName == '2'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="试运行评估" name="3">
|
||||
<testRun :id="id" v-if="activeName == '3'" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide, reactive } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { addRunTest, update, cancel } from '@/api/supervision-boot/lineRunTest'
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import { VxeTablePropTypes } from 'vxe-table'
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
import { getFileNameAndFilePath } from '@/api/system-boot/file'
|
||||
import { deleteTempLineRunTestReport } from '@/api/supervision-boot/delete/index'
|
||||
const dictData = useDictData()
|
||||
const statusSelect = dictData.statusSelect()
|
||||
const { push } = useRouter()
|
||||
const adminInfo = useAdminInfo()
|
||||
const TableHeaderRef = ref()
|
||||
const tableRef = ref()
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
|
||||
const tableStore = new TableStore({
|
||||
url: '/supervision-boot/tempLinedebug/pageHasDebug',
|
||||
method: 'POST',
|
||||
publicHeight: 65,
|
||||
column: [
|
||||
{ title: '', type: 'checkbox', width: 40 },
|
||||
{
|
||||
title: '序号', width: 80, formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
}
|
||||
},
|
||||
{ field: 'lineName', title: '监测点名称', minWidth: 160 },
|
||||
{ field: 'connectedBus', title: '接入母线', minWidth: 160 },
|
||||
// { field: 'monitoringTerminalCode', title: '终端编号', minWidth: 140 },
|
||||
{ field: 'monitoringTerminalName', title: '终端名称', minWidth: 140 },
|
||||
{ field: 'powerSubstationName', title: '变电站', minWidth: 160 },
|
||||
{ field: 'reason', title: '调试原因', minWidth: 160 },
|
||||
{
|
||||
field: 'testRunState',
|
||||
title: '试运行状态',
|
||||
minWidth: 100,
|
||||
render: 'tag',
|
||||
custom: {
|
||||
0: 'primary',
|
||||
2: 'success',
|
||||
3: 'danger',
|
||||
1: 'warning'
|
||||
},
|
||||
replaceValue: {
|
||||
0: '待试运行',
|
||||
1: '试运行中',
|
||||
2: '试运行成功',
|
||||
3: '试运行失败',
|
||||
null: '待试运行'
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'testRunTime',
|
||||
title: '试运行时间范围',
|
||||
minWidth: 200,
|
||||
formatter: row => {
|
||||
return row.cellValue ? row.cellValue : '/'
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '流程状态',
|
||||
minWidth: 100,
|
||||
render: 'tag',
|
||||
custom: {
|
||||
0: 'warning',
|
||||
1: 'primary',
|
||||
2: 'success',
|
||||
3: 'danger',
|
||||
4: 'warning'
|
||||
},
|
||||
replaceValue: {
|
||||
0: '待提交审批',
|
||||
1: '审批中',
|
||||
2: '审批通过',
|
||||
3: '审批不通过',
|
||||
4: '已取消',
|
||||
null: '/',
|
||||
9: '/'
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createBy',
|
||||
title: '填报人',
|
||||
minWidth: 100,
|
||||
formatter: (row: any) => {
|
||||
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
minWidth: 230,
|
||||
fixed: 'right',
|
||||
render: 'buttons',
|
||||
buttons: [
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '查看报告',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
disabled: row => {
|
||||
return row.testRunReport == null || row.testRunReport.length == 0
|
||||
},
|
||||
click: row => {
|
||||
// const match = row.filePath.match(/excelreport(\/[^?#]*)/)
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import monitorpoint from '@/views/pqs/supervise/terminalNetworkDetection/components/monitorpoint/index.vue'
|
||||
import jointDebugList from '@/views/pqs/supervise/terminalNetworkDetection/components/jointDebugList/index.vue'
|
||||
import testRun from './testRun.vue'
|
||||
|
||||
window.open(window.location.origin + '/#/previewFile?' + row.testRunReport)
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '下载报告',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
downloadTheReport(row.testRunReport)
|
||||
},
|
||||
disabled: row => {
|
||||
return row.testRunReport == null || row.testRunReport.length == 0
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '流程详情',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
handleAudit(row.processInstanceId, row.historyInstanceId)
|
||||
},
|
||||
disabled: row => {
|
||||
return !row.processInstanceId
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '重新试运行',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
monitorIds = []
|
||||
monitorIds.push(row.id)
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() + 1)
|
||||
start.setHours(0, 0, 0)
|
||||
|
||||
const end = new Date()
|
||||
end.setDate(end.getDate() + 3)
|
||||
end.setHours(23, 59, 59)
|
||||
const startString = formatDate(start, 'YYYY-MM-DD') // 转换为 YYYY-MM-DD 格式
|
||||
const endString = formatDate(end, 'YYYY-MM-DD')
|
||||
const data = {
|
||||
startTime: startString,
|
||||
endTime: endString,
|
||||
lineIds: monitorIds,
|
||||
operateType: 1,
|
||||
id: row.id
|
||||
}
|
||||
update(data).then((res: any) => {
|
||||
if (res.code === 'A0000') {
|
||||
ElMessage({
|
||||
message: '发起试运行成功',
|
||||
type: 'success'
|
||||
})
|
||||
tableStore.index()
|
||||
}
|
||||
})
|
||||
},
|
||||
disabled: row => {
|
||||
return !(row.status == 3 || row.status == 4)
|
||||
}
|
||||
},
|
||||
{
|
||||
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.statveList = [2]
|
||||
// tableStore.table.params.relationUserName = tableStore.table.params.userName
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
defineOptions({
|
||||
name: 'terminalNetwotk'
|
||||
})
|
||||
const activeName = ref('1')
|
||||
|
||||
const route = useRoute()
|
||||
const id = ref('')
|
||||
const key = ref('')
|
||||
|
||||
watch(() => route.query.t, async (newValue, oldValue) => {
|
||||
if (route.fullPath.includes('terminalNetwotk')) {
|
||||
let type = (route.query.type as string) || 'null'
|
||||
if (type == 'null') { }
|
||||
else if (type == '1') {
|
||||
activeName.value = '1'
|
||||
} else if (type == '2') {
|
||||
activeName.value = '2'
|
||||
} else if (type == '3') {
|
||||
activeName.value = '3'
|
||||
} else {
|
||||
activeName.value = '4'
|
||||
}
|
||||
id.value = (route.query.id as string) || 'null'
|
||||
key.value = (route.query.key as string) || 'null'
|
||||
id.value = id.value + '@' + route.query.t
|
||||
}
|
||||
})
|
||||
tableStore.table.params.status = ''
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
const checkboxConfig = reactive<VxeTablePropTypes.CheckboxConfig>({
|
||||
labelField: '',
|
||||
checkMethod: ({ row }) => {
|
||||
return adminInfo.roleCode.includes('delete_info') || !(row.testRunState == 1 || row.testRunState == 2)
|
||||
}
|
||||
})
|
||||
const deleteEven = () => {
|
||||
if (tableStore.table.selection.length == 0) {
|
||||
ElMessage({
|
||||
type: 'warning',
|
||||
message: '请选择要删除的数据'
|
||||
})
|
||||
} else {
|
||||
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
let createBy = tableStore.table.selection.map(item => item.createBy)
|
||||
let status = tableStore.table.selection.map(item => item.status)
|
||||
if (adminInfo.roleCode.includes('delete_info')) {
|
||||
deleteList()
|
||||
} else if (createBy.includes(adminInfo.$state.id) && status.includes(0)) {
|
||||
deleteList()
|
||||
} else {
|
||||
ElMessage({
|
||||
type: 'warning',
|
||||
message: '只能删除自己填报的数据!!!'
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
const deleteList = () => {
|
||||
deleteTempLineRunTestReport(tableStore.table.selection.map(item => item.id)).then(res => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
tableStore.index()
|
||||
})
|
||||
}
|
||||
|
||||
/** 处理审批按钮 */
|
||||
const handleAudit = (instanceId: any, historyInstanceId: any) => {
|
||||
push({
|
||||
name: 'BpmProcessInstanceDetail',
|
||||
state: {
|
||||
id: instanceId,
|
||||
historyInstanceId
|
||||
}
|
||||
})
|
||||
}
|
||||
/**取消流程操作*/
|
||||
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 cancel(data).then(res => {
|
||||
ElMessage.success('取消成功')
|
||||
// 加载数据
|
||||
tableStore.index()
|
||||
})
|
||||
}
|
||||
//试运行
|
||||
let monitorIds: any = []
|
||||
|
||||
const startRunTest = () => {
|
||||
monitorIds = []
|
||||
let flag = true
|
||||
if (tableStore.table.selection.length === 0) {
|
||||
return ElMessage({
|
||||
message: '请至少选择一个监测点进行试运行',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
|
||||
tableStore.table.selection.forEach(item => {
|
||||
if (item.testRunState != 0) {
|
||||
flag = false
|
||||
}
|
||||
if (item.testRunState == 0) {
|
||||
monitorIds.push(item.id)
|
||||
}
|
||||
})
|
||||
|
||||
if (!flag) {
|
||||
return ElMessage({
|
||||
message: '请选择未试运行的监测点进行试运行',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ElMessageBox.confirm('是否确认执行72小时监测点试运行?', '试运行', {
|
||||
confirmButtonText: '确 认',
|
||||
cancelButtonText: '取 消'
|
||||
})
|
||||
.then(() => {
|
||||
runTestSubmit(0)
|
||||
})
|
||||
.catch(() => console.info('操作取消'))
|
||||
}
|
||||
|
||||
// 下载报告
|
||||
const downloadTheReport = (url: string) => {
|
||||
getFileNameAndFilePath({ filePath: url }).then((res: any) => {
|
||||
console.log(res.data.url, 'res')
|
||||
const link = document.createElement('a')
|
||||
link.href = res.data.url
|
||||
link.download = res.data.name
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link)
|
||||
})
|
||||
}
|
||||
|
||||
const runTestSubmit = (type: number) => {
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() + 1)
|
||||
start.setHours(0, 0, 0)
|
||||
|
||||
const end = new Date()
|
||||
end.setDate(end.getDate() + 3)
|
||||
end.setHours(23, 59, 59)
|
||||
const startString = formatDate(start, 'YYYY-MM-DD') // 转换为 YYYY-MM-DD 格式
|
||||
const endString = formatDate(end, 'YYYY-MM-DD')
|
||||
const data = {
|
||||
startTime: startString,
|
||||
endTime: endString,
|
||||
lineIds: monitorIds,
|
||||
operateType: type
|
||||
}
|
||||
addRunTest(data).then((res: any) => {
|
||||
if (res.code === 'A0000') {
|
||||
ElMessage({
|
||||
message: '发起试运行成功',
|
||||
type: 'success'
|
||||
})
|
||||
tableStore.index()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
watch(() => route.query.t, async (newValue, oldValue) => {
|
||||
let nowTime = Date.now()
|
||||
let routeTime = route.query.t as number || 1
|
||||
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms,则不执行
|
||||
if (route.fullPath.includes('/testRun')) {
|
||||
let id = (route.query.id as string) || 'null'
|
||||
if (id != 'null') {
|
||||
monitorIds = []
|
||||
monitorIds.push(id)
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() + 1)
|
||||
start.setHours(0, 0, 0)
|
||||
const end = new Date()
|
||||
end.setDate(end.getDate() + 3)
|
||||
end.setHours(23, 59, 59)
|
||||
const startString = formatDate(start, 'YYYY-MM-DD') // 转换为 YYYY-MM-DD 格式
|
||||
const endString = formatDate(end, 'YYYY-MM-DD')
|
||||
const data = {
|
||||
startTime: startString,
|
||||
endTime: endString,
|
||||
lineIds: monitorIds,
|
||||
operateType: 1,
|
||||
id
|
||||
}
|
||||
update(data).then((res: any) => {
|
||||
if (res.code === 'A0000') {
|
||||
ElMessage({
|
||||
message: '发起试运行成功',
|
||||
type: 'success'
|
||||
})
|
||||
tableStore.index()
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
}, { deep: true, immediate: true })
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
}, { deep: true, immediate: true })
|
||||
|
||||
|
||||
const layout = mainHeight(63) as any
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.bars_w {
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
}
|
||||
|
||||
:deep(.el-tabs__content) {
|
||||
height: v-bind('layout.height');
|
||||
overflow-y: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- 用户投诉 -->
|
||||
<!-- 2 有新增 发起 预警单 -->
|
||||
|
||||
<TableHeader area nextFlag theCurrentTime showTimeAll ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<template v-slot:select>
|
||||
<el-form-item label="是否解决">
|
||||
<el-select v-model="tableStore.table.params.dealState" clearable placeholder="请选择是否解决">
|
||||
@@ -102,7 +102,7 @@ const rules = {
|
||||
}
|
||||
const formRef = ref()
|
||||
const submit = () => {
|
||||
console.log('🚀 ~ open ~ form.value:', form.value)
|
||||
|
||||
formRef.value.validate(valid => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<!-- <div>1 监测点信息 发起预告警单 </div> -->
|
||||
|
||||
<TableHeader datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef">
|
||||
<TableHeader datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<template v-slot:select>
|
||||
<el-form-item label="区域">
|
||||
<Area ref="areaRef" v-model="tableStore.table.params.deptId" @changeValue="changeArea"/>
|
||||
@@ -62,10 +62,10 @@
|
||||
</el-form-item> -->
|
||||
</template>
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Plus" :disabled="flag != '2'" type="primary" @click="launch('发起预警单')">
|
||||
<el-button icon="el-icon-Plus" :disabled="flag > 2" type="primary" @click="launch('发起预警单')">
|
||||
发起预警单
|
||||
</el-button>
|
||||
<el-button icon="el-icon-Plus" :disabled="flag != '2'" type="primary" @click="launch('发起告警单')">
|
||||
<el-button icon="el-icon-Plus" :disabled="flag > 2" type="primary" @click="launch('发起告警单')">
|
||||
发起告警单
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -328,7 +328,7 @@ tableStore.table.params.dataType = '1'
|
||||
tableStore.table.params.deptId = dictData.state.area[0].id
|
||||
provide('tableStore', tableStore)
|
||||
onMounted(() => {
|
||||
// TableHeaderRef.value.setDatePicker([{label: '月', value: 3}])
|
||||
TableHeaderRef.value.setDatePicker([{label: '月', value: 3}])
|
||||
|
||||
tableStore.index()
|
||||
setTimeout(() => {
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<!-- <div> 普测结果 发起预告警单</div> -->
|
||||
<TableHeader area nextFlag theCurrentTime showTimeAll ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<template v-slot:select>
|
||||
<el-form-item label="计划名称">
|
||||
<el-input style="width: 200px" v-model="tableStore.table.params.searchValue" clearable
|
||||
@@ -1,7 +1,7 @@
|
||||
<!---试运行列表-->
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader area nextFlag theCurrentTime showTimeAll ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="流程状态">
|
||||
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
|
||||
@@ -104,7 +104,7 @@
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="cancelFn">取消</el-button>
|
||||
|
||||
<el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button>
|
||||
<!-- <el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button>-->
|
||||
<el-button type="primary" @click="submitFn(false)" :loading="loading">提交审批</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -213,12 +213,12 @@ const treeData = ref()
|
||||
const loadData = () => {
|
||||
initDetpStataionTree({ orgId: dictData.state.area[0].id }).then(res => {
|
||||
treeList.value = res.data
|
||||
initDetpStataionTree({ orgId: 'a3069759b0b6072c99cf9a7af6c162e9' }).then(res => {
|
||||
treeListCgy.value = res.data
|
||||
setTimeout(() => {
|
||||
changeArea()
|
||||
}, 10)
|
||||
})
|
||||
// initDetpStataionTree({ orgId: '02d1b4e1680413eb72f3fa63d46c496c' }).then(res => {
|
||||
// treeListCgy.value = res.data
|
||||
setTimeout(() => {
|
||||
changeArea()
|
||||
}, 10)
|
||||
// })
|
||||
})
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ const submitFn = async (flag: boolean) => {
|
||||
}
|
||||
addForm.saveOrCheckflag = '1'
|
||||
|
||||
await addSurveyPlan(addForm).then(res => {
|
||||
await addSurveyPlan(addForm).then(res => {
|
||||
cancelFn()
|
||||
ElMessage.success('保存成功!')
|
||||
emit('onsubmit')
|
||||
@@ -263,7 +263,7 @@ const submitFn = async (flag: boolean) => {
|
||||
emit('onsubmit')
|
||||
}).catch(() => { loading.value = false})
|
||||
} else {
|
||||
await updateSurveyPlan(addForm).then(res => {
|
||||
await updateSurveyPlan(addForm).then(res => {
|
||||
cancelFn()
|
||||
ElMessage.success('重新发起成功!')
|
||||
emit('onsubmit')
|
||||
@@ -283,14 +283,30 @@ const changeArea = () => {
|
||||
treeList.value.forEach((item: any) => {
|
||||
if (item.id == form.value.deptId) {
|
||||
list.push(item)
|
||||
if (item.id != treeListCgy.value[0].id && item.name != '冀北电力有限公司' && item.name != '超高压') {
|
||||
list.push(...treeListCgy.value)
|
||||
}
|
||||
|
||||
} else {
|
||||
list.push(item.children.filter((v: any) => v.id == form.value.deptId)[0])
|
||||
if (form.value.deptId != treeListCgy.value[0].id) {
|
||||
list.push(...treeListCgy.value)
|
||||
if (item.children.filter((v: any) => v.id == form.value.deptId).length == 0) {
|
||||
item.children.forEach((v: any) => {
|
||||
list.push(v.children.filter((K: any) => K.id == form.value.deptId)[0])
|
||||
})
|
||||
// list.push(item.children.filter((v: any) => {
|
||||
// return (v.children.filter((k: any) => {
|
||||
// if( k.id == form.value.deptId){
|
||||
// return k
|
||||
// }
|
||||
// }))
|
||||
// }))
|
||||
console.log("🚀 ~ list.push ~ list:", list)
|
||||
|
||||
|
||||
} else {
|
||||
list.push(item.children.filter((v: any) => v.id == form.value.deptId)[0])
|
||||
}
|
||||
|
||||
|
||||
// if (form.value.deptId != treeListCgy.value[0].id) {
|
||||
// list.push(...treeListCgy.value)
|
||||
// }
|
||||
}
|
||||
})
|
||||
treeData.value = list
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref="TableHeaderRef">
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="监督类型">
|
||||
<el-select v-model="tableStore.table.params.supvType" clearable placeholder="请选择监督类型">
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime showTimeAll ref='TableHeaderRef'>
|
||||
<TableHeader area datePicker nextFlag theCurrentTime ref='TableHeaderRef'>
|
||||
<template v-slot:select>
|
||||
<el-form-item label='监督类型'>
|
||||
<el-select v-model='tableStore.table.params.supvType' clearable placeholder='请选择监督类型'>
|
||||
@@ -1,18 +1,14 @@
|
||||
<template>
|
||||
<div>
|
||||
<TableHeader datePicker nextFlag theCurrentTime showTimeAll ref='TableHeaderRef'>
|
||||
<TableHeader datePicker nextFlag theCurrentTime ref='TableHeaderRef'>
|
||||
<template #select>
|
||||
<el-form-item label='项目名称'>
|
||||
<el-input v-model='tableStore.table.params.projectName' placeholder='请输入项目名称'></el-input>
|
||||
<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-option v-for='item in areaOptionList' :key='item.id' :label='item.name' :value='item.name'></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
@@ -20,51 +16,39 @@
|
||||
<!-- <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()
|
||||
@@ -73,29 +57,31 @@ 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',
|
||||
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: '厂站名称',
|
||||
@@ -105,7 +91,7 @@ const tableStore = new TableStore({
|
||||
return row.cellValue
|
||||
}
|
||||
},
|
||||
{field: 'projectName', title: '项目名称', minWidth: 170},
|
||||
{ field: 'projectName', title: '项目名称', minWidth: 170 },
|
||||
{
|
||||
field: 'userType',
|
||||
title: '用户性质',
|
||||
@@ -115,7 +101,7 @@ const tableStore = new TableStore({
|
||||
return getUserTypeName(userType)
|
||||
}
|
||||
},
|
||||
{field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130},
|
||||
{ field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
|
||||
{
|
||||
field: 'userStatus',
|
||||
title: '用户状态',
|
||||
@@ -214,8 +200,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 => {
|
||||
@@ -241,7 +227,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 })
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -338,7 +324,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',
|
||||
@@ -367,10 +353,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') {
|
||||
@@ -397,10 +383,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
|
||||
@@ -447,16 +433,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
|
||||
}
|
||||
},
|
||||
{
|
||||
deep: true
|
||||
() => currentRoute.value.path,
|
||||
() => {
|
||||
if (flag.value && options.history.state.forward?.split('/')[1] == 'bpm') {
|
||||
tableStore.index()
|
||||
flag.value = false
|
||||
}
|
||||
},
|
||||
{
|
||||
deep: true
|
||||
}
|
||||
)
|
||||
|
||||
//初始进来时如果有id就直接打开重新发起
|
||||
@@ -491,7 +477,7 @@ watch(() => props.id, async (newValue, oldValue) => {
|
||||
})
|
||||
}
|
||||
|
||||
}, {immediate: true})
|
||||
}, { immediate: true })
|
||||
|
||||
|
||||
</script>
|
||||
@@ -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,94 +286,72 @@
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border style="flex: 1" title="变更后">
|
||||
<el-descriptions-item label="填报人" :label-class-name="changeTheField?.reporter ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.reporter ? 'my-content' : ''">
|
||||
<el-descriptions-item label="填报人">
|
||||
{{ detailData1.reporter }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="填报日期" :label-class-name="changeTheField?.reportDate ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.reportDate ? 'my-content' : ''">
|
||||
<el-descriptions-item label="填报日期">
|
||||
{{ formatDate(detailData1.reportDate, 'YYYY-MM-DD') }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="填报部门" :label-class-name="changeTheField?.orgName ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.orgName ? 'my-content' : ''">
|
||||
<el-descriptions-item label="填报部门">
|
||||
{{ detailData1.orgName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工程预期投产日期"
|
||||
:label-class-name="changeTheField?.expectedProductionDate ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.expectedProductionDate ? 'my-content' : ''">
|
||||
<el-descriptions-item label="工程预期投产日期">
|
||||
{{ formatDate(detailData1.expectedProductionDate, 'YYYY-MM-DD') }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="用户性质" :label-class-name="changeTheField?.userType ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.userType ? 'my-content' : ''">
|
||||
<el-descriptions-item label="用户性质">
|
||||
{{
|
||||
userTypeList.find(item => {
|
||||
return item.value == detailData1.userType
|
||||
})?.label
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所在地市" :label-class-name="changeTheField?.city ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.city ? 'my-content' : ''">
|
||||
<el-descriptions-item label="所在地市">
|
||||
{{ detailData1.city }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="归口管理部门"
|
||||
:label-class-name="changeTheField?.responsibleDepartment ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.responsibleDepartment ? 'my-content' : ''">
|
||||
<el-descriptions-item label="归口管理部门">
|
||||
{{ detailData1.responsibleDepartment }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="用户状态" :label-class-name="changeTheField?.userStatus ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.userStatus ? 'my-content' : ''">
|
||||
<el-descriptions-item label="用户状态">
|
||||
{{
|
||||
userStateList.find(item => {
|
||||
return item.value == detailData1.userStatus
|
||||
})?.label
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="变电站" :label-class-name="changeTheField?.substation ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.substation ? 'my-content' : ''">
|
||||
<el-descriptions-item label="变电站">
|
||||
{{ detailData1.substation }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工程名" :label-class-name="changeTheField?.projectName ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.projectName ? 'my-content' : ''">
|
||||
<el-descriptions-item label="工程名">
|
||||
{{ detailData1.projectName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="电压等级" :label-class-name="changeTheField?.voltageLevel ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.voltageLevel ? 'my-content' : ''">
|
||||
<el-descriptions-item label="电压等级">
|
||||
{{
|
||||
voltageLevelList.find(item => {
|
||||
return item.id == detailData1.voltageLevel
|
||||
})?.name
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<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' : ''">
|
||||
<el-descriptions-item label="非线性终端类型" v-if="detailData1.userType == 0 || detailData1.userType == 1">
|
||||
{{ proviteData1.nonlinearDeviceType ? proviteData1.nonlinearDeviceType : '-' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预测评估单位"
|
||||
:label-class-name="changeTheField?.evaluationDept ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.evaluationDept ? 'my-content' : ''">
|
||||
<el-descriptions-item label="预测评估单位">
|
||||
{{ detailData1.evaluationDept }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预测评估结论" :span="2"
|
||||
:label-class-name="changeTheField?.evaluationConclusion ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.evaluationConclusion ? 'my-content' : ''">
|
||||
<el-descriptions-item label="预测评估结论" :span="2">
|
||||
{{ 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="是否需要治理"
|
||||
:label-class-name="changeTheField?.needGovernance ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.needGovernance ? 'my-content' : ''">
|
||||
<el-descriptions-item label="是否需要治理">
|
||||
<span v-if="detailData1.userType == 0 || detailData1.userType == 1">
|
||||
{{ proviteData1.needGovernance == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
@@ -387,9 +365,7 @@
|
||||
</span>
|
||||
<span v-if="detailData1.userType == 6">{{ proviteData1.needGovernance == 0 ? '否' : '是' }}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否开展背景测试"
|
||||
:label-class-name="changeTheField?.backgroundTestPerformed ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.backgroundTestPerformed ? 'my-content' : ''">
|
||||
<el-descriptions-item label="是否开展背景测试">
|
||||
<span v-if="detailData1.userType == 0 || detailData1.userType == 1">
|
||||
{{ proviteData1.backgroundTestPerformed == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
@@ -405,16 +381,12 @@
|
||||
{{ proviteData1.backgroundTestPerformed == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData1.userType == 6"
|
||||
:label-class-name="changeTheField?.antiInterferenceTest ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.antiInterferenceTest ? 'my-content' : ''">
|
||||
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData1.userType == 6">
|
||||
<span>
|
||||
{{ proviteData1.antiInterferenceTest == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
<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' : ''">
|
||||
<el-descriptions-item label="用户协议容量(MVA)" v-if="detailData1.userType == 0 || detailData1.userType == 1">
|
||||
{{ proviteData1.agreementCapacity }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="PCC供电设备容量(MVA)" v-if="
|
||||
@@ -422,8 +394,7 @@
|
||||
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="
|
||||
@@ -431,8 +402,7 @@
|
||||
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="
|
||||
@@ -440,8 +410,7 @@
|
||||
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="
|
||||
@@ -449,84 +418,61 @@
|
||||
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"
|
||||
:label-class-name="changeTheField?.pccPoint ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.pccPoint ? 'my-content' : ''">
|
||||
<el-descriptions-item label="PCC点" v-if="detailData1.userType != 0 && detailData1.userType != 1">
|
||||
{{ proviteData1?.pccPoint }}
|
||||
</el-descriptions-item>
|
||||
<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' : ''">
|
||||
<el-descriptions-item label="评估类型" v-if="detailData1.userType != 0 && detailData1.userType != 1">
|
||||
{{
|
||||
evaluationTypeList.find(item => {
|
||||
return item.id == proviteData1?.evaluationType
|
||||
})?.name
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<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' : ''">
|
||||
<el-descriptions-item label="预测评估评审单位" v-if="detailData1.userType != 0 && detailData1.userType != 1">
|
||||
{{ proviteData1?.evaluationChekDept }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="行业" v-if="detailData1.userType == 6"
|
||||
:label-class-name="changeTheField?.industry ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.industry ? 'my-content' : ''">
|
||||
<el-descriptions-item label="行业" v-if="detailData1.userType == 6">
|
||||
{{
|
||||
industryList.find(item => {
|
||||
return item.id == proviteData1.industry
|
||||
})?.name
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="敏感终端名称" v-if="detailData1.userType == 6"
|
||||
:label-class-name="changeTheField?.deviceName ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.deviceName ? 'my-content' : ''">
|
||||
<el-descriptions-item label="敏感终端名称" v-if="detailData1.userType == 6">
|
||||
{{ 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"
|
||||
:label-class-name="changeTheField?.powerSupplyInfo ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.powerSupplyInfo ? 'my-content' : ''">
|
||||
<el-descriptions-item label="供电电源情况" v-if="detailData1.userType == 6">
|
||||
{{
|
||||
powerSupplyInfoOptionList.find(item => {
|
||||
return item.id == proviteData1.powerSupplyInfo
|
||||
})?.name
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="供电电源" :span="2" v-if="detailData1.userType == 6"
|
||||
:label-class-name="changeTheField?.powerSupply ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.powerSupply ? 'my-content' : ''">
|
||||
<el-descriptions-item label="供电电源" :span="2" v-if="detailData1.userType == 6">
|
||||
{{ proviteData1.powerSupply }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="负荷级别" v-if="detailData1.userType == 6"
|
||||
:label-class-name="changeTheField?.loadLevel ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.loadLevel ? 'my-content' : ''">
|
||||
<el-descriptions-item label="负荷级别" v-if="detailData1.userType == 6">
|
||||
{{
|
||||
loadLevelOptionList.find(item => {
|
||||
return item.id == proviteData1.loadLevel
|
||||
})?.name
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="敏感电能质量指标" v-if="detailData1.userType == 6"
|
||||
:label-class-name="changeTheField?.energyQualityIndex ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.energyQualityIndex ? 'my-content' : ''">
|
||||
<el-descriptions-item label="敏感电能质量指标" v-if="detailData1.userType == 6">
|
||||
{{
|
||||
energyQualityIndexList.find(item => {
|
||||
return item.id == proviteData1.energyQualityIndex
|
||||
})?.name
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<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-descriptions-item label="可研报告">
|
||||
<span v-if="detailData1.userType == 0 || detailData1.userType == 1">
|
||||
<el-icon class="elView" v-if="proviteData1?.feasibilityReport?.name">
|
||||
<View @click="openFile(proviteData1?.feasibilityReport?.name)" />
|
||||
</el-icon>
|
||||
@@ -547,9 +493,7 @@
|
||||
{{ proviteData1.feasibilityReport?.name }}
|
||||
</a>
|
||||
</span>
|
||||
<span v-if="detailData1.userType == 6"
|
||||
:label-class-name="changeTheField?.feasibilityReport ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.feasibilityReport ? 'my-content' : ''">
|
||||
<span v-if="detailData1.userType == 6">
|
||||
<el-icon class="elView" v-if="proviteData1?.feasibilityReport?.name">
|
||||
<View @click="openFile(proviteData1?.feasibilityReport?.name)" />
|
||||
</el-icon>
|
||||
@@ -558,9 +502,7 @@
|
||||
</a>
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="项目初步设计说明书"
|
||||
:label-class-name="changeTheField?.preliminaryDesignDescription ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.preliminaryDesignDescription ? 'my-content' : ''">
|
||||
<el-descriptions-item label="项目初步设计说明书">
|
||||
<el-icon class="elView" v-if="proviteData1?.preliminaryDesignDescription?.name">
|
||||
<View @click="openFile(proviteData1?.preliminaryDesignDescription?.name)" />
|
||||
</el-icon>
|
||||
@@ -569,9 +511,7 @@
|
||||
{{ proviteData1?.preliminaryDesignDescription?.name }}
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预测评估报告"
|
||||
:label-class-name="changeTheField?.predictionEvaluationReport ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.predictionEvaluationReport ? 'my-content' : ''">
|
||||
<el-descriptions-item label="预测评估报告">
|
||||
<el-icon class="elView" v-if="proviteData1?.predictionEvaluationReport?.name">
|
||||
<View @click="openFile(proviteData1?.predictionEvaluationReport?.name)" />
|
||||
</el-icon>
|
||||
@@ -579,9 +519,7 @@
|
||||
{{ proviteData1?.predictionEvaluationReport?.name }}
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预测评估评审意见报告"
|
||||
:label-class-name="changeTheField?.predictionEvaluationReviewOpinions ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.predictionEvaluationReviewOpinions ? 'my-content' : ''">
|
||||
<el-descriptions-item label="预测评估评审意见报告">
|
||||
<el-icon class="elView" v-if="proviteData1?.predictionEvaluationReviewOpinions?.name">
|
||||
<View @click="openFile(proviteData1?.predictionEvaluationReviewOpinions?.name)" />
|
||||
</el-icon>
|
||||
@@ -589,9 +527,7 @@
|
||||
{{ proviteData1?.predictionEvaluationReviewOpinions?.name }}
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
<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-descriptions-item label="用户接入变电站主接线示意图" v-if="detailData.userType != 0 && detailData.userType != 1">
|
||||
<el-icon class="elView" v-if="proviteData1?.substationMainWiringDiagram?.name">
|
||||
<View @click="openFile(proviteData1?.substationMainWiringDiagram?.name)" />
|
||||
</el-icon>
|
||||
@@ -599,9 +535,7 @@
|
||||
{{ proviteData1?.substationMainWiringDiagram?.name }}
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="主要敏感终端清单" v-if="detailData.userType == 6"
|
||||
:label-class-name="changeTheField?.sensitiveDevices ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.sensitiveDevices ? 'my-content' : ''">
|
||||
<el-descriptions-item label="主要敏感终端清单" v-if="detailData.userType == 6">
|
||||
<el-icon class="elView" v-if="proviteData1?.sensitiveDevices?.name">
|
||||
<View @click="openFile(proviteData1?.sensitiveDevices?.name)" />
|
||||
</el-icon>
|
||||
@@ -609,9 +543,7 @@
|
||||
{{ proviteData1?.sensitiveDevices?.name }}
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="抗扰度测试报告" v-if="detailData.userType == 6"
|
||||
:label-class-name="changeTheField?.antiInterferenceReport ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.antiInterferenceReport ? 'my-content' : ''">
|
||||
<el-descriptions-item label="抗扰度测试报告" v-if="detailData.userType == 6">
|
||||
<el-icon class="elView" v-if="proviteData1?.antiInterferenceReport?.name">
|
||||
<View @click="openFile(proviteData1?.antiInterferenceReport?.name)" />
|
||||
</el-icon>
|
||||
@@ -619,9 +551,7 @@
|
||||
{{ proviteData1?.antiInterferenceReport?.name }}
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="背景电能质量测试报告" v-if="detailData.userType == 6"
|
||||
:label-class-name="changeTheField?.powerQualityReport ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.powerQualityReport ? 'my-content' : ''">
|
||||
<el-descriptions-item label="背景电能质量测试报告" v-if="detailData.userType == 6">
|
||||
<el-icon class="elView" v-if="proviteData1?.powerQualityReport?.name">
|
||||
<View @click="openFile(proviteData1?.powerQualityReport?.name)" />
|
||||
</el-icon>
|
||||
@@ -630,9 +560,7 @@
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="其他附件"
|
||||
v-if="proviteData1?.additionalAttachments && proviteData1?.additionalAttachments?.url"
|
||||
:label-class-name="changeTheField?.additionalAttachments ? 'my-content' : ''"
|
||||
:class-name="changeTheField?.additionalAttachments ? 'my-content' : ''">
|
||||
v-if="proviteData1?.additionalAttachments && proviteData1?.additionalAttachments?.url">
|
||||
<el-icon class="elView" v-if="proviteData1?.additionalAttachments?.name">
|
||||
<View @click="openFile(proviteData1?.additionalAttachments?.name)" />
|
||||
</el-icon>
|
||||
@@ -724,7 +652,6 @@ const userStateList = reactive([
|
||||
value: '3'
|
||||
}
|
||||
])
|
||||
|
||||
const dictData = useDictData()
|
||||
//字典获取所在地市
|
||||
const areaOptionList = dictData.getBasicData('jibei_area')
|
||||
@@ -740,80 +667,23 @@ 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 => {
|
||||
obj1 = JSON.parse(JSON.stringify(res.data.userReportMessageJson))
|
||||
detailData1.value = JSON.parse(JSON.stringify(res.data.userReportMessageJson))
|
||||
detailData1.value = res.data.userReportMessageJson
|
||||
getProviteData1()
|
||||
})
|
||||
|
||||
await getUserReportById(props.id || queryId).then(res => {
|
||||
obj2 = JSON.parse(JSON.stringify(res.data))
|
||||
detailData.value = JSON.parse(JSON.stringify(res.data))
|
||||
detailData.value = 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()
|
||||
|
||||
@@ -1131,8 +1001,3 @@ onMounted(() => {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
<style scoped>
|
||||
:deep(.my-content) {
|
||||
background: var(--el-color-success-light-7) !important;
|
||||
}
|
||||
</style>
|
||||
@@ -16,37 +16,26 @@
|
||||
</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>
|
||||
|
||||
@@ -55,20 +44,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()
|
||||
@@ -77,26 +66,28 @@ 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: '用户性质',
|
||||
@@ -106,8 +97,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: '用户状态',
|
||||
@@ -126,7 +117,7 @@ const tableStore = new TableStore({
|
||||
3: '退运'
|
||||
}
|
||||
},
|
||||
{field: 'substation', title: '厂站名称', minWidth: 100},
|
||||
{ field: 'substation', title: '厂站名称', minWidth: 100 },
|
||||
{
|
||||
field: 'status',
|
||||
title: '流程状态',
|
||||
@@ -155,7 +146,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,
|
||||
@@ -263,7 +254,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 = '重新发起'
|
||||
@@ -283,7 +274,7 @@ onUnmounted(() => {
|
||||
/**取消流程操作*/
|
||||
const cancelLeave = async (row: any) => {
|
||||
// 二次确认
|
||||
const {value} = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
|
||||
const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
inputType: 'textarea',
|
||||
@@ -1,303 +1,307 @@
|
||||
<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="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.trim='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="form.orgId" :disabled="true" autocomplete="off" />
|
||||
<el-form-item for='-' label='填报部门:' prop='orgId'>
|
||||
<el-input v-model.trim='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="form.responsibleDepartment" autocomplete="off" placeholder="请输入归口管理部门" />
|
||||
<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>
|
||||
<el-form-item for="-" label="项目名称:" prop="projectName">
|
||||
<el-input v-model="form.projectName" autocomplete="off" placeholder="请输入项目名称" />
|
||||
<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>
|
||||
<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="form.substation" autocomplete="off" placeholder="请输入厂站名称" />
|
||||
<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>
|
||||
<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,'')
|
||||
<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,'')
|
||||
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete="off" placeholder="请输入用户协议容量">
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete='off' placeholder='请输入用户协议容量' maxlength="6"
|
||||
show-word-limit>
|
||||
<template #append>MVA</template>
|
||||
</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="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.trim='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="form.baseShortCircuitCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
label='基准短路容量:' prop='baseShortCircuitCapacity'>
|
||||
<el-input v-model.trim='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="form.minShortCircuitCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
label='系统最小短路容量:' prop='minShortCircuitCapacity'>
|
||||
<el-input v-model.trim='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="form.pccEquipmentCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
label='PCC供电设备容量:' prop='pccEquipmentCapacity'>
|
||||
<el-input v-model.trim='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="form.userAgreementCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
label='用户用电协议容量:' prop='userAgreementCapacity'>
|
||||
<el-input v-model.trim='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="form.deviceName" autocomplete="off" placeholder="请输入敏感终端名称" />
|
||||
<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>
|
||||
<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="form.evaluationChekDept" autocomplete="off" placeholder="请输入预测评估评审单位" />
|
||||
<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>
|
||||
<el-form-item for="-" label="预测评估结论:" prop="evaluationConclusion" style="width: 100%">
|
||||
<el-input type="textarea" v-model="form.evaluationConclusion" autocomplete="off"
|
||||
placeholder="请输入预测评估结论" />
|
||||
<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>
|
||||
<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'
|
||||
@@ -318,6 +322,7 @@ 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')) {
|
||||
@@ -618,7 +623,8 @@ const subForm: any = ref({
|
||||
substationMainWiringDiagram: [] //用户接入变电站主接线示意图地址
|
||||
}
|
||||
})
|
||||
|
||||
// 特殊字符正则表达式
|
||||
const specialCharRegex = /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/
|
||||
//定义校验规则
|
||||
const rules = ref({
|
||||
reporter: [{ required: true, message: '请输入填报人', trigger: 'blur' }],
|
||||
@@ -627,16 +633,58 @@ 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' }],
|
||||
responsibleDepartment: [{ required: true, message: '请输入归口管理部门', trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (specialCharRegex.test(value)) {
|
||||
callback(new Error('输入包含不允许的特殊字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}],
|
||||
userStatus: [{ required: true, message: '请选择用户状态', trigger: 'change' }],
|
||||
projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
|
||||
substation: [{ required: true, message: '请输入变电站', trigger: 'blur' }],
|
||||
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'
|
||||
}],
|
||||
voltageLevel: [{ required: true, message: '请选择电压等级', trigger: 'change' }],
|
||||
evaluationDept: [{ required: true, message: '请选择预测评估单位', trigger: 'change' }],
|
||||
evaluationConclusion: [{ required: true, message: '请输入预测评估结论', trigger: 'blur' }],
|
||||
evaluationConclusion: [{ required: true, message: '请输入预测评估结论', trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (specialCharRegex.test(value)) {
|
||||
callback(new Error('输入包含不允许的特殊字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: 'blur'
|
||||
}],
|
||||
devId: [{ required: true, message: '请选择关联终端', trigger: 'change' }],
|
||||
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' }],
|
||||
@@ -784,6 +832,8 @@ watch(
|
||||
deep: true
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
const resendId = ref('')
|
||||
const status = ref('')
|
||||
const open = async (row: any) => {
|
||||
@@ -819,6 +869,7 @@ const open = async (row: any) => {
|
||||
})
|
||||
}, 10)
|
||||
}
|
||||
|
||||
async function handleResponse(data: any) {
|
||||
// userType logic is commented out; if needed, implement accordingly
|
||||
if (data.userReportProjectPO) {
|
||||
@@ -884,7 +935,8 @@ const close = () => {
|
||||
emits('onSubmit')
|
||||
resetForm()
|
||||
}
|
||||
onMounted(() => { })
|
||||
onMounted(() => {
|
||||
})
|
||||
|
||||
// 上传报告
|
||||
const uploadRef = ref()
|
||||
@@ -1207,8 +1259,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
|
||||
@@ -1226,8 +1278,8 @@ const confirmForm = async (flag: boolean) => {
|
||||
resetForm()
|
||||
close()
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false
|
||||
})
|
||||
} else {
|
||||
await resend(confirmFormData).then(res => {
|
||||
ElMessage({
|
||||
@@ -1238,8 +1290,8 @@ const confirmForm = async (flag: boolean) => {
|
||||
resetForm()
|
||||
close()
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
} else {
|
||||
await updateFormData(confirmFormData).then(res => {
|
||||
@@ -1252,8 +1304,8 @@ const confirmForm = async (flag: boolean) => {
|
||||
resetForm()
|
||||
close()
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1280,7 +1332,7 @@ const setcontroFlag = () => {
|
||||
}
|
||||
defineExpose({ open, filterUsers, setcontroFlag })
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
<style lang='scss' scoped>
|
||||
.el-form {}
|
||||
|
||||
.form-label-left-align {
|
||||
@@ -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 == 1 ? '是' : '否' }}
|
||||
{{ proviteData.needGovernance == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
<span v-if="
|
||||
detailData.userType == 2 ||
|
||||
@@ -74,13 +74,13 @@
|
||||
detailData.userType == 4 ||
|
||||
detailData.userType == 5
|
||||
">
|
||||
{{ proviteData?.needGovernance == 1 ? '是' : '否' }}
|
||||
{{ proviteData.needGovernance == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
<span v-if="detailData.userType == 6">{{ proviteData?.needGovernance == 1 ? '是' : '否' }}</span>
|
||||
<span v-if="detailData.userType == 6">{{ proviteData.needGovernance == 0 ? '否' : '是' }}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否开展背景测试">
|
||||
<span v-if="detailData.userType == 0 || detailData.userType == 1">
|
||||
{{ proviteData?.backgroundTestPerformed == 1 ? '是' : '否' }}
|
||||
{{ proviteData.backgroundTestPerformed == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
<span v-if="
|
||||
detailData.userType == 2 ||
|
||||
@@ -88,10 +88,10 @@
|
||||
detailData.userType == 4 ||
|
||||
detailData.userType == 5
|
||||
">
|
||||
{{ proviteData?.backgroundTestPerformed == 1 ? '是' : '否' }}
|
||||
{{ proviteData.backgroundTestPerformed == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
<span v-if="detailData.userType == 6">
|
||||
{{ proviteData?.backgroundTestPerformed == 1 ? '是' : '否' }}
|
||||
{{ proviteData.backgroundTestPerformed == 0 ? '否' : '是' }}
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
|
||||
@@ -109,11 +109,11 @@
|
||||
|
||||
<el-descriptions-item label="是否开展抗扰度测试" v-if="detailData.userType == 6">
|
||||
<span>
|
||||
{{ proviteData.antiInterferenceTest == 1 ? '是' : '否' }}
|
||||
{{ proviteData.antiInterferenceTest == 0 ? '否' : '是' }}
|
||||
</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,6 +573,7 @@ const preview = (val: any, url: any) => {
|
||||
}
|
||||
//预测评估报告
|
||||
if (val == 'predictionEvaluationReport') {
|
||||
console.log(url, '9999999')
|
||||
predictionEvaluationReportRef?.value.open(url)
|
||||
}
|
||||
//预测评估评审意见报告
|
||||
@@ -625,66 +626,59 @@ const getProviteData = async () => {
|
||||
) {
|
||||
proviteData.value = detailData.value.userReportSubstationPO
|
||||
//查询非线性负荷类型
|
||||
|
||||
|
||||
if (proviteData.value?.nonlinearLoadType != undefined) {
|
||||
await getDictTreeById(proviteData.value.nonlinearLoadType).then(res => {
|
||||
proviteData.value.nonlinearLoadType = res.data?.name
|
||||
})
|
||||
}
|
||||
|
||||
await getDictTreeById(proviteData.value.nonlinearLoadType).then(res => {
|
||||
proviteData.value.nonlinearLoadType = res.data?.name
|
||||
})
|
||||
} else {
|
||||
proviteData.value = detailData.value.userReportSensitivePO
|
||||
}
|
||||
//可研报告
|
||||
if (proviteData.value?.feasibilityReport != undefined && proviteData.value?.feasibilityReport.length>7) {
|
||||
|
||||
if (proviteData.value.feasibilityReport) {
|
||||
await getFileNamePath(proviteData.value.feasibilityReport, 'feasibilityReport')
|
||||
}
|
||||
//项目初步设计说明书
|
||||
if (proviteData.value?.preliminaryDesignDescription != undefined && proviteData.value?.preliminaryDesignDescription.length>7) {
|
||||
if (proviteData.value.preliminaryDesignDescription) {
|
||||
await getFileNamePath(proviteData.value.preliminaryDesignDescription, 'preliminaryDesignDescription')
|
||||
}
|
||||
//预测评估报告
|
||||
if (proviteData.value?.predictionEvaluationReport != undefined && proviteData.value?.predictionEvaluationReport.length>7) {
|
||||
if (proviteData.value.predictionEvaluationReport) {
|
||||
await getFileNamePath(proviteData.value.predictionEvaluationReport, 'predictionEvaluationReport')
|
||||
}
|
||||
|
||||
//预测评估评审意见报告
|
||||
if (proviteData.value?.predictionEvaluationReviewOpinions != undefined && proviteData.value?.predictionEvaluationReviewOpinions.length>7) {
|
||||
|
||||
if (proviteData.value.predictionEvaluationReviewOpinions) {
|
||||
await getFileNamePath(
|
||||
proviteData.value.predictionEvaluationReviewOpinions,
|
||||
'predictionEvaluationReviewOpinions'
|
||||
)
|
||||
}
|
||||
//用户接入变电站主接线示意图
|
||||
if (proviteData.value?.substationMainWiringDiagram != undefined && proviteData.value?.substationMainWiringDiagram.length>7) {
|
||||
if (proviteData.value.substationMainWiringDiagram) {
|
||||
await getFileNamePath(proviteData.value.substationMainWiringDiagram, 'substationMainWiringDiagram')
|
||||
}
|
||||
|
||||
//主要敏感终端清单
|
||||
if (proviteData.value?.sensitiveDevices != undefined && proviteData.value?.sensitiveDevices.length>7) {
|
||||
if (proviteData.value.sensitiveDevices) {
|
||||
await getFileNamePath(proviteData.value.sensitiveDevices, 'sensitiveDevices')
|
||||
}
|
||||
|
||||
//抗扰度测试报告
|
||||
if (proviteData.value?.antiInterferenceReport != undefined && proviteData.value?.antiInterferenceReport.length>7) {
|
||||
if (proviteData.value.antiInterferenceReport) {
|
||||
await getFileNamePath(proviteData.value.antiInterferenceReport, 'antiInterferenceReport')
|
||||
}
|
||||
|
||||
//背景电能质量测试报告
|
||||
if (proviteData.value?.powerQualityReport != undefined && proviteData.value?.powerQualityReport.length>7) {
|
||||
if (proviteData.value.powerQualityReport) {
|
||||
await getFileNamePath(proviteData.value.powerQualityReport, 'powerQualityReport')
|
||||
}
|
||||
|
||||
//其他附件
|
||||
if (proviteData.value?.additionalAttachments != undefined && proviteData.value?.additionalAttachments.length>7) {
|
||||
if (proviteData.value.additionalAttachments) {
|
||||
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) {
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<TableHeader datePicker nextFlag theCurrentTime showTimeAll ref='TableHeaderRef'>
|
||||
<TableHeader datePicker nextFlag theCurrentTime ref='TableHeaderRef'>
|
||||
<template #select>
|
||||
<el-form-item label='项目名称'>
|
||||
<el-input v-model='tableStore.table.params.projectName' placeholder='请输入项目名称'></el-input>
|
||||
<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='请选择所在地市'>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user