| | |
| | | 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) { |
| | |
| | | ) |
| | | } |
| | | |
| | | const DetailTitle = ({ title }) => { |
| | | const DetailTitle = ({ title, ...rest }) => { |
| | | const translate = useTranslate(); |
| | | return ( |
| | | <Typography |
| | | color="textSecondary" |
| | | variant="caption" |
| | | {...rest} |
| | | > |
| | | {translate(title)} |
| | | </Typography> |
| | | ) |
| | | } |
| | | |
| | | const DetailValue = ({ value }) => { |
| | | 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} |
| | |
| | | <Grid container spacing={1} sx={{ maxWidth: GRID_CONTAINER_MAX_WIDTH }}> |
| | | <Grid item xs={ITEM_COL}> |
| | | <DetailTitle title='common.field.status' /> |
| | | <DetailValue value={record.agvDetail.statusDesc} /> |
| | | <DetailValue fontBold value={record.agvDetail.statusDesc} /> |
| | | </Grid> |
| | | <Grid item xs={ITEM_COL}> |
| | | <DetailTitle title='table.field.agvDetail.pos' /> |
| | |
| | | <Grid container spacing={1} sx={{ maxWidth: GRID_CONTAINER_MAX_WIDTH }}> |
| | | <Grid item xs={ITEM_COL}> |
| | | <DetailTitle title='table.field.agvModel.name' /> |
| | | <DetailValue value={record.agvModelData.name} /> |
| | | <DetailValue fontBold value={record.agvModelData.name} /> |
| | | </Grid> |
| | | <Grid item xs={ITEM_COL}> |
| | | <DetailTitle title='table.field.agvModel.length' /> |