feat(platform): streamline dashboard around vehicle workflows
This commit is contained in:
@@ -956,10 +956,10 @@ export function Dashboard({
|
||||
onClick: openTimeMonitorHistory
|
||||
},
|
||||
{
|
||||
label: '里程核对',
|
||||
label: '统计查询',
|
||||
value: `${formatCount(serviceSummary?.totalVehicles)} 车辆`,
|
||||
detail: '用同一范围核对区间里程和日统计闭合。',
|
||||
action: '核对里程',
|
||||
action: '查看统计',
|
||||
color: 'green' as const,
|
||||
onClick: openTimeMonitorMileage
|
||||
},
|
||||
@@ -1405,9 +1405,9 @@ export function Dashboard({
|
||||
onClick: openTimeMonitorHistory
|
||||
},
|
||||
{
|
||||
title: '里程核对',
|
||||
title: '统计查询',
|
||||
description: '按车辆口径核对区间里程、日统计和异常来源。',
|
||||
action: '里程统计',
|
||||
action: '统计查询',
|
||||
evidence: `${formatCount(serviceSummary?.totalVehicles)} 辆可统计`,
|
||||
onClick: openTimeMonitorMileage
|
||||
},
|
||||
@@ -1507,7 +1507,7 @@ export function Dashboard({
|
||||
</div>
|
||||
<div className="vp-fleet-monitor-panel">
|
||||
<div className="vp-fleet-monitor-panel-head">
|
||||
<Typography.Text strong>下一步建议</Typography.Text>
|
||||
<Typography.Text strong>今日先处理</Typography.Text>
|
||||
<Button size="small" theme="light" type="primary" onClick={copyCustomerServiceGuide}>复制说明</Button>
|
||||
</div>
|
||||
<div className="vp-fleet-next-actions">
|
||||
@@ -1526,7 +1526,7 @@ export function Dashboard({
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
<Typography.Text strong>客户工作流</Typography.Text>
|
||||
<Typography.Text strong>车辆服务工作流</Typography.Text>
|
||||
<div className="vp-fleet-monitor-actions">
|
||||
{customerCockpitWorkflows.map((item) => (
|
||||
<button key={item.title} type="button" className="vp-fleet-monitor-action" onClick={item.onClick} aria-label={`客户车辆工作流 ${item.title} ${item.action}`}>
|
||||
@@ -1543,10 +1543,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>
|
||||
@@ -1561,39 +1561,6 @@ export function Dashboard({
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card bordered title="车辆服务指挥台" style={{ marginBottom: 16 }}>
|
||||
<div className="vp-command-center-grid">
|
||||
{commandCenterItems.map((item) => (
|
||||
<div key={item.title} className="vp-command-center-item">
|
||||
<div className="vp-command-center-head">
|
||||
<Tag color={item.color}>{item.title}</Tag>
|
||||
<strong>{item.value}</strong>
|
||||
</div>
|
||||
<Typography.Text type="secondary">{item.detail}</Typography.Text>
|
||||
<Space wrap>
|
||||
<Button
|
||||
size="small"
|
||||
theme="solid"
|
||||
type="primary"
|
||||
aria-label={`车辆服务指挥台 ${item.title} ${item.primaryAction}`}
|
||||
onClick={item.onPrimary}
|
||||
>
|
||||
{item.primaryAction}
|
||||
</Button>
|
||||
<Button
|
||||
size="small"
|
||||
theme="light"
|
||||
type="primary"
|
||||
aria-label={`车辆服务指挥台 ${item.title} ${item.secondaryAction}`}
|
||||
onClick={item.onSecondary}
|
||||
>
|
||||
{item.secondaryAction}
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</Card>
|
||||
<Card
|
||||
bordered
|
||||
title={<Space><span>自定义时间监控</span><Tag color="blue">{timeMonitorSummary}</Tag></Space>}
|
||||
@@ -1749,9 +1716,42 @@ export function Dashboard({
|
||||
<details className="vp-dashboard-secondary-details">
|
||||
<summary>
|
||||
<span>更多车辆服务入口</span>
|
||||
<small>常用服务、今日任务、KPI 和车辆入口默认收起,主页面优先保留地图、指挥台和时间窗监控。</small>
|
||||
<small>常用服务、今日任务、KPI 和车辆入口默认收起,主页面优先保留地图、时间窗监控、告警和导出。</small>
|
||||
</summary>
|
||||
<div className="vp-dashboard-secondary-body">
|
||||
<Card bordered title="车辆服务指挥台" style={{ marginBottom: 16 }}>
|
||||
<div className="vp-command-center-grid">
|
||||
{commandCenterItems.map((item) => (
|
||||
<div key={item.title} className="vp-command-center-item">
|
||||
<div className="vp-command-center-head">
|
||||
<Tag color={item.color}>{item.title}</Tag>
|
||||
<strong>{item.value}</strong>
|
||||
</div>
|
||||
<Typography.Text type="secondary">{item.detail}</Typography.Text>
|
||||
<Space wrap>
|
||||
<Button
|
||||
size="small"
|
||||
theme="solid"
|
||||
type="primary"
|
||||
aria-label={`车辆服务指挥台 ${item.title} ${item.primaryAction}`}
|
||||
onClick={item.onPrimary}
|
||||
>
|
||||
{item.primaryAction}
|
||||
</Button>
|
||||
<Button
|
||||
size="small"
|
||||
theme="light"
|
||||
type="primary"
|
||||
aria-label={`车辆服务指挥台 ${item.title} ${item.secondaryAction}`}
|
||||
onClick={item.onSecondary}
|
||||
>
|
||||
{item.secondaryAction}
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</Card>
|
||||
<Card bordered title="客户常用服务" style={{ marginBottom: 16 }}>
|
||||
<div className="vp-customer-workflow-grid">
|
||||
{customerHeroActions.map((item) => (
|
||||
|
||||
Reference in New Issue
Block a user