diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/copy.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/copy.png new file mode 100644 index 0000000..6a3771a Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/copy.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/del.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/del.png new file mode 100644 index 0000000..ff9d808 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/del.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/detail_icon.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/detail_icon.png new file mode 100644 index 0000000..0059b3f Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/detail_icon.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/idCopy.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/idCopy.png new file mode 100644 index 0000000..c502758 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/idCopy.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/nextStep.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/nextStep.png new file mode 100644 index 0000000..87c6714 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/nextStep.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/question.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/question.png new file mode 100644 index 0000000..ccf2986 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/question.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/release.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/release.png new file mode 100644 index 0000000..34c0664 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/release.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepfour.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepfour.png new file mode 100644 index 0000000..52f3378 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepfour.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepone.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepone.png new file mode 100644 index 0000000..5f8d4d6 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepone.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepthree.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepthree.png new file mode 100644 index 0000000..24ffef9 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/stepthree.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/steptwo.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/steptwo.png new file mode 100644 index 0000000..3a01d05 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/steptwo.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/text.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/text.png new file mode 100644 index 0000000..cb6fb6d Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/text.png differ diff --git a/code/VideoAccess-VCMP/web/client/assets/images/imageImg/图科技蓝_小@2x.png b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/图科技蓝_小@2x.png new file mode 100644 index 0000000..b6eb491 Binary files /dev/null and b/code/VideoAccess-VCMP/web/client/assets/images/imageImg/图科技蓝_小@2x.png differ diff --git a/code/VideoAccess-VCMP/web/client/src/sections/offline/components/pushSideSheet.jsx b/code/VideoAccess-VCMP/web/client/src/sections/offline/components/pushSideSheet.jsx index 6ac96dd..38dc967 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/offline/components/pushSideSheet.jsx +++ b/code/VideoAccess-VCMP/web/client/src/sections/offline/components/pushSideSheet.jsx @@ -1,6 +1,6 @@ import React, { useState, useRef, useEffect } from "react"; import { connect } from "react-redux"; -import { Modal, Spin,Tag, Space,Collapse ,SideSheet,Tabs, TabPane,Popover} from "@douyinfe/semi-ui"; +import { Modal, Spin, Tag, Space, Collapse, SideSheet, Tabs, TabPane, Popover } from "@douyinfe/semi-ui"; import moment from "moment"; import './pushSideSheet.less' import PerfectScrollbar from "perfect-scrollbar"; @@ -13,74 +13,87 @@ function pushSideSheet (props) { close, actions, pushData,//表格信息 - journal//日志信息 + rowId, + dispatch } = props; const { offline } = actions; const [logList, setLogList] = useState([]);//日志列表 const [noticeTest, setNoticeTest] = useState([]);//通知列表 const [equipmentTest, setEquipmentTest] = useState([]);//设备列表 - + const journal = useRef([]); + const [isloading, setloading] = useState(false); + //初始化 useEffect(() => { - let timeList = [] - for (let index = 0; index < journal.length; index++) { - let receiverTest=journal[index].receiver.join(';'); - let camerTest='' - for (let j = 0; j < journal[index].camera.length; j++) { - camerTest=camerTest+journal[index].camera[j].name+';' + setloading(true) + setTimeout(() => { + dispatch(offline.getPushLog(rowId)).then((res) => { + if (res.success) { + journal.current=res.payload.data + } + else { + journal.current=[] } - timeList.push( - { - title:getTimeTitle(journal[index].time), - time:getTimeData(journal[index].time), - cameraList:camerTest, - receiverList:receiverTest, - noticeWay:journal[index].noticeWay[0], + let timeList = [] + for (let index = 0; index < journal.current.length; index++) { + let receiverTest = journal.current[index].receiver.join(';'); + let camerTest = '' + for (let j = 0; j < journal.current[index].camera.length; j++) { + camerTest = camerTest + journal.current[index].camera[j].name + ';' } - ) - } - let yearList=[] - for (let index = 0; index < journal.length; index++) { - yearList.push( - { - title:getTimeTitle(journal[index].time), + timeList.push( + { + title: getTimeTitle(journal.current[index].time), + time: getTimeData(journal.current[index].time), + cameraList: camerTest, + receiverList: receiverTest, + noticeWay: journal.current[index].noticeWay[0], + } + ) + } + let yearList = [] + for (let index = 0; index < journal.current.length; index++) { + yearList.push( + { + title: getTimeTitle(journal.current[index].time), + } + ) + } + let showList = [] + let obj = {}; + for (let i = 0; i < yearList.length; i++) { + if (!obj[yearList[i].title]) { + showList.push(yearList[i]); + obj[yearList[i].title] = true; } - ) - } - let showList=[] - let obj = {}; - for (let i = 0; i < yearList.length; i++) { - if (!obj[yearList[i].title]) { - showList.push(yearList[i]); - obj[yearList[i].title] = true; - } - } - for (let index = 0; index < showList.length; index++) { - showList[index].timeList=[] - } - for (let j = 0; j < showList.length; j++) { - for (let i = 0; i < timeList.length; i++) { - if(timeList[i].title==showList[j].title){ - showList[j].timeList.push({time:timeList[i].time,cameraList:timeList[i].cameraList,receiverList:timeList[i].receiverList,noticeWay:timeList[i].noticeWay,}) + } + for (let index = 0; index < showList.length; index++) { + showList[index].timeList = [] + } + for (let j = 0; j < showList.length; j++) { + for (let i = 0; i < timeList.length; i++) { + if (timeList[i].title == showList[j].title) { + showList[j].timeList.push({ time: timeList[i].time, cameraList: timeList[i].cameraList, receiverList: timeList[i].receiverList, noticeWay: timeList[i].noticeWay, }) + } } } - } - setLogList(showList) - let noticeList =[] - for (let i = 0; i < pushData.cameraStatusPushReceivers.length; i++) { - noticeList.push(pushData.cameraStatusPushReceivers[i].receiver) - } - setNoticeTest(noticeList) - let equipmentList=[] - for (let i = 0; i < pushData.cameraStatusPushMonitors.length; i++) { - equipmentList.push(pushData.cameraStatusPushMonitors[i].camera.name) - } - setEquipmentTest(equipmentList) - setTimeout(() => { + setLogList(showList) + let noticeList = [] + for (let i = 0; i < pushData.cameraStatusPushReceivers.length; i++) { + noticeList.push(pushData.cameraStatusPushReceivers[i].receiver) + } + setNoticeTest(noticeList) + let equipmentList = [] + for (let i = 0; i < pushData.cameraStatusPushMonitors.length; i++) { + equipmentList.push(pushData.cameraStatusPushMonitors[i].camera.name) + } + setEquipmentTest(equipmentList) equipmentScrollbar = new PerfectScrollbar("#collapse_test", { suppressScrollX: true, }); - }, 100); + setloading(false) + }); + }, 0); }, []); useEffect(() => { const videoStreaming = document.getElementById("collapse_test"); @@ -88,19 +101,19 @@ function pushSideSheet (props) { equipmentScrollbar.update(); } }); - function getTimeTitle(date){ - let year = moment(date).year()+'年' - let month = (moment(date).month()+1)>10?(moment(date).month()+1)+'月':'0'+(moment(date).month()+1)+'月' - return year+month + function getTimeTitle (date) { + let year = moment(date).year() + '年' + let month = (moment(date).month() + 1) > 10 ? (moment(date).month() + 1) + '月' : '0' + (moment(date).month() + 1) + '月' + return year + month } - function getTimeData(date){ - let day=moment(date).date()>10?moment(date).date()+'日':'0'+moment(date).date()+'日'; - let hour=moment(date).hour()>10?moment(date).hour():'0'+moment(date).hour(); - let minute=moment(date).minute()>10?moment(date).minute():'0'+moment(date).minute(); - let second=moment(date).second()>10?moment(date).second():'0'+moment(date).second(); - return day+' '+hour+':'+minute+':'+second + function getTimeData (date) { + let day = moment(date).date() > 10 ? moment(date).date() + '日' : '0' + moment(date).date() + '日'; + let hour = moment(date).hour() > 10 ? moment(date).hour() : '0' + moment(date).hour(); + let minute = moment(date).minute() > 10 ? moment(date).minute() : '0' + moment(date).minute(); + let second = moment(date).second() > 10 ? moment(date).second() : '0' + moment(date).second(); + return day + ' ' + hour + ':' + minute + ':' + second } - function sideSheetChange(){ + function sideSheetChange () { close() } return ( @@ -108,55 +121,64 @@ function pushSideSheet (props) { + + { + isloading?( +
+
+ ):'' + } +
- - {logList.map((item, index) => { - return ( - {item.title}
} itemKey={String(index)} key={index}> - {item.timeList.map((itm,idx)=>{ - return( -
-
{itm.time}
- - {itm.receiverList} -
- }> -
{itm.receiverList}
- - - {itm.cameraList} - - }> -
{itm.cameraList}
-
-
{itm.noticeWay=='online'?'上线及时通知':itm.noticeWay=='offline'?'离线即时通知':'24时定时统计'}
- + + {logList.map((item, index) => { + return ( + {item.title}} itemKey={String(index)} key={index}> + {item.timeList.map((itm, idx) => { + return ( +
+
{itm.time}
+ + {itm.receiverList} +
+ }> +
{itm.receiverList}
+ + + {itm.cameraList} + + }> +
{itm.cameraList}
+
+
{itm.noticeWay == 'online' ? '上线及时通知' : itm.noticeWay == 'offline' ? '离线即时通知' : '24时定时统计'}
+ + ) + })} +
) })} - - )})} -
+
-
+
设置 -
+
{equipmentTest.map((item, index) => { - return( - {item} + return ( + {item} ) })} @@ -164,17 +186,17 @@ function pushSideSheet (props) {
-
+
设置 -
+
{noticeTest.map((item, index) => { - return( - {item} + return ( + {item} ) })} diff --git a/code/VideoAccess-VCMP/web/client/src/sections/offline/containers/carrierpigeon.jsx b/code/VideoAccess-VCMP/web/client/src/sections/offline/containers/carrierpigeon.jsx index 5f26d57..b885827 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/offline/containers/carrierpigeon.jsx +++ b/code/VideoAccess-VCMP/web/client/src/sections/offline/containers/carrierpigeon.jsx @@ -34,7 +34,6 @@ const Carrierpigeon = (props) => { const cameraList = useRef([]);//第三阶段监听范围摄像头列表 const [sideSheetVisible, setSideSheetVisible] = useState(false); const [pushData, setPushData] = useState({}); - const [journal, setJournal] = useState([]); const tableList = [//表格属性 { title: '推送信息', @@ -197,16 +196,9 @@ const Carrierpigeon = (props) => { 复制 @@ -540,10 +532,11 @@ const Carrierpigeon = (props) => { />} {sideSheetVisible&& { setSideSheetVisible(false); - setPushData({}) + setPushData({}); + setRowId(); }} />}
diff --git a/code/VideoAccess-VCMP/web/client/src/sections/openness/containers/mirroring.jsx b/code/VideoAccess-VCMP/web/client/src/sections/openness/containers/mirroring.jsx index 3db569e..9356dcf 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/openness/containers/mirroring.jsx +++ b/code/VideoAccess-VCMP/web/client/src/sections/openness/containers/mirroring.jsx @@ -1,20 +1,270 @@ -import React, { useEffect } from 'react'; +import React, { useEffect, useState, useRef } from 'react'; import { connect } from 'react-redux'; import { Coming } from '$components' import '../style.less' const Mirroring = (props) => { - - return ( - - ) + const detailList = useRef([ + { + title: '科技蓝', + img: '/assets/images/imageImg/text.png', + color: 'blue' + }, { + title: '白', + img: '/assets/images/imageImg/text.png', + color: 'blue' + }, { + title: '黑色(深灰)', + img: '/assets/images/imageImg/text.png', + color: 'blue' + }, { + title: '灰色', + img: '/assets/images/imageImg/text.png', + color: 'blue' + }, + ]); + const myCustomList = useRef([ + { + title: '智慧小蓝视频融合中心实例实例实例实例', + img: '/assets/images/imageImg/text.png', + color: 'blue', + lastEditTime:'2022-12-22 16:00:57', + lastReleaseTime:'2022-12-22 19:20:57', + typeId:'1511444S4545' + }, { + title: '智慧小蓝视频融合', + img: '/assets/images/imageImg/text.png', + color: 'blue', + lastEditTime:'2022-12-22 16:00:57', + lastReleaseTime:'2022-12-22 19:20:57', + typeId:'1511444S4545' + }, { + title: '智慧小蓝视频融合小蓝视频融合', + img: '/assets/images/imageImg/text.png', + color: 'blue', + lastEditTime:'2022-12-22 16:00:57', + lastReleaseTime:'2022-12-22 19:20:57', + typeId:'1511444S4545' + }, { + title: '智慧小蓝视频融合小蓝视频融合是的阿三打阿三打', + img: '/assets/images/imageImg/text.png', + color: 'blue', + lastEditTime:'2022-12-22 16:00:57', + lastReleaseTime:'2022-12-22 19:20:57', + typeId:'1511444S4545' + }, + ]); + const [maskNum, setMaskNum] = useState(100); + function mouseOver (index) { + setMaskNum(index) + } + function mouseOut () { + setMaskNum(100) + } + return ( + <> +
+
创建步骤
+
+
+ 设置 +
+
+
创建镜像模板
+
选择样式模板
+
+
+ 设置 +
+
+ 设置 +
+
+
节点配置
+
创建节点及设备树
+
+
+ 设置 +
+
+ 设置 +
+
+
发布镜像
+
发布成功后,获取镜像服务ID
+
+
+ 设置 +
+
+ 设置 +
+
+
调用服务
+
通过服务ID调用镜像服务
+
API调用镜像服务方法 + 设置 +
+
+
+
+
+
应用详情
+
+ {detailList.current.map((item, index) => { + return ( +
+
mouseOver(index)}> + 设置 + {maskNum == index ? (
mouseOut()} style={{ position: 'absolute', width: '100%', height: '100%', background: 'rgba(0,0,0,0.3)', top: 0, display: 'flex', justifyContent: 'center', alignItems: 'center', cursor: 'pointer' }}> +
+ 使用该模版 +
+
) : ''} +
+
+
+ 设置 +
+
+ {item.title} +
+
+
+ ) + })} +
+
+
+
+
我的自定义镜像服务
+
+ 共9份 +
+
+
+ {myCustomList.current.map((item,index)=>{ + return( + +
+ 设置 +
+ {item.title} +
+
+
+
+ 设置 +
+
+ 发布 +
+
+
+
+ 设置 +
+
+ 复制 +
+
+
+
+ 设置 +
+
+ 删除 +
+
+
+
+ 最后编辑于:{item.lastEditTime} +
+
+ 最后发布于:{item.lastReleaseTime} +
+
+
+ 设置 +
+
+ ID:{item.typeId} +
+
+
+ ) + })} +
+
+ + ) } function mapStateToProps (state) { - const { auth } = state; - return { - user: auth.user, - }; + const { auth } = state; + return { + user: auth.user, + }; } export default connect(mapStateToProps)(Mirroring); diff --git a/code/VideoAccess-VCMP/web/package.json b/code/VideoAccess-VCMP/web/package.json index 4a567e9..09ed29d 100644 --- a/code/VideoAccess-VCMP/web/package.json +++ b/code/VideoAccess-VCMP/web/package.json @@ -7,7 +7,7 @@ "test": "mocha", "start-vite": "cross-env NODE_ENV=developmentVite npm run start-params", "start": "cross-env NODE_ENV=development npm run start-params", - "start-params": "node server -p 5000 -u http://localhost:4000 --apiVcmpUrl http://localhost:4000 --apiAuthUrl http://localhost:4200 --apiAnxinyunUrl http://localhost:4100 --iotAuthWeb http://localhost:5200 --iotVideoServer http://221.230.55.27:8081", + "start-params": "node server -p 5000 -u http://10.8.30.112:4000 --apiVcmpUrl http://localhost:4000 --apiAuthUrl http://10.8.30.112:4200 --apiAnxinyunUrl http://10.8.30.112:4100 --iotAuthWeb http://localhost:5200 --iotVideoServer http://221.230.55.27:8081", "deploy": "export NODE_ENV=production&& npm run build && node server", "build-dev": "cross-env NODE_ENV=development&&webpack --config webpack.config.js", "build": "export NODE_ENV=production&&webpack --config webpack.config.prod.js"