2
0

TaskTableCell.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { useState } from "react";
  2. import type { ITaskData } from "../../api/task";
  3. import User from "../auth/User";
  4. import Assignees from "./Assignees";
  5. import TaskStatusButton from "./TaskStatusButton";
  6. import { Button } from "antd";
  7. import TaskEditDrawer from "./TaskEditDrawer";
  8. interface IWidget {
  9. task?: ITaskData;
  10. onChange?: (treeData: ITaskData[]) => void;
  11. }
  12. const TaskTableCell = ({ task, onChange }: IWidget) => {
  13. const [active, setActive] = useState(false);
  14. const [open, setOpen] = useState(false);
  15. return (
  16. <div
  17. onMouseEnter={() => setActive(true)}
  18. onMouseLeave={() => setActive(false)}
  19. >
  20. <div>
  21. {task?.executor ? (
  22. <User {...task.executor} />
  23. ) : task?.assignees ? (
  24. <Assignees task={task} />
  25. ) : (
  26. <></>
  27. )}
  28. </div>
  29. <div>
  30. <TaskStatusButton type="tag" task={task} onChange={onChange} />
  31. <Button
  32. size="small"
  33. type="link"
  34. style={{ visibility: active ? "visible" : "hidden" }}
  35. onClick={() => setOpen(true)}
  36. >
  37. 查看
  38. </Button>
  39. </div>
  40. <TaskEditDrawer
  41. taskId={task?.id}
  42. openDrawer={open}
  43. onClose={() => setOpen(false)}
  44. onChange={onChange}
  45. />
  46. </div>
  47. );
  48. };
  49. export default TaskTableCell;