diff --git a/src/modules/mileage/MonitoringView.tsx b/src/modules/mileage/MonitoringView.tsx index 9ba4af9..258aeee 100644 --- a/src/modules/mileage/MonitoringView.tsx +++ b/src/modules/mileage/MonitoringView.tsx @@ -201,6 +201,14 @@ export default function MonitoringView() { loadFirstPage(); }, [loadFirstPage]); + // 区域级联:plate 选项收窄后,剔除已选但已不属于该区域的车牌 + useEffect(() => { + if (filterPlates.length === 0) return; + const valid = new Set(filterOptions.plates); + const next = filterPlates.filter(p => valid.has(p)); + if (next.length !== filterPlates.length) setFilterPlates(next); + }, [filterOptions.plates, filterPlates]); + // 下载当前筛选结果为 xlsx const handleDownload = useCallback(async () => { if (exporting) return; diff --git a/src/server/routes/mileage/monitoring.ts b/src/server/routes/mileage/monitoring.ts index 1947b20..d64b763 100644 --- a/src/server/routes/mileage/monitoring.ts +++ b/src/server/routes/mileage/monitoring.ts @@ -100,6 +100,12 @@ app.get('/', async (c) => { filters = buildDateFilters(allVehicles); // 重算筛选选项以匹配权限范围 } + // 区域级联:选中运营区域时,下游筛选选项(车牌等)只展示该区域车辆 + if (filterParams.region) { + const regionScope = allVehicles.filter(v => v.region === filterParams.region); + filters = buildDateFilters(regionScope); + } + const filtered = applyFilters(allVehicles, filterParams); const stats = {