Browse Source

task 改为数组

visuddhinanda 1 year ago
parent
commit
e11dd209b6

+ 4 - 4
dashboard-v4/dashboard/src/components/task/Task.tsx

@@ -7,7 +7,7 @@ import { set } from "lodash";
 interface IWidget {
   taskId?: string;
   onLoad?: (task: ITaskData) => void;
-  onChange?: (task: ITaskData) => void;
+  onChange?: (task: ITaskData[]) => void;
 }
 const Task = ({ taskId, onLoad, onChange }: IWidget) => {
   const [isEdit, setIsEdit] = useState(false);
@@ -19,7 +19,7 @@ const Task = ({ taskId, onLoad, onChange }: IWidget) => {
           taskId={taskId}
           onLoad={(data: ITaskData) => {}}
           onChange={(data: ITaskData) => {
-            onChange && onChange(data);
+            onChange && onChange([data]);
             setTask(data);
             setIsEdit(false);
           }}
@@ -29,9 +29,9 @@ const Task = ({ taskId, onLoad, onChange }: IWidget) => {
           taskId={taskId}
           task={task}
           onLoad={(data: ITaskData) => setTask(data)}
-          onChange={(data: ITaskData) => {
+          onChange={(data: ITaskData[]) => {
             onChange && onChange(data);
-            setTask(data);
+            setTask(data.find((t) => t.id === taskId));
           }}
           onEdit={() => setIsEdit(true)}
         />

+ 18 - 4
dashboard-v4/dashboard/src/components/task/TaskEditButton.tsx

@@ -8,21 +8,22 @@ import {
   EditOutlined,
   ArrowRightOutlined,
 } from "@ant-design/icons";
+import { useIntl } from "react-intl";
 
 import {
   ITaskData,
+  ITaskListResponse,
   ITaskResponse,
   ITaskUpdateRequest,
   TTaskStatus,
 } from "../api/task";
 import { patch } from "../../request";
-import { useIntl } from "react-intl";
 
 export type TRelation = "pre" | "next";
 interface IWidget {
   task?: ITaskData;
   studioName?: string;
-  onChange?: (task: ITaskData) => void;
+  onChange?: (task: ITaskData[]) => void;
   onEdit?: () => void;
   onPreTask?: (type: TRelation) => void;
 }
@@ -35,7 +36,20 @@ const TaskEditButton = ({ task, onChange, onEdit, onPreTask }: IWidget) => {
     patch<ITaskUpdateRequest, ITaskResponse>(url, setting).then((json) => {
       if (json.ok) {
         message.success("Success");
-        onChange && onChange(json.data);
+        onChange && onChange([json.data]);
+      } else {
+        message.error(json.message);
+      }
+    });
+  };
+
+  const setStatus = (setting: ITaskUpdateRequest) => {
+    const url = `/v2/task-status/${setting.id}`;
+
+    patch<ITaskUpdateRequest, ITaskListResponse>(url, setting).then((json) => {
+      if (json.ok) {
+        message.success("Success");
+        onChange && onChange(json.data.rows);
       } else {
         message.error(json.message);
       }
@@ -148,7 +162,7 @@ const TaskEditButton = ({ task, onChange, onEdit, onPreTask }: IWidget) => {
           icon={<CheckOutlined />}
           onClick={() => {
             if (task?.id) {
-              setValue({
+              setStatus({
                 id: task.id,
                 status: newStatus,
                 studio_name: "",

+ 1 - 1
dashboard-v4/dashboard/src/components/task/TaskEditDrawer.tsx

@@ -13,7 +13,7 @@ interface IWidget {
   taskId?: string;
   openDrawer?: boolean;
   onClose?: () => void;
-  onChange?: (data: ITaskData) => void;
+  onChange?: (data: ITaskData[]) => void;
 }
 const TaskEditDrawer = ({
   taskId,

+ 6 - 5
dashboard-v4/dashboard/src/components/task/TaskList.tsx

@@ -93,7 +93,7 @@ interface IWidget {
   sortBy?: "order" | "created_at" | "updated_at" | "started_at" | "finished_at";
   groupBy?: "executor_id" | "owner_id" | "status" | "project_id";
   onLoad?: (data: ITaskData[]) => void;
-  onChange?: (data: ITaskData) => void;
+  onChange?: (data: ITaskData[]) => void;
 }
 const TaskList = ({
   studioName,
@@ -443,7 +443,7 @@ const TaskList = ({
               url,
               data
             );
-            onChange && onChange(res.data);
+            onChange && onChange([res.data]);
             console.info("task save api response", res);
           },
 
@@ -579,13 +579,14 @@ const TaskList = ({
         taskId={selectedTask}
         openDrawer={open}
         onClose={() => setOpen(false)}
-        onChange={(data: ITaskData) => {
+        onChange={(data: ITaskData[]) => {
           console.debug("task change", data);
           setDataSource((origin) => {
             const update = (item: ITaskData): ITaskData => {
               item.children = item.children?.map(update);
-              if (item.id === data.id) {
-                return { ...data, children: item.children };
+              const found = data.find((t) => t.id === item.id);
+              if (found) {
+                return { ...found, children: item.children };
               }
               return item;
             };

+ 3 - 3
dashboard-v4/dashboard/src/components/task/TaskReader.tsx

@@ -40,7 +40,7 @@ interface IWidget {
   taskId?: string;
   task?: ITaskData;
   onLoad?: (data: ITaskData) => void;
-  onChange?: (data: ITaskData) => void;
+  onChange?: (data: ITaskData[]) => void;
   onEdit?: () => void;
 }
 const TaskReader = ({ taskId, task, onLoad, onChange, onEdit }: IWidget) => {
@@ -98,7 +98,7 @@ const TaskReader = ({ taskId, task, onLoad, onChange, onEdit }: IWidget) => {
       console.info("api response", json);
       if (json.ok) {
         message.success("Success");
-        onChange && onChange(json.data);
+        onChange && onChange([json.data]);
       } else {
         message.error(json.message);
       }
@@ -136,7 +136,7 @@ const TaskReader = ({ taskId, task, onLoad, onChange, onEdit }: IWidget) => {
         <div>
           <TaskEditButton
             task={task}
-            onChange={(task: ITaskData) => {
+            onChange={(task: ITaskData[]) => {
               onChange && onChange(task);
             }}
             onEdit={onEdit}

+ 25 - 19
dashboard-v4/dashboard/src/pages/studio/task/project.tsx

@@ -35,29 +35,35 @@ const Widget = () => {
                 studioName={studioname}
                 projectId={projectId}
                 onLoad={(data) => setTasks(data)}
-                onChange={(data) =>
+                onChange={(data: ITaskData[]) =>
                   setTasks((origin) => {
-                    const old = origin?.find((value) => value.id === data.id);
-                    let newData: ITaskData[] = [];
-                    if (old) {
-                      origin?.forEach(
-                        (
-                          value: ITaskData,
-                          index: number,
-                          array: ITaskData[]
-                        ) => {
-                          if (value.id === data.id) {
-                            array[index] = data;
-                          }
-                        }
+                    data.forEach((input) => {
+                      const old = origin?.find(
+                        (value) => value.id === input.id
                       );
-                    } else {
-                      if (origin) {
-                        newData = [...origin, data];
+                      if (old) {
+                        //找到了更新旧的
+                        origin?.forEach(
+                          (
+                            value: ITaskData,
+                            index: number,
+                            array: ITaskData[]
+                          ) => {
+                            if (value.id === input.id) {
+                              array[index] = input;
+                            }
+                          }
+                        );
                       } else {
-                        newData = [data];
+                        //没有找到就添加
+                        if (origin) {
+                          origin = [...origin, input];
+                        } else {
+                          origin = [input];
+                        }
                       }
-                    }
+                    });
+
                     return origin;
                   })
                 }