fix: 修复车牌搜索失效,确保所有筛选条件正常
- 后端新增 plate 查询参数支持 - 前端将 filterPlate 传给 API 并加入依赖数组 - 所有筛选条件(部门/项目/主体/车牌/搜索/里程范围) 均正确传递到后端并触发数据刷新 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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(() => {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user