【知识分享】Vue实现视频的不同分屏切换并播放流

代码部分:

<template>

  <div>

    <el-row>

      <el-col :span="4" style="height: 100%">

        <h4>视频列表</h4>

        <el-divider style="width: 75%; margin: 10px 0; overflow-y: auto" />

        <el-tree

          style="max-height: 660px; overflow: auto"

          :data="data"

          default-expand-all

          node-key="id"

          :props="defaultProps"

          :check-on-click-node="true"

          :check-strictly="true"

          @check="treeCheck"

          ref="treeForm"

        ></el-tree>

      </el-col>

      <el-col :span="20">

        <el-row v-if="true" style="margin-bottom: 16px">

          <el-button @click="changeScreen(1)">大屏</el-button>

          <el-button @click="changeScreen(4)">四分屏</el-button>

          <el-button @click="changeScreen(9)">九分屏</el-button>

        </el-row>

        <div v-if="screenNumber == 1">

          <el-row>

            <el-col style="height: 660px">

              <VideoComponent :code="cameraCode" />

              <!-- <el-image style="width: 100%; height: 100%" :src="image1src" alt="图片丢失了" /> -->

            </el-col>

          </el-row>

        </div>

        <div v-if="screenNumber == 4">

          <el-row :gutter="20">

            <el-col :span="12" style="height: 340px">

              <VideoComponent :code="cameraFour1Code" />

            </el-col>

            <el-col :span="12" style="height: 340px">

              <VideoComponent :code="cameraFour2Code" />

            </el-col>

            <el-col :span="12" style="height: 340px">

              <VideoComponent :code="cameraFour3Code" />

            </el-col>

            <el-col :span="12" style="height: 340px">

              <VideoComponent :code="cameraFour4Code" />

            </el-col>

          </el-row>

        </div>

        <div v-if="screenNumber == 9">

          <el-row :gutter="20">

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine1Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine2Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine3Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine4Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine5Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine6Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine7Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine8Code" />

            </el-col>

            <el-col :span="8" style="height: 227px">

              <VideoComponent :code="cameraNine9Code" />

            </el-col>

          </el-row>

        </div>

      </el-col>

    </el-row>

  </div>

</template>

<script lang="ts" setup>

import { nextTick, ref, onMounted } from 'vue'

import VideoComponent from '@/core/views/dynamic/video/VideoComponent.vue'

import { request } from '@/core/utils/customRequest'

const screenNumber = ref(1)

const data = ref([])

const defaultProps = ref({

  children: 'children',

  label: 'label'

})

const treeForm = ref<InstanceType<typeof ElTree>>()

const cameraCode = ref()

const cameraFour1Code = ref()

const cameraFour2Code = ref()

const cameraFour3Code = ref()

const cameraFour4Code = ref()

const cameraNine1Code = ref()

const cameraNine2Code = ref()

const cameraNine3Code = ref()

const cameraNine4Code = ref()

const cameraNine5Code = ref()

const cameraNine6Code = ref()

const cameraNine7Code = ref()

const cameraNine8Code = ref()

const cameraNine9Code = ref()

const treeCheck = (node: any, list: any) => {

  if (screenNumber.value == 1) {

    cameraCode.value = node.obj2Props[3].value

  }

  if (screenNumber.value == 4) {

    if (cameraFour1Code.value == null || cameraFour1Code.value == '') {

      cameraFour1Code.value = node.obj2Props[3].value

    } else {

      if (cameraFour2Code.value == null || cameraFour2Code.value == '') {

        cameraFour2Code.value = node.obj2Props[3].value

      } else {

        if (cameraFour3Code.value == null || cameraFour3Code.value == '') {

          cameraFour3Code.value = node.obj2Props[3].value

        } else {

          if (cameraFour4Code.value == null || cameraFour4Code.value == '') {

            cameraFour4Code.value = node.obj2Props[3].value

          } else {

            cameraFour4Code.value = node.obj2Props[3].value

          }

        }

      }

    }

  }

  if (screenNumber.value == 9) {

    if (cameraNine1Code.value == null || cameraNine1Code.value == '') {

      cameraNine1Code.value = node.obj2Props[3].value

    } else {

      if (cameraNine2Code.value == null || cameraNine2Code.value == '') {

        cameraNine2Code.value = node.obj2Props[3].value

      } else {

        if (cameraNine3Code.value == null || cameraNine3Code.value == '') {

          cameraNine3Code.value = node.obj2Props[3].value

        } else {

          if (cameraNine4Code.value == null || cameraNine4Code.value == '') {

            cameraNine4Code.value = node.obj2Props[3].value

          } else {

            if (cameraNine5Code.value == null || cameraNine5Code.value == '') {

              cameraNine5Code.value = node.obj2Props[3].value

            } else {

              if (cameraNine6Code.value == null || cameraNine6Code.value == '') {

                cameraNine6Code.value = node.obj2Props[3].value

              } else {

                if (cameraNine7Code.value == null || cameraNine7Code.value == '') {

                  cameraNine7Code.value = node.obj2Props[3].value

                } else {

                  if (cameraNine8Code.value == null || cameraNine8Code.value == '') {

                    cameraNine8Code.value = node.obj2Props[3].value

                  } else {

                    if (cameraNine9Code.value == null || cameraNine9Code.value == '') {

                      cameraNine9Code.value = node.obj2Props[3].value

                    } else {

                      cameraNine9Code.value = node.obj2Props[3].value

                    }

                  }

                }

              }

            }

          }

        }

      }

    }

  }

  //node 该节点所对应的对象、list 树目前的选中状态对象

  //选中事件在选中后执行,当lis中有两个选中时,使用setCheckedKeys方法,选中一个节点

  if (list.checkedKeys.length == 2) {

    //单选实现

    treeForm.value!.setCheckedKeys([node.id])

    console.log('测试treeForm的值', treeForm.value)

  }

}

onMounted(() => {

  getThreeData()

})

const getThreeData = () => {

  request({

    url: 'fast-mdm/web/MdObjectRelation/queryTree/ByRelationTypeId?relationTypeId=13',

    method: 'get',

    showLoading: true

  })

    .then((response: any) => {

      console.log('测试树状菜单的返回结果', response.data)

      data.value = response.data

    })

    .catch(() => {})

}

const changeScreen = (number: any) => {

  if (number == 1) {

    screenNumber.value = 1

  } else if (number == 4) {

    screenNumber.value = 4

  } else if (number == 9) {

    screenNumber.value = 9

  }

}

</script>

实现效果:

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 07:24:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 07:24:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 07:24:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 07:24:07       20 阅读

热门阅读

  1. Nagle算法

    2024-05-16 07:24:07       10 阅读
  2. 多态的具体用法

    2024-05-16 07:24:07       9 阅读
  3. Golang开发:切片的两种创建方式及区别

    2024-05-16 07:24:07       12 阅读
  4. 分治算法(Divide-and-Conquer Algorithm)

    2024-05-16 07:24:07       13 阅读
  5. 软考:区分词法分析、语法分析、语义分析

    2024-05-16 07:24:07       14 阅读
  6. django 双下划线约定

    2024-05-16 07:24:07       8 阅读
  7. 爬虫部分知识点(1)

    2024-05-16 07:24:07       10 阅读
  8. 网站接入百度云防护CDN后回源率非常高原因

    2024-05-16 07:24:07       16 阅读
  9. Android使用SQLite数据库no such table 问题

    2024-05-16 07:24:07       11 阅读
  10. httpsUtils

    2024-05-16 07:24:07       11 阅读
  11. SSL VPN

    SSL VPN

    2024-05-16 07:24:07      11 阅读