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 模型定义 模型编译 模型训练 输入格式 完整代…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
