hui
7 months ago
13 changed files with 654 additions and 455 deletions
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,305 @@ |
|||
<template> |
|||
<div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import moment from "moment"; |
|||
export default { |
|||
name: "WarningNotify", |
|||
props: { |
|||
|
|||
}, |
|||
provide() { |
|||
return { |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
notifications: [], |
|||
notifyIndex: 0, |
|||
} |
|||
}, |
|||
computed: { |
|||
|
|||
}, |
|||
watch: { |
|||
|
|||
}, |
|||
methods: { |
|||
//点击事件回调 |
|||
closeNotify(para) { |
|||
// let type = para.type; |
|||
this.notifications[para.index].close(); |
|||
}, |
|||
showNotify(para){ |
|||
let _this = this; |
|||
let obj = { |
|||
content: "这里是从websocket收到的告警内容,最少一行,最多三行,多了就隐藏掉,这是演示的三行的效果。", |
|||
time: moment().format("yyyy-MM-DD hh:mm"), |
|||
type: ["pedestrian", "car", "pedestrian"][_this.notifyIndex % 3], |
|||
level: ["info", "danger"][_this.notifyIndex % 2], |
|||
duration: 0 |
|||
} |
|||
|
|||
_this.notifications[_this.notifyIndex] = _this.$notify({ |
|||
title: '', |
|||
dangerouslyUseHTMLString: true, |
|||
duration: obj.duration, |
|||
customClass: 'notify_whole', |
|||
offset: 50, |
|||
showClose: false, |
|||
message: _this.$createElement( |
|||
"div", |
|||
{ class: "notify_box " + obj.level }, |
|||
[ |
|||
_this.$createElement( |
|||
"div", |
|||
{ class: 'nofify_head' }, |
|||
[ |
|||
_this.$createElement( |
|||
"p", |
|||
{ class: "title" }, |
|||
[ |
|||
_this.$createElement( |
|||
"i", |
|||
{ class: 'icon el-icon-warning' } |
|||
), _this.$createElement( |
|||
"span", |
|||
{ class: 'text' }, |
|||
"告警" |
|||
) |
|||
] |
|||
) |
|||
, _this.$createElement( |
|||
"button", |
|||
{ |
|||
class: 'btn_close el-icon-close', |
|||
on: { |
|||
click: _this.closeNotify.bind(_this, { type: obj.type, index: _this.notifyIndex }), |
|||
}, |
|||
} |
|||
) |
|||
] |
|||
), |
|||
_this.$createElement( |
|||
"div", |
|||
{ class: 'nofify_content' }, |
|||
[ |
|||
_this.$createElement( |
|||
"span", |
|||
{ class: 'type_icon' }, |
|||
[ |
|||
_this.$createElement( |
|||
"i", |
|||
{ class: 'iconfont icon-' + obj.type } |
|||
) |
|||
] |
|||
), |
|||
|
|||
_this.$createElement( |
|||
"div", |
|||
{ class: 'info' }, |
|||
[ |
|||
_this.$createElement( |
|||
"p", |
|||
{ class: 'content' }, |
|||
obj.content |
|||
) |
|||
, |
|||
_this.$createElement( |
|||
"p", |
|||
{ class: 'time' }, |
|||
obj.time |
|||
) |
|||
] |
|||
), |
|||
|
|||
] |
|||
), |
|||
|
|||
] |
|||
), |
|||
}); |
|||
_this.notifyIndex++; |
|||
} |
|||
}, |
|||
mounted() { |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.notify_whole { |
|||
padding: 0; |
|||
width: 420px !important; |
|||
// height: 120px !important; |
|||
margin-top: 40px !important; |
|||
background: none; |
|||
border: none; |
|||
border-radius: 0; |
|||
} |
|||
|
|||
.el-notification__group { |
|||
width: 100%; |
|||
height: 100%; |
|||
margin: 0; |
|||
} |
|||
|
|||
.el-notification__content { |
|||
width: 100%; |
|||
height: 100%; |
|||
margin: 0; |
|||
} |
|||
|
|||
.notify_box { |
|||
width: 100%; |
|||
height: 100%; |
|||
border: 1px solid; |
|||
|
|||
.nofify_head { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
height: 44px; |
|||
align-items: center; |
|||
margin: 0 12px; |
|||
|
|||
.title { |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
|
|||
.icon { |
|||
font-size: 24px; |
|||
} |
|||
|
|||
.text { |
|||
font-size: 17px; |
|||
margin-left: 4px; |
|||
font-weight: bold; |
|||
} |
|||
} |
|||
|
|||
.btn_close { |
|||
background: none; |
|||
border: none; |
|||
cursor: pointer; |
|||
font-size: 20px; |
|||
text-align: center; |
|||
} |
|||
} |
|||
|
|||
.nofify_content { |
|||
display: flex; |
|||
align-items: center; |
|||
padding: 20px 20px 16px 0; |
|||
|
|||
.type_icon { |
|||
width: 80px; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
|
|||
.iconfont { |
|||
font-size: 48px; |
|||
} |
|||
} |
|||
|
|||
.info { |
|||
flex: 1; |
|||
|
|||
.content { |
|||
color: #FFF; |
|||
font-size: 16px; |
|||
word-wrap: break-word; |
|||
white-space: wrap; |
|||
} |
|||
|
|||
.time { |
|||
color: #FFF; |
|||
font-size: 14px; |
|||
opacity: 0.5; |
|||
text-align: right; |
|||
margin-top: 8px; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
$infoColor: #3DE8FF; |
|||
$dangerColor: #FF5F5F; |
|||
|
|||
.notify_box.info { |
|||
background-image: linear-gradient(180deg, rgba(14, 69, 92, 0.9) 0%, rgba(20, 89, 119, 0.9) 100%); |
|||
border-image: linear-gradient(180deg, rgba(78, 174, 204, 1), rgba(78, 174, 204, 0)) 2 2; |
|||
|
|||
.nofify_head { |
|||
border-bottom: 1px solid #FFFFFF33; |
|||
|
|||
.title { |
|||
.icon { |
|||
color: $infoColor; |
|||
} |
|||
|
|||
.text { |
|||
color: $infoColor; |
|||
} |
|||
} |
|||
|
|||
.btn_close { |
|||
color: $infoColor; |
|||
} |
|||
} |
|||
|
|||
.nofify_content { |
|||
.type_icon { |
|||
.iconfont { |
|||
color: $infoColor; |
|||
} |
|||
} |
|||
|
|||
.info { |
|||
.content {} |
|||
|
|||
.time {} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.notify_box.danger { |
|||
background-image: linear-gradient(180deg, rgba(30, 0, 0, 0.9) 0%, rgba(111, 0, 0, 0.9) 100%); |
|||
border-image: linear-gradient(180deg, rgba(237, 147, 128, 1), rgba(239, 146, 157, 0)) 2 2; |
|||
|
|||
.nofify_head { |
|||
border-bottom: 1px solid #FFFFFF33; |
|||
|
|||
.title { |
|||
.icon { |
|||
color: $dangerColor; |
|||
} |
|||
|
|||
.text { |
|||
color: $dangerColor; |
|||
} |
|||
} |
|||
|
|||
.btn_close { |
|||
color: $dangerColor; |
|||
} |
|||
} |
|||
|
|||
.nofify_content { |
|||
.type_icon { |
|||
.iconfont { |
|||
color: $dangerColor; |
|||
} |
|||
} |
|||
|
|||
.info { |
|||
.content {} |
|||
|
|||
.time {} |
|||
} |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue