feat(platform): open analysis from vehicle detail

This commit is contained in:
lingniu
2026-07-03 23:37:12 +08:00
parent 37ca94ab5f
commit 532b0d9aec
4 changed files with 57 additions and 22 deletions

View File

@@ -32,12 +32,12 @@ function canOpenVehicle(vin?: string) {
return Boolean(value && value !== 'unknown');
}
export function Mileage({ onOpenVehicle }: { onOpenVehicle: (vin: string) => void }) {
export function Mileage({ initialVin, onOpenVehicle }: { initialVin: string; onOpenVehicle: (vin: string) => void }) {
const [rows, setRows] = useState<DailyMileageRow[]>([]);
const [summary, setSummary] = useState<MileageSummary>(emptySummary);
const [loading, setLoading] = useState(true);
const [summaryLoading, setSummaryLoading] = useState(true);
const [filters, setFilters] = useState<Record<string, string>>({});
const [filters, setFilters] = useState<Record<string, string>>({ vin: initialVin });
const [pagination, setPagination] = useState({ currentPage: 1, pageSize: 20, total: 0 });
const loadSummary = (values: Record<string, string> = filters) => {
@@ -60,15 +60,17 @@ export function Mileage({ onOpenVehicle }: { onOpenVehicle: (vin: string) => voi
};
useEffect(() => {
loadSummary({});
load({}, 1, pagination.pageSize);
}, []);
const nextFilters = { vin: initialVin };
setFilters(nextFilters);
loadSummary(nextFilters);
load(nextFilters, 1, pagination.pageSize);
}, [initialVin]);
return (
<div className="vp-page">
<PageHeader title="里程分析" description="每日里程、区间里程和异常差值分析" />
<Card bordered>
<Form layout="horizontal" onSubmit={(values) => {
<Form key={filters.vin ?? ''} initValues={filters} layout="horizontal" onSubmit={(values) => {
const nextFilters = values as Record<string, string>;
setFilters(nextFilters);
loadSummary(nextFilters);
@@ -85,9 +87,10 @@ export function Mileage({ onOpenVehicle }: { onOpenVehicle: (vin: string) => voi
<Space>
<Button htmlType="submit" theme="solid" type="primary"></Button>
<Button onClick={() => {
setFilters({});
loadSummary({});
load({}, 1, pagination.pageSize);
const nextFilters = { vin: initialVin };
setFilters(nextFilters);
loadSummary(nextFilters);
load(nextFilters, 1, pagination.pageSize);
}}></Button>
</Space>
</Form>