From 55a1c64758c9e44b1dd96ec9f53124355b7304ce Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期日, 29 九月 2024 15:46:37 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/MissionVo.java     |    2 
 zy-acs-flow/src/page/action/ActionsIterator.jsx                                              |   45 +++++++++++++++
 zy-acs-flow/src/page/action/Action.jsx                                                       |   81 +++++++++++++++++++++++++++
 zy-acs-flow/src/page/mission/MissionShow.jsx                                                 |    2 
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java |    1 
 5 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/zy-acs-flow/src/page/action/Action.jsx b/zy-acs-flow/src/page/action/Action.jsx
new file mode 100644
index 0000000..4a485b4
--- /dev/null
+++ b/zy-acs-flow/src/page/action/Action.jsx
@@ -0,0 +1,81 @@
+import { useState } from 'react';
+import {
+    Form,
+    ReferenceField,
+    useNotify,
+    useResourceContext,
+    useTranslate,
+} from 'react-admin';
+import {
+    Box,
+    Button,
+    Stack,
+    Tooltip,
+    Typography,
+    Avatar,
+} from '@mui/material';
+import { format } from 'date-fns';
+import { blueGrey } from '@mui/material/colors';
+
+export const Action = ({ data }) => {
+    const notify = useNotify();
+    const translate = useTranslate();
+
+    const [isHover, setHover] = useState(false);
+
+    return (
+        <Box
+            onMouseEnter={() => setHover(true)}
+            onMouseLeave={() => setHover(false)}
+            pb={1}
+        >
+            <Stack direction="row" spacing={1} alignItems="center" width="100%">
+                <Avatar
+                    sx={{
+                        width: 30,
+                        height: 30,
+                        bgcolor: blueGrey[500],
+                    }}
+                >
+                    {data.priority}
+                </Avatar>
+                <Typography color="text.secondary" variant="body2">
+                    {data.name}
+                </Typography>
+                <Box flex={1}></Box>
+                <Typography
+                    color="textSecondary"
+                    variant="body2"
+                    component="span"
+                >
+                    {format(data.ioTime, 'yyyy-MM-dd HH:mm:ss') || '-'}
+                </Typography>
+            </Stack>
+            <Stack
+                sx={{
+                    paddingTop: '0.5em',
+                    display: 'flex',
+                    '& p:empty': {
+                        minHeight: '0.75em',
+                    },
+                }}
+            >
+                {/* {note.text
+                    ?.split('\n')
+                    .map((paragraph: string, index: number) => (
+                        <Typography
+                            component="p"
+                            variant="body2"
+                            lineHeight={1.5}
+                            margin={0}
+                            key={index}
+                        >
+                            {paragraph}
+                        </Typography>
+                    ))}
+
+                {note.attachments && <NoteAttachments note={note} />} */}
+            </Stack>
+        </Box>
+    );
+};
diff --git a/zy-acs-flow/src/page/action/ActionsIterator.jsx b/zy-acs-flow/src/page/action/ActionsIterator.jsx
new file mode 100644
index 0000000..b550042
--- /dev/null
+++ b/zy-acs-flow/src/page/action/ActionsIterator.jsx
@@ -0,0 +1,45 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import {
+    useDataProvider,
+    useTranslate,
+} from 'react-admin';
+import { Box, Divider, Stack, LinearProgress } from '@mui/material';
+
+import { Action } from './Action';
+
+export const ActionsIterator = ({ actionIds }) => {
+    const dataProvider = useDataProvider();
+
+    const [actions, setActions] = useState([]);
+
+    useEffect(() => {
+        if (actionIds?.length > 0) {
+            dataProvider.getMany('action', { ids: actionIds }).then(res => {
+                if (res.data?.length > 0) {
+                    setActions(res.data);
+                }
+            })
+        }
+    }, [actionIds])
+
+    if (!actionIds?.length) return <LinearProgress />;
+
+    return (
+        <Box mt={2}>
+            {actions && (
+                <Stack mt={2} gap={1}>
+                    {actions.map((action, idx) => (
+                        <React.Fragment key={idx}>
+                            <Action
+                                data={action}
+                                isLast={idx === actions.length - 1}
+                                key={idx}
+                            />
+                            {idx < actions.length - 1 && <Divider />}
+                        </React.Fragment>
+                    ))}
+                </Stack>
+            )}
+        </Box>
+    );
+};
diff --git a/zy-acs-flow/src/page/mission/MissionShow.jsx b/zy-acs-flow/src/page/mission/MissionShow.jsx
index 4805aaf..8a24fea 100644
--- a/zy-acs-flow/src/page/mission/MissionShow.jsx
+++ b/zy-acs-flow/src/page/mission/MissionShow.jsx
@@ -29,6 +29,7 @@
 import MoveToInboxIcon from '@mui/icons-material/MoveToInbox';
 import { format } from 'date-fns';
 import { TaskList } from "./TaskList";
+import { ActionsIterator } from "../action/ActionsIterator";
 
 const MissionShow = ({ open, id }) => {
     const redirect = useRedirect();
@@ -198,6 +199,7 @@
 
                         <Box m={2}>
                             <Divider />
+                            <ActionsIterator actionIds={record.actionIds} />
                         </Box>
                     </Box>
                 </Box>
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/MissionVo.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/MissionVo.java
index 9b8cb04..3e436f5 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/MissionVo.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/result/MissionVo.java
@@ -40,4 +40,6 @@
 
     private List<String> codeList = new ArrayList<>();
 
+    private List<Long> actionIds = new ArrayList<>();
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java
index e0bee4f..1086f02 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/MissionServiceImpl.java
@@ -96,6 +96,7 @@
         vo.setActionCount(actionList.size());
         vo.setTaskIds(list.stream().map(Segment::getTaskId).collect(Collectors.toList()));
         vo.setCodeList(actionList.stream().map(Action::getCode).distinct().collect(Collectors.toList()));
+        vo.setActionIds(actionList.stream().map(Action::getId).collect(Collectors.toList()));
         return vo;
     }
 

--
Gitblit v1.9.1