隐患信息
- 添加物体编号信息 - 隐患等级为重大隐患时标红 - 置信度为疑似时标黄 时间线 - 鼠标悬停隐患按钮时显示隐患名称
This commit is contained in:
parent
4b20be4b7a
commit
b3af3f8aa9
|
|
@ -6,6 +6,7 @@ import { computed, nextTick, ref, watch } from 'vue'
|
||||||
export interface HazardData {
|
export interface HazardData {
|
||||||
ranges: number[]
|
ranges: number[]
|
||||||
level: number
|
level: number
|
||||||
|
tip: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface TimelineProps {
|
export interface TimelineProps {
|
||||||
|
|
@ -39,6 +40,7 @@ export interface HazardRow {
|
||||||
end: number
|
end: number
|
||||||
ranges: number[]
|
ranges: number[]
|
||||||
level: number
|
level: number
|
||||||
|
tip: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useTimeline(
|
export function useTimeline(
|
||||||
|
|
@ -174,6 +176,7 @@ export function useTimeline(
|
||||||
id,
|
id,
|
||||||
level: frames.level || 0,
|
level: frames.level || 0,
|
||||||
ranges: frames.ranges,
|
ranges: frames.ranges,
|
||||||
|
tip: frames.tip || '',
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.sort((a, b) => {
|
.sort((a, b) => {
|
||||||
|
|
@ -198,6 +201,7 @@ export function useTimeline(
|
||||||
end: hazard.ranges[1] as number,
|
end: hazard.ranges[1] as number,
|
||||||
ranges: hazard.ranges.map(range => range as number),
|
ranges: hazard.ranges.map(range => range as number),
|
||||||
level: hazard.level || 0,
|
level: hazard.level || 0,
|
||||||
|
tip: hazard.tip || '',
|
||||||
})
|
})
|
||||||
assigned = true
|
assigned = true
|
||||||
break
|
break
|
||||||
|
|
@ -210,6 +214,7 @@ export function useTimeline(
|
||||||
end: hazard.ranges[1] as number,
|
end: hazard.ranges[1] as number,
|
||||||
ranges: hazard.ranges.map(range => range as number),
|
ranges: hazard.ranges.map(range => range as number),
|
||||||
level: hazard.level || 0,
|
level: hazard.level || 0,
|
||||||
|
tip: hazard.tip || '',
|
||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,27 @@ onUnmounted(() => {
|
||||||
:style="getHazardStyle(hazard.start, hazard.end)"
|
:style="getHazardStyle(hazard.start, hazard.end)"
|
||||||
@click="handleHazardClick(hazard.id)"
|
@click="handleHazardClick(hazard.id)"
|
||||||
>
|
>
|
||||||
{{ parseInt(hazard.id) + 1 }}
|
<el-tooltip :content="hazard.tip" placement="top">
|
||||||
|
<div style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;">
|
||||||
|
{{ parseInt(hazard.id) + 1 }}
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <div
|
||||||
|
v-for="hazard in row"
|
||||||
|
:key="hazard.id"
|
||||||
|
>
|
||||||
|
<el-tooltip :content="hazard.tip" placement="top">
|
||||||
|
<div
|
||||||
|
class="hazard-block"
|
||||||
|
:class="{ primary: hazard.level === 0, danger: hazard.level === 1 }"
|
||||||
|
:style="getHazardStyle(hazard.start, hazard.end)"
|
||||||
|
@click="handleHazardClick(hazard.id)"
|
||||||
|
>
|
||||||
|
{{ parseInt(hazard.id) + 1 }}
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ElScrollbar>
|
</ElScrollbar>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import { useRouter } from 'vue-router'
|
||||||
|
|
||||||
interface HazardItem {
|
interface HazardItem {
|
||||||
隐患编号: string
|
隐患编号: string
|
||||||
|
物体编号: string
|
||||||
物体类型: string
|
物体类型: string
|
||||||
隐患名称: string
|
隐患名称: string
|
||||||
隐患等级: string
|
隐患等级: string
|
||||||
|
|
@ -19,7 +20,7 @@ interface HazardItem {
|
||||||
|
|
||||||
interface DataFormat {
|
interface DataFormat {
|
||||||
隐患列表: [number, string, string][]
|
隐患列表: [number, string, string][]
|
||||||
隐患范围字典: Record<string, { ranges: number[], level: number }>
|
隐患范围字典: Record<string, { ranges: number[], level: number, tip: string }>
|
||||||
隐患数据: HazardItem[]
|
隐患数据: HazardItem[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,9 +142,14 @@ function getData() {
|
||||||
data.value.隐患范围字典 = {}
|
data.value.隐患范围字典 = {}
|
||||||
;(objects || []).forEach((obj: any) => {
|
;(objects || []).forEach((obj: any) => {
|
||||||
const 编号 = String(obj.hazard_track_id)
|
const 编号 = String(obj.hazard_track_id)
|
||||||
if (!data.value.隐患范围字典[编号])
|
if (!data.value.隐患范围字典[编号]) {
|
||||||
data.value.隐患范围字典[编号] = { ranges: [], level: obj.level }
|
data.value.隐患范围字典[编号] = {
|
||||||
data.value.隐患范围字典[编号].ranges = [obj.start_frame, obj.end_frame]
|
ranges: [obj.start_frame, obj.end_frame],
|
||||||
|
level: obj.level,
|
||||||
|
tip: `${tag?.[obj.tag_id] || ''}`, // 隐患名称
|
||||||
|
// tip: `(${resultData.value.class_list?.[obj.class_id] || ''}) ${tag?.[obj.tag_id] || ''}`,
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// data.value.物体列表 = (objects || []).map((_: any, i: number) => `物体${i + 1}`)
|
// data.value.物体列表 = (objects || []).map((_: any, i: number) => `物体${i + 1}`)
|
||||||
|
|
@ -155,6 +161,7 @@ function getData() {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
隐患编号: obj.hazard_track_id || '',
|
隐患编号: obj.hazard_track_id || '',
|
||||||
|
物体编号: obj.track_id || '',
|
||||||
物体类型: resultData.value.class_list?.[obj.class_id] || '',
|
物体类型: resultData.value.class_list?.[obj.class_id] || '',
|
||||||
隐患名称: tag?.[obj.tag_id] || '',
|
隐患名称: tag?.[obj.tag_id] || '',
|
||||||
隐患等级: obj.level === 0 ? '一般隐患' : '重大隐患',
|
隐患等级: obj.level === 0 ? '一般隐患' : '重大隐患',
|
||||||
|
|
@ -203,11 +210,12 @@ function handleJumpToTimePoint(index: number) {
|
||||||
// transform: 数据转换函数
|
// transform: 数据转换函数
|
||||||
const hazardFields = [
|
const hazardFields = [
|
||||||
{ label: '隐患编号', key: '隐患编号', group: 1, transform: (val: any) => val !== undefined ? val + 1 : '无' },
|
{ label: '隐患编号', key: '隐患编号', group: 1, transform: (val: any) => val !== undefined ? val + 1 : '无' },
|
||||||
|
{ label: '物体编号', key: '物体编号', group: 1 },
|
||||||
{ label: '物体类型', key: '物体类型', group: 1 },
|
{ label: '物体类型', key: '物体类型', group: 1 },
|
||||||
{ label: '隐患等级', key: '隐患等级', group: 2 },
|
{ label: '隐患等级', key: '隐患等级', group: 2 },
|
||||||
{ label: '置信度', key: '置信度', group: 2 },
|
{ label: '置信度', key: '置信度', group: 2 },
|
||||||
|
{ label: '时间点', key: '时间点', group: 2 },
|
||||||
{ label: '隐患名称', key: '隐患名称', group: 3 },
|
{ label: '隐患名称', key: '隐患名称', group: 3 },
|
||||||
{ label: '时间点', key: '时间点', group: 3 },
|
|
||||||
{ label: '隐患描述', key: '隐患描述', group: 4 },
|
{ label: '隐患描述', key: '隐患描述', group: 4 },
|
||||||
{ label: '依据', key: '依据', group: 5 },
|
{ label: '依据', key: '依据', group: 5 },
|
||||||
{ label: '整改建议', key: '整改建议', group: 6 },
|
{ label: '整改建议', key: '整改建议', group: 6 },
|
||||||
|
|
@ -283,7 +291,7 @@ onMounted(() => {
|
||||||
track_id: '18',
|
track_id: '18',
|
||||||
hazard_track_id: 0,
|
hazard_track_id: 0,
|
||||||
class_id: 0,
|
class_id: 0,
|
||||||
conf: 1,
|
conf: 0,
|
||||||
level: 0,
|
level: 0,
|
||||||
start_frame: 551,
|
start_frame: 551,
|
||||||
end_frame: 581,
|
end_frame: 581,
|
||||||
|
|
@ -446,7 +454,7 @@ onMounted(() => {
|
||||||
style="height: 100%;"
|
style="height: 100%;"
|
||||||
:current-frame="currentFrame"
|
:current-frame="currentFrame"
|
||||||
:total-frames="totalFrames"
|
:total-frames="totalFrames"
|
||||||
:hazard-ranges="data.隐患范围字典 as Record<string, { ranges: number[]; level: number; }>"
|
:hazard-ranges="data.隐患范围字典 as Record<string, { ranges: number[]; level: number; tip: string }>"
|
||||||
@hazard-click="(id: number) => handleTimelineHazardClick(String(id))"
|
@hazard-click="(id: number) => handleTimelineHazardClick(String(id))"
|
||||||
@frame-change="handleFrameChange"
|
@frame-change="handleFrameChange"
|
||||||
/>
|
/>
|
||||||
|
|
@ -465,7 +473,13 @@ onMounted(() => {
|
||||||
</el-text>
|
</el-text>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row class="result-content">
|
<el-row class="result-content">
|
||||||
<el-text>
|
<el-text v-if="field.key === '隐患等级' && getFieldValue(field) === '重大隐患'" type="danger">
|
||||||
|
{{ getFieldValue(field) }}
|
||||||
|
</el-text>
|
||||||
|
<el-text v-else-if="field.key === '置信度' && getFieldValue(field) === '疑似'" type="warning">
|
||||||
|
{{ getFieldValue(field) }}
|
||||||
|
</el-text>
|
||||||
|
<el-text v-else>
|
||||||
{{ getFieldValue(field) }}
|
{{ getFieldValue(field) }}
|
||||||
</el-text>
|
</el-text>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue