diff --git a/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.test.tsx b/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.test.tsx
index 1e930dd4..501efd50 100644
--- a/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.test.tsx
+++ b/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.test.tsx
@@ -46,6 +46,9 @@ test('renders only the desktop matrix with dates as columns and a period total',
expect(screen.getAllByText('7/13').length).toBeGreaterThan(0);
expect(screen.getAllByText('7/14').length).toBeGreaterThan(0);
expect(screen.getAllByText('粤A12345').length).toBeGreaterThan(0);
+ expect(screen.getByRole('heading', { name: '里程范围', level: 5 })).toBeInTheDocument();
+ expect(screen.getByText('车牌、自然日与里程数据源策略')).toBeInTheDocument();
+ expect(screen.getByText('1 辆 · 2 天').closest('.semi-tag')).toBeInTheDocument();
expect(screen.queryByText('当日起始里程')).not.toBeInTheDocument();
expect(screen.queryByText('数据来源')).not.toBeInTheDocument();
expect(screen.queryByRole('img', { name: '每日行驶里程趋势图' })).not.toBeInTheDocument();
diff --git a/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.tsx b/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.tsx
index 4cad7f93..dfd271be 100644
--- a/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.tsx
+++ b/vehicle-data-platform/apps/web/src/v2/pages/StatisticsPage.tsx
@@ -9,10 +9,10 @@ import { createMileageExportStream, type MileageExportStream } from '../domain/m
import { formatZhNumber } from '../domain/formatters';
import { InlineError, PanelEmpty, PanelLoading } from '../shared/AsyncState';
import { MonitorReturnBar } from '../shared/MonitorReturnBar';
-import { MobileFilterToggle } from '../shared/MobileFilterToggle';
import { TablePagination } from '../shared/TablePagination';
import { VehicleCandidateList } from '../shared/VehicleCandidateList';
import { mergeVehicleCandidates } from '../shared/vehicleCandidates';
+import { WorkspaceFilterPanel } from '../shared/WorkspaceFilterPanel';
import { WorkspacePanelHeader } from '../shared/WorkspacePanelHeader';
import { QUERY_MEMORY, retainPreviousPageWithinScope } from '../queryPolicy';
import { monitorReturnFromParams, preserveMonitorReturn } from '../routing/monitorContext';
@@ -486,8 +486,17 @@ export default function StatisticsPage() {
return
-
- setFiltersCollapsed((value) => !value)} />
+ setFiltersCollapsed((value) => !value)}
+ >
{validationError || criteriaError ? {validationError || criteriaError}
: null}
-
+
{statistics.isError || mileage.isError || fleetVehicles.isError ?
{ statistics.refetch(); mileage.refetch(); if (!hasVehicles) fleetVehicles.refetch(); }} /> : null}
{hasVehicles ? `${totalVehicles} 辆` : `${displayVehicles.length} / ${totalVehicles} 辆`}{dates.length} 个自然日}
actionsClassName="v2-mileage-result-actions"
actions={<>} onClick={() => { statistics.refetch(); mileage.refetch(); if (!hasVehicles) fleetVehicles.refetch(); }} disabled={refreshing}>{refreshing ? '更新中' : '刷新'} : } onClick={isExporting ? cancelExport : exportExcel} disabled={!totalVehicles || Boolean(criteriaError)}>{isExporting ? '取消导出' : '导出 Excel'}>}
/>
diff --git a/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx b/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx
index 5ad359d6..93135ff5 100644
--- a/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx
+++ b/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx
@@ -234,7 +234,7 @@ const TrackRail = memo(function TrackRail({ draft, track, loading, activeStopInd
className="v2-track-result-header"
title={track ? track.plate || track.vin : '轨迹明细'}
description={track ? track.vin : '停留、事件与行程证据'}
- meta={track ? `${number(track.summary.distanceKm)} km` : undefined}
+ meta={{track ? `${number(track.summary.distanceKm)} km` : '等待查询'}}
/>
diff --git a/vehicle-data-platform/apps/web/src/v2/pages/VehiclePage.tsx b/vehicle-data-platform/apps/web/src/v2/pages/VehiclePage.tsx
index 6cc8259f..9cc329d3 100644
--- a/vehicle-data-platform/apps/web/src/v2/pages/VehiclePage.tsx
+++ b/vehicle-data-platform/apps/web/src/v2/pages/VehiclePage.tsx
@@ -146,7 +146,7 @@ function VehicleSearch() {
{candidates.data ? `当前显示 ${formatZhNumber(quickVehicles.length)} 辆` : '授权范围'}}
/>
{candidates.isFetching && !candidates.data
? 正在读取授权车辆…
diff --git a/vehicle-data-platform/apps/web/src/v2/productionEntry.test.ts b/vehicle-data-platform/apps/web/src/v2/productionEntry.test.ts
index 2ee46d22..ff2a0d8d 100644
--- a/vehicle-data-platform/apps/web/src/v2/productionEntry.test.ts
+++ b/vehicle-data-platform/apps/web/src/v2/productionEntry.test.ts
@@ -310,7 +310,7 @@ describe('V2 production entry', () => {
expect(corePageSources.TrackPage).not.toContain(' {
);
+ expect(screen.getByRole('heading', { name: '事件筛选', level: 5 })).toBeInTheDocument();
expect(screen.getByText('按关键词与状态收窄范围')).toBeInTheDocument();
expect(screen.getByText('2 项已启用')).toBeInTheDocument();
expect(screen.getByRole('button', { name: '修改事件筛选:已启用 2 项' })).toHaveAttribute('aria-expanded', 'false');
diff --git a/vehicle-data-platform/apps/web/src/v2/shared/WorkspaceFilterPanel.tsx b/vehicle-data-platform/apps/web/src/v2/shared/WorkspaceFilterPanel.tsx
index df8a81bb..2b1f86df 100644
--- a/vehicle-data-platform/apps/web/src/v2/shared/WorkspaceFilterPanel.tsx
+++ b/vehicle-data-platform/apps/web/src/v2/shared/WorkspaceFilterPanel.tsx
@@ -3,7 +3,7 @@ import { Card, Tag, Typography } from '@douyinfe/semi-ui';
import type { ComponentProps, ReactNode } from 'react';
import { MobileFilterToggle } from './MobileFilterToggle';
-const { Text } = Typography;
+const { Text, Title } = Typography;
type WorkspaceFilterPanelProps = {
title?: string;
@@ -48,7 +48,7 @@ export function WorkspaceFilterPanel({
- {title}
+ {title}
{description}
{status}
diff --git a/vehicle-data-platform/apps/web/src/v2/styles/workspace.css b/vehicle-data-platform/apps/web/src/v2/styles/workspace.css
index 6790cf71..4572a14c 100644
--- a/vehicle-data-platform/apps/web/src/v2/styles/workspace.css
+++ b/vehicle-data-platform/apps/web/src/v2/styles/workspace.css
@@ -435,6 +435,30 @@
white-space: nowrap;
}
+.v2-workspace-panel-meta > .semi-tag,
+.v2-workspace-result-meta > .semi-tag {
+ min-height: 24px;
+ margin: 0;
+ border-radius: 999px;
+ padding-inline: 8px;
+ font-size: 10px;
+ font-variant-numeric: tabular-nums;
+ font-weight: 650;
+}
+
+.v2-workspace-result-meta {
+ display: inline-flex;
+ min-width: 0;
+ align-items: center;
+ gap: 7px;
+}
+
+.v2-workspace-result-meta > span {
+ color: #748398;
+ font-size: 10px;
+ font-variant-numeric: tabular-nums;
+}
+
.v2-workspace-panel-actions > .semi-button {
min-height: 34px;
border-radius: 8px;
@@ -521,6 +545,10 @@
padding: 7px 10px 6px;
}
.v2-workspace-panel-header.is-inverted > .v2-workspace-panel-copy > h5.semi-typography { font-size: 13px; }
+
+ .v2-workspace-result-meta > span {
+ display: none;
+ }
}
/*
@@ -3721,9 +3749,11 @@
.v2-workspace-filter-copy > .semi-typography:first-child {
flex: 0 0 auto;
+ margin: 0;
color: #30445d;
font-size: 12px;
font-weight: 700;
+ line-height: 1.3;
}
.v2-workspace-filter-copy > .semi-typography:last-child {
@@ -3744,6 +3774,51 @@
font-weight: 650;
}
+.v2-mileage-query-panel.v2-workspace-filter-panel.semi-card {
+ border-radius: 12px;
+}
+
+.v2-mileage-query-panel .v2-workspace-filter-heading {
+ min-height: 42px;
+}
+
+@media (min-width: 681px) and (max-width: 1050px) {
+ .v2-mileage-query-panel .v2-mileage-filter {
+ min-height: 0;
+ grid-template-columns: minmax(200px, 1.35fr) repeat(2, minmax(112px, .72fr)) auto;
+ grid-template-areas:
+ "vehicle start end submit"
+ "source ranges ranges ranges";
+ align-items: end;
+ }
+
+ .v2-mileage-query-panel .v2-mileage-vehicle-field {
+ grid-area: vehicle;
+ }
+
+ .v2-mileage-query-panel .v2-mileage-filter > label:nth-of-type(2) {
+ grid-area: start;
+ }
+
+ .v2-mileage-query-panel .v2-mileage-filter > label:nth-of-type(3) {
+ grid-area: end;
+ }
+
+ .v2-mileage-query-panel .v2-mileage-filter > .v2-primary-button {
+ grid-area: submit;
+ width: auto;
+ margin-top: 0;
+ }
+
+ .v2-mileage-query-panel .v2-mileage-source-strategy {
+ grid-area: source;
+ }
+
+ .v2-mileage-query-panel .v2-mileage-ranges {
+ grid-area: ranges;
+ }
+}
+
.v2-table-pagination.semi-page {
min-width: 0;
color: #607086;
@@ -3802,6 +3877,10 @@
border-radius: 11px;
}
+ .v2-mileage-query-panel.v2-workspace-filter-panel.semi-card {
+ border-radius: 11px;
+ }
+
.v2-table-pagination-controls {
justify-content: space-between;
}