From 8fffa141f4d0cb981ead4902acb5e9e9b42783c2 Mon Sep 17 00:00:00 2001 From: kkfluous Date: Wed, 1 Apr 2026 23:22:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=BD=A6=E7=89=8C?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=A4=B1=E6=95=88=EF=BC=8C=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E6=89=80=E6=9C=89=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 后端新增 plate 查询参数支持 - 前端将 filterPlate 传给 API 并加入依赖数组 - 所有筛选条件(部门/项目/主体/车牌/搜索/里程范围) 均正确传递到后端并触发数据刷新 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/modules/mileage/MonitoringView.tsx | 6 ++++-- src/modules/mileage/api.ts | 2 ++ src/server/routes/mileage.ts | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/mileage/MonitoringView.tsx b/src/modules/mileage/MonitoringView.tsx index d5c56f9..63a166d 100644 --- a/src/modules/mileage/MonitoringView.tsx +++ b/src/modules/mileage/MonitoringView.tsx @@ -133,6 +133,7 @@ export default function MonitoringView() { dept: filterDept !== 'All' ? filterDept : undefined, project: filterProject !== 'All' ? filterProject : undefined, entity: filterEntity !== 'All' ? filterEntity : undefined, + plate: filterPlate !== 'All' ? filterPlate : undefined, mileageMin: appliedMileageRange.min || undefined, mileageMax: appliedMileageRange.max || undefined, }).then(d => { @@ -143,7 +144,7 @@ export default function MonitoringView() { setPage(1); setHasMore(d.page < d.totalPages); }).catch(() => {}); - }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, appliedMileageRange]); + }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, filterPlate, appliedMileageRange]); // 加载更多 const loadMore = useCallback(() => { @@ -159,6 +160,7 @@ export default function MonitoringView() { dept: filterDept !== 'All' ? filterDept : undefined, project: filterProject !== 'All' ? filterProject : undefined, entity: filterEntity !== 'All' ? filterEntity : undefined, + plate: filterPlate !== 'All' ? filterPlate : undefined, mileageMin: appliedMileageRange.min || undefined, mileageMax: appliedMileageRange.max || undefined, }).then(d => { @@ -166,7 +168,7 @@ export default function MonitoringView() { setPage(nextPage); setHasMore(nextPage < d.totalPages); }).catch(() => {}).finally(() => setLoadingMore(false)); - }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, appliedMileageRange, page, loadingMore, hasMore]); + }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, filterPlate, appliedMileageRange, page, loadingMore, hasMore]); // 筛选/排序变化时重新加载 useEffect(() => { diff --git a/src/modules/mileage/api.ts b/src/modules/mileage/api.ts index 27a4709..dfd159f 100644 --- a/src/modules/mileage/api.ts +++ b/src/modules/mileage/api.ts @@ -18,6 +18,7 @@ export async function fetchMonitoring(params?: { customer?: string; project?: string; entity?: string; + plate?: string; mileageMin?: string; mileageMax?: string; }): Promise { @@ -31,6 +32,7 @@ export async function fetchMonitoring(params?: { if (params?.customer) query.set('customer', params.customer); if (params?.project) query.set('project', params.project); if (params?.entity) query.set('entity', params.entity); + if (params?.plate) query.set('plate', params.plate); if (params?.mileageMin) query.set('mileageMin', params.mileageMin); if (params?.mileageMax) query.set('mileageMax', params.mileageMax); const qs = query.toString(); diff --git a/src/server/routes/mileage.ts b/src/server/routes/mileage.ts index b04a1a4..a773947 100644 --- a/src/server/routes/mileage.ts +++ b/src/server/routes/mileage.ts @@ -156,6 +156,7 @@ app.get('/monitoring', (c) => { const entity = c.req.query('entity') || ''; const mileageMin = c.req.query('mileageMin') || ''; const mileageMax = c.req.query('mileageMax') || ''; + const plate = c.req.query('plate') || ''; let vehicles = monitoringCache.vehicles; @@ -172,6 +173,7 @@ app.get('/monitoring', (c) => { if (customer) vehicles = vehicles.filter(v => v.customer === customer); if (project) vehicles = vehicles.filter(v => v.project === project); if (entity) vehicles = vehicles.filter(v => v.entity === entity); + if (plate) vehicles = vehicles.filter(v => v.plate === plate); if (mileageMin) vehicles = vehicles.filter(v => v.dailyKm >= Number(mileageMin)); if (mileageMax) vehicles = vehicles.filter(v => v.dailyKm <= Number(mileageMax));