import { useState } from 'react'; import { AnimatePresence, motion } from 'motion/react'; import { ArrowUpDown, Calendar, Search, Truck, X } from 'lucide-react'; import Blur from '../../../components/Blur'; import type { TargetVehicle } from '../types'; import { filterAndSortTargetVehicles, fmtKm, totalTodayMileage, type VehicleSort, } from './model'; interface AllVehiclesPanelProps { targetId: number | null; targetName: string; vehicles: TargetVehicle[]; date: string; loading: boolean; onDateChange: (date: string) => void; onClose: () => void; } export default function AllVehiclesPanel({ targetId, targetName, vehicles, date, loading, onDateChange, onClose, }: AllVehiclesPanelProps) { const [search, setSearch] = useState(''); const [sort, setSort] = useState('desc'); const filteredVehicles = filterAndSortTargetVehicles(vehicles, search, sort); const totalKm = totalTodayMileage(filteredVehicles); return ( {targetId !== null && ( <>

{targetName}

车辆实时明细清单

setSearch(event.target.value)} className="w-full pl-9 pr-3 py-2 bg-slate-50 border border-slate-100 rounded-xl text-xs font-bold focus:outline-none focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 transition-all" />
onDateChange(event.target.value)} className="pl-8 pr-2 py-2 bg-slate-50 border border-slate-100 rounded-xl text-xs font-bold text-slate-700 focus:outline-none focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 transition-all w-[130px]" />
{loading ? '加载中...' : `${filteredVehicles.length} 辆 · 合计 ${fmtKm(totalKm)} km`}
{filteredVehicles.map(vehicle => (
{vehicle.plateNumber} {vehicle.isOnline ? '在线' : '离线'}
{vehicle.rentStatus || ''}{vehicle.department ? ` · ${vehicle.department.replace('业务', '')}` : ''} {vehicle.customer || '-'}
{vehicle.todayMileage.toLocaleString()} KM
累计: {fmtKm(vehicle.totalMileage || 0)} km
))}
)} ); }