el-select实现分屏效果
动态绑定class值 ,多种判断
:class="type === 8 ? 'home-stye-2' : type === 24 ? 'home-stye-1' : 'home-stye-3'"
<div class="home-right-top"><div class="home-right-top-video"><el-row :gutter="20"><el-col :span="type" v-for="(item, index) in typeList" :key="item.id":class="type === 8 ? 'home-stye-2' : type === 24 ? 'home-stye-1' : 'home-stye-3'"><div class="videoEvent">
//ifram视频嵌套<iframe id="iframe":src="liveNvrUrl + `/play.html?channel=` + item.channelNo + `&protocol=WEBRTC&stretch=no&iframe=yes&autoplay=no&controls=no`"allowfullscreen class="video" @click="iframeClick(index)"></iframe></div>
//摄像仪名称 点击摄像仪名称实现全屏<div class="camera-name" @click="handleVideoClick(item.id, item.channelNo, item.voiceCall)">摄像仪名称 : {{item.cameraName }}</div></el-col></el-row></div><div class="home-right-top-text"><span class="full-screen" @click="fullScreenClick">全屏</span><span>
//分屏下拉款选择<el-select v-model="cameraValue" placeholder="分屏" style="width: 100px;" size="mini" @change="changeSize"><el-option v-for="item in cameraOptions" :key="item.value" :label="item.label" :value="item.value"></el-option></el-select></span></div></div>
js部分定义变量及方法,主要查阅对象为分屏和全屏方法
data(){
return{typeNewList: [], //获取后端返回数组typeList: [], //展示页面数组liveNvrUrl: '', cameraValue: '', //select绑定值type: 24,cameraIndex: null,//截取数量}
},mounted() {this.getCameraStatus()this.getWebSocket() // 链接服务this.getLiveNvr() //获取liveNvr地址},methods: {//获取liveNvr地址getLiveNvr() {getConfigKey("liveNvr").then(res => {this.liveNvrUrl = res.msg;})},// 链接服务getWebSocket() {function debounce(func, delay) {let timeoutId;return function (...args) {clearTimeout(timeoutId);timeoutId = setTimeout(() => {func.apply(this, args);}, delay);};}const wsuri = 'ws://192.168.10.6:8081/websocket/message'let ws = new WebSocket(wsuri)var _this = thisws.onopen = function (event) {}const debouncedFunction = debounce(function (event) {if (event.data !== '连接成功') {let result = event.datalet data = JSON.parse(result)_this.cameraOnlineList.unshift(data)}// 执行的代码}, 200);ws.onmessage = function (e) {debouncedFunction(e)}ws.onclose = function (event) {}},
//初始化数据getCameraStatus() {getCameraStatus().then(res => {this.allCamera = res.cameraStatus.numberthis.offlineCamera = res.cameraStatus.offDrillingNumberthis.onlineCamera = res.cameraStatus.onDrillingNumber})// 摄像仪通道listCameraBase().then(response => {this.typeNewList = response.rowsthis.handleVideoClick(this.typeNewList[0].id, this.typeNewList[0].channelNo, this.typeNewList[0].voiceCall);this.changeSize(this.type)});},// 监控视频事件handleVideoClick(videoId, channelNo, voiceCall) {this.currentChannel = channelNo;this.currentVideoId = videoId;this.currentVoiceCall = voiceCall;this.drillInformation = []this.value = '';this.drillValue = '';const videoIdInt = videoIdgetTaskIdByCameraId(videoIdInt).then((response) => {if (response.data === undefined) {this.$modal.msgError("当前相机无在执行任务");this.taskPlanList = [];return false}this.taskPlanList = response.data; //任务信息数据// 调用钻孔放法或接口数据,绑定对应的id来获取对应数据if (response.data.taskDetailInfoList &&response.data.taskDetailInfoList.length > 0) {this.drillOptions = response.data.taskDetailInfoList; //钻孔数据this.selectedHoleCode = response.data.taskDetailInfoList[0].holeCode; // 假设选择第一个钻孔编号}});},// 分屏 初始化方法中调用this.changeSize(this.type)changeSize(value) {let arr = this.typeNewList;this.cameraIndex = 0;this.type = value;if (value === 24) {this.cameraIndex = 1;}if (value === 8) {this.cameraIndex = 6;}if (value === 6) {this.cameraIndex = 12;}this.typeList = arr.slice(0, this.cameraIndex);},// 全屏fullScreenClick() {this.typeList = []this.cameraValue = ''this.type = 24;this.typeList = this.typeNewList.filter(item => item.id === this.currentVideoId)},
}
css分屏样式
.home-right-top-video {width: 100%;height: calc(100% - 40px);.el-row {height: 100%;
//2*3.home-stye-2 {border-radius: 4px;height: calc(100% / 2 - 10px);margin-bottom: 10px;position: relative;.bg-purple {position: absolute;top: 0;height: 100%;}.videoEvent {width: 100%;height: 100%;.video {width: 100%;height: 100%;}}.camera-name {position: absolute;top: 5px;left: 20px;height: 100%;color: #1ea0f7;font-size: 16px;cursor: pointer;}}
//1*1.home-stye-1 {border-radius: 4px;height: calc(100% - 10px);margin-bottom: 10px;position: relative;.videoEvent {width: 100%;height: 100%;.video {width: 100%;height: 100%;}}.camera-name {position: absolute;top: 5px;left: 20px;height: 100%;color: #1ea0f7;font-size: 16px;cursor: pointer;}}}}
//3*4.home-stye-3 {border-radius: 4px;height: calc(100% / 3 - 10px);margin-bottom: 10px;position: relative;.videoEvent {width: 100%;height: 100%;.video {width: 100%;height: 100%;}}.camera-name {position: absolute;top: 5px;left: 20px;height: 100%;color: #1ea0f7;font-size: 14px;cursor: pointer;}}}}
注释:分屏实现逻辑:后端返回数据定义一个数组中,判断据type的值定义cameraIndex的长度,将定义的数组typeNewList使用slice进行截取(此方法不会修改原始数组),截取后的值赋值给typeList展示页面上
相关文章:

el-select实现分屏效果
动态绑定class值 ,多种判断 :class"type 8 ? home-stye-2 : type 24 ? home-stye-1 : home-stye-3" <div class"home-right-top"><div class"home-right-top-video"><el-row :gutter"20"><el-c…...

微信小程序本地和真机调试文件上传成功但体验版不成功
可能是微信小程序ip白名单的问题,去微信公众平台(小程序)上设置小程序的ip白名单 1、在本地中取消不校验 然后在本地去上传文件,就会发现控制台报错了,会提示一个https什么不在ip白名单,复制那个网址 2、…...

windows系统用nginx部署web应用
要在Windows系统上使用Nginx进行本地部署和运行Web应用程序,可以按照以下步骤进行操作: 1.首先下载nginx,需要去nginx官网: nginx: download 下载最新版本的: 2.解压缩Nginx:找个磁盘位置,新…...

如何利用Python进行数据归一化?
1. 知识简介 数据归一化是数据预处理的一项重要步骤,它对于提高模型性能、加速模型训练、避免数值计算问题以及提高模型的泛化能力都具有重要作用。进行数据归一化可以起到以下作用:消除量纲影响,加速模型收敛,提高模型性能&…...

Linux 基本语句_13_消息队列
概念: 不同进程能通过消息队列来进行通信,不同进程也能获取或发送特定类型的消息,即选择性的收发消息。 一般一个程序采取子进程发消息,父进程收消息的模式 常用函数功能: fork(); // 创建子进程 struct msgbuf{ …...

Maven——仓库
Maven坐标和依赖是任何一个构件在Maven世界中的逻辑表示方式;而构件的物理表示方式是文件,Maven通过仓库来统一管理这些文件。 1、何为Maven仓库 在Maven世界中,任何一个依赖、插件或者项目构建的输出,都可以称为构件。例如&…...
Pandas:一个实用高效的Python数据处理库
个人网站 文章首发公众号:小肖学数据分析 导语: Pandas是一个强大且易于使用的Python数据处理库,广泛应用于数据分析和数据科学领域。本文将介绍Pandas库的基本概念、功能和使用方法,并提供详细的示例,帮助小白快速…...

Spring第三课,Lombok工具包下载,对应图书管理系统列表和登录界面的后端代码,分层思想
目录 一、Lombok工具包下载 二、前后端互联的图书管理系统 规范 三、分层思想 三层架构: 1.表现层 2.业务逻辑层 3.数据层 一、Lombok工具包下载 这个工具包是为了做什么呢? 他是为了不去反复的设置setting and getting 而去产生的工具包 ⚠️工具…...

DDoS高防IP到底是什么?
DDoS高防IP是提供一个带防御的IP,主要是针对网络中的DDoS攻击进行保护,是针对互联网服务器遭受大流量的DDoS攻击后,导致服务不可用的情况下,用户可以通过配置高防IP,将攻击流量引流到高防IP上,从而确保源站…...

el-row错位问题解决
<el-row type"flex" style"flex-wrap:wrap">...
torch indices x[indices] 内存不足崩溃,python进程锁报错。
报错 Process Process-167: Traceback (most recent call last):File "/usr/lib/python3.10/multiprocessing/process.py", line 317, in _bootstraputil._exit_function()File "/usr/lib/python3.10/multiprocessing/util.py", line 360, in _exit_funct…...

第二证券:机构争分夺秒抢滩 金融大模型落地为时尚早
本年以来,大模型席卷金融业,一夜之间,简直悉数金融场景都在探索适配大模型接口。但是,志向丰满,实践骨感。有大型金融组织IT部分人士比方,金融大模型从战略规划到安顿落地,有着从“卖家秀”走到…...
C#WPF使用MaterialDesign 显示带遮罩的对话框
第一步定义对话框 <UserControlx:Class="TemplateDemo.Views.Edit.UCEditUser"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.m…...

Nuxt.js:下一代Web开发框架的革命性力量
文章目录 一、Nuxt.js简介二、Nuxt.js的特点1. 集成Vue.js和Node.js2. 自动代码分割和优化3. 服务端渲染(SSR)4. 强大的路由管理5. 丰富的插件系统 三、Nuxt.js的优势1. 提高开发效率2. 降低维护成本3. 提高用户体验 四、Nuxt.js在实际应用中的案例1. 电…...

【JavaEE初阶】死锁问题
目录 一、死锁的三种典型场景 1、一个线程,一把锁 2、两个线程,两把锁 3、N个线程,M把锁 死锁,是多线程代码中的一类经典问题。我们知道加锁是能解决线程安全问题的,但是如果加锁的方式不当,就可能产生死…...

uniapp 打包的 IOS打开白屏 uniapp打包页面空白
uniapp的路由跟vue一样,有hash模式和history模式, 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。…...

在 Redis 中使用 JSON 文档:命令行界面(CLI)和 Navicat 集成
Redis,因其极高的性能而闻名,是一款多功能的 NoSQL 数据库,擅长处理键值对。虽然 Redis主要用于处理简单数据结构,但是同样支持更多复杂的数据类型,如列表、集合甚至是 JSON 文件。在本文,我们将深入到 Red…...

Win Server 2019远程桌面服务部署
一、添加远程桌面授权服务 服务器管理 - 添加角色和功能打开“添加角色和功能向导”窗口,选择基于角色或给予功能安装: 打开服务器管理,打开角色和功能,添加远程回话主机和远程桌面授权 image.png 以上配置完成后使用期限为120…...

vue3-在自定义hooks使用useRouter 报错问题
文章目录 前言一、报错分析报错的Vue warn截图:查看文档 二、那么在hook要怎么引入路由呢? 前言 记录在vue3项目中,hook使用useRouter 报错问题 一、报错分析 报错的Vue warn截图: 警告 inject() can only be used inside setup…...

深度学习框架:Pytorch与Keras的区别与使用方法
☁️主页 Nowl 🔥专栏《机器学习实战》 《机器学习》 📑君子坐而论道,少年起而行之 文章目录 Pytorch与Keras介绍 Pytorch 模型定义 模型编译 模型训练 输入格式 完整代码 Keras 模型定义 模型编译 模型训练 输入格式 完整代…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...