1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| // 基础数据大屏统一视觉令牌(与 PSI 大屏同一套品牌蓝克制深色主题)
| export const BI = {
| // 图表序列色(克制专业,替代青蓝荧光)
| series: ['#4A6CF0', '#35C6D6', '#8E7CE6', '#F0B14A', '#2FB8A8', '#E86D6D'],
| text: '#8FA3C8',
| textStrong: '#EAF1FF',
| panelBg: 'rgba(20, 32, 66, 0.55)',
| panelBorder: '#1E3160',
| sliceBorder: '#0D1834',
| accent: '#2C51D9',
| accentBright: '#4A6CF0',
| up: '#34C77B',
| down: '#FF6B6B',
| }
|
| export const baseChartOptions = {
| backgroundColor: 'transparent',
| textStyle: { color: BI.text },
| }
|
| // 深色统一 tooltip 样式,保留各组件自定义 formatter
| export const withTooltip = (tooltip = {}) => ({
| backgroundColor: 'rgba(13, 24, 52, 0.92)',
| borderColor: BI.panelBorder,
| borderWidth: 1,
| textStyle: { color: BI.textStrong, fontSize: 12 },
| ...tooltip,
| })
|
| // 数值格式化:大数字折算为「万」,空值兜底
| export const formatNumber = (val, unit = '') => {
| const num = Number(val)
| if (!Number.isFinite(num)) return `0${unit}`
| if (Math.abs(num) >= 10000) {
| return `${(num / 10000).toLocaleString('zh-CN', { maximumFractionDigits: 2 })}万${unit}`
| }
| return `${num.toLocaleString('zh-CN', { maximumFractionDigits: 2 })}${unit}`
| }
|
|