'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { ChevronLeft, NotebookText } from 'lucide-react'; import Navbar from '@/components/Navbar'; import { api } from '@/lib/api'; import { WorkRecord } from '@/types'; const CURRENT_YEAR = new Date().getFullYear(); const YEAR_KEY = 'workRecordYear'; export default function WorkRecordsPage() { const router = useRouter(); const [year, setYear] = useState(() => { if (typeof window !== 'undefined') { return parseInt(localStorage.getItem(YEAR_KEY) || String(CURRENT_YEAR), 10); } return CURRENT_YEAR; }); const [records, setRecords] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { localStorage.setItem(YEAR_KEY, String(year)); void fetchRecords(); }, [year]); const fetchRecords = async () => { setLoading(true); setError(null); try { const res = await api.get(`/workrecords/?year=${year}`); setRecords(res.data); } catch (e) { console.error(e); setError('作業記録の読み込みに失敗しました。'); } finally { setLoading(false); } }; const moveToSource = (record: WorkRecord) => { if (record.spreading_session) { router.push(`/fertilizer/spreading?session=${record.spreading_session}`); return; } if (record.delivery_plan_id) { router.push(`/distribution/${record.delivery_plan_id}/edit`); } }; const years = Array.from({ length: 5 }, (_, i) => CURRENT_YEAR + 1 - i); return (

作業記録

{error && (
{error}
)}
{loading ? (
読み込み中...
) : records.length === 0 ? (
この年度の作業記録はまだありません。
) : ( {records.map((record) => ( ))}
作業日 種別 タイトル 参照先
{record.work_date} {record.work_type_display} {record.title} {record.spreading_session ? `散布実績 #${record.spreading_session}` : record.delivery_plan_name ? `${record.delivery_plan_name}` : '-'} {(record.spreading_session || record.delivery_plan_id) && ( )}
)}
); }