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