9 changed files with 321 additions and 274 deletions
@ -0,0 +1,149 @@ |
|||
<template> |
|||
<div class="top-panel" v-show="!appStore.mobile"> |
|||
<div class="top-panel__left"> |
|||
<div class="search-group"> |
|||
<el-input v-model="search" class="search-input" placeholder="请输入关键词" /> |
|||
</div> |
|||
</div> |
|||
<div class="top-panel__center"> |
|||
<div class="data_item"> |
|||
<span class="data_item__title">手持设备</span> |
|||
<span class="data_item__value">{{ handDetectorCount }}</span> |
|||
<span class="data_item__unit">台</span> |
|||
</div> |
|||
<div class="data_item"> |
|||
<span class="data_item__title">在线数量</span> |
|||
<span class="data_item__value">{{ onlineCount }}</span> |
|||
<span class="data_item__unit">台</span> |
|||
</div> |
|||
</div> |
|||
<div class="top-panel__right"> |
|||
<span class="legend-title">报警图例:</span> |
|||
<div class="normal-legend">正常状态</div> |
|||
<div class="alarm1-legend">围栏报警</div> |
|||
<div class="alarm2-legend">气体报警</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<script lang="ts" setup> |
|||
// import { ref, computed } from 'vue' |
|||
import { useAppStore } from '@/store/modules/app' |
|||
const appStore = useAppStore() |
|||
var props = defineProps({ |
|||
handDetectorCount: { |
|||
type: Number, |
|||
default: 0 |
|||
}, |
|||
onlineCount: { |
|||
type: Number, |
|||
default: 0 |
|||
} |
|||
}) |
|||
var search = defineModel({ |
|||
type: String, |
|||
default: '' |
|||
}) |
|||
</script> |
|||
<style scoped lang="scss"> |
|||
/* 顶部面板样式 */ |
|||
.top-panel { |
|||
position: absolute; |
|||
top: 0px; |
|||
left: 50px; |
|||
right: 10px; |
|||
z-index: 999; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
// gap: 12px; |
|||
padding: 6px 0px; |
|||
flex-wrap: wrap; |
|||
|
|||
box-sizing: border-box; |
|||
|
|||
.top-panel__left { |
|||
background: rgba(255, 255, 255, 0.7); |
|||
border: 1px solid rgba(0, 0, 0, 0.06); |
|||
border-radius: 10px; |
|||
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12); |
|||
height: 100%; |
|||
margin-right: 12px; |
|||
padding: 10px; |
|||
} |
|||
|
|||
.top-panel__center { |
|||
flex: 1 1 auto; |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
.data_item { |
|||
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12); |
|||
width: 200px; |
|||
background: rgba(255, 255, 255, 0.9); |
|||
border: 1px solid rgba(0, 0, 0, 0.06); |
|||
border-radius: 8px; |
|||
padding: 12px 12px; |
|||
margin-right: 12px; |
|||
|
|||
.data_item__title { |
|||
font-size: 14px; |
|||
color: #3f3f3f; |
|||
vertical-align: middle; |
|||
} |
|||
|
|||
.data_item__value { |
|||
display: inline-block; |
|||
padding: 0 10px; |
|||
font-size: 18px; |
|||
font-weight: 600; |
|||
color: #3399ff; |
|||
vertical-align: middle; |
|||
} |
|||
.data_item__unit { |
|||
font-size: 14px; |
|||
color: #3f3f3f; |
|||
vertical-align: middle; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.top-panel__right { |
|||
display: flex; |
|||
align-items: center; |
|||
gap: 8px; |
|||
background: rgba(255, 255, 255, 0.85); |
|||
border: 1px solid rgba(0, 0, 0, 0.06); |
|||
padding: 12px 12px; |
|||
border-radius: 8px; |
|||
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12); |
|||
white-space: nowrap; |
|||
height: 100%; |
|||
|
|||
.legend-title { |
|||
color: #606266; |
|||
font-size: 14px; |
|||
} |
|||
.normal-legend, |
|||
.alarm1-legend, |
|||
.alarm2-legend { |
|||
padding: 4px 8px; |
|||
border-radius: 999px; |
|||
color: #fff; |
|||
font-size: 12px; |
|||
line-height: 1; |
|||
} |
|||
|
|||
.normal-legend { |
|||
background: #67c23a; |
|||
} |
|||
|
|||
.alarm1-legend { |
|||
background: #e6a23c; |
|||
} |
|||
|
|||
.alarm2-legend { |
|||
background: #f56c6c; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue