TaskRelation.tsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { Collapse } from "antd";
  2. import type { IProject, ITaskData } from "../../api/task";
  3. import TaskFlowchart from "./TaskFlowchart";
  4. const { Panel } = Collapse;
  5. interface IWidget {
  6. projectId?: string;
  7. tasks?: ITaskData[];
  8. }
  9. const TaskRelation = ({ tasks }: IWidget) => {
  10. const projects = new Map<string, IProject>();
  11. tasks?.forEach((value) => {
  12. value.project && projects.set(value.project.id, value.project);
  13. });
  14. const flowcharts: IProject[] = [];
  15. projects.forEach((value: IProject, _key: string) => {
  16. flowcharts.push(value);
  17. });
  18. return (
  19. <Collapse
  20. defaultActiveKey={Array.from({ length: flowcharts.length }, (_, i) => i)}
  21. >
  22. {flowcharts
  23. .sort((a, b) => a.sn - b.sn)
  24. .map((item, id) => {
  25. return (
  26. <Panel header={item.title} key={id}>
  27. <TaskFlowchart
  28. tasks={tasks?.filter((value) => value.project_id === item.id)}
  29. />
  30. </Panel>
  31. );
  32. })}
  33. </Collapse>
  34. );
  35. };
  36. export default TaskRelation;