Files
erqi-web/src/components/Map/window/monitor.vue
2025-12-31 15:23:29 +08:00

177 lines
3.8 KiB
Vue

<template>
<div class="content-wrapper">
<div class="monitor-cctv video-windowcctv">
<HikPlayerComponent ref="HikCCTV" v-if="visible" :cameraIndexCode="data.videoCode" id="cctv"/>
</div>
</div>
</template>
<script setup>
import { computed, nextTick, ref, watch } from 'vue'
import useMapStore from '@/store/modules/map'
import HikPlayerComponent from '@/components/Player/HikPlayer.vue'
const mapStore = useMapStore()
const visible = ref(false)
const data = computed(() => mapStore.windowInfo.data)
const HikCCTV = ref(null)
watch(() => data.value.videoCode, () => {
visible.value = false
nextTick(() => {
visible.value = true
})
}, { immediate: true })
defineExpose({
HikCCTV
})
</script>
<style lang="scss" scoped>
.content-wrapper {
width: 100%;
height: 100%;
overflow: auto;
.list-wrapper {
width: 100%;
display: flex;
flex-direction: column;
gap: 8px;
.list-item {
width: 100%;
display: flex;
height: 18px;
align-items: center;
.label {
width: 100px;
font-size: 14px;
color: #00C0FFFF;
text-align: left;
}
.value {
color: #FFFFFFFF;
font-size: 14px;
}
}
.subtitle {
width: 100%;
height: 28px;
background-color: #00C0FF33;
color: #00C0FFFF;
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 4px;
box-sizing: border-box;
&::after {
content: '';
display: block;
width: 14px;
height: 14px;
background-image: url('@/assets/images/common/icon-triangle.png');
background-size: 100% 100%;
background-repeat: no-repeat;
}
}
.title{
position: relative;
.button{
position: absolute;
right: 0;
top: -32px;
cursor: pointer;
color: #00c0ff;
padding: 6px 10px;
background: rgba(22, 119, 255, 0.21);
border-radius: 2px 2px 2px 2px;
border: 1px solid #236ACE;
color: rgba(255, 255, 255, 0.9);
}
}
}
.list-wrapper {
width: 100%;
height: calc(100% - 50px);
margin-top: 10px;
overflow: auto;
.header{
width: 100%;
height: 40px;
background: linear-gradient( 0deg, rgba(10,167,255,0) 0%, rgba(22,115,255,0.5) 100%);
border-radius: 3px 3px 0px 0px;
display: flex;
.header-label{
font-size: 12px;
color: #F4F9FECC;
flex-shrink:0;
display: flex;
justify-content: center;
align-items: center;
}
}
.list {
width: 100%;
height: calc(100% - 50px);
overflow: auto;
.header{
width: 100%;
height: 40px;
background: linear-gradient( 0deg, rgba(10,167,255,0) 0%, rgba(22,115,255,0.5) 100%);
border-radius: 3px 3px 0px 0px;
display: flex;
.header-label{
font-size: 12px;
color: #F4F9FECC;
flex-shrink:0;
display: flex;
justify-content: center;
align-items: center;
}
}
.item{
width: 100%;
height: 36px;
display: flex;
.row{
position: relative;
font-size: 12px;
color: #fff;
flex-shrink:0;
display: flex;
justify-content: center;
align-items: center;
}
&:nth-of-type(odd){
background: #2a64bb2b;
}
&:hover{
background-image: url('@/assets/images/common/row-background-active.png');
background-size: 100% 100%;
background-repeat: no-repeat;
.row.index::before{
background: linear-gradient( 89deg, #00F0FF 0%, rgba(4,114,217,0) 100%);
}
}
}
}
}
}
.monitor-cctv{
min-height: 289px;
width: 100%;
height: -webkit-fill-available;
}
</style>=>