// CSV 批量导入用户弹窗(下载模板 + 文件选择 + 预览 + 导入结果) // Logan.Li import { Button } from '@/components/ui/button'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Upload, Download, CheckCircle, XCircle } from 'lucide-react'; import { userApi } from '@/services/api'; interface CsvImportDialogProps { importDialogOpen: 'csv' | 'ldap' | null; setImportDialogOpen: (v: 'csv' | 'ldap' | null) => void; importPreview: any[]; setImportPreview: ( p: any[]) => void; importing: boolean; importResult: any; setImportResult: ( r: any) => void; handleCsvUpload: (e: React.ChangeEvent) => void; handleBatchImport: () => void; } // CsvImportDialog 展示 CSV 导入流程:上传 → 预览 → 确认 → 结果 // Logan.Li export function CsvImportDialog({ importDialogOpen, setImportDialogOpen, importPreview, setImportPreview, importing, importResult, setImportResult, handleCsvUpload, handleBatchImport, }: CsvImportDialogProps) { return ( !v && setImportDialogOpen(null)}> 批量导入用户(CSV) 上传 CSV 文件批量创建用户。请先下载模板,按格式填写后上传。 {!importResult ? ( <>
{importPreview.length > 0 && (
预览:{importPreview.length} 条数据
用户名 昵称 邮箱 手机 {importPreview.slice(0, 5).map((u, i) => ( {u.username} {u.nickname} {u.email} {u.phone} ))} {importPreview.length > 5 && ( 还有 {importPreview.length - 5} 条... )}
)}
) : (
{importResult.code === 200 ? ( ) : ( )} {importResult.message}
{importResult.errors?.length > 0 && (
{importResult.errors.map((err: string, i: number) => (
{err}
))}
)}
)}
); }