import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { useNavigate } from "react-router-dom"; import { ChevronRight, Image as ImageIcon } from "lucide-react"; import { getFines } from "@/api/driver"; import { fineStatusText, isOwed } from "@/lib/fineStatus"; import { formatDate, formatMoney } from "@/lib/format"; import { OperationIcon } from "@/components/operationIcon"; import { Spinner } from "@/components/Spinner"; /** * Штрафы водителя списком. * * Строка «Долг по штрафам −5 156 ₽» на балансе не отвечает на вопрос «за что», * и водитель идёт выяснять звонком. Здесь он видит каждое постановление, а в * карточке — фотографию с камеры. * * Долг в шапке берём из баланса 1С, а не суммой строк: постановление парк гасит * авансом, и по бумагам ГИБДД оно закрыто в тот же день — долг перед парком от * этого никуда не девается. Список без этой оговорки показывал бы «неоплаченных * нет» при −5 156 ₽ на главном экране. */ export function FinesPage() { const nav = useNavigate(); const [tab, setTab] = useState<"open" | "all">("open"); const { data, isLoading, isError, refetch } = useQuery({ queryKey: ["fines", tab], queryFn: () => getFines(tab), }); const items = data?.items ?? []; return (
{data ? data.debt !== 0 || data.open_count > 0 ? `Долг по штрафам ${formatMoney(data.debt)} · не погашено: ${data.open_count}` : "Долгов по штрафам нет" : " "}
Не удалось загрузить штрафы
{tab === "open" ? "Непогашенных штрафов нет" : "Штрафов не найдено"}
) : (