补召日志
This commit is contained in:
@@ -17,3 +17,4 @@ export function fileRecall(data: any) {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<Tree ref="treRef" :width="width" :data="tree" default-expand-all @changePointType="changePointType" @checkedNodesChange="handleCheckedNodesChange"/>
|
<Tree ref="treRef" :width="width" :data="tree" default-expand-all @checkedNodesChange="handleCheckedNodesChange"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
@@ -78,9 +78,7 @@ const info = () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const changePointType = (val: any, obj: any) => {
|
|
||||||
emit('pointTypeChange', val, obj)
|
|
||||||
}
|
|
||||||
// 处理子组件传递的勾选节点变化,并转发给父组件
|
// 处理子组件传递的勾选节点变化,并转发给父组件
|
||||||
const handleCheckedNodesChange = (nodes: any[]) => {
|
const handleCheckedNodesChange = (nodes: any[]) => {
|
||||||
// 先给父组件
|
// 先给父组件
|
||||||
|
|||||||
@@ -11,10 +11,22 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
<el-tree :style="{ height: 'calc(100vh)' }"
|
<el-tree
|
||||||
style=' overflow: auto;' ref='treeRef' :props='defaultProps' highlight-current
|
:style="{ height: 'calc(100vh)' }"
|
||||||
:filter-node-method='filterNode' node-key='id' v-bind='$attrs'
|
style='overflow: auto;'
|
||||||
show-checkbox @check="handleCheckChange" :default-checked-keys="defaultCheckedKeys">
|
ref='treeRef'
|
||||||
|
:props='defaultProps'
|
||||||
|
highlight-current
|
||||||
|
:filter-node-method='filterNode'
|
||||||
|
node-key='id'
|
||||||
|
show-checkbox
|
||||||
|
@check="handleCheckChange"
|
||||||
|
@node-click="handleNodeClick"
|
||||||
|
:default-checked-keys="defaultCheckedKeys"
|
||||||
|
v-bind='$attrs'
|
||||||
|
|
||||||
|
|
||||||
|
>
|
||||||
<template #default='{ node, data }'>
|
<template #default='{ node, data }'>
|
||||||
<span class='custom-tree-node'>
|
<span class='custom-tree-node'>
|
||||||
<Icon :name='data.icon' style='font-size: 16px' :style='{ color: data.color }'
|
<Icon :name='data.icon' style='font-size: 16px' :style='{ color: data.color }'
|
||||||
@@ -100,6 +112,12 @@ const chooseNode = (value: string, data: any, node: any) => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 处理节点点击事件
|
||||||
|
const handleNodeClick = (data: any, node: any, event: any) => {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 存储所有勾选的节点
|
// 存储所有勾选的节点
|
||||||
const checkedNodes = ref<any[]>([])
|
const checkedNodes = ref<any[]>([])
|
||||||
const defaultCheckedKeys = ref<string[]>([])
|
const defaultCheckedKeys = ref<string[]>([])
|
||||||
|
|||||||
@@ -16,9 +16,10 @@ import TableStore from '@/utils/tableStore'
|
|||||||
import Table from '@/components/table/index.vue'
|
import Table from '@/components/table/index.vue'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { Setting } from '@element-plus/icons-vue'
|
import { Setting } from '@element-plus/icons-vue'
|
||||||
import {eventRecall,fileRecall} from '@/api/cs-device-boot/recall'
|
import {eventRecall,fileRecall,logRecall} from '@/api/cs-device-boot/recall'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import DatePicker from '@/components/form/datePicker/time.vue'
|
import { el } from 'element-plus/es/locale'
|
||||||
|
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
checkedNodes: {
|
checkedNodes: {
|
||||||
@@ -27,11 +28,8 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const headerRef = ref()
|
|
||||||
const datePickerRef = ref()
|
|
||||||
|
|
||||||
const tableStore: any = new TableStore({
|
const tableStore: any = new TableStore({
|
||||||
url: '/cs-device-boot/portableOfflLog/queryMainLogPage',
|
url: '/cs-device-boot/csTerminalReply/bzLogs',
|
||||||
publicHeight: 0,
|
publicHeight: 0,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [
|
column: [
|
||||||
@@ -39,6 +37,14 @@ const tableStore: any = new TableStore({
|
|||||||
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
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'engineeringName',
|
||||||
|
title: '项目名称',
|
||||||
|
minWidth: 170,
|
||||||
|
formatter: row => {
|
||||||
|
return row.cellValue ? row.cellValue : '/'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'projectName',
|
field: 'projectName',
|
||||||
@@ -48,45 +54,56 @@ const tableStore: any = new TableStore({
|
|||||||
return row.cellValue ? row.cellValue : '/'
|
return row.cellValue ? row.cellValue : '/'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: 'successCount', title: '成功解析数', minWidth: 150 },
|
|
||||||
{ field: 'startTime', title: '导入开始时间', minWidth: 170, sortable: true },
|
|
||||||
{ field: 'endTime', title: '导入结束时间', minWidth: 170 , sortable: true},
|
|
||||||
{
|
{
|
||||||
title: '解析状态',
|
field: 'deviceName',
|
||||||
|
title: '设备名称',
|
||||||
|
minWidth: 170,
|
||||||
|
formatter: row => {
|
||||||
|
return row.cellValue ? row.cellValue : '/'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'lineName',
|
||||||
|
title: '监测点名称',
|
||||||
|
minWidth: 170,
|
||||||
|
formatter: row => {
|
||||||
|
return row.cellValue ? row.cellValue : '/'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'logTime',
|
||||||
|
title: '补召时间',
|
||||||
|
minWidth: 170,
|
||||||
|
formatter: row => {
|
||||||
|
return row.cellValue ? row.cellValue : '/'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'log',
|
||||||
|
title: '日志',
|
||||||
|
minWidth: 170,
|
||||||
|
formatter: row => {
|
||||||
|
return row.cellValue ? row.cellValue : '/'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
field: 'status',
|
field: 'status',
|
||||||
width: 100,
|
title: '状态',
|
||||||
render: 'tag',
|
minWidth: 170,
|
||||||
custom: {
|
formatter: row => {
|
||||||
0: 'warning',
|
return row.cellValue ? row.cellValue : '/'
|
||||||
1: 'success',
|
|
||||||
2: 'danger',
|
|
||||||
3: 'primary'
|
|
||||||
},
|
|
||||||
replaceValue: {
|
|
||||||
0: '未解析',
|
|
||||||
1: '解析成功',
|
|
||||||
2: '解析失败',
|
|
||||||
3: '文件不存在'
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: '操作',
|
|
||||||
width: '100',
|
|
||||||
render: 'buttons',
|
|
||||||
buttons: [
|
|
||||||
{
|
|
||||||
name: 'edit',
|
|
||||||
title: '详情',
|
|
||||||
type: 'primary',
|
|
||||||
icon: 'el-icon-EditPen',
|
|
||||||
render: 'basicButton',
|
|
||||||
click: row => {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
beforeSearchFun: () => {
|
beforeSearchFun: () => {
|
||||||
|
if (!nodeClick.value || nodeClick.value.level !== 3) {
|
||||||
|
ElMessage.warning('请先选中监测点')
|
||||||
|
return // 阻止查询
|
||||||
|
}
|
||||||
|
if (nodeClick.value) {
|
||||||
|
tableStore.table.params.searchValue = nodeClick.value.id
|
||||||
|
}
|
||||||
},
|
},
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
|
|
||||||
@@ -95,6 +112,26 @@ const tableStore: any = new TableStore({
|
|||||||
|
|
||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
|
|
||||||
|
const nodeClick = ref(null)
|
||||||
|
// 处理父组件传递的树节点点击事件
|
||||||
|
const handleTreeNodeClick = (node: any) => {
|
||||||
|
nodeClick.value = node
|
||||||
|
if (tableStore && tableStore.index) {
|
||||||
|
// 判断当前节点是否为监测点层级
|
||||||
|
if (node) {
|
||||||
|
if (node.level !== 3) {
|
||||||
|
ElMessage.warning('请先选中监测点')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
ElMessage.warning('请先选中监测点')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tableStore.index()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const recall1 = async () => {
|
const recall1 = async () => {
|
||||||
if (!props.checkedNodes || props.checkedNodes.length === 0) {
|
if (!props.checkedNodes || props.checkedNodes.length === 0) {
|
||||||
ElMessage.warning('请先勾选监测点')
|
ElMessage.warning('请先勾选监测点')
|
||||||
@@ -125,8 +162,9 @@ const recall2 = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
// 暴露方法给父组件调用
|
||||||
tableStore.index()
|
defineExpose({
|
||||||
|
handleTreeNodeClick
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
style="position: relative"
|
style="position: relative"
|
||||||
>
|
>
|
||||||
<!-- @init="nodeClick" -->
|
<!-- @init="nodeClick" -->
|
||||||
<PointTree @node-click="nodeClick" @pointTypeChange="pointTypeChange" @checkChange="handleCheckedNodesChange"></PointTree>
|
<PointTree @node-click="nodeClick" @checkChange="handleCheckedNodesChange"></PointTree>
|
||||||
<div class="device-control-right" >
|
<div class="device-control-right" >
|
||||||
<el-tabs type="border-card" class="mb10" @tab-click="handleClick" v-model="activeTab">
|
<el-tabs type="border-card" class="mb10" @tab-click="handleClick" v-model="activeTab">
|
||||||
<el-tab-pane label="稳态补召" name="deviceInfo1">
|
<el-tab-pane label="稳态补召" name="deviceInfo1">
|
||||||
@@ -39,6 +39,7 @@ const eventRef = ref()
|
|||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const activeTab = ref('deviceInfo1')
|
const activeTab = ref('deviceInfo1')
|
||||||
const checkedNodes = ref<any[]>([]) // 存储左侧树勾选的节点
|
const checkedNodes = ref<any[]>([]) // 存储左侧树勾选的节点
|
||||||
|
const currentNode = ref<any>(null) // 存储当前点击的树节点
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'govern/monitorRecall/index'
|
name: 'govern/monitorRecall/index'
|
||||||
@@ -46,55 +47,41 @@ defineOptions({
|
|||||||
|
|
||||||
// 处理子组件传递的勾选节点变化
|
// 处理子组件传递的勾选节点变化
|
||||||
const handleCheckedNodesChange = (nodes: any[]) => {
|
const handleCheckedNodesChange = (nodes: any[]) => {
|
||||||
|
|
||||||
checkedNodes.value = nodes
|
checkedNodes.value = nodes
|
||||||
|
|
||||||
// 将勾选的节点传递给当前激活的tab组件
|
|
||||||
if (activeTab.value === 'deviceInfo1' && steadyRef.value) {
|
|
||||||
// 如果steadyRecall组件有接收勾选节点的方法,可以调用
|
|
||||||
if (steadyRef.value.setCheckedNodes) {
|
|
||||||
steadyRef.value.setCheckedNodes(nodes)
|
|
||||||
}
|
|
||||||
} else if (activeTab.value === 'deviceInfo2' && eventRef.value) {
|
|
||||||
// 如果eventRecall组件有接收勾选节点的方法,可以调用
|
|
||||||
if (eventRef.value.setCheckedNodes) {
|
|
||||||
eventRef.value.setCheckedNodes(nodes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// tab切换时的处理
|
// tab切换时的处理
|
||||||
const handleClick = (tab: any) => {
|
const handleClick = (tab: any) => {
|
||||||
activeTab.value = tab.props.name
|
activeTab.value = tab.props.name
|
||||||
|
|
||||||
// tab切换时刷新对应组件的数据
|
// tab切换时刷新对应组件的数据
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
if (tab.props.name === 'deviceInfo1' && steadyRef.value) {
|
if (tab.props.name === 'deviceInfo1' && steadyRef.value) {
|
||||||
// 刷新稳态补召数据
|
|
||||||
if (steadyRef.value.refreshData) {
|
|
||||||
steadyRef.value.refreshData(checkedNodes.value)
|
|
||||||
} else if (steadyRef.value.getTableParams) {
|
|
||||||
// 如果有getTableParams方法,调用它
|
|
||||||
steadyRef.value.getTableParams({ nodes: checkedNodes.value })
|
|
||||||
}
|
|
||||||
} else if (tab.props.name === 'deviceInfo2' && eventRef.value) {
|
} else if (tab.props.name === 'deviceInfo2' && eventRef.value) {
|
||||||
// 刷新暂态补召数据
|
// tab切换后触发查询
|
||||||
if (eventRef.value.refreshData) {
|
triggerEventRecallQuery()
|
||||||
eventRef.value.refreshData(checkedNodes.value)
|
|
||||||
} else if (eventRef.value.getTableParams) {
|
|
||||||
// 如果有getTableParams方法,调用它
|
|
||||||
eventRef.value.getTableParams({ nodes: checkedNodes.value })
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const nodeClick = (node: any) => {
|
const nodeClick = (node: any) => {
|
||||||
|
currentNode.value = node
|
||||||
|
// 只有在暂态补召页面时才触发查询
|
||||||
|
if (activeTab.value === 'deviceInfo2') {
|
||||||
|
triggerEventRecallQuery()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const pointTypeChange = (type: any, node: any) => {
|
// 触发暂态补召查询
|
||||||
|
const triggerEventRecallQuery = () => {
|
||||||
|
nextTick(() => {
|
||||||
|
if (activeTab.value === 'deviceInfo2' && eventRef.value) {
|
||||||
|
// 将当前点击的节点传递给暂态补召组件
|
||||||
|
if (eventRef.value.handleTreeNodeClick) {
|
||||||
|
eventRef.value.handleTreeNodeClick(currentNode.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user