fix(platform): keep vehicle list source filter

This commit is contained in:
lingniu
2026-07-04 06:38:06 +08:00
parent 5234eb5542
commit c70af50cec
3 changed files with 100 additions and 7 deletions

View File

@@ -20,7 +20,9 @@ export default function App() {
const [analysisVin, setAnalysisVin] = useState(initialVehicleKey);
const [activeProtocol, setActiveProtocol] = useState(initialRoute.protocol ?? '');
const [historyTab, setHistoryTab] = useState(initialRoute.filters?.tab ?? 'location');
const [vehicleFilters, setVehicleFilters] = useState<Record<string, string>>(initialRoute.filters ?? {});
const [vehicleFilters, setVehicleFilters] = useState<Record<string, string>>(
initialRoute.page === 'vehicles' ? vehicleFiltersFromRoute(initialRoute) : {}
);
const [qualityFilters, setQualityFilters] = useState<Record<string, string>>(
initialRoute.page === 'quality' ? qualityFiltersFromRoute(initialRoute) : {}
);
@@ -89,7 +91,7 @@ export default function App() {
}
}
if (route.page === 'vehicles') {
setVehicleFilters(route.filters ?? {});
setVehicleFilters(vehicleFiltersFromRoute(route));
}
if (route.page === 'quality') {
setQualityFilters(qualityFiltersFromRoute(route));
@@ -122,18 +124,27 @@ export default function App() {
replaceQualityHash(qualityFilters);
return;
}
replaceHash(page, undefined, undefined, page === 'vehicles' ? vehicleFilters : undefined);
if (page === 'vehicles') {
replaceVehicleHash(vehicleFilters);
return;
}
replaceHash(page);
};
const openVehicles = (filters: Record<string, string> = {}) => {
setVehicleFilters(filters);
setActivePage('vehicles');
replaceHash('vehicles', undefined, undefined, filters);
replaceVehicleHash(filters);
};
const updateVehicleFilters = (filters: Record<string, string> = {}) => {
setVehicleFilters(filters);
replaceHash('vehicles', undefined, undefined, filters);
replaceVehicleHash(filters);
};
const replaceVehicleHash = (filters: Record<string, string> = {}) => {
const { keyword, protocol, ...restFilters } = filters;
replaceHash('vehicles', keyword, protocol, restFilters);
};
const replaceQualityHash = (filters: Record<string, string> = {}) => {
@@ -247,6 +258,14 @@ function qualityFiltersFromRoute(route: ReturnType<typeof parseAppHash>): Record
};
}
function vehicleFiltersFromRoute(route: ReturnType<typeof parseAppHash>): Record<string, string> {
return {
...(route.keyword ? { keyword: route.keyword } : {}),
...(route.protocol ? { protocol: route.protocol } : {}),
...(route.filters ?? {})
};
}
function serviceStatusFromOverview(overview: VehicleServiceOverview): VehicleServiceStatus {
const sourceCount = overview.sourceCount;
const onlineSourceCount = overview.onlineSourceCount;