fix: 修复车牌搜索失效,确保所有筛选条件正常

- 后端新增 plate 查询参数支持
- 前端将 filterPlate 传给 API 并加入依赖数组
- 所有筛选条件(部门/项目/主体/车牌/搜索/里程范围)
  均正确传递到后端并触发数据刷新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
kkfluous
2026-04-01 23:22:12 +08:00
parent cb620e5101
commit 8fffa141f4
3 changed files with 8 additions and 2 deletions

View File

@@ -133,6 +133,7 @@ export default function MonitoringView() {
dept: filterDept !== 'All' ? filterDept : undefined, dept: filterDept !== 'All' ? filterDept : undefined,
project: filterProject !== 'All' ? filterProject : undefined, project: filterProject !== 'All' ? filterProject : undefined,
entity: filterEntity !== 'All' ? filterEntity : undefined, entity: filterEntity !== 'All' ? filterEntity : undefined,
plate: filterPlate !== 'All' ? filterPlate : undefined,
mileageMin: appliedMileageRange.min || undefined, mileageMin: appliedMileageRange.min || undefined,
mileageMax: appliedMileageRange.max || undefined, mileageMax: appliedMileageRange.max || undefined,
}).then(d => { }).then(d => {
@@ -143,7 +144,7 @@ export default function MonitoringView() {
setPage(1); setPage(1);
setHasMore(d.page < d.totalPages); setHasMore(d.page < d.totalPages);
}).catch(() => {}); }).catch(() => {});
}, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, appliedMileageRange]); }, [sortBy, sortOrder, searchTerm, filterDept, filterProject, filterEntity, filterPlate, appliedMileageRange]);
// 加载更多 // 加载更多
const loadMore = useCallback(() => { const loadMore = useCallback(() => {
@@ -159,6 +160,7 @@ export default function MonitoringView() {
dept: filterDept !== 'All' ? filterDept : undefined, dept: filterDept !== 'All' ? filterDept : undefined,
project: filterProject !== 'All' ? filterProject : undefined, project: filterProject !== 'All' ? filterProject : undefined,
entity: filterEntity !== 'All' ? filterEntity : undefined, entity: filterEntity !== 'All' ? filterEntity : undefined,
plate: filterPlate !== 'All' ? filterPlate : undefined,
mileageMin: appliedMileageRange.min || undefined, mileageMin: appliedMileageRange.min || undefined,
mileageMax: appliedMileageRange.max || undefined, mileageMax: appliedMileageRange.max || undefined,
}).then(d => { }).then(d => {
@@ -166,7 +168,7 @@ export default function MonitoringView() {
setPage(nextPage); setPage(nextPage);
setHasMore(nextPage < d.totalPages); setHasMore(nextPage < d.totalPages);
}).catch(() => {}).finally(() => setLoadingMore(false)); }).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(() => { useEffect(() => {

View File

@@ -18,6 +18,7 @@ export async function fetchMonitoring(params?: {
customer?: string; customer?: string;
project?: string; project?: string;
entity?: string; entity?: string;
plate?: string;
mileageMin?: string; mileageMin?: string;
mileageMax?: string; mileageMax?: string;
}): Promise<MonitoringData> { }): Promise<MonitoringData> {
@@ -31,6 +32,7 @@ export async function fetchMonitoring(params?: {
if (params?.customer) query.set('customer', params.customer); if (params?.customer) query.set('customer', params.customer);
if (params?.project) query.set('project', params.project); if (params?.project) query.set('project', params.project);
if (params?.entity) query.set('entity', params.entity); 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?.mileageMin) query.set('mileageMin', params.mileageMin);
if (params?.mileageMax) query.set('mileageMax', params.mileageMax); if (params?.mileageMax) query.set('mileageMax', params.mileageMax);
const qs = query.toString(); const qs = query.toString();

View File

@@ -156,6 +156,7 @@ app.get('/monitoring', (c) => {
const entity = c.req.query('entity') || ''; const entity = c.req.query('entity') || '';
const mileageMin = c.req.query('mileageMin') || ''; const mileageMin = c.req.query('mileageMin') || '';
const mileageMax = c.req.query('mileageMax') || ''; const mileageMax = c.req.query('mileageMax') || '';
const plate = c.req.query('plate') || '';
let vehicles = monitoringCache.vehicles; let vehicles = monitoringCache.vehicles;
@@ -172,6 +173,7 @@ app.get('/monitoring', (c) => {
if (customer) vehicles = vehicles.filter(v => v.customer === customer); if (customer) vehicles = vehicles.filter(v => v.customer === customer);
if (project) vehicles = vehicles.filter(v => v.project === project); if (project) vehicles = vehicles.filter(v => v.project === project);
if (entity) vehicles = vehicles.filter(v => v.entity === entity); 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 (mileageMin) vehicles = vehicles.filter(v => v.dailyKm >= Number(mileageMin));
if (mileageMax) vehicles = vehicles.filter(v => v.dailyKm <= Number(mileageMax)); if (mileageMax) vehicles = vehicles.filter(v => v.dailyKm <= Number(mileageMax));