feat:修复下载数据集问题、删除数据确认框、修改标题、添加列表轮询刷新 (#16)

* refactor: clean up tag management and dataset handling, update API endpoints

* feat: add showTime prop to DevelopmentInProgress component across multiple pages

* refactor: update component styles and improve layout with new utility classes

* feat: enhance useFetchData hook with polling functionality and improve task progress tracking

* feat: enhance dataset management features with improved tag handling, download functionality, and UI updates

* feat: Enhance DatasetDetail component with delete functionality and improved download handling

feat: Add automatic data refresh and improved user feedback in DatasetManagementPage

fix: Update dataset API to streamline download functionality and improve error handling

* feat: Clear new tag input after successful addition in TagManager
This commit is contained in:
chenghh-9609
2025-10-23 16:48:42 +08:00
committed by GitHub
parent c998de2e9d
commit c52702b073
28 changed files with 715 additions and 1216 deletions

View File

@@ -1,8 +1,9 @@
import React from "react";
import { Database } from "lucide-react";
import { Card, Dropdown, Button, Tag, Tooltip } from "antd";
import { Card, Button, Tag, Tooltip, Popconfirm } from "antd";
import type { ItemType } from "antd/es/menu/interface";
import AddTagPopover from "./AddTagPopover";
import ActionDropdown from "./ActionDropdown";
interface StatisticItem {
icon: React.ReactNode;
@@ -100,30 +101,38 @@ function DetailHeader<T>({
{operations.map((op) => {
if (op.isDropdown) {
return (
<Dropdown
key={op.key}
menu={{
items: op.items as ItemType[],
onClick: op.onMenuClick,
}}
>
<Tooltip title={op.label}>
<Button icon={op.icon} />
</Tooltip>
</Dropdown>
<ActionDropdown
actions={op?.items}
onAction={op?.onMenuClick}
/>
);
}
if (op.confirm) {
return (
<Tooltip key={op.key} title={op.label}>
<Popconfirm
key={op.key}
title={op.confirm.title}
description={op.confirm.description}
onConfirm={() => {
op?.onClick();
}}
okText={op.confirm.okText || "确定"}
cancelText={op.confirm.cancelText || "取消"}
okType={op.danger ? "danger" : "primary"}
overlayStyle={{ zIndex: 9999 }}
>
<Button icon={op.icon} danger={op.danger} />
</Popconfirm>
</Tooltip>
);
}
return (
<Tooltip key={op.key} title={op.label}>
<Button
key={op.key}
onClick={op.onClick}
className={
op.danger
? "text-red-600 border-red-200 bg-transparent"
: ""
}
icon={op.icon}
danger={op.danger}
onClick={op.onClick}
/>
</Tooltip>
);