5 天以前 1c829f9177eab675b22be4d20ef2761ed1bbb423
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}`
}