import { useEffect, useState } from 'react'; import { Table, Button, Space, Tag, Tooltip, Popconfirm, message, ConfigProvider } from 'antd'; import { ReloadOutlined, DeleteOutlined } from '@ant-design/icons'; import dayjs from 'dayjs'; import { tasksApi } from '../api/tasks'; import type { Task } from '../api/tasks'; function statusTag(fertig: number | null) { if (fertig === 1) return Fertig; if (fertig === 0) return Ausstehend; return Neu; } export default function TaskLogPage() { const [data, setData] = useState([]); const [loading, setLoading] = useState(false); const [deleting, setDeleting] = useState(false); const fetchData = async () => { setLoading(true); try { const tasks = await tasksApi.getAll(); setData(tasks || []); } catch { message.error('Task-Log konnte nicht geladen werden.'); } finally { setLoading(false); } }; useEffect(() => { fetchData(); const interval = setInterval(fetchData, 30000); return () => clearInterval(interval); }, []); const handleDeleteFertige = async () => { setDeleting(true); try { const result = await tasksApi.deleteFertige(); message.success(`${result.deleted} erledigte Task(s) gelöscht.`); await fetchData(); } catch { message.error('Fehler beim Löschen der erledigten Tasks.'); } finally { setDeleting(false); } }; const handleDeleteOne = async (taskId: string) => { try { await tasksApi.deleteOne(taskId); message.success('Task gelöscht.'); await fetchData(); } catch { message.error('Task konnte nicht gelöscht werden.'); } }; const columns = [ { title: 'Task-ID', dataIndex: 'TaskId', key: 'TaskId', width: 100, render: (id: string) => ( {id.slice(0, 8)}… ), }, { title: 'Interne Belegnr.', dataIndex: 'InterneBelegnummer', key: 'InterneBelegnummer', }, { title: 'Lieferant', dataIndex: 'Lieferant', key: 'Lieferant', render: (v: string | null) => v || '-', }, { title: 'Belegdatum', dataIndex: 'Belegdatum', key: 'Belegdatum', render: (v: string | null) => (v ? dayjs(v).format('DD.MM.YYYY') : '-'), }, { title: 'Eingangsdatum', dataIndex: 'Eingangsdatum', key: 'Eingangsdatum', render: (v: string | null) => (v ? dayjs(v).format('DD.MM.YYYY') : '-'), }, { title: 'Paperless-Dok.-ID', dataIndex: 'PaperlessDocumentID', key: 'PaperlessDocumentID', render: (v: number | null) => v ?? '-', }, { title: 'Status', dataIndex: 'Fertig', key: 'Fertig', render: (v: number | null) => statusTag(v), filters: [ { text: 'Fertig', value: 1 }, { text: 'Ausstehend', value: 0 }, { text: 'Neu', value: null as any }, ], onFilter: (value: any, record: Task) => record.Fertig === value, }, { title: '', key: 'actions', width: 60, render: (_: any, record: Task) => ( handleDeleteOne(record.TaskId)} okText="Löschen" cancelText="Abbrechen" okButtonProps={{ danger: true }} > ); }