1- import { App , Button , Card , Popconfirm , Table , Tag , Tooltip } from "antd" ;
1+ import { App , Button , Card , Modal , Table , Tag , Tooltip } from "antd" ;
22import {
33 DeleteOutlined ,
44 PauseCircleOutlined ,
@@ -17,13 +17,24 @@ import { getStatusMap, mapCollectionTask } from "../collection.const";
1717import useFetchData from "@/hooks/useFetchData" ;
1818import { useNavigate } from "react-router" ;
1919import { useTranslation } from "react-i18next" ;
20- import { useEffect } from "react" ;
20+ import { useEffect , useState } from "react" ;
2121
2222export default function TaskManagement ( ) {
2323 const { message } = App . useApp ( ) ;
2424 const navigate = useNavigate ( ) ;
2525 const { t } = useTranslation ( ) ;
2626 const statusMap = getStatusMap ( t ) ;
27+
28+ // 删除确认弹窗状态
29+ const [ deleteModal , setDeleteModal ] = useState < {
30+ visible : boolean ;
31+ taskId : string ;
32+ taskName : string ;
33+ } > ( {
34+ visible : false ,
35+ taskId : "" ,
36+ taskName : "" ,
37+ } ) ;
2738 const filters = [
2839 {
2940 key : "status" ,
@@ -78,9 +89,18 @@ export default function TaskManagement() {
7889 const handleDeleteTask = async ( taskId : string ) => {
7990 await deleteTaskByIdUsingDelete ( taskId ) ;
8091 message . success ( t ( "dataCollection.taskManagement.messages.deleteSuccess" ) ) ;
92+ setDeleteModal ( { visible : false , taskId : "" , taskName : "" } ) ;
8193 fetchData ( ) ;
8294 } ;
8395
96+ const showDeleteConfirm = ( taskId : string , taskName : string ) => {
97+ setDeleteModal ( { visible : true , taskId, taskName } ) ;
98+ } ;
99+
100+ const handleCancelDelete = ( ) => {
101+ setDeleteModal ( { visible : false , taskId : "" , taskName : "" } ) ;
102+ } ;
103+
84104 const taskOperations = ( record : CollectionTask ) => {
85105 const isStopped = record . status === TaskStatus . STOPPED ;
86106 const startButton = {
@@ -110,13 +130,13 @@ export default function TaskManagement() {
110130 label : t ( "dataCollection.taskManagement.actions.delete" ) ,
111131 danger : true ,
112132 icon : < DeleteOutlined /> ,
113- confirm : {
133+ modal : {
114134 title : t ( "dataCollection.taskManagement.messages.deleteConfirm" ) ,
115135 okText : t ( "dataCollection.taskManagement.messages.confirmDelete" ) ,
116136 cancelText : t ( "dataCollection.taskManagement.messages.cancel" ) ,
117137 okType : "danger" ,
118138 } ,
119- onClick : ( ) => handleDeleteTask ( record . id ) ,
139+ onClick : ( ) => showDeleteConfirm ( record . id , record . name ) ,
120140 } ,
121141 ] ;
122142 } ;
@@ -203,7 +223,7 @@ export default function TaskManagement() {
203223 fixed : "right" as const ,
204224 render : ( _ : any , record : CollectionTask ) => {
205225 return taskOperations ( record ) . map ( ( op ) => {
206- const button = (
226+ return (
207227 < Tooltip key = { op . key } title = { op . label } >
208228 < Button
209229 type = "text"
@@ -213,23 +233,6 @@ export default function TaskManagement() {
213233 />
214234 </ Tooltip >
215235 ) ;
216- if ( op . confirm ) {
217- return (
218- < Popconfirm
219- key = { op . key }
220- title = { op . confirm . title }
221- okText = { op . confirm . okText }
222- cancelText = { op . confirm . cancelText }
223- okType = { op . danger ? "danger" : "primary" }
224- onConfirm = { ( ) => op . onClick ( ) }
225- >
226- < Tooltip key = { op . key } title = { op . label } >
227- < Button type = "text" icon = { op . icon } danger = { op ?. danger } />
228- </ Tooltip >
229- </ Popconfirm >
230- ) ;
231- }
232- return button ;
233236 } ) ;
234237 } ,
235238 } ,
@@ -279,6 +282,23 @@ export default function TaskManagement() {
279282 scroll = { { x : "max-content" , y : "calc(100vh - 25rem)" } }
280283 />
281284 </ Card >
285+
286+ { /* 删除确认弹窗 */ }
287+ < Modal
288+ title = { t ( "dataCollection.taskManagement.messages.deleteConfirm" ) }
289+ open = { deleteModal . visible }
290+ onOk = { ( ) => handleDeleteTask ( deleteModal . taskId ) }
291+ onCancel = { handleCancelDelete }
292+ okType = "danger"
293+ okText = { t ( "dataCollection.taskManagement.messages.confirmDelete" ) }
294+ cancelText = { t ( "dataCollection.taskManagement.messages.cancel" ) }
295+ >
296+ < p >
297+ { t ( "dataCollection.taskManagement.messages.deleteConfirmMessage" , {
298+ taskName : deleteModal . taskName ,
299+ } ) }
300+ </ p >
301+ </ Modal >
282302 </ div >
283303 ) ;
284304}
0 commit comments