import { Button, Checkbox, makeStyles, Snackbar, TextField } from '@material-ui/core';
import { Person } from '@material-ui/icons';
import React, { useEffect, useMemo, useState } from 'react';
import appconsts from '../../../../models/appconsts';
import { sendsmtp } from '../../../../models/_/base';
import { personelByAdcdExact } from '../../../../models/_/personel';
import { HDGet } from '../../../../models/_/real';
import DpAlert from '../../../../layouts/mui/DpAlert';
const useStyle = makeStyles({
root: {
display: 'flex',
height: '100%',
},
leftSide: {
width: '50%',
overflow: 'auto',
padding: '0.5rem',
marginRight: '1rem'
},
rightSide: {
padding: '0.5rem',
flexGrow: 1,
},
span: {
padding: '0.5rem',
},
itemRoot: {
display: 'flex',
alignItems: 'center',
borderBottom: '1px dashed #bce9f088',
//marginBottom: '0.5rem',
padding: '0.5rem 0'
},
icon: {
marginRight: '1rem',
},
body: {
flexGrow: 1,
},
action: {
flexShrink: 0,
},
phone: {
color: '#ccc',
margin: '0 0.5rem',
},
desc: {
color: '#aaa',
fontSize: '0.8rem',
},
});
function Personel({ classes, data, onSelectChange, selected }) {
return (
{data.name}{data.phone}
{`${data.department || ''}, ${data.position || ''}`}
onSelectChange(data, v)} />
)
}
function SmtpPanel({ record }) {
const classes = useStyle();
const [personels, setPersonels] = useState([]);
const [selected, setSelected] = useState({});
const [loading, setLoading] = useState(false);
const [content, setContent] = useState(() => {
const rz = record.rz;
const brz = record[appconsts.stWarnLevelKey[record.level]];
const arz = brz ? (rz - brz).toFixed(2) : '-';
return `报警水位${rz}m,测站${appconsts.stWarnLevel[record.level]}为${brz || '-'}m,超${arz || '-'}m`
});
const [msg, setMsg] = useState(null);
useEffect(() => {
const fetchData = async () => {
const st = await HDGet(record?.stcd);
if (st?.adcd?.length >= 9) {
const zhenAd = st.adcd.substr(0, 9);
const data = await personelByAdcdExact(zhenAd);
setPersonels(data || []);
}
}
fetchData();
}, [record]);
const onSelectChange = (data, v) => {
setSelected({
...selected,
[data.id]: v,
})
}
const filterdata = useMemo(() => {
return personels.filter(o => selected[o.id])
}, [selected, personels]);
const selectAll = () => {
const a = {};
personels.forEach(p => a[p.id] = true);
setSelected(a);
}
const doSend = async () => {
if (loading) {
return;
}
const phones = filterdata.map(o => o.phone);
setLoading(true);
sendsmtp(phones, content).then((result) => {
if (result) {
setMsg({ type: 'success', msg: '短信已发送' });
setSelected({})
} else {
setMsg({ type: 'error', msg: '发送失败' });
}
setLoading(false);
});
}
return (
{
personels.map(o => (
))
}
setContent(e.target.value)}
/>
setMsg(null)}>
{
msg && (
setMsg(null)} severity={msg?.type}>
{msg?.msg}
)
}
)
}
export default SmtpPanel