From 394fd58b5ac68d236c1a003874d22890a902ed5a Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Wed, 21 May 2025 15:23:13 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E6=B0=B4=E6=94=BF=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/sz.png | Bin 0 -> 80088 bytes src/models/map/index.js | 2 +- src/models/map/layout.js | 10 +- src/views/Home/PanelIndex.js | 31 +++- src/views/Home/panels/LlWatch/index.js | 2 +- src/views/Home/panels/SzSta/OverallContent.js | 149 ++++++++++++++++ src/views/Home/panels/SzSta/index.js | 20 +++ src/views/Home/panels/SzSta/index.less | 38 ++++ src/views/Home/panels/SzWatch/Setting.js | 51 ++++++ src/views/Home/panels/SzWatch/index.js | 153 ++++++++++++++++ src/views/Home/panels/Szqytj/Setting.js | 51 ++++++ src/views/Home/panels/Szqytj/index.js | 166 ++++++++++++++++++ src/views/Home/panels/Szwtqytj/Setting.js | 51 ++++++ src/views/Home/panels/Szwtqytj/index.js | 150 ++++++++++++++++ src/views/Home/panels/WhSta/OverallContent.js | 141 +++++++++++++++ src/views/Home/panels/WhSta/index.js | 20 +++ src/views/Home/panels/WhSta/index.less | 38 ++++ src/views/Home/panels/Whjl/Setting.js | 51 ++++++ src/views/Home/panels/Whjl/index.js | 146 +++++++++++++++ src/views/Home/panels/Whwtqd/Setting.js | 51 ++++++ src/views/Home/panels/Whwtqd/index.js | 139 +++++++++++++++ src/views/Home/panels/XcSta/OverallContent.js | 141 +++++++++++++++ src/views/Home/panels/XcSta/index.js | 20 +++ src/views/Home/panels/XcSta/index.less | 38 ++++ src/views/Home/panels/Xcjl/Setting.js | 51 ++++++ src/views/Home/panels/Xcjl/index.js | 146 +++++++++++++++ src/views/Home/panels/Xcwtqd/Setting.js | 51 ++++++ src/views/Home/panels/Xcwtqd/index.js | 139 +++++++++++++++ 28 files changed, 2041 insertions(+), 5 deletions(-) create mode 100644 public/assets/sz.png create mode 100644 src/views/Home/panels/SzSta/OverallContent.js create mode 100644 src/views/Home/panels/SzSta/index.js create mode 100644 src/views/Home/panels/SzSta/index.less create mode 100644 src/views/Home/panels/SzWatch/Setting.js create mode 100644 src/views/Home/panels/SzWatch/index.js create mode 100644 src/views/Home/panels/Szqytj/Setting.js create mode 100644 src/views/Home/panels/Szqytj/index.js create mode 100644 src/views/Home/panels/Szwtqytj/Setting.js create mode 100644 src/views/Home/panels/Szwtqytj/index.js create mode 100644 src/views/Home/panels/WhSta/OverallContent.js create mode 100644 src/views/Home/panels/WhSta/index.js create mode 100644 src/views/Home/panels/WhSta/index.less create mode 100644 src/views/Home/panels/Whjl/Setting.js create mode 100644 src/views/Home/panels/Whjl/index.js create mode 100644 src/views/Home/panels/Whwtqd/Setting.js create mode 100644 src/views/Home/panels/Whwtqd/index.js create mode 100644 src/views/Home/panels/XcSta/OverallContent.js create mode 100644 src/views/Home/panels/XcSta/index.js create mode 100644 src/views/Home/panels/XcSta/index.less create mode 100644 src/views/Home/panels/Xcjl/Setting.js create mode 100644 src/views/Home/panels/Xcjl/index.js create mode 100644 src/views/Home/panels/Xcwtqd/Setting.js create mode 100644 src/views/Home/panels/Xcwtqd/index.js diff --git a/public/assets/sz.png b/public/assets/sz.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2daf34acd0e1e3a8ae19438f8cfb5d59a46a6c GIT binary patch literal 80088 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 } else if (name == '土壤墒情监测') { return + }else if (name == '水质监测') { + return } else if (name == '视频监控') { return } else if (name === '预警信息管理') { @@ -106,9 +117,25 @@ export default function PanelIndex({ name, style, ...params }) { } else if (name === '降雨预警') { return } else if (name === '工程巡查') { - return + return } else if (name === '安全监测') { return + } else if (name === '本月巡查记录') { + return + } else if (name === '待处理巡查问题清单') { + return + }else if (name === '本月工程维护') { + return + } else if (name === '待处理维护问题清单') { + return + }else if (name === '维护统计') { + return + }else if (name === '水政统计') { + return + }else if (name === '区域统计') { + return + }else if (name === '本月水政巡查问题统计') { + return } return ( diff --git a/src/views/Home/panels/LlWatch/index.js b/src/views/Home/panels/LlWatch/index.js index cf5f429..45e0288 100644 --- a/src/views/Home/panels/LlWatch/index.js +++ b/src/views/Home/panels/LlWatch/index.js @@ -31,7 +31,7 @@ function HDReal({ style }) { const dispatch = useDispatch(); const tableRzFilter = useSelector(s => s.realview.tableRzFilter); const hdAutoRefresh = useSelector(s => s.realview.hdAutoRefresh); - const t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0); + // const t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0); // let { data } = useRequest(HDRealPromise.get, t); const [setting, showSetting] = useState(false); diff --git a/src/views/Home/panels/SzSta/OverallContent.js b/src/views/Home/panels/SzSta/OverallContent.js new file mode 100644 index 0000000..fb37000 --- /dev/null +++ b/src/views/Home/panels/SzSta/OverallContent.js @@ -0,0 +1,149 @@ +import { Button, makeStyles } from '@material-ui/core'; +import { Email } from '@material-ui/icons'; +import React from 'react'; +import { useDispatch } from 'react-redux'; +import config from '../../../../config'; +import { bxstr, drpRealGet, skRealGet } from '../../../../models/_/real'; +import { strNumber } from '../../../../utils/tools'; +import { InfoPopNames } from '../../InfoPops'; + +const useStyles = makeStyles({ + root: { + padding: '1.5rem 0.75rem 0.75rem 0.75rem', + color: 'rgb(224, 246, 247)', + fontSize: '0.9rem', + lineHeight: '1.8rem', + }, + + titleDate: { + fontSize: '1.2rem', + margin: '0.2rem', + color: '#00deff', + }, + + number: { + color: '#ffd220', + fontSize: '1.2rem', + margin: '0.2rem', + }, + + sttype: { + color: '#92f0ff', + }, + stname: { + fontWeight: 'bold', + fontSize: '1rem', + margin: '0.25rem', + cursor: 'pointer' + }, + + grid: { + display: 'flex', + justifyContent: 'space-around', + marginBottom: '1rem', + textAlign: 'center', + + '& .value': { + fontSize: '1.8rem', + color: '#6fe9fd', + lineHeight: '2rem' + }, + + + '& .key': { + fontSize: '0.8rem', + color: '#aaa', + }, + }, + + action: { + textAlign: 'right', + color: '#fff', + } +}) + +export default function OverallContent({ data }) { + const classes = useStyles(); + const dispatch = useDispatch(); + + const { + drpInfo, + skInfo, + tm1, tm2, + } = data || {}; + + const { h24, h1, h3, h6 } = drpInfo || {}; + + const _showRecord = (record, poptype) => { + if (record) { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: poptype, properties: record, coordinates: [lgtd, lttd] }); + dispatch.runtime.setCameraTarget({ + center: [lgtd, lttd], + zoom: 15, + pitch: config.poiPitch, + }); + } + } + } + + const showRecord = (obj) => { + if (!obj) { + return; + } + + const { type } = obj; + if (type === 'sk') { + skRealGet(obj.stcd).then((record) => { + _showRecord(record, InfoPopNames.RealSkPop) + }) + } else { + drpRealGet(obj).then((record) => { + _showRecord(record, InfoPopNames.RealDrpPop) + }); + } + } + + const doBx = () => { + bxstr().then((data) => { + dispatch.runtime.setInfoDlg({ + layerId: 'OverallSmtp', + properties: { txt: data } + }) + }); + } + + return ( +

+
+
+
累计巡查次数
+
32
+
+
+
本月巡查次数
+
5
+
+
+
涉水事件累计
+
+ 1 +
+ +
+
+
本月事件数量
+
50
+
+
+
处理中事件
+
24
+
+
+
+ ) +} diff --git a/src/views/Home/panels/SzSta/index.js b/src/views/Home/panels/SzSta/index.js new file mode 100644 index 0000000..5ee445f --- /dev/null +++ b/src/views/Home/panels/SzSta/index.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { OverallPromise } from '../../../../models/_/real'; +import useRequest from '../../../../utils/useRequest'; +import PanelBox from '../../components/PanelBox'; +import OverallContent from './OverallContent'; + +export default function Overall({ style }) { + + const { data } = useRequest(OverallPromise.get); + + return ( + + + + ) +} diff --git a/src/views/Home/panels/SzSta/index.less b/src/views/Home/panels/SzSta/index.less new file mode 100644 index 0000000..ee34c9b --- /dev/null +++ b/src/views/Home/panels/SzSta/index.less @@ -0,0 +1,38 @@ +.dppanel-overall { + padding: 0.75rem; + color: rgb(224, 246, 247); + font-size: 0.8rem; + line-height: 1.8rem; + + .title-date { + font-size: 1.2rem; + margin: 0.2rem; + color: #00deff; + } + + .number { + color: #ffd220; + font-size: 1.2rem; + margin: 0.2rem; + } + + .sttype { + color: #92f0ff; + } + .stname { + font-weight: bold; + font-size: 1rem; + margin: 0.25rem; + } + + .sycm { + height: 5rem; + padding-top: 0.75rem; + ul{ margin-left:-.5rem;margin-right:-.5rem; padding: .16rem 0;} + li{ float: left; width: 33.33%; text-align: center; position: relative} + li:before{ position:absolute; content: ""; height:30%; width: 1px; background: rgba(255,255,255,.1); right: 0; top: 15%;} + li:last-child:before{ width: 0;} + li h2{ font-size:2rem; color: #6fe9fd; margin: 0; font-family: 'electronicFont';margin-bottom: 0.5rem;} + li span{ font-size:1rem; color: #fff; opacity: .5;} + } +} \ No newline at end of file diff --git a/src/views/Home/panels/SzWatch/Setting.js b/src/views/Home/panels/SzWatch/Setting.js new file mode 100644 index 0000000..fd1c4ef --- /dev/null +++ b/src/views/Home/panels/SzWatch/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 ( + +
+ + 河道水位显示设置 + +
+ +
+ 显示河道水位图层 + dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })} + /> +
+
+
+
+
+
+ ) +} + +export default Setting; diff --git a/src/views/Home/panels/SzWatch/index.js b/src/views/Home/panels/SzWatch/index.js new file mode 100644 index 0000000..32a7ec4 --- /dev/null +++ b/src/views/Home/panels/SzWatch/index.js @@ -0,0 +1,153 @@ +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'; + +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 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 SOIL_STATIONS = [ + { + id: 1, + name: '宋埠镇站', + location: { + lat: 31.1725, + lng: 115.0139 + } + }, + { + id: 2, + name: '乘马岗镇站', + location: { + lat: 31.2503, + lng: 115.1242 + } + }, + { + id: 3, + name: '白果镇站', + location: { + lat: 31.0958, + lng: 115.2417 + } + }, + { + id: 4, + name: '福田河站', + location: { + lat: 31.1847, + lng: 115.1536 + } + }, + { + id: 5, + name: '黄土岗镇站', + location: { + lat: 31.2158, + lng: 115.0825 + } + } +]; + const showData = Array(10).fill(0).map((o, i) => ({ + stnm:SOIL_STATIONS[i%2]?.name, + id:i + 1, + time: moment() + .subtract(i * 60 + randomMinutes, 'minutes') + .format(format), + sd: (Math.random() * 100).toFixed(2), + })) + + const flyTo = (record) => { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealHDPop, 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)}> */} + + } + > + + + ) +} + +export default HDReal; diff --git a/src/views/Home/panels/Szqytj/Setting.js b/src/views/Home/panels/Szqytj/Setting.js new file mode 100644 index 0000000..fd1c4ef --- /dev/null +++ b/src/views/Home/panels/Szqytj/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 ( + +
+ + 河道水位显示设置 + +
+ +
+ 显示河道水位图层 + dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })} + /> +
+
+
+
+
+
+ ) +} + +export default Setting; diff --git a/src/views/Home/panels/Szqytj/index.js b/src/views/Home/panels/Szqytj/index.js new file mode 100644 index 0000000..8e71589 --- /dev/null +++ b/src/views/Home/panels/Szqytj/index.js @@ -0,0 +1,166 @@ +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'; + + +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 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 showData = Array(10).fill(0).map((o,i) => ({ + id:`#${i + 1}`, + cl: (Math.random() * 100).toFixed(0), + kd: (Math.random() * 100).toFixed(0), + ll:(Math.random() * 100).toFixed(0) + })) + + const flyTo = (record) => { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealHDPop, 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); + } + + const renderStatus = (row) => { + let bz = '运行' + switch (row.status) { + case 0: + bz = '停止' + break; + case 1: + bz = '运行' + break; + case 2: + bz = '故障' + break; + case 3: + bz = '维护中' + break; + case 4: + bz = '待机' + break; + default: + break; + } + return bz + } + + return ( + + // toggleStType('sh')}>山洪 + // toggleStType('sw')}>水文 + // + // } + extra={ + <> + + {/* showSetting(true)}> */} + + } + > + + + + + 区域 + 巡查次数 + 事件数量 + 处理中 + {/* 警戒水位 */} + + + + {showData.map((row) => ( + + +
{row.id}
+
+ +
flyTo(row)} + >{row.kd}
+
+ {row.ll} + {row.cl} + {/* {rzRender(row.rz, row.grz)} + {rzRender(row.rz, row.wrz)} */} +
+ ))} +
+
+
+ { + setting && showSetting(false)} /> + } +
+ ) +} + +export default HDReal; diff --git a/src/views/Home/panels/Szwtqytj/Setting.js b/src/views/Home/panels/Szwtqytj/Setting.js new file mode 100644 index 0000000..fd1c4ef --- /dev/null +++ b/src/views/Home/panels/Szwtqytj/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 ( + +
+ + 河道水位显示设置 + +
+ +
+ 显示河道水位图层 + dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })} + /> +
+
+
+
+
+
+ ) +} + +export default Setting; diff --git a/src/views/Home/panels/Szwtqytj/index.js b/src/views/Home/panels/Szwtqytj/index.js new file mode 100644 index 0000000..b5c4f30 --- /dev/null +++ b/src/views/Home/panels/Szwtqytj/index.js @@ -0,0 +1,150 @@ +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'; + +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 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 = Array(10).fill(0).map((o,i) => ({ + id: `#${i + 1}`, + time: moment() + .subtract(i * 60 + randomMinutes, 'minutes') + .format(format), + cl: "--", + kd: (Math.random() * 100).toFixed(0), + ll:(Math.random() * 100).toFixed(0) + })) + + const flyTo = (record) => { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealHDPop, 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)}> */} + + } + > + + + + + 日期 + 管理单位 + 问题类型 + 处理状态 + 问题描述 + 操作 + {/* 警戒水位 */} + + + + {showData.map((row) => ( + + +
{row.time}
+
+ +
flyTo(row)} + >{row.cl}
+
+ {row.cl} + {row.cl} + {row.cl} + {row.cl} + {/* {rzRender(row.rz, row.grz)} + {rzRender(row.rz, row.wrz)} */} +
+ ))} +
+
+
+ { + setting && showSetting(false)} /> + } +
+ ) +} + +export default HDReal; diff --git a/src/views/Home/panels/WhSta/OverallContent.js b/src/views/Home/panels/WhSta/OverallContent.js new file mode 100644 index 0000000..3fb9c4b --- /dev/null +++ b/src/views/Home/panels/WhSta/OverallContent.js @@ -0,0 +1,141 @@ +import { Button, makeStyles } from '@material-ui/core'; +import { Email } from '@material-ui/icons'; +import React from 'react'; +import { useDispatch } from 'react-redux'; +import config from '../../../../config'; +import { bxstr, drpRealGet, skRealGet } from '../../../../models/_/real'; +import { strNumber } from '../../../../utils/tools'; +import { InfoPopNames } from '../../InfoPops'; + +const useStyles = makeStyles({ + root: { + padding: '1.5rem 0.75rem 0.75rem 0.75rem', + color: 'rgb(224, 246, 247)', + fontSize: '0.9rem', + lineHeight: '1.8rem', + }, + + titleDate: { + fontSize: '1.2rem', + margin: '0.2rem', + color: '#00deff', + }, + + number: { + color: '#ffd220', + fontSize: '1.2rem', + margin: '0.2rem', + }, + + sttype: { + color: '#92f0ff', + }, + stname: { + fontWeight: 'bold', + fontSize: '1rem', + margin: '0.25rem', + cursor: 'pointer' + }, + + grid: { + display: 'flex', + justifyContent: 'space-around', + marginBottom: '1rem', + textAlign: 'center', + + '& .value': { + fontSize: '1.8rem', + color: '#6fe9fd', + lineHeight: '2rem' + }, + + + '& .key': { + fontSize: '0.8rem', + color: '#aaa', + }, + }, + + action: { + textAlign: 'right', + color: '#fff', + } +}) + +export default function OverallContent({ data }) { + const classes = useStyles(); + const dispatch = useDispatch(); + + const { + drpInfo, + skInfo, + tm1, tm2, + } = data || {}; + + const { h24, h1, h3, h6 } = drpInfo || {}; + + const _showRecord = (record, poptype) => { + if (record) { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: poptype, properties: record, coordinates: [lgtd, lttd] }); + dispatch.runtime.setCameraTarget({ + center: [lgtd, lttd], + zoom: 15, + pitch: config.poiPitch, + }); + } + } + } + + const showRecord = (obj) => { + if (!obj) { + return; + } + + const { type } = obj; + if (type === 'sk') { + skRealGet(obj.stcd).then((record) => { + _showRecord(record, InfoPopNames.RealSkPop) + }) + } else { + drpRealGet(obj).then((record) => { + _showRecord(record, InfoPopNames.RealDrpPop) + }); + } + } + + const doBx = () => { + bxstr().then((data) => { + dispatch.runtime.setInfoDlg({ + layerId: 'OverallSmtp', + properties: { txt: data } + }) + }); + } + + return ( +
+
+
+
2
+
本月维护
+
+
+
5
+
本年维护
+
+
+
showRecord(h24?.max)} + > + 1 +
+
未处理异常
+
+
+
+ ) +} diff --git a/src/views/Home/panels/WhSta/index.js b/src/views/Home/panels/WhSta/index.js new file mode 100644 index 0000000..5507ba4 --- /dev/null +++ b/src/views/Home/panels/WhSta/index.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { OverallPromise } from '../../../../models/_/real'; +import useRequest from '../../../../utils/useRequest'; +import PanelBox from '../../components/PanelBox'; +import OverallContent from './OverallContent'; + +export default function Overall({ style }) { + + const { data } = useRequest(OverallPromise.get); + + return ( + + + + ) +} diff --git a/src/views/Home/panels/WhSta/index.less b/src/views/Home/panels/WhSta/index.less new file mode 100644 index 0000000..ee34c9b --- /dev/null +++ b/src/views/Home/panels/WhSta/index.less @@ -0,0 +1,38 @@ +.dppanel-overall { + padding: 0.75rem; + color: rgb(224, 246, 247); + font-size: 0.8rem; + line-height: 1.8rem; + + .title-date { + font-size: 1.2rem; + margin: 0.2rem; + color: #00deff; + } + + .number { + color: #ffd220; + font-size: 1.2rem; + margin: 0.2rem; + } + + .sttype { + color: #92f0ff; + } + .stname { + font-weight: bold; + font-size: 1rem; + margin: 0.25rem; + } + + .sycm { + height: 5rem; + padding-top: 0.75rem; + ul{ margin-left:-.5rem;margin-right:-.5rem; padding: .16rem 0;} + li{ float: left; width: 33.33%; text-align: center; position: relative} + li:before{ position:absolute; content: ""; height:30%; width: 1px; background: rgba(255,255,255,.1); right: 0; top: 15%;} + li:last-child:before{ width: 0;} + li h2{ font-size:2rem; color: #6fe9fd; margin: 0; font-family: 'electronicFont';margin-bottom: 0.5rem;} + li span{ font-size:1rem; color: #fff; opacity: .5;} + } +} \ No newline at end of file diff --git a/src/views/Home/panels/Whjl/Setting.js b/src/views/Home/panels/Whjl/Setting.js new file mode 100644 index 0000000..fd1c4ef --- /dev/null +++ b/src/views/Home/panels/Whjl/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 ( + +
+ + 河道水位显示设置 + +
+ +
+ 显示河道水位图层 + dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })} + /> +
+
+
+
+
+
+ ) +} + +export default Setting; diff --git a/src/views/Home/panels/Whjl/index.js b/src/views/Home/panels/Whjl/index.js new file mode 100644 index 0000000..73218f7 --- /dev/null +++ b/src/views/Home/panels/Whjl/index.js @@ -0,0 +1,146 @@ +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'; + +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 t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0); + // let { data } = useRequest(HDRealPromise.get, t); + const [setting, showSetting] = useState(false); + + const flyTo = (record) => { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealHDPop, 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 randomMinutes = Math.floor(Math.random() * 60) + 1; + const format = 'YYYY-MM-DD HH:mm'; + const familyNames = [ + '张', '李', '王', '刘', '陈', '杨', '黄', '赵', '周', '吴', + '徐', '孙', '马', '朱', '胡', '郭', '何', '高', '林', '郑' +]; + +// 名字列表(常用字) +const givenNames = [ + '伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', + '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞' + ]; + + const generateRandomName = () => { + const familyName = familyNames[Math.floor(Math.random() * familyNames.length)]; + const givenName = givenNames[Math.floor(Math.random() * givenNames.length)]; + return familyName + givenName; + }; +const showData = Array(2).fill(0).map((o, i) => ({ + id:i + 1, + time: moment() + .subtract(i * 60 + randomMinutes, 'minutes') + .format(format), + status:0, + name:generateRandomName() + })) + + const toggleAutoRefresh = () => { + dispatch.realview.setHdAutoRefresh(!hdAutoRefresh); + } + + + + return ( + + // toggleStType('sh')}>山洪 + // toggleStType('sw')}>水文 + // + // } + extra={ + <> + + {/* showSetting(true)}> */} + + } + > + + + + + 维护完成日期 + 维护人 + 异常项次 + {/* 监测时间 */} + {/* 警戒水位 */} + + + + {showData.map((row) => ( + + +
{row.time}
+
+ +
flyTo(row)} + >{row.name}
+
+ {row.status} + {/* {row.time} */} + {/* {rzRender(row.rz, row.grz)} + {rzRender(row.rz, row.wrz)} */} +
+ ))} +
+
+
+ { + setting && showSetting(false)} /> + } +
+ ) +} + +export default HDReal; diff --git a/src/views/Home/panels/Whwtqd/Setting.js b/src/views/Home/panels/Whwtqd/Setting.js new file mode 100644 index 0000000..fd1c4ef --- /dev/null +++ b/src/views/Home/panels/Whwtqd/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 ( + +
+ + 河道水位显示设置 + +
+ +
+ 显示河道水位图层 + dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })} + /> +
+
+
+
+
+
+ ) +} + +export default Setting; diff --git a/src/views/Home/panels/Whwtqd/index.js b/src/views/Home/panels/Whwtqd/index.js new file mode 100644 index 0000000..9a23c40 --- /dev/null +++ b/src/views/Home/panels/Whwtqd/index.js @@ -0,0 +1,139 @@ +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'; + +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 t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0); + // let { data } = useRequest(HDRealPromise.get, t); + const [setting, showSetting] = useState(false); + + const flyTo = (record) => { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealHDPop, 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 randomMinutes = Math.floor(Math.random() * 60) + 1; + const format = 'YYYY-MM-DD HH:mm'; + const familyNames = [ + '张', '李', '王', '刘', '陈', '杨', '黄', '赵', '周', '吴', + '徐', '孙', '马', '朱', '胡', '郭', '何', '高', '林', '郑' +]; + +// 名字列表(常用字) +const givenNames = [ + '伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', + '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞' + ]; + + const generateRandomName = () => { + const familyName = familyNames[Math.floor(Math.random() * familyNames.length)]; + const givenName = givenNames[Math.floor(Math.random() * givenNames.length)]; + return familyName + givenName; + }; +const showData = Array(30).fill(0).map((o, i) => ({ + id:i + 1, + time: moment() + .subtract(i+ randomMinutes, 'day').subtract(i * 60 + randomMinutes, 'minutes') + .format(format), + status:0, + name: generateRandomName(), + des:'--' + })) + + const toggleAutoRefresh = () => { + dispatch.realview.setHdAutoRefresh(!hdAutoRefresh); + } + + + + return ( + + // toggleStType('sh')}>山洪 + // toggleStType('sw')}>水文 + // + // } + extra={ + <> + + {/* showSetting(true)}> */} + + } + > + + + + + 上报时间 + 维护问题描述 + {/* 监测时间 */} + {/* 警戒水位 */} + + + + {showData.map((row) => ( + + +
{row.time}
+
+ +
{row.des}
+
+ +
+ ))} +
+
+
+ { + setting && showSetting(false)} /> + } +
+ ) +} + +export default HDReal; diff --git a/src/views/Home/panels/XcSta/OverallContent.js b/src/views/Home/panels/XcSta/OverallContent.js new file mode 100644 index 0000000..4db559d --- /dev/null +++ b/src/views/Home/panels/XcSta/OverallContent.js @@ -0,0 +1,141 @@ +import { Button, makeStyles } from '@material-ui/core'; +import { Email } from '@material-ui/icons'; +import React from 'react'; +import { useDispatch } from 'react-redux'; +import config from '../../../../config'; +import { bxstr, drpRealGet, skRealGet } from '../../../../models/_/real'; +import { strNumber } from '../../../../utils/tools'; +import { InfoPopNames } from '../../InfoPops'; + +const useStyles = makeStyles({ + root: { + padding: '1.5rem 0.75rem 0.75rem 0.75rem', + color: 'rgb(224, 246, 247)', + fontSize: '0.9rem', + lineHeight: '1.8rem', + }, + + titleDate: { + fontSize: '1.2rem', + margin: '0.2rem', + color: '#00deff', + }, + + number: { + color: '#ffd220', + fontSize: '1.2rem', + margin: '0.2rem', + }, + + sttype: { + color: '#92f0ff', + }, + stname: { + fontWeight: 'bold', + fontSize: '1rem', + margin: '0.25rem', + cursor: 'pointer' + }, + + grid: { + display: 'flex', + justifyContent: 'space-around', + marginBottom: '1rem', + textAlign: 'center', + + '& .value': { + fontSize: '1.8rem', + color: '#6fe9fd', + lineHeight: '2rem' + }, + + + '& .key': { + fontSize: '0.8rem', + color: '#aaa', + }, + }, + + action: { + textAlign: 'right', + color: '#fff', + } +}) + +export default function OverallContent({ data }) { + const classes = useStyles(); + const dispatch = useDispatch(); + + const { + drpInfo, + skInfo, + tm1, tm2, + } = data || {}; + + const { h24, h1, h3, h6 } = drpInfo || {}; + + const _showRecord = (record, poptype) => { + if (record) { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: poptype, properties: record, coordinates: [lgtd, lttd] }); + dispatch.runtime.setCameraTarget({ + center: [lgtd, lttd], + zoom: 15, + pitch: config.poiPitch, + }); + } + } + } + + const showRecord = (obj) => { + if (!obj) { + return; + } + + const { type } = obj; + if (type === 'sk') { + skRealGet(obj.stcd).then((record) => { + _showRecord(record, InfoPopNames.RealSkPop) + }) + } else { + drpRealGet(obj).then((record) => { + _showRecord(record, InfoPopNames.RealDrpPop) + }); + } + } + + const doBx = () => { + bxstr().then((data) => { + dispatch.runtime.setInfoDlg({ + layerId: 'OverallSmtp', + properties: { txt: data } + }) + }); + } + + return ( +
+
+
+
3
+
本月巡查
+
+
+
9
+
本年巡查
+
+
+
showRecord(h24?.max)} + > + 6 +
+
未处理异常
+
+
+
+ ) +} diff --git a/src/views/Home/panels/XcSta/index.js b/src/views/Home/panels/XcSta/index.js new file mode 100644 index 0000000..9738b8f --- /dev/null +++ b/src/views/Home/panels/XcSta/index.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { OverallPromise } from '../../../../models/_/real'; +import useRequest from '../../../../utils/useRequest'; +import PanelBox from '../../components/PanelBox'; +import OverallContent from './OverallContent'; + +export default function Overall({ style }) { + + const { data } = useRequest(OverallPromise.get); + + return ( + + + + ) +} diff --git a/src/views/Home/panels/XcSta/index.less b/src/views/Home/panels/XcSta/index.less new file mode 100644 index 0000000..ee34c9b --- /dev/null +++ b/src/views/Home/panels/XcSta/index.less @@ -0,0 +1,38 @@ +.dppanel-overall { + padding: 0.75rem; + color: rgb(224, 246, 247); + font-size: 0.8rem; + line-height: 1.8rem; + + .title-date { + font-size: 1.2rem; + margin: 0.2rem; + color: #00deff; + } + + .number { + color: #ffd220; + font-size: 1.2rem; + margin: 0.2rem; + } + + .sttype { + color: #92f0ff; + } + .stname { + font-weight: bold; + font-size: 1rem; + margin: 0.25rem; + } + + .sycm { + height: 5rem; + padding-top: 0.75rem; + ul{ margin-left:-.5rem;margin-right:-.5rem; padding: .16rem 0;} + li{ float: left; width: 33.33%; text-align: center; position: relative} + li:before{ position:absolute; content: ""; height:30%; width: 1px; background: rgba(255,255,255,.1); right: 0; top: 15%;} + li:last-child:before{ width: 0;} + li h2{ font-size:2rem; color: #6fe9fd; margin: 0; font-family: 'electronicFont';margin-bottom: 0.5rem;} + li span{ font-size:1rem; color: #fff; opacity: .5;} + } +} \ No newline at end of file diff --git a/src/views/Home/panels/Xcjl/Setting.js b/src/views/Home/panels/Xcjl/Setting.js new file mode 100644 index 0000000..fd1c4ef --- /dev/null +++ b/src/views/Home/panels/Xcjl/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 ( + +
+ + 河道水位显示设置 + +
+ +
+ 显示河道水位图层 + dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })} + /> +
+
+
+
+
+
+ ) +} + +export default Setting; diff --git a/src/views/Home/panels/Xcjl/index.js b/src/views/Home/panels/Xcjl/index.js new file mode 100644 index 0000000..21b1f26 --- /dev/null +++ b/src/views/Home/panels/Xcjl/index.js @@ -0,0 +1,146 @@ +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'; + +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 t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0); + // let { data } = useRequest(HDRealPromise.get, t); + const [setting, showSetting] = useState(false); + + const flyTo = (record) => { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealHDPop, 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 randomMinutes = Math.floor(Math.random() * 60) + 1; + const format = 'YYYY-MM-DD HH:mm'; + const familyNames = [ + '张', '李', '王', '刘', '陈', '杨', '黄', '赵', '周', '吴', + '徐', '孙', '马', '朱', '胡', '郭', '何', '高', '林', '郑' +]; + +// 名字列表(常用字) +const givenNames = [ + '伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', + '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞' + ]; + + const generateRandomName = () => { + const familyName = familyNames[Math.floor(Math.random() * familyNames.length)]; + const givenName = givenNames[Math.floor(Math.random() * givenNames.length)]; + return familyName + givenName; + }; +const showData = Array(3).fill(0).map((o, i) => ({ + id:i + 1, + time: moment() + .subtract(i * 60 + randomMinutes, 'minutes') + .format(format), + status:0, + name:generateRandomName() + })) + + const toggleAutoRefresh = () => { + dispatch.realview.setHdAutoRefresh(!hdAutoRefresh); + } + + + + return ( + + // toggleStType('sh')}>山洪 + // toggleStType('sw')}>水文 + // + // } + extra={ + <> + + {/* showSetting(true)}> */} + + } + > + + + + + 巡查完成日期 + 巡查人 + 异常项次 + {/* 监测时间 */} + {/* 警戒水位 */} + + + + {showData.map((row) => ( + + +
{row.time}
+
+ +
flyTo(row)} + >{row.name}
+
+ {row.status} + {/* {row.time} */} + {/* {rzRender(row.rz, row.grz)} + {rzRender(row.rz, row.wrz)} */} +
+ ))} +
+
+
+ { + setting && showSetting(false)} /> + } +
+ ) +} + +export default HDReal; diff --git a/src/views/Home/panels/Xcwtqd/Setting.js b/src/views/Home/panels/Xcwtqd/Setting.js new file mode 100644 index 0000000..fd1c4ef --- /dev/null +++ b/src/views/Home/panels/Xcwtqd/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 ( + +
+ + 河道水位显示设置 + +
+ +
+ 显示河道水位图层 + dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })} + /> +
+
+
+
+
+
+ ) +} + +export default Setting; diff --git a/src/views/Home/panels/Xcwtqd/index.js b/src/views/Home/panels/Xcwtqd/index.js new file mode 100644 index 0000000..eddcbd0 --- /dev/null +++ b/src/views/Home/panels/Xcwtqd/index.js @@ -0,0 +1,139 @@ +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'; + +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 t = useRefresh(hdAutoRefresh ? 60 * 1000 : 0); + // let { data } = useRequest(HDRealPromise.get, t); + const [setting, showSetting] = useState(false); + + const flyTo = (record) => { + const { lgtd, lttd } = record; + if (lgtd && lttd) { + dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealHDPop, 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 randomMinutes = Math.floor(Math.random() * 60) + 1; + const format = 'YYYY-MM-DD HH:mm'; + const familyNames = [ + '张', '李', '王', '刘', '陈', '杨', '黄', '赵', '周', '吴', + '徐', '孙', '马', '朱', '胡', '郭', '何', '高', '林', '郑' +]; + +// 名字列表(常用字) +const givenNames = [ + '伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', + '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞' + ]; + + const generateRandomName = () => { + const familyName = familyNames[Math.floor(Math.random() * familyNames.length)]; + const givenName = givenNames[Math.floor(Math.random() * givenNames.length)]; + return familyName + givenName; + }; +const showData = Array(30).fill(0).map((o, i) => ({ + id:i + 1, + time: moment() + .subtract(i+ randomMinutes, 'day').subtract(i * 60 + randomMinutes, 'minutes') + .format(format), + status:0, + name: generateRandomName(), + des:'--' + })) + + const toggleAutoRefresh = () => { + dispatch.realview.setHdAutoRefresh(!hdAutoRefresh); + } + + + + return ( + + // toggleStType('sh')}>山洪 + // toggleStType('sw')}>水文 + // + // } + extra={ + <> + + {/* showSetting(true)}> */} + + } + > + + + + + 上报时间 + 巡检问题描述 + {/* 监测时间 */} + {/* 警戒水位 */} + + + + {showData.map((row) => ( + + +
{row.time}
+
+ +
{row.des}
+
+ +
+ ))} +
+
+
+ { + setting && showSetting(false)} /> + } +
+ ) +} + +export default HDReal;