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/mission/MissionShow.jsx |  245 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 242 insertions(+), 3 deletions(-)

diff --git a/zy-acs-flow/src/page/mission/MissionShow.jsx b/zy-acs-flow/src/page/mission/MissionShow.jsx
index 203abbd..4ccffc4 100644
--- a/zy-acs-flow/src/page/mission/MissionShow.jsx
+++ b/zy-acs-flow/src/page/mission/MissionShow.jsx
@@ -1,12 +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 (
         <>
-            show
+            <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' }}>
+                                    [&nbsp;{record.codeList.map((code, index) => (
+                                        <span key={index} style={{
+                                            color: record.currCode === code ? theme.palette.primary.main : 'inherit',
+                                        }}>
+                                            {code}{index < record.codeList.length - 1 && ','}&nbsp;
+                                        </span>
+                                    ))}&nbsp;]
+                                </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