import { Edit, Trash2, HardDrive, FileText, Users } from "lucide-react"; import { Company } from "@/types/company"; import { Button } from "@/components/ui/button"; import { ResponsiveDataView, RDVColumn, RDVCardField } from "@/components/common/ResponsiveDataView"; import { useRouter } from "next/navigation"; interface CompanyTableProps { companies: Company[]; isLoading: boolean; onEdit: (company: Company) => void; onDelete: (company: Company) => void; } /** * 회사 목록 테이블 컴포넌트 */ export function CompanyTable({ companies, isLoading, onEdit, onDelete }: CompanyTableProps) { const router = useRouter(); // 부서 관리 페이지로 이동 const handleManageDepartments = (company: Company) => { router.push(`/admin/userMng/companyList/${company.company_code}/departments`); }; // 디스크 사용량 포맷팅 함수 const formatDiskUsage = (company: Company) => { if (!company.diskUsage) { return (
정보 없음
); } const { fileCount, totalSizeMB } = company.diskUsage; return (
{fileCount}개 파일
{totalSizeMB.toFixed(1)} MB
); }; // 데스크톱 테이블 컬럼 정의 const columns: RDVColumn[] = [ { key: "company_code", label: "회사코드", width: "150px", render: (value) => {value}, }, { key: "company_name", label: "회사명", render: (value) => {value}, }, { key: "writer", label: "등록자", width: "200px", }, { key: "diskUsage", label: "디스크 사용량", hideOnMobile: true, render: (_value, row) => formatDiskUsage(row), }, ]; // 모바일 카드 필드 정의 const cardFields: RDVCardField[] = [ { label: "작성자", render: (company) => {company.writer}, }, { label: "디스크 사용량", render: (company) => formatDiskUsage(company), }, ]; return ( data={companies} columns={columns} keyExtractor={(c) => c.regdate + c.company_code} isLoading={isLoading} emptyMessage="등록된 회사가 없습니다." skeletonCount={10} cardTitle={(c) => c.company_name} cardSubtitle={(c) => {c.company_code}} cardFields={cardFields} actionsLabel="작업" actionsWidth="180px" renderActions={(company) => ( <> )} /> ); }