This commit is contained in:
2024-09-14 10:20:49 +08:00
parent cb9a0fe5e4
commit b870839d39
7 changed files with 244 additions and 176 deletions

View File

@@ -286,7 +286,7 @@ const tableStore = new TableStore({
}, },
click: row => { click: row => {
feedbackPopup.value.open( feedbackPopup.value.open(
'填报反馈单', '填报告警反馈单',
row.id, row.id,
row.status, row.status,
row.issueDetail, row.issueDetail,
@@ -324,7 +324,7 @@ const tableStore = new TableStore({
}, },
click: row => { click: row => {
feedbackPopup.value.open( feedbackPopup.value.open(
'编辑', '编辑告警反馈单',
row.id, row.id,
row.status, row.status,
row.issueDetail, row.issueDetail,
@@ -349,7 +349,7 @@ const tableStore = new TableStore({
click: row => { click: row => {
// deviceQuitPopup.value.open('重新发起', row) // deviceQuitPopup.value.open('重新发起', row)
feedbackPopup.value.open( feedbackPopup.value.open(
'重新发起告警单', '重新填报告警反馈单',
row.id, row.id,
row.status, row.status,
row.issueDetail, row.issueDetail,
@@ -448,7 +448,7 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
}) })
} }
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps(['id','businessKey'])
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
@@ -457,8 +457,20 @@ watch(() => props.id, async (newValue, oldValue) => {
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getById(fullId).then(res => { await getById(fullId).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
if (res && res.code == 'A0000') {
if(props.businessKey == '3'){
feedbackPopup.value.open( 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.id,
res.data.status, res.data.status,
res.data.issueDetail, res.data.issueDetail,
@@ -470,6 +482,9 @@ watch(() => props.id, async (newValue, oldValue) => {
res.data.reformAdvice res.data.reformAdvice
) )
} }
}
}
}) })
}, {immediate: true}) }, {immediate: true})
</script> </script>

View File

@@ -166,7 +166,7 @@ const tableStore = new TableStore({
}, },
click: row => { click: row => {
feedbackPopup.value.open( feedbackPopup.value.open(
'填报反馈单', '填报预警反馈单',
row.id, row.id,
row.status, row.status,
row.issueDetail, row.issueDetail,
@@ -203,7 +203,7 @@ const tableStore = new TableStore({
}, },
click: row => { click: row => {
feedbackPopup.value.open( feedbackPopup.value.open(
'编辑', '编辑预警反馈单',
row.id, row.id,
row.status, row.status,
row.issueDetail, row.issueDetail,
@@ -227,7 +227,7 @@ const tableStore = new TableStore({
click: row => { click: row => {
// deviceQuitPopup.value.open('重新发起', row) // deviceQuitPopup.value.open('重新发起', row)
feedbackPopup.value.open( feedbackPopup.value.open(
'重新发起预警单', '重新填报预警反馈单',
row.id, row.id,
row.status, row.status,
row.issueDetail, row.issueDetail,
@@ -322,7 +322,7 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
}) })
} }
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps(['id','businessKey'])
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
@@ -331,8 +331,19 @@ watch(() => props.id, async (newValue, oldValue) => {
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getById(fullId).then(res => { await getById(fullId).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
if(props.businessKey == '3'){
feedbackPopup.value.open( 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.id,
res.data.status, res.data.status,
res.data.issueDetail, res.data.issueDetail,
@@ -343,6 +354,7 @@ watch(() => props.id, async (newValue, oldValue) => {
res.data.reportPath res.data.reportPath
) )
} }
}
}) })
}, {immediate: true}) }, {immediate: true})
</script> </script>

View File

@@ -5,10 +5,10 @@
<el-tab-pane label="技术监督管理" name="2"><technology v-if="activeName == '2'"/></el-tab-pane> --> <el-tab-pane label="技术监督管理" name="2"><technology v-if="activeName == '2'"/></el-tab-pane> -->
<el-tab-pane label='预警单列表' name='3'> <el-tab-pane label='预警单列表' name='3'>
<earlyWarn :id="id" v-if="activeName == '3'" /> <earlyWarn :id="id" :businessKey='key' v-if="activeName == '3'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='告警单列表' name='4'> <el-tab-pane label='告警单列表' name='4'>
<alarm :id="id" v-if="activeName == '4'" /> <alarm :id="id" :businessKey='key' v-if="activeName == '4'" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
@@ -22,6 +22,7 @@ import { useRoute } from 'vue-router'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
const route = useRoute() const route = useRoute()
const id = ref('') const id = ref('')
const key = ref('')
defineOptions({ defineOptions({
name: 'supervision/supervision/manage' name: 'supervision/supervision/manage'
}) })
@@ -32,12 +33,13 @@ const activeName: any = ref(null)
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('supervision/supervision/manage')) { if (route.fullPath.includes('supervision/supervision/manage')) {
let type = (route.query.type as string) || 'null' let type = (route.query.type as string) || 'null'
if (type == 'null' || type == '0') { if (type == 'null' || type == '0' || type == '3') {
activeName.value = '3' activeName.value = '3'
} else { } else {
activeName.value = '4' activeName.value = '4'
} }
id.value = (route.query.id as string) || 'null' id.value = (route.query.id as string) || 'null'
key.value = (route.query.key as string) || 'null'
id.value = id.value + '@' + route.query.t id.value = id.value + '@' + route.query.t
} }
}, {deep: true, immediate: true}) }, {deep: true, immediate: true})

View File

@@ -1,59 +1,76 @@
<template> <template>
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title" width="550px" top="20vh"> <el-dialog draggable class='cn-operate-dialog' v-model='dialogVisible' :title='title' width='550px' top='20vh'>
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef"> <el-form :inline='false' :model='form' label-width='120px' :rules='rules' ref='formRef'>
<el-form-item for="-" label="本次定检时间:" prop="nowCheckTime">
<el-form-item label='所属供电公司' >
<el-input
readonly
v-model='form.dept'
></el-input>
</el-form-item>
<el-form-item label='终端名称' >
<el-input
readonly
v-model='form.deviceName'
></el-input>
</el-form-item>
<el-form-item for='-' label='本次定检时间:' prop='nowCheckTime'>
<el-date-picker <el-date-picker
v-model="form.nowCheckTime" v-model='form.nowCheckTime'
placeholder="选择日期" placeholder='选择日期'
format="YYYY-MM-DD" format='YYYY-MM-DD'
style="width: 100%" style='width: 100%'
value-format="YYYY-MM-DD" value-format='YYYY-MM-DD'
type="date" type='date'
/> />
</el-form-item> </el-form-item>
<el-form-item for="-" label="报告文件:" class="uploadFile" prop="reportPath"> <el-form-item for='-' label='报告文件:' class='uploadFile' prop='reportPath'>
<el-upload <el-upload
v-model:file-list="form.reportPath" v-model:file-list='form.reportPath'
ref="uploadRef" ref='uploadRef'
action="" action=''
accept="" accept=''
:limit="1" :limit='1'
:on-exceed="handleExceed" :on-exceed='handleExceed'
:on-change="choose" :on-change='choose'
:auto-upload="false" :auto-upload='false'
:on-remove="removeFile" :on-remove='removeFile'
> >
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type='primary'>上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="描述" prop="description"> <el-form-item label='描述' prop='description'>
<el-input <el-input
type="textarea" type='textarea'
clearable clearable
:autosize="{ minRows: 2, maxRows: 4 }" :autosize='{ minRows: 2, maxRows: 4 }'
placeholder="请输入描述" placeholder='请输入描述'
v-model="form.description" v-model='form.description'
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class='dialog-footer'>
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click='dialogVisible = false'>取消</el-button>
<el-button type="primary" @click="submit">确认</el-button> <el-button type='primary' @click='submit'>确认</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script lang="ts" setup> <script lang='ts' setup>
import { ref, inject } from 'vue' import { ref, inject } from 'vue'
import { genFileId, ElMessage } from 'element-plus' import { genFileId, ElMessage } from 'element-plus'
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus' import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
import { uploadFile } from '@/api/system-boot/file' import { uploadFile } from '@/api/system-boot/file'
import { reload, submitDevice } from '@/api/supervision-boot/cycleDetection/index' import { reload, submitDevice } from '@/api/supervision-boot/cycleDetection/index'
const emits = defineEmits(['onSubmit']) const emits = defineEmits(['onSubmit'])
//下拉数据源 //下拉数据源
@@ -68,7 +85,9 @@ const form: any = ref({
id: '', id: '',
reportPath: [], reportPath: [],
description: '', description: '',
nowCheckTime: '' nowCheckTime: '',
dept: '',
deviceName: ''
}) })
//form表单校验规则 //form表单校验规则
@@ -80,9 +99,10 @@ const rules = {
const open = async (text: string, tempData?: any) => { const open = async (text: string, tempData?: any) => {
title.value = text title.value = text
if (tempData) { if (tempData) {
form.value.id = tempData.id form.value.id = tempData.id
form.value.dept = tempData.dept
form.value.deviceName = tempData.deviceName
form.value.status = tempData.status form.value.status = tempData.status
if (tempData.status == null) { if (tempData.status == null) {
form.value.reportPath = [] form.value.reportPath = []
@@ -148,7 +168,7 @@ const removeFile = (file: any, uploadFiles: any) => {
defineExpose({ open }) defineExpose({ open })
</script> </script>
<style scoped lang="scss"> <style scoped lang='scss'>
.el-upload-list__item { .el-upload-list__item {
transition: none !important; transition: none !important;
} }
@@ -156,6 +176,7 @@ defineExpose({ open })
.el-select { .el-select {
min-width: 180px; min-width: 180px;
} }
::v-deep .el-tree-node__children > div { ::v-deep .el-tree-node__children > div {
display: block !important; display: block !important;
} }

View File

@@ -1,40 +1,40 @@
<!---终端入网检测--> <!---终端入网检测-->
<template> <template>
<TableHeader area ref="TableHeaderRef"> <TableHeader area ref='TableHeaderRef'>
<template #select> <template #select>
<el-form-item label="搜索"> <el-form-item label='搜索'>
<el-input <el-input
v-model="tableStore.table.params.searchValue" v-model='tableStore.table.params.searchValue'
placeholder="输入变电站.终端名称" placeholder='输入变电站.终端名称'
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="流程状态"> <el-form-item label='流程状态'>
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态"> <el-select v-model='tableStore.table.params.status' clearable placeholder='请选择流程状态'>
<el-option <el-option
v-for="item in statusSelect" v-for='item in statusSelect'
:key="item.id" :key='item.id'
:label="item.name" :label='item.name'
:value="item.id" :value='item.id'
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="处理状态"> <el-form-item label='处理状态'>
<el-select v-model="tableStore.table.params.state" clearable placeholder="请选处理状态"> <el-select v-model='tableStore.table.params.state' clearable placeholder='请选处理状态'>
<el-option <el-option
v-for="item in stateSelect" v-for='item in stateSelect'
:key="item.id" :key='item.id'
:label="item.name" :label='item.name'
:value="item.id" :value='item.id'
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
</TableHeader> </TableHeader>
<Table ref="tableRef"/> <Table ref='tableRef' />
<Form ref="FormRef" @onSubmit="tableStore.index()"/> <Form ref='FormRef' @onSubmit='tableStore.index()' />
</template> </template>
<script setup lang="ts"> <script setup lang='ts'>
import { ref, onMounted, provide, watch } from 'vue' import { ref, onMounted, provide, watch } from 'vue'
import TableStore from '@/utils/tableStore' import TableStore from '@/utils/tableStore'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
@@ -253,7 +253,7 @@ watch(
deep: true deep: true
} }
) )
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps(['id', 'businessKey'])
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
@@ -262,13 +262,18 @@ watch(() => props.id, async (newValue, oldValue) => {
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getInfoById({ id: fullId }).then(res => { await getInfoById({ id: fullId }).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
if (props.businessKey == '3') {
FormRef.value.open('报告上传', res.data)
} else {
FormRef.value.open('重新发起', res.data) FormRef.value.open('重新发起', res.data)
} }
}
}) })
}, { immediate: true }) }, { immediate: true })
</script> </script>
<style scoped lang="scss"> <style scoped lang='scss'>
:deep(.el-upload-list__item) { :deep(.el-upload-list__item) {
width: 400px; width: 400px;
} }

View File

@@ -11,7 +11,7 @@
<jointDebugList :id="id" v-if="activeName == '3'"/> <jointDebugList :id="id" v-if="activeName == '3'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="终端周期检测" name="4"> <el-tab-pane label="终端周期检测" name="4">
<cycleDetection :id="id" v-if="activeName == '4'"/> <cycleDetection :id="id" :businessKey='key' v-if="activeName == '4'"/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
@@ -33,6 +33,7 @@ const activeName = ref('1')
const route = useRoute() const route = useRoute()
const id = ref('') const id = ref('')
const key = ref('')
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('terminalNetwotk')) { if (route.fullPath.includes('terminalNetwotk')) {
@@ -47,6 +48,7 @@ watch(() => route.query.t, async (newValue, oldValue) => {
activeName.value = '4' activeName.value = '4'
} }
id.value = (route.query.id as string) || 'null' id.value = (route.query.id as string) || 'null'
key.value = (route.query.key as string) || 'null'
id.value = id.value + '@' + route.query.t id.value = id.value + '@' + route.query.t
} }
}, {deep: true, immediate: true}) }, {deep: true, immediate: true})

View File

@@ -137,7 +137,6 @@ const tableStore = new TableStore({
} }
// 特殊处理终端监测点状态切换 // 特殊处理终端监测点状态切换
if ( if (
// 干扰源建档 // 干扰源建档
key == 'build_user_info' key == 'build_user_info'
@@ -192,8 +191,20 @@ const tableStore = new TableStore({
return row.source == 1 || row.source == 2 return row.source == 1 || row.source == 2
}, },
click: row => { click: row => {
flag.value = true // 页面内tab切换
handleAudit(row.processInstanceId, row.historyInstanceId) let type = row.tabValue
let key = '3'
// 业务记录id
let id = row.id
router.push({
name: row.routePath,
query: {
type,
id,
key,
t: Date.now()
}
})
} }
} }
] ]