import React, { useEffect, useMemo, useState } from 'react' import { Modal, Tabs, Descriptions, Image } from 'antd'; import { Stage } from 'react-konva'; import Sider from './Sider'; import Topper1 from './Topper1'; import Topper2 from './Topper2'; import ZmColumns from './ZmColumns'; import { contextCoordinates } from './coordinates'; import { renAperture } from '../../../utils/utils'; import HFivePlayer from '../../../components/video1Plary' import './index.less'; import { httpget, httpget2, httppost2 } from '../../../utils/request'; import apiurl from '../../../service/apiurl'; const url = "http://223.75.53.141:9102/test.by-lyf.tmp" const CanvasW = 1080 const CanvasH = 640 // const waterRatio = 0 const zmobj ={ "hpCode": "HP0074208040002120", "stcd": "4265630075", "ctrlType": "PLC", "ctrlProtocol": "PLC", "uprzStcd": null, "dwrzStcd": null, "flowStcd": null, "gaType": "waga", "ctrlPass": null, "maxHgt": 1.9, "minHgt": 0, "name": "五岭包节制闸", "ghtX": null, "ghtY": null, "irrCode": "D00000020", "irrName": "三干渠", "engCode": "ENG100076", "engName": "三干渠管理处", "orgCode": "A07", "gaorNum": 3, "wagaType": "节制闸", "plcType": null, "bim": 0, "vip": 0, "miu": null, "lgtd": 112.242945, "lttd": 30.848166, "runtime": [ null, { "stcd": "4265630075", "gateNumber": 1, "realAperture": 376, "setAperture": 0, "sensorLever": null, "altitudeLever": null, "remoteSignal": 0, "powerSignal": 0, "openingSignal": 0, "closeingSignal": 0, "errorSignal": 0, "openedSignal": 0, "closedSignal": 0, "tm": "2024-09-25 20:03:26", "_online": true }, { "stcd": "4265630075", "gateNumber": 2, "realAperture": 388, "setAperture": 0, "sensorLever": null, "altitudeLever": null, "remoteSignal": 0, "powerSignal": 0, "openingSignal": 0, "closeingSignal": 0, "errorSignal": 0, "openedSignal": 0, "closedSignal": 0, "tm": "2024-09-25 20:03:26", "_online": true }, { "stcd": "4265630075", "gateNumber": 3, "realAperture": 394, "setAperture": 0, "sensorLever": null, "altitudeLever": null, "remoteSignal": 0, "powerSignal": null, "openingSignal": 0, "closeingSignal": 0, "errorSignal": 0, "openedSignal": 0, "closedSignal": 0, "tm": "2024-09-25 20:03:26", "_online": true } ], "real": { "stcd": "4265630075", "stationName": "五岭包节制闸", "z1": null, "zz1": null, "z1tm": null, "z2": null, "zz2": null, "z2tm": null, "hq": null, "hqtm": null, "demtl": null }, "cctvs": [], "_idx": 88, "_fav": false, "_sort": 10086 } const runtime = [ null, { "stcd": "4265630075", "gateNumber": 1, "realAperture": 976, "setAperture": 0, "sensorLever": null, "altitudeLever": null, "remoteSignal": 0, "powerSignal": 0, "openingSignal": 0, "closeingSignal": 0, "errorSignal": 0, "openedSignal": 0, "closedSignal": 0, "tm": "2024-09-25 20:03:31" }, { "stcd": "4265630075", "gateNumber": 2, "realAperture": 388, "setAperture": 0, "sensorLever": null, "altitudeLever": null, "remoteSignal": 0, "powerSignal": 0, "openingSignal": 0, "closeingSignal": 0, "errorSignal": 0, "openedSignal": 0, "closedSignal": 0, "tm": "2024-09-25 20:03:31" }, { "stcd": "4265630075", "gateNumber": 3, "realAperture": 394, "setAperture": 0, "sensorLever": null, "altitudeLever": null, "remoteSignal": 0, "powerSignal": null, "openingSignal": 0, "closeingSignal": 0, "errorSignal": 0, "openedSignal": 0, "closedSignal": 0, "tm": "2024-09-25 20:03:31" } ] const myType = { // 闸前水位站 2闸后水位站 3流量站 '1':'闸前水位/水深(m)', '2':'闸后水位/水深(m)', '3':'流量 (m³/s)', } const Page = () => { const [itemIndex,setItemIndex] = useState(null) const [waterRatio,setWaterRatio] = useState(0) const [data,setData] = useState({}) const [list, setList ] = useState([]) const [damList, setDamList ] = useState([]) const [videoList, setVideoList ] = useState([]) const [videoArr, setvideoArr] = useState({}) const [open, setOpen] = useState(false) const hole = 3;//zmobj.gaorNum; const xunit = CanvasW / (2 + hole); const pts = contextCoordinates(xunit, hole); const eqpnoList = useMemo(() => damList ? new Array(damList.length).fill(0).map((o, index) => index) : [], [damList]); useEffect(()=>{ getList() },[]) const getList = async()=>{ const {code, data} = await httppost2(apiurl.zmjk.getList) if(code!==200){ return } const obj = data[0]||{} getInformation(obj.gateCode) getDamData(obj.stcd) getVideo(obj.gateCode) setData(obj) } const getInformation = async(gateCode)=>{ const {code, data} = await httpget2(apiurl.zmjk.getInformation,{gateCode}) if(code!==200){ return } data.map((item)=>{ if(item.type===2){ setWaterRatio(item.value/5||0) } }) setList(data) } const getDamData = async(stcd)=>{ const {code, data} = await httpget2(apiurl.zmjk.getDamData,{stcd}) if(code!==200){ return } const list = [] data.map((item)=>{ list.push({ ...item }) }) setDamList(list) } const getVideo = async(valveCode)=>{ const {code, data} = await httppost2(apiurl.zmjk.getVideo,{valveCode}) if(code!==200){ return } setVideoList(data) } const getVideoSrc = async (current) => { const res = await httpget2(`${apiurl.gsxl.zfzl.videosrc}${current}`)//32023a7f27d8448fa10511f24e96acff if (res.code == 200 && res.data?.length !== 0) { setvideoArr({src:res.data}) }else{ setvideoArr({}) } } const getNum = (a,b)=>{ const aa = Number(a||0) const bb = Number(b||0) const num = Number(aa-bb).toFixed(3) return num } return ( <>
{/* */}
{ eqpnoList.map(o => (
{}} className='o' style={{ flexGrow: 1, width: 100, display: 'flex', justifyContent: 'center', cursor: 'pointer' }}>
#{o+1}
)) }
{ eqpnoList.map(o => (
{}} style={{ width: 80, height: 32, border: '1px solid #444', backgroundColor: '#fff', borderRadius: 4, color: '#888', display: 'flex', justifyContent: 'center', alignItems: 'center', fontSize: 18, cursor: 'pointer' }} > {renAperture(damList[o]?.realAperture)}
)) }
视频监控
{ videoList.map((item,index)=>(
{setItemIndex(index);getVideoSrc(item.indexCode)}}> {item.name}
)) }
{ videoArr?.src &&
{ // if (controlerParams.type == 1) { // setVideoOpen(true) // setIsShow(!isShow) // } }} > {/*
注:单击视频显示/隐藏云台
*/}
}
监测数据
{ list?.map((item)=>{ if(item.type===1){ return (
{myType[item.type]}
{item.value||'-'} / {getNum(item.value,data.inEle)}
{item.tm?.slice(5,19)}
) }else if(item.type===2){ return (
{myType[item.type]}
{item.value||'-'} / {getNum(item.value,data.inEle)}
{item.tm?.slice(5,19)}
) }else{ return (
{myType[item.type]}
{item.value}
{item.tm?.slice(5,19)}
) } }) }
setOpen(true)}>查看更多信息
{ setOpen(false) }} >
{{1:'卷扬式',2:'螺杆式',3:'凹轮式',4:'涡轮式',5:'丝杆式'}?.[data?.hdgrTp]||'-'} {{1:'手动',2:'电动',3:'手电两用'}?.[data?.pwrTp]||'-'} {{1:'分(泄)洪闸',2:'节制闸',3:'排(退)水闸',4:'引(进)水闸',5:'挡潮闸',6:'船闸',9:'其他'}?.[data?.wagaType]||'-'} {data?.inEle||'-'} m {data?.outEle||'-'} m {data?.gaorNum||'-'} 孔 {data?.dsfl||'-'} m³/s {data?.stfl||'-'} m³/s {data?.gateSize||'-'} m*m {{1:'Ⅰ',2:'Ⅱ',3:'Ⅲ',4:'Ⅳ',5:'Ⅴ'}?.[data?.engGrad]||'-'} {{1:'在用良好',2:'在用故障',3:'停用'}?.[data?.runStat]||'-'} {data?.compDate||'-'}
); } export default Page;