feat(platform): align customer mileage service wording

This commit is contained in:
lingniu
2026-07-06 06:19:40 +08:00
parent e847e1c7e8
commit 536d37ca9b
9 changed files with 316 additions and 316 deletions

View File

@@ -227,7 +227,7 @@ function focusVehicleFromIssue(row: QualityIssueRow): FocusVehicleService {
realtimeEvidence: `来源 ${qualityProtocolLabel(row.protocol)} / 最后 ${row.lastSeen || '-'}`,
historyEvidence: filters.dateFrom ? `${filters.dateFrom}${filters.dateTo}` : '待确认时间窗',
alertEvidence: row.detail || qualityIssueLabel(row.issueType),
statisticEvidence: '统计查询需回溯车辆口径',
statisticEvidence: '里程统计需回溯车辆口径',
issueType: row.issueType
};
}
@@ -475,7 +475,7 @@ export function Dashboard({
onClick: () => onOpenHistory()
},
{
title: '统计查询',
title: '里程统计',
value: `${formatCount(serviceSummary?.totalVehicles)} 辆可统计`,
detail: '按自定义时间查询区间里程、日里程和异常记录。',
action: '查看统计',
@@ -513,9 +513,9 @@ export function Dashboard({
},
{
step: '04',
title: '统计查询',
title: '里程统计',
detail: '用同一时间窗核对区间里程和每日统计。',
action: '统计查询',
action: '里程统计',
onClick: () => onOpenMileage({})
},
{
@@ -592,7 +592,7 @@ export function Dashboard({
detail: '同一时间窗贯穿轨迹、统计、原始记录和告警,不需要跨页面重复输入。',
color: 'blue' as const,
primaryAction: '轨迹回放',
secondaryAction: '统计查询',
secondaryAction: '里程统计',
onPrimary: () => openTimeMonitorHistory(),
onSecondary: () => openTimeMonitorMileage()
},
@@ -659,10 +659,10 @@ export function Dashboard({
onClick: () => onOpenQuality()
},
{
title: '统计查询',
title: '里程统计',
status: `统计车辆 ${formatCount(serviceSummary?.totalVehicles)}`,
color: 'green' as const,
description: '提供里程等运营统计查询,保证区间总值与每日统计口径闭合。',
description: '提供里程等运营里程统计,保证区间总值与每日里程口径闭合。',
action: '查看统计',
onClick: () => onOpenMileage()
}
@@ -731,11 +731,11 @@ export function Dashboard({
onClick: () => onOpenQuality()
},
{
title: '统计复核',
title: '里程复核',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
color: 'green' as const,
detail: '核对统计查询口径,保证区间统计和每日统计闭合。',
action: '统计查询',
detail: '核对里程口径,保证区间统计和每日统计闭合。',
action: '里程统计',
onClick: () => onOpenMileage()
}
];
@@ -841,13 +841,13 @@ export function Dashboard({
]
},
{
title: '统计查询',
title: '里程统计',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆口径`,
meta: '区间闭合复核',
color: 'green' as const,
detail: '统计指标先按车辆口径闭合,再回溯轨迹和原始记录。',
actions: [
{ label: '打开统计查询', onClick: () => onOpenMileage() },
{ label: '打开里程统计', onClick: () => onOpenMileage() },
{ label: '查看车辆中心', onClick: () => onOpenVehicles({}) }
]
}
@@ -998,7 +998,7 @@ export function Dashboard({
`范围:${timeMonitorSummary}`,
`交付结论:${timeMonitorDeliveryStatus.label}${timeMonitorDeliveryStatus.detail}`,
`时间窗判定:${dayRangeText(scope.dateFrom, scope.dateTo)}`,
'平台能力:实时地图 / 轨迹回放 / 统计查询 / 历史数据查询 / 告警通知',
'平台能力:实时地图 / 轨迹回放 / 里程统计 / 历史数据查询 / 告警通知',
`车辆范围:${scope.keyword || '全部车辆'}`,
`数据通道:${scope.protocol || '全部数据通道'}`,
`时间范围:${scope.dateFrom || '-'}${scope.dateTo || '-'}`,
@@ -1011,7 +1011,7 @@ export function Dashboard({
'下一步动作:',
...timeMonitorDeliveryActions.map((item, index) => `${index + 1}. ${item.label}${item.value}${item.detail}`),
`轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`统计查询${appURL(buildAppHash({ page: 'mileage', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`里程统计:${appURL(buildAppHash({ page: 'mileage', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`历史数据查询:${appURL(buildAppHash({ page: 'history-query', keyword: scope.keyword, protocol: scope.protocol, filters: rawFilters }))}`,
`告警通知:${appURL(buildAppHash({ page: 'alert-events', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`实时地图:${appURL(buildAppHash({ page: 'map', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`
@@ -1028,7 +1028,7 @@ export function Dashboard({
onClick: openTimeMonitorHistory
},
{
label: '统计查询',
label: '里程统计',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '用同一范围核对区间里程和日统计闭合。',
action: '查看统计',
@@ -1076,7 +1076,7 @@ export function Dashboard({
label: '核对里程',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '用同一范围核对区间里程、日统计和 BI 口径。',
action: '统计查询',
action: '里程统计',
color: 'green' as const,
onClick: openTimeMonitorMileage
},
@@ -1174,7 +1174,7 @@ export function Dashboard({
},
{
label: '核对里程',
action: '统计查询',
action: '里程统计',
color: 'green' as const,
disabled: false,
onClick: openTimeMonitorMileage
@@ -1195,11 +1195,11 @@ export function Dashboard({
`作业范围:${timeMonitorSummary}`,
`交付SLA${timeMonitorWindowLabel}内完成轨迹复盘、统计核对、历史导出和告警说明`,
`交付状态:${timeMonitorDeliveryStatus.label}${timeMonitorDeliveryStatus.detail}`,
'交付物:轨迹回放链接 / 统计查询链接 / 历史导出链接 / 告警复盘链接',
'交付物:轨迹回放链接 / 里程统计链接 / 历史导出链接 / 告警复盘链接',
`升级条件:${formatCount(summary?.issueVehicles)} 告警车辆需要先进入告警复盘`,
`责任动作:${timeMonitorHasAlerts ? '先处理告警,再交付证据' : '先完成客户复盘,再按需导出证据'}`,
`轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`统计查询${appURL(buildAppHash({ page: 'mileage', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`里程统计:${appURL(buildAppHash({ page: 'mileage', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`历史导出:${appURL(buildAppHash({ page: 'history-query', keyword: scope.keyword, protocol: scope.protocol, filters: rawFilters }))}`,
`告警复盘:${appURL(buildAppHash({ page: 'alert-events', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`
];
@@ -1225,7 +1225,7 @@ export function Dashboard({
{
label: '交付物',
value: '轨迹/统计/导出/告警',
detail: '交付轨迹回放、统计查询、历史导出和告警复盘四个入口。',
detail: '交付轨迹回放、里程统计、历史导出和告警复盘四个入口。',
action: '导出证据',
color: timeMonitorHasHistory ? 'blue' as const : 'orange' as const,
onClick: openTimeMonitorRaw
@@ -1248,7 +1248,7 @@ export function Dashboard({
onClick: openTimeMonitorHistory
},
{
label: '统计查询',
label: '里程统计',
value: timeMonitorWindowLabel,
detail: '用同一时间窗核对区间里程、日报闭合和异常点。',
color: 'green' as const,
@@ -1321,7 +1321,7 @@ export function Dashboard({
owner: '告警 / 统计',
evidence: `告警 ${formatCount(summary?.issueVehicles)},统计车辆 ${formatCount(serviceSummary?.totalVehicles)}`,
detail: '断链、缺字段、里程异常和离线时长进入通知、统计和复核工作流。',
action: '统计查询',
action: '里程统计',
onClick: () => onOpenMileage()
}
];
@@ -1367,11 +1367,11 @@ export function Dashboard({
onSecondary: () => onOpenQuality(highPriorityIssue?.issueType ? { issueType: highPriorityIssue.issueType } : {})
},
{
title: '统计查询',
title: '里程统计',
objective: '按车辆口径查询里程等指标,保证区间统计和日统计可闭合。',
evidence: `车辆口径 ${formatCount(serviceSummary?.totalVehicles)} / 区间统计可追溯轨迹证据`,
sla: '统计值必须能追溯轨迹和原始记录',
primaryAction: '统计查询',
primaryAction: '里程统计',
secondaryAction: '车辆中心',
onPrimary: () => onOpenMileage(),
onSecondary: () => onOpenVehicles({})
@@ -1398,7 +1398,7 @@ export function Dashboard({
`轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: highPriorityFilters?.keyword, protocol: highPriorityFilters?.protocol, filters: highPriorityFilters }))}`,
`原始记录:${appURL(buildAppHash({ page: 'history-query', keyword: highPriorityFilters?.keyword, protocol: highPriorityFilters?.protocol, filters: { ...highPriorityFilters, tab: 'raw', includeFields: 'true' } }))}`,
`告警事件:${appURL(buildAppHash({ page: 'alert-events', filters: highPriorityIssue?.issueType ? { issueType: highPriorityIssue.issueType } : {} }))}`,
`统计查询${appURL(buildAppHash({ page: 'mileage', keyword: highPriorityLookupKey, protocol: highPriorityIssue?.protocol }))}`,
`里程统计:${appURL(buildAppHash({ page: 'mileage', keyword: highPriorityLookupKey, protocol: highPriorityIssue?.protocol }))}`,
`车辆服务:${appURL(buildAppHash({ page: 'detail', keyword: highPriorityLookupKey, protocol: highPriorityIssue?.protocol }))}`
].filter(Boolean);
copyText(lines.join('\n'), '客户交付摘要');
@@ -1438,7 +1438,7 @@ export function Dashboard({
`轨迹回放:${appURL(buildAppHash({ page: 'history' }))}`,
`历史查询:${appURL(buildAppHash({ page: 'history-query', filters: { tab: 'raw', includeFields: 'true' } }))}`,
`告警事件:${appURL(buildAppHash({ page: 'alert-events' }))}`,
`统计查询${appURL(buildAppHash({ page: 'mileage' }))}`,
`里程统计:${appURL(buildAppHash({ page: 'mileage' }))}`,
`运维质量:${appURL(buildAppHash({ page: 'ops-quality' }))}`
];
copyText(lines.join('\n'), '数据流转图');
@@ -1462,7 +1462,7 @@ export function Dashboard({
`实时监控:${appURL(buildAppHash({ page: 'realtime', keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol }))}`,
`轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol }))}`,
`原始记录:${appURL(buildAppHash({ page: 'history-query', keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol, filters: { ...commonFilters, tab: 'raw', includeFields: 'true' } }))}`,
`统计查询${appURL(buildAppHash({ page: 'mileage', keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol }))}`,
`里程统计:${appURL(buildAppHash({ page: 'mileage', keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol }))}`,
`告警事件:${appURL(buildAppHash({ page: 'alert-events', keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol, filters: focusVehicle.issueType ? { issueType: focusVehicle.issueType } : {} }))}`
];
copyText(lines.join('\n'), '重点车辆服务处置卡');
@@ -1563,10 +1563,10 @@ export function Dashboard({
{
title: '自定义时间复盘',
value: taskTimeMonitorSummary,
detail: '一个时间窗贯穿轨迹回放、统计查询、历史查询和告警复盘,适合客户问询与 BI 核对。',
detail: '一个时间窗贯穿轨迹回放、里程统计、历史查询和告警复盘,适合客户问询与 BI 核对。',
color: 'blue' as const,
primaryAction: '轨迹复盘',
secondaryAction: '统计查询',
secondaryAction: '里程统计',
onPrimary: () => openTimeMonitorHistory(),
onSecondary: () => openTimeMonitorMileage()
},
@@ -1601,7 +1601,7 @@ export function Dashboard({
{
title: '复盘时间',
value: dayRangeText(timeMonitorScopeValue.dateFrom, timeMonitorScopeValue.dateTo),
detail: '同一个时间窗贯穿轨迹回放、统计查询、原始记录和告警复盘。',
detail: '同一个时间窗贯穿轨迹回放、里程统计、原始记录和告警复盘。',
action: '轨迹回放',
color: 'blue' as const,
onClick: openTimeMonitorHistory
@@ -1653,10 +1653,10 @@ export function Dashboard({
},
{
step: '4',
title: '复盘统计',
title: '复盘里程',
value: `${formatCount(summary?.activeToday)} 活跃`,
detail: '用轨迹、位置历史和里程统计回答这段时间发生了什么。',
action: '轨迹统计',
action: '轨迹里程',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -1689,7 +1689,7 @@ export function Dashboard({
`车辆中心:${appURL(buildAppHash({ page: 'vehicles' }))}`,
`实时地图:${appURL(buildAppHash({ page: 'map', filters: { online: 'online' } }))}`,
`轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`统计查询${appURL(buildAppHash({ page: 'mileage', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`里程统计:${appURL(buildAppHash({ page: 'mileage', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`,
`历史数据:${appURL(buildAppHash({ page: 'history-query', keyword: scope.keyword, protocol: scope.protocol, filters: rawFilters }))}`,
`告警事件:${appURL(buildAppHash({ page: 'alert-events', keyword: scope.keyword, protocol: scope.protocol, filters: scope }))}`
];
@@ -1753,8 +1753,8 @@ export function Dashboard({
{
label: '里程统计',
value: dayRangeText(timeMonitorScopeValue.dateFrom, timeMonitorScopeValue.dateTo),
detail: '核对区间里程、每日闭合、异常记录和 BI 统计口径。',
action: '统计查询',
detail: '核对区间里程、每日闭合、异常记录和 BI 里程口径。',
action: '里程统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -1791,9 +1791,9 @@ export function Dashboard({
onClick: openTimeMonitorHistory
},
{
title: '统计查询',
title: '里程统计',
description: '按车辆口径核对区间里程、日统计和异常来源。',
action: '统计查询',
action: '里程统计',
evidence: `${formatCount(serviceSummary?.totalVehicles)} 辆可统计`,
onClick: openTimeMonitorMileage
},
@@ -1833,7 +1833,7 @@ export function Dashboard({
label: 'Mileage',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '按车辆口径查询区间里程、日统计和异常断点。',
action: '查统计',
action: '查里程',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -1917,7 +1917,7 @@ export function Dashboard({
label: '里程周报模板',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '按车辆口径复用里程统计,支撑周报、对账和 BI 复核。',
action: '统计查询',
action: '里程统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -2066,7 +2066,7 @@ export function Dashboard({
question: '这段时间跑了多少',
answer: `${dayRangeText(timeMonitorScopeValue.dateFrom, timeMonitorScopeValue.dateTo)},用同一时间窗核对区间里程和每日统计。`,
metric: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
action: '查统计查询',
action: '查里程统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -2189,7 +2189,7 @@ export function Dashboard({
title: '查这段时间',
value: dayRangeText(timeMonitorScopeValue.dateFrom, timeMonitorScopeValue.dateTo),
detail: '同窗查看轨迹和里程统计',
action: '轨迹统计',
action: '轨迹里程',
color: 'blue' as const,
onClick: openTimeMonitorHistory
},
@@ -2304,10 +2304,10 @@ export function Dashboard({
onClick: openTimeMonitorHistory
},
{
label: '统计查询',
label: '里程统计',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '按车辆口径核对区间里程、日统计和异常来源。',
action: '查统计',
action: '查里程',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -2432,8 +2432,8 @@ export function Dashboard({
{
label: '里程能耗',
value: dayRangeText(timeMonitorScopeValue.dateFrom, timeMonitorScopeValue.dateTo),
detail: '用同一时间窗核对里程、运行状态和能耗相关统计口径。',
action: '统计查询',
detail: '用同一时间窗核对里程、运行状态和能耗相关里程口径。',
action: '里程统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
}
@@ -2477,7 +2477,7 @@ export function Dashboard({
title: '核对时间窗里程',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '按同一时间范围核对区间里程、每日统计和 BI 口径。',
action: '统计查询',
action: '里程统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -2527,7 +2527,7 @@ export function Dashboard({
label: '里程统计',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '核对区间里程、每日统计和 BI 展示口径。',
action: '统计查询',
action: '里程统计',
color: 'green' as const,
onClick: openTimeMonitorMileage
},
@@ -2569,7 +2569,7 @@ export function Dashboard({
label: '里程统计',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '以车辆为对象核对区间里程、每日统计和 BI 口径。',
action: '统计查询',
action: '里程统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -2602,7 +2602,7 @@ export function Dashboard({
{
label: '里程统计',
value: dayRangeText(timeMonitorScopeValue.dateFrom, timeMonitorScopeValue.dateTo),
detail: '核对区间里程、每日里程和客户 BI 统计口径。',
detail: '核对区间里程、每日里程和客户 BI 里程口径。',
action: '核对里程',
color: 'blue' as const,
onClick: openTimeMonitorMileage
@@ -2671,7 +2671,7 @@ export function Dashboard({
question: '里程怎么算',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '查询区间里程、每日里程和统计闭合情况,支撑 BI 口径复核。',
action: '统计查询',
action: '里程统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
},
@@ -2715,7 +2715,7 @@ export function Dashboard({
label: '里程统计',
question: '里程是否可信',
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
detail: '面向客户核对区间里程、每日汇总和 BI 统计口径。',
detail: '面向客户核对区间里程、每日汇总和 BI 里程口径。',
action: '核对统计',
color: 'blue' as const,
onClick: openTimeMonitorMileage
@@ -2874,7 +2874,7 @@ export function Dashboard({
title={focusMode === 'time-window' ? '自定义时间监控' : '车辆服务工作台'}
description={focusMode === 'time-window'
? '把客户选择的一辆车和一个时间窗固定下来,同时进入实时地图、轨迹回放、里程统计、历史导出和告警复盘。'
: '面向客户的车辆地图、实时监控、轨迹回放、统计查询、自定义时间窗复盘、历史查询、告警通知和数据导出'}
: '面向客户的车辆地图、实时监控、轨迹回放、里程统计、自定义时间窗复盘、历史查询、告警通知和数据导出'}
/>
<Spin spinning={loading}>
{focusMode === 'overview' ? (
@@ -2919,7 +2919,7 @@ export function Dashboard({
<div className="vp-customer-service-overview-copy">
<Typography.Text strong></Typography.Text>
<Typography.Text type="secondary">
使
使
</Typography.Text>
</div>
<div className="vp-customer-service-overview-grid">
@@ -3242,7 +3242,7 @@ export function Dashboard({
<Space wrap>
<Button size="small" theme="solid" type="primary" aria-label="车辆地图态势 打开实时地图" onClick={() => onOpenMap({ online: 'online' })}></Button>
<Button size="small" theme="light" type="primary" aria-label="车辆地图态势 回放轨迹" onClick={openTimeMonitorHistory}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button size="small" theme="light" type="warning" onClick={() => onOpenQuality()}></Button>
</Space>
</div>
@@ -3372,7 +3372,7 @@ export function Dashboard({
</Typography.Title>
<Typography.Text type="secondary">
</Typography.Text>
</div>
<div className="vp-customer-saved-view-library-grid">
@@ -3845,7 +3845,7 @@ export function Dashboard({
</Space>
<Typography.Title heading={3} style={{ margin: 0 }}></Typography.Title>
<Typography.Text type="secondary">
</Typography.Text>
</div>
<VehicleMap
@@ -3995,10 +3995,10 @@ export function Dashboard({
<Tag color={timeMonitorScope().keyword ? 'green' : 'grey'}>{timeMonitorScope().keyword ? '单车' : '全域'}</Tag>
</Space>
<strong>{timeMonitorSummary}</strong>
<span></span>
<span></span>
<Space wrap>
<Button size="small" theme="solid" type="primary" onClick={openTimeMonitorHistory}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorRaw}></Button>
</Space>
</div>
@@ -4022,7 +4022,7 @@ export function Dashboard({
</Space>
<Typography.Title heading={5} style={{ margin: 0 }}>使</Typography.Title>
<Typography.Text type="secondary">
</Typography.Text>
<Space wrap>
<Button size="small" theme="solid" type="primary" onClick={copyCustomerServiceGuide}></Button>
@@ -4075,12 +4075,12 @@ export function Dashboard({
</Form>
<div className="vp-time-monitor-actions">
<Button theme="solid" type="primary" onClick={openTimeMonitorHistory}></Button>
<Button theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button theme="light" type="primary" onClick={openTimeMonitorRaw}></Button>
<Button theme="light" type="warning" onClick={openTimeMonitorAlerts}></Button>
</div>
<Typography.Text type="secondary">
</Typography.Text>
<div className="vp-time-review-package">
<div className="vp-time-review-summary">
@@ -4095,7 +4095,7 @@ export function Dashboard({
<Space wrap>
<Button size="small" theme="solid" type="primary" onClick={copyTimeMonitorReviewPackage}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorHistory}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorMileage}></Button>
<Button size="small" theme="light" type="primary" onClick={openTimeMonitorRaw}></Button>
<Button size="small" theme="light" type="warning" onClick={openTimeMonitorAlerts}></Button>
</Space>
@@ -4261,7 +4261,7 @@ export function Dashboard({
{[
{ title: '今天车辆轨迹', detail: '查看当天活跃车辆的轨迹、速度和里程断点。', action: '查今天', onClick: openTimeMonitorHistory },
{ title: '历史时间窗', detail: '按任意起止时间查询位置历史、原始记录和字段明细。', action: '自定义查询', onClick: openTimeMonitorRaw },
{ title: '统计查询', detail: '按车辆和时间范围核对区间里程、日统计和异常点。', action: '统计查询', onClick: openTimeMonitorMileage },
{ title: '里程统计', detail: '按车辆和时间范围核对区间里程、日统计和异常点。', action: '里程统计', onClick: openTimeMonitorMileage },
{ title: '告警复盘', detail: '按车辆或事件回放告警发生前后的轨迹和数据证据。', action: '告警事件', onClick: openTimeMonitorAlerts }
].map((item) => (
<button key={item.title} type="button" className="vp-time-monitor-item" onClick={item.onClick} aria-label={`时间监控 ${item.title}`}>
@@ -4472,7 +4472,7 @@ export function Dashboard({
<Button size="small" theme="light" aria-label="重点车辆 实时监控" disabled={!focusVehicle.lookupKey} onClick={() => onOpenRealtime({ keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol ?? '' })}></Button>
<Button size="small" theme="light" aria-label="重点车辆 轨迹回放" disabled={!focusVehicle.lookupKey} onClick={() => onOpenHistory({ keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol ?? '' })}></Button>
<Button size="small" theme="light" aria-label="重点车辆 原始记录" disabled={!focusVehicle.lookupKey} onClick={() => onOpenHistory({ keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol ?? '', tab: 'raw', includeFields: 'true' })}></Button>
<Button size="small" theme="light" aria-label="重点车辆 统计查询" disabled={!focusVehicle.lookupKey} onClick={() => onOpenMileage({ keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol ?? '' })}></Button>
<Button size="small" theme="light" aria-label="重点车辆 里程统计" disabled={!focusVehicle.lookupKey} onClick={() => onOpenMileage({ keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol ?? '' })}></Button>
<Button size="small" theme="light" type="warning" aria-label="重点车辆 告警事件" onClick={() => onOpenQuality({ keyword: focusVehicle.lookupKey, protocol: focusVehicle.protocol ?? '', ...(focusVehicle.issueType ? { issueType: focusVehicle.issueType } : {}) })}></Button>
</Space>
</div>