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