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 ( <>