From 64bafdbf7abf3f686d04569e24573a4113d02ee4 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@gmail.com>
Date: 星期三, 02 四月 2025 16:14:07 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/page/mission/MissionShow.jsx | 244 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 242 insertions(+), 2 deletions(-)
diff --git a/zy-acs-flow/src/page/mission/MissionShow.jsx b/zy-acs-flow/src/page/mission/MissionShow.jsx
index 7c4d545..4ccffc4 100644
--- a/zy-acs-flow/src/page/mission/MissionShow.jsx
+++ b/zy-acs-flow/src/page/mission/MissionShow.jsx
@@ -1,11 +1,251 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import {
+ useTranslate,
+ EditButton,
+ ReferenceArrayField,
+ ReferenceField,
+ ReferenceManyField,
+ ShowBase,
+ useDataProvider,
+ useNotify,
+ useRecordContext,
+ useRedirect,
+ useRefresh,
+ useUpdate,
+} from 'react-admin';
+import {
+ Box,
+ Button,
+ Chip,
+ Dialog,
+ DialogContent,
+ Divider,
+ Stack,
+ Typography,
+ Avatar,
+ useTheme,
+} from '@mui/material';
+import DialogCloseButton from "../components/DialogCloseButton";
+import { blueGrey, blue } from '@mui/material/colors';
+import MoveToInboxIcon from '@mui/icons-material/MoveToInbox';
+import { format } from 'date-fns';
+import { TaskList } from "./TaskList";
+import { ActionsIterator } from "../action/ActionsIterator";
+import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';
-const MissionShow = () => {
+const MissionShow = ({ open, id }) => {
+ const redirect = useRedirect();
+ const handleClose = () => {
+ redirect('list', 'mission');
+ };
+
+ return (
+ <Dialog
+ open={open}
+ onClose={handleClose}
+ fullWidth
+ maxWidth="md"
+ sx={{
+ '& .MuiDialog-container': {
+ alignItems: 'flex-start',
+ },
+ }}
+ >
+ <DialogContent sx={{ padding: 0 }}>
+ {!!id ? (
+ <ShowBase id={id}>
+ <MissionShowContent handleClose={handleClose} />
+ </ShowBase>
+ ) : null}
+ </DialogContent>
+ </Dialog>
+ )
+}
+
+const MissionShowContent = ({ handleClose }) => {
+ const theme = useTheme();
+ const record = useRecordContext();
+ const translate = useTranslate();
+ if (!record) return null;
return (
<>
+ <DialogCloseButton
+ onClose={handleClose}
+ top={12}
+ />
+ <Stack gap={1}>
+ <Box display="flex" p={2}>
+ <Box flex="1">
+ <Stack
+ direction="row"
+ justifyContent="space-between"
+ mb={4}
+ >
+ <Stack direction="row" alignItems="center" gap={2}>
+ <Avatar
+ sx={{
+ width: 30,
+ height: 30,
+ bgcolor: theme.palette.primary.main,
+ }}
+ >
+ {record.agv}
+ </Avatar>
+ <Typography variant="h5">
+ {record.groupNo}
+ </Typography>
+ </Stack>
+ <Stack
+ gap={1}
+ direction="row"
+ pr={6}
+ >
+ <ResendButton record={record} />
+ </Stack>
+ </Stack>
+
+ <Box display="flex" m={2}>
+ <Box display="flex" mr={5} flexDirection="column">
+ <Typography
+ color="textSecondary"
+ variant="caption"
+ >
+ {translate('table.field.mission.lastSendDate')}
+ </Typography>
+ <Stack
+ direction="row"
+ alignItems="center"
+ gap={1}
+ >
+ <Typography variant="body2">
+ {format(record.sendTime, 'yyyy-MM-dd HH:mm:ss') || '-'}
+ </Typography>
+ </Stack>
+ </Box>
+
+ <Box display="flex" mr={5} flexDirection="column">
+ <Typography
+ color="textSecondary"
+ variant="caption"
+ >
+ {translate('table.field.bus.busNo')}
+ </Typography>
+ <Typography variant="body2">
+ {record.busNo || '-'}
+ </Typography>
+ </Box>
+
+ <Box display="flex" mr={5} flexDirection="column">
+ <Typography
+ color="textSecondary"
+ variant="caption"
+ >
+ {translate('table.field.segment.posType')}
+ </Typography>
+ <Typography variant="body2">
+ {translate(`page.mission.enums.posType.${record.posType}`)}
+ </Typography>
+ </Box>
+
+ <Box display="flex" mr={5} flexDirection="column">
+ <Typography
+ color="textSecondary"
+ variant="caption"
+ >
+ {translate('table.field.mission.actionCount')}
+ </Typography>
+ <Typography variant="body2">
+ {record.actionCount || 'unknown'}
+ </Typography>
+ </Box>
+ </Box>
+
+ {!!record.taskIds?.length && (
+ <Box m={2}>
+ <Box
+ display="flex"
+ mr={5}
+ flexDirection="column"
+ minHeight={48}
+ >
+ <Typography
+ color="textSecondary"
+ variant="caption"
+ >
+ {translate('table.field.mission.task')}
+ </Typography>
+ <ReferenceArrayField
+ source="contact_ids"
+ reference="contacts_summary"
+ >
+ <TaskList taskIds={record.taskIds} />
+ </ReferenceArrayField>
+ </Box>
+ </Box>
+ )}
+
+ {!!record.codeList?.length && (
+ <Box m={2} sx={{ whiteSpace: 'pre-line' }}>
+ <Typography
+ color="textSecondary"
+ variant="caption"
+ >
+ {translate('table.field.mission.runPath')}
+ </Typography>
+ <Typography variant="body2" sx={{ whiteSpace: 'normal', overflow: 'hidden', display: 'flex', flexWrap: 'wrap' }}>
+ [ {record.codeList.map((code, index) => (
+ <span key={index} style={{
+ color: record.currCode === code ? theme.palette.primary.main : 'inherit',
+ }}>
+ {code}{index < record.codeList.length - 1 && ','}
+ </span>
+ ))} ]
+ </Typography>
+ </Box>
+ )}
+
+ <Box m={2}>
+ <Typography
+ color="textSecondary"
+ variant="caption"
+ >
+ {translate('table.field.mission.actions')}
+ </Typography>
+ <Divider />
+ <ActionsIterator actionIds={record.actionIds} />
+ </Box>
+ </Box>
+ </Box>
+ </Stack>
</>
)
-}
+};
+
+const ResendButton = ({ record }) => {
+ const dataProvider = useDataProvider();
+ const redirect = useRedirect();
+ const notify = useNotify();
+ const refresh = useRefresh();
+ const translate = useTranslate();
+
+ const handleClick = () => {
+ redirect(`/mission/${record.id}/resend`, undefined, undefined, undefined, {
+ _scrollToTop: false,
+ });
+ };
+
+ return (
+ <Button
+ onClick={handleClick}
+ // startIcon={<MoveToInboxIcon />}
+ endIcon={<ArrowForwardIosIcon />}
+ size="small"
+ >
+ {translate('common.action.resend')}
+ </Button>
+ );
+};
export default MissionShow;
\ No newline at end of file
--
Gitblit v1.9.1