管理端开发日记⑥:数据大屏与首页数据分析

1216 字
6 分钟
管理端开发日记⑥:数据大屏与首页数据分析

管理端首页回答“今天发生了什么”,数据大屏回答“整体运营得怎么样”。两者都展示数据,却面向不同观看距离、使用频率和决策场景。

1. 首页指标卡#

首页 src/views/index.vue 展示今日订单、待审核、待调度、飞行中、已完成和异常订单六项指标。指标不只是一排数字,它们对应每天最常见的管理动作。

const metrics = computed(() => [
{ key: 'todayTotal', label: '今日订单', value: stats.value.todayTotal },
{ key: 'pendingAudit', label: '待审核', value: stats.value.pendingAudit },
{ key: 'waitDispatch', label: '待调度', value: stats.value.waitDispatch },
{ key: 'flying', label: '飞行中', value: stats.value.flying },
{ key: 'completed', label: '已完成', value: stats.value.completed },
{ key: 'exception', label: '异常订单', value: stats.value.exception }
])

卡片点击后可以携带状态跳转到对应列表,让“发现问题”和“处理问题”之间少一次搜索。

2. 首页图表#

首页使用饼图展示状态分布,用折线图展示订单趋势。加载接口后先规范化数值,再更新已有实例:

function upsertChart(el, current, option) {
const chart = current || echarts.init(el)
chart.setOption(option, true)
return chart
}

复用实例比每次刷新都 echarts.init 更安全,能减少重复 canvas 和事件监听。

3. 固定设计稿如何适配屏幕#

运营大屏通常按固定尺寸设计,但实际显示器比例并不完全相同。src/views/data-screen/index.vue 使用 ResizeObserver 监听容器,并计算统一缩放:

const scale = Math.min(
containerWidth / DESIGN_WIDTH,
containerHeight / DESIGN_HEIGHT
)

外层容器负责居中,内部画布保持设计尺寸并通过 transform: scale(...) 缩放。这样各面板的相对位置和图表比例不被单独拉伸。

4. 运营驾驶舱的内容层次#

运营大屏主要组合:订单总览、完成率仪表盘、订单趋势、平台来源分布、异常概览和航线场景。信息按“总量—趋势—结构—异常—空间”排列。

运营总览
├─ 总量:订单数、完成数、异常数
├─ 效率:完成率、平均时长
├─ 趋势:分时/分日订单变化
├─ 结构:平台与服务类型占比
└─ 场景:航线与飞行态势

大屏不是把所有接口字段都放上去,而是选择站在远处也能迅速判断的指标。字体、颜色和动效都服务于“几秒内读懂”。

5. 用户服务大屏#

用户服务页使用折线图呈现投诉趋势,用仪表盘展示满意度。它与运营驾驶舱共用大屏外壳和缩放策略,但指标口径独立。这样既保持统一视觉,又不会把订单效率和用户评价混成一套概念。

6. 初始动画与页面激活#

大屏可能被路由缓存。首次进入、从其他页面切回和窗口变化都会影响图表尺寸,所以页面在激活后重新执行 resize,必要时重播强调动画:

function replayHighlight(chart, dataIndex = 0) {
chart.dispatchAction({ type: 'downplay', seriesIndex: 0 })
chart.dispatchAction({ type: 'highlight', seriesIndex: 0, dataIndex })
chart.dispatchAction({ type: 'showTip', seriesIndex: 0, dataIndex })
}

动画只用于引导视线,不能不停闪烁抢走注意力。

7. 数据口径与空数据#

所有展示值先转换为数字,缺失数据用 0 或 --,百分比统一限定范围。趋势数组为空时显示空状态,而不是让坐标轴报错。大屏最怕“画得很满,数字却说不清从哪里来”,因此每个指标都应能追溯到接口字段与统计时间范围。

8. 本篇小结#

从接口响应到大屏指标#

大屏不直接使用订单明细做所有统计。高频访问的总览指标由后端聚合接口返回,前端只负责格式化;少量临时指标才在已有结果上计算。让浏览器下载全部订单再统计,不仅慢,还可能因权限和分页得到错误口径。

数据刷新时保留旧图,成功后一次性替换模型,避免每个指标先后跳动。若请求失败,则显示最后更新时间和失败提示,而不是把旧数据悄悄当成当前数据。

大屏的性能边界#

固定画布缩放、ECharts 动画和地图场景可能同时运行。页面激活时启动,失活时暂停轮播和动画;ResizeObserver 做节流,避免浏览器改变尺寸时连续触发大量 resize。装饰性动画也优先使用 transform 与 opacity,减少布局重排。

首页像值班表,大屏像指挥舱。前者讲究快,后者讲究全局感。把两者的职责分开以后,图表不再只是漂亮背景,而是真的能提醒我:今天到底是订单多,还是问题多。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
管理端开发日记⑥:数据大屏与首页数据分析
https://firefly.cuteleaf.cn/posts/admin-dev-diary-6/
作者
Yore
发布于
2026-08-06
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Yore
Hello, I'm Yore.
公告
欢迎来到Yore的博客!本站基于原创作者夏叶的博客网站模版创作。
分类
标签
最新动态
站点统计
文章
51
分类
2
标签
124
总字数
94,115
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.15.0
文章许可
CC BY-NC-SA 4.0