import React, { useState } from 'react'; import { Head, router } from '@inertiajs/react'; import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout'; import { PageProps } from '@/types/global'; import { Card, CardContent, CardHeader, CardTitle } from '@/Components/ui/card'; import { Button } from '@/Components/ui/button'; import { Input } from '@/Components/ui/input'; import { Label } from '@/Components/ui/label'; import { TrendingUp, Search, RotateCcw } from 'lucide-react'; import { RadioGroup, RadioGroupItem } from '@/Components/ui/radio-group'; import { cn } from '@/lib/utils'; import TreeView, { TraceabilityNode } from './Components/TreeView'; import { TraceabilitySummary } from './Components/TraceabilitySummary'; import { Can } from '@/Components/Permission/Can'; interface Props extends PageProps { search: { batch_number: string | null; direction: 'backward' | 'forward'; }; result: TraceabilityNode | null; } export default function TraceabilityIndex({ search, result }: Props) { const [batchNumber, setBatchNumber] = useState(search.batch_number || ''); const [direction, setDirection] = useState<'backward' | 'forward'>(search.direction || 'backward'); const [isSearching, setIsSearching] = useState(false); const handleSearch = (e: React.FormEvent) => { e.preventDefault(); if (!batchNumber.trim()) return; setIsSearching(true); router.get( route('inventory.traceability.index'), { batch_number: batchNumber.trim(), direction }, { preserveState: true, preserveScroll: true, onFinish: () => setIsSearching(false) } ); }; return (

批號溯源

透過批號追蹤產品的生產履歷,支援從成品追溯原料供應商(逆向),或從原料追查銷售去向(順向)。

查詢條件
setBatchNumber(e.target.value)} className="max-w-md w-full" />
setDirection(val)} className="flex space-x-6" >
{search.batch_number && (
{result ? ( <> ) : (

找不到符合的批號資料

請確認您輸入的批號「{search.batch_number}」是否正確存在於系統中。

)}
)}
); }