merge: 合并冲突
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 404 B |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 206 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
|
@ -70,6 +70,14 @@
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"pixelRatio": 1,
|
"pixelRatio": 1,
|
||||||
"visible": true
|
"visible": true
|
||||||
|
},
|
||||||
|
"巡查": {
|
||||||
|
"width": 32,
|
||||||
|
"height": 32,
|
||||||
|
"x": 128,
|
||||||
|
"y": 32,
|
||||||
|
"pixelRatio": 1,
|
||||||
|
"visible": true
|
||||||
},
|
},
|
||||||
"水库-离线": {
|
"水库-离线": {
|
||||||
"width": 32,
|
"width": 32,
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 46 KiB |
|
|
@ -467,8 +467,7 @@ const map = {
|
||||||
dispatch.runtime.setLayerSetting({ planeArea: null });
|
dispatch.runtime.setLayerSetting({ planeArea: null });
|
||||||
dispatch.map.setLayerVisible({ ContourLayer: false });
|
dispatch.map.setLayerVisible({ ContourLayer: false });
|
||||||
}
|
}
|
||||||
|
if (id === 201) {
|
||||||
if (id === 201 || id === 205) {
|
|
||||||
dispatch.map.setLayerSetting({ dom: false });
|
dispatch.map.setLayerSetting({ dom: false });
|
||||||
map.setLayoutProperty('热力图', 'visibility', 'visible');
|
map.setLayoutProperty('热力图', 'visibility', 'visible');
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ export default function calcLayout(view, rightStack, hidePanels) {
|
||||||
} else if (view === 206) {
|
} else if (view === 206) {
|
||||||
left = [
|
left = [
|
||||||
{ key: '天气' },
|
{ key: '天气' },
|
||||||
{ key: '水库管理', style: { height: '40rem', flexGrow: 1 } },
|
{ key: '巡查任务总览', style: { height: '40rem', flexGrow: 1 } },
|
||||||
];
|
];
|
||||||
leftFullHeight = true;
|
leftFullHeight = true;
|
||||||
} else if (view === 207) {
|
} else if (view === 207) {
|
||||||
|
|
@ -289,7 +289,8 @@ export default function calcLayout(view, rightStack, hidePanels) {
|
||||||
];
|
];
|
||||||
} else if (view === 206) {
|
} else if (view === 206) {
|
||||||
right = [
|
right = [
|
||||||
{ key: '警报' },
|
{ key: '巡查问题看板', style: { height: '70%', flexGrow: 1 } },
|
||||||
|
{ key: '水库管护', style: { height: '10rem', flexGrow: 1 } },
|
||||||
];
|
];
|
||||||
} else if (view === 207) {
|
} else if (view === 207) {
|
||||||
right = [
|
right = [
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import {
|
||||||
Box,
|
Box,
|
||||||
} from '@material-ui/core';
|
} from '@material-ui/core';
|
||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from '@material-ui/core/styles';
|
||||||
|
import clsx from "clsx"
|
||||||
import PlayArrowIcon from '@material-ui/icons/PlayArrow';
|
import PlayArrowIcon from '@material-ui/icons/PlayArrow';
|
||||||
import PauseIcon from '@material-ui/icons/Pause';
|
import PauseIcon from '@material-ui/icons/Pause';
|
||||||
|
|
||||||
|
|
@ -35,15 +35,33 @@ const useStyles = makeStyles((theme) => ({
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
gap: theme.spacing(2),
|
gap: theme.spacing(2),
|
||||||
|
},
|
||||||
|
controls1: {
|
||||||
|
position: 'absolute',
|
||||||
|
top: '50%',
|
||||||
|
left: '50%',
|
||||||
|
transform: 'translate(-50%, -50%)',
|
||||||
|
padding: theme.spacing(2),
|
||||||
|
background: 'rgba(0,0,0,0.7)',
|
||||||
|
borderRadius: theme.spacing(1),
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
gap: theme.spacing(2),
|
||||||
|
width: '800px',
|
||||||
|
maxWidth: '90%',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
|
||||||
},
|
},
|
||||||
playButton: {
|
playButton: {
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
|
pointerEvents: 'auto',
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
backgroundColor: 'rgba(255,255,255,0.1)',
|
backgroundColor: 'rgba(255,255,255,0.1)',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
slider: {
|
slider: {
|
||||||
color: '#1976d2',
|
color: '#1976d2',
|
||||||
|
pointerEvents: 'auto',
|
||||||
flex: 1,
|
flex: 1,
|
||||||
'& .MuiSlider-rail': {
|
'& .MuiSlider-rail': {
|
||||||
backgroundColor: 'rgba(255,255,255,0.3)',
|
backgroundColor: 'rgba(255,255,255,0.3)',
|
||||||
|
|
@ -65,6 +83,7 @@ const useStyles = makeStyles((theme) => ({
|
||||||
fontSize: '0.875rem',
|
fontSize: '0.875rem',
|
||||||
minWidth: 100,
|
minWidth: 100,
|
||||||
textAlign: 'right',
|
textAlign: 'right',
|
||||||
|
pointerEvents: 'auto',
|
||||||
},
|
},
|
||||||
dateDisplay: {
|
dateDisplay: {
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
|
|
@ -75,9 +94,13 @@ const useStyles = makeStyles((theme) => ({
|
||||||
fontWeight: 500,
|
fontWeight: 500,
|
||||||
textShadow: '1px 1px 2px rgba(0,0,0,0.5)',
|
textShadow: '1px 1px 2px rgba(0,0,0,0.5)',
|
||||||
},
|
},
|
||||||
|
odd: {
|
||||||
|
zIndex: 1,
|
||||||
|
position: 'absolute'
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const VideoPlayer = ({ videoUrl, date }) => {
|
const VideoPlayer = ({ videoUrl, date,odd=false }) => {
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const [playing, setPlaying] = useState(false);
|
const [playing, setPlaying] = useState(false);
|
||||||
const [progress, setProgress] = useState(0);
|
const [progress, setProgress] = useState(0);
|
||||||
|
|
@ -120,7 +143,7 @@ const VideoPlayer = ({ videoUrl, date }) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classes.root}>
|
<div className={clsx({[classes.root]:true,[classes.odd]:odd})}>
|
||||||
<div className={classes.videoContainer}>
|
<div className={classes.videoContainer}>
|
||||||
<video
|
<video
|
||||||
ref={videoRef}
|
ref={videoRef}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { makeStyles } from '@material-ui/core/styles';
|
||||||
const useStyles = makeStyles(() => ({
|
const useStyles = makeStyles(() => ({
|
||||||
card: {
|
card: {
|
||||||
marginBottom: '16px',
|
marginBottom: '16px',
|
||||||
// backgroundColor: '#fff',
|
backgroundColor: 'transparent',
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
boxShadow: '0 4px 12px rgba(0,0,0,0.1)'
|
boxShadow: '0 4px 12px rgba(0,0,0,0.1)'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { makeStyles } from '@material-ui/core/styles';
|
||||||
const useStyles = makeStyles(() => ({
|
const useStyles = makeStyles(() => ({
|
||||||
card: {
|
card: {
|
||||||
marginBottom: '16px',
|
marginBottom: '16px',
|
||||||
// backgroundColor: '#fff',
|
backgroundColor: 'transparent',
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
boxShadow: '0 4px 12px rgba(0,0,0,0.1)'
|
boxShadow: '0 4px 12px rgba(0,0,0,0.1)'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ const useStyles = makeStyles((theme) => ({
|
||||||
},
|
},
|
||||||
statsContainer: {
|
statsContainer: {
|
||||||
marginTop: theme.spacing(2),
|
marginTop: theme.spacing(2),
|
||||||
backgroundColor: 'rgba(0, 0, 0, 0.2)',
|
backgroundColor: 'transparent',
|
||||||
borderRadius: theme.shape.borderRadius,
|
borderRadius: theme.shape.borderRadius,
|
||||||
padding: theme.spacing(2)
|
padding: theme.spacing(2)
|
||||||
},
|
},
|
||||||
|
|
@ -81,55 +81,55 @@ const useStyles = makeStyles((theme) => ({
|
||||||
const RainfallMonitor = () => {
|
const RainfallMonitor = () => {
|
||||||
const rainfallList = [
|
const rainfallList = [
|
||||||
{
|
{
|
||||||
time: '2020-07-25 00:00:00',
|
time: '2024-12-10 10:00:00',
|
||||||
rainfall: 1.5,
|
rainfall: 1.5,
|
||||||
magnified: 3,
|
magnified: 3,
|
||||||
simulated: 4.5
|
simulated: 4.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 01:00:00',
|
time: '2024-12-10 11:00:00',
|
||||||
rainfall: 1.5,
|
rainfall: 1.5,
|
||||||
magnified: 3,
|
magnified: 3,
|
||||||
simulated: 4.5
|
simulated: 4.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 02:00:00',
|
time: '2024-12-10 12:00:00',
|
||||||
rainfall: 4.5,
|
rainfall: 4.5,
|
||||||
magnified: 9,
|
magnified: 9,
|
||||||
simulated: 13.5
|
simulated: 13.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 03:00:00',
|
time: '2024-12-10 13:00:00',
|
||||||
rainfall: 1.5,
|
rainfall: 1.5,
|
||||||
magnified: 3,
|
magnified: 3,
|
||||||
simulated: 4.5
|
simulated: 4.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 04:00:00',
|
time: '2024-12-10 14:00:00',
|
||||||
rainfall: 1.5,
|
rainfall: 1.5,
|
||||||
magnified: 3,
|
magnified: 3,
|
||||||
simulated: 4.5
|
simulated: 4.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 05:00:00',
|
time: '2024-12-10 15:00:00',
|
||||||
rainfall: 0,
|
rainfall: 0,
|
||||||
magnified: 0,
|
magnified: 0,
|
||||||
simulated: 0
|
simulated: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 06:00:00',
|
time: '2024-12-10 16:00:00',
|
||||||
rainfall: 1.5,
|
rainfall: 1.5,
|
||||||
magnified: 3,
|
magnified: 3,
|
||||||
simulated: 4.5
|
simulated: 4.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 07:00:00',
|
time: '2024-12-10 17:00:00',
|
||||||
rainfall: 1.5,
|
rainfall: 1.5,
|
||||||
magnified: 3,
|
magnified: 3,
|
||||||
simulated: 4.5
|
simulated: 4.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
time: '2020-07-25 08:00:00',
|
time: '2024-12-10 18:00:00',
|
||||||
rainfall: 3,
|
rainfall: 3,
|
||||||
magnified: 6,
|
magnified: 6,
|
||||||
simulated: 9
|
simulated: 9
|
||||||
|
|
@ -163,10 +163,10 @@ const RainfallMonitor = () => {
|
||||||
<Table>
|
<Table>
|
||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell>时间</TableCell>
|
<TableCell style={{width:'37%'}}>时间</TableCell>
|
||||||
<TableCell>面雨量(mm)</TableCell>
|
<TableCell style={{width:'20%'}}>面雨量(mm)</TableCell>
|
||||||
<TableCell>放大量(mm)</TableCell>
|
<TableCell style={{width:'20%'}}>放大量(mm)</TableCell>
|
||||||
<TableCell>预演面雨量(mm)</TableCell>
|
<TableCell style={{width:'20%'}}>预演面雨量(mm)</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
|
|
@ -202,7 +202,7 @@ const RainfallMonitor = () => {
|
||||||
))}
|
))}
|
||||||
</Box>
|
</Box>
|
||||||
<Box className={classes.statsRow}>
|
<Box className={classes.statsRow}>
|
||||||
<Typography variant="subtitle2" style={{ color: "#fff", width: '120' }}></Typography>
|
<Typography variant="subtitle2" style={{ color: "#fff", width: '80px' }}></Typography>
|
||||||
{['>102.0', '>125.0', '>141.0', '>163.0', '>188.0'].map((threshold, index) => (
|
{['>102.0', '>125.0', '>141.0', '>163.0', '>188.0'].map((threshold, index) => (
|
||||||
<Box key={index} display="flex" flexDirection="column" alignItems="center">
|
<Box key={index} display="flex" flexDirection="column" alignItems="center">
|
||||||
<Typography variant="body2">{threshold}</Typography>
|
<Typography variant="body2">{threshold}</Typography>
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import ShuizhiLayer from '../../MapCtrl/mapstyle/shuizhilayer';
|
||||||
import TrsqLayer from '../../MapCtrl/mapstyle/trsqlayer';
|
import TrsqLayer from '../../MapCtrl/mapstyle/trsqlayer';
|
||||||
import ShuichangLayer from '../../MapCtrl/mapstyle/shuichangLayer'
|
import ShuichangLayer from '../../MapCtrl/mapstyle/shuichangLayer'
|
||||||
import ShuiyuandiLayer from '../../MapCtrl/mapstyle/shuiyuandiLayer'
|
import ShuiyuandiLayer from '../../MapCtrl/mapstyle/shuiyuandiLayer'
|
||||||
|
import XunchaLayer from '../../MapCtrl/mapstyle/xunchalayer';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -149,6 +150,9 @@ function LayersDlg({ onClose }) {
|
||||||
<div className={classes.catItem}>
|
<div className={classes.catItem}>
|
||||||
<RowItem icon="水源地" label="水源地" name={ShuiyuandiLayer.LayerName} checked={!!layerVisible[ShuiyuandiLayer.LayerName]} onChange={layerVisibleChanged} />
|
<RowItem icon="水源地" label="水源地" name={ShuiyuandiLayer.LayerName} checked={!!layerVisible[ShuiyuandiLayer.LayerName]} onChange={layerVisibleChanged} />
|
||||||
</div>
|
</div>
|
||||||
|
<div className={classes.catItem}>
|
||||||
|
<RowItem icon="巡查" label="巡查" name={XunchaLayer.LayerName} checked={!!layerVisible[XunchaLayer.LayerName]} onChange={layerVisibleChanged} />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={classes.catRoot}>
|
<div className={classes.catRoot}>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
import React from 'react';
|
||||||
|
import DpTab from '../../../../layouts/mui/DpTab';
|
||||||
|
import Dialog from '@material-ui/core/Dialog';
|
||||||
|
import DialogContent from '@material-ui/core/DialogContent';
|
||||||
|
import DpPaperComponent from '../../../../layouts/mui/DpPaperCompanent';
|
||||||
|
import DpTabs from '../../../../layouts/mui/DpTabs';
|
||||||
|
import DpAppBar from '../../../../layouts/mui/DpAppBar';
|
||||||
|
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
||||||
|
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
||||||
|
|
||||||
|
function HDStDlg({ record, onClose }) {
|
||||||
|
const [value, setValue] = React.useState(0);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Dialog
|
||||||
|
open={true}
|
||||||
|
onClose={onClose}
|
||||||
|
maxWidth="xl"
|
||||||
|
style={{ borderRadius: 0 }}
|
||||||
|
PaperComponent={DpPaperComponent}
|
||||||
|
BackdropComponent={DpBackgroundDrop}
|
||||||
|
>
|
||||||
|
<div className="boxhead"></div>
|
||||||
|
<DialogContent style={{ padding: 0, width: '70rem', overflowX: 'hidden',height:'80rem' }}>
|
||||||
|
<DpAppBar position="sticky">
|
||||||
|
<DpTabs value={value} indicatorColor="primary" onChange={(_, v) => setValue(v)}>
|
||||||
|
<DpTab label="详情" />
|
||||||
|
</DpTabs>
|
||||||
|
<DpCloseButton onClick={onClose} />
|
||||||
|
</DpAppBar>
|
||||||
|
<div style={{padding:10}}>
|
||||||
|
<img src={`${process.env.PUBLIC_URL}/assets/shuikugh.png`} style={{width:'100%'}}></img>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</DialogContent>
|
||||||
|
<div className="boxfoot"></div>
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default React.memo(HDStDlg);
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import React from 'react';
|
||||||
|
import DpTab from '../../../../layouts/mui/DpTab';
|
||||||
|
import Dialog from '@material-ui/core/Dialog';
|
||||||
|
import DialogContent from '@material-ui/core/DialogContent';
|
||||||
|
import DpPaperComponent from '../../../../layouts/mui/DpPaperCompanent';
|
||||||
|
import DpTabs from '../../../../layouts/mui/DpTabs';
|
||||||
|
import DpAppBar from '../../../../layouts/mui/DpAppBar';
|
||||||
|
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
||||||
|
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
||||||
|
|
||||||
|
function HDStDlg({ record, onClose }) {
|
||||||
|
const [value, setValue] = React.useState(0);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Dialog
|
||||||
|
open={true}
|
||||||
|
onClose={onClose}
|
||||||
|
maxWidth="xl"
|
||||||
|
style={{ borderRadius: 0 }}
|
||||||
|
PaperComponent={DpPaperComponent}
|
||||||
|
BackdropComponent={DpBackgroundDrop}
|
||||||
|
>
|
||||||
|
<div className="boxhead"></div>
|
||||||
|
<DialogContent style={{ padding: 0, width: '60rem', overflowX: 'hidden',height:'80rem' }}>
|
||||||
|
<DpAppBar position="sticky">
|
||||||
|
<DpTabs value={value} indicatorColor="primary" onChange={(_, v) => setValue(v)}>
|
||||||
|
<DpTab label="任务信息" />
|
||||||
|
</DpTabs>
|
||||||
|
<DpCloseButton onClick={onClose} />
|
||||||
|
</DpAppBar>
|
||||||
|
<div style={{padding:10}}>
|
||||||
|
<img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img>
|
||||||
|
</div>
|
||||||
|
</DialogContent>
|
||||||
|
<div className="boxfoot"></div>
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default React.memo(HDStDlg);
|
||||||
|
|
@ -0,0 +1,377 @@
|
||||||
|
import React, { useState,useEffect } from 'react';
|
||||||
|
import { makeStyles } from '@material-ui/core/styles';
|
||||||
|
import {
|
||||||
|
Paper,
|
||||||
|
Table,
|
||||||
|
TableBody,
|
||||||
|
TableCell,
|
||||||
|
TableContainer,
|
||||||
|
TableHead,
|
||||||
|
TableRow,
|
||||||
|
TextField,
|
||||||
|
Button,
|
||||||
|
Box,
|
||||||
|
IconButton,
|
||||||
|
ButtonGroup,
|
||||||
|
Grid
|
||||||
|
} from '@material-ui/core';
|
||||||
|
import SearchIcon from '@material-ui/icons/Search';
|
||||||
|
import RefreshIcon from '@material-ui/icons/Refresh';
|
||||||
|
import { DatePicker } from 'antd';
|
||||||
|
import moment from 'moment';
|
||||||
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
|
import ModalView from './view'
|
||||||
|
const { RangePicker } = DatePicker;
|
||||||
|
|
||||||
|
const useStyles = makeStyles((theme) => ({
|
||||||
|
root: {
|
||||||
|
width: '100%',
|
||||||
|
backgroundColor: 'transparent',
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
toolbar: {
|
||||||
|
padding: theme.spacing(2),
|
||||||
|
display: 'flex',
|
||||||
|
gap: theme.spacing(2),
|
||||||
|
alignItems: 'center',
|
||||||
|
borderBottom: '1px solid rgba(255, 255, 255, 0.1)'
|
||||||
|
},
|
||||||
|
searchRow: {
|
||||||
|
display: 'flex',
|
||||||
|
gap: theme.spacing(2),
|
||||||
|
alignItems: 'center',
|
||||||
|
flexWrap: 'wrap'
|
||||||
|
},
|
||||||
|
searchField: {
|
||||||
|
'& .MuiInputBase-root': {
|
||||||
|
color: '#fff',
|
||||||
|
backgroundColor: 'rgba(255, 255, 255, 0.05)',
|
||||||
|
borderRadius: 4,
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
'& .MuiInputLabel-root': {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
'& .MuiOutlinedInput-notchedOutline': {
|
||||||
|
borderColor: 'rgba(255, 255, 255, 0.1)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
datePicker: {
|
||||||
|
'& .MuiInputBase-root': {
|
||||||
|
color: '#fff',
|
||||||
|
backgroundColor: 'rgba(255, 255, 255, 0.05)',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
'& .MuiIconButton-root': {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
'& .MuiOutlinedInput-notchedOutline': {
|
||||||
|
borderColor: 'rgba(255, 255, 255, 0.1)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
buttonGroup: {
|
||||||
|
'& .MuiButton-root': {
|
||||||
|
color: '#fff',
|
||||||
|
borderColor: 'rgba(255, 255, 255, 0.3)',
|
||||||
|
'&.active': {
|
||||||
|
backgroundColor: '#2196f3',
|
||||||
|
borderColor: '#2196f3'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
'& .MuiTableCell-head': {
|
||||||
|
backgroundColor: 'rgba(255, 255, 255, 0.05)',
|
||||||
|
color: '#fff',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
borderBottom: '1px solid rgba(255, 255, 255, 0.1)'
|
||||||
|
},
|
||||||
|
'& .MuiTableCell-body': {
|
||||||
|
color: '#fff',
|
||||||
|
borderBottom: '1px solid rgba(255, 255, 255, 0.1)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
padding: '4px 8px',
|
||||||
|
borderRadius: 4,
|
||||||
|
backgroundColor: 'rgba(33, 150, 243, 0.1)',
|
||||||
|
color: '#2196f3'
|
||||||
|
},
|
||||||
|
actionButton: {
|
||||||
|
color: '#2196f3',
|
||||||
|
'&:hover': {
|
||||||
|
backgroundColor: 'rgba(33, 150, 243, 0.1)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
const TaskList = () => {
|
||||||
|
const classes = useStyles();
|
||||||
|
const [startDate, setStartDate] = useState(null);
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
const [endDate, setEndDate] = useState(null);
|
||||||
|
const [activeType, setActiveType] = useState('daily');
|
||||||
|
const [visible, setVisible] = useState(false)
|
||||||
|
const handleTypeChange = (type) => {
|
||||||
|
setActiveType(type);
|
||||||
|
};
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{ id: 'sequence', label: '序号', width: 70 },
|
||||||
|
{ id: 'city', label: '市' },
|
||||||
|
{ id: 'district', label: '区县' },
|
||||||
|
{ id: 'location', label: '街道乡镇' },
|
||||||
|
{ id: 'taskType', label: '任务标题' },
|
||||||
|
{ id: 'taskContent', label: '任务内容' },
|
||||||
|
{ id: 'status', label: '任务状态' },
|
||||||
|
{ id: 'person', label: '巡查人' },
|
||||||
|
{ id: 'startTime', label: '开始时间' },
|
||||||
|
{ id: 'endTime', label: '结束时间' },
|
||||||
|
{ id: 'problems', label: '问题数量', width: 100 },
|
||||||
|
{ id: 'processed', label: '待处理', width: 100 },
|
||||||
|
{ id: 'actions', label: '操作', width: 150 }
|
||||||
|
];
|
||||||
|
|
||||||
|
const mockData = [
|
||||||
|
{
|
||||||
|
sequence: 1,
|
||||||
|
city: '黄冈市',
|
||||||
|
district: '麻城市',
|
||||||
|
location: '',
|
||||||
|
taskType: '06-02明山水库日常巡查',
|
||||||
|
taskContent: '20250602每日巡检',
|
||||||
|
status: '未完成',
|
||||||
|
person: '姜兴军',
|
||||||
|
startTime: '2025-06-02 00:00:00',
|
||||||
|
endTime: '2025-06-08 23:59:59',
|
||||||
|
problems: 0,
|
||||||
|
processed: 0,
|
||||||
|
createTime: '2025-06-02 02:00:00',
|
||||||
|
creator: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sequence: 2,
|
||||||
|
city: '黄冈市',
|
||||||
|
district: '麻城市',
|
||||||
|
location: '',
|
||||||
|
taskType: '06-02浮桥河水库汛前巡查',
|
||||||
|
taskContent: '20250602每日巡检',
|
||||||
|
status: '未完成',
|
||||||
|
person: '熊杰',
|
||||||
|
startTime: '2025-06-02 00:00:00',
|
||||||
|
endTime: '2025-06-08 23:59:59',
|
||||||
|
problems: 0,
|
||||||
|
processed: 0,
|
||||||
|
createTime: '2025-06-02 02:00:00',
|
||||||
|
creator: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sequence: 3,
|
||||||
|
city: '黄冈市',
|
||||||
|
district: '麻城市',
|
||||||
|
location: '',
|
||||||
|
taskType: '06-02永丰水库特别检查',
|
||||||
|
taskContent: '20250602每日巡检',
|
||||||
|
status: '未完成',
|
||||||
|
person: '白斌',
|
||||||
|
startTime: '2025-06-02 00:00:00',
|
||||||
|
endTime: '2025-06-08 23:59:59',
|
||||||
|
problems: 0,
|
||||||
|
processed: 0,
|
||||||
|
createTime: '2025-06-02 02:00:00',
|
||||||
|
creator: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sequence: 4,
|
||||||
|
city: '黄冈市',
|
||||||
|
district: '麻城市',
|
||||||
|
location: '',
|
||||||
|
taskType: '06-02永红水库日常巡查',
|
||||||
|
taskContent: '20250602每日巡检',
|
||||||
|
status: '未完成',
|
||||||
|
person: '于静',
|
||||||
|
startTime: '2025-06-02 00:00:00',
|
||||||
|
endTime: '2025-06-08 23:59:59',
|
||||||
|
problems: 0,
|
||||||
|
processed: 0,
|
||||||
|
createTime: '2025-06-02 02:00:00',
|
||||||
|
creator: ''
|
||||||
|
},{
|
||||||
|
sequence: 5,
|
||||||
|
city: '黄冈市',
|
||||||
|
district: '麻城市',
|
||||||
|
location: '',
|
||||||
|
taskType: '06-02四新水库日常巡查',
|
||||||
|
taskContent: '20250602每日巡检',
|
||||||
|
status: '未完成',
|
||||||
|
person: '何义红',
|
||||||
|
startTime: '2025-06-02 00:00:00',
|
||||||
|
endTime: '2025-06-08 23:59:59',
|
||||||
|
problems: 0,
|
||||||
|
processed: 0,
|
||||||
|
createTime: '2025-06-02 02:00:00',
|
||||||
|
creator: ''
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const flyTo = () => {
|
||||||
|
// dispatch?.runtime.setInfoDlg({ layerId: 'ChaoshiDetailLayer', properties: {} })
|
||||||
|
setVisible(true)
|
||||||
|
}
|
||||||
|
const [params, setParams] = useState({ tm: [] })
|
||||||
|
|
||||||
|
const searchTm = (e) => {
|
||||||
|
setParams({
|
||||||
|
...params,
|
||||||
|
stm: e[0].format("YYYY-MM-DD HH:mm"),
|
||||||
|
etm: e[1].format("YYYY-MM-DD HH:mm"),
|
||||||
|
tm: e,
|
||||||
|
})
|
||||||
|
};
|
||||||
|
useEffect(() => {
|
||||||
|
let options = "";
|
||||||
|
options = {
|
||||||
|
etm: moment().add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
||||||
|
stm: moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
||||||
|
tm: [
|
||||||
|
moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }),
|
||||||
|
moment().add(1, 'hour').set({ minute: 0, second: 0 }),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
setParams(options)
|
||||||
|
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Paper className={classes.root}>
|
||||||
|
<Box className={classes.toolbar}>
|
||||||
|
<Box className={classes.searchRow}>
|
||||||
|
<ButtonGroup className={classes.buttonGroup}>
|
||||||
|
<Button
|
||||||
|
className={activeType === 'daily' ? 'active' : ''}
|
||||||
|
onClick={() => handleTypeChange('daily')}
|
||||||
|
>
|
||||||
|
日常巡查(3)
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
className={activeType === 'flood' ? 'active' : ''}
|
||||||
|
onClick={() => handleTypeChange('flood')}
|
||||||
|
>
|
||||||
|
汛期巡查(1)
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
className={activeType === 'special' ? 'active' : ''}
|
||||||
|
onClick={() => handleTypeChange('special')}
|
||||||
|
>
|
||||||
|
特别巡查(1)
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
className={activeType === 'all' ? 'active' : ''}
|
||||||
|
onClick={() => handleTypeChange('all')}
|
||||||
|
>
|
||||||
|
全部(5024)
|
||||||
|
</Button>
|
||||||
|
</ButtonGroup>
|
||||||
|
</Box>
|
||||||
|
<Box className={classes.searchRow}>
|
||||||
|
<TextField
|
||||||
|
className={classes.searchField}
|
||||||
|
variant="outlined"
|
||||||
|
size="small"
|
||||||
|
placeholder="请输入水库名称"
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
className={classes.searchField}
|
||||||
|
variant="outlined"
|
||||||
|
size="small"
|
||||||
|
placeholder="请输入任务标题"
|
||||||
|
/>
|
||||||
|
<div style={{ display: 'flex', alignItems: 'center',width:'40%' }}>
|
||||||
|
<div style={{ color: "#fff" }}>时段选择:</div>
|
||||||
|
<div className='tm' style={{ position: "relative", zIndex: 999999, color: "#fff", width: "70%", margin: '10px' }}>
|
||||||
|
<RangePicker
|
||||||
|
// width="100%"
|
||||||
|
className='time-picker'
|
||||||
|
style={{
|
||||||
|
flex: 1,
|
||||||
|
background: "transparent",
|
||||||
|
border: "none",
|
||||||
|
color: "#fff",
|
||||||
|
}}
|
||||||
|
onChange={searchTm}
|
||||||
|
allowClear
|
||||||
|
format="YYYY-MM-DD HH:mm"
|
||||||
|
showTime={{
|
||||||
|
format: 'HH:mm',
|
||||||
|
}}
|
||||||
|
value={params.tm}
|
||||||
|
getPopupContainer={trigger => trigger.parentElement}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Button
|
||||||
|
variant="contained"
|
||||||
|
color="primary"
|
||||||
|
startIcon={<SearchIcon />}
|
||||||
|
>
|
||||||
|
查询
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
variant="outlined"
|
||||||
|
style={{ color: '#fff', borderColor: 'rgba(255, 255, 255, 0.3)' }}
|
||||||
|
startIcon={<RefreshIcon />}
|
||||||
|
>
|
||||||
|
重置
|
||||||
|
</Button>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<TableContainer>
|
||||||
|
<Table className={classes.table} size="small">
|
||||||
|
<TableHead>
|
||||||
|
<TableRow>
|
||||||
|
{columns.map((column) => (
|
||||||
|
<TableCell
|
||||||
|
key={column.id}
|
||||||
|
style={{ width: column.width }}
|
||||||
|
>
|
||||||
|
{column.label}
|
||||||
|
</TableCell>
|
||||||
|
))}
|
||||||
|
</TableRow>
|
||||||
|
</TableHead>
|
||||||
|
<TableBody>
|
||||||
|
{mockData.map((row, index) => (
|
||||||
|
<TableRow key={index}>
|
||||||
|
<TableCell>{row.sequence}</TableCell>
|
||||||
|
<TableCell>{row.city}</TableCell>
|
||||||
|
<TableCell>{row.district}</TableCell>
|
||||||
|
<TableCell>{row.location}</TableCell>
|
||||||
|
<TableCell>{row.taskType}</TableCell>
|
||||||
|
<TableCell>{row.taskContent}</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
<span className={classes.status}>{row.status}</span>
|
||||||
|
</TableCell>
|
||||||
|
<TableCell>{row.person}</TableCell>
|
||||||
|
<TableCell>{row.startTime}</TableCell>
|
||||||
|
<TableCell>{row.endTime}</TableCell>
|
||||||
|
<TableCell>{row.problems}</TableCell>
|
||||||
|
<TableCell>{row.processed}</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
<IconButton className={classes.actionButton} size="small" onClick={flyTo}>
|
||||||
|
查看
|
||||||
|
</IconButton>
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
))}
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
</TableContainer>
|
||||||
|
<ModalView
|
||||||
|
open={visible}
|
||||||
|
onClose={() => setVisible(false)}
|
||||||
|
></ModalView>
|
||||||
|
</Paper>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TaskList;
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
import React from 'react';
|
||||||
|
import DpTab from '../../../../layouts/mui/DpTab';
|
||||||
|
import Dialog from '@material-ui/core/Dialog';
|
||||||
|
import DialogContent from '@material-ui/core/DialogContent';
|
||||||
|
import DpPaperComponent from '../../../../layouts/mui/DpPaperCompanent';
|
||||||
|
import DpTabs from '../../../../layouts/mui/DpTabs';
|
||||||
|
import DpAppBar from '../../../../layouts/mui/DpAppBar';
|
||||||
|
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
||||||
|
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
||||||
|
import ContentDetail from './detail'
|
||||||
|
function HDStDlg({ record, onClose }) {
|
||||||
|
const [value, setValue] = React.useState(0);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Dialog
|
||||||
|
open={true}
|
||||||
|
onClose={onClose}
|
||||||
|
maxWidth="xl"
|
||||||
|
style={{ borderRadius: 0 }}
|
||||||
|
PaperComponent={DpPaperComponent}
|
||||||
|
BackdropComponent={DpBackgroundDrop}
|
||||||
|
>
|
||||||
|
<div className="boxhead"></div>
|
||||||
|
<DialogContent style={{ padding: 0, width: '110rem', overflowX: 'hidden',height:'80rem' }}>
|
||||||
|
<DpAppBar position="sticky">
|
||||||
|
<DpTabs value={value} indicatorColor="primary" onChange={(_, v) => setValue(v)}>
|
||||||
|
<DpTab label="超时详情" />
|
||||||
|
</DpTabs>
|
||||||
|
<DpCloseButton onClick={onClose} />
|
||||||
|
</DpAppBar>
|
||||||
|
|
||||||
|
<ContentDetail />
|
||||||
|
</DialogContent>
|
||||||
|
<div className="boxfoot"></div>
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default React.memo(HDStDlg);
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import React from 'react';
|
||||||
|
import DpTab from '../../../../layouts/mui/DpTab';
|
||||||
|
import Dialog from '@material-ui/core/Dialog';
|
||||||
|
import DialogContent from '@material-ui/core/DialogContent';
|
||||||
|
import DpPaperComponent from '../../../../layouts/mui/DpPaperCompanent';
|
||||||
|
import DpTabs from '../../../../layouts/mui/DpTabs';
|
||||||
|
import DpAppBar from '../../../../layouts/mui/DpAppBar';
|
||||||
|
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
||||||
|
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
||||||
|
|
||||||
|
function HDStDlg({ record, onClose,open }) {
|
||||||
|
const [value, setValue] = React.useState(0);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Dialog
|
||||||
|
open={open}
|
||||||
|
onClose={onClose}
|
||||||
|
maxWidth="xl"
|
||||||
|
style={{ borderRadius: 0 }}
|
||||||
|
PaperComponent={DpPaperComponent}
|
||||||
|
BackdropComponent={DpBackgroundDrop}
|
||||||
|
>
|
||||||
|
<div className="boxhead"></div>
|
||||||
|
<DialogContent style={{ padding: 0, width: '60rem', overflowX: 'hidden',height:'80rem' }}>
|
||||||
|
<DpAppBar position="sticky">
|
||||||
|
<DpTabs value={value} indicatorColor="primary" onChange={(_, v) => setValue(v)}>
|
||||||
|
<DpTab label="任务信息" />
|
||||||
|
</DpTabs>
|
||||||
|
<DpCloseButton onClick={onClose} />
|
||||||
|
</DpAppBar>
|
||||||
|
<div style={{padding:10}}>
|
||||||
|
<img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img>
|
||||||
|
</div>
|
||||||
|
</DialogContent>
|
||||||
|
<div className="boxfoot"></div>
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default React.memo(HDStDlg);
|
||||||
|
|
@ -8,9 +8,15 @@ import DpAppBar from '../../../../layouts/mui/DpAppBar';
|
||||||
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
||||||
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
||||||
import Zdya from './zdscya'
|
import Zdya from './zdscya'
|
||||||
function HDStDlg({ record, onClose }) {
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
const [value, setValue] = React.useState(0);
|
|
||||||
|
|
||||||
|
function HDStDlg({ record, onClose }) {
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
const [value, setValue] = React.useState(0);
|
||||||
|
const loadFa = () => {
|
||||||
|
onClose()
|
||||||
|
dispatch.runtime.setYyfa({ yy: 111 })
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<Dialog
|
<Dialog
|
||||||
open={true}
|
open={true}
|
||||||
|
|
@ -29,7 +35,7 @@ function HDStDlg({ record, onClose }) {
|
||||||
<DpCloseButton onClick={onClose} />
|
<DpCloseButton onClick={onClose} />
|
||||||
</DpAppBar>
|
</DpAppBar>
|
||||||
|
|
||||||
<Zdya />
|
<Zdya loadFa={loadFa} />
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<div className="boxfoot"></div>
|
<div className="boxfoot"></div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ const useStyles = makeStyles((theme) => ({
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const SchemeOptimization = () => {
|
const SchemeOptimization = ({loadFa}) => {
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const [reservoirs, setReservoirs] = useState([
|
const [reservoirs, setReservoirs] = useState([
|
||||||
{ name: '浮标河水库', safeLevel: 64.80, storage: 16110, maxOutflow: 20.00 },
|
{ name: '浮标河水库', safeLevel: 64.80, storage: 16110, maxOutflow: 20.00 },
|
||||||
|
|
@ -100,7 +100,7 @@ const SchemeOptimization = () => {
|
||||||
const [data, setData] = useState(checkData)
|
const [data, setData] = useState(checkData)
|
||||||
const changeSw = (e, id) => {
|
const changeSw = (e, id) => {
|
||||||
const checked = e.target.checked
|
const checked = e.target.checked
|
||||||
const data1 = checkData.map(item => {
|
const data1 = data.map(item => {
|
||||||
if (item.id == id) {
|
if (item.id == id) {
|
||||||
item.checked = checked;
|
item.checked = checked;
|
||||||
}
|
}
|
||||||
|
|
@ -196,7 +196,7 @@ const SchemeOptimization = () => {
|
||||||
<TableCell>{scheme.households}</TableCell>
|
<TableCell>{scheme.households}</TableCell>
|
||||||
<TableCell>{scheme.population}</TableCell>
|
<TableCell>{scheme.population}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<button className={classes.addButton} style={{ marginRight: 8 }}>加载方案</button>
|
<button className={classes.addButton} style={{ marginRight: 8 }} onClick={loadFa}>加载方案</button>
|
||||||
<button className={classes.addButton}>导出方案库</button>
|
<button className={classes.addButton}>导出方案库</button>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,9 @@ import YascDlg from './YascDlg';
|
||||||
import YbcgDlg from './YbcgDlg'
|
import YbcgDlg from './YbcgDlg'
|
||||||
import DdcgDlg from './DdcgDlg'
|
import DdcgDlg from './DdcgDlg'
|
||||||
import FadbDlg from './FadbDlg'
|
import FadbDlg from './FadbDlg'
|
||||||
|
import ShuikuyhDlg from './ShuikuyhDlg';
|
||||||
|
import XunchaDlg from './XunchaDlg';
|
||||||
|
import XcxqDlg from './XcxqDlg';
|
||||||
|
|
||||||
|
|
||||||
function InfoDlg() {
|
function InfoDlg() {
|
||||||
|
|
@ -122,8 +125,16 @@ function InfoDlg() {
|
||||||
return <DdcgDlg record={properties} onClose={handleClose} />
|
return <DdcgDlg record={properties} onClose={handleClose} />
|
||||||
} else if (layerId === 'FadbLayer') {
|
} else if (layerId === 'FadbLayer') {
|
||||||
return <FadbDlg record={properties} onClose={handleClose} />
|
return <FadbDlg record={properties} onClose={handleClose} />
|
||||||
}
|
} else if (layerId === 'ShuikuyanghuLayer') {
|
||||||
|
return <ShuikuyhDlg record={properties} onClose={handleClose} />
|
||||||
|
}else if (layerId === 'XunchachaoshiLayer') {
|
||||||
|
return <XunchaDlg record={properties} onClose={handleClose} />
|
||||||
|
}else if (layerId === 'ChaoshiDetailLayer') {
|
||||||
|
return <PdfDlg record={properties} onClose={handleClose} />
|
||||||
|
}else if (layerId === 'XcxqLayer') {
|
||||||
|
return <XcxqDlg record={properties} onClose={handleClose} />
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,7 @@ export const iconstyles = {
|
||||||
土壤墒情: { backgroundPosition: '37.5% -40%',backgroundSize: '1895% 1650%' },
|
土壤墒情: { backgroundPosition: '37.5% -40%',backgroundSize: '1895% 1650%' },
|
||||||
水厂监测: { backgroundPosition: '0.5% -34%',backgroundSize: '1895% 1650%' },
|
水厂监测: { backgroundPosition: '0.5% -34%',backgroundSize: '1895% 1650%' },
|
||||||
水源地: { backgroundPosition: '53.3% -106.7%',backgroundSize: '1597% 1550%' },
|
水源地: { backgroundPosition: '53.3% -106.7%',backgroundSize: '1597% 1550%' },
|
||||||
|
巡查: { backgroundPosition: '26.8% -99.4%',backgroundSize: '1597% 1550%' },
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import ShuichangLayer from "./shuichangLayer"
|
||||||
import ShuiyuandiLayer from "./shuiyuandiLayer"
|
import ShuiyuandiLayer from "./shuiyuandiLayer"
|
||||||
import ShuikuLayer from "./shuikuLayer"
|
import ShuikuLayer from "./shuikuLayer"
|
||||||
import RainDrpLayer from "./rainDrpLayer"
|
import RainDrpLayer from "./rainDrpLayer"
|
||||||
|
import XunchaLayer from "./xunchalayer"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -66,6 +67,7 @@ class LayerMgr {
|
||||||
this.layers.push(new ShuiyuandiLayer());
|
this.layers.push(new ShuiyuandiLayer());
|
||||||
this.layers.push(new ShuikuLayer());
|
this.layers.push(new ShuikuLayer());
|
||||||
this.layers.push(new RainDrpLayer());
|
this.layers.push(new RainDrpLayer());
|
||||||
|
this.layers.push(new XunchaLayer());
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -212,6 +214,7 @@ class LayerMgr {
|
||||||
this.layerMap.ShuiyuandiLayer.getStyle(),
|
this.layerMap.ShuiyuandiLayer.getStyle(),
|
||||||
this.layerMap.ShuikuLayer.getStyle(),
|
this.layerMap.ShuikuLayer.getStyle(),
|
||||||
this.layerMap.RainDrpLayer.getStyle(),
|
this.layerMap.RainDrpLayer.getStyle(),
|
||||||
|
this.layerMap.XunchaLayer.getStyle(),
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import ShuichangLayer from "./shuichangLayer";
|
||||||
import ShuiyuandiLayer from "./shuiyuandiLayer";
|
import ShuiyuandiLayer from "./shuiyuandiLayer";
|
||||||
import ShuikuLayer from "./shuikuLayer";
|
import ShuikuLayer from "./shuikuLayer";
|
||||||
import RainDrpLayer from "./rainDrpLayer"
|
import RainDrpLayer from "./rainDrpLayer"
|
||||||
|
import XunchaLayer from "./xunchalayer"
|
||||||
|
|
||||||
|
|
||||||
const hash = window.location.origin;
|
const hash = window.location.origin;
|
||||||
|
|
@ -224,6 +225,10 @@ const sources = {
|
||||||
[ShuikuLayer.SourceName]: {
|
[ShuikuLayer.SourceName]: {
|
||||||
type: 'geojson',
|
type: 'geojson',
|
||||||
data: { type: 'FeatureCollection', features: [] },
|
data: { type: 'FeatureCollection', features: [] },
|
||||||
|
},
|
||||||
|
[XunchaLayer.SourceName]: {
|
||||||
|
type: 'geojson',
|
||||||
|
data: { type: 'FeatureCollection', features: [] },
|
||||||
},
|
},
|
||||||
[RainDrpLayer.SourceName]: {
|
[RainDrpLayer.SourceName]: {
|
||||||
type: 'geojson',
|
type: 'geojson',
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,878 @@
|
||||||
|
import clone from "clone";
|
||||||
|
import { PicStPromise, TestPicStPromise } from "../../../../models/_/real";
|
||||||
|
import { parseGeoJSON } from "../../../../utils/tools";
|
||||||
|
import { InfoPopNames } from "../../InfoPops";
|
||||||
|
import BaseLayer from "./baselayer";
|
||||||
|
|
||||||
|
const SourceName = '巡查';
|
||||||
|
|
||||||
|
const ShapeStyle = {
|
||||||
|
id: SourceName,
|
||||||
|
type: 'symbol',
|
||||||
|
source: SourceName,
|
||||||
|
layout: {
|
||||||
|
'icon-allow-overlap': true,
|
||||||
|
'text-allow-overlap': true,
|
||||||
|
'icon-image': '巡查',
|
||||||
|
'icon-size': [
|
||||||
|
'interpolate', ['linear'], ['zoom'],
|
||||||
|
10, 0.4,
|
||||||
|
14, 0.8,
|
||||||
|
],
|
||||||
|
|
||||||
|
'text-allow-overlap': true,
|
||||||
|
'text-size': [
|
||||||
|
'interpolate', ['linear'], ['zoom'],
|
||||||
|
10, 10,
|
||||||
|
14, 14,
|
||||||
|
],
|
||||||
|
'text-font': ['Roboto Black'],
|
||||||
|
'text-field': [
|
||||||
|
'step',
|
||||||
|
['zoom'],
|
||||||
|
'',
|
||||||
|
12, ['get', 'stnm']
|
||||||
|
],
|
||||||
|
'text-anchor': 'top',
|
||||||
|
'text-offset': [0, 1],
|
||||||
|
|
||||||
|
'visibility': 'none',
|
||||||
|
},
|
||||||
|
paint: {
|
||||||
|
'text-color': '#fff'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const page1 = [
|
||||||
|
{
|
||||||
|
"stcd": "716113701",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "永红水库",
|
||||||
|
"adcd": "421181105000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.120278,
|
||||||
|
"lttd": 31.183611,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 131.99,
|
||||||
|
"dsflz": 130.56,
|
||||||
|
"fsltdz": 129.9,
|
||||||
|
"ddz": 113.5,
|
||||||
|
"zcxsw": 129.9,
|
||||||
|
"drpTm": "2025-04-11T06:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 130.15,
|
||||||
|
"w": 0.444,
|
||||||
|
"a_fsltdz": -10.75,
|
||||||
|
"rzTm": "2025-04-11T06:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716113701",
|
||||||
|
"tm": "2023-11-16T11:19:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/1116/716113701/20231116191900.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716113701",
|
||||||
|
"tm": "2023-11-16T09:05:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/1116/716113702/20231116170500.jpg"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "61614200",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "浮桥河水库",
|
||||||
|
"adcd": "421181100000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.875,
|
||||||
|
"lttd": 31.166667,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 71.33,
|
||||||
|
"dsflz": 68.04,
|
||||||
|
"fsltdz": 64.89,
|
||||||
|
"ddz": 51.78,
|
||||||
|
"zcxsw": 64.89,
|
||||||
|
"drpTm": "2025-06-03T02:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 16.5,
|
||||||
|
"drpState": 1,
|
||||||
|
"rz": 60.71,
|
||||||
|
"w": 162.8,
|
||||||
|
"a_fsltdz": -4.18,
|
||||||
|
"rzTm": "2025-06-03T02:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 1,
|
||||||
|
"aRz": -4.18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "61613010",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "明山水库",
|
||||||
|
"adcd": "421181103000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.066667,
|
||||||
|
"lttd": 31.016667,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 98.7,
|
||||||
|
"dsflz": 96.07,
|
||||||
|
"fsltdz": 93,
|
||||||
|
"ddz": 78.02,
|
||||||
|
"zcxsw": 93,
|
||||||
|
"drpTm": "2025-06-03T02:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 12.5,
|
||||||
|
"drpState": 1,
|
||||||
|
"rz": 84.43,
|
||||||
|
"w": 49.5,
|
||||||
|
"a_fsltdz": -8.569999999999993,
|
||||||
|
"rzTm": "2025-06-03T02:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 1,
|
||||||
|
"aRz": -8.57
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716112601",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "永丰水库",
|
||||||
|
"adcd": "421181003000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.057222,
|
||||||
|
"lttd": 31.110833,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 79.57,
|
||||||
|
"dsflz": 77.82,
|
||||||
|
"fsltdz": 76.96,
|
||||||
|
"ddz": 64.96,
|
||||||
|
"zcxsw": 76.96,
|
||||||
|
"drpTm": "2025-04-11T06:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 71.88,
|
||||||
|
"w": 1.178,
|
||||||
|
"a_fsltdz": -5.079999999999998,
|
||||||
|
"rzTm": "2025-04-11T06:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716112601",
|
||||||
|
"tm": "2025-04-11T06:02:20.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2025/0411/716112601/20250411140220.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716112601",
|
||||||
|
"tm": "2025-04-11T06:04:01.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2025/0411/716112602/20250411140401.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -5.08
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115401",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "长冲水库",
|
||||||
|
"adcd": "421181110000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.061389,
|
||||||
|
"lttd": 31.408611,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 21.6,
|
||||||
|
"dsflz": 20.15,
|
||||||
|
"fsltdz": 130.8,
|
||||||
|
"ddz": 0,
|
||||||
|
"zcxsw": 130.8,
|
||||||
|
"drpTm": "2024-05-17T08:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 126.41,
|
||||||
|
"w": 0.374,
|
||||||
|
"a_fsltdz": -4.390000000000015,
|
||||||
|
"rzTm": "2024-05-17T06:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716115401",
|
||||||
|
"tm": "2024-05-17T08:05:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2024/0517/716115401/20240517160500.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115401",
|
||||||
|
"tm": "2024-05-17T08:20:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2024/0517/716115402/20240517162000.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -4.39
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115301",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "葡萄冲水库",
|
||||||
|
"adcd": "421181110000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.051389,
|
||||||
|
"lttd": 31.423333,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 15.8,
|
||||||
|
"dsflz": 14.73,
|
||||||
|
"fsltdz": 14.3,
|
||||||
|
"ddz": 9.48,
|
||||||
|
"zcxsw": 14.3,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 213.75,
|
||||||
|
"w": 0.04,
|
||||||
|
"a_fsltdz": 199.45,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 1,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716115301",
|
||||||
|
"tm": "2023-03-12T08:02:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716115301/20230312160200.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115301",
|
||||||
|
"tm": "2023-03-12T07:11:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716115302/20230312151100.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": 199.45
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115701",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "二五冲水库",
|
||||||
|
"adcd": "421181110000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.087222,
|
||||||
|
"lttd": 31.378333,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 11.2,
|
||||||
|
"dsflz": 10.07,
|
||||||
|
"fsltdz": 108.55,
|
||||||
|
"ddz": 1.5,
|
||||||
|
"zcxsw": 108.55,
|
||||||
|
"drpTm": "2025-03-22T08:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 99.65,
|
||||||
|
"w": 0.038,
|
||||||
|
"a_fsltdz": -8.899999999999991,
|
||||||
|
"rzTm": "2025-03-22T08:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716115701",
|
||||||
|
"tm": "2025-03-06T23:01:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2025/0307/716115701/20250307070100.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115701",
|
||||||
|
"tm": "2024-10-18T06:28:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2024/1018/716115702/20241018142800.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -8.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115501",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "石鼓庙水库",
|
||||||
|
"adcd": "421181110000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.049444,
|
||||||
|
"lttd": 31.392222,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 106.15,
|
||||||
|
"dsflz": 104.92,
|
||||||
|
"fsltdz": 102.45,
|
||||||
|
"ddz": 6.7,
|
||||||
|
"zcxsw": 102.45,
|
||||||
|
"drpTm": "2024-11-17T04:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 95.86,
|
||||||
|
"w": 0.073,
|
||||||
|
"a_fsltdz": -6.590000000000003,
|
||||||
|
"rzTm": "2024-08-21T01:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716115501",
|
||||||
|
"tm": "2023-03-12T07:04:32.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716115501/20230312150432.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115501",
|
||||||
|
"tm": "2023-03-12T07:08:39.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716115502/20230312150839.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -6.59
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115601",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "滚冲水库",
|
||||||
|
"adcd": "421181110000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.027778,
|
||||||
|
"lttd": 31.386944,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 129.72,
|
||||||
|
"dsflz": 129.17,
|
||||||
|
"fsltdz": 128.3,
|
||||||
|
"ddz": 123,
|
||||||
|
"zcxsw": 128.3,
|
||||||
|
"drpTm": "2025-04-11T04:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 123.03,
|
||||||
|
"w": 0.02,
|
||||||
|
"a_fsltdz": -5.27000000000001,
|
||||||
|
"rzTm": "2025-04-11T04:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716115601",
|
||||||
|
"tm": "2023-03-12T07:03:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716115601/20230312150300.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716115601",
|
||||||
|
"tm": "2023-03-12T07:11:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716115602/20230312151100.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -5.27
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716108601",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "吴家垸水库",
|
||||||
|
"adcd": "421181110000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.029167,
|
||||||
|
"lttd": 31.427222,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 15.7,
|
||||||
|
"dsflz": 13.85,
|
||||||
|
"fsltdz": 173.9,
|
||||||
|
"ddz": 4.6,
|
||||||
|
"zcxsw": 173.9,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 169.14,
|
||||||
|
"w": 0.11,
|
||||||
|
"a_fsltdz": -4.760000000000019,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716108601",
|
||||||
|
"tm": "2023-03-12T08:01:41.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716108601/20230312160141.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716108601",
|
||||||
|
"tm": "2023-03-12T07:04:17.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716108602/20230312150417.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -4.76
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716113401",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "鲇鱼坝水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.731667,
|
||||||
|
"lttd": 31.019444,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 55.73,
|
||||||
|
"dsflz": 52.9,
|
||||||
|
"fsltdz": 50.63,
|
||||||
|
"ddz": 42.83,
|
||||||
|
"zcxsw": 50.63,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 48.05,
|
||||||
|
"w": 2.584,
|
||||||
|
"a_fsltdz": -2.5800000000000054,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716113401",
|
||||||
|
"tm": "2023-03-12T07:07:01.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716113401/20230312150701.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716113401",
|
||||||
|
"tm": "2023-03-12T07:15:09.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716113402/20230312151509.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -2.58
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716126501",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "破堰水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.696111,
|
||||||
|
"lttd": 31.025556,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 18.48,
|
||||||
|
"dsflz": 15.23,
|
||||||
|
"fsltdz": 74.2,
|
||||||
|
"ddz": 6.3,
|
||||||
|
"zcxsw": 74.2,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 64.47,
|
||||||
|
"w": 0.265,
|
||||||
|
"a_fsltdz": -9.730000000000004,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716126501",
|
||||||
|
"tm": "2023-03-12T07:04:21.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716126501/20230312150421.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716126501",
|
||||||
|
"tm": "2023-03-12T07:10:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716126502/20230312151000.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -9.73
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716107371",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "群英水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.726944,
|
||||||
|
"lttd": 31.054444,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 7.4,
|
||||||
|
"dsflz": 6.02,
|
||||||
|
"fsltdz": 65.6,
|
||||||
|
"ddz": 4.1,
|
||||||
|
"zcxsw": 65.6,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 68.66,
|
||||||
|
"w": 0,
|
||||||
|
"a_fsltdz": 3.0600000000000023,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 1,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716107371",
|
||||||
|
"tm": "2023-03-12T07:23:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716107371/20230312152300.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716107371",
|
||||||
|
"tm": "2023-03-12T07:16:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716107372/20230312151600.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": 3.06
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716126301",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "淮海水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.694722,
|
||||||
|
"lttd": 31.053333,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 11.2,
|
||||||
|
"dsflz": 9.97,
|
||||||
|
"fsltdz": 9.6,
|
||||||
|
"ddz": 6.3,
|
||||||
|
"zcxsw": 9.6,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 64.96,
|
||||||
|
"w": 0.129,
|
||||||
|
"a_fsltdz": 55.35999999999999,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 1,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716126301",
|
||||||
|
"tm": "2023-03-12T07:04:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716126301/20230312150400.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716126301",
|
||||||
|
"tm": "2023-03-12T07:10:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716126302/20230312151000.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": 55.36
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716108501",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "东风水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 115.232222,
|
||||||
|
"lttd": 30.970556,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 81.7,
|
||||||
|
"dsflz": 80.22,
|
||||||
|
"fsltdz": 79,
|
||||||
|
"ddz": 76.2,
|
||||||
|
"zcxsw": 79,
|
||||||
|
"drpTm": "2025-03-22T08:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 78.22,
|
||||||
|
"w": 0.203,
|
||||||
|
"a_fsltdz": -0.7800000000000011,
|
||||||
|
"rzTm": "2025-03-22T08:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716108501",
|
||||||
|
"tm": "2024-09-08T02:44:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2024/0908/716108501/20240908104400.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716108501",
|
||||||
|
"tm": "2024-08-26T09:20:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2024/0826/716108502/20240826172000.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -0.78
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716126601",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "毛屋湾水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.693889,
|
||||||
|
"lttd": 31.019722,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 10,
|
||||||
|
"dsflz": 9.8,
|
||||||
|
"fsltdz": 66.57,
|
||||||
|
"ddz": 5,
|
||||||
|
"zcxsw": 66.57,
|
||||||
|
"drpTm": "2024-12-30T06:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 65.41,
|
||||||
|
"w": 0.039,
|
||||||
|
"a_fsltdz": -1.1599999999999966,
|
||||||
|
"rzTm": "2024-05-15T06:00:00.000Z",
|
||||||
|
"rzWarning": 0,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716126601",
|
||||||
|
"tm": "2024-03-11T02:02:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2024/0311/716126601/20240311100200.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716126601",
|
||||||
|
"tm": "2024-05-15T06:07:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2024/0515/716126602/20240515140700.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": -1.16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "7CS000081",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "陡山洪水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.724722,
|
||||||
|
"lttd": 31.007222,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 56.7,
|
||||||
|
"dsflz": 55.6,
|
||||||
|
"fsltdz": 5.8,
|
||||||
|
"ddz": 49.71,
|
||||||
|
"zcxsw": 5.8,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 51.26,
|
||||||
|
"w": 0.034,
|
||||||
|
"a_fsltdz": 45.46,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 1,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "7CS000081",
|
||||||
|
"tm": "2023-03-12T08:01:48.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/7CS000081/20230312160148.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "7CS000081",
|
||||||
|
"tm": "2023-03-12T07:05:33.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/7CS000082/20230312150533.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": 45.46
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716107391",
|
||||||
|
"type": "sk",
|
||||||
|
"hasRz": true,
|
||||||
|
"stnm": "高岗水库",
|
||||||
|
"adcd": "421181102000",
|
||||||
|
"wscd": null,
|
||||||
|
"importancy": 0,
|
||||||
|
"lgtd": 114.731389,
|
||||||
|
"lttd": 31.042222,
|
||||||
|
"elev": 0,
|
||||||
|
"damel": 41.7,
|
||||||
|
"dsflz": 41.6,
|
||||||
|
"fsltdz": 40,
|
||||||
|
"ddz": 35.56,
|
||||||
|
"zcxsw": 40,
|
||||||
|
"drpTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"today": 0,
|
||||||
|
"h1": 0,
|
||||||
|
"h3": 0,
|
||||||
|
"h6": 0,
|
||||||
|
"h12": 0,
|
||||||
|
"h24": 0,
|
||||||
|
"h48": 0,
|
||||||
|
"drpState": 2,
|
||||||
|
"rz": 51.42,
|
||||||
|
"w": 0.044,
|
||||||
|
"a_fsltdz": 11.420000000000002,
|
||||||
|
"rzTm": "2025-04-11T05:00:00.000Z",
|
||||||
|
"rzWarning": 1,
|
||||||
|
"rzState": 2,
|
||||||
|
"pic": [
|
||||||
|
{
|
||||||
|
"stcd": "716107391",
|
||||||
|
"tm": "2023-03-12T07:03:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716107391/20230312150300.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stcd": "716107391",
|
||||||
|
"tm": "2023-03-12T07:10:00.000Z",
|
||||||
|
"url": "http://223.75.53.106:8891/skjgimages/2023/0312/716107392/20230312151000.jpg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"aRz": 11.42
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export default class XunchaLayer extends BaseLayer {
|
||||||
|
|
||||||
|
static LayerName = 'XunchaLayer';
|
||||||
|
|
||||||
|
static SourceName = SourceName;
|
||||||
|
|
||||||
|
getStyle() {
|
||||||
|
|
||||||
|
const ret = clone(ShapeStyle);
|
||||||
|
this._setStyleVisibility(ret);
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getName() {
|
||||||
|
return XunchaLayer.LayerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
getSubLayers() {
|
||||||
|
return [ShapeStyle.id];
|
||||||
|
}
|
||||||
|
|
||||||
|
async doRefreshLayer(mapCtrl) {
|
||||||
|
const ms = mapCtrl.getSource(SourceName);
|
||||||
|
|
||||||
|
let data =
|
||||||
|
// await PicStPromise.get();
|
||||||
|
[...page1].map((item)=>{
|
||||||
|
const obj = {...item}
|
||||||
|
obj.lgtd = item.lgtd + 0.0019
|
||||||
|
obj.lttd = item.lttd
|
||||||
|
return obj
|
||||||
|
})
|
||||||
|
ms.setData(parseGeoJSON(data));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getFeatureTip(record) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
featureClicked(properties, dispatch) {
|
||||||
|
dispatch?.runtime.setInfoDlg({ layerId: 'XcxqLayer', properties: {} })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -118,6 +118,9 @@ import Skyb from './panels/Skyb'
|
||||||
import ShuikuYa from './panels/Yuanyfa'
|
import ShuikuYa from './panels/Yuanyfa'
|
||||||
import Diaodujg from './panels/Diaodujg'
|
import Diaodujg from './panels/Diaodujg'
|
||||||
import Duibifx from './panels/Duibifx'
|
import Duibifx from './panels/Duibifx'
|
||||||
|
import Xczl from './panels/Xczl'
|
||||||
|
import Xckb from './panels/Xcwtkb'
|
||||||
|
import Shuikugh from './panels/Shuikugh'
|
||||||
export default function PanelIndex({ name, style, ...params }) {
|
export default function PanelIndex({ name, style, ...params }) {
|
||||||
if (name === '天气') {
|
if (name === '天气') {
|
||||||
return (
|
return (
|
||||||
|
|
@ -346,6 +349,12 @@ export default function PanelIndex({ name, style, ...params }) {
|
||||||
return <Ddcg style={style} />
|
return <Ddcg style={style} />
|
||||||
} else if (name === '方案对比') {
|
} else if (name === '方案对比') {
|
||||||
return <Fadb style={style} />
|
return <Fadb style={style} />
|
||||||
|
}else if (name === '巡查任务总览') {
|
||||||
|
return <Xczl />
|
||||||
|
}else if (name === '巡查问题看板') {
|
||||||
|
return <Xckb />
|
||||||
|
}else if (name === '水库管护') {
|
||||||
|
return <Shuikugh />
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ const VIEWS = [
|
||||||
{ id: 203, title: '安全监测', img: '/assets/menu/安全监测.png' },
|
{ id: 203, title: '安全监测', img: '/assets/menu/安全监测.png' },
|
||||||
{ id: 204, title: '视频监视', img: '/assets/menu/视频监视.png' },
|
{ id: 204, title: '视频监视', img: '/assets/menu/视频监视.png' },
|
||||||
{ id: 205, title: '防汛调度', img: '/assets/menu/防汛调度.png' },
|
{ id: 205, title: '防汛调度', img: '/assets/menu/防汛调度.png' },
|
||||||
{ id: 206, title: '水库管理', img: '/assets/menu/水库管理.png' },
|
{ id: 206, title: '巡查维养', img: '/assets/menu/水库管理.png' },
|
||||||
] },
|
] },
|
||||||
{
|
{
|
||||||
id: 300, title: '水厂', img: '/assets/menu/水利设施.png', children: [
|
id: 300, title: '水厂', img: '/assets/menu/水利设施.png', children: [
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,183 @@
|
||||||
|
import React, { useState, useRef } from 'react';
|
||||||
|
import {
|
||||||
|
IconButton,
|
||||||
|
Slider,
|
||||||
|
Box,
|
||||||
|
} from '@material-ui/core';
|
||||||
|
import { makeStyles } from '@material-ui/core/styles';
|
||||||
|
import clsx from "clsx"
|
||||||
|
import PlayArrowIcon from '@material-ui/icons/PlayArrow';
|
||||||
|
import PauseIcon from '@material-ui/icons/Pause';
|
||||||
|
|
||||||
|
const useStyles = makeStyles((theme) => ({
|
||||||
|
root: {
|
||||||
|
position: 'relative',
|
||||||
|
width: '100%',
|
||||||
|
height: '100%',
|
||||||
|
backgroundColor: '#000',
|
||||||
|
},
|
||||||
|
videoContainer: {
|
||||||
|
width: '100%',
|
||||||
|
height: '100%',
|
||||||
|
'& video': {
|
||||||
|
width: '100%',
|
||||||
|
height: '100%',
|
||||||
|
objectFit: 'cover',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
controls: {
|
||||||
|
position: 'absolute',
|
||||||
|
bottom: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
padding: theme.spacing(1, 2),
|
||||||
|
background: 'linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%)',
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
gap: theme.spacing(2),
|
||||||
|
},
|
||||||
|
controls1: {
|
||||||
|
position: 'absolute',
|
||||||
|
top: '85%',
|
||||||
|
left: '50%',
|
||||||
|
transform: 'translate(-50%, -50%)',
|
||||||
|
padding: theme.spacing(2),
|
||||||
|
background: 'rgba(0,0,0,0.7)',
|
||||||
|
borderRadius: theme.spacing(1),
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
gap: theme.spacing(2),
|
||||||
|
width: '800px',
|
||||||
|
maxWidth: '90%',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
|
||||||
|
},
|
||||||
|
playButton: {
|
||||||
|
color: '#fff',
|
||||||
|
pointerEvents: 'auto',
|
||||||
|
'&:hover': {
|
||||||
|
backgroundColor: 'rgba(255,255,255,0.1)',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
slider: {
|
||||||
|
color: '#1976d2',
|
||||||
|
pointerEvents: 'auto',
|
||||||
|
flex: 1,
|
||||||
|
'& .MuiSlider-rail': {
|
||||||
|
backgroundColor: 'rgba(255,255,255,0.3)',
|
||||||
|
},
|
||||||
|
'& .MuiSlider-track': {
|
||||||
|
backgroundColor: '#1976d2',
|
||||||
|
},
|
||||||
|
'& .MuiSlider-thumb': {
|
||||||
|
width: 12,
|
||||||
|
height: 12,
|
||||||
|
backgroundColor: '#fff',
|
||||||
|
'&:hover, &.Mui-focusVisible': {
|
||||||
|
boxShadow: '0 0 0 8px rgba(25,118,210,0.16)',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
timeDisplay: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: '0.875rem',
|
||||||
|
minWidth: 100,
|
||||||
|
textAlign: 'right',
|
||||||
|
pointerEvents: 'auto',
|
||||||
|
},
|
||||||
|
dateDisplay: {
|
||||||
|
position: 'absolute',
|
||||||
|
top: theme.spacing(2),
|
||||||
|
left: theme.spacing(2),
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: '1.25rem',
|
||||||
|
fontWeight: 500,
|
||||||
|
textShadow: '1px 1px 2px rgba(0,0,0,0.5)',
|
||||||
|
},
|
||||||
|
odd: {
|
||||||
|
zIndex: 1,
|
||||||
|
position: 'absolute'
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
const VideoPlayer = ({ videoUrl, date,odd=false }) => {
|
||||||
|
const classes = useStyles();
|
||||||
|
const [playing, setPlaying] = useState(false);
|
||||||
|
const [progress, setProgress] = useState(0);
|
||||||
|
const [currentTime, setCurrentTime] = useState(0);
|
||||||
|
const [duration, setDuration] = useState(0);
|
||||||
|
const videoRef = useRef(null);
|
||||||
|
|
||||||
|
const handlePlayPause = () => {
|
||||||
|
if (playing) {
|
||||||
|
videoRef.current.pause();
|
||||||
|
} else {
|
||||||
|
videoRef.current.play();
|
||||||
|
}
|
||||||
|
setPlaying(!playing);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleTimeUpdate = () => {
|
||||||
|
const video = videoRef.current;
|
||||||
|
if (video) {
|
||||||
|
const progress = (video.currentTime / video.duration) * 100;
|
||||||
|
setProgress(progress);
|
||||||
|
setCurrentTime(video.currentTime);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleLoadedMetadata = () => {
|
||||||
|
setDuration(videoRef.current.duration);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSliderChange = (event, newValue) => {
|
||||||
|
const time = (newValue / 100) * duration;
|
||||||
|
videoRef.current.currentTime = time;
|
||||||
|
setProgress(newValue);
|
||||||
|
};
|
||||||
|
|
||||||
|
const formatTime = (time) => {
|
||||||
|
const minutes = Math.floor(time / 60);
|
||||||
|
const seconds = Math.floor(time % 60);
|
||||||
|
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className={clsx({[classes.root]:true,[classes.odd]:odd})}>
|
||||||
|
<div className={classes.videoContainer}>
|
||||||
|
<video
|
||||||
|
ref={videoRef}
|
||||||
|
onTimeUpdate={handleTimeUpdate}
|
||||||
|
onLoadedMetadata={handleLoadedMetadata}
|
||||||
|
>
|
||||||
|
<source src={videoUrl} type="video/mp4" />
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className={classes.dateDisplay}>
|
||||||
|
{date}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className={clsx({[classes.controls]:odd,[classes.controls1]:odd})}>
|
||||||
|
<IconButton
|
||||||
|
className={classes.playButton}
|
||||||
|
onClick={handlePlayPause}
|
||||||
|
>
|
||||||
|
{playing ? <PauseIcon /> : <PlayArrowIcon />}
|
||||||
|
</IconButton>
|
||||||
|
|
||||||
|
<Slider
|
||||||
|
className={classes.slider}
|
||||||
|
value={progress}
|
||||||
|
onChange={handleSliderChange}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Box className={classes.timeDisplay}>
|
||||||
|
{formatTime(currentTime)} / {formatTime(duration)}
|
||||||
|
</Box>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default VideoPlayer;
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import React,{useEffect} from 'react';
|
import React, { useEffect } from 'react';
|
||||||
import { useSelector,useDispatch } from 'react-redux';
|
import { useSelector, useDispatch } from 'react-redux';
|
||||||
import { TransitionGroup, CSSTransition } from 'react-transition-group';
|
import { TransitionGroup, CSSTransition } from 'react-transition-group';
|
||||||
import './index.less';
|
import './index.less';
|
||||||
import ActionDock from './components/ActionDock';
|
import ActionDock from './components/ActionDock';
|
||||||
|
|
@ -10,6 +10,7 @@ import MapCtrl from './MapCtrl';
|
||||||
import InfoDlg from './InfoDlg';
|
import InfoDlg from './InfoDlg';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import Calculating from './components/Calculating';
|
import Calculating from './components/Calculating';
|
||||||
|
import VideoPlayer from './components/VideoCom/index';
|
||||||
//import SocketCtrl from './components/SocketCtrl';
|
//import SocketCtrl from './components/SocketCtrl';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -21,10 +22,10 @@ export default function Demo1() {
|
||||||
const yyRes = useSelector(s => s.runtime.yyObj);
|
const yyRes = useSelector(s => s.runtime.yyObj);
|
||||||
const isSc = useSelector(s => s.runtime.scya);
|
const isSc = useSelector(s => s.runtime.scya);
|
||||||
const wg = useSelector(s => s.runtime.shkshObj)
|
const wg = useSelector(s => s.runtime.shkshObj)
|
||||||
console.log('wg',wg);
|
console.log('wg', wg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="demo1">
|
<div className="demo1">
|
||||||
<div style={{ position: 'absolute', left: 0, bottom: 0, right: 0, top: 0, zIndex: 0 }}>
|
<div style={{ position: 'absolute', left: 0, bottom: 0, right: 0, top: 0, zIndex: 0 }}>
|
||||||
|
|
@ -33,10 +34,15 @@ export default function Demo1() {
|
||||||
|
|
||||||
{
|
{
|
||||||
yyRes.yy &&
|
yyRes.yy &&
|
||||||
<>
|
<VideoPlayer
|
||||||
<img src={`${process.env.PUBLIC_URL}/assets/yytc.png`} alt="" style={{ zIndex: 0.1, position: 'absolute' }} />
|
videoUrl={`${process.env.PUBLIC_URL}/assets/gaoguan.mp4`}
|
||||||
<img src={`${process.env.PUBLIC_URL}/assets/yy.png`} alt="" style={{ zIndex: 0.2, position: 'absolute', bottom: 150, left: '32%', width: 700 }} />
|
date=""
|
||||||
</>
|
odd={true}
|
||||||
|
/>
|
||||||
|
// <>
|
||||||
|
// <img src={`${process.env.PUBLIC_URL}/assets/yytc.png`} alt="" style={{ zIndex: 0.1, position: 'absolute' }} />
|
||||||
|
// <img src={`${process.env.PUBLIC_URL}/assets/yy.png`} alt="" style={{ zIndex: 0.2, position: 'absolute', bottom: 150, left: '32%', width: 700 }} />
|
||||||
|
// </>
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -75,8 +81,8 @@ export default function Demo1() {
|
||||||
<PanelIndex name={key} {...params} />
|
<PanelIndex name={key} {...params} />
|
||||||
</CSSTransition>
|
</CSSTransition>
|
||||||
)
|
)
|
||||||
} else if(wg) {
|
} else if (wg) {
|
||||||
return (
|
return (
|
||||||
<CSSTransition key={key} unmountOnExit exit={false} timeout={500} classNames="dp-panelgroup">
|
<CSSTransition key={key} unmountOnExit exit={false} timeout={500} classNames="dp-panelgroup">
|
||||||
<PanelIndex name={key} {...params} />
|
<PanelIndex name={key} {...params} />
|
||||||
</CSSTransition>
|
</CSSTransition>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ function DrpReal({ style }) {
|
||||||
return (
|
return (
|
||||||
<PanelBox
|
<PanelBox
|
||||||
style={style}
|
style={style}
|
||||||
title="对比分析"
|
title="方案对比"
|
||||||
color="green"
|
color="green"
|
||||||
>
|
>
|
||||||
<img src='/assets/duibifenxi.png' style={{width:'429.81px', height:'254px',marginLeft:'1px'}}/>
|
<img src='/assets/duibifenxi.png' style={{width:'429.81px', height:'254px',marginLeft:'1px'}}/>
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,7 @@ function HDReal({ style }) {
|
||||||
const toggleAutoRefresh = () => {
|
const toggleAutoRefresh = () => {
|
||||||
dispatch.realview.setHdAutoRefresh(!hdAutoRefresh);
|
dispatch.realview.setHdAutoRefresh(!hdAutoRefresh);
|
||||||
}
|
}
|
||||||
|
const [renderChart, setRenderChart] = useState(false)
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -136,15 +136,18 @@ function HDReal({ style }) {
|
||||||
<div className='skyb-box' >
|
<div className='skyb-box' >
|
||||||
<div className='rain-yb'>
|
<div className='rain-yb'>
|
||||||
<div className='title-yb'>水库洪水演进</div>
|
<div className='title-yb'>水库洪水演进</div>
|
||||||
<TableYj onChange={() => {}}/>
|
<TableYj onChange={() => setRenderChart(true)}/>
|
||||||
</div>
|
</div>
|
||||||
<div className='rain-yb'>
|
<div className='rain-yb'>
|
||||||
<div className='title-yb'>下游淹没影响</div>
|
<div className='title-yb'>下游淹没影响</div>
|
||||||
<img src={`${process.env.PUBLIC_URL}/assets/cgfx.png`} alt="" style={{ width: 420}} />
|
<img src={`${process.env.PUBLIC_URL}/assets/cgfx.png`} alt="" style={{ width: 420}} />
|
||||||
</div>
|
</div>
|
||||||
<div style={{position:'absolute',top:80,right:450}}>
|
{
|
||||||
|
renderChart &&<div style={{position:'absolute',top:80,right:450}}>
|
||||||
<img src={`${process.env.PUBLIC_URL}/assets/dcjg.jpg`} alt="" style={{ width: 370}} />
|
<img src={`${process.env.PUBLIC_URL}/assets/dcjg.jpg`} alt="" style={{ width: 370}} />
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</> :
|
</> :
|
||||||
<Empty description={<span style={{color:"#fff"}}>暂无数据</span>}/>
|
<Empty description={<span style={{color:"#fff"}}>暂无数据</span>}/>
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import {
|
||||||
} from '@material-ui/core';
|
} from '@material-ui/core';
|
||||||
import AddIcon from '@material-ui/icons/Add';
|
import AddIcon from '@material-ui/icons/Add';
|
||||||
import { useDispatch, useSelector } from 'react-redux';
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
|
import DpTableCell from '../../../../layouts/mui/DpTableCell';
|
||||||
|
|
||||||
import RemoveIcon from '@material-ui/icons/Remove';
|
import RemoveIcon from '@material-ui/icons/Remove';
|
||||||
import config from '../../../../config';
|
import config from '../../../../config';
|
||||||
|
|
@ -214,14 +215,14 @@ export default function Overall({ style }) {
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<TableContainer>
|
<TableContainer >
|
||||||
<Table className={classes.table}>
|
<Table stickyHeader>
|
||||||
<TableHead>
|
<TableHead >
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell style={{ width: '50%' }}>站名</TableCell>
|
<DpTableCell style={{ width: '50%' }}>站名</DpTableCell>
|
||||||
<TableCell style={{ width: '20%' }}>累计雨量(mm)</TableCell>
|
<DpTableCell style={{ width: '20%' }}>累计雨量(mm)</DpTableCell>
|
||||||
<TableCell style={{ width: '15%' }}>所属政区</TableCell>
|
<DpTableCell style={{ width: '15%' }}>所属政区</DpTableCell>
|
||||||
<TableCell style={{ width: '15%' }}>所属流域</TableCell>
|
<DpTableCell style={{ width: '15%' }}>所属流域</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
|
|
@ -231,7 +232,7 @@ export default function Overall({ style }) {
|
||||||
// className={classes.stationRow}
|
// className={classes.stationRow}
|
||||||
className={`${classes.warningRow} ${station.color}`}
|
className={`${classes.warningRow} ${station.color}`}
|
||||||
>
|
>
|
||||||
<TableCell>
|
<DpTableCell>
|
||||||
<Box display="flex" alignItems="center">
|
<Box display="flex" alignItems="center">
|
||||||
<IconButton
|
<IconButton
|
||||||
size="small"
|
size="small"
|
||||||
|
|
@ -242,29 +243,29 @@ export default function Overall({ style }) {
|
||||||
</IconButton>
|
</IconButton>
|
||||||
{station.name}({station.count})
|
{station.name}({station.count})
|
||||||
</Box>
|
</Box>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell colSpan={4} style={{ padding: 0 }}>
|
<DpTableCell colSpan={4} style={{ padding: 0 }}>
|
||||||
<Collapse in={expanded[station.id]} timeout="auto" unmountOnExit>
|
<Collapse in={expanded[station.id]} timeout="auto" unmountOnExit>
|
||||||
<Box className={`${classes.expandedRow} ${station.color}`}>
|
<Box className={`${classes.expandedRow} ${station.color}`}>
|
||||||
{/* 展开的详细内容可以在这里添加 */}{
|
{/* 展开的详细内容可以在这里添加 */}{
|
||||||
station.id == 'heavy' && drpData.map(item => (
|
station.id == 'heavy' && drpData.map(item => (
|
||||||
<TableRow onClick={() =>flyTo(item)}>
|
<TableRow onClick={() =>flyTo(item)}>
|
||||||
<TableCell style={{ width: '25%' }}>{item.stnm}</TableCell>
|
<DpTableCell style={{ width: '25%' }}>{item.stnm}</DpTableCell>
|
||||||
<TableCell style={{ width: '20%' }}>{item.today}</TableCell>
|
<DpTableCell style={{ width: '20%' }}>{item.today}</DpTableCell>
|
||||||
<TableCell style={{ width: '25%' }}>阎家河镇</TableCell>
|
<DpTableCell style={{ width: '25%' }}>阎家河镇</DpTableCell>
|
||||||
<TableCell style={{ width: '30%' }}>桃林河</TableCell>
|
<DpTableCell style={{ width: '30%' }}>桃林河</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
</Box>
|
</Box>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
|
|
@ -134,11 +134,11 @@ function HDReal({ style }) {
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
num.length ? num.map(item => (
|
num.length ?
|
||||||
<div style={{ padding: '5px' }}>
|
<div style={{ padding: '5px' }}>
|
||||||
<img src={`${process.env.PUBLIC_URL}/assets/duibi1.png`} alt="" style={{ width: 420 }} />
|
<img src={`${process.env.PUBLIC_URL}/assets/${num.length == 1 ? 'duibi1':'duibi2'}.png`} alt="" style={{ width: 420 }} />
|
||||||
</div>
|
</div>
|
||||||
))
|
|
||||||
:
|
:
|
||||||
<Empty description={<span style={{ color: "#fff" }}>暂无数据</span>} />
|
<Empty description={<span style={{ color: "#fff" }}>暂无数据</span>} />
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import {
|
||||||
Button,
|
Button,
|
||||||
Table,
|
Table,
|
||||||
TableBody,
|
TableBody,
|
||||||
TableCell,
|
|
||||||
TableContainer,
|
TableContainer,
|
||||||
TableHead,
|
TableHead,
|
||||||
TableRow,
|
TableRow,
|
||||||
|
|
@ -22,6 +21,8 @@ import {
|
||||||
} from '@material-ui/core';
|
} from '@material-ui/core';
|
||||||
import AddIcon from '@material-ui/icons/Add';
|
import AddIcon from '@material-ui/icons/Add';
|
||||||
import RemoveIcon from '@material-ui/icons/Remove';
|
import RemoveIcon from '@material-ui/icons/Remove';
|
||||||
|
import DpTableCell from '../../../../layouts/mui/DpTableCell';
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
root: {
|
root: {
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
|
|
@ -141,20 +142,20 @@ export default function Overall({ style }) {
|
||||||
|
|
||||||
|
|
||||||
<TableContainer>
|
<TableContainer>
|
||||||
<Table className={classes.table}>
|
<Table >
|
||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell style={{ width: '35%' }}>站名</TableCell>
|
<DpTableCell style={{ width: '35%' }}>站名</DpTableCell>
|
||||||
<TableCell style={{ width: '30%' }}>水位(mm)</TableCell>
|
<DpTableCell style={{ width: '30%' }}>水位(mm)</DpTableCell>
|
||||||
<TableCell style={{ width: '15%' }}>所属政区</TableCell>
|
<DpTableCell style={{ width: '15%' }}>所属政区</DpTableCell>
|
||||||
<TableCell style={{ width: '15%' }}>所属流域</TableCell>
|
<DpTableCell style={{ width: '15%' }}>所属流域</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{stations.map((station) => (
|
{stations.map((station) => (
|
||||||
<React.Fragment key={station.id}>
|
<React.Fragment key={station.id}>
|
||||||
<TableRow className={`${classes.warningRow} ${station.type}`}>
|
<TableRow className={`${classes.warningRow} ${station.type}`}>
|
||||||
<TableCell>
|
<DpTableCell>
|
||||||
<Box display="flex" alignItems="center">
|
<Box display="flex" alignItems="center">
|
||||||
<IconButton
|
<IconButton
|
||||||
size="small"
|
size="small"
|
||||||
|
|
@ -165,25 +166,25 @@ export default function Overall({ style }) {
|
||||||
</IconButton>
|
</IconButton>
|
||||||
{station.name}({station.count})
|
{station.name}({station.count})
|
||||||
</Box>
|
</Box>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell colSpan={4} style={{ padding: 0 }}>
|
<DpTableCell colSpan={4} style={{ padding: 0 }}>
|
||||||
<Collapse in={expanded[station.id]} timeout="auto" unmountOnExit>
|
<Collapse in={expanded[station.id]} timeout="auto" unmountOnExit>
|
||||||
<Box className={`${classes.expandedRow} ${station.color}`}>
|
<Box className={`${classes.expandedRow} ${station.color}`}>
|
||||||
{/* 展开的详细内容可以在这里添加 */}
|
{/* 展开的详细内容可以在这里添加 */}
|
||||||
{/* <TableRow>
|
{/* <TableRow>
|
||||||
<TableCell style={{ width: '25%' }}>站名</TableCell>
|
<DpTableCell style={{ width: '25%' }}>站名</DpTableCell>
|
||||||
<TableCell style={{ width: '20%' }}>水位(m)</TableCell>
|
<DpTableCell style={{ width: '20%' }}>水位(m)</DpTableCell>
|
||||||
<TableCell style={{ width: '25%' }}>所属政区</TableCell>
|
<DpTableCell style={{ width: '25%' }}>所属政区</DpTableCell>
|
||||||
<TableCell style={{ width: '30%' }}>所属流域</TableCell>
|
<DpTableCell style={{ width: '30%' }}>所属流域</DpTableCell>
|
||||||
</TableRow> */}
|
</TableRow> */}
|
||||||
</Box>
|
</Box>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import {
|
||||||
Button,
|
Button,
|
||||||
Table,
|
Table,
|
||||||
TableBody,
|
TableBody,
|
||||||
TableCell,
|
|
||||||
TableContainer,
|
TableContainer,
|
||||||
TableHead,
|
TableHead,
|
||||||
TableRow,
|
TableRow,
|
||||||
|
|
@ -26,6 +26,7 @@ import RemoveIcon from '@material-ui/icons/Remove';
|
||||||
import WarningIcon from '@material-ui/icons/Warning';
|
import WarningIcon from '@material-ui/icons/Warning';
|
||||||
import AddIcon from '@material-ui/icons/Add';
|
import AddIcon from '@material-ui/icons/Add';
|
||||||
import { useDispatch } from 'react-redux';
|
import { useDispatch } from 'react-redux';
|
||||||
|
import DpTableCell from '../../../../layouts/mui/DpTableCell';
|
||||||
|
|
||||||
import { DatePicker } from 'antd';
|
import { DatePicker } from 'antd';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
@ -135,11 +136,11 @@ export default function Overall({ style }) {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let options = "";
|
let options = "";
|
||||||
options = {
|
options = {
|
||||||
etm: moment().add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
etm: moment().add(1, 'days').add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
||||||
stm: moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
stm: moment().add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
||||||
tm: [
|
tm: [
|
||||||
moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }),
|
moment().add(1, 'hour').set({ minute: 0, second: 0 }).hours(9),
|
||||||
moment().add(1, 'hour').set({ minute: 0, second: 0 }),
|
moment().add(1, 'days').add(1, 'hour').set({ minute: 0, second: 0 }).hours(9),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -240,19 +241,19 @@ export default function Overall({ style }) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<TableContainer component={Paper} style={{ backgroundColor: 'transparent' }}>
|
<TableContainer component={Paper} style={{ backgroundColor: 'transparent' }}>
|
||||||
<Table className={classes.table}>
|
<Table stickyHeader>
|
||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell>乡镇</TableCell>
|
<DpTableCell>乡镇</DpTableCell>
|
||||||
<TableCell>预警时间</TableCell>
|
<DpTableCell>预警时间</DpTableCell>
|
||||||
<TableCell>预警状态</TableCell>
|
<DpTableCell>预警状态</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{warningData.map((row) => (
|
{warningData.map((row) => (
|
||||||
<React.Fragment key={row.type}>
|
<React.Fragment key={row.type}>
|
||||||
<TableRow className={`${classes.warningRow} ${row.type}`}>
|
<TableRow className={`${classes.warningRow} ${row.type}`}>
|
||||||
<TableCell>
|
<DpTableCell>
|
||||||
<Box display="flex" alignItems="center">
|
<Box display="flex" alignItems="center">
|
||||||
{expanded[row.type] ? (
|
{expanded[row.type] ? (
|
||||||
<RemoveIcon
|
<RemoveIcon
|
||||||
|
|
@ -267,14 +268,14 @@ export default function Overall({ style }) {
|
||||||
)}
|
)}
|
||||||
{row.label}
|
{row.label}
|
||||||
</Box>
|
</Box>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell>
|
<DpTableCell>
|
||||||
{row.count}个乡镇
|
{row.count}个乡镇
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell colSpan={3} style={{ padding: 0 }}>
|
<DpTableCell colSpan={3} style={{ padding: 0 }}>
|
||||||
<Collapse in={expanded[row.type]} timeout="auto" unmountOnExit>
|
<Collapse in={expanded[row.type]} timeout="auto" unmountOnExit>
|
||||||
<Box className={classes.expandedContent}>
|
<Box className={classes.expandedContent}>
|
||||||
{/* 这里可以添加展开后显示的详细内容 */}
|
{/* 这里可以添加展开后显示的详细内容 */}
|
||||||
|
|
@ -282,15 +283,15 @@ export default function Overall({ style }) {
|
||||||
{
|
{
|
||||||
row.type == 'immediate' ? zyData.map(item => (
|
row.type == 'immediate' ? zyData.map(item => (
|
||||||
<TableRow onClick={() => flyTo(item)}>
|
<TableRow onClick={() => flyTo(item)}>
|
||||||
<TableCell style={{ width: '30%' }}><div
|
<DpTableCell style={{ width: '30%' }}><div
|
||||||
className="table-ellipsis cursor-pointer"
|
className="table-ellipsis cursor-pointer"
|
||||||
>{item.adnm}</div></TableCell>
|
>{item.adnm}</div></DpTableCell>
|
||||||
<TableCell style={{ width: '40%' }}><div
|
<DpTableCell style={{ width: '40%' }}><div
|
||||||
className="table-ellipsis cursor-pointer"
|
className="table-ellipsis cursor-pointer"
|
||||||
>{item.warnetm}</div></TableCell>
|
>{item.warnetm}</div></DpTableCell>
|
||||||
<TableCell style={{ width: '30%' }}><div
|
<DpTableCell style={{ width: '30%' }}><div
|
||||||
className="table-ellipsis cursor-pointer"
|
className="table-ellipsis cursor-pointer"
|
||||||
>{item.status}</div></TableCell>
|
>{item.status}</div></DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
@ -299,7 +300,7 @@ export default function Overall({ style }) {
|
||||||
}
|
}
|
||||||
</Box>
|
</Box>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
|
|
@ -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 (
|
||||||
|
<Dialog
|
||||||
|
open={true}
|
||||||
|
onClose={onClose}
|
||||||
|
maxWidth="xl"
|
||||||
|
style={{ borderRadius: 0 }}
|
||||||
|
PaperComponent={DpPaperComponent}
|
||||||
|
BackdropComponent={DpBackgroundDrop}
|
||||||
|
>
|
||||||
|
<div className="boxhead"></div>
|
||||||
|
|
||||||
|
<DpDialogTitle>河道水位显示设置</DpDialogTitle>
|
||||||
|
<DialogContent>
|
||||||
|
<div style={{ width: 320, padding: '1rem 0' }}>
|
||||||
|
<FormGroup>
|
||||||
|
<div style={{ marginBottom: '1rem' }}>
|
||||||
|
<Typography variant="subtitle2">显示河道水位图层</Typography>
|
||||||
|
<Switch
|
||||||
|
checked={!!layerVisible.RealHDLayer}
|
||||||
|
color="primary"
|
||||||
|
edge="start"
|
||||||
|
onChange={(e) => dispath.map.setLayerVisible({ RealHDLayer: e.target.checked })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</FormGroup>
|
||||||
|
</div>
|
||||||
|
</DialogContent>
|
||||||
|
<div className="boxfoot"></div>
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Setting;
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -0,0 +1,197 @@
|
||||||
|
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 { Select, MenuItem } from '@material-ui/core/index'
|
||||||
|
|
||||||
|
// import showData from './constant'
|
||||||
|
function rzRender(rz, base) {
|
||||||
|
return (
|
||||||
|
<DpTableCell align="right" style={{ color: rz >= base ? 'red' : '#fff' }}>
|
||||||
|
{typeof base === 'number' ? base.toFixed(2) : ''}
|
||||||
|
</DpTableCell>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
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 [setting, showSetting] = useState(false);
|
||||||
|
const [dimension, setDimension] = useState('ft');
|
||||||
|
|
||||||
|
|
||||||
|
const data = [
|
||||||
|
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "浮桥河水库",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lon": "115.068090",
|
||||||
|
"lat": "31.026170",
|
||||||
|
'username': '熊杰',
|
||||||
|
taskType: '除草除杂',
|
||||||
|
tm: '2025-06-02 17:38:00',
|
||||||
|
status: '已处理'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "浮桥河水库",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lon": "115.068090",
|
||||||
|
"lat": "31.026170",
|
||||||
|
'username': '白斌',
|
||||||
|
taskType: '除草除杂',
|
||||||
|
tm: '2025-06-02 17:09:11',
|
||||||
|
status: '已处理'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "明山水库",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lon": "115.068090",
|
||||||
|
"lat": "31.026170",
|
||||||
|
'username': '余静',
|
||||||
|
taskType: '危险提示',
|
||||||
|
tm: '2025-06-02 16:10:00',
|
||||||
|
status: '已处理'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "永红水库",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lon": "115.068090",
|
||||||
|
"lat": "31.026170",
|
||||||
|
'username': '周真',
|
||||||
|
taskType: '设备养护',
|
||||||
|
tm: '2025-06-02 15:00:49',
|
||||||
|
status: '待处理'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "永丰水库",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lon": "115.068090",
|
||||||
|
"lat": "31.026170",
|
||||||
|
'username': '陈发',
|
||||||
|
taskType: '除草除杂',
|
||||||
|
tm: '2025-06-02 14:43:49',
|
||||||
|
status: '已处理'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
const [list, setList] = useState(data)
|
||||||
|
const onChange = (event) => {
|
||||||
|
const value = event.target.value;
|
||||||
|
setDimension(value);
|
||||||
|
const newData = data.filter(item => item.taskType == value);
|
||||||
|
if (newData.length) {
|
||||||
|
setList(newData);
|
||||||
|
} else {
|
||||||
|
setList(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const flyTo = () => {
|
||||||
|
dispatch?.runtime.setInfoDlg({ layerId: 'ShuikuyanghuLayer', properties: {} })
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<PanelBox
|
||||||
|
style={style}
|
||||||
|
title="水库管护"
|
||||||
|
color="green"
|
||||||
|
extra={
|
||||||
|
<>
|
||||||
|
<div style={{ height: '30px', overflow: 'hidden' }}>
|
||||||
|
<Select
|
||||||
|
labelId="analysis-select-label"
|
||||||
|
value={dimension}
|
||||||
|
label="请选择管护类型"
|
||||||
|
onChange={onChange}
|
||||||
|
>
|
||||||
|
<MenuItem value="ft">请选择管护类型</MenuItem>
|
||||||
|
<MenuItem value="除草除杂">除草除杂</MenuItem>
|
||||||
|
<MenuItem value="设备养护">设备养护</MenuItem>
|
||||||
|
<MenuItem value="危险提示">危险提示</MenuItem>
|
||||||
|
</Select>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<TableContainer style={{ height: '200px', overflow: 'auto' }}>
|
||||||
|
<Table size="small" stickyHeader>
|
||||||
|
<TableHead>
|
||||||
|
<TableRow>
|
||||||
|
<DpTableCell style={{ width: '30%' }} align="center">水库名称</DpTableCell>
|
||||||
|
<DpTableCell style={{ width: '20%' }} align="center">管护类型</DpTableCell>
|
||||||
|
<DpTableCell style={{ width: '25%' }} align="center">内容</DpTableCell>
|
||||||
|
<DpTableCell style={{ width: '25%' }} align="center">上报时间</DpTableCell>
|
||||||
|
</TableRow>
|
||||||
|
</TableHead>
|
||||||
|
<TableBody>
|
||||||
|
{list.map((row, index) => (
|
||||||
|
<DpTableRow key={row.stcd} onClick={flyTo}>
|
||||||
|
<DpTableCell align="center">
|
||||||
|
<div
|
||||||
|
className="table-ellipsis cursor-pointer"
|
||||||
|
>{row.name}</div>
|
||||||
|
</DpTableCell>
|
||||||
|
<DpTableCell align="center">{row.taskType}</DpTableCell>
|
||||||
|
<DpTableCell align="center">一切正常</DpTableCell>
|
||||||
|
<DpTableCell align="center"> <div
|
||||||
|
className="table-ellipsis cursor-pointer"
|
||||||
|
>{row.tm}</div></DpTableCell>
|
||||||
|
</DpTableRow>
|
||||||
|
))}
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
</TableContainer>
|
||||||
|
{
|
||||||
|
setting && <Setting onClose={() => showSetting(false)} />
|
||||||
|
}
|
||||||
|
</PanelBox>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HDReal;
|
||||||
|
|
@ -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}
|
||||||
|
<span className={classes.timeText}>({data.time})</span>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Paper className={classes.root} elevation={0}>
|
||||||
|
<TableContainer className={classes.tableContainer} >
|
||||||
|
<Table >
|
||||||
|
<TableHead >
|
||||||
|
<TableRow>
|
||||||
|
<TableCell className={classes.headerCell}>水库名称</TableCell>
|
||||||
|
<TableCell className={classes.headerCell}>
|
||||||
|
最大入库流量<br/>(m³/s)
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className={classes.headerCell}>
|
||||||
|
总入库水量<br/>(万m³)
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className={classes.headerCell}>
|
||||||
|
最大出库流量<br/>(m³/s)
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
</TableHead>
|
||||||
|
<TableBody>
|
||||||
|
{reservoirData.map((item, index) => (
|
||||||
|
<TableRow key={index}>
|
||||||
|
<TableCell className={classes.cell}>{item.name}</TableCell>
|
||||||
|
<TableCell className={classes.cell}>{formatFlowCell(item.maxInflow)}</TableCell>
|
||||||
|
<TableCell className={classes.cell}>{item.totalStorage}</TableCell>
|
||||||
|
<TableCell className={classes.cell}>{formatFlowCell(item.maxOutflow)}</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
))}
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
</TableContainer>
|
||||||
|
<div className={classes.scrollIndicator}>
|
||||||
|
<div
|
||||||
|
className={classes.scrollProgress}
|
||||||
|
style={{
|
||||||
|
transform: `translateX(${scrollPosition}%)`
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Paper>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ReservoirTable;
|
||||||
|
|
@ -15,7 +15,7 @@ import {
|
||||||
Button,
|
Button,
|
||||||
Table,
|
Table,
|
||||||
TableBody,
|
TableBody,
|
||||||
TableCell,
|
|
||||||
TableContainer,
|
TableContainer,
|
||||||
TableHead,
|
TableHead,
|
||||||
TableRow,
|
TableRow,
|
||||||
|
|
@ -24,6 +24,7 @@ import {
|
||||||
} from '@material-ui/core';
|
} from '@material-ui/core';
|
||||||
import { useDispatch, useSelector } from 'react-redux';
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
import config from '../../../../config';
|
import config from '../../../../config';
|
||||||
|
import DpTableCell from '../../../../layouts/mui/DpTableCell';
|
||||||
|
|
||||||
import AddIcon from '@material-ui/icons/Add';
|
import AddIcon from '@material-ui/icons/Add';
|
||||||
import RemoveIcon from '@material-ui/icons/Remove';
|
import RemoveIcon from '@material-ui/icons/Remove';
|
||||||
|
|
@ -206,21 +207,21 @@ export default function Overall({ style }) {
|
||||||
|
|
||||||
|
|
||||||
<TableContainer>
|
<TableContainer>
|
||||||
<Table className={classes.table}>
|
<Table stickyHeader>
|
||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell style={{ width: '40%' }}>站名</TableCell>
|
<DpTableCell style={{ width: '40%' }}>站名</DpTableCell>
|
||||||
<TableCell style={{ width: '14%' }}>水位(mm)</TableCell>
|
<DpTableCell style={{ width: '14%' }}>水位(mm)</DpTableCell>
|
||||||
<TableCell style={{ width: '15%' }}>所属政区</TableCell>
|
<DpTableCell style={{ width: '15%' }}>所属政区</DpTableCell>
|
||||||
<TableCell style={{ width: '15%' }}>所属流域</TableCell>
|
<DpTableCell style={{ width: '15%' }}>所属流域</DpTableCell>
|
||||||
<TableCell style={{ width: '16%' }}>预案</TableCell>
|
<DpTableCell style={{ width: '16%' }}>预案</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{stations.map((station) => (
|
{stations.map((station) => (
|
||||||
<React.Fragment key={station.id}>
|
<React.Fragment key={station.id}>
|
||||||
<TableRow className={`${classes.warningRow} ${station.color}`}>
|
<TableRow className={`${classes.warningRow} ${station.color}`}>
|
||||||
<TableCell>
|
<DpTableCell>
|
||||||
<Box display="flex" alignItems="center">
|
<Box display="flex" alignItems="center">
|
||||||
<IconButton
|
<IconButton
|
||||||
size="small"
|
size="small"
|
||||||
|
|
@ -231,39 +232,39 @@ export default function Overall({ style }) {
|
||||||
</IconButton>
|
</IconButton>
|
||||||
{station.name}({station.count})
|
{station.name}({station.count})
|
||||||
</Box>
|
</Box>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
<TableCell></TableCell>
|
<DpTableCell></DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell colSpan={5} style={{ padding: 0 }}>
|
<DpTableCell colSpan={5} style={{ padding: 0 }}>
|
||||||
<Collapse in={expanded[station.id]} timeout="auto" unmountOnExit>
|
<Collapse in={expanded[station.id]} timeout="auto" unmountOnExit>
|
||||||
<Box className={`${classes.expandedRow} ${station.color}`}>
|
<Box className={`${classes.expandedRow} ${station.color}`}>
|
||||||
{/* 展开的详细内容可以在这里添加 */}
|
{/* 展开的详细内容可以在这里添加 */}
|
||||||
{
|
{
|
||||||
station.id == "cxx" && <TableRow onClick={() => flyTo()}>
|
station.id == "cxx" && <TableRow onClick={() => flyTo()}>
|
||||||
<TableCell style={{ width: '20%' }}><div
|
<DpTableCell style={{ width: '20%' }}><div
|
||||||
className="table-ellipsis cursor-pointer"
|
className="table-ellipsis cursor-pointer"
|
||||||
>永红水库</div></TableCell>
|
>永红水库</div></DpTableCell>
|
||||||
<TableCell style={{ width: '20%' }}>130.15(0.25)</TableCell>
|
<DpTableCell style={{ width: '20%' }}>130.15(0.25)</DpTableCell>
|
||||||
<TableCell style={{ width: '20%' }}><div
|
<DpTableCell style={{ width: '20%' }}><div
|
||||||
className="table-ellipsis cursor-pointer"
|
className="table-ellipsis cursor-pointer"
|
||||||
>阎家河镇</div></TableCell>
|
>阎家河镇</div></DpTableCell>
|
||||||
<TableCell style={{ width: '20%' }}>阎家河</TableCell>
|
<DpTableCell style={{ width: '20%' }}>阎家河</DpTableCell>
|
||||||
<TableCell style={{ width: '20%' }}><a
|
<DpTableCell style={{ width: '20%' }}><a
|
||||||
className="table-ellipsis cursor-pointer"
|
className="table-ellipsis cursor-pointer"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
dispatch?.runtime.setInfoDlg({ layerId: 'PdfLayer', properties: {planName:'麻城市山洪灾害防御预案'} })
|
dispatch?.runtime.setInfoDlg({ layerId: 'PdfLayer', properties: {planName:'麻城市山洪灾害防御预案'} })
|
||||||
}}
|
}}
|
||||||
>麻城市山洪灾害防御预案</a></TableCell>
|
>麻城市山洪灾害防御预案</a></DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
}
|
}
|
||||||
|
|
||||||
</Box>
|
</Box>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
</TableCell>
|
</DpTableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { makeStyles } from '@material-ui/core';
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
root: {
|
root: {
|
||||||
backgroundColor: '#0d1117',
|
backgroundColor: 'transparent',
|
||||||
borderRadius: 4,
|
borderRadius: 4,
|
||||||
overflow: 'hidden',
|
overflow: 'hidden',
|
||||||
},
|
},
|
||||||
|
|
@ -12,7 +12,7 @@ const useStyles = makeStyles((theme) => ({
|
||||||
borderCollapse: 'collapse',
|
borderCollapse: 'collapse',
|
||||||
color: '#c9d1d9',
|
color: '#c9d1d9',
|
||||||
'& th': {
|
'& th': {
|
||||||
backgroundColor: '#161b22',
|
backgroundColor: 'transparent',
|
||||||
padding: theme.spacing(1.5),
|
padding: theme.spacing(1.5),
|
||||||
textAlign: 'center',
|
textAlign: 'center',
|
||||||
fontWeight: 'normal',
|
fontWeight: 'normal',
|
||||||
|
|
|
||||||
|
|
@ -52,9 +52,9 @@ function WF() {
|
||||||
dispatch.runtime.setYyfa({yy:''})
|
dispatch.runtime.setYyfa({yy:''})
|
||||||
dispatch.shyjview.showWeather24h();
|
dispatch.shyjview.showWeather24h();
|
||||||
const map = window.__mapref
|
const map = window.__mapref
|
||||||
map.setLayoutProperty('热力图', 'visibility', 'none');
|
if (map) {
|
||||||
// if (map) {
|
map.setLayoutProperty('热力图', 'visibility', 'none');
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const genWeatherContourRadar = () => {
|
const genWeatherContourRadar = () => {
|
||||||
|
|
@ -74,14 +74,9 @@ function WF() {
|
||||||
dispatch.runtime.setLayerSetting({ contour: newContourSetting })
|
dispatch.runtime.setLayerSetting({ contour: newContourSetting })
|
||||||
}
|
}
|
||||||
|
|
||||||
// useEffect(() => {
|
useEffect(() => {
|
||||||
// let timer = setTimeout(() => {
|
genWeatherContour24H()
|
||||||
// genWeatherContour24H()
|
}, [])
|
||||||
// },0)
|
|
||||||
// return () => {
|
|
||||||
// clearTimeout(timer)
|
|
||||||
// }
|
|
||||||
// }, [])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classes.root}>
|
<div className={classes.root}>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
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 (
|
||||||
|
<Dialog
|
||||||
|
open={true}
|
||||||
|
onClose={onClose}
|
||||||
|
maxWidth="xl"
|
||||||
|
style={{ borderRadius: 0 }}
|
||||||
|
PaperComponent={DpPaperComponent}
|
||||||
|
BackdropComponent={DpBackgroundDrop}
|
||||||
|
>
|
||||||
|
<div className="boxhead"></div>
|
||||||
|
|
||||||
|
<DpDialogTitle>实时雨量显示设置</DpDialogTitle>
|
||||||
|
<DialogContent>
|
||||||
|
<div style={{ width: 320, padding: '1rem 0' }}>
|
||||||
|
<FormGroup>
|
||||||
|
<div style={{ marginBottom: '2rem' }}>
|
||||||
|
<Typography variant="subtitle2">地图实时雨量显示雨量时段</Typography>
|
||||||
|
<Select
|
||||||
|
style={{ fontSize: '1.2rem' }}
|
||||||
|
fullWidth
|
||||||
|
value={layerSetting.drplabel}
|
||||||
|
onChange={(event) => dispath.map.setLayerSetting({ drplabel: event.target.value })}
|
||||||
|
>
|
||||||
|
<MenuItem value="h1">小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h3">3小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h6">6小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h12">12小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h24">24小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h48">48小时雨量</MenuItem>
|
||||||
|
</Select>
|
||||||
|
</div>
|
||||||
|
<div style={{ marginBottom: '1rem' }}>
|
||||||
|
<Typography variant="subtitle2">显示实时雨量图层</Typography>
|
||||||
|
<Switch
|
||||||
|
checked={!!layerVisible.RealDrpLayer}
|
||||||
|
color="primary"
|
||||||
|
edge="start"
|
||||||
|
onChange={(e) => dispath.map.setLayerVisible({ RealDrpLayer: e.target.checked })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</FormGroup>
|
||||||
|
</div>
|
||||||
|
</DialogContent>
|
||||||
|
<div className="boxfoot"></div>
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Setting;
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
import React, { useEffect, useRef } from 'react';
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
|
||||||
|
const ProcessChart = () => {
|
||||||
|
const chartRef = useRef(null);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const chart = echarts.init(chartRef.current);
|
||||||
|
|
||||||
|
const option = {
|
||||||
|
title: [{
|
||||||
|
text: '总计',
|
||||||
|
left: 'center',
|
||||||
|
top: '42%',
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 20,
|
||||||
|
fontWeight: 'normal'
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
text: '250',
|
||||||
|
left: 'center',
|
||||||
|
top: '52%',
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 28,
|
||||||
|
fontWeight: 'bold'
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
|
series: [{
|
||||||
|
name: '处理进度',
|
||||||
|
type: 'pie',
|
||||||
|
radius: ['55%', '90%'],
|
||||||
|
center: ['50%', '50%'],
|
||||||
|
startAngle: 90,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: 'outside',
|
||||||
|
formatter: '{c}',
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 14,
|
||||||
|
distance: 5
|
||||||
|
},
|
||||||
|
labelLine: {
|
||||||
|
show: true,
|
||||||
|
length: 10,
|
||||||
|
length2: 10,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
value: 7,
|
||||||
|
name: '待处理',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5470c6'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 243,
|
||||||
|
name: '已处理',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#3fb950'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
chart.setOption(option);
|
||||||
|
return () => {
|
||||||
|
chart.dispose();
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
ref={chartRef}
|
||||||
|
style={{
|
||||||
|
width: '200px',
|
||||||
|
height: '220px'
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ProcessChart;
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { makeStyles } from '@material-ui/core/styles';
|
||||||
|
import Box from '@material-ui/core/Box';
|
||||||
|
import Paper from '@material-ui/core/Paper';
|
||||||
|
import Typography from '@material-ui/core/Typography';
|
||||||
|
|
||||||
|
const useStyles = makeStyles((theme) => ({
|
||||||
|
root: {
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
gap: '20px',
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
display: 'flex',
|
||||||
|
gap: '20px',
|
||||||
|
justifyContent: 'flex-start',
|
||||||
|
},
|
||||||
|
card: {
|
||||||
|
width: '200px',
|
||||||
|
height: '100px',
|
||||||
|
padding: '16px',
|
||||||
|
// background: 'linear-gradient(135deg, rgba(9, 70, 113,0.5) 0%, rgba(9, 70, 113,0.8) 100%)',
|
||||||
|
background:'rgba(6, 43, 78,.5)',
|
||||||
|
border: '1px solid rgba(9, 70, 113,1)',
|
||||||
|
borderRadius: '8px',
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
alignItems:'center',
|
||||||
|
backdropFilter: 'blur(10px)',
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: '16px',
|
||||||
|
fontWeight: 'normal',
|
||||||
|
},
|
||||||
|
count: {
|
||||||
|
color: '#04f21c',
|
||||||
|
fontSize: '24px',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
const PatrolStatistics = () => {
|
||||||
|
const classes = useStyles();
|
||||||
|
|
||||||
|
const patrolTypes = [
|
||||||
|
{ title: '日常巡查', count: 456 },
|
||||||
|
{ title: '汛期巡查', count: 32 },
|
||||||
|
{ title: '特别巡查', count: 3 },
|
||||||
|
];
|
||||||
|
|
||||||
|
const patrolStatus = [
|
||||||
|
{ title: '已完成', count: 456 },
|
||||||
|
{ title: '未完成', count: 32 },
|
||||||
|
{ title: '进行中', count: 3 },
|
||||||
|
];
|
||||||
|
|
||||||
|
const StatCard = ({ title, count }) => (
|
||||||
|
<Paper className={classes.card}>
|
||||||
|
<Typography className={classes.title}>{title}</Typography>
|
||||||
|
<Typography className={classes.count}>{count} <span style={{fontSize:16,color:"#fff",fontWeight:'normal'}}>次</span></Typography>
|
||||||
|
</Paper>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Box className={classes.root}>
|
||||||
|
<Box className={classes.row}>
|
||||||
|
{patrolTypes.map((item, index) => (
|
||||||
|
<StatCard key={`type-${index}`} {...item} />
|
||||||
|
))}
|
||||||
|
</Box>
|
||||||
|
<Box className={classes.row}>
|
||||||
|
{patrolStatus.map((item, index) => (
|
||||||
|
<StatCard key={`status-${index}`} {...item} />
|
||||||
|
))}
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PatrolStatistics;
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
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 (
|
||||||
|
<Dialog
|
||||||
|
open={true}
|
||||||
|
onClose={onClose}
|
||||||
|
maxWidth="xl"
|
||||||
|
style={{ borderRadius: 0 }}
|
||||||
|
PaperComponent={DpPaperComponent}
|
||||||
|
BackdropComponent={DpBackgroundDrop}
|
||||||
|
>
|
||||||
|
<div className="boxhead"></div>
|
||||||
|
|
||||||
|
<DpDialogTitle>实时雨量显示设置</DpDialogTitle>
|
||||||
|
<DialogContent>
|
||||||
|
<div style={{ width: 320, padding: '1rem 0' }}>
|
||||||
|
<FormGroup>
|
||||||
|
<div style={{ marginBottom: '2rem' }}>
|
||||||
|
<Typography variant="subtitle2">地图实时雨量显示雨量时段</Typography>
|
||||||
|
<Select
|
||||||
|
style={{ fontSize: '1.2rem' }}
|
||||||
|
fullWidth
|
||||||
|
value={layerSetting.drplabel}
|
||||||
|
onChange={(event) => dispath.map.setLayerSetting({ drplabel: event.target.value })}
|
||||||
|
>
|
||||||
|
<MenuItem value="h1">小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h3">3小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h6">6小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h12">12小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h24">24小时雨量</MenuItem>
|
||||||
|
<MenuItem value="h48">48小时雨量</MenuItem>
|
||||||
|
</Select>
|
||||||
|
</div>
|
||||||
|
<div style={{ marginBottom: '1rem' }}>
|
||||||
|
<Typography variant="subtitle2">显示实时雨量图层</Typography>
|
||||||
|
<Switch
|
||||||
|
checked={!!layerVisible.RealDrpLayer}
|
||||||
|
color="primary"
|
||||||
|
edge="start"
|
||||||
|
onChange={(e) => dispath.map.setLayerVisible({ RealDrpLayer: e.target.checked })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</FormGroup>
|
||||||
|
</div>
|
||||||
|
</DialogContent>
|
||||||
|
<div className="boxfoot"></div>
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Setting;
|
||||||
|
|
@ -0,0 +1,186 @@
|
||||||
|
import React, { useMemo, useState } from 'react';
|
||||||
|
import useRequest from '../../../../utils/useRequest';
|
||||||
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
|
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 clsx from 'clsx';
|
||||||
|
import { renderDrp } from '../../../../utils/renutils';
|
||||||
|
import XcCard from './xcCard'
|
||||||
|
import config from '../../../../config';
|
||||||
|
|
||||||
|
const data = [
|
||||||
|
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "浮桥河水库-汛前检查",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lgtd": "115.068090",
|
||||||
|
"lttd": "31.026170",
|
||||||
|
'username': '熊杰',
|
||||||
|
taskType: '日常巡查',
|
||||||
|
tm: '2025-06-02 00:08:00',
|
||||||
|
status: '进行中'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "浮桥河水库-特别巡查",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lgtd": "115.068090",
|
||||||
|
"lttd": "31.026170",
|
||||||
|
'username': '白斌',
|
||||||
|
taskType: '汛前巡查',
|
||||||
|
tm: '2025-06-02 00:09:00',
|
||||||
|
status: '已完成'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "明山水库-日常管理",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lgtd": "115.068090",
|
||||||
|
"lttd": "31.026170",
|
||||||
|
'username': '余静',
|
||||||
|
taskType: '特别巡查',
|
||||||
|
tm: '2025-06-02 00:10:00',
|
||||||
|
status: '未完成'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "永红水库-日常管理",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lgtd": "115.068090",
|
||||||
|
"lttd": "31.026170",
|
||||||
|
'username': '周真',
|
||||||
|
taskType: '特别巡查',
|
||||||
|
tm: '2025-06-02 00:10:00',
|
||||||
|
status: '未完成'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "42118120003",
|
||||||
|
"code": "",
|
||||||
|
"name": "永丰水库-汛前检查",
|
||||||
|
"resRegCode": "42000020030-A4",
|
||||||
|
"adName": "白果镇",
|
||||||
|
"engScal": "大(2)型",
|
||||||
|
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||||
|
"lgtd": "115.068090",
|
||||||
|
"lttd": "31.026170",
|
||||||
|
'username': '陈发',
|
||||||
|
taskType: '特别巡查',
|
||||||
|
tm: '2025-06-02 00:10:00',
|
||||||
|
status: '未完成'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
function DrpReal({ style }) {
|
||||||
|
const [tab, setTab] = useState('1')
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
const flyTo = () => {
|
||||||
|
dispatch?.runtime.setInfoDlg({ layerId: 'XunchachaoshiLayer', properties: {} })
|
||||||
|
}
|
||||||
|
const jumpTo = (record) => {
|
||||||
|
const { lgtd, lttd } = record;
|
||||||
|
if (lgtd && lttd) {
|
||||||
|
dispatch.runtime.setCameraTarget({
|
||||||
|
center: [lgtd, lttd + config.poiPositionOffsetY.hd],
|
||||||
|
zoom: config.poiPositionZoom.hd,
|
||||||
|
pitch: config.poiPitch,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<PanelBox
|
||||||
|
style={style}
|
||||||
|
title="巡查任务总览"
|
||||||
|
color="green"
|
||||||
|
extra={
|
||||||
|
<span className="button-group">
|
||||||
|
<span className={clsx({ active: tab === '1' })} onClick={() => setTab('1')}>本月</span>
|
||||||
|
<span className={clsx({ active: tab === '2' })} onClick={() => setTab('2')}>本年</span>
|
||||||
|
</span>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<div className='skyb-box'>
|
||||||
|
<div className='rain-yb'>
|
||||||
|
<div className='title-yb'>巡查任务</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style={{ padding: 10 }}>
|
||||||
|
<XcCard />
|
||||||
|
</div>
|
||||||
|
<TableContainer>
|
||||||
|
<Table size="small" stickyHeader>
|
||||||
|
<TableHead>
|
||||||
|
<TableRow>
|
||||||
|
<DpTableCell style={{ width: '20%' }} align="center">任务标题</DpTableCell>
|
||||||
|
<DpTableCell style={{ width: '20%' }} align="center">任务类型</DpTableCell>
|
||||||
|
<DpTableCell style={{ width: '20%' }} align="center">巡查人</DpTableCell>
|
||||||
|
<DpTableCell style={{ width: '20%' }} align="center">巡查时间</DpTableCell>
|
||||||
|
<DpTableCell style={{ width: '20%' }} align="center">状态</DpTableCell>
|
||||||
|
</TableRow>
|
||||||
|
</TableHead>
|
||||||
|
<TableBody>
|
||||||
|
{data.map((row, index) => (
|
||||||
|
<DpTableRow key={row.stcd}
|
||||||
|
// onClick={() => jumpTo(row)}
|
||||||
|
>
|
||||||
|
<DpTableCell align="center">
|
||||||
|
<div
|
||||||
|
className="table-ellipsis cursor-pointer"
|
||||||
|
>{row.name}</div>
|
||||||
|
</DpTableCell>
|
||||||
|
<DpTableCell align="center">{row.taskType}</DpTableCell>
|
||||||
|
<DpTableCell align="center">{row.username}</DpTableCell>
|
||||||
|
<DpTableCell align="center">
|
||||||
|
<div
|
||||||
|
className="table-ellipsis cursor-pointer"
|
||||||
|
> {row.tm}</div>
|
||||||
|
</DpTableCell>
|
||||||
|
<DpTableCell align="center">{row.status}</DpTableCell>
|
||||||
|
</DpTableRow>
|
||||||
|
))}
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
</TableContainer>
|
||||||
|
<div className='skyb-box' style={{ marginTop: 50 }}>
|
||||||
|
<div className='rain-yb'>
|
||||||
|
<div className='title-yb'>数据统计</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<img src={`${process.env.PUBLIC_URL}/assets/sjtj1.jpg`} alt="" style={{ width: 420 }} />
|
||||||
|
<div style={{ position: 'relative' }}>
|
||||||
|
<img src={`${process.env.PUBLIC_URL}/assets/sjti2.png`} alt="" style={{ width: 205, height: 72 }} />
|
||||||
|
<img src={`${process.env.PUBLIC_URL}/assets/gantanh.png`} alt=""
|
||||||
|
style={{ width: 20, position: 'absolute', top: 12, left: 145, cursor: 'pointer' }}
|
||||||
|
onClick={flyTo}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</PanelBox>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default DrpReal;
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { makeStyles } from '@material-ui/core/styles';
|
||||||
|
import Box from '@material-ui/core/Box';
|
||||||
|
import Paper from '@material-ui/core/Paper';
|
||||||
|
import Typography from '@material-ui/core/Typography';
|
||||||
|
|
||||||
|
const useStyles = makeStyles((theme) => ({
|
||||||
|
root: {
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
gap: '20px',
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
display: 'flex',
|
||||||
|
gap: '20px',
|
||||||
|
justifyContent: 'flex-start',
|
||||||
|
},
|
||||||
|
card: {
|
||||||
|
width: '200px',
|
||||||
|
height: '100px',
|
||||||
|
padding: '16px',
|
||||||
|
// background: 'linear-gradient(135deg, rgba(9, 70, 113,0.5) 0%, rgba(9, 70, 113,0.8) 100%)',
|
||||||
|
background:'rgba(6, 43, 78,.5)',
|
||||||
|
border: '1px solid rgba(9, 70, 113,1)',
|
||||||
|
borderRadius: '8px',
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
alignItems:'center',
|
||||||
|
backdropFilter: 'blur(10px)',
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: '16px',
|
||||||
|
fontWeight: 'normal',
|
||||||
|
},
|
||||||
|
count: {
|
||||||
|
color: '#04f21c',
|
||||||
|
fontSize: '24px',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
const PatrolStatistics = () => {
|
||||||
|
const classes = useStyles();
|
||||||
|
|
||||||
|
const patrolTypes = [
|
||||||
|
{ title: '日常巡查', count: 456 },
|
||||||
|
{ title: '汛期巡查', count: 32 },
|
||||||
|
{ title: '特别巡查', count: 3 },
|
||||||
|
];
|
||||||
|
|
||||||
|
const patrolStatus = [
|
||||||
|
{ title: '已完成', count: 456 },
|
||||||
|
{ title: '未完成', count: 32 },
|
||||||
|
{ title: '进行中', count: 3 },
|
||||||
|
];
|
||||||
|
|
||||||
|
const StatCard = ({ title, count }) => (
|
||||||
|
<Paper className={classes.card}>
|
||||||
|
<Typography className={classes.title}>{title}</Typography>
|
||||||
|
<Typography className={classes.count}>{count} <span style={{fontSize:16,color:"#fff",fontWeight:'normal'}}>次</span></Typography>
|
||||||
|
</Paper>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Box className={classes.root}>
|
||||||
|
<Box className={classes.row}>
|
||||||
|
{patrolTypes.map((item, index) => (
|
||||||
|
<StatCard key={`type-${index}`} {...item} />
|
||||||
|
))}
|
||||||
|
</Box>
|
||||||
|
<Box className={classes.row}>
|
||||||
|
{patrolStatus.map((item, index) => (
|
||||||
|
<StatCard key={`status-${index}`} {...item} />
|
||||||
|
))}
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PatrolStatistics;
|
||||||
|
|
@ -270,7 +270,7 @@ const householdData = [
|
||||||
|
|
||||||
<div className="divider"></div>
|
<div className="divider"></div>
|
||||||
|
|
||||||
<div className="section-title">预警指标</div>
|
{/* <div className="section-title">预警指标</div>
|
||||||
<div className="warning-item">
|
<div className="warning-item">
|
||||||
<span className="label">准备转移:</span>
|
<span className="label">准备转移:</span>
|
||||||
<span className="value">1小时-mm; 3小时-mm; 6小时-mm</span>
|
<span className="value">1小时-mm; 3小时-mm; 6小时-mm</span>
|
||||||
|
|
@ -278,7 +278,7 @@ const householdData = [
|
||||||
<div className="warning-item">
|
<div className="warning-item">
|
||||||
<span className="label">立即转移:</span>
|
<span className="label">立即转移:</span>
|
||||||
<span className="value">1小时-mm; 3小时-mm; 6小时-mm</span>
|
<span className="value">1小时-mm; 3小时-mm; 6小时-mm</span>
|
||||||
</div>
|
</div> */}
|
||||||
|
|
||||||
<div className="divider"></div>
|
<div className="divider"></div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,9 +72,9 @@ export default function Warn({ style }) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
// useEffect(() => {
|
||||||
setValue(res.yy)
|
// setValue(res.yy)
|
||||||
}, [res])
|
// }, [res])
|
||||||
const switchChange = (e) => {
|
const switchChange = (e) => {
|
||||||
const val = e.target.checked
|
const val = e.target.checked
|
||||||
setChecked(val)
|
setChecked(val)
|
||||||
|
|
@ -102,6 +102,7 @@ export default function Warn({ style }) {
|
||||||
} else if (selectedSchemes.length < 2) {
|
} else if (selectedSchemes.length < 2) {
|
||||||
setSelectedSchemes([...selectedSchemes, schemeId]);
|
setSelectedSchemes([...selectedSchemes, schemeId]);
|
||||||
}
|
}
|
||||||
|
// dispatch.runtime.setYyfa({})
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -109,7 +110,14 @@ export default function Warn({ style }) {
|
||||||
}, [selectedSchemes])
|
}, [selectedSchemes])
|
||||||
|
|
||||||
const productFa = () => {
|
const productFa = () => {
|
||||||
dispatch?.runtime.setInfoDlg({ layerId: 'YuananLayer', properties: {} })
|
dispatch?.runtime.setInfoDlg({ layerId: 'YuananLayer', properties: {} })
|
||||||
|
dispatch.runtime.setYyfa({})
|
||||||
|
|
||||||
|
}
|
||||||
|
const changeYY = (e) => {
|
||||||
|
setValue(e.target.value)
|
||||||
|
|
||||||
|
dispatch.runtime.setYyfa({})
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<PanelBox
|
<PanelBox
|
||||||
|
|
@ -127,7 +135,7 @@ export default function Warn({ style }) {
|
||||||
<FormControl fullWidth>
|
<FormControl fullWidth>
|
||||||
<RadioGroup
|
<RadioGroup
|
||||||
value={value}
|
value={value}
|
||||||
onChange={(e) => setValue(e.target.value)}
|
onChange={changeYY}
|
||||||
|
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
|
|
|
||||||