13 changed files with 501 additions and 31 deletions
@ -0,0 +1,10 @@ |
|||
import request from "@/utils/request"; |
|||
|
|||
// 查询非机预警列表
|
|||
export function perceivedEventsList(data) { |
|||
return request({ |
|||
url: "/perceivedEvents/warning/perceivedEventsList", |
|||
method: "post", |
|||
data, |
|||
}); |
|||
} |
@ -0,0 +1,13 @@ |
|||
// 关系 对照的 图片
|
|||
export const statusMap = { |
|||
// 已确认
|
|||
1: "confirmed", |
|||
// 误报
|
|||
2: "falsePositives", |
|||
// 已处理
|
|||
3: "processed", |
|||
// 处理中
|
|||
4: "processing", |
|||
// 待确认
|
|||
5: "toBeConfirmed", |
|||
}; |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.9 KiB |
@ -0,0 +1,240 @@ |
|||
<template> |
|||
<BorderRadiusImage |
|||
class="RoadStateCard" |
|||
borderRadius="2px" |
|||
borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))" |
|||
borderWidth="2px" |
|||
> |
|||
<div class="left"> |
|||
<!-- <img :src="(cardData.pictures ? cardData.pictures[0] : null) || require(`./test.png`)"> --> |
|||
<!-- <img :src="require(`./test.png`)"> --> |
|||
<ElImage |
|||
style="width: 212px; height: 159px" |
|||
:src="cardData.pictures ? cardData.pictures[0] : null" |
|||
:preview-src-list="cardData.pictures || []" |
|||
> |
|||
<div slot="error"> |
|||
<i class="el-icon-picture-outline icon"></i> |
|||
</div> |
|||
</ElImage> |
|||
</div> |
|||
<div class="right"> |
|||
<div class="info"> |
|||
<p class="linText" v-for="(item, index) in keyMap" :key="index"> |
|||
<span>{{ item.label }}: </span> |
|||
<span>{{ cardData[item.key] ? cardData[item.key] : "-" }}</span> |
|||
</p> |
|||
</div> |
|||
<div class="controls"> |
|||
<!-- <Button |
|||
:style="{ background: firstBtnColor, width: '50%' }" |
|||
@click.native="$emit('firstBtnClick', cardData.id)" |
|||
>{{ getFirstBtnText(cardData.state) }}</Button |
|||
> |
|||
<Button |
|||
v-if="cardData.state == 4" |
|||
:style="{ background: lastBtnColor, width: '50%' }" |
|||
@click.native="$emit('lastBtnClick', cardData.id)" |
|||
>{{ getLastBtnText(cardData.state) }}</Button |
|||
> --> |
|||
</div> |
|||
</div> |
|||
|
|||
<img |
|||
v-if="cardData.state" |
|||
class="status" |
|||
:src="require(`./images/${statusMap[cardData.state]}.svg`)" |
|||
/> |
|||
</BorderRadiusImage> |
|||
</template> |
|||
|
|||
<script> |
|||
import Button from "@screen/components/Buttons/Button.vue"; |
|||
import BorderRadiusImage from "@screen/components/BorderRadiusImage.vue"; |
|||
import { statusMap } from "./data.js"; |
|||
|
|||
export default { |
|||
name: "ManualWarningCard", |
|||
props: { |
|||
cardData: { |
|||
type: Object, |
|||
default: () => ({ |
|||
time: "2023.12.22 13:00:00", |
|||
source: "视频智能识别", |
|||
location: "k100+000", |
|||
direction: "济南方向", |
|||
}), |
|||
}, |
|||
firstBtnText: { |
|||
type: String, |
|||
default: "详情", |
|||
}, |
|||
lastBtnText: { |
|||
type: String, |
|||
default: "调度记录", |
|||
}, |
|||
firstBtnColor: { |
|||
type: String, |
|||
default: "#00B3CC", |
|||
}, |
|||
lastBtnColor: { |
|||
type: String, |
|||
default: "#CB7A00", |
|||
}, |
|||
keyMap: { |
|||
type: Array, |
|||
default: () => [ |
|||
{ |
|||
key: "warningType", |
|||
label: "类型", |
|||
}, |
|||
// { |
|||
// key: "warningSubclass", |
|||
// label: "类型", |
|||
// }, |
|||
{ |
|||
key: "source", |
|||
label: "来源", |
|||
}, |
|||
{ |
|||
key: "facilityName", |
|||
label: "位置", |
|||
}, |
|||
{ |
|||
key: "stringDirection", |
|||
label: "方向", |
|||
}, |
|||
{ |
|||
key: "warningTime", |
|||
label: "时间", |
|||
}, |
|||
], |
|||
}, |
|||
}, |
|||
data() { |
|||
return { |
|||
picUrl: "./test.png", |
|||
}; |
|||
}, |
|||
emit: ["firstBtnClick", "lastBtnClick"], |
|||
components: { |
|||
Button, |
|||
BorderRadiusImage, |
|||
}, |
|||
created() { |
|||
this.statusMap = statusMap; |
|||
}, |
|||
methods: { |
|||
getFirstBtnText(state) { |
|||
let text = "详情"; |
|||
if (state == 5) text = "去确认"; |
|||
if (state == 4) text = "详情"; |
|||
if (state == 3) text = "处置记录"; |
|||
return text; |
|||
}, |
|||
getLastBtnText(state) { |
|||
let text = "去处置"; |
|||
return text; |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.RoadStateCard { |
|||
color: #fff; |
|||
display: flex; |
|||
background: #133242; |
|||
border-radius: 2px 2px 2px 2px; |
|||
opacity: 1; |
|||
// border: 1px solid; |
|||
// border-image: linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0)) 1 1; |
|||
padding: 18px 12px; |
|||
gap: 12px; |
|||
height: 100%; |
|||
overflow: hidden; |
|||
position: relative; |
|||
|
|||
.left { |
|||
img { |
|||
width: 212px; |
|||
height: 159px; |
|||
} |
|||
|
|||
.icon { |
|||
display: inline-block; |
|||
width: 212px; |
|||
height: 159px; |
|||
line-height: 157px; |
|||
text-align: center; |
|||
border: 1px solid #fff; |
|||
} |
|||
} |
|||
|
|||
.right { |
|||
display: flex; |
|||
flex-direction: column; |
|||
flex: 1; |
|||
gap: 12px; |
|||
height: 159px; |
|||
width: 201px; |
|||
|
|||
.info { |
|||
flex: 1; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
> p { |
|||
font-size: 14px; |
|||
color: #f4f4f4; |
|||
line-height: 24px; |
|||
margin-bottom: 10px; |
|||
&:nth-child(1) span:nth-child(2) { |
|||
color: #ff5f5f; |
|||
} |
|||
|
|||
// &:nth-child(-n + 2) { |
|||
// color: #37e7ff; |
|||
// font-size: 16px; |
|||
// font-weight: bold; |
|||
// } |
|||
|
|||
// &:nth-child(2) { |
|||
// margin-bottom: 15px; |
|||
// } |
|||
} |
|||
.linText { |
|||
/*不换行*/ |
|||
white-space: nowrap; |
|||
/*超出的显示省略号*/ |
|||
text-overflow: ellipsis; |
|||
/*超出部分隐藏*/ |
|||
overflow: hidden; |
|||
/*长单词不换行-兼容ie*/ |
|||
// word-wrap: normal; |
|||
:nth-child(1) { |
|||
color: #3de8ff; |
|||
} |
|||
:nth-child(2) { |
|||
color: #fff; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.controls { |
|||
display: flex; |
|||
gap: 9px; |
|||
|
|||
> div { |
|||
// flex: 1; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.status { |
|||
position: absolute; |
|||
right: 0; |
|||
top: 0; |
|||
} |
|||
} |
|||
</style> |
After Width: | Height: | Size: 140 KiB |
@ -0,0 +1,81 @@ |
|||
import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js"; |
|||
import { merge, cloneDeep } from "lodash"; |
|||
|
|||
export const searchFormList = [ |
|||
{ |
|||
label: "事件状态:", |
|||
key: "eventState", |
|||
type: "RadioGroup", |
|||
default: "0", |
|||
options: { |
|||
options: [ |
|||
{ |
|||
key: "0", |
|||
label: "未解决", |
|||
}, |
|||
{ |
|||
key: "1", |
|||
label: "已解决", |
|||
}, |
|||
{ |
|||
key: "2", |
|||
label: "已关闭", |
|||
}, |
|||
], |
|||
}, |
|||
}, |
|||
PresetFormItems.eventSources, |
|||
PresetFormItems.eventType, |
|||
{ |
|||
label: "方向:", |
|||
key: "direction", |
|||
type: "RadioGroup", |
|||
default: "1", |
|||
options: { |
|||
options: [ |
|||
{ |
|||
key: "1", |
|||
label: "菏泽方向", |
|||
}, |
|||
{ |
|||
key: "2", |
|||
label: "双向", |
|||
}, |
|||
{ |
|||
key: "3", |
|||
label: "济南方向", |
|||
}, |
|||
], |
|||
}, |
|||
}, |
|||
{ |
|||
label: "时间范围:", |
|||
key: "warningTime", |
|||
required: false, |
|||
type: "datePicker", |
|||
options: { |
|||
type: "daterange", |
|||
format: "yyyy-MM-dd HH:mm:ss", |
|||
valueFormat: "yyyy-MM-dd HH:mm:ss", |
|||
}, |
|||
}, |
|||
{ |
|||
...PresetFormItems.station, |
|||
label: "开始桩号:", |
|||
required: false, |
|||
}, |
|||
merge(cloneDeep(PresetFormItems.station), { |
|||
options: { |
|||
options: [ |
|||
{ |
|||
key: "endStakeMark[0]", |
|||
}, |
|||
{ |
|||
key: "endStakeMark[1]", |
|||
}, |
|||
], |
|||
}, |
|||
label: "结束桩号:", |
|||
required: false, |
|||
}), |
|||
]; |
Loading…
Reference in new issue