Skip to content

Commit 3242665

Browse files
committed
fix: 修复部分成功展示
1 parent 655d3c0 commit 3242665

4 files changed

Lines changed: 41 additions & 53 deletions

File tree

frontend/src/pages/DataCleansing/Detail/TaskDetail.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ export default function CleansingTaskDetail() {
134134
];
135135

136136
const operations = [
137-
...(task?.status === TaskStatus.RUNNING
137+
...(task?.status?.value === TaskStatus.RUNNING
138138
? [
139139
{
140140
key: "pause",
@@ -148,7 +148,7 @@ export default function CleansingTaskDetail() {
148148
? [
149149
{
150150
key: "start",
151-
label: t("dataCleansing.actions.retryTask"),
151+
label: t("dataCleansing.actions.start"),
152152
icon: <Play className="w-4 h-4" />,
153153
onClick: startTask,
154154
},

frontend/src/pages/DataCleansing/Detail/components/OperatorTable.tsx

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {useNavigate} from "react-router";
33
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/Card"
44
import { GitBranch } from "lucide-react";
55
import { useTranslation } from "react-i18next";
6+
import { TaskStatus } from "@/pages/DataCleansing/cleansing.model";
67

78
export default function OperatorTable({ task }: { task: any }) {
89
const navigate = useNavigate();
@@ -83,23 +84,27 @@ export default function OperatorTable({ task }: { task: any }) {
8384
dataIndex: "status",
8485
key: "status",
8586
filters: [
86-
{ text: t("dataCleansing.detail.operatorTable.completed"), value: t("dataCleansing.detail.operatorTable.completed") },
87-
{ text: t("dataCleansing.detail.operatorTable.failed"), value: t("dataCleansing.detail.operatorTable.failed") },
88-
{ text: t("dataCleansing.detail.operatorTable.running"), value: t("dataCleansing.detail.operatorTable.running") },
87+
{ text: t("dataCleansing.detail.operatorTable.completed"), value: "completed" },
88+
{ text: t("dataCleansing.detail.operatorTable.failed"), value: "failed" },
89+
{ text: t("dataCleansing.detail.operatorTable.running"), value: "running" },
90+
{ text: t("dataCleansing.detail.operatorTable.partialSuccess"), value: "partialSuccess" },
8991
],
90-
onFilter: (value: string, record: any) => record.status === value,
91-
render: (status: string) => (
92-
<Badge
93-
status={
94-
status === t("dataCleansing.detail.operatorTable.completed")
95-
? "success"
96-
: status === t("dataCleansing.detail.operatorTable.running")
97-
? "processing"
98-
: "error"
99-
}
100-
text={status}
101-
/>
102-
),
92+
onFilter: (value: string, record: any) => record.statusValue === value,
93+
render: (statusObj: { label: string; value: TaskStatus }) => {
94+
let badgeStatus: "default" | "processing" | "success" | "error" | "warning" = "default";
95+
96+
if (statusObj?.value === TaskStatus.COMPLETED) {
97+
badgeStatus = "success";
98+
} else if (statusObj?.value === TaskStatus.RUNNING) {
99+
badgeStatus = "processing";
100+
} else if (statusObj?.value === TaskStatus.PARTIAL_SUCCESS) {
101+
badgeStatus = "warning";
102+
} else if (statusObj?.value === TaskStatus.FAILED) {
103+
badgeStatus = "error";
104+
}
105+
106+
return <Badge status={badgeStatus} text={statusObj?.label} />;
107+
},
103108
},
104109
]
105110

@@ -114,7 +119,7 @@ export default function OperatorTable({ task }: { task: any }) {
114119
<CardDescription>{t("dataCleansing.detail.operatorTable.description")}</CardDescription>
115120
</CardHeader>
116121
<CardContent>
117-
<Table
122+
<Table
118123
columns={operatorColumns}
119124
dataSource={Object.values(task?.instance).map((item) => ({
120125
id: item?.id,
@@ -124,7 +129,8 @@ export default function OperatorTable({ task }: { task: any }) {
124129
? new Date(task.finishedAt).toLocaleTimeString()
125130
: '-',
126131
duration: task.duration,
127-
status: task.status.label,
132+
status: task.status,
133+
statusValue: task.status.value,
128134
processedFiles: task.progress.finishedFileNum,
129135
successRate: task?.progress.successRate,
130136
}))}

frontend/src/pages/DataCleansing/Home/components/TaskList.tsx

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -101,37 +101,32 @@ export default function TaskList() {
101101
const isRunning = record.status?.value === TaskStatus.RUNNING;
102102
const showStart = [
103103
TaskStatus.PENDING,
104+
TaskStatus.PARTIAL_SUCCESS,
104105
TaskStatus.FAILED,
105106
TaskStatus.STOPPED,
106107
].includes(record.status?.value);
107-
const isComplete = record.status?.value === TaskStatus.COMPLETED;
108108
const pauseBtn = {
109109
key: "pause",
110110
label: t("dataCleansing.actions.pause"),
111-
icon: isRunning ? <PauseCircleOutlined /> : <PlayCircleOutlined />,
112-
onClick: pauseTask, // implement pause/play logic
111+
icon: <PauseCircleOutlined />,
112+
onClick: pauseTask,
113113
};
114114

115115
const startBtn = {
116116
key: "start",
117117
label: t("dataCleansing.actions.start"),
118-
icon: isRunning ? <PauseCircleOutlined /> : <PlayCircleOutlined />,
119-
disabled: isComplete,
120-
onClick: startTask, // implement pause/play logic
118+
icon: <PlayCircleOutlined />,
119+
onClick: startTask,
121120
};
122121
return [
123-
...(isRunning
124-
? [ pauseBtn ]
125-
: []),
126-
...(showStart || isComplete
127-
? [ startBtn ]
128-
: []),
122+
...(isRunning ? [pauseBtn] : []),
123+
...(showStart ? [startBtn] : []),
129124
{
130125
key: "delete",
131126
label: t("dataCleansing.actions.delete"),
132127
danger: true,
133128
icon: <DeleteOutlined />,
134-
onClick: deleteTask, // implement delete logic
129+
onClick: deleteTask,
135130
},
136131
];
137132
};

frontend/src/pages/DataCleansing/cleansing.const.tsx

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,53 +8,40 @@ import {
88
formatDateTime,
99
formatExecutionDuration,
1010
} from "@/utils/unit";
11-
import {
12-
ClockCircleOutlined,
13-
PlayCircleOutlined,
14-
CheckCircleOutlined,
15-
AlertOutlined,
16-
PauseCircleOutlined,
17-
WarningOutlined,
18-
} from "@ant-design/icons";
11+
1912
import { BrushCleaning, Layout } from "lucide-react";
2013

2114
export function getTaskStatusMap(t: (key: string) => string) {
2215
return {
2316
[TaskStatus.PENDING]: {
2417
label: t("dataCleansing.status.pending"),
2518
value: TaskStatus.PENDING,
26-
color: "gray",
27-
icon: <ClockCircleOutlined />,
19+
color: "default",
2820
},
2921
[TaskStatus.RUNNING]: {
3022
label: t("dataCleansing.status.running"),
3123
value: TaskStatus.RUNNING,
32-
color: "blue",
33-
icon: <PlayCircleOutlined />,
24+
color: "processing",
3425
},
3526
[TaskStatus.COMPLETED]: {
3627
label: t("dataCleansing.status.completed"),
3728
value: TaskStatus.COMPLETED,
38-
color: "green",
39-
icon: <CheckCircleOutlined />,
29+
color: "success",
4030
},
4131
[TaskStatus.PARTIAL_SUCCESS]: {
4232
label: t("dataCleansing.status.partialSuccess"),
4333
value: TaskStatus.PARTIAL_SUCCESS,
44-
color: "yellow",
45-
icon: <WarningOutlined />,
34+
color: "warning",
4635
},
4736
[TaskStatus.FAILED]: {
4837
label: t("dataCleansing.status.failed"),
4938
value: TaskStatus.FAILED,
50-
color: "red",
51-
icon: <AlertOutlined />,
39+
color: "error",
5240
},
5341
[TaskStatus.STOPPED]: {
5442
label: t("dataCleansing.status.stopped"),
5543
value: TaskStatus.STOPPED,
56-
color: "orange",
57-
icon: <PauseCircleOutlined />,
44+
color: "default",
5845
},
5946
};
6047
}

0 commit comments

Comments
 (0)