Skip to content

Commit ee4e2ac

Browse files
committed
Merge remote-tracking branch 'origin/develop_930' into develop_930
2 parents d44fd72 + e4f919a commit ee4e2ac

16 files changed

Lines changed: 136 additions & 104 deletions

File tree

frontend/src/components/AddTagPopover.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ export default function AddTagPopover({
2525
const [showPopover, setShowPopover] = useState(false);
2626

2727
const [newTag, setNewTag] = useState("");
28-
const [detailNewTag, setDetailNewTag] = useState("");
2928
const [allTags, setAllTags] = useState<Tag[]>([]);
3029

3130
const tagsSet = useMemo(() => new Set(tags.map((tag) => tag.id)), [tags]);
@@ -46,8 +45,6 @@ export default function AddTagPopover({
4645

4746
const handleCreateAndAddTag = () => {
4847
if (newTag.trim()) {
49-
console.log(newTag.trim());
50-
5148
onCreateAndTag?.(newTag.trim());
5249
setNewTag("");
5350
}
@@ -98,13 +95,13 @@ export default function AddTagPopover({
9895
<div className="flex gap-2">
9996
<Input
10097
placeholder="输入新标签名称..."
101-
value={detailNewTag}
102-
onChange={(e) => setDetailNewTag(e.target.value)}
98+
value={newTag}
99+
onChange={(e) => setNewTag(e.target.value)}
103100
className="h-8 text-sm"
104101
/>
105102
<Button
106103
onClick={() => handleCreateAndAddTag()}
107-
disabled={!detailNewTag.trim()}
104+
disabled={!newTag.trim()}
108105
type="primary"
109106
>
110107
添加

frontend/src/components/DevelopmentInProgress.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ const DevelopmentInProgress = ({ showHome = true }) => {
55
<div className="mt-40 flex flex-col items-center justify-center">
66
<div className="hero-icon">🚧</div>
77
<h1 className="text-2xl font-bold">功能开发中</h1>
8-
<p className="mt-4">我们正在全力开发新功能,为您带来更好的体验</p>
8+
<p className="mt-4">
9+
为了给您带来更好的体验,我们计划<b>2025.10.30</b>
10+
开放此功能
11+
</p>
912
{showHome && (
1013
<Button
1114
type="primary"

frontend/src/hooks/useFetchData.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,8 @@ export default function useFetchData<T>(
7979
result = data?.content.map(mapDataFunc) ?? [];
8080
}
8181
setTableData(result);
82-
console.log(data, result.map(mapDataFunc));
8382
} catch (error) {
84-
console.log(error)
83+
console.error(error)
8584
message.error("数据获取失败,请稍后重试");
8685
} finally {
8786
Loading.hide();
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { useMemo } from "react";
2+
import { useLocation } from "react-router";
3+
4+
interface AnyObject {
5+
[key: string]: any;
6+
}
7+
8+
export function useSearchParams(): AnyObject {
9+
const { search } = useLocation();
10+
return useMemo(() => {
11+
const urlParams = new URLSearchParams(search);
12+
const params: AnyObject = {};
13+
for (const [key, value] of urlParams.entries()) {
14+
params[key] = value;
15+
}
16+
return params;
17+
}, [search]);
18+
}

frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,10 @@ export default function DataAnnotation() {
130130
];
131131

132132
return (
133-
<div className="space-y-4">
133+
<div className="flex flex-col h-full gap-4">
134134
{/* Header */}
135135
<div className="flex items-center justify-between">
136-
<div className="flex items-center space-x-4">
137-
<div className="flex items-center space-x-2">
138-
<span className="text-xl font-bold">数据标注</span>
139-
</div>
140-
</div>
136+
<h1 className="text-xl font-bold">数据标注</h1>
141137
<Button
142138
type="primary"
143139
icon={<PlusOutlined />}
@@ -149,7 +145,6 @@ export default function DataAnnotation() {
149145

150146
{/* Filters Toolbar */}
151147
<SearchControls
152-
className="mb-4"
153148
searchTerm={searchParams.keyword}
154149
onSearchChange={(keyword) =>
155150
setSearchParams({ ...searchParams, keyword })

frontend/src/pages/DataCleansing/Create/CreateTask.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export default function CleansingTaskCreate() {
4040
},
4141
})),
4242
};
43-
navigate("/data/cleansing");
43+
navigate("/data/cleansing?view=task");
4444
await createCleaningTaskUsingPost(task);
4545
message.success("任务已创建");
4646
};

frontend/src/pages/DataCleansing/Create/CreateTempate.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default function CleansingTemplateCreate() {
2828
};
2929

3030
await createCleaningTemplateUsingPost(template);
31-
navigate("/data/cleansing");
31+
navigate("/data/cleansing?view=template");
3232
};
3333

3434
const {
Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,42 @@
1-
import { useState } from "react";
1+
import { useEffect, useState } from "react";
22
import { Tabs, Button } from "antd";
33
import { PlusOutlined } from "@ant-design/icons";
44
import { useNavigate } from "react-router";
55
import TaskList from "./components/TaskList";
66
import TemplateList from "./components/TemplateList";
77
import ProcessFlowDiagram from "./components/ProcessFlowDiagram";
8+
import { useSearchParams } from "@/hooks/useSearchParams";
89

910
export default function DataProcessingPage() {
1011
const navigate = useNavigate();
11-
const [currentView, setCurrentView] = useState<"tasks" | "templates">(
12-
"tasks"
13-
);
12+
const urlParams = useSearchParams();
13+
const [currentView, setCurrentView] = useState<"task" | "template">("task");
14+
15+
useEffect(() => {
16+
if (urlParams.view) {
17+
setCurrentView(urlParams.view);
18+
}
19+
}, [urlParams]);
1420

1521
return (
16-
<div className="h-full flex flex-col">
17-
<div style={{ marginBottom: 24 }}>
18-
{/* Header */}
19-
<div className="flex justify-between items-center">
20-
<h1 className="text-xl font-bold">数据清洗</h1>
21-
<div className="flex gap-2">
22-
<Button
23-
icon={<PlusOutlined />}
24-
onClick={() => navigate("/data/cleansing/create-template")}
25-
>
26-
创建清洗模板
27-
</Button>
28-
<Button
29-
type="primary"
30-
icon={<PlusOutlined />}
31-
onClick={() => navigate("/data/cleansing/create-task")}
32-
>
33-
创建清洗任务
34-
</Button>
35-
</div>
22+
<div className="h-full flex flex-col gap-4">
23+
{/* Header */}
24+
<div className="flex justify-between items-center">
25+
<h1 className="text-xl font-bold">数据清洗</h1>
26+
<div className="flex gap-2">
27+
<Button
28+
icon={<PlusOutlined />}
29+
onClick={() => navigate("/data/cleansing/create-template")}
30+
>
31+
创建清洗模板
32+
</Button>
33+
<Button
34+
type="primary"
35+
icon={<PlusOutlined />}
36+
onClick={() => navigate("/data/cleansing/create-task")}
37+
>
38+
创建清洗任务
39+
</Button>
3640
</div>
3741
</div>
3842
<ProcessFlowDiagram />
@@ -41,17 +45,17 @@ export default function DataProcessingPage() {
4145
onChange={(key) => setCurrentView(key as any)}
4246
items={[
4347
{
44-
key: "tasks",
48+
key: "task",
4549
label: "任务列表",
4650
},
4751
{
48-
key: "templates",
52+
key: "template",
4953
label: "模板管理",
5054
},
5155
]}
5256
/>
53-
{currentView === "tasks" && <TaskList />}
54-
{currentView === "templates" && <TemplateList />}
57+
{currentView === "task" && <TaskList />}
58+
{currentView === "template" && <TemplateList />}
5559
</div>
5660
);
5761
}

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

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,14 @@ export default function TaskList() {
7575
const pauseBtn = {
7676
key: "pause",
7777
label: "暂停",
78-
icon: isRunning ? (
79-
<PauseCircleOutlined style={{ color: "#faad14" }} />
80-
) : (
81-
<PlayCircleOutlined color="#52c41a" />
82-
),
78+
icon: isRunning ? <PauseCircleOutlined /> : <PlayCircleOutlined />,
8379
onClick: pauseTask, // implement pause/play logic
8480
};
8581

8682
const startBtn = {
8783
key: "start",
8884
label: "启动",
89-
icon: isRunning ? (
90-
<PauseCircleOutlined style={{ color: "#faad14" }} />
91-
) : (
92-
<PlayCircleOutlined style={{ color: "#52c41a" }} />
93-
),
85+
icon: isRunning ? <PauseCircleOutlined /> : <PlayCircleOutlined />,
9486
onClick: startTask, // implement pause/play logic
9587
};
9688
return [
@@ -229,7 +221,6 @@ export default function TaskList() {
229221
<>
230222
{/* Search and Filters */}
231223
<SearchControls
232-
className="mb-4"
233224
searchTerm={searchParams.keyword}
234225
onSearchChange={(keyword) =>
235226
setSearchParams({ ...searchParams, keyword })

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default function TemplateList() {
1717
mapTemplate
1818
);
1919

20-
const DeleteTemplate = async (template: CleansingTemplate) => {
20+
const deleteTemplate = async (template: CleansingTemplate) => {
2121
if (!template.id) {
2222
return;
2323
}
@@ -32,7 +32,7 @@ export default function TemplateList() {
3232
key: "delete",
3333
label: "删除模板",
3434
icon: <DeleteOutlined style={{ color: "#f5222d" }} />,
35-
onClick: (template: CleansingTemplate) => DeleteTemplate(template), // 可实现删除逻辑
35+
onClick: (template: CleansingTemplate) => deleteTemplate(template), // 可实现删除逻辑
3636
},
3737
];
3838

0 commit comments

Comments
 (0)