Browse Source

gb

dev_trial
wenlele 3 years ago
parent
commit
361f06603d
  1. 2
      code/VideoAccess-VCMP/web/client/index.ejs
  2. 2
      code/VideoAccess-VCMP/web/client/index.html
  3. 5
      code/VideoAccess-VCMP/web/client/src/components/videoPlayer/videoPlay.jsx
  4. 6
      code/VideoAccess-VCMP/web/client/src/components/videoPlayer/voiceHeader.jsx
  5. 748
      code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/cascadeCamera.jsx
  6. 6
      code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/fluoriteCamera.jsx
  7. 4
      code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/ipcCamera.jsx
  8. 5
      code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/sideSheet.jsx
  9. 2
      code/VideoAccess-VCMP/web/package.json

2
code/VideoAccess-VCMP/web/client/index.ejs

@ -4,7 +4,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" /> <meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" />
<!-- <meta content="upgrade-insecure-requests" http-equiv="Content-Security-Policy"> --> <meta content="upgrade-insecure-requests" http-equiv="Content-Security-Policy">
<link rel="shortcut icon" href="/assets/images/favicon.ico"> <link rel="shortcut icon" href="/assets/images/favicon.ico">
<script src="/assets/js/jessibuca/jessibuca.js"></script> <script src="/assets/js/jessibuca/jessibuca.js"></script>
<script <script

2
code/VideoAccess-VCMP/web/client/index.html

@ -5,7 +5,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" /> <meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" />
<!-- <meta content="upgrade-insecure-requests" http-equiv="Content-Security-Policy"> 会将http转化成https,导致jessibuca视频播放不成功 --> <meta content="upgrade-insecure-requests" http-equiv="Content-Security-Policy">
<link rel="shortcut icon" href="/assets/images/favicon.ico"> <link rel="shortcut icon" href="/assets/images/favicon.ico">
<script src="/assets/js/jessibuca/jessibuca.js"></script> <script src="/assets/js/jessibuca/jessibuca.js"></script>

5
code/VideoAccess-VCMP/web/client/src/components/videoPlayer/videoPlay.jsx

@ -58,7 +58,7 @@ const VideoPlay = ({ dispatch, actions,
// audio: false, // audio: false,
// serialNo: '34020000001310000003', // // serialNo: '34020000001310000003', //
// topSerialNo: '34020000001110000079', // // topSerialNo: '34020000001110000079', //
// playUrlSd: 'ws://221.230.55.27:8081/jessica/34020000001110000079/34020000001310000003', // // playUrlSd: 'wss://221.230.55.27:8082/jessica/34020000001110000079/34020000001310000003.flv', //
// // playUrlHd: 'ezopen://open.ys7.com/G75922040/1.hd.live', // // playUrlHd: 'ezopen://open.ys7.com/G75922040/1.hd.live',
// // replayUrl: 'ezopen://open.ys7.com/G75922040/1.rec', // // replayUrl: 'ezopen://open.ys7.com/G75922040/1.rec',
// }, // },
@ -393,12 +393,13 @@ const VideoPlay = ({ dispatch, actions,
debug: true, debug: true,
showBandwidth: false, // showBandwidth: false, //
operateBtns: { operateBtns: {
fullscreen: true, fullscreen: false,
screenshot: false, screenshot: false,
play: false, play: false,
audio: false, audio: false,
}, },
forceNoOffscreen: false, forceNoOffscreen: false,
controlAutoHide:true,
isNotMute: false, isNotMute: false,
}); });
setjessibuca(jessibuca) setjessibuca(jessibuca)

6
code/VideoAccess-VCMP/web/client/src/components/videoPlayer/voiceHeader.jsx

@ -86,8 +86,8 @@ const VideoHeader = ({ operationState, changeSelectState, setProcessDisX, name,
color: '#fff' color: '#fff'
}}> }}>
<Row> <Row>
<Col span={videoStyle == 'true' ? histroyTime.length ? 3 : 0 : 9} style={{ <Col span={videoStyle == 'true' ? histroyTime.length ? 3 : 0 : 9} style={{
backgroundImage: content && content?.length > 0 ? 'url(/assets/images/background/videoPlayBg.png)' : '', backgroundImage: videoStyle == 'true' ? "" : 'url(/assets/images/background/videoPlayBg.png)',
backgroundSize: '100% 100%', backgroundSize: '100% 100%',
backgroundRepeat: 'no-repeat', backgroundRepeat: 'no-repeat',
padding: '0 12px' padding: '0 12px'
@ -103,7 +103,7 @@ const VideoHeader = ({ operationState, changeSelectState, setProcessDisX, name,
'' : `${showTime_} ${name || ''}` '' : `${showTime_} ${name || ''}`
} }
</Col> </Col>
<Col span={videoStyle == 'true' ? histroyTime.length ? 21 : 24 : vcmp_videopla > 480?15:10} style={{}}> <Col span={videoStyle == 'true' ? histroyTime.length ? 21 : 24 : vcmp_videopla > 480 ? 15 : 10} style={{}}>
<div style={{ paddingRight: 12 }}> <div style={{ paddingRight: 12 }}>
{content && content?.length > 0 ? <TextScroll content={content || []} duration={6} videoObj={videoObj} /> : ""} {content && content?.length > 0 ? <TextScroll content={content || []} duration={6} videoObj={videoObj} /> : ""}
</div> </div>

748
code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/cascadeCamera.jsx

@ -8,393 +8,393 @@ import { VideoPlayModal } from "$components";
let equipmentScrollbar; let equipmentScrollbar;
function cascadeCamera ({ dRef, dispatch, actions, cameraData, parentCamera, testComplete, close, ashTrue, ashFalse }) { function cascadeCamera ({ dRef, dispatch, actions, cameraData, parentCamera, testComplete, close, ashTrue, ashFalse }) {
const form = useRef(); const form = useRef();
const { equipmentWarehouse } = actions; const { equipmentWarehouse } = actions;
const [sip, setSip] = useState([]); const [sip, setSip] = useState([]);
const [cascadeList, setCascadeList] = useState([]); //nvr const [cascadeList, setCascadeList] = useState([]); //nvr
const [CheckList, setCheckList] = useState([]); //nvr const [CheckList, setCheckList] = useState([]); //nvr
const [isAllChoose, setIsAllChoose] = useState(false); // const [isAllChoose, setIsAllChoose] = useState(false); //
const [formData, setFormData] = useState() // const [formData, setFormData] = useState() //
const [videoPlay, setVideoPlay] = useState(false);// const [videoPlay, setVideoPlay] = useState(false);//
const [videoObj, setVideoObj] = useState(); // const [videoObj, setVideoObj] = useState(); //
useEffect(() => { useEffect(() => {
dispatch(equipmentWarehouse.getCascadeSIP()).then((res) => { dispatch(equipmentWarehouse.getCascadeSIP()).then((res) => {
setSip(res.payload.data); setSip(res.payload.data);
if (cameraData.id) { if (cameraData.id) {
let sip = res.payload.data.find((item) => item.streamid == cameraData.topSerialNo) let sip = res.payload.data.find((item) => item.streamid == cameraData.topSerialNo)
dispatch(equipmentWarehouse.getCascadeStream({ streamId: sip.streamid })).then((res) => { dispatch(equipmentWarehouse.getCascadeStream({ streamId: sip.streamid })).then((res) => {
let oneData = res.payload.data[0]; let oneData = res.payload.data[0];
let modifyData = res.payload.data.find( let modifyData = res.payload.data.find(
(item) => item.id == cameraData.gbId (item) => item.id == cameraData.gbId
); );
let data = res.payload.data.map((item, index) => { let data = res.payload.data.map((item, index) => {
if (item.camera) { if (item.camera) {
item.name = item.camera.name; item.name = item.camera.name;
} }
if (item.id == cameraData.gbId) { if (item.id == cameraData.gbId) {
item = oneData; item = oneData;
} }
if (index == 0) { if (index == 0) {
item = modifyData; item = modifyData;
} }
return item; return item;
}) })
setCascadeList(data) setCascadeList(data)
setCheckList([data[0].id]) setCheckList([data[0].id])
});
}
});
const videoStreaming = document.getElementById("video_streaming");
if (videoStreaming && equipmentScrollbar) {
equipmentScrollbar.update();
}
}, []);
useEffect(() => {
cascadeList
? (equipmentScrollbar = new PerfectScrollbar("#video_streaming", {
suppressScrollX: true,
}))
: "";
}, [cascadeList]);
useEffect(() => {
//
if (testComplete) {
dispatch(equipmentWarehouse.getCascadeStream({ streamId: formData.streamId })).then((res) => {
let chooseList = [];
let data = res.payload.data.map((item, index) => {
if (item.camera) {
item.name = item.camera.name;
}
return item;
})
setCascadeList(data)
for (let index = 0; index < data.length; index++) {
chooseList.push(data[index].id);
}
setCheckList(chooseList);
setIsAllChoose(true);
}); });
} }
close() });
}, [testComplete]) const videoStreaming = document.getElementById("video_streaming");
if (videoStreaming && equipmentScrollbar) {
equipmentScrollbar.update();
}
}, []);
// useEffect(() => {
const memoryList = [ cascadeList
{ ? (equipmentScrollbar = new PerfectScrollbar("#video_streaming", {
id: 1, suppressScrollX: true,
value: "8g", }))
}, : "";
{ }, [cascadeList]);
id: 2,
value: "16g",
},
{
id: 3,
value: "32g",
},
{
id: 4,
value: "64g",
},
{
id: 5,
value: "128g",
},
{
id: 6,
value: "256g",
},
{
id: 7,
value: ">256g",
},
];
function NvrChangeName (e, index, id) { useEffect(() => {
// //
let NvrchangeList = JSON.parse(JSON.stringify(cascadeList)); if (testComplete) {
if (!cameraData.gbId || cameraData.gbId == id) { dispatch(equipmentWarehouse.getCascadeStream({ streamId: formData.streamId })).then((res) => {
NvrchangeList[index].change = true; let chooseList = [];
setCascadeList(NvrchangeList); let data = res.payload.data.map((item, index) => {
} if (item.camera) {
e.stopPropagation(); item.name = item.camera.name;
} }
function nvronBlur (index) { return item;
//nvr })
let NvrchangeList = JSON.parse(JSON.stringify(cascadeList)); setCascadeList(data)
NvrchangeList[index].change = false; for (let index = 0; index < data.length; index++) {
setCascadeList(NvrchangeList); chooseList.push(data[index].id);
}
function inputchange (e, index) {
//nvr
let NvrchangeList = JSON.parse(JSON.stringify(cascadeList));
NvrchangeList[index].name = e;
setCascadeList(NvrchangeList);
}
function allChoose (e) {
///
let chooseList = [];
if (cascadeList.length == CheckList.length) {
setCheckList([]);
setIsAllChoose(false);
} else {
for (let index = 0; index < cascadeList.length; index++) {
chooseList.push(cascadeList[index].id);
} }
setCheckList(chooseList); setCheckList(chooseList);
setIsAllChoose(true); setIsAllChoose(true);
} });
} }
function playVideo (e, id) { close()
//nvr }, [testComplete])
if (cameraData.gbId == id || !cameraData.gbId) {
let data = cascadeList.find((item) => item.id == id)
setVideoObj({
type: 'cascade',
audio: false,
serialNo: data.streamid,
topSerialNo: cameraData.id ? cameraData.topSerialNo : formData?.streamId,
playUrlSd: data?.playUrl?.liveUrl?.sd["WS-RAW"],
content: data?.camera?.cameraRemarks.map((item) => item.remark),
})
setVideoPlay(true);
}
e.stopPropagation();
}
function onDisabled (id) {
if (id == cameraData.gbId || !cameraData.gbId) {
return false;
} else {
return true;
}
}
useImperativeHandle(dRef, () => ({
//
//
cascadeCameraForm: form.current.validate,
resetCascadeCamera: form.current.reset,
cascadeList: cascadeList.filter((v) =>
CheckList.some((e) => e == v.id)
),
toempty: () => {
setCascadeList([])
}
}));
return (
<>
<Form
labelPosition="left"
labelAlign="left"
labelWidth="115px"
onValueChange={(values) => {
setFormData(values)
let setting = ["externalDomain", "cascadeType", "streamId"]
let b = {}
setting.map((item) => {
if (values.hasOwnProperty(item)) {
return b.true = values.hasOwnProperty(item)
} else {
return b.false = values.hasOwnProperty(item)
}
})
Object.keys(b).length == 1 ? ashTrue() : ashFalse()
}} //
initValues={{ const memoryList = [
externalDomain: cameraData.externalDomain || "" {
}} id: 1,
getFormApi={(formApi) => (form.current = formApi)} value: "8g",
> },
<Row> {
<Col span={12}> id: 2,
<Form.Input value: "16g",
field="externalDomain" },
label="外域名称:" {
maxLength="36" id: 3,
placeholder="请输入外域 名称,例如“xxx市级平台”" value: "32g",
style={{ width: 307 }} },
rules={[{ required: true, message: "请输入外域名称" }]} {
/> id: 4,
</Col> value: "64g",
<Col span={12}> },
<Form.Select {
label="级联方式:" id: 5,
field="cascadeType" value: "128g",
initValue={cameraData.cascadeType || "上级域"} },
style={{ width: 307 }} {
rules={[{ required: true, message: "请选择输入级联方式" }]} id: 6,
> value: "256g",
<Form.Select.Option value="上级域"> },
上级域 {
</Form.Select.Option> id: 7,
</Form.Select> value: ">256g",
</Col> },
<Col span={14}> ];
<Form.Select
label="设备编号:"
field="streamId"
disabled={cameraData.id ? true : false}
initValue={cameraData?.topSerialNo || ""}
placeholder="请选择设备编号"
style={{ width: 307 }}
rules={[{ required: true, message: "请选择设备编号" }]}
>
{sip.map((item, index) => (
<Form.Select.Option key={index} value={item.streamid}>
{item.streamid}
</Form.Select.Option>
))}
</Form.Select>
</Col>
</Row>
<Row>
<div function NvrChangeName (e, index, id) {
id="video_streaming" //
style={{ maxHeight: 300, position: "relative" }} let NvrchangeList = JSON.parse(JSON.stringify(cascadeList));
> if (!cameraData.gbId || cameraData.gbId == id) {
{cascadeList.length > 0 ? ( NvrchangeList[index].change = true;
<div setCascadeList(NvrchangeList);
style={{ display: "flex", justifyContent: "flex-end", marginRight: 50 }} }
> e.stopPropagation();
<Radio }
checked={isAllChoose} function nvronBlur (index) {
mode="advanced" //nvr
disabled={cameraData.gbId ? true : false} let NvrchangeList = JSON.parse(JSON.stringify(cascadeList));
onChange={(e) => allChoose(e)} NvrchangeList[index].change = false;
aria-label="全选" setCascadeList(NvrchangeList);
> }
全选 function inputchange (e, index) {
</Radio> //nvr
</div> let NvrchangeList = JSON.parse(JSON.stringify(cascadeList));
) : ( NvrchangeList[index].name = e;
"" setCascadeList(NvrchangeList);
)} }
<CheckboxGroup function allChoose (e) {
type="pureCard" ///
direction="vertical" let chooseList = [];
aria-label="视频流获取" if (cascadeList.length == CheckList.length) {
value={CheckList} setCheckList([]);
onChange={(nvrCheck) => { setIsAllChoose(false);
setCheckList(nvrCheck); } else {
if (cascadeList.length == nvrCheck.length) { for (let index = 0; index < cascadeList.length; index++) {
setIsAllChoose(true); chooseList.push(cascadeList[index].id);
} else { }
setIsAllChoose(false); setCheckList(chooseList);
} setIsAllChoose(true);
}}> }
{cascadeList.length > 0 }
? cascadeList.map((item, index) => ( function playVideo (e, id) {
<Col //nvr
key={index} if (cameraData.gbId == id || !cameraData.gbId) {
span={12} let data = cascadeList.find((item) => item.id == id)
style={{ setVideoObj({
display: "flex", type: 'cascade',
justifyContent: "center", audio: false,
marginTop: 12, serialNo: data.streamid,
}} topSerialNo: cameraData.id ? cameraData.topSerialNo : formData?.streamId,
> playUrlSd: data?.playUrl?.liveUrl?.sd["WS-RAW"],
<Checkbox content: data?.camera?.cameraRemarks.map((item) => item.remark),
value={item.id} })
disabled={onDisabled(item.id)} setVideoPlay(true);
extra={ }
<div> e.stopPropagation();
<div }
style={{ function onDisabled (id) {
display: "flex", if (id == cameraData.gbId || !cameraData.gbId) {
alignItems: "center", return false;
justifyContent: "space-between", } else {
height: 30, return true;
}} }
> }
<div>
通道名称
{item.change ? (
<Input
autofocus
style={{ width: 100 }}
value={item.name}
onChange={(e) => inputchange(e, index)}
onBlur={() => nvronBlur(index)}
onClick={(e) => e.stopPropagation()}
></Input>
) : (
item.name
)}
</div>
<div
style={{
display: "flex",
alignItems: "center",
}}
>
<IconEdit
style={{
fontSize: 16,
marginLeft: 18,
cursor: "pointer",
color: "#1859C1",
}}
onClick={(e) =>
NvrChangeName(e, index, item.id)
}
/>
</div>
</div>
<div style={{ marginTop: 8, width: 246 }}>
设备编号{item.streamid}
</div>
<div
style={{
marginTop: 12,
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<IconPlayCircle
size="extra-large"
style={{ color: "#1859C1" }}
onClick={(e) => playVideo(e, item.id)}
/>
</div>
</div>
}
style={{ width: 280, border: "1px solid #F9F9F9" }}
></Checkbox>
</Col>
))
: ""}
</CheckboxGroup>
</div>
</Row> useImperativeHandle(dRef, () => ({
</Form> //
{videoPlay ? //
<VideoPlayModal cascadeCameraForm: form.current.validate,
visible={true} resetCascadeCamera: form.current.reset,
videoObj={videoObj} cascadeList: cascadeList.filter((v) =>
close={() => { CheckList.some((e) => e == v.id)
setVideoPlay(false) ),
}} /> toempty: () => {
: "" setCascadeList([])
} }
</> }));
); return (
<>
<Form
labelPosition="left"
labelAlign="left"
labelWidth="115px"
onValueChange={(values) => {
setFormData(values)
let setting = ["externalDomain", "cascadeType", "streamId"]
let b = {}
setting.map((item) => {
if (values.hasOwnProperty(item)) {
return b.true = values.hasOwnProperty(item)
} else {
return b.false = values.hasOwnProperty(item)
}
})
Object.keys(b).length == 1 ? ashTrue() : ashFalse()
}}
initValues={{
externalDomain: cameraData.externalDomain || ""
}}
getFormApi={(formApi) => (form.current = formApi)}
>
<Row>
<Col span={12}>
<Form.Input
field="externalDomain"
label="外域名称:"
maxLength="36"
placeholder="请输入外域 名称,例如“xxx市级平台”"
style={{ width: 307 }}
rules={[{ required: true, message: "请输入外域名称" }]}
/>
</Col>
<Col span={12}>
<Form.Select
label="级联方式:"
field="cascadeType"
initValue={cameraData.cascadeType || "上级域"}
style={{ width: 307 }}
rules={[{ required: true, message: "请选择输入级联方式" }]}
>
<Form.Select.Option value="上级域">
上级域
</Form.Select.Option>
</Form.Select>
</Col>
<Col span={14}>
<Form.Select
label="设备编号:"
field="streamId"
disabled={cameraData.id ? true : false}
initValue={cameraData?.topSerialNo || ""}
placeholder="请选择设备编号"
style={{ width: 307 }}
rules={[{ required: true, message: "请选择设备编号" }]}
>
{sip.map((item, index) => (
<Form.Select.Option key={index} value={item.streamid}>
{item.streamid}
</Form.Select.Option>
))}
</Form.Select>
</Col>
</Row>
<Row>
<div
id="video_streaming"
style={{ maxHeight: 300, position: "relative" }}
>
{cascadeList.length > 0 ? (
<div
style={{ display: "flex", justifyContent: "flex-end", marginRight: 50 }}
>
<Radio
checked={isAllChoose}
mode="advanced"
disabled={cameraData.gbId ? true : false}
onChange={(e) => allChoose(e)}
aria-label="全选"
>
全选
</Radio>
</div>
) : (
""
)}
<CheckboxGroup
type="pureCard"
direction="vertical"
aria-label="视频流获取"
value={CheckList}
onChange={(nvrCheck) => {
setCheckList(nvrCheck);
if (cascadeList.length == nvrCheck.length) {
setIsAllChoose(true);
} else {
setIsAllChoose(false);
}
}}>
{cascadeList.length > 0
? cascadeList.map((item, index) => (
<Col
key={index}
span={12}
style={{
display: "flex",
justifyContent: "center",
marginTop: 12,
}}
>
<Checkbox
value={item.id}
disabled={onDisabled(item.id)}
extra={
<div>
<div
style={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
height: 30,
}}
>
<div>
通道名称
{item.change ? (
<Input
autofocus
style={{ width: 100 }}
value={item.name}
onChange={(e) => inputchange(e, index)}
onBlur={() => nvronBlur(index)}
onClick={(e) => e.stopPropagation()}
></Input>
) : (
item.name
)}
</div>
<div
style={{
display: "flex",
alignItems: "center",
}}
>
<IconEdit
style={{
fontSize: 16,
marginLeft: 18,
cursor: "pointer",
color: "#1859C1",
}}
onClick={(e) =>
NvrChangeName(e, index, item.id)
}
/>
</div>
</div>
<div style={{ marginTop: 8, width: 246 }}>
设备编号{item.streamid}
</div>
<div
style={{
marginTop: 12,
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<IconPlayCircle
size="extra-large"
style={{ color: "#1859C1" }}
onClick={(e) => playVideo(e, item.id)}
/>
</div>
</div>
}
style={{ width: 280, border: "1px solid #F9F9F9" }}
></Checkbox>
</Col>
))
: ""}
</CheckboxGroup>
</div>
</Row>
</Form>
{videoPlay ?
<VideoPlayModal
visible={true}
videoObj={videoObj}
close={() => {
setVideoPlay(false)
}} />
: ""
}
</>
);
} }
function mapStateToProps (state) { function mapStateToProps (state) {
const { auth, global, members } = state; const { auth, global, members } = state;
return { return {
loading: members.isRequesting, loading: members.isRequesting,
user: auth.user, user: auth.user,
actions: global.actions, actions: global.actions,
members: members.data, members: members.data,
}; };
} }
export default connect(mapStateToProps)(cascadeCamera); export default connect(mapStateToProps)(cascadeCamera);

6
code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/fluoriteCamera.jsx

@ -96,7 +96,7 @@ function fluoriteCamera ({ cRef, CameraKind, CameraAbility, cameraData, ashTrue,
}} }}
initValues={{ initValues={{
name: cameraData.name || "", name: cameraData.name || "",
highDefinition: cameraData?.highDefinition || "", highDefinition: cameraData?.highDefinition,
memoryCard: cameraData.memoryCard || "", memoryCard: cameraData.memoryCard || "",
position: cameraData.longitude position: cameraData.longitude
? `${cameraData.longitude},${cameraData.latitude}` ? `${cameraData.longitude},${cameraData.latitude}`
@ -106,8 +106,8 @@ function fluoriteCamera ({ cRef, CameraKind, CameraAbility, cameraData, ashTrue,
? cameraData.cameraAbilities.map((item) => item.id) ? cameraData.cameraAbilities.map((item) => item.id)
: "" : ""
, ,
cloudControl: cameraData.cloudControl || "", cloudControl: cameraData.cloudControl,
voice: cameraData.voice || "", voice: cameraData.voice,
serialNo: cameraData.serialNo || "", serialNo: cameraData.serialNo || "",
channelNo: cameraData.channelNo || "", channelNo: cameraData.channelNo || "",
// rtmp: cameraData.rtmp || "", // rtmp: cameraData.rtmp || "",

4
code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/ipcCamera.jsx

@ -109,9 +109,9 @@ function ipcCamera ({
: "", : "",
kindId: cameraData.kindId || "", kindId: cameraData.kindId || "",
abilityId: cameraData.cameraAbilities ? cameraData.cameraAbilities.map((item) => item.id) : "", abilityId: cameraData.cameraAbilities ? cameraData.cameraAbilities.map((item) => item.id) : "",
cloudControl: cameraData.cloudControl || "", cloudControl: cameraData.cloudControl,
voice: cameraData.voice || "", voice: cameraData.voice || "",
serialNo: cameraData.serialNo || "", serialNo: cameraData.serialNo,
rtmp: "此处无效 自动生成", rtmp: "此处无效 自动生成",
// rtmp: cameraData.rtmp || "", // rtmp: cameraData.rtmp || "",
}} }}

5
code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/sideSheet.jsx

@ -138,6 +138,7 @@ function SideSheets (props) {
rowId rowId
) )
).then((res) => { ).then((res) => {
if(res?.success){
setNvrDetails(res.payload.data); setNvrDetails(res.payload.data);
projectScrollbar = new PerfectScrollbar("#project_information", { projectScrollbar = new PerfectScrollbar("#project_information", {
suppressScrollX: true, suppressScrollX: true,
@ -146,6 +147,8 @@ function SideSheets (props) {
suppressScrollX: true, suppressScrollX: true,
}); });
}
}); });
}, []); }, []);
@ -180,7 +183,7 @@ function SideSheets (props) {
<SideSheet <SideSheet
visible={visible} visible={visible}
title={cameraSetup ? title={cameraSetup ?
<><img src={`/assets/images/background/${nvrDetails.forbidden ? "red" : colorStatus(statusNvr ? statusCamera.online : "")}.png`} style={{ marginRight: "10px" }} />{nvrDetails?.name}</> <><img src={`/assets/images/background/${nvrDetails.forbidden ? "red" : colorStatus(statusNvr ? statusCamera?.online : "")}.png`} style={{ marginRight: "10px" }} />{nvrDetails?.name}</>
: <><img src={`/assets/images/background/${colorStatus(statusCamera ? statusNvr.online : "")}.png`} style={{ marginRight: "10px" }} />{nvrDetails?.name}</> : <><img src={`/assets/images/background/${colorStatus(statusCamera ? statusNvr.online : "")}.png`} style={{ marginRight: "10px" }} />{nvrDetails?.name}</>
} }
style={{ background: "#F9FBFF" }} style={{ background: "#F9FBFF" }}

2
code/VideoAccess-VCMP/web/package.json

@ -7,7 +7,7 @@
"test": "mocha", "test": "mocha",
"start-vite": "cross-env NODE_ENV=developmentVite npm run start-params", "start-vite": "cross-env NODE_ENV=developmentVite npm run start-params",
"start": "cross-env NODE_ENV=development 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://localhost:4000 --apiVcmpUrl http://localhost:4000 --apiAuthUrl http://localhost:4200 --apiAnxinyunUrl http://localhost:4100 --iotAuthWeb http://localhost:5200 --iotVideoServer http://iotmedia.anxinyun.cn",
"deploy": "export NODE_ENV=production&& npm run build && node server", "deploy": "export NODE_ENV=production&& npm run build && node server",
"build-dev": "cross-env NODE_ENV=development&&webpack --config webpack.config.js", "build-dev": "cross-env NODE_ENV=development&&webpack --config webpack.config.js",
"build": "cross-env NODE_ENV=production&&webpack --config webpack.config.prod.js" "build": "cross-env NODE_ENV=production&&webpack --config webpack.config.prod.js"

Loading…
Cancel
Save