济菏高速业务端

348 lines
8.9 KiB

1 year ago
<template>
<div class="pageBox">
<HeaderMenu class="header" :style="headerStyle" />
<!-- @onChange="handleChange" -->
<Adaptation class="content" :headerHeight="headerHeight">
1 year ago
<Transition name="fade">
<router-view v-if="isShowContent" />
1 year ago
</Transition>
</Adaptation>
</div>
1 year ago
</template>
<script>
import HeaderMenu from "./components/HeaderMenu/index.vue";
import Adaptation from "./components/Adaptation.vue";
import getBoardBaseData from '@/common/getBoardBaseData'
import { mapGetters } from "vuex";
import moment from "moment";
1 year ago
export default {
name: "ji_ze_gao_su",
components: {
HeaderMenu,
Adaptation,
1 year ago
// ...modules
},
data() {
return {
notifications: [],
notifyIndex:0,
isShowContent:false,
headerHeight:100,
header: {
scale: 1,
originW: 1920,
originH: 100 //打开最近标签页时高100,不开启时高68
},
1 year ago
};
},
watch:{
isRecentOpen:{
handler(newV){
if(newV){
this.header.originH = 100;
}else{
this.header.originH = 68;
}
this.calcHeaderScale();
},
immediate:true
}
},
computed:{
...mapGetters("menu",["isRecentOpen"]),
headerStyle(){
return {
width : `${this.header.originW}px`,
height : `${this.header.originH}px`,
transform : `scale(${this.header.scale}, ${this.header.scale})`
}
}
},
1 year ago
mounted(){
let _this = this;
document.onkeydown = function(e){
if(e.code == 'Space'){
let obj = {
content: "一个沙雕横穿马路导致堵车,他还不承认,不知道怎么办,请求指导,在线等。",
time:moment().format("yyyy-MM-DD hh:mm"),
type : "3",
level: ["info", "danger"][_this.notifyIndex%2]
}
_this.notifications[_this.notifyIndex] = _this.$notify({
title: '',
dangerouslyUseHTMLString: true,
duration: 0,
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-pedestrian' }
)
]
),
_this.$createElement(
"span",
{ class: 'info' },
[
_this.$createElement(
"span",
{ class: 'content' },
obj.content
)
,
_this.$createElement(
"div",
{class: 'time'},
obj.time
)
]
),
]
),
]
),
});
_this.notifyIndex ++;
}
}
// this.$store.commit("menu/resetRecent");
getBoardBaseData().then(res => {
this.isShowContent = true;
});
// Promise.all()getBoardBaseData().then(()=>{
// this.isShowContent = true ;
// });
window.addEventListener(
"resize",
_.debounce(this.calcHeaderScale.bind(this), 360)
);
this.calcHeaderScale();
1 year ago
},
1 year ago
methods: {
//点击事件回调
closeNotify(para) {
let type = para.type;
console.log("hahah");
console.log(type);
if (type === '2') {
console.log("自动关闭,流程。。");
}
if (type === '3') {
console.log("手动确认,流程。。");
}
this.notifications[para.index].close();
},
calcHeaderScale(){
let winW = window.innerWidth;
this.header.scale = winW / this.header.originW;
this.headerHeight = this.header.scale * this.header.originH;
},
// handleChange(activeMenu) {
// this.$route.path != activeMenu.path && this.$router.push(activeMenu.path);
// }
1 year ago
}
};
</script>
<style lang="scss" scope src="./scss/reset.scss" />
<style lang="scss" scope src="./scss/el-reset.scss" />
<style scoped lang="scss">
1 year ago
.pageBox {
background: #13272F;
1 year ago
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
.fade-enter-active,
.fade-leave-active {
transition: opacity .24s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
.header {
position: fixed;
transform-origin: left top;
left: 0; top:0; z-index: 1000;
overflow: hidden;
transition: all ease-out 0.3s;
1 year ago
}
.content {
// display: flex;
// flex-direction: row;
pointer-events: none;
::v-deep {
>div {
// top: -6px;
z-index: -1;
pointer-events: auto;
// height: calc(100% + 6px);
}
}
1 year ago
&>* {
flex: 1;
width: 100%;
position: absolute;
}
}
}
</style>
<style lang="scss">
.notify_whole {
padding: 0;
width: 420px !important;
// height: 120px !important;
margin-top: 50px !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%; background-image: linear-gradient(180deg, rgba(14, 69, 92, 0.9) 0%, rgba(20, 89, 119, 0.9) 100%);
border: 1px solid; border-image: linear-gradient(180deg, rgba(78, 174, 204, 1), rgba(78, 174, 204, 0)) 2 2;
.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>