184 lines
4.2 KiB
Vue
184 lines
4.2 KiB
Vue
|
<!--
|
||
|
* @FilePath: \screenFront\src\views\FactoryView\statusBar.vue
|
||
|
* @Author: 王路平
|
||
|
* @文件版本: V1.0.0
|
||
|
* @Date: 2023-04-04 08:11:07
|
||
|
* @Description:
|
||
|
*
|
||
|
* 版权信息 : 2023 by ${再登软件}, All Rights Reserved.
|
||
|
-->
|
||
|
<template>
|
||
|
<div ref="statusbarref" :key="numkey">
|
||
|
<div class="tip-box-border" :class="{show}" @click="rtract" :style="{width: mapSize.width+'px',height:mapSize.height+'px'}" >
|
||
|
<!-- <div class="DirectionalSign">
|
||
|
|
||
|
</div> -->
|
||
|
<div class="iconTip">
|
||
|
<ul>
|
||
|
<li v-for="item in prop.iconList" :key="item.id" >
|
||
|
<i :class="'iconfont ' + item.name + ' icon-logo'"></i
|
||
|
>{{ "   " + item.value }}
|
||
|
<div>{{ ` ${item.counts}/${item.allnum}` }}</div>
|
||
|
</li>
|
||
|
<li v-for="item in prop.devList" :key="item.id" >
|
||
|
<i :class="'iconfont ' + item.name + ' icon-logo SSCBar'"></i
|
||
|
>{{ "   " + item.value }}
|
||
|
<div>{{ ` ${item.counts}/${item.allnum}` }}</div>
|
||
|
</li>
|
||
|
<li>
|
||
|
<i class="iconfont icon-WIFI icon-logo"></i>
|
||
|
WIFI
|
||
|
<div> 16/16</div>
|
||
|
</li>
|
||
|
<li>
|
||
|
<i class="iconfont icon-tuoputu_jiaohuanjizu icon-logo"></i>
|
||
|
交换机
|
||
|
<div> 10/10</div>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script setup lang="ts">
|
||
|
import { number } from "echarts/core";
|
||
|
import {reactive, ref, watch,defineProps} from "vue"
|
||
|
const prop = defineProps({
|
||
|
iconList: {
|
||
|
type: Object,
|
||
|
default: {},
|
||
|
},
|
||
|
devList: {
|
||
|
type: Object,
|
||
|
default: {},
|
||
|
},
|
||
|
width: {
|
||
|
type: Number,
|
||
|
default: 0,
|
||
|
},
|
||
|
height: {
|
||
|
type: Number,
|
||
|
default: 0,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
|
||
|
const afterDisplay = ref("none")
|
||
|
const beforeDisplay = ref("block")
|
||
|
const show = ref(true)
|
||
|
let numkey=ref(0)
|
||
|
let statusbarref=ref()
|
||
|
let mapSize = reactive({
|
||
|
width: 0,
|
||
|
height: 0,
|
||
|
});
|
||
|
|
||
|
|
||
|
function rtract() {
|
||
|
show.value = !show.value;
|
||
|
if (show.value) {
|
||
|
afterDisplay.value = "none";
|
||
|
beforeDisplay.value = "block";
|
||
|
} else {
|
||
|
afterDisplay.value = "block";
|
||
|
beforeDisplay.value = "none";
|
||
|
}
|
||
|
}
|
||
|
watch(
|
||
|
() => prop,
|
||
|
(newVal, oldVal) => {
|
||
|
//监听父组件宽高变化,随时重置本组件尺寸
|
||
|
reset(newVal);
|
||
|
|
||
|
},
|
||
|
{ immediate: true, deep: true, flush: "post" }
|
||
|
);
|
||
|
function reset(val: any) {
|
||
|
//宽高为0时跳出该方法
|
||
|
|
||
|
if (!val.width && !val.height) return;
|
||
|
mapSize.width=val.width
|
||
|
mapSize.height=val.height
|
||
|
numkey.value++
|
||
|
// statusbarref.value.style.width=val.width
|
||
|
// statusbarref.value.style.height=val.height
|
||
|
//重置盒子尺寸
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped>
|
||
|
@import url("@/assets/css/iconfont.css");
|
||
|
@import url("@/assets/css/newicon/iconfont.css");
|
||
|
.tip-box-border{
|
||
|
position: fixed;
|
||
|
top: 0;
|
||
|
bottom: 0;
|
||
|
left: 0;
|
||
|
height: 97%;
|
||
|
width: 99%;
|
||
|
padding-top: 100px;
|
||
|
box-sizing: border-box;
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
align-items: center;
|
||
|
z-index: 999;
|
||
|
background-color:rgba(0,0,0,0.5);
|
||
|
transition: transform 0.5s;
|
||
|
}
|
||
|
.show {
|
||
|
transform: translateX(-90%);
|
||
|
}
|
||
|
.tip-box-border::after{
|
||
|
content: "\e84f";
|
||
|
position: absolute;
|
||
|
top: 50%;
|
||
|
right: 0;
|
||
|
font-size: 24px;
|
||
|
font-family: 'iconfont' !important;
|
||
|
font-style: normal;
|
||
|
-webkit-font-smoothing: antialiased;
|
||
|
-moz-osx-font-smoothing: grayscale;
|
||
|
display: v-bind(afterDisplay);
|
||
|
color: #fff;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
.tip-box-border::before{
|
||
|
content: '\e84e';
|
||
|
/* content: "\e84e"; */
|
||
|
position: absolute;
|
||
|
top: 50%;
|
||
|
right: 0;
|
||
|
font-size: 24px;
|
||
|
font-family: 'iconfont' !important;
|
||
|
font-style: normal;
|
||
|
display: v-bind(beforeDisplay);
|
||
|
-webkit-font-smoothing: antialiased;
|
||
|
-moz-osx-font-smoothing: grayscale;
|
||
|
color: #fff;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
.DirectionalSign{
|
||
|
width: 60%;
|
||
|
height: 20%;
|
||
|
background-image: url(@/assets/img/AerialView/direction.png);
|
||
|
background-size: 100% 100%;
|
||
|
}
|
||
|
.iconTip{
|
||
|
width: 100%;
|
||
|
height: 80%;
|
||
|
}
|
||
|
.iconTip>ul>li{
|
||
|
padding-left: 10%;
|
||
|
margin-top: 10px;
|
||
|
display: flex;
|
||
|
justify-content: flex-start;
|
||
|
align-items: center;
|
||
|
font-size: 1.5rem;
|
||
|
color: #fff;
|
||
|
}
|
||
|
.iconTip>ul>li>i{
|
||
|
font-size: 1.5rem;
|
||
|
}
|
||
|
</style>
|