getKey(); if (empty($ids)) { return $this->response()->error('请选择要取消的任务'); } $reason = $request->input('reason', '批量取消操作'); $successCount = 0; $failCount = 0; $errors = []; foreach ($ids as $taskId) { try { $result = CleanupService::cancelTask($taskId, $reason); if ($result['success']) { $successCount++; } else { $failCount++; $errors[] = "任务 {$taskId}: " . $result['message']; } } catch (\Exception $e) { $failCount++; $errors[] = "任务 {$taskId}: " . $e->getMessage(); } } $message = "成功取消 {$successCount} 个任务"; if ($failCount > 0) { $message .= ",失败 {$failCount} 个"; } $response = $this->response()->success($message)->refresh(); if (!empty($errors)) { $errorDetail = implode('
', array_slice($errors, 0, 5)); if (count($errors) > 5) { $errorDetail .= '
...还有 ' . (count($errors) - 5) . ' 个错误'; } $response->detail($errorDetail); } return $response; } catch (\Exception $e) { return $this->response() ->error('批量取消失败:' . $e->getMessage()); } } /** * 确认对话框 */ public function confirm() { return [ '确认批量取消任务?', '⚠️ 任务取消后无法恢复,已完成的清理操作不会回滚!', [ 'reason' => [ 'type' => 'textarea', 'label' => '取消原因', 'placeholder' => '请输入取消原因(可选)', 'rows' => 3, ] ] ]; } }