TaskTitle.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { message, Typography } from "antd";
  2. import type {
  3. ITaskData,
  4. ITaskResponse,
  5. ITaskUpdateRequest,
  6. } from "../../api/task";
  7. import { patch } from "../../request";
  8. const { Title } = Typography;
  9. interface IWidget {
  10. task?: ITaskData;
  11. onChange?: (data: ITaskData[]) => void;
  12. }
  13. const TaskTitle = ({ task, onChange }: IWidget) => {
  14. return (
  15. <Title
  16. level={3}
  17. editable={{
  18. onChange(value) {
  19. console.debug("title change", value);
  20. if (!task) {
  21. console.error("no task");
  22. return;
  23. }
  24. if (value === "") {
  25. message.error("标题不能为空");
  26. return;
  27. }
  28. const setting: ITaskUpdateRequest = {
  29. id: task.id,
  30. studio_name: "",
  31. title: value,
  32. };
  33. const url = `/v2/task/${task.id}`;
  34. console.info("api request", url, setting);
  35. patch<ITaskUpdateRequest, ITaskResponse>(url, setting).then(
  36. (json) => {
  37. console.info("api response", json);
  38. if (json.ok) {
  39. message.success("Success");
  40. onChange && onChange([json.data]);
  41. } else {
  42. message.error(json.message);
  43. }
  44. }
  45. );
  46. },
  47. }}
  48. >
  49. {task?.title}
  50. </Title>
  51. );
  52. };
  53. export default TaskTitle;