Appearance
数据大屏组件库
FinDashboard 是面向财务、制造、运营等领域的数据可视化大屏组件库,提供开箱即用的暗色科技风格组件,支持多主题切换。
特性
- 🎨 多主题切换 — 内置科技蓝、科技紫、科技绿、暗金 4 套预设主题,支持运行时切换
- 📐 自适应缩放 — 基于设计稿尺寸(默认 1920×1080)自动等比缩放,适配任意屏幕
- 📊 丰富图表 — 基于 ECharts 封装,主题色自动同步,开箱即用
- 🧩 组件化 — 独立容器、面板、图表、数据展示组件,自由组合
- 🌙 暗色优先 — 深色背景 + 霓虹配色 + 发光效果,沉浸式大屏体验
- 🔌 按需引入 — 支持自动按需导入(unplugin-vue-components)
快速开始
安装
bash
pnpm add @axewo/fin-dashboard
# peer dependencies
pnpm add echarts element-plus vue @axewo/fin-core @axewo/fin-locale完整引入
ts
import { createApp } from 'vue'
import FinDashboard from '@axewo/fin-dashboard'
import '@axewo/fin-dashboard/dist/style.css'
const app = createApp(App)
app.use(FinDashboard)按需引入(推荐)
配合 unplugin-vue-components 自动导入:
ts
// vite.config.ts
import Components from 'unplugin-vue-components/vite'
import { FinDashboardResolver } from '@axewo/fin-dashboard'
export default {
plugins: [
Components({
resolvers: [FinDashboardResolver()],
}),
],
}基础用法
vue
<template>
<FScreenContainer title="数据监控大屏">
<FPanelBox title="销售趋势">
<FBarLineChart :data="chartData" />
</FPanelBox>
</FScreenContainer>
</template>
<script setup lang="ts">
import { FScreenContainer, FPanelBox, FBarLineChart } from '@axewo/fin-dashboard'
const chartData = {
xAxis: ['1月', '2月', '3月', '4月', '5月', '6月'],
series: [
{ name: '销售额', data: [120, 200, 150, 300, 280, 350], type: 'bar' },
{ name: '利润', data: [30, 50, 45, 80, 75, 100], type: 'line' },
],
}
</script>组件分类
容器层
- FScreenContainer — 大屏根容器,处理缩放、主题、顶部工具栏
- FPanelBox — 数据面板框,带标题、图标、边框发光效果
图表层
- FRingChart — 环形图(设备状态分布、类型占比)
- FProgressRing — 进度环(完成率、达成率)
- FBarLineChart — 柱线混合图(趋势对比)
- FLiquidGauge — 水球图(百分比可视化)
- FRiskDonut — 风险占比环形图(带引线标注)
数据展示层
- FMetricCard — 指标卡片(带趋势、变化幅度)
- FRankingList — 排行榜(前三高亮)
- FSegmentedBar — 分段条(多段颜色占比)
- FProgressTable — 进度表格(带进度条、自动滚动)
- FStatusTable — 状态表格(某列按等级变色)
- FAlertCardList — 告警卡片列表(分级颜色、自动滚动)
主题切换
运行时切换
vue
<template>
<FScreenContainer theme="techBlue">
<!-- 内容 -->
</FScreenContainer>
</template>通过 theme 属性切换预设主题:
techBlue— 科技蓝(默认)techPurple— 科技紫techGreen— 科技绿darkGold— 暗金
自定义主题
vue
<script setup lang="ts">
import type { DashboardTheme } from '@axewo/fin-dashboard'
const customTheme: DashboardTheme = {
name: 'custom',
bgBase: '#0A0E27',
bgPanel: 'rgba(15, 23, 42, 0.8)',
bgPanelGradient: 'linear-gradient(135deg, rgba(59,130,246,0.1), rgba(147,51,234,0.1))',
borderPanel: '#1E3A8A',
glow: 'rgba(59,130,246,0.4)',
textPrimary: '#F1F5F9',
textSecondary: '#94A3B8',
textValue: '#60A5FA',
primary: '#3B82F6',
primaryGradient: ['#3B82F6', '#8B5CF6'],
series: ['#3B82F6', '#8B5CF6', '#10B981', '#F59E0B', '#EF4444', '#EC4899'],
success: '#10B981',
warning: '#F59E0B',
danger: '#EF4444',
info: '#3B82F6',
}
</script>
<template>
<FScreenContainer :theme="customTheme">
<!-- 内容 -->
</FScreenContainer>
</template>设计原则
- 语义化 Token — 组件只引用语义 token(
--fd-primary、--fd-text-primary),不写死色值 - 单一数据源 — 主题对象即真实配置,CSS 变量从主题对象生成
- 运行时切换 — 通过 Vue provide/inject 下发主题,组件响应式更新
- 自适应缩放 — 固定设计稿尺寸 +
transform: scale,非响应式布局
浏览器兼容
- Chrome >= 90
- Firefox >= 88
- Safari >= 14
- Edge >= 90