From 2469da310d7fc76697f3d185a257114e32f7504f Mon Sep 17 00:00:00 2001 From: kkfluous Date: Wed, 1 Apr 2026 23:14:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8C=E7=A8=8B=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E6=8E=A5=E5=85=A5=E5=90=8E=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 后端支持 mileageMin/mileageMax 查询参数 - 前端点击"完成筛选"时将里程范围提交到后端 - "重置所有"同时清除已应用的里程范围 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/modules/mileage/MonitoringView.tsx | 15 ++++++++++++--- src/modules/mileage/api.ts | 4 ++++ src/server/routes/mileage.ts | 4 ++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/modules/mileage/MonitoringView.tsx b/src/modules/mileage/MonitoringView.tsx index f9e9e4d..52f6e82 100644 --- a/src/modules/mileage/MonitoringView.tsx +++ b/src/modules/mileage/MonitoringView.tsx @@ -104,6 +104,7 @@ export default function MonitoringView() { const [filterEntity, setFilterEntity] = useState('All'); const [filterRegionCode, setFilterRegionCode] = useState('All'); const [filterMileageRange, setFilterMileageRange] = useState({ min: '', max: '' }); + const [appliedMileageRange, setAppliedMileageRange] = useState({ min: '', max: '' }); const [vehicles, setVehicles] = useState([]); const [stats, setStats] = useState({ totalToday: 0, totalAll: 0, onlineCount: 0, vehicleCount: 0 }); @@ -132,6 +133,8 @@ export default function MonitoringView() { dept: filterDept !== 'All' ? filterDept : undefined, project: filterProject !== 'All' ? filterProject : undefined, entity: filterEntity !== 'All' ? filterEntity : undefined, + mileageMin: appliedMileageRange.min || undefined, + mileageMax: appliedMileageRange.max || undefined, }).then(d => { setVehicles(d.vehicles); setStats(d.stats); @@ -140,7 +143,7 @@ export default function MonitoringView() { setPage(1); setHasMore(d.page < d.totalPages); }).catch(() => {}); - }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity]); + }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, appliedMileageRange]); // 加载更多 const loadMore = useCallback(() => { @@ -156,12 +159,14 @@ export default function MonitoringView() { dept: filterDept !== 'All' ? filterDept : undefined, project: filterProject !== 'All' ? filterProject : undefined, entity: filterEntity !== 'All' ? filterEntity : undefined, + mileageMin: appliedMileageRange.min || undefined, + mileageMax: appliedMileageRange.max || undefined, }).then(d => { setVehicles(prev => [...prev, ...d.vehicles]); setPage(nextPage); setHasMore(nextPage < d.totalPages); }).catch(() => {}).finally(() => setLoadingMore(false)); - }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, page, loadingMore, hasMore]); + }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, appliedMileageRange, page, loadingMore, hasMore]); // 筛选/排序变化时重新加载 useEffect(() => { @@ -684,13 +689,17 @@ export default function MonitoringView() { setFilterEntity('All'); setFilterRegionCode('All'); setFilterMileageRange({ min: '', max: '' }); + setAppliedMileageRange({ min: '', max: '' }); }} className="text-[10px] font-bold text-slate-400 hover:text-slate-600" > 重置所有