'use client'; import OrganizationDetailsModal from '@/components/OrganizationDetailsModal'; import { useState } from 'react'; import { PageLayout, Pagination, EmptyState } from '@/components/ui'; import OrganizationCreateModal from '@/components/OrganizationCreateModal'; import OrganizationEditModal from '@/components/OrganizationEditModal'; import { useOrganizationsData } from '@/hooks/useSWRData'; import { organizationsApi } from '@/lib/api/api-client'; import { RequireRole } from '@/lib/auth-context'; const KIND: Record = { operator: '✈️ Оператор', mro: '🔧 ТОиР', authority: '🏛️ Орган власти' }; export default function OrganizationsPage() { const [page, setPage] = useState(1); const [search, setSearch] = useState(''); const { data, isLoading, mutate } = useOrganizationsData({ q: search || undefined, page, per_page: 25 }); const [isCreateOpen, setIsCreateOpen] = useState(false); const [isEditOpen, setIsEditOpen] = useState(false); const [editingOrg, setEditingOrg] = useState(null); const orgs = data?.items || []; const handleCreate = async (d: any) => { try { await organizationsApi.create(d); mutate(); setIsCreateOpen(false); } catch (e: any) { alert(e.message); } }; const handleSave = async (d: any) => { if (!editingOrg?.id) return; try { await organizationsApi.update(editingOrg.id, d); mutate(); setIsEditOpen(false); } catch (e: any) { alert(e.message); } }; const handleDelete = async (id: string) => { if (!confirm('Удалить?')) return; try { await organizationsApi.delete(id); mutate(); } catch (e: any) { alert(e.message); } }; return ( { setSearch(e.target.value); setPage(1); }} className="input-field w-60" /> }> {isLoading ?
Загрузка...
: orgs.length > 0 ? (
{orgs.map((org: any) => (

{org.name}

{KIND[org.kind] || org.kind}{org.inn && ` · ИНН: ${org.inn}`}{org.address && ` · ${org.address}`}

))}
) : } setIsCreateOpen(false)} onCreate={handleCreate} /> setIsEditOpen(false)} organization={editingOrg} onSave={handleSave} />
); }