|
|
@ -8,495 +8,515 @@ import IpcCamera from "./ipcCamera"; |
|
|
|
import CascadeCamera from "./cascadeCamera"; |
|
|
|
import "./cameraModal.less"; |
|
|
|
|
|
|
|
function cameraModal(props) { |
|
|
|
const { |
|
|
|
dispatch, |
|
|
|
actions, |
|
|
|
modalName, |
|
|
|
visible, |
|
|
|
close, |
|
|
|
venderList, |
|
|
|
CameraKind, |
|
|
|
CameraAbility, |
|
|
|
cameraData, //修改时传来的值 |
|
|
|
} = props; |
|
|
|
const { equipmentWarehouse } = actions; |
|
|
|
const fluoriteRef = useRef(); |
|
|
|
const ipcRef = useRef(); |
|
|
|
const cascadeRef = useRef(); |
|
|
|
const nvrRef = useRef(); |
|
|
|
const [isloading, setloading] = useState(false); //是否显示loading |
|
|
|
const [loadingTip, setloadingTip] = useState("获取中...请稍后..."); //loading tip的值 |
|
|
|
const [okText, setokText] = useState("确定"); //ok弹框text 右边 |
|
|
|
const [cancelText, setcancelText] = useState("取消"); //取消弹框text 左边 |
|
|
|
const [clickNum, setclickNum] = useState( |
|
|
|
cameraData.type == "yingshi" |
|
|
|
? 1 |
|
|
|
: cameraData.type == "ipc" |
|
|
|
? 3 |
|
|
|
: cameraData.type == "nvr" |
|
|
|
? 2 |
|
|
|
: cameraData.type == "cascade" |
|
|
|
? 4 |
|
|
|
: 1 |
|
|
|
); //点击的第几个 |
|
|
|
function cameraModal (props) { |
|
|
|
const { |
|
|
|
dispatch, |
|
|
|
actions, |
|
|
|
modalName, |
|
|
|
visible, |
|
|
|
close, |
|
|
|
venderList, |
|
|
|
CameraKind, |
|
|
|
CameraAbility, |
|
|
|
cameraData, //修改时传来的值 |
|
|
|
modify, |
|
|
|
parentCamera |
|
|
|
} = props; |
|
|
|
const { equipmentWarehouse } = actions; |
|
|
|
const fluoriteRef = useRef(); |
|
|
|
const ipcRef = useRef(); |
|
|
|
const cascadeRef = useRef(); |
|
|
|
const nvrRef = useRef(); |
|
|
|
const [isloading, setloading] = useState(false); //是否显示loading |
|
|
|
const [loadingTip, setloadingTip] = useState("获取中...请稍后..."); //loading tip的值 |
|
|
|
const [okText, setokText] = useState("确定"); //ok弹框text 右边 |
|
|
|
const [cancelText, setcancelText] = useState("取消"); //取消弹框text 左边 |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
dispatch(equipmentWarehouse.getCameraKind()); |
|
|
|
dispatch(equipmentWarehouse.getAbility()); |
|
|
|
cameraData.type == "nvr" ? setcameraList(cameraList.slice(1, 4)) : ""; |
|
|
|
}, []); |
|
|
|
const cameraList = [ |
|
|
|
//循环摄像头列表 |
|
|
|
{ |
|
|
|
id: 1, |
|
|
|
img: "/assets/images/background/ysy.png", |
|
|
|
title: "萤石云平台摄像头", |
|
|
|
text: "通过萤石云平台rtmp地址配置完成推流的平台摄像头。", |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 3, |
|
|
|
img: "/assets/images/background/ipc.png", |
|
|
|
title: "IPC网络摄像头", |
|
|
|
text: "通过网络与监控设备直连完成视频流推送的摄像头设备", |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 4, |
|
|
|
img: "/assets/images/background/cascade.png", |
|
|
|
title: "级联摄像头", |
|
|
|
text: "通过GB/T28181协议级联的平台摄像头,常用于平台对接推送", |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 2, |
|
|
|
img: "/assets/images/background/nvr.png", |
|
|
|
title: "NVR摄像头", |
|
|
|
text: "通过连接NVR(网络硬盘录像机)进行视频流推送的摄像头", |
|
|
|
}, |
|
|
|
]; |
|
|
|
const [showcameraList, setcameraList] = useState(cameraList.slice(0, 3)); //轮播图 |
|
|
|
function handleOk() { |
|
|
|
//点击弹框确定 右边按钮 |
|
|
|
if (clickNum == 1) { |
|
|
|
//萤石云平台摄像头 |
|
|
|
fluoriteRef.current.fluoriteCameraForm().then((values) => { |
|
|
|
values = JSON.parse(JSON.stringify(values)); |
|
|
|
values.longitude = values.position.split(",")[0]; |
|
|
|
values.latitude = values.position.split(",")[1]; |
|
|
|
delete values.position; |
|
|
|
if (cameraData.id) { |
|
|
|
values.id = cameraData.id; |
|
|
|
const [clickNum, setclickNum] = useState( |
|
|
|
cameraData.type == "yingshi" |
|
|
|
? 1 |
|
|
|
: cameraData.type == "ipc" |
|
|
|
? 3 |
|
|
|
: cameraData.type == "nvr" |
|
|
|
? 2 |
|
|
|
: cameraData.type == "cascade" |
|
|
|
? 4 |
|
|
|
: 1 |
|
|
|
); //点击的第几个 |
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
dispatch(equipmentWarehouse.getCameraKind()); |
|
|
|
dispatch(equipmentWarehouse.getAbility()); |
|
|
|
cameraData.type == "nvr" ? setcameraList(cameraList.slice(1, 4)) : ""; |
|
|
|
}, []); |
|
|
|
const cameraList = [ |
|
|
|
//循环摄像头列表 |
|
|
|
{ |
|
|
|
id: 1, |
|
|
|
img: "/assets/images/background/ysy.png", |
|
|
|
title: "萤石云平台摄像头", |
|
|
|
text: "通过萤石云平台rtmp地址配置完成推流的平台摄像头。", |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 3, |
|
|
|
img: "/assets/images/background/ipc.png", |
|
|
|
title: "IPC网络摄像头", |
|
|
|
text: "通过网络与监控设备直连完成视频流推送的摄像头设备", |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 4, |
|
|
|
img: "/assets/images/background/cascade.png", |
|
|
|
title: "级联摄像头", |
|
|
|
text: "通过GB/T28181协议级联的平台摄像头,常用于平台对接推送", |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 2, |
|
|
|
img: "/assets/images/background/nvr.png", |
|
|
|
title: "NVR摄像头", |
|
|
|
text: "通过连接NVR(网络硬盘录像机)进行视频流推送的摄像头", |
|
|
|
}, |
|
|
|
]; |
|
|
|
const [showcameraList, setcameraList] = useState(cameraList.slice(0, 3)); //轮播图 |
|
|
|
function handleOk () { |
|
|
|
//点击弹框确定 右边按钮 |
|
|
|
if (clickNum == 1) { |
|
|
|
//萤石云平台摄像头 |
|
|
|
fluoriteRef.current.fluoriteCameraForm().then((values) => { |
|
|
|
values = JSON.parse(JSON.stringify(values)); |
|
|
|
values.longitude = values.position.split(",")[0]; |
|
|
|
values.latitude = values.position.split(",")[1]; |
|
|
|
delete values.position; |
|
|
|
if (cameraData.id) { |
|
|
|
values.id = cameraData.id; |
|
|
|
} |
|
|
|
dispatch(equipmentWarehouse.postCameraYingshi(values)).then((res) => { |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else if (clickNum == 2) { |
|
|
|
//NVR摄像头 |
|
|
|
let data = nvrRef.current.NVRcameraList.map((v) => { |
|
|
|
return { streamid: v.streamid, name: v.name, cloudControl: v.support }; |
|
|
|
}); |
|
|
|
dispatch( |
|
|
|
equipmentWarehouse.postCameraNvr({ |
|
|
|
serialNo: nvrRef.current.equipmentNum, |
|
|
|
data: data, |
|
|
|
}) |
|
|
|
).then((res) => { |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
//IPC网络摄像头 |
|
|
|
ipcRef.current.ipcCameraForm().then((values) => { |
|
|
|
values = JSON.parse(JSON.stringify(values)); |
|
|
|
values.longitude = values.position.split(",")[0]; |
|
|
|
values.latitude = values.position.split(",")[1]; |
|
|
|
delete values.position; |
|
|
|
if (cameraData.id) { |
|
|
|
values.id = cameraData.id; |
|
|
|
} |
|
|
|
console.log(values); |
|
|
|
dispatch(equipmentWarehouse.postCameraIpc(values)).then((res) => { |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
//级联摄像头 |
|
|
|
cascadeRef.current.cascadeCameraForm().then((values) => { |
|
|
|
console.log(values); |
|
|
|
dispatch(equipmentWarehouse.postAddCascade(values)).then((res) => { |
|
|
|
console.log(res); |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
dispatch(equipmentWarehouse.postCameraYingshi(values)).then((res) => { |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else if (clickNum == 2) { |
|
|
|
//NVR摄像头 |
|
|
|
let data = nvrRef.current.NVRcameraList.map((v) => { |
|
|
|
return { streamid: v.streamid, name: v.name, cloudControl: v.support }; |
|
|
|
}); |
|
|
|
dispatch( |
|
|
|
equipmentWarehouse.postCameraNvr({ |
|
|
|
serialNo: nvrRef.current.equipmentNum, |
|
|
|
data: data, |
|
|
|
}) |
|
|
|
).then((res) => { |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
function handleAfterClose () { |
|
|
|
//在关闭之后 |
|
|
|
} |
|
|
|
function handleCancel () { |
|
|
|
onReset(); |
|
|
|
//点击弹框取消 左边按钮 |
|
|
|
} |
|
|
|
function handleChoose (id) { |
|
|
|
//选择摄像头接入类型 |
|
|
|
if (!modify) { |
|
|
|
setclickNum(id); |
|
|
|
} |
|
|
|
}); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
//IPC网络摄像头 |
|
|
|
ipcRef.current.ipcCameraForm().then((values) => { |
|
|
|
values = JSON.parse(JSON.stringify(values)); |
|
|
|
values.longitude = values.position.split(",")[0]; |
|
|
|
values.latitude = values.position.split(",")[1]; |
|
|
|
delete values.position; |
|
|
|
if (cameraData.id) { |
|
|
|
values.id = cameraData.id; |
|
|
|
|
|
|
|
} |
|
|
|
function turnLift () { |
|
|
|
//轮播图向左 |
|
|
|
if (!modify) { |
|
|
|
setcameraList(cameraList.slice(0, 3)); |
|
|
|
} |
|
|
|
console.log(values); |
|
|
|
dispatch(equipmentWarehouse.postCameraIpc(values)).then((res) => { |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
//级联摄像头 |
|
|
|
cascadeRef.current.cascadeCameraForm().then((values) => { |
|
|
|
console.log(values); |
|
|
|
dispatch(equipmentWarehouse.postAddCascade(values)).then((res) => { |
|
|
|
console.log(res); |
|
|
|
if (res.success) { |
|
|
|
onReset(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
function handleAfterClose() { |
|
|
|
//在关闭之后 |
|
|
|
} |
|
|
|
function handleCancel() { |
|
|
|
onReset(); |
|
|
|
//点击弹框取消 左边按钮 |
|
|
|
} |
|
|
|
function handleChoose(id) { |
|
|
|
//选择摄像头接入类型 |
|
|
|
setclickNum(id); |
|
|
|
} |
|
|
|
function turnLift() { |
|
|
|
//轮播图向左 |
|
|
|
setcameraList(cameraList.slice(0, 3)); |
|
|
|
} |
|
|
|
function turnRight() { |
|
|
|
//轮播图向右 |
|
|
|
setcameraList(cameraList.slice(1, 4)); |
|
|
|
} |
|
|
|
function onReset() { |
|
|
|
if (clickNum == 1) { |
|
|
|
fluoriteRef.current.resetFluoriteCamera(); |
|
|
|
fluoriteRef.current.toempty(); |
|
|
|
close(); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
ipcRef.current.resetIpcCamera(); |
|
|
|
ipcRef.current.toempty(); |
|
|
|
close(); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
cascadeRef.current.resetCascadeCamera(); |
|
|
|
close(); |
|
|
|
} else { |
|
|
|
nvrRef.current.resetFluoriteCamera(); |
|
|
|
close(); |
|
|
|
function turnRight () { |
|
|
|
//轮播图向右 |
|
|
|
if (!modify) { |
|
|
|
setcameraList(cameraList.slice(1, 4)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//重置 |
|
|
|
function reset() { |
|
|
|
if (clickNum == 1) { |
|
|
|
fluoriteRef.current.resetFluoriteCamera(); |
|
|
|
fluoriteRef.current.toempty(); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
ipcRef.current.resetIpcCamera(); |
|
|
|
ipcRef.current.toempty(); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
cascadeRef.current.resetCascadeCamera(); |
|
|
|
} else { |
|
|
|
nvrRef.current.resetFluoriteCamera(); |
|
|
|
function onReset () { |
|
|
|
if (clickNum == 1) { |
|
|
|
fluoriteRef.current.resetFluoriteCamera(); |
|
|
|
fluoriteRef.current.toempty(); |
|
|
|
close(); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
ipcRef.current.resetIpcCamera(); |
|
|
|
ipcRef.current.toempty(); |
|
|
|
close(); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
cascadeRef.current.resetCascadeCamera(); |
|
|
|
close(); |
|
|
|
} else { |
|
|
|
nvrRef.current.resetFluoriteCamera(); |
|
|
|
close(); |
|
|
|
} |
|
|
|
} |
|
|
|
//重置 |
|
|
|
function reset () { |
|
|
|
if (clickNum == 1) { |
|
|
|
fluoriteRef.current.resetFluoriteCamera(); |
|
|
|
fluoriteRef.current.toempty(); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
ipcRef.current.resetIpcCamera(); |
|
|
|
ipcRef.current.toempty(); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
cascadeRef.current.resetCascadeCamera(); |
|
|
|
} else { |
|
|
|
nvrRef.current.resetFluoriteCamera(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function toTest() { |
|
|
|
if (clickNum == 1) { |
|
|
|
fluoriteRef.current |
|
|
|
.fluoriteCameraForm() |
|
|
|
.then((values) => { |
|
|
|
//表单校验成功 |
|
|
|
console.log("111111111", values); |
|
|
|
}) |
|
|
|
.catch((errors) => { |
|
|
|
//表单校验失败 |
|
|
|
console.log("errors", errors); |
|
|
|
}); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
ipcRef.current |
|
|
|
.ipcCameraForm() |
|
|
|
.then((values) => { |
|
|
|
//表单校验成功 |
|
|
|
console.log("111111111", values); |
|
|
|
}) |
|
|
|
.catch((errors) => { |
|
|
|
//表单校验失败 |
|
|
|
console.log("errors", errors); |
|
|
|
}); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
cascadeRef.current |
|
|
|
.cascadeCameraForm() |
|
|
|
.then((values) => { |
|
|
|
//表单校验成功 |
|
|
|
let chooseList = []; |
|
|
|
let nvrCameraList = [ |
|
|
|
{ |
|
|
|
id: 10, |
|
|
|
name: "南昌县1", |
|
|
|
number: "111111111111111111", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 20, |
|
|
|
name: "南昌县2", |
|
|
|
number: "222222222222222222", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 30, |
|
|
|
name: "南昌县3", |
|
|
|
number: "333333333333333333", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 40, |
|
|
|
name: "南昌县4", |
|
|
|
number: "444444444444444444", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
]; |
|
|
|
cascadeRef.current.setNVRcameraList(nvrCameraList); |
|
|
|
for (let index = 0; index < nvrCameraList.length; index++) { |
|
|
|
chooseList.push(nvrCameraList[index].id); |
|
|
|
} |
|
|
|
cascadeRef.current.setNvrCheckList(chooseList); |
|
|
|
cascadeRef.current.setIsAllChoose(true); |
|
|
|
}) |
|
|
|
.catch((errors) => { |
|
|
|
//表单校验失败 |
|
|
|
console.log("errors", errors); |
|
|
|
}); |
|
|
|
function toTest () { |
|
|
|
if (clickNum == 1) { |
|
|
|
fluoriteRef.current |
|
|
|
.fluoriteCameraForm() |
|
|
|
.then((values) => { |
|
|
|
//表单校验成功 |
|
|
|
console.log("111111111", values); |
|
|
|
}) |
|
|
|
.catch((errors) => { |
|
|
|
//表单校验失败 |
|
|
|
console.log("errors", errors); |
|
|
|
}); |
|
|
|
} else if (clickNum == 3) { |
|
|
|
ipcRef.current |
|
|
|
.ipcCameraForm() |
|
|
|
.then((values) => { |
|
|
|
//表单校验成功 |
|
|
|
console.log("111111111", values); |
|
|
|
}) |
|
|
|
.catch((errors) => { |
|
|
|
//表单校验失败 |
|
|
|
console.log("errors", errors); |
|
|
|
}); |
|
|
|
} else if (clickNum == 4) { |
|
|
|
cascadeRef.current |
|
|
|
.cascadeCameraForm() |
|
|
|
.then((values) => { |
|
|
|
//表单校验成功 |
|
|
|
let chooseList = []; |
|
|
|
let nvrCameraList = [ |
|
|
|
{ |
|
|
|
id: 10, |
|
|
|
name: "南昌县1", |
|
|
|
number: "111111111111111111", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 20, |
|
|
|
name: "南昌县2", |
|
|
|
number: "222222222222222222", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 30, |
|
|
|
name: "南昌县3", |
|
|
|
number: "333333333333333333", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: 40, |
|
|
|
name: "南昌县4", |
|
|
|
number: "444444444444444444", |
|
|
|
support: false, |
|
|
|
change: false, |
|
|
|
}, |
|
|
|
]; |
|
|
|
cascadeRef.current.setNVRcameraList(nvrCameraList); |
|
|
|
for (let index = 0; index < nvrCameraList.length; index++) { |
|
|
|
chooseList.push(nvrCameraList[index].id); |
|
|
|
} |
|
|
|
cascadeRef.current.setNvrCheckList(chooseList); |
|
|
|
cascadeRef.current.setIsAllChoose(true); |
|
|
|
}) |
|
|
|
.catch((errors) => { |
|
|
|
//表单校验失败 |
|
|
|
console.log("errors", errors); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return ( |
|
|
|
<> |
|
|
|
<Modal |
|
|
|
title={modalName == "add" ? "添加摄像头" : "修改摄像头"} |
|
|
|
okText={okText} |
|
|
|
cancelText={cancelText} //取消按钮 |
|
|
|
visible={visible} |
|
|
|
onOk={handleOk} |
|
|
|
width={966} |
|
|
|
afterClose={handleAfterClose} |
|
|
|
onCancel={handleCancel} |
|
|
|
> |
|
|
|
<Spin tip={loadingTip} spinning={isloading}> |
|
|
|
<div |
|
|
|
style={{ marginLeft: "-24px", marginRight: "-24px", marginTop: 8 }} |
|
|
|
> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginLeft: 29, |
|
|
|
color: "#1859C1", |
|
|
|
fontSize: 14, |
|
|
|
fontWeight: 500, |
|
|
|
}} |
|
|
|
return ( |
|
|
|
<> |
|
|
|
<Modal |
|
|
|
title={modalName == "add" ? "添加摄像头" : "修改摄像头"} |
|
|
|
okText={okText} |
|
|
|
cancelText={cancelText} //取消按钮 |
|
|
|
visible={visible} |
|
|
|
onOk={handleOk} |
|
|
|
width={966} |
|
|
|
afterClose={handleAfterClose} |
|
|
|
onCancel={handleCancel} |
|
|
|
> |
|
|
|
接入类型 |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginTop: 5, |
|
|
|
display: "flex", |
|
|
|
alignItems: "center", |
|
|
|
justifyContent: "space-between", |
|
|
|
}} |
|
|
|
> |
|
|
|
<IconChevronLeft |
|
|
|
style={{ |
|
|
|
color: "rgba(0, 0, 0, 0.45)", |
|
|
|
fontSize: 16, |
|
|
|
marginLeft: 29, |
|
|
|
cursor: "pointer", |
|
|
|
}} |
|
|
|
onClick={turnLift} |
|
|
|
/> |
|
|
|
<div |
|
|
|
style={{ display: "flex", alignItems: "center", height: 146 }} |
|
|
|
> |
|
|
|
{showcameraList.map((item, index) => ( |
|
|
|
<div |
|
|
|
key={item.id} |
|
|
|
style={{ |
|
|
|
width: 266, |
|
|
|
height: 146, |
|
|
|
marginRight: 12, |
|
|
|
border: |
|
|
|
clickNum === item.id |
|
|
|
? "1px solid #1859C1" |
|
|
|
: "1px solid #F9F9F9", |
|
|
|
borderRadius: 3, |
|
|
|
display: "flex", |
|
|
|
flexDirection: "column", |
|
|
|
alignItems: "center", |
|
|
|
cursor: "pointer", |
|
|
|
position: "relative", |
|
|
|
}} |
|
|
|
onClick={() => handleChoose(item.id)} |
|
|
|
> |
|
|
|
<Spin tip={loadingTip} spinning={isloading}> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginTop: 5, |
|
|
|
height: 65, |
|
|
|
width: 116, |
|
|
|
display: "flex", |
|
|
|
justifyContent: "center", |
|
|
|
alignItems: "center", |
|
|
|
}} |
|
|
|
style={{ marginLeft: "-24px", marginRight: "-24px", marginTop: 8 }} |
|
|
|
> |
|
|
|
<img src={item.img} alt="设置" /> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginLeft: 29, |
|
|
|
color: "#1859C1", |
|
|
|
fontSize: 14, |
|
|
|
fontWeight: 500, |
|
|
|
}} |
|
|
|
> |
|
|
|
接入类型 |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginTop: 5, |
|
|
|
display: "flex", |
|
|
|
alignItems: "center", |
|
|
|
justifyContent: "space-between", |
|
|
|
}} |
|
|
|
> |
|
|
|
<IconChevronLeft |
|
|
|
style={{ |
|
|
|
color: "rgba(0, 0, 0, 0.45)", |
|
|
|
fontSize: 16, |
|
|
|
marginLeft: 29, |
|
|
|
cursor: "pointer", |
|
|
|
}} |
|
|
|
onClick={turnLift} |
|
|
|
/> |
|
|
|
<div |
|
|
|
style={{ display: "flex", alignItems: "center", height: 146 }} |
|
|
|
> |
|
|
|
{showcameraList.map((item, index) => ( |
|
|
|
<div |
|
|
|
key={item.id} |
|
|
|
style={{ |
|
|
|
width: 266, |
|
|
|
height: 146, |
|
|
|
marginRight: 12, |
|
|
|
border: |
|
|
|
clickNum === item.id |
|
|
|
? "1px solid #1859C1" |
|
|
|
: "1px solid #F9F9F9", |
|
|
|
borderRadius: 3, |
|
|
|
display: "flex", |
|
|
|
flexDirection: "column", |
|
|
|
alignItems: "center", |
|
|
|
cursor: "pointer", |
|
|
|
position: "relative", |
|
|
|
}} |
|
|
|
onClick={() => handleChoose(item.id)} |
|
|
|
> |
|
|
|
{modify ? item.id == clickNum ? "" : <div style={{ |
|
|
|
width: 266, |
|
|
|
height: 146, |
|
|
|
borderRadius: 3, |
|
|
|
backgroundColor: "rgba(151, 151, 151, 0.1)", |
|
|
|
position: "absolute", |
|
|
|
top: 0, |
|
|
|
}}></div> : ""} |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginTop: 5, |
|
|
|
height: 65, |
|
|
|
width: 116, |
|
|
|
display: "flex", |
|
|
|
justifyContent: "center", |
|
|
|
alignItems: "center", |
|
|
|
}} |
|
|
|
> |
|
|
|
<img src={item.img} alt="设置" /> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginTop: 2, |
|
|
|
fontSize: 14, |
|
|
|
color: "rgba(0, 0, 0, 0.85)", |
|
|
|
}} |
|
|
|
> |
|
|
|
{item.title} |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
width: 210, |
|
|
|
height: 34, |
|
|
|
marginTop: 9, |
|
|
|
fontSize: 12, |
|
|
|
color: "rgba(0, 0, 0, 0.45)", |
|
|
|
textAlign: "center", |
|
|
|
}} |
|
|
|
> |
|
|
|
{item.text} |
|
|
|
</div> |
|
|
|
{clickNum === item.id ? ( |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
position: "absolute", |
|
|
|
top: "-3px", |
|
|
|
right: "-5px", |
|
|
|
}} |
|
|
|
> |
|
|
|
<img |
|
|
|
src="/assets/images/background/topchoose.png" |
|
|
|
alt="1" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
) : ( |
|
|
|
"" |
|
|
|
)} |
|
|
|
</div> |
|
|
|
|
|
|
|
))} |
|
|
|
|
|
|
|
</div> |
|
|
|
<IconChevronRight |
|
|
|
style={{ |
|
|
|
color: "rgba(0, 0, 0, 0.45)", |
|
|
|
fontSize: 16, |
|
|
|
marginRight: 18, |
|
|
|
cursor: "pointer", |
|
|
|
}} |
|
|
|
onClick={turnRight} |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginTop: 2, |
|
|
|
fontSize: 14, |
|
|
|
color: "rgba(0, 0, 0, 0.85)", |
|
|
|
}} |
|
|
|
style={{ |
|
|
|
height: 30, |
|
|
|
marginLeft: "-24px", |
|
|
|
marginRight: "-24px", |
|
|
|
marginTop: 48, |
|
|
|
display: "flex", |
|
|
|
alignItems: "center", |
|
|
|
justifyContent: "space-between", |
|
|
|
}} |
|
|
|
> |
|
|
|
{item.title} |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginLeft: 29, |
|
|
|
color: "#1859C1", |
|
|
|
fontSize: 14, |
|
|
|
fontWeight: 500, |
|
|
|
}} |
|
|
|
> |
|
|
|
配置属性 |
|
|
|
</div> |
|
|
|
{clickNum !== 2 ? ( |
|
|
|
<div style={{ display: "flex", marginRight: 43 }}> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
height: 30, |
|
|
|
width: 64, |
|
|
|
border: "1px solid #D9D9D9", |
|
|
|
borderRadius: "3px", |
|
|
|
color: "rgba(0, 0, 0, 0.65)", |
|
|
|
display: "flex", |
|
|
|
justifyContent: "center", |
|
|
|
alignItems: "center", |
|
|
|
cursor: "pointer", |
|
|
|
marginRight: 16, |
|
|
|
}} |
|
|
|
onClick={reset} |
|
|
|
> |
|
|
|
<img |
|
|
|
src="/assets/images/background/Reset.png" |
|
|
|
alt="1" |
|
|
|
style={{ marginRight: 4 }} |
|
|
|
/> |
|
|
|
重置 |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
height: 30, |
|
|
|
width: 64, |
|
|
|
border: "1px solid #1859C1", |
|
|
|
borderRadius: "3px", |
|
|
|
color: "#1859C1", |
|
|
|
display: "flex", |
|
|
|
justifyContent: "center", |
|
|
|
alignItems: "center", |
|
|
|
cursor: "pointer", |
|
|
|
}} |
|
|
|
onClick={toTest} |
|
|
|
> |
|
|
|
<img |
|
|
|
src="/assets/images/background/test.png" |
|
|
|
alt="1" |
|
|
|
style={{ marginRight: 4 }} |
|
|
|
/> |
|
|
|
测试 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) : ( |
|
|
|
"" |
|
|
|
)} |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
width: 210, |
|
|
|
height: 34, |
|
|
|
marginTop: 9, |
|
|
|
fontSize: 12, |
|
|
|
color: "rgba(0, 0, 0, 0.45)", |
|
|
|
textAlign: "center", |
|
|
|
}} |
|
|
|
> |
|
|
|
{item.text} |
|
|
|
<div> |
|
|
|
{clickNum == 1 ? ( |
|
|
|
<FluoriteCamera |
|
|
|
cRef={fluoriteRef} |
|
|
|
CameraKind={CameraKind} |
|
|
|
CameraAbility={CameraAbility} |
|
|
|
cameraData={cameraData} |
|
|
|
/> |
|
|
|
) : clickNum == 2 ? ( |
|
|
|
<NvrCamera nvrRef={nvrRef} cameraData={cameraData} /> |
|
|
|
) : clickNum == 3 ? ( |
|
|
|
<IpcCamera |
|
|
|
aRef={ipcRef} |
|
|
|
CameraKind={CameraKind} |
|
|
|
CameraAbility={CameraAbility} |
|
|
|
venderList={venderList} |
|
|
|
cameraData={cameraData} |
|
|
|
/> |
|
|
|
) : ( |
|
|
|
<CascadeCamera dRef={cascadeRef} cameraData={cameraData} parentCamera={parentCamera} /> |
|
|
|
)} |
|
|
|
</div> |
|
|
|
{clickNum === item.id ? ( |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
position: "absolute", |
|
|
|
top: "-3px", |
|
|
|
right: "-5px", |
|
|
|
}} |
|
|
|
> |
|
|
|
<img |
|
|
|
src="/assets/images/background/topchoose.png" |
|
|
|
alt="1" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
) : ( |
|
|
|
"" |
|
|
|
)} |
|
|
|
</div> |
|
|
|
))} |
|
|
|
</div> |
|
|
|
<IconChevronRight |
|
|
|
style={{ |
|
|
|
color: "rgba(0, 0, 0, 0.45)", |
|
|
|
fontSize: 16, |
|
|
|
marginRight: 18, |
|
|
|
cursor: "pointer", |
|
|
|
}} |
|
|
|
onClick={turnRight} |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
height: 30, |
|
|
|
marginLeft: "-24px", |
|
|
|
marginRight: "-24px", |
|
|
|
marginTop: 48, |
|
|
|
display: "flex", |
|
|
|
alignItems: "center", |
|
|
|
justifyContent: "space-between", |
|
|
|
}} |
|
|
|
> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
marginLeft: 29, |
|
|
|
color: "#1859C1", |
|
|
|
fontSize: 14, |
|
|
|
fontWeight: 500, |
|
|
|
}} |
|
|
|
> |
|
|
|
配置属性 |
|
|
|
</div> |
|
|
|
{clickNum !== 2 ? ( |
|
|
|
<div style={{ display: "flex", marginRight: 43 }}> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
height: 30, |
|
|
|
width: 64, |
|
|
|
border: "1px solid #D9D9D9", |
|
|
|
borderRadius: "3px", |
|
|
|
color: "rgba(0, 0, 0, 0.65)", |
|
|
|
display: "flex", |
|
|
|
justifyContent: "center", |
|
|
|
alignItems: "center", |
|
|
|
cursor: "pointer", |
|
|
|
marginRight: 16, |
|
|
|
}} |
|
|
|
onClick={reset} |
|
|
|
> |
|
|
|
<img |
|
|
|
src="/assets/images/background/Reset.png" |
|
|
|
alt="1" |
|
|
|
style={{ marginRight: 4 }} |
|
|
|
/> |
|
|
|
重置 |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style={{ |
|
|
|
height: 30, |
|
|
|
width: 64, |
|
|
|
border: "1px solid #1859C1", |
|
|
|
borderRadius: "3px", |
|
|
|
color: "#1859C1", |
|
|
|
display: "flex", |
|
|
|
justifyContent: "center", |
|
|
|
alignItems: "center", |
|
|
|
cursor: "pointer", |
|
|
|
}} |
|
|
|
onClick={toTest} |
|
|
|
> |
|
|
|
<img |
|
|
|
src="/assets/images/background/test.png" |
|
|
|
alt="1" |
|
|
|
style={{ marginRight: 4 }} |
|
|
|
/> |
|
|
|
测试 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) : ( |
|
|
|
"" |
|
|
|
)} |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
{clickNum == 1 ? ( |
|
|
|
<FluoriteCamera |
|
|
|
cRef={fluoriteRef} |
|
|
|
CameraKind={CameraKind} |
|
|
|
CameraAbility={CameraAbility} |
|
|
|
cameraData={cameraData} |
|
|
|
/> |
|
|
|
) : clickNum == 2 ? ( |
|
|
|
<NvrCamera nvrRef={nvrRef} cameraData={cameraData} /> |
|
|
|
) : clickNum == 3 ? ( |
|
|
|
<IpcCamera |
|
|
|
aRef={ipcRef} |
|
|
|
CameraKind={CameraKind} |
|
|
|
CameraAbility={CameraAbility} |
|
|
|
venderList={venderList} |
|
|
|
cameraData={cameraData} |
|
|
|
/> |
|
|
|
) : ( |
|
|
|
<CascadeCamera dRef={cascadeRef} cameraData={cameraData} /> |
|
|
|
)} |
|
|
|
</div> |
|
|
|
</Spin> |
|
|
|
</Modal> |
|
|
|
</> |
|
|
|
); |
|
|
|
</Spin> |
|
|
|
</Modal> |
|
|
|
</> |
|
|
|
); |
|
|
|
} |
|
|
|
function mapStateToProps(state) { |
|
|
|
const { auth, global, members, CameraKind, CameraAbility } = state; |
|
|
|
return { |
|
|
|
loading: members.isRequesting, |
|
|
|
user: auth.user, |
|
|
|
actions: global.actions, |
|
|
|
CameraKind: CameraKind.data || [], |
|
|
|
CameraAbility: CameraAbility.data || [], |
|
|
|
}; |
|
|
|
function mapStateToProps (state) { |
|
|
|
const { auth, global, members, CameraKind, CameraAbility } = state; |
|
|
|
return { |
|
|
|
loading: members.isRequesting, |
|
|
|
user: auth.user, |
|
|
|
actions: global.actions, |
|
|
|
CameraKind: CameraKind.data || [], |
|
|
|
CameraAbility: CameraAbility.data || [], |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
export default connect(mapStateToProps)(cameraModal); |
|
|
|