-
29日9时至
30日9时
+
{start}9时至
{end}9时
24小时中共有
1
- 个站点雨量为
特大暴雨,雨量值
+ 个站点雨量为
大暴雨,雨量值
261mm;
共产生
3个山洪预警(2个内部预警,1个外部预警),均已处置;
1个水库超汛限,已短信通知责任人;无河道预警。
diff --git a/src/views/Home/panels/Diaodujg/Setting.js b/src/views/Home/panels/Diaodujg/Setting.js
new file mode 100644
index 0000000..fd1c4ef
--- /dev/null
+++ b/src/views/Home/panels/Diaodujg/Setting.js
@@ -0,0 +1,51 @@
+import React from 'react';
+
+import Dialog from '@material-ui/core/Dialog';
+import DialogContent from '@material-ui/core/DialogContent';
+import DpPaperComponent from '../../../../layouts/mui/DpPaperCompanent';
+import { FormGroup, MenuItem, Select, Switch, Typography } from '@material-ui/core';
+import DpDialogTitle from '../../../../layouts/mui/DpDialogTitle';
+import { useDispatch, useSelector } from 'react-redux';
+import { getLayerSetting, getLayerVisible } from '../../../../models/map/selectors';
+import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
+
+
+function Setting({ onClose }) {
+ const layerVisible = useSelector(getLayerVisible);
+ const layerSetting = useSelector(getLayerSetting);
+
+ const dispath = useDispatch();
+
+ return (
+
+ )
+}
+
+export default Setting;
diff --git a/src/views/Home/panels/Diaodujg/constant.js b/src/views/Home/panels/Diaodujg/constant.js
new file mode 100644
index 0000000..10669b7
--- /dev/null
+++ b/src/views/Home/panels/Diaodujg/constant.js
@@ -0,0 +1,157 @@
+const data = [
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "comments": "漳河遥测",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": 0,
+ "exkey": "@",
+ "slm80": 0,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "ZH201417",
+ "slm10": 24,
+ "slm20": 5.3,
+ "slm30": 44.3,
+ "slm40": 44.3,
+ "tm": "2024-08-03 05:00",
+ "slm100": 0,
+ "vtavslm": null,
+ "slmAvg": 24.5
+ },
+ "lttd": 30.8456,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "dtmel": 0,
+ "stcd": "ZH201417",
+ "stnm": "马山二组(墒情)",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.2321,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ },
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "comments": "漳河遥测",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": 0,
+ "exkey": "@",
+ "slm80": 0,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "ZH201421",
+ "slm10": 12.1,
+ "slm20": 16.2,
+ "slm30": 12.8,
+ "slm40": 12.8,
+ "tm": "2024-08-15 08:00",
+ "slm100": 0,
+ "vtavslm": null,
+ "slmAvg": 13.7
+ },
+ "lttd": 30.8446,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "dtmel": 0,
+ "stcd": "ZH201421",
+ "stnm": "槐桥四组(墒情)",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.203,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ },
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": 0,
+ "exkey": "@",
+ "slm80": 0,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "ZH201418",
+ "slm10": 16.5,
+ "slm20": 12.5,
+ "slm30": 0,
+ "slm40": 0,
+ "tm": "2024-09-19 11:00",
+ "slm100": 0,
+ "vtavslm": null,
+ "slmAvg": 14.5
+ },
+ "lttd": 30.8866,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "dtmel": 0,
+ "stcd": "ZH201418",
+ "stnm": "双碑一组(墒情)",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.2006,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ },
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "comments": "水资源多孔闸门控制系统",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": null,
+ "exkey": "@",
+ "slm80": null,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "4211221031",
+ "slm10": 31,
+ "slm20": 42.6,
+ "slm30": null,
+ "slm40": 26.6,
+ "tm": "2025-05-26 09:00",
+ "slm100": null,
+ "vtavslm": null,
+ "slmAvg": 33.4
+ },
+ "lttd": 30.904191,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "stcd": "4211221031",
+ "stnm": "试验站墒情",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.087806,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ }
+]
+export default data;
\ No newline at end of file
diff --git a/src/views/Home/panels/Diaodujg/index.js b/src/views/Home/panels/Diaodujg/index.js
new file mode 100644
index 0000000..3253a04
--- /dev/null
+++ b/src/views/Home/panels/Diaodujg/index.js
@@ -0,0 +1,159 @@
+import React, { useMemo, useState } from 'react';
+import useRequest from '../../../../utils/useRequest';
+import PanelBox from '../../components/PanelBox';
+
+import Table from '@material-ui/core/Table';
+import TableContainer from '@material-ui/core/TableContainer';
+import TableBody from '@material-ui/core/TableBody';
+import TableHead from '@material-ui/core/TableHead';
+import TableRow from '@material-ui/core/TableRow';
+import DpTableCell from '../../../../layouts/mui/DpTableCell';
+import DpTableRow from '../../../../layouts/mui/DpTableRow';
+import { useDispatch, useSelector } from 'react-redux';
+import useRefresh from '../../../../utils/useRefresh';
+import { HDRealPromise } from '../../../../models/_/real';
+import clsx from 'clsx';
+import { renderHDRz } from '../../../../utils/renutils';
+import Setting from './Setting';
+import { InfoPopNames } from '../../InfoPops';
+import config from '../../../../config';
+import moment from 'moment';
+import { Empty } from 'antd'
+import TableYj from './tableYj';
+// import showData from './constant'
+function rzRender(rz, base) {
+ return (
+
= base ? 'red' : '#fff' }}>
+ {typeof base === 'number' ? base.toFixed(2) : ''}
+
+ );
+}
+
+function HDReal({ style }) {
+ const dispatch = useDispatch();
+ const tableRzFilter = useSelector(s => s.realview.tableRzFilter);
+ const hdAutoRefresh = useSelector(s => s.realview.hdAutoRefresh);
+ const yyRes = useSelector(s => s.runtime.yyObj);
+ const t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0);
+ // let { data } = useRequest(HDRealPromise.get, t);
+ const [setting, showSetting] = useState(false);
+
+ // const showData = useMemo(() => {
+ // if (!data) {
+ // return [];
+ // }
+ // let ret = [];
+ // data.forEach(o => {
+ // if (!tableRzFilter[o.type]) {
+ // return;
+ // }
+ // o.status = Math.floor(Math.random() * (4 - 0 + 1)) + 0
+ // o.kd = (Math.random() * 100).toFixed(2);
+ // o.ll = (Math.random() * 100).toFixed(1);
+ // ret.push(o);
+ // });
+ // return ret;
+ // }, [data, tableRzFilter]);
+ const randomMinutes = Math.floor(Math.random() * 60) + 1;
+ const format = 'YYYY-MM-DD HH:mm';
+
+ const showData = [
+ {
+ stnm: '尼尔基坝上',
+ rz: '215.74',
+ maxF: '7170',
+ cxTime: '08-17 08时',
+ ffTime:'08-23 20时'
+ },
+ {
+ stnm: '同盟',
+ rz: '170.30',
+ maxF: '10300',
+ cxTime: '08-20 20时',
+ ffTime:'08-20 20时'
+ }
+ ]
+ const resData = [
+ {
+ stnm: '福田河镇',
+ area:"200",
+ rz: '215.74',
+ maxF: '7170',
+ cxTime: '08-17 08时',
+ ffTime:'08-23 20时'
+ },
+ {
+ stnm: '顺河镇',
+ area: '300',
+ maxF: '10300',
+ cxTime: '08-20 20时',
+ ffTime:'08-20 20时'
+ }
+ ]
+ const flyTo = (record) => {
+ const { lgtd, lttd } = record;
+ if (lgtd && lttd) {
+ dispatch.runtime.setFeaturePop({ type: '墒情站', properties: record, coordinates: [lgtd, lttd] });
+ dispatch.runtime.setCameraTarget({
+ center: [lgtd, lttd + config.poiPositionOffsetY.hd],
+ zoom: config.poiPositionZoom.hd,
+ pitch: config.poiPitch,
+ });
+ }
+ }
+
+ const toggleStType = (type) => {
+ const visible = !tableRzFilter[type];
+ dispatch.realview.setTableRzFilter({ [type]: visible });
+ }
+
+ const toggleAutoRefresh = () => {
+ dispatch.realview.setHdAutoRefresh(!hdAutoRefresh);
+ }
+
+
+
+ return (
+
+ // toggleStType('sh')}>山洪
+ // toggleStType('sw')}>水文
+ //
+ // }
+ extra={
+ <>
+ {/* */}
+ {/* showSetting(true)}> */}
+ >
+ }
+ >
+ {
+ yyRes.yy ? <>
+
+
+
+
下游淹没影响
+

+
+
+

+
+
+ > :
+ 暂无数据}/>
+ }
+ {
+ setting && showSetting(false)} />
+ }
+
+ )
+}
+
+export default HDReal;
diff --git a/src/views/Home/panels/Diaodujg/tableYj.js b/src/views/Home/panels/Diaodujg/tableYj.js
new file mode 100644
index 0000000..4034f0a
--- /dev/null
+++ b/src/views/Home/panels/Diaodujg/tableYj.js
@@ -0,0 +1,171 @@
+
+import React from 'react';
+import { makeStyles } from '@material-ui/core/styles';
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableContainer,
+ TableHead,
+ TableRow,
+ Paper,
+} from '@material-ui/core';
+const reservoirData = [
+ {
+ name: '明山水库',
+ maxInflow: {
+ value: 12.32,
+ time: '03-23 14:32'
+ },
+ totalStorage: 17.98,
+ maxOutflow: {
+ value: 12.32,
+ time: '03-23 14:32'
+ }
+ }
+];
+
+const useStyles = makeStyles((theme) => ({
+ root: {
+ width: '100%',
+ // padding: '20px',
+ background: 'transparent',
+ borderRadius: '8px',
+ position: 'relative',
+ },
+ tableContainer: {
+ background: 'transparent',
+ maxHeight: '100%',
+ overflowX: 'auto',
+ '&::-webkit-scrollbar': {
+ height: '8px',
+ },
+ '&::-webkit-scrollbar-track': {
+ background: 'rgba(255, 255, 255, 0.1)',
+ borderRadius: '4px',
+ },
+ '&::-webkit-scrollbar-thumb': {
+ background: 'rgba(255, 255, 255, 0.2)',
+ borderRadius: '4px',
+ '&:hover': {
+ background: 'rgba(255, 255, 255, 0.3)',
+ },
+ },
+ },
+ table: {
+ minWidth: 800,
+ // background: 'linear-gradient(180deg, rgba(22, 27, 34, 0.8) 0%, rgba(13, 17, 23, 0.8) 100%)',
+ backdropFilter: 'blur(10px)',
+ },
+ tableHead: {
+ background: 'linear-gradient(180deg, rgba(22, 27, 34, 0.9) 0%, rgba(22, 27, 34, 0.7) 100%)',
+ },
+ headerCell: {
+ color: '#c9d1d9',
+ fontWeight: 600,
+ textAlign: 'center',
+ borderBottom: '1px solid rgba(48, 54, 61, 0.6)',
+ borderRight: '1px solid rgba(48, 54, 61, 0.6)',
+ padding: 0,
+ whiteSpace: 'nowrap',
+ '&:last-child': {
+ borderRight: 'none',
+ },
+ },
+ cell: {
+ color: '#c9d1d9',
+ textAlign: 'center',
+ borderBottom: '1px solid rgba(48, 54, 61, 0.6)',
+ borderRight: '1px solid rgba(48, 54, 61, 0.6)',
+ padding: '12px 20px',
+ whiteSpace: 'nowrap',
+ '&:last-child': {
+ borderRight: 'none',
+ },
+ },
+ timeText: {
+ fontSize: '0.85em',
+ color: '#8b949e',
+ marginLeft: '4px',
+ },
+ scrollIndicator: {
+ position: 'absolute',
+ bottom: 0,
+ left: 0,
+ right: 0,
+ height: '4px',
+ background: 'rgba(255, 255, 255, 0.1)',
+ borderRadius: '2px',
+ },
+ scrollProgress: {
+ height: '100%',
+ background: 'rgba(255, 255, 255, 0.3)',
+ borderRadius: '2px',
+ width: '50%',
+ transform: 'translateX(0%)',
+ transition: 'transform 0.3s ease',
+ },
+}));
+
+const ReservoirTable = ({onChange}) => {
+ const classes = useStyles();
+ const [scrollPosition, setScrollPosition] = React.useState(0);
+
+ const handleScroll = (e) => {
+ const target = e.target;
+ const scrollLeft = target.scrollLeft;
+ const maxScroll = target.scrollWidth - target.clientWidth;
+ const position = (scrollLeft / maxScroll) * 100;
+ setScrollPosition(position);
+ };
+
+ const formatFlowCell = (data) => (
+ <>
+ {data.value}
+
({data.time})
+ >
+ );
+
+ return (
+
+
+
+
+
+ 水库名称
+
+ 最大入库流量
(m³/s)
+
+
+ 总入库水量
(万m³)
+
+
+ 最大出库流量
(m³/s)
+
+
+
+
+ {reservoirData.map((item, index) => (
+
+ {item.name}
+ {formatFlowCell(item.maxInflow)}
+ {item.totalStorage}
+ {formatFlowCell(item.maxOutflow)}
+
+ ))}
+
+
+
+ {/* */}
+
+ );
+};
+
+export default ReservoirTable;
\ No newline at end of file
diff --git a/src/views/Home/panels/Drpfx/index.js b/src/views/Home/panels/Drpfx/index.js
index 7815a6a..f9fe774 100644
--- a/src/views/Home/panels/Drpfx/index.js
+++ b/src/views/Home/panels/Drpfx/index.js
@@ -4,6 +4,7 @@ import useRequest from '../../../../utils/useRequest';
import PanelBox from '../../components/PanelBox';
import OverallContent from './OverallContent';
import { makeStyles } from '@material-ui/core/styles';
+import { InfoPopNames } from '../../InfoPops';
import {
Box,
Typography,
@@ -21,7 +22,10 @@ import {
Collapse
} from '@material-ui/core';
import AddIcon from '@material-ui/icons/Add';
+import { useDispatch, useSelector } from 'react-redux';
+
import RemoveIcon from '@material-ui/icons/Remove';
+import config from '../../../../config';
const useStyles = makeStyles((theme) => ({
root: {
color: '#fff',
@@ -73,12 +77,12 @@ const useStyles = makeStyles((theme) => ({
backgroundColor: 'rgba(255,255,255,0.1)'
}
},
- warningRow: {
+ warningRow: {
'&.pink': { backgroundColor: 'rgba(255,192,203,0.5)' },
'&.purple': { backgroundColor: 'rgba(147,112,219,0.5)' },
- '&.blue': { backgroundColor: 'rgba(135,206,235,0.5)' },
- '&.blue1': { backgroundColor: 'rgba(135,206,235,0.4)' },
- '&.blue2': { backgroundColor: 'rgba(135,206,235,0.3)' },
+ '&.blue': { backgroundColor: 'rgba(135,206,235,0.5)' },
+ '&.blue1': { backgroundColor: 'rgba(135,206,235,0.4)' },
+ '&.blue2': { backgroundColor: 'rgba(135,206,235,0.3)' },
'&.green': { backgroundColor: 'rgba(144,238,144,0.5)' }
},
@@ -90,6 +94,7 @@ const useStyles = makeStyles((theme) => ({
}
}));
export default function Overall({ style }) {
+ const dispatch = useDispatch();
const classes = useStyles();
const [types, setTypes] = useState({
@@ -113,7 +118,7 @@ export default function Overall({ style }) {
{ id: '100year', name: '100年一遇以上站点', count: 0, color: 'purple' },
{ id: '50year', name: '50年一遇以上站点', count: 0, color: 'blue' },
{ id: 'special', name: '特大暴雨站点', count: 0, color: 'blue1' },
- { id: 'heavy', name: '大暴雨站点', count: 0, color: 'blue2' },
+ { id: 'heavy', name: '大暴雨站点', count: 1, color: 'blue2' },
{ id: 'storm', name: '暴雨站点', count: 0, color: 'green' }
];
@@ -124,6 +129,41 @@ export default function Overall({ style }) {
}));
};
+ const drpData = [
+ {
+ "stcd": "61612910",
+ "stnm": "桃林河(阎河)",
+ "adcd": "421181000000000",
+ 'test':1,
+ "wscd": null,
+ "importancy": 0,
+ "lgtd": 115.087777777,
+ "lttd": 31.164444444,
+ "elev": null,
+ "hasRz": true,
+ "type": "sh",
+ "today": 7,
+ "h1": 12,
+ "h3": 40,
+ "h6": 69,
+ "h12": 133,
+ "h24": 261,
+ "tm": "2025-06-03T02:10:00.000Z",
+ "state": 1,
+ "warning": 0
+ },
+ ]
+ const flyTo = (record) => {
+ const { lgtd, lttd } = record;
+ if (lgtd && lttd) {
+ dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealDrpPop, properties: record, coordinates: [lgtd, lttd] });
+ dispatch.runtime.setCameraTarget({
+ center: [lgtd, lttd + config.poiPositionOffsetY.hd],
+ zoom: config.poiPositionZoom.hd,
+ pitch: config.poiPitch,
+ });
+ }
+ }
return (
- {/* 展开的详细内容可以在这里添加 */}
- {/*
- 站名
- 水位(m)
- 所属政区
- 所属流域
- */}
+ {/* 展开的详细内容可以在这里添加 */}{
+ station.id == 'heavy' && drpData.map(item => (
+ flyTo(item)}>
+ {item.stnm}
+ {item.today}
+ 阎家河镇
+ 桃林河
+
+ ))
+ }
+
diff --git a/src/views/Home/panels/Duibifx/Setting.js b/src/views/Home/panels/Duibifx/Setting.js
new file mode 100644
index 0000000..fd1c4ef
--- /dev/null
+++ b/src/views/Home/panels/Duibifx/Setting.js
@@ -0,0 +1,51 @@
+import React from 'react';
+
+import Dialog from '@material-ui/core/Dialog';
+import DialogContent from '@material-ui/core/DialogContent';
+import DpPaperComponent from '../../../../layouts/mui/DpPaperCompanent';
+import { FormGroup, MenuItem, Select, Switch, Typography } from '@material-ui/core';
+import DpDialogTitle from '../../../../layouts/mui/DpDialogTitle';
+import { useDispatch, useSelector } from 'react-redux';
+import { getLayerSetting, getLayerVisible } from '../../../../models/map/selectors';
+import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
+
+
+function Setting({ onClose }) {
+ const layerVisible = useSelector(getLayerVisible);
+ const layerSetting = useSelector(getLayerSetting);
+
+ const dispath = useDispatch();
+
+ return (
+
+ )
+}
+
+export default Setting;
diff --git a/src/views/Home/panels/Duibifx/constant.js b/src/views/Home/panels/Duibifx/constant.js
new file mode 100644
index 0000000..10669b7
--- /dev/null
+++ b/src/views/Home/panels/Duibifx/constant.js
@@ -0,0 +1,157 @@
+const data = [
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "comments": "漳河遥测",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": 0,
+ "exkey": "@",
+ "slm80": 0,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "ZH201417",
+ "slm10": 24,
+ "slm20": 5.3,
+ "slm30": 44.3,
+ "slm40": 44.3,
+ "tm": "2024-08-03 05:00",
+ "slm100": 0,
+ "vtavslm": null,
+ "slmAvg": 24.5
+ },
+ "lttd": 30.8456,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "dtmel": 0,
+ "stcd": "ZH201417",
+ "stnm": "马山二组(墒情)",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.2321,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ },
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "comments": "漳河遥测",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": 0,
+ "exkey": "@",
+ "slm80": 0,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "ZH201421",
+ "slm10": 12.1,
+ "slm20": 16.2,
+ "slm30": 12.8,
+ "slm40": 12.8,
+ "tm": "2024-08-15 08:00",
+ "slm100": 0,
+ "vtavslm": null,
+ "slmAvg": 13.7
+ },
+ "lttd": 30.8446,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "dtmel": 0,
+ "stcd": "ZH201421",
+ "stnm": "槐桥四组(墒情)",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.203,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ },
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": 0,
+ "exkey": "@",
+ "slm80": 0,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "ZH201418",
+ "slm10": 16.5,
+ "slm20": 12.5,
+ "slm30": 0,
+ "slm40": 0,
+ "tm": "2024-09-19 11:00",
+ "slm100": 0,
+ "vtavslm": null,
+ "slmAvg": 14.5
+ },
+ "lttd": 30.8866,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "dtmel": 0,
+ "stcd": "ZH201418",
+ "stnm": "双碑一组(墒情)",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.2006,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ },
+ {
+ "addvcd": "420800000000000",
+ "moditime": "2022-05-01 21:00:00",
+ "comments": "水资源多孔闸门控制系统",
+ "src": "zhzj",
+ "esstym": "",
+ "mvalue": {
+ "slmmmt": null,
+ "slm60": null,
+ "exkey": "@",
+ "slm80": null,
+ "hitrsn": null,
+ "crpty": null,
+ "crpgrwprd": null,
+ "srlslm": null,
+ "stcd": "4211221031",
+ "slm10": 31,
+ "slm20": 42.6,
+ "slm30": null,
+ "slm40": 26.6,
+ "tm": "2025-05-26 09:00",
+ "slm100": null,
+ "vtavslm": null,
+ "slmAvg": 33.4
+ },
+ "lttd": 30.904191,
+ "sttp": "SS",
+ "irrCode": "D00000010",
+ "sort": 9999,
+ "hasImg": false,
+ "stlc": "荆门市",
+ "stcd": "4211221031",
+ "stnm": "试验站墒情",
+ "addvcd_dictText": "荆门市",
+ "lgtd": 112.087806,
+ "irrCode_dictText": "漳河实验站",
+ "bsnm": "漳河流域"
+ }
+]
+export default data;
\ No newline at end of file
diff --git a/src/views/Home/panels/Duibifx/index.js b/src/views/Home/panels/Duibifx/index.js
new file mode 100644
index 0000000..73084cf
--- /dev/null
+++ b/src/views/Home/panels/Duibifx/index.js
@@ -0,0 +1,152 @@
+import React, { useMemo, useState } from 'react';
+import useRequest from '../../../../utils/useRequest';
+import PanelBox from '../../components/PanelBox';
+
+import Table from '@material-ui/core/Table';
+import TableContainer from '@material-ui/core/TableContainer';
+import TableBody from '@material-ui/core/TableBody';
+import TableHead from '@material-ui/core/TableHead';
+import TableRow from '@material-ui/core/TableRow';
+import DpTableCell from '../../../../layouts/mui/DpTableCell';
+import DpTableRow from '../../../../layouts/mui/DpTableRow';
+import { useDispatch, useSelector } from 'react-redux';
+import useRefresh from '../../../../utils/useRefresh';
+import { HDRealPromise } from '../../../../models/_/real';
+import clsx from 'clsx';
+import { renderHDRz } from '../../../../utils/renutils';
+import Setting from './Setting';
+import { InfoPopNames } from '../../InfoPops';
+import config from '../../../../config';
+import moment from 'moment';
+import { Empty } from 'antd'
+import TableYj from './tableYj';
+// import showData from './constant'
+function rzRender(rz, base) {
+ return (
+ = base ? 'red' : '#fff' }}>
+ {typeof base === 'number' ? base.toFixed(2) : ''}
+
+ );
+}
+
+function HDReal({ style }) {
+ const dispatch = useDispatch();
+ const tableRzFilter = useSelector(s => s.realview.tableRzFilter);
+ const hdAutoRefresh = useSelector(s => s.realview.hdAutoRefresh);
+ const num = useSelector(s => s.runtime.duibifxNum)
+
+ const yyRes = useSelector(s => s.runtime.yyObj);
+ const t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0);
+ // let { data } = useRequest(HDRealPromise.get, t);
+ const [setting, showSetting] = useState(false);
+
+ // const showData = useMemo(() => {
+ // if (!data) {
+ // return [];
+ // }
+ // let ret = [];
+ // data.forEach(o => {
+ // if (!tableRzFilter[o.type]) {
+ // return;
+ // }
+ // o.status = Math.floor(Math.random() * (4 - 0 + 1)) + 0
+ // o.kd = (Math.random() * 100).toFixed(2);
+ // o.ll = (Math.random() * 100).toFixed(1);
+ // ret.push(o);
+ // });
+ // return ret;
+ // }, [data, tableRzFilter]);
+ const randomMinutes = Math.floor(Math.random() * 60) + 1;
+ const format = 'YYYY-MM-DD HH:mm';
+
+ const showData = [
+ {
+ stnm: '尼尔基坝上',
+ rz: '215.74',
+ maxF: '7170',
+ cxTime: '08-17 08时',
+ ffTime: '08-23 20时'
+ },
+ {
+ stnm: '同盟',
+ rz: '170.30',
+ maxF: '10300',
+ cxTime: '08-20 20时',
+ ffTime: '08-20 20时'
+ }
+ ]
+ const resData = [
+ {
+ stnm: '福田河镇',
+ area: "200",
+ rz: '215.74',
+ maxF: '7170',
+ cxTime: '08-17 08时',
+ ffTime: '08-23 20时'
+ },
+ {
+ stnm: '顺河镇',
+ area: '300',
+ maxF: '10300',
+ cxTime: '08-20 20时',
+ ffTime: '08-20 20时'
+ }
+ ]
+ const flyTo = (record) => {
+ const { lgtd, lttd } = record;
+ if (lgtd && lttd) {
+ dispatch.runtime.setFeaturePop({ type: '墒情站', properties: record, coordinates: [lgtd, lttd] });
+ dispatch.runtime.setCameraTarget({
+ center: [lgtd, lttd + config.poiPositionOffsetY.hd],
+ zoom: config.poiPositionZoom.hd,
+ pitch: config.poiPitch,
+ });
+ }
+ }
+
+ const toggleStType = (type) => {
+ const visible = !tableRzFilter[type];
+ dispatch.realview.setTableRzFilter({ [type]: visible });
+ }
+
+ const toggleAutoRefresh = () => {
+ dispatch.realview.setHdAutoRefresh(!hdAutoRefresh);
+ }
+
+
+
+ return (
+
+ // toggleStType('sh')}>山洪
+ // toggleStType('sw')}>水文
+ //
+ // }
+ extra={
+ <>
+ {/* */}
+ {/* showSetting(true)}> */}
+ >
+ }
+ >
+ {
+ num.length ? num.map(item => (
+
+

+
+ ))
+ :
+ 暂无数据} />
+ }
+ {
+ setting && showSetting(false)} />
+ }
+
+ )
+}
+
+export default HDReal;
diff --git a/src/views/Home/panels/Duibifx/tableYj.js b/src/views/Home/panels/Duibifx/tableYj.js
new file mode 100644
index 0000000..6c6b93d
--- /dev/null
+++ b/src/views/Home/panels/Duibifx/tableYj.js
@@ -0,0 +1,171 @@
+
+import React from 'react';
+import { makeStyles } from '@material-ui/core/styles';
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableContainer,
+ TableHead,
+ TableRow,
+ Paper,
+} from '@material-ui/core';
+const reservoirData = [
+ {
+ name: '明山水库',
+ maxInflow: {
+ value: 12.32,
+ time: '03-23 14:32'
+ },
+ totalStorage: 17.98,
+ maxOutflow: {
+ value: 12.32,
+ time: '03-23 14:32'
+ }
+ }
+];
+
+const useStyles = makeStyles((theme) => ({
+ root: {
+ width: '100%',
+ // padding: '20px',
+ background: '#0d1117',
+ borderRadius: '8px',
+ position: 'relative',
+ },
+ tableContainer: {
+ background: 'transparent',
+ maxHeight: '100%',
+ overflowX: 'auto',
+ '&::-webkit-scrollbar': {
+ height: '8px',
+ },
+ '&::-webkit-scrollbar-track': {
+ // background: 'rgba(255, 255, 255, 0.1)',
+ borderRadius: '4px',
+ },
+ '&::-webkit-scrollbar-thumb': {
+ // background: 'rgba(255, 255, 255, 0.2)',
+ borderRadius: '4px',
+ '&:hover': {
+ background: 'rgba(255, 255, 255, 0.3)',
+ },
+ },
+ },
+ table: {
+ minWidth: 800,
+ // background: 'linear-gradient(180deg, rgba(22, 27, 34, 0.8) 0%, rgba(13, 17, 23, 0.8) 100%)',
+ backdropFilter: 'blur(10px)',
+ },
+ tableHead: {
+ background: 'linear-gradient(180deg, rgba(22, 27, 34, 0.9) 0%, rgba(22, 27, 34, 0.7) 100%)',
+ },
+ headerCell: {
+ color: '#c9d1d9',
+ fontWeight: 600,
+ textAlign: 'center',
+ borderBottom: '1px solid rgba(48, 54, 61, 0.6)',
+ borderRight: '1px solid rgba(48, 54, 61, 0.6)',
+ padding: 0,
+ whiteSpace: 'nowrap',
+ '&:last-child': {
+ borderRight: 'none',
+ },
+ },
+ cell: {
+ color: '#c9d1d9',
+ textAlign: 'center',
+ borderBottom: '1px solid rgba(48, 54, 61, 0.6)',
+ borderRight: '1px solid rgba(48, 54, 61, 0.6)',
+ padding: '12px 20px',
+ whiteSpace: 'nowrap',
+ '&:last-child': {
+ borderRight: 'none',
+ },
+ },
+ timeText: {
+ fontSize: '0.85em',
+ color: '#8b949e',
+ marginLeft: '4px',
+ },
+ scrollIndicator: {
+ position: 'absolute',
+ bottom: 0,
+ left: 0,
+ right: 0,
+ height: '4px',
+ background: 'rgba(255, 255, 255, 0.1)',
+ borderRadius: '2px',
+ },
+ scrollProgress: {
+ height: '100%',
+ background: 'rgba(255, 255, 255, 0.3)',
+ borderRadius: '2px',
+ width: '50%',
+ transform: 'translateX(0%)',
+ transition: 'transform 0.3s ease',
+ },
+}));
+
+const ReservoirTable = () => {
+ const classes = useStyles();
+ const [scrollPosition, setScrollPosition] = React.useState(0);
+
+ const handleScroll = (e) => {
+ const target = e.target;
+ const scrollLeft = target.scrollLeft;
+ const maxScroll = target.scrollWidth - target.clientWidth;
+ const position = (scrollLeft / maxScroll) * 100;
+ setScrollPosition(position);
+ };
+
+ const formatFlowCell = (data) => (
+ <>
+ {data.value}
+ ({data.time})
+ >
+ );
+
+ return (
+
+
+
+
+
+ 水库名称
+
+ 最大入库流量
(m³/s)
+
+
+ 总入库水量
(万m³)
+
+
+ 最大出库流量
(m³/s)
+
+
+
+
+ {reservoirData.map((item, index) => (
+
+ {item.name}
+ {formatFlowCell(item.maxInflow)}
+ {item.totalStorage}
+ {formatFlowCell(item.maxOutflow)}
+
+ ))}
+
+
+
+
+
+ );
+};
+
+export default ReservoirTable;
\ No newline at end of file
diff --git a/src/views/Home/panels/FzjcLayers/index.js b/src/views/Home/panels/FzjcLayers/index.js
index c55def0..b5d0b52 100644
--- a/src/views/Home/panels/FzjcLayers/index.js
+++ b/src/views/Home/panels/FzjcLayers/index.js
@@ -37,27 +37,7 @@ const StyledFormControl = styled(FormControl)({
}
});
function FzjcLayers({ style }) {
- const [value, setValue] = useState('');
-
- const handleChange = (event) => {
- setValue(event.target.value);
- };
- const classes = useStyles();
-
- const layerVisible = useSelector(getLayerVisible);
- console.log('layerVisible', layerVisible);
- const dispath = useDispatch();
-
- const layerVisibleChanged = (event) => {
- const vo = { [event.target.name]: event.target.checked };
- dispath.map.setLayerVisible(vo);
- };
-
- const showList = (type) => {
- dispath.fzjcview.setListType(type);
- }
-
- const shData =[
+ const shData =[
{
"id": 125973,
"reviewStatus": "2",
@@ -158,6 +138,30 @@ function FzjcLayers({ style }) {
"updateTime": "2025-05-29 11:40:08",
}
]
+ const [value, setValue] = useState('');
+ const [shFilterData, setShFilterData] = useState(shData)
+ const handleChange = (event) => {
+ const val = event.target.value
+ setValue(val);
+ const newData = shData.filter(item => val ? item.levels == val:item)
+ setShFilterData(newData)
+ };
+ const classes = useStyles();
+
+ const layerVisible = useSelector(getLayerVisible);
+ console.log('layerVisible', layerVisible);
+ const dispath = useDispatch();
+
+ const layerVisibleChanged = (event) => {
+ const vo = { [event.target.name]: event.target.checked };
+ dispath.map.setLayerVisible(vo);
+ };
+
+ const showList = (type) => {
+ dispath.fzjcview.setListType(type);
+ }
+
+
const dispatch = useDispatch();
const zt = {
@@ -232,16 +236,18 @@ function FzjcLayers({ style }) {