diff --git a/src/components/delete-modal/index.tsx b/src/components/delete-modal/index.tsx index 15d1d58e..8fd42ece 100644 --- a/src/components/delete-modal/index.tsx +++ b/src/components/delete-modal/index.tsx @@ -73,10 +73,25 @@ const DeleteModal: FC = forwardRef((props, ref) => { }; const handleOk = async () => { - await config.onOk?.(); - message.success(intl.formatMessage({ id: 'common.message.success' })); - setVisible(false); - restoreScrollHeight(); + try { + const res = await config.onOk?.(); + const isArray = Array.isArray(res); + if (isArray) { + const allSuccess = res.every( + (item: any) => item?.status === 'fulfilled' + ); + if (allSuccess) { + message.success(intl.formatMessage({ id: 'common.message.success' })); + } + } else { + message.success(intl.formatMessage({ id: 'common.message.success' })); + } + } catch (error) { + // Handle error if needed + } finally { + setVisible(false); + restoreScrollHeight(); + } }; return ( diff --git a/src/hooks/use-table-fetch.ts b/src/hooks/use-table-fetch.ts index b999f6b0..c57c56cc 100644 --- a/src/hooks/use-table-fetch.ts +++ b/src/hooks/use-table-fetch.ts @@ -199,13 +199,19 @@ export default function useTableFetch(options: { ...options, async onOk() { if (!deleteAPI) return; - await handleBatchRequest(rowSelection.selectedRowKeys, (id) => - deleteAPI(id, { - ...modalRef.current?.configuration - }) + const successIds: any[] = []; + const res = await handleBatchRequest( + rowSelection.selectedRowKeys, + async (id: any) => { + await deleteAPI(id, { + ...modalRef.current?.configuration + }); + successIds.push(id); + } ); - rowSelection.clearSelections(); + rowSelection.removeSelectedKeys(successIds); fetchData(); + return res; } }); }; diff --git a/src/pages/llmodels/components/table-list.tsx b/src/pages/llmodels/components/table-list.tsx index fa5e2189..2081e7bf 100644 --- a/src/pages/llmodels/components/table-list.tsx +++ b/src/pages/llmodels/components/table-list.tsx @@ -343,11 +343,18 @@ const Models: React.FC = ({ operation: 'common.delete.confirm', selection: true, async onOk() { - await handleBatchRequest(rowSelection.selectedRowKeys, deleteModel); - rowSelection.clearSelections(); - removeExpandedRowKey(rowSelection.selectedRowKeys); + const successIds: any[] = []; + const res = await handleBatchRequest( + rowSelection.selectedRowKeys, + async (id: any) => { + await deleteModel(id); + successIds.push(id); + } + ); + rowSelection.removeSelectedKeys(successIds); handleDeleteSuccess(); handleSearch(); + return res; } }); }; diff --git a/src/utils/index.ts b/src/utils/index.ts index 01baac82..7c3be03a 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -18,7 +18,7 @@ export const handleBatchRequest = async ( list: any[], fn: (args: any) => void ) => { - return Promise.all(list.map((item) => fn(item))); + return Promise.allSettled(list.map((item) => fn(item))); }; export const convertFileSize = (