mcfxkh-Web/src/views/Home/InfoDlg/HistoryYyDlg/fxyb.js

264 lines
6.4 KiB
JavaScript
Raw Normal View History

2025-06-04 20:41:04 +08:00
import React from 'react';
import {
Table,
Typography,
Box,
Paper,
Grid,
makeStyles
} from '@material-ui/core';
const useStyles = makeStyles((theme) => ({
root: {
padding: theme.spacing(2),
},
section: {
marginBottom: theme.spacing(3),
},
title: {
color: '#1976d2',
marginBottom: theme.spacing(2),
display: 'flex',
alignItems: 'center',
'&::before': {
content: '""',
width: 4,
height: 16,
backgroundColor: '#1976d2',
marginRight: theme.spacing(1),
},
},
table: {
minWidth: 400,
'& th': {
// backgroundColor: '#f5f5f5',
fontWeight: 'bold',
textAlign: 'left',
},
},
statusChip: {
padding: '2px 8px',
borderRadius: 4,
display: 'inline-block',
textAlign: 'center',
width: 50,
},
danger: {
backgroundColor: '#ffebee',
color: '#d32f2f',
},
warning: {
backgroundColor: '#fff3e0',
color: '#ef6c00',
},
info: {
backgroundColor: '#e3f2fd',
color: '#1976d2',
},
statItem: {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
flexDirection: 'column',
padding: theme.spacing(2),
'& .icon': {
fontSize: 40,
color: '#1976d2',
marginBottom: theme.spacing(1),
},
'& .value': {
fontSize: 24,
color: '#1976d2',
fontWeight: 'bold',
},
'& .label': {
color: '#fff',
width: 130,
marginLeft:30
},
},
}));
// 测试数据
const townData = [
{
name: '七里坪社区',
district: '七里坪社区',
manager: '谢磊',
population: 35,
riskLevel: '危险',
},
{
name: '七里坪社区',
district: '七里坪社区',
manager: '刘家军',
population: 24,
riskLevel: '警戒',
},
{
name: '七里坪社区',
district: '七里坪社区',
manager: '刘家军',
population: 49,
riskLevel: '关注',
},
];
const enterpriseData = [
{
name: '国电广润',
department: '',
manager: '谢磊',
affectedPopulation: 44,
riskLevel: '危险',
},
{
name: '建始七里',
department: '',
manager: '刘家军',
affectedPopulation: 22,
riskLevel: '警戒',
},
{
name: '建始县业',
department: '',
manager: '刘家军',
affectedPopulation: 50,
riskLevel: '关注',
},
];
const statistics = {
floodArea: 3.57,
affectedVillages: 2,
affectedHouseholds: 310,
affectedPopulation: 940,
};
const FloodImpactMonitor = () => {
const classes = useStyles();
const getRiskLevelStyle = (level) => {
switch (level) {
case '危险':
return classes.danger;
case '警戒':
return classes.warning;
case '关注':
return classes.info;
default:
return '';
}
};
return (
<div className={classes.root}>
<div className={classes.section}>
<Typography variant="h6" className={classes.title}>
城镇集镇村庄
</Typography>
<Paper>
<Table className={classes.table}>
<thead>
<tr>
<th>名称</th>
<th>所属乡镇</th>
<th>负责人</th>
<th>人口数</th>
<th>风险等级</th>
</tr>
</thead>
<tbody>
{townData.map((item, index) => (
<tr key={index}>
<td>{item.name}</td>
<td>{item.district}</td>
<td>{item.manager}</td>
<td>{item.population}</td>
<td>
<span className={`${classes.statusChip} ${getRiskLevelStyle(item.riskLevel)}`}>
{item.riskLevel}
</span>
</td>
</tr>
))}
</tbody>
</Table>
</Paper>
</div>
<div className={classes.section}>
<Typography variant="h6" className={classes.title}>
企事业单位影响情况
</Typography>
<Paper>
<Table className={classes.table}>
<thead>
<tr>
<th>基础设施名称</th>
<th>所属行政单元</th>
<th>负责人</th>
<th>影响人数</th>
<th>风险等级</th>
</tr>
</thead>
<tbody>
{enterpriseData.map((item, index) => (
<tr key={index}>
<td>{item.name}</td>
<td>{item.department}</td>
<td>{item.manager}</td>
<td>{item.affectedPopulation}</td>
<td>
<span className={`${classes.statusChip} ${getRiskLevelStyle(item.riskLevel)}`}>
{item.riskLevel}
</span>
</td>
</tr>
))}
</tbody>
</Table>
</Paper>
</div>
<div className={classes.section}>
<Typography variant="h6" className={classes.title}>
汛情统计
</Typography>
<Grid container spacing={3}>
<Grid item xs={3}>
<Paper className={classes.statItem}>
<span className="icon">🌊</span>
<span className="value">{statistics.floodArea}</span>
<span className="label">淹没面积(km²)</span>
</Paper>
</Grid>
<Grid item xs={3}>
<Paper className={classes.statItem}>
<span className="icon">🏘</span>
<span className="value">{statistics.affectedVillages}</span>
<span className="label">影响村庄()</span>
</Paper>
</Grid>
<Grid item xs={3}>
<Paper className={classes.statItem}>
<span className="icon">🏠</span>
<span className="value">{statistics.affectedHouseholds}</span>
<span className="label">影响户数()</span>
</Paper>
</Grid>
<Grid item xs={3}>
<Paper className={classes.statItem}>
<span className="icon">👥</span>
<span className="value">{statistics.affectedPopulation}</span>
<span className="label">影响人口()</span>
</Paper>
</Grid>
</Grid>
</div>
</div>
);
};
export default FloodImpactMonitor;