web
9 天以前 12c72e520e0ff9d738b9dac5ce84a4821a75e6e3
feat:添加视频弹窗
已修改3个文件
已添加2个文件
176 ■■■■ 文件已修改
src/assets/images/flow/screenIconWhite.png 补丁 | 查看 | 原始文档 | blame | 历史
src/views/screen/flow/graphic/components/FullScreenVideo.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/screen/flow/graphic/index.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/screen/temperature/graphic/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/screen/temperature/statics/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/flow/screenIconWhite.png
src/views/screen/flow/graphic/components/FullScreenVideo.vue
对比新文件
@@ -0,0 +1,103 @@
<script setup>
import EZUIKit from 'ezuikit-js';
const props = defineProps({
    data: {
        type: Object,
        default: {},
    }
})
const emit = defineEmits(['close'])
let ezKitEl = ''
let ezKitId = 'ezid'
const closeScreen = () => {
    ezKitEl.stop(); //停止播放视频
    emit('close')
}
onMounted(() => {
    ezKitEl = new EZUIKit.EZUIKitPlayer({
        id: ezKitId,
        url: props.data.url,
        accessToken: props.data.accessToken,
    })
})
</script>
<template>
    <div class="modal">
        <div class="vb" :id="ezKitId"></div>
        <div class="close" @click="closeScreen"><el-icon><CircleClose /></el-icon></div>
        <div class="mask">
            <div class="list">
                <div class="item">
                    <div class="name">水位:</div>
                    <div class="val"><span>{{props.data.waterLevel}}</span>m</div>
                </div>
                <div class="item">
                    <div class="name">流速:</div>
                    <div class="val"><span>{{props.data.flowVelocity}}</span>m/s</div>
                </div>
                <div class="item">
                    <div class="name">瞬时流量:</div>
                    <div class="val"><span>{{props.data.newFlow}}</span>m³/h</div>
                </div>
                <div class="item">
                    <div class="name">累计流量:</div>
                    <div class="val"><span>{{props.data.totalFlow}}</span>m³</div>
                </div>
            </div>
        </div>
    </div>
</template>
<style scoped lang="scss">
.modal{
    position: absolute;
    left: 2%;
    top: 2%;
    width: 96%;
    height: 96%;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 100;
    .vb{
        position: absolute;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
    }
    .close{
        position: absolute;
        right: 1%;
        top: 1%;
        font-size: 2rem;
        color: #fff;
    }
    .mask{
        position: absolute;
        left: 5%;
        bottom: 5%;
        width: 15%;
        background-color: rgba(0, 0, 0, 0.5);
        color: #fff;
        padding: 1rem;
        border-radius: 1rem;
        .item{
            display: flex;
            align-items: center;
            padding: 0.5rem 0;
            .name{
                width: 50%;
            }
            span{
                margin-right: 0.8rem;
            }
        }
    }
}
</style>
src/views/screen/flow/graphic/index.vue
@@ -5,6 +5,7 @@
import {getFlowVideoData} from '@/api/screen/graphic/index.js'
import EZUIKit from 'ezuikit-js';
import {useRoute} from "vue-router";
import FullScreenVideo from "./components/FullScreenVideo.vue";
const route = useRoute();
@@ -13,24 +14,21 @@
const searchVal = ref('')
const playerData = ref([])
const hasFullScreen = ref(false)
const fullIndex = ref()
let ezKitList = []; //视频组件实例数组
let ezKitId = []; //视频盒子id数组
let timer = null;
// 全屏操作
const handleFullScreen = () => {
    const dom = document.getElementById(ezKitId[0])
    dom.requestFullscreen()
}
// 监听全屏状态,是否要开起蒙层
document.addEventListener('fullscreenchange', (val) => {
    if (!document.fullscreenElement) {  //退出全屏
        hasFullScreen.value = false;
    } else { //开起全屏
// 全屏弹窗
const handleFullScreen = (index) => {
    fullIndex.value = index;
        hasFullScreen.value = true;
    }
});
// 关闭全屏弹窗
const closeFullScreen = () => {
    hasFullScreen.value = false;
}
// 抓拍
const handleSnap = (index) => {
@@ -99,6 +97,10 @@
    if (timer) {
        clearInterval(timer)
    }
    // 停止播放
    ezKitList?.forEach(item => {
        item.stop();
    })
})
</script>
@@ -141,10 +143,6 @@
                        新增
                    </el-button>
                </div>
                <div class="tool-r" @click="handleFullScreen">
                    <img src="@/assets/images/flow/fullscreen.png"/>
                    全屏
                </div>
            </div>
            <div class="monitor-box">
                <div class="monitor-list">
@@ -171,6 +169,10 @@
                                </div>
                            </div>
                            <div class="info-btn">
                                <div class="fullScreen" @click="handleFullScreen(index)">
                                    <img src="@/assets/images/flow/screenIconWhite.png" alt="" />
                                    全屏
                                </div>
                                <el-button style="width: 6rem" @click="handleSnap(index)">抓拍</el-button>
                            </div>
                        </div>
@@ -178,9 +180,11 @@
                </div>
            </div>
        </div>
        <div class="mask" v-show="hasFullScreen">
            <div class="mask-item"></div>
        </div>
        <FullScreenVideo
            v-if="hasFullScreen"
            :data="playerData[fullIndex]"
            @close="closeFullScreen"
        />
    </div>
</template>
@@ -252,16 +256,6 @@
                    font-size: 1.1rem;
                }
            }
            .tool-r {
                display: flex;
                align-items: center;
                img {
                    width: 25px;
                    margin-right: 10px;
                }
            }
        }
        .monitor-box {
@@ -328,17 +322,30 @@
                        }
                        .info-btn {
                            width: 20%;
                            width: 15%;
                            padding: 1rem 0;
                            display: flex;
                            align-items: flex-end;
                            flex-direction: column;
                            justify-content: space-between;
                            :deep(.el-button) {
                                color: #fff;
                                background: rgba(94, 229, 92, 0.6);
                                border-radius: 4px 4px 4px 4px;
                                border: 1px solid rgba(94, 229, 92, 0.6);
                            }
                            .fullScreen{
                                width: 100%;
                                height: 50px;
                                display: flex;
                                align-items: center;
                                justify-content: center;
                                color: #fff;
                                img{
                                    width: 25px;
                                    margin-right: 10px;
                                }
                            }
                        }
                    }
                }
src/views/screen/temperature/graphic/index.vue
@@ -270,7 +270,7 @@
        <div class="graphic-info">
            <div class="graphic-tool">
                <div class="tool-l">
                    <div class="name">类型</div>
                    <div class="name">时间类型</div>
                    <el-button-group class="ml-4">
                        <el-button :type="timeType === 1 ? 'primary' : ''" @click="changeType(1)">日
                        </el-button>
src/views/screen/temperature/statics/index.vue
@@ -308,7 +308,7 @@
                    placeholder="请选择时间"
                    @change="(value) => getTime(value, warn.type, 'warn')"
                />
                <div>电站平均水位汇总</div>
                <div>电站报警次数汇总</div>
            </div>
        </div>
    </div>