import React, { useEffect, useMemo, useState } from 'react' import { Modal, Tabs, Descriptions, Image, Divider, Table } from 'antd'; import {DoubleRightOutlined} from '@ant-design/icons' 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'; import ModalContent from './ModalContent'; 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 jcColumns = [ { title: '项目', key: 'name', dataIndex:'name', width: 150, }, { title: '实时数据', key: 'realData', dataIndex:'realData', width: 150, }, { title: '数据采集时间', dataIndex:'tm', key: 'tm', width: 150, } ] const zfColumns = [ { title: '闸阀名称', key: 'valveName', dataIndex:'valveName', width: 150, }, { title: '当前开关状态', key: 'status', dataIndex:'status', width: 150, }, { title: '数据采集时间', dataIndex:'tm', key: 'tm', width: 150, } ] const jlColumns = [ { title: '闸阀名称', key: 'valveName', dataIndex:'valveName', width: 150, }, { title: '操作内容', dataIndex:'opContent', key: 'opContent', width: 150, }, { title: '操作结果', dataIndex:'status', key: 'status', width: 150, }, { title: '操作时间', dataIndex:'tm', key: 'tm', width: 150, } ] 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) getVideoSrc(data[0]?.indexCode) } 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 } // 闸阀监控列表数据 const [zfjkData, setzfjkData] = useState([]) const getZfjkData = async () => { try { const res = await httppost2(apiurl.gsxl.zfzl.list) if (res.code == 200) { setzfjkData(res.data) } } catch (error) { console.log(error); } } // 闸阀历史操作 const [zfjkHistoryListData, setzfjkHistoryListData] = useState([]) const getZfjkHistoryData = async () => { try { const res = await httppost2(apiurl.gsxl.zfzl.historyList) if (res.code == 200) { setzfjkHistoryListData(res.data) } } catch (error) { console.log(error); } } const swList = [ { name: "库水位(m)", realData:'', tm:'' }, { name: "今日雨量(mm)", realData:'', tm:'' }, { name: "灌溉发电流量(m³/s)", realData:'', tm:'' } ] // 闸阀历史操作 const [zfjkSwData, setzfjkSwData] = useState([]) const getZfjkSwData = async () => { try { const res = await httppost2(apiurl.gsxl.zfzl.swInfo) if (res.code == 200) { const { rz, todayRainNum, outPowerNum, todayRainNumTm, outPowerNumTm, tm } = res.data; const newArr = swList.map(item => { if (item.name == '库水位(m)') { item.realData = rz; item.tm = tm; } else if (item.name == '今日雨量(mm)') { item.realData = todayRainNum; item.tm = todayRainNumTm; } else { item.realData = outPowerNum; item.tm = outPowerNumTm; } return item; }) setzfjkSwData(newArr) } } catch (error) { console.log(error); } } useEffect(() => { getZfjkData() getZfjkHistoryData() getZfjkSwData() }, []) return ( <>
{/* */}
闸阀监控
record.tm} dataSource={zfjkData} pagination={false} />
最近操作记录
setOpen(true)}>
查看更多信息
record.tm} dataSource={zfjkHistoryListData} pagination={false} /> {/*
{ 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) // } }} > {/*
注:单击视频显示/隐藏云台
*/}
}
监测数据
record.tm} dataSource={zfjkSwData} pagination={false} /> {/* { 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;