From b94da830462176a30753b64d97844f0f84979254 Mon Sep 17 00:00:00 2001 From: MoeexT Date: Thu, 26 Feb 2026 11:21:05 +0800 Subject: [PATCH] :lipstick: change delete prompt Notification to Modal --- frontend/src/i18n/locales/en/common.json | 1 + frontend/src/i18n/locales/zh/common.json | 1 + .../DataCollection/Home/TaskManagement.tsx | 64 ++++++++++++------- 3 files changed, 44 insertions(+), 22 deletions(-) diff --git a/frontend/src/i18n/locales/en/common.json b/frontend/src/i18n/locales/en/common.json index 4768c8489..45ba1d89b 100644 --- a/frontend/src/i18n/locales/en/common.json +++ b/frontend/src/i18n/locales/en/common.json @@ -90,6 +90,7 @@ "stopSuccess": "Task stop request sent", "deleteSuccess": "Task deleted", "deleteConfirm": "Are you sure you want to delete this task? This action cannot be undone.", + "deleteConfirmMessage": "Are you sure you want to delete task \"{{taskName}}\"? This action cannot be undone.", "confirmDelete": "Delete", "cancel": "Cancel" } diff --git a/frontend/src/i18n/locales/zh/common.json b/frontend/src/i18n/locales/zh/common.json index 662678330..4dddd21ce 100644 --- a/frontend/src/i18n/locales/zh/common.json +++ b/frontend/src/i18n/locales/zh/common.json @@ -90,6 +90,7 @@ "stopSuccess": "任务停止请求已发送", "deleteSuccess": "任务已删除", "deleteConfirm": "确定要删除该任务吗?此操作不可撤销。", + "deleteConfirmMessage": "确定要删除任务「{{taskName}}」吗?删除后将无法恢复。", "confirmDelete": "删除", "cancel": "取消" } diff --git a/frontend/src/pages/DataCollection/Home/TaskManagement.tsx b/frontend/src/pages/DataCollection/Home/TaskManagement.tsx index d6d69fa37..8aa91bc95 100644 --- a/frontend/src/pages/DataCollection/Home/TaskManagement.tsx +++ b/frontend/src/pages/DataCollection/Home/TaskManagement.tsx @@ -1,4 +1,4 @@ -import { App, Button, Card, Popconfirm, Table, Tag, Tooltip } from "antd"; +import { App, Button, Card, Modal, Table, Tag, Tooltip } from "antd"; import { DeleteOutlined, PauseCircleOutlined, @@ -17,13 +17,24 @@ import { getStatusMap, mapCollectionTask } from "../collection.const"; import useFetchData from "@/hooks/useFetchData"; import { useNavigate } from "react-router"; import { useTranslation } from "react-i18next"; -import { useEffect } from "react"; +import { useEffect, useState } from "react"; export default function TaskManagement() { const { message } = App.useApp(); const navigate = useNavigate(); const { t } = useTranslation(); const statusMap = getStatusMap(t); + + // 删除确认弹窗状态 + const [deleteModal, setDeleteModal] = useState<{ + visible: boolean; + taskId: string; + taskName: string; + }>({ + visible: false, + taskId: "", + taskName: "", + }); const filters = [ { key: "status", @@ -76,9 +87,18 @@ export default function TaskManagement() { const handleDeleteTask = async (taskId: string) => { await deleteTaskByIdUsingDelete(taskId); message.success(t("dataCollection.taskManagement.messages.deleteSuccess")); + setDeleteModal({ visible: false, taskId: "", taskName: "" }); fetchData(); }; + const showDeleteConfirm = (taskId: string, taskName: string) => { + setDeleteModal({ visible: true, taskId, taskName }); + }; + + const handleCancelDelete = () => { + setDeleteModal({ visible: false, taskId: "", taskName: "" }); + }; + const taskOperations = (record: CollectionTask) => { const isStopped = record.status === TaskStatus.STOPPED; const startButton = { @@ -108,13 +128,13 @@ export default function TaskManagement() { label: t("dataCollection.taskManagement.actions.delete"), danger: true, icon: , - confirm: { + modal: { title: t("dataCollection.taskManagement.messages.deleteConfirm"), okText: t("dataCollection.taskManagement.messages.confirmDelete"), cancelText: t("dataCollection.taskManagement.messages.cancel"), okType: "danger", }, - onClick: () => handleDeleteTask(record.id), + onClick: () => showDeleteConfirm(record.id, record.name), }, ]; }; @@ -201,7 +221,7 @@ export default function TaskManagement() { fixed: "right" as const, render: (_: any, record: CollectionTask) => { return taskOperations(record).map((op) => { - const button = ( + return (