From 7f70cb15d035f0c233b9e62b9e43aa985317c908 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 04 十一月 2024 10:22:45 +0800 Subject: [PATCH] # --- zy-acs-flow/src/page/agv/show/AgvShowDetail.jsx | 412 +++++++++++++++++----------------------------------------- 1 files changed, 124 insertions(+), 288 deletions(-) diff --git a/zy-acs-flow/src/page/agv/show/AgvShowDetail.jsx b/zy-acs-flow/src/page/agv/show/AgvShowDetail.jsx index 035fa32..6df36d8 100644 --- a/zy-acs-flow/src/page/agv/show/AgvShowDetail.jsx +++ b/zy-acs-flow/src/page/agv/show/AgvShowDetail.jsx @@ -12,7 +12,6 @@ import { Box, Button, - Card, Grid, Skeleton, Stack, @@ -23,25 +22,31 @@ import request from '@/utils/request'; const ITEM_COL = 3; +const GRID_CONTAINER_MAX_WIDTH = '100%'; export const AgvShowDetail = (props) => { - const { agvId } = props; + const { agvId, setOnline } = props; const [record, setRecord] = useState(null); const resource = useResourceContext(); useEffect(() => { const http = async (agvId) => { - const res = await request.get(resource + '/' + agvId); - const { code, msg, data } = res.data; - if (code === 200) { - setRecord(data); - } else { - setRecord(null); + if (agvId) { + const res = await request.get(resource + '/' + agvId); + const { code, msg, data } = res.data; + if (code === 200) { + setOnline(data.online); + setRecord(data); + } else { + setRecord(null); + } } } - if (agvId) { + const intervalId = setInterval(() => { http(agvId); - } + }, 1000); + http(agvId); + return () => clearInterval(intervalId); }, [agvId]); if (!record) { @@ -71,29 +76,67 @@ return ( <> - <Box mt={2}> + <Box m={2}> <AgvMainDetail record={record} /> + <Divider sx={{ mt: 2, mb: 2 }} /> <AgvMoreDetail record={record} /> + <Divider sx={{ mt: 2, mb: 2 }} /> <AgvModelDetail record={record} /> </Box> </> ) } +const DetailTitle = ({ title, ...rest }) => { + const translate = useTranslate(); + return ( + <Typography + color="textSecondary" + variant="caption" + {...rest} + > + {translate(title)} + </Typography> + ) +} + +const DetailValue = ({ value, fontBold = false }) => { + return ( + <Typography + variant="body2" + color={fontBold ? 'textSecondary' : 'textPrimary'} + width='80%' + sx={{ + wordWrap: 'break-word', + whiteSpace: 'normal', + fontWeight: fontBold && 'bold', + }} + > + {value} + </Typography> + ) +} + + const AgvMainDetail = ({ record }) => { const translate = useTranslate(); return ( - <Grid container spacing={1} sx={{ maxWidth: '75%' }}> + <Grid container spacing={1} sx={{ maxWidth: GRID_CONTAINER_MAX_WIDTH }}> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - ip - </Typography> - <Typography variant="body2"> - {record.ip} - </Typography> + <DetailTitle title='common.field.status' /> + <DetailValue fontBold value={record.agvDetail.statusDesc} /> + </Grid> + <Grid item xs={ITEM_COL}> + <DetailTitle title='table.field.agvDetail.pos' /> + <DetailValue value={record.agvDetail.pos === 1 ? translate('common.enums.true') : translate('common.enums.false')} /> + </Grid > + <Grid item xs={ITEM_COL}> + <DetailTitle title='table.field.agvDetail.code' /> + <DetailValue value={record.agvDetail.code$} /> + </Grid> + <Grid item xs={ITEM_COL}> + <DetailTitle title='table.field.agv.ip' /> + <DetailValue value={record.ip} /> </Grid> </Grid> ) @@ -102,319 +145,112 @@ const AgvMoreDetail = ({ record }) => { const translate = useTranslate(); return ( - <Grid container spacing={1} sx={{ maxWidth: '75%' }}> + <Grid container spacing={1} sx={{ maxWidth: GRID_CONTAINER_MAX_WIDTH }}> + <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - position - </Typography> - <Typography variant="body2"> - {record.agvDetail.pos === 1 ? translate('common.enums.true') : translate('common.enums.false')} - </Typography> + <DetailTitle title='table.field.agvDetail.agvAngle' /> + <DetailValue value={record.agvDetail.agvAngle} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - code - </Typography> - <Typography variant="body2"> - {record.agvDetail.code$} - </Typography> - </Grid> - <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - angle - </Typography> - <Typography variant="body2"> - {record.agvDetail.agvAngle} - </Typography> - </Grid> - <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - gyroAngle - </Typography> - <Typography variant="body2"> - {record.agvDetail.gyroAngle} - </Typography> + <DetailTitle title='table.field.agvDetail.gyroAngle' /> + <DetailValue value={record.agvDetail.gyroAngle} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - encoderAngle - </Typography> - <Typography variant="body2"> - {record.agvDetail.encoderAngle} - </Typography> + <DetailTitle title='table.field.agvDetail.encoderAngle' /> + <DetailValue value={record.agvDetail.encoderAngle} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - high - </Typography> - <Typography variant="body2"> - {record.agvDetail.high} - </Typography> - </Grid> - - <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - vol - </Typography> - <Typography variant="body2"> - {record.agvDetail.vol} - </Typography> + <DetailTitle title='table.field.agvDetail.high' /> + <DetailValue value={record.agvDetail.high} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - soc - </Typography> - <Typography variant="body2"> - {record.agvDetail.soc} - </Typography> + <DetailTitle title='table.field.agvDetail.vol' /> + <DetailValue value={record.agvDetail.vol} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - soh - </Typography> - <Typography variant="body2"> - {record.agvDetail.soh} - </Typography> + <DetailTitle title='table.field.agvDetail.soc' /> + <DetailValue value={record.agvDetail.soc} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - tempe - </Typography> - <Typography variant="body2"> - {record.agvDetail.tempe} - </Typography> + <DetailTitle title='table.field.agvDetail.soh' /> + <DetailValue value={record.agvDetail.soh} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - motorFail - </Typography> - <Typography variant="body2"> - {record.agvDetail.motorFail} - </Typography> + <DetailTitle title='table.field.agvDetail.tempe' /> + <DetailValue value={record.agvDetail.tempe} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - workDistance - </Typography> - <Typography variant="body2"> - {record.agvDetail.workDistance} - </Typography> + <DetailTitle title='table.field.agvDetail.motorFail' /> + <DetailValue value={record.agvDetail.motorFail} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - status - </Typography> - <Typography variant="body2"> - {record.agvDetail.statusDesc} - </Typography> + <DetailTitle title='table.field.agvDetail.workDistance' /> + <DetailValue value={record.agvDetail.workDistance} /> </Grid> - </Grid> + </Grid > ) } const AgvModelDetail = ({ record }) => { const translate = useTranslate(); - console.log(record); - return ( - <Grid container spacing={1} sx={{ maxWidth: '75%' }}> + <Grid container spacing={1} sx={{ maxWidth: GRID_CONTAINER_MAX_WIDTH }}> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model name - </Typography> - <Typography variant="body2"> - {record.agvModelData.name} - </Typography> + <DetailTitle title='table.field.agvModel.name' /> + <DetailValue fontBold value={record.agvModelData.name} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model length - </Typography> - <Typography variant="body2"> - {record.agvModelData.length} - </Typography> + <DetailTitle title='table.field.agvModel.length' /> + <DetailValue value={record.agvModelData.length} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model width - </Typography> - <Typography variant="body2"> - {record.agvModelData.width} - </Typography> + <DetailTitle title='table.field.agvModel.width' /> + <DetailValue value={record.agvModelData.width} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model height - </Typography> - <Typography variant="body2"> - {record.agvModelData.height} - </Typography> + <DetailTitle title='table.field.agvModel.height' /> + <DetailValue value={record.agvModelData.height} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model liftHeight - </Typography> - <Typography variant="body2"> - {record.agvModelData.liftHeight} - </Typography> - </Grid> - - <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model diameter - </Typography> - <Typography variant="body2"> - {record.agvModelData.diameter} - </Typography> + <DetailTitle title='table.field.agvModel.liftHeight' /> + <DetailValue value={record.agvModelData.liftHeight} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model backpack - </Typography> - <Typography variant="body2"> - {record.agvModelData.backpack} - </Typography> - </Grid> - - <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model lowBattery - </Typography> - <Typography variant="body2"> - {record.agvModelData.lowBattery} - </Typography> - </Grid> - - <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model quaBattery - </Typography> - <Typography variant="body2"> - {record.agvModelData.quaBattery} - </Typography> - </Grid> - - <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model travelSpeed - </Typography> - <Typography variant="body2"> - {record.agvModelData.travelSpeed} - </Typography> + <DetailTitle title='table.field.agvModel.diameter' /> + <DetailValue value={record.agvModelData.diameter} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model workDirection - </Typography> - <Typography variant="body2"> - {record.agvModelData.workDirection} - </Typography> + <DetailTitle title='table.field.agvModel.backpack' /> + <DetailValue value={record.agvModelData.backpack} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model allDirection - </Typography> - <Typography variant="body2"> - {record.agvModelData.allDirection} - </Typography> + <DetailTitle title='table.field.agvModel.lowBattery' /> + <DetailValue value={record.agvModelData.lowBattery} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model protocol - </Typography> - <Typography variant="body2"> - {record.agvModelData.protocol} - </Typography> + <DetailTitle title='table.field.agvModel.quaBattery' /> + <DetailValue value={record.agvModelData.quaBattery} /> </Grid> <Grid item xs={ITEM_COL}> - <Typography - color="textSecondary" - variant="caption" - > - model mqttTopic - </Typography> - <Typography variant="body2"> - {record.agvModelData.mqttTopic} - </Typography> + <DetailTitle title='table.field.agvModel.travelSpeed' /> + <DetailValue value={record.agvModelData.travelSpeed} /> + </Grid> + <Grid item xs={ITEM_COL}> + <DetailTitle title='table.field.agvModel.workDirection' /> + <DetailValue value={record.agvModelData.workDirection} /> + </Grid> + <Grid item xs={ITEM_COL}> + <DetailTitle title='table.field.agvModel.allDirection' /> + <DetailValue value={record.agvModelData.allDirection === 1 ? translate('common.enums.true') : translate('common.enums.false')} /> + </Grid> + <Grid item xs={ITEM_COL}> + <DetailTitle title='table.field.agvModel.protocol' /> + <DetailValue value={record.agvModelData.protocol} /> + </Grid> + <Grid item xs={ITEM_COL}> + <DetailTitle title='table.field.agvModel.mqttTopic' /> + <DetailValue value={record.agvModelData.mqttTopic} /> </Grid> </Grid> ) -- Gitblit v1.9.1