ready(), 503, '供应商资料尚未完成首次同步,暂时不能导出。'); $filters = $page->filters($request->query()); return response()->streamDownload(static function () use ($repository, $filters): void { $csv = fopen('php://output', 'w'); fputs($csv, "\xEF\xBB\xBF"); fputcsv($csv, array_values(SupplierManagementMirrorRepository::COLUMNS)); foreach ($repository->exportRows($filters) as $row) { $values = []; foreach (array_keys(SupplierManagementMirrorRepository::COLUMNS) as $column) { $value = (string) ($row->{$column} ?? ''); if ($column === 'coopersgn') $value = ['1' => '合作', '2' => '不合作'][$value] ?? '未维护'; // Excel 不能执行供应商提供的公式文本,且长编码保留为文本。 if (preg_match('/^[=+\-@\t\r\n]/', ltrim($value)) || preg_match('/^\d{12,}$/', $value)) $value = "'" . $value; $values[] = $value; } fputcsv($csv, $values); } fclose($csv); }, 'supplier_management_' . now()->format('Ymd_His') . '.csv', ['Content-Type' => 'text/csv; charset=UTF-8', 'Cache-Control' => 'private, no-store']); } }