Browse Source

视频

release_1.3.0
wenlele 2 years ago
parent
commit
49fcae7088
  1. 276
      code/VideoAccess-VCMP/web/client/src/sections/openness/containers/mirroringDetail.jsx
  2. 8
      code/VideoAccess-VCMP/web/client/src/sections/openness/style.less

276
code/VideoAccess-VCMP/web/client/src/sections/openness/containers/mirroringDetail.jsx

@ -2,7 +2,6 @@ import React, { useEffect, useState, useRef } from 'react';
import { connect } from 'react-redux';
import '../style.less'
import { Tree, Popconfirm, Typography, Input, Switch, Modal, Checkbox, CheckboxGroup } from "@douyinfe/semi-ui";
import VideoScreen from '../components/videoScreen'
const MirroringDetail = (props) => {
const { history, dispatch, actions, user, loading, StatusPushList } = props;
@ -23,23 +22,49 @@ const MirroringDetail = (props) => {
key: '0',
},
]);
const searchData = useRef({})//
const [search, setSearch] = useState({}); //
const [indeterminate, setIndeterminate] = useState(true);//
const [indeterminate, setIndeterminate] = useState(false);//
const [checkAll, setCheckall] = useState(false);//
const onCheckAllChange = (e) => {//
console.log(e);
setCheckedList(e.target.checked ? plainOptions : []);
const [plainOptions, setPlainOptions] = useState([]);//
const [checkedList, setCheckedList] = useState([]);//
const [mykeyword, setMykeyword] = useState('');//
const [showCameraList, setShowCameraList] = useState([])//
const [addCamera, setAddCamera] = useState(false);//
const [addCameraKey, setAddCameraKey] = useState('');//
function onCheckAllChange (e) {//
if (e.target.checked) {
let mycheckList = []
for (let i = 0; i < showCameraList.length; i++) {
mycheckList.push(showCameraList[i].value)
}
setCheckedList(mycheckList)
}
else {
setCheckedList([])
}
setIndeterminate(false);
setCheckall(e.target.checked);
};
const equipmentGetCamera = () => {
searchData.current = { ...search }
dispatch(openness.getCamera(searchData.current)).then((res) => {
// limits.current = res.payload.data.data.length
console.log(res.payload.data.data);
}
function equipmentGetCamera () {//
dispatch(openness.getCamera()).then((res) => {
let resList = res.payload.data.data
let optionsList = []
for (let i = 0; i < resList.length; i++) {
optionsList.push({
label: resList[i].name,
value: resList[i].id,
extra: 'DID:' + resList[i].gbCamera.did || '',
})
}
setShowCameraList(optionsList)
setPlainOptions(optionsList)
});
}
function onChange (checkedList) {//
setCheckedList(checkedList);
setIndeterminate(!!checkedList.length && checkedList.length < showCameraList.length);
setCheckall(checkedList.length === showCameraList.length);
}
useEffect(() => {
equipmentGetCamera();
}, []);
@ -87,7 +112,7 @@ const MirroringDetail = (props) => {
if (nodeKeyArr.length == 1) {
for (let index = 0; index < mainData.length; index++) {
if (mainData[index].key == item.key) {
if (mainData[index].children && mainData[index].children > 0) {
if (mainData[index].children && mainData[index].children.length > 0) {
let mainKey = mainData[index].children[mainData[index].children.length - 1].key
let thekeyarr = mainKey.split('-')
mainData[index].children.push({
@ -109,6 +134,7 @@ const MirroringDetail = (props) => {
}
} else if (nodeKeyArr.length == 2) {
for (let index = 0; index < mainData.length; index++) {
if (mainData[index].children) {
for (let j = 0; j < mainData[index].children.length; j++) {
if (mainData[index].children[j].key == item.key) {
if (mainData[index].children[j].children && mainData[index].children[j].children.length > 0) {
@ -133,11 +159,10 @@ const MirroringDetail = (props) => {
}
}
}
}
setTreeData(mainData)
}
function changeLable (value, item) {//
console.log('valvalval', value);
console.log('itemitem', item);
let mainData = JSON.parse(JSON.stringify(treeData))
let nodeKeyArr = item.key.split('-')
if (nodeKeyArr.length == 1) {
@ -171,7 +196,43 @@ const MirroringDetail = (props) => {
setEditKey('')
}
function cameraAdd (item) {//
let myplainOptions = JSON.parse(JSON.stringify(plainOptions))
for (let i = 0; i < myplainOptions.length; i++) {//
for (let j = 0; j < treeData.length; j++) {//
if (treeData[j].children) {//
for (let k = 0; k < treeData[j].children.length; k++) {//
if (treeData[j].children[k].children) {//
for (let l = 0; l < treeData[j].children[k].children.length; l++) {//
if (treeData[j].children[k].children[l].children) {//
for (let p = 0; p < treeData[j].children[k].children[l].children.length; p++) {
if (treeData[j].children[k].children[l].children[p].cameraId) {
if (myplainOptions[i].value == treeData[j].children[k].children[l].children[p].cameraId) {
myplainOptions.splice(i, 1)
}
}
}
}
else if (treeData[j].children[k].children[l].cameraId) {//
if (myplainOptions[i].value == treeData[j].children[k].children[l].cameraId) {
myplainOptions.splice(i, 1)
}
}
}
}
else if (treeData[j].children[k].cameraId) {//
if (myplainOptions[i].value == treeData[j].children[k].cameraId) {
myplainOptions.splice(i, 1)
}
}
}
}
}
}
console.log('myplainOptionsmyplainOptions', myplainOptions);
setCheckedList([])
setShowCameraList(myplainOptions)
setAddCamera(true)
setAddCameraKey(item.key)
}
const renderLabel = (label, item) => {//
let keyArr = item.key.split('-')
@ -219,7 +280,7 @@ const MirroringDetail = (props) => {
}
<div style={{ display: 'flex', paddingRight: 13 }}>
{
!item.children || item.children < 1 ? (
(!item.children || item.children.length < 1 || item.children[0].cameraId) && !item.cameraId ? (
<div style={{ width: 12, height: 12, cursor: 'pointer', marginRight: 4 }} onClick={() => cameraAdd(item)}>
<img
src="/assets/images/imageImg/nodeCamera.png"
@ -229,6 +290,8 @@ const MirroringDetail = (props) => {
</div>
) : ('')
}
{
item.cameraId ? ('') : (
<div style={{ width: 12, height: 12, cursor: 'pointer', marginRight: 4 }} onClick={() => { setEditKey(item.key) }}>
<img
src="/assets/images/imageImg/nodeEdit.png"
@ -236,6 +299,8 @@ const MirroringDetail = (props) => {
style={{ width: '100%' }}
/>
</div>
)
}
<Popconfirm
title="删除节点也会删除节点下的从属节点和视频,是否继续?"
arrowPointAtCenter={false}
@ -251,7 +316,7 @@ const MirroringDetail = (props) => {
</div>
</Popconfirm>
{
keyArr.length > 2 ? ('') : (
keyArr.length > 2||(item.children&&item.children[0].cameraId) ? ('') : (
<div style={{ width: 12, height: 12, cursor: 'pointer', marginRight: 4 }} onClick={() => nodeAdd(item)}>
<img
src="/assets/images/imageImg/nodeadd.png"
@ -291,6 +356,129 @@ const MirroringDetail = (props) => {
}
setTreeData(mainData)
}
function searchCamera () {//
if (mykeyword !== '') {
console.log('111111111', mykeyword);
}
else {
console.log('22222222222', mykeyword);
// setShowCameraList(plainOptions)
}
}
function finishAdd () {//
console.log('checkedList', checkedList);
let mainData = JSON.parse(JSON.stringify(treeData))
let nodeKeyArr = addCameraKey.split('-')
if (nodeKeyArr.length == 1) {
for (let q = 0; q < plainOptions.length; q++) {
for (let w = 0; w < checkedList.length; w++) {
if (plainOptions[q].value == checkedList[w]) {
for (let index = 0; index < mainData.length; index++) {
if (mainData[index].key == addCameraKey) {
if (mainData[index].children && mainData[index].children.length > 0) {
let mainKey = mainData[index].children[mainData[index].children.length - 1].key
let thekeyarr = mainKey.split('-')
mainData[index].children.push({
label: plainOptions[q].label,
value: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1]) + 1),
key: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1]) + 1),
cameraId: plainOptions[q].value
})
}
else {
let mainKey = mainData[index].key
let thekeyarr = mainKey.split('-')
mainData[index].children = [{
label: plainOptions[q].label,
value: (Number(thekeyarr[0])) + '-0',
key: (Number(thekeyarr[0])) + '-0',
cameraId: plainOptions[q].value
}]
}
}
}
}
}
}
} else if (nodeKeyArr.length == 2) {
for (let q = 0; q < plainOptions.length; q++) {
for (let w = 0; w < checkedList.length; w++) {
if (plainOptions[q].value == checkedList[w]) {
for (let index = 0; index < mainData.length; index++) {//
if (mainData[index].children) {//
for (let j = 0; j < mainData[index].children.length; j++) {//
if (mainData[index].children[j].key == addCameraKey) {
if (mainData[index].children[j].children && mainData[index].children[j].children.length > 0) {
let mainKey = mainData[index].children[j].children[mainData[index].children[j].children.length - 1].key
let thekeyarr = mainKey.split('-')
mainData[index].children[j].children.push({
label: plainOptions[q].label,
value: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-' + (Number(thekeyarr[2]) + 1),
key: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-' + (Number(thekeyarr[2]) + 1),
cameraId: plainOptions[q].value
})
}
else {
let mainKey = mainData[index].key
let thekeyarr = mainKey.split('-')
mainData[index].children[j].children = [{
label: plainOptions[q].label,
value: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-0',
key: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-0',
cameraId: plainOptions[q].value
}]
}
}
}
}
}
}
}
}
} else if (nodeKeyArr.length == 3) {
for (let q = 0; q < plainOptions.length; q++) {
for (let w = 0; w < checkedList.length; w++) {
if (plainOptions[q].value == checkedList[w]) {
for (let index = 0; index < mainData.length; index++) {//
if (mainData[index].children) {//
for (let j = 0; j < mainData[index].children.length; j++) {//
if (mainData[index].children[j].children) {//
for (let k = 0; k < mainData[index].children[j].children.length; k++) {//
if (mainData[index].children[j].children[k].key == addCameraKey) {
if (mainData[index].children[j].children[k].children && mainData[index].children[j].children[k].children.length > 0) {
let mainKey = mainData[index].children[j].children[k].children[mainData[index].children[j].children[k].children.length - 1].key
let thekeyarr = mainKey.split('-')
mainData[index].children[j].children[k].children.push({
label: plainOptions[q].label,
value: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-' + (Number(thekeyarr[2])) + '-' + (Number(thekeyarr[3]) + 1),
key: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-' + (Number(thekeyarr[2])) + '-' + (Number(thekeyarr[3]) + 1),
cameraId: plainOptions[q].value
})
}
else {
let mainKey = mainData[index].key
let thekeyarr = mainKey.split('-')
mainData[index].children[j].children[k].children = [{
label: plainOptions[q].label,
value: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-' + (Number(thekeyarr[2])) + '-0',
key: (Number(thekeyarr[0])) + '-' + (Number(thekeyarr[1])) + '-' + (Number(thekeyarr[2])) + '-0',
cameraId: plainOptions[q].value
}]
}
}
}
}
}
}
}
}
}
}
}
setTreeData(mainData);
setAddCamera(false);
setAddCameraKey('');
}
return (
<div style={{ background: 'rgb(246, 250, 255)', height: '100%', width: '100%' }}>
<div style={{
@ -332,7 +520,7 @@ const MirroringDetail = (props) => {
</div>
</div>
</div>
<div style={{ display: 'flex', height: '100%' }}>
<div style={{ display: 'flex', height: 'calc(100% - 64px)', }}>
<div style={{ height: "100%", width: 200, background: '#FFFFFF' }}>
<div style={{ display: 'flex', height: 49, background: '#1859C1', border: '1px solid #1859C1', color: 'rgba(255,255,255,0.65)', fontSize: 14, width: '100%' }}>
{chooseList.map((item, index) => {
@ -347,7 +535,7 @@ const MirroringDetail = (props) => {
})}
</div>
{/* 节点 */}
<div style={{ display: chooseNum == "0" ? "block" : "none", }}>
<div style={{ display: chooseNum == "0" ? "block" : "none",height:'100%' }}>
<div style={{ height: 40, display: 'flex', alignItems: 'center', justifyContent: 'center', background: 'rgb(246, 250, 255)', cursor: 'pointer' }} onClick={addMainNode}>
<div style={{ width: 20, height: 20 }}>
<img
@ -360,16 +548,20 @@ const MirroringDetail = (props) => {
增加主要节点
</div>
</div>
{/* <div > */}
<Tree
style={{height: 'calc(100% - 89px)',overflowY: 'auto',}}
treeData={treeData}
renderLabel={renderLabel}
/>
{/* </div> */}
</div>
{/* 添加视频 */}
<div style={{ width: 264, height: '100%', position: 'absolute', top: 64, left: 200 }}>
{addCamera ? (
<div style={{ width: 264, height: '100%', position: 'absolute', top: 64, left: 200, background: '#FFFFFF' }}>
<div style={{ background: 'linear-gradient(180deg, #1859C1 0%, #2C66E7 100%)', display: 'flex', height: 49, padding: '0px 12px 0px 10px', alignItems: 'center', justifyContent: 'space-between', }}>
<div style={{ fontSize: 14, color: '#F9F9F9' }}>添加视频</div>
<div style={{ width: 16, height: 16, cursor: 'pointer' }}>
<div style={{ width: 16, height: 16, cursor: 'pointer' }} onClick={() => { setAddCamera(false); setAddCameraKey('') }}>
<img
src="/assets/images/imageImg/close.png"
alt="设置"
@ -381,9 +573,15 @@ const MirroringDetail = (props) => {
<div style={{ display: 'flex', padding: "8px 10px 10px 10px", alignItems: 'center' }}>
<div style={{ fontSize: 12 }}>摄像头名称</div>
<div>
<Input placeholder='请输入摄像头名称' style={{ width: 140, marginLeft: 10 }}></Input>
</div>
<div style={{ width: 32, height: 32 }}>
<Input
style={{ width: 140, marginLeft: 10 }}
value={mykeyword}
onChange={(value) => { setMykeyword(value) }}
placeholder="请输入摄像头名称"
showClear>
</Input>
</div>
<div style={{ width: 32, height: 32, cursor: 'pointer' }} onClick={searchCamera}>
<img
src="/assets/images/imageImg/find.png"
alt="设置"
@ -391,23 +589,34 @@ const MirroringDetail = (props) => {
/>
</div>
</div>
<div style={{ display: 'flex' }}>
<div>
<div style={{ display: 'flex', marginBottom: 9, justifyContent: 'space-between' }}>
<div style={{ marginLeft: 20 }}>
<Checkbox
indeterminate={indeterminate}
onChange={onCheckAllChange}
checked={checkAll}
aria-label="Checkbox 示例"
aria-label="全选"
>
全选
</Checkbox>
</div>
<div>
<Checkbox onChange={checked => console.log(checked)} aria-label="Checkbox 示例">隐藏添加过的</Checkbox>
<div style={{ marginRight: 20, color: '#1859C1', cursor: 'pointer' }} onClick={finishAdd}>
完成
</div>
</div>
</div>
<div style={{ padding: '10px 20px', overflowY: 'scroll', height: 'calc(100% - 193px)' }}>
<CheckboxGroup
style={{ marginTop: 6 }}
className='my_CheckboxGroup'
options={showCameraList}
value={checkedList}
onChange={onChange}
aria-label="text"
/>
</div>
</div>
) : ('')}
{/* 样式 */}
<div style={{ display: chooseNum == "1" ? "block" : "none", fontSize: 12 }} className="hasHeader">
<div style={{ height: 41, display: 'flex', alignItems: 'center', justifyContent: 'space-between', borderBottom: '1px solid rgba(226,226,226,0.2)' }}>
@ -426,10 +635,7 @@ const MirroringDetail = (props) => {
</div>
</div>
</div>
<div style={{ flex: 1,height:'100%'}}>
<VideoScreen />
<div style={{ flex: 1 }}>
</div>
</div>
<Modal

8
code/VideoAccess-VCMP/web/client/src/sections/openness/style.less

@ -9,6 +9,14 @@
padding: 0px;
}
}
.my_CheckboxGroup{
.semi-checkbox-addon{
font-size: 12px;
}
.semi-checkbox-extra{
font-size: 12px;
}
}
.hasHeader{
.semi-switch-checked{
background-color:#2F53EA

Loading…
Cancel
Save