@xq-labs/data-ui-v2 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -12
- package/docs/api/overview.md +242 -29
- package/docs/examples/bar-line-chart.md +43 -3
- package/docs/examples/local-development.md +191 -0
- package/docs/examples/pie-chart.md +19 -8
- package/docs/examples/radar-chart.md +97 -0
- package/es/bar-line-chart/index.js +2 -2
- package/es/{colors-ca059479.js → colors-ec0ad9ce.js} +10 -1
- package/es/index-788e473f.js +471 -0
- package/es/{index-d151eeca.js → index-78b6b881.js} +97 -58
- package/es/{index-017ccf86.js → index-914fbae3.js} +456 -43
- package/es/index.js +7 -5
- package/es/pie-chart/3d-runtime.js +6 -0
- package/es/pie-chart/index.js +2 -2
- package/es/radar-chart/index.js +13 -0
- package/lib/bar-line-chart/index.js +2 -2
- package/lib/{colors-55265c91.js → colors-19a7242d.js} +10 -0
- package/lib/{index-b9e0c40b.js → index-3d9f6fe7.js} +455 -42
- package/lib/index-6039f724.js +492 -0
- package/lib/{index-7abf647e.js → index-a0ecafa1.js} +96 -58
- package/lib/index.js +7 -4
- package/lib/pie-chart/3d-runtime.js +27 -0
- package/lib/pie-chart/index.js +2 -2
- package/lib/radar-chart/index.js +19 -0
- package/package.json +12 -2
- package/pie-chart/3d-runtime.js +1 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @xq-labs/data-ui-v2
|
|
2
2
|
|
|
3
|
-
一套面向 Vue 2 项目的业务图表组件库,当前聚焦 `BaseChart`、`BarLineChart`、`PieChart`
|
|
3
|
+
一套面向 Vue 2 项目的业务图表组件库,当前聚焦 `BaseChart`、`BarLineChart`、`PieChart`、`RadarChart` 四个公开组件,配套 `playground` 示例库、Rollup 发布构建和本地发版脚本。
|
|
4
4
|
|
|
5
5
|
## 适用环境
|
|
6
6
|
|
|
@@ -17,13 +17,18 @@ npm install @xq-labs/data-ui-v2
|
|
|
17
17
|
|
|
18
18
|
组件库将 `vue` 与 `echarts` 作为外部依赖。
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
依赖包名为 `echarts-gl`,例如:
|
|
20
|
+
宿主项目只需确保已安装 `vue` 与 `echarts`。
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
如果你要使用 `PieChart` 的 3D 能力,
|
|
23
|
+
请先安装 `echarts-gl`,并在**使用 3D PieChart 的页面顶部**引入桥接入口:
|
|
24
|
+
|
|
25
|
+
```js
|
|
26
|
+
import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'
|
|
25
27
|
```
|
|
26
28
|
|
|
29
|
+
如果你的项目有多个页面都会使用 3D `PieChart`,
|
|
30
|
+
也可以选择在应用入口统一引入这个桥接入口。
|
|
31
|
+
|
|
27
32
|
## 整包注册
|
|
28
33
|
|
|
29
34
|
```js
|
|
@@ -38,16 +43,18 @@ Vue.use(DataUI)
|
|
|
38
43
|
- `BaseChart`
|
|
39
44
|
- `BarLineChart`
|
|
40
45
|
- `PieChart`
|
|
46
|
+
- `RadarChart`
|
|
41
47
|
|
|
42
48
|
## 按需引入
|
|
43
49
|
|
|
44
50
|
```js
|
|
45
51
|
import Vue from 'vue'
|
|
46
|
-
import { BaseChart, BarLineChart, PieChart } from '@xq-labs/data-ui-v2'
|
|
52
|
+
import { BaseChart, BarLineChart, PieChart, RadarChart } from '@xq-labs/data-ui-v2'
|
|
47
53
|
|
|
48
54
|
Vue.component(BaseChart.name, BaseChart)
|
|
49
55
|
Vue.component(BarLineChart.name, BarLineChart)
|
|
50
56
|
Vue.component(PieChart.name, PieChart)
|
|
57
|
+
Vue.component(RadarChart.name, RadarChart)
|
|
51
58
|
```
|
|
52
59
|
|
|
53
60
|
如果你的构建链路需要直接引用发布子路径,也可以按 `lib` / `es` 产物接入:
|
|
@@ -56,6 +63,7 @@ Vue.component(PieChart.name, PieChart)
|
|
|
56
63
|
import BaseChart from '@xq-labs/data-ui-v2/es/base-chart'
|
|
57
64
|
import BarLineChart from '@xq-labs/data-ui-v2/es/bar-line-chart'
|
|
58
65
|
import PieChart from '@xq-labs/data-ui-v2/es/pie-chart'
|
|
66
|
+
import RadarChart from '@xq-labs/data-ui-v2/es/radar-chart'
|
|
59
67
|
```
|
|
60
68
|
|
|
61
69
|
## 样式说明
|
|
@@ -67,16 +75,27 @@ import PieChart from '@xq-labs/data-ui-v2/es/pie-chart'
|
|
|
67
75
|
import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
68
76
|
```
|
|
69
77
|
|
|
70
|
-
## 3D
|
|
78
|
+
## 3D 饼图运行时说明
|
|
71
79
|
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
`PieChart` 使用 `dimension="3d"` 时,
|
|
81
|
+
组件库主入口**不会**代替业务项目自动加载 `echarts-gl`。
|
|
74
82
|
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
推荐接入方式:
|
|
84
|
+
|
|
85
|
+
```js
|
|
86
|
+
import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'
|
|
77
87
|
```
|
|
78
88
|
|
|
79
|
-
|
|
89
|
+
建议直接写在**使用 3D PieChart 的页面顶部**。
|
|
90
|
+
该入口只负责把 `SurfaceChart` 与 `Grid3DComponent` 注册到 `echarts/core`,
|
|
91
|
+
不会注册组件,也不会影响 2D 场景。
|
|
92
|
+
|
|
93
|
+
包内同时保留 `pie-chart/3d-runtime.js` 物理入口,
|
|
94
|
+
用于兼容不识别 `package.json#exports` 的老 webpack / Vue CLI 链路。
|
|
95
|
+
|
|
96
|
+
如果 3D runtime 未就绪,
|
|
97
|
+
组件会进入可读空态,并通过 `runtime-error` 事件抛出异常,
|
|
98
|
+
同时提示你先引入 `@xq-labs/data-ui-v2/pie-chart/3d-runtime`。
|
|
80
99
|
|
|
81
100
|
## 组件能力概览
|
|
82
101
|
|
|
@@ -97,12 +116,19 @@ npm install echarts echarts-gl
|
|
|
97
116
|
- 支持 3D 饼图、环图、按值映射高度等能力
|
|
98
117
|
- 支持标签、引导线和 `customOption` 扩展
|
|
99
118
|
|
|
119
|
+
### RadarChart
|
|
120
|
+
|
|
121
|
+
- 支持 2D 雷达图
|
|
122
|
+
- 支持字段映射式指标配置,避免 ECharts 原生 value 数组顺序错位
|
|
123
|
+
- 支持面积雷达图、折线雷达图、系列色板和 `customOption` 扩展
|
|
124
|
+
|
|
100
125
|
## 示例与文档
|
|
101
126
|
|
|
102
127
|
- API 总览:`docs/api/overview.md`
|
|
103
128
|
- 可运行示例:`playground`
|
|
104
129
|
- 示例说明:`docs/examples/pie-chart.md`
|
|
105
130
|
- 示例说明:`docs/examples/bar-line-chart.md`
|
|
131
|
+
- 示例说明:`docs/examples/radar-chart.md`
|
|
106
132
|
- npm 包内离线文档:`node_modules/@xq-labs/data-ui-v2/docs/api/overview.md`
|
|
107
133
|
- npm 包内示例说明:`node_modules/@xq-labs/data-ui-v2/docs/examples/*.md`
|
|
108
134
|
|
package/docs/api/overview.md
CHANGED
|
@@ -19,13 +19,16 @@ npm install @xq-labs/data-ui-v2
|
|
|
19
19
|
|
|
20
20
|
宿主项目需要自行安装 `vue` 与 `echarts`。
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
如果你启用 `PieChart` 的 `dimension="3d"`,
|
|
23
|
+
请先安装 `echarts-gl`,并在**业务页面**中引入 3D 桥接入口:
|
|
24
24
|
|
|
25
|
-
```
|
|
26
|
-
|
|
25
|
+
```js
|
|
26
|
+
import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
如果项目多个页面都会使用 3D `PieChart`,
|
|
30
|
+
也可以在应用入口统一引入这个桥接入口。
|
|
31
|
+
|
|
29
32
|
---
|
|
30
33
|
|
|
31
34
|
## 2. 注册方式
|
|
@@ -47,11 +50,12 @@ Vue.use(DataUI)
|
|
|
47
50
|
|
|
48
51
|
```js
|
|
49
52
|
import Vue from 'vue'
|
|
50
|
-
import { BaseChart, BarLineChart, PieChart } from '@xq-labs/data-ui-v2'
|
|
53
|
+
import { BaseChart, BarLineChart, PieChart, RadarChart } from '@xq-labs/data-ui-v2'
|
|
51
54
|
|
|
52
55
|
Vue.component(BaseChart.name, BaseChart)
|
|
53
56
|
Vue.component(BarLineChart.name, BarLineChart)
|
|
54
57
|
Vue.component(PieChart.name, PieChart)
|
|
58
|
+
Vue.component(RadarChart.name, RadarChart)
|
|
55
59
|
```
|
|
56
60
|
|
|
57
61
|
### 2.3 子路径引入
|
|
@@ -62,6 +66,7 @@ Vue.component(PieChart.name, PieChart)
|
|
|
62
66
|
import BaseChart from '@xq-labs/data-ui-v2/es/base-chart'
|
|
63
67
|
import BarLineChart from '@xq-labs/data-ui-v2/es/bar-line-chart'
|
|
64
68
|
import PieChart from '@xq-labs/data-ui-v2/es/pie-chart'
|
|
69
|
+
import RadarChart from '@xq-labs/data-ui-v2/es/radar-chart'
|
|
65
70
|
```
|
|
66
71
|
|
|
67
72
|
---
|
|
@@ -85,8 +90,9 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
85
90
|
| `BaseChart` | 通用 ECharts 渲染壳 | 已有完整 option,只需要统一渲染、空态、loading |
|
|
86
91
|
| `BarLineChart` | 标准柱线图组件 | 基础柱图、圆柱、方柱、堆叠、双轴、柱线组合 |
|
|
87
92
|
| `PieChart` | 标准饼图组件 | 2D 饼图 / 环图 / 玫瑰图,3D 饼图 / 环图 / 标签引导线 |
|
|
93
|
+
| `RadarChart` | 标准雷达图组件 | 能力画像、指标评分、多对象指标对比 |
|
|
88
94
|
|
|
89
|
-
> 当前公开组件只有 `BaseChart`、`BarLineChart`、`PieChart`。
|
|
95
|
+
> 当前公开组件只有 `BaseChart`、`BarLineChart`、`PieChart`、`RadarChart`。
|
|
90
96
|
|
|
91
97
|
---
|
|
92
98
|
|
|
@@ -101,9 +107,10 @@ import '@xq-labs/data-ui-v2/theme-chalk/index.css'
|
|
|
101
107
|
|
|
102
108
|
补充说明:
|
|
103
109
|
|
|
104
|
-
- 2D
|
|
105
|
-
- 3D
|
|
106
|
-
-
|
|
110
|
+
- 2D 图表不会触发 3D runtime 接入要求。
|
|
111
|
+
- 3D 饼图需要业务项目安装 `echarts-gl`,并引入 3D 桥接入口。
|
|
112
|
+
- 当前推荐在使用 3D `PieChart` 的业务页面中引入。
|
|
113
|
+
- 如果 3D runtime 未就绪,`PieChart` 会进入可读空态,并抛出 `runtime-error` 事件。
|
|
107
114
|
|
|
108
115
|
---
|
|
109
116
|
|
|
@@ -186,7 +193,7 @@ const stateConfig = {
|
|
|
186
193
|
### 7.1 组件定位
|
|
187
194
|
|
|
188
195
|
`BarLineChart` 用于承接大多数柱线组合场景。
|
|
189
|
-
推荐先通过 `data + xAxisKey + series` 表达业务数据,再用 `variant`、`preset`、`customOption` 做增强。
|
|
196
|
+
推荐先通过 `data + xAxisKey + series` 表达业务数据,再用 `variant`、`preset`、`barBackground`、`customOption` 做增强。
|
|
190
197
|
|
|
191
198
|
### 7.2 Props
|
|
192
199
|
|
|
@@ -199,11 +206,30 @@ const stateConfig = {
|
|
|
199
206
|
| `preset` | `String` | `'compare'` | 预设:`compare` / `trend` / `rank` |
|
|
200
207
|
| `barWidth` | `Number` | `18` | 柱体宽度 |
|
|
201
208
|
| `barGap` | `Number \| String` | `8` | 柱间距 |
|
|
209
|
+
| `barBackground` | `Object` | `{}` | 柱形背景配置,为当前图中的柱系列渲染整列高度背景柱 |
|
|
210
|
+
| `xAxisScroll` | `Object` | `{}` | X 轴类目滚动配置,只作用于横轴 |
|
|
202
211
|
| `customOption` | `Object` | `{}` | 对 ECharts option 的补充覆盖 |
|
|
203
212
|
| `loading` | `Boolean` | `false` | 是否显示统一遮罩式 loading(非 ECharts 原生 loading) |
|
|
204
213
|
| `stateConfig` | `Object` | `{}` | 统一状态配置,原样透传给 `BaseChart` |
|
|
205
214
|
| `height` | `String \| Number` | `320` | 容器高度 |
|
|
206
215
|
|
|
216
|
+
`barBackground` 推荐写法:
|
|
217
|
+
|
|
218
|
+
```js
|
|
219
|
+
const barBackground = {
|
|
220
|
+
show: true,
|
|
221
|
+
colors: ['#FFFFFF', '#D8E4FF'],
|
|
222
|
+
opacity: 0.2
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
说明:
|
|
227
|
+
|
|
228
|
+
- `show`:是否开启柱形背景。
|
|
229
|
+
- `colors`:可选背景色板,支持 1~3 个色值;建议传不带 alpha 的颜色值,不传时按当前柱形默认背景色推导。
|
|
230
|
+
- `opacity`:背景柱透明度,推荐传 `0 ~ 1` 之间的小数。
|
|
231
|
+
- 背景高度语义:按当前坐标轴整列高度铺满,用来强化柱槽轮廓,不跟随单个数据值缩放。
|
|
232
|
+
|
|
207
233
|
### 7.3 BarLineChart 数据格式
|
|
208
234
|
|
|
209
235
|
`BarLineChart` 的数据通常拆成两部分:
|
|
@@ -319,20 +345,55 @@ colors: ['#A8BEFA', '#6B98F8']
|
|
|
319
345
|
colors: ['#A8BEFA', '#6B98F8', '#3EE8FE']
|
|
320
346
|
```
|
|
321
347
|
|
|
322
|
-
### 7.6
|
|
348
|
+
### 7.6 `xAxisScroll` 字段说明
|
|
349
|
+
|
|
350
|
+
`xAxisScroll` 用于横轴类目较多的场景。
|
|
351
|
+
它底层使用 ECharts `dataZoom`,只控制 X 轴,不会影响 Y 轴。
|
|
352
|
+
|
|
353
|
+
推荐写法:
|
|
354
|
+
|
|
355
|
+
```js
|
|
356
|
+
const xAxisScroll = {
|
|
357
|
+
enabled: true,
|
|
358
|
+
visibleCount: 8,
|
|
359
|
+
startPosition: 'end',
|
|
360
|
+
showSlider: true,
|
|
361
|
+
inside: true
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
字段说明:
|
|
366
|
+
|
|
367
|
+
- `enabled`:是否开启 X 轴滚动;默认不开启。
|
|
368
|
+
- `visibleCount`:初始窗口展示的类目数量,默认按 `8` 处理。
|
|
369
|
+
- `startPosition`:初始窗口位置,支持 `start` / `end`,默认 `end`,即展示最新一段数据。
|
|
370
|
+
- `startIndex`:初始窗口起始索引;传入合法数字时,优先级高于 `startPosition`。
|
|
371
|
+
- `showSlider`:是否显示底部滚动条,默认 `true`。
|
|
372
|
+
- `inside`:是否开启鼠标滚轮 / 触控板内部滚动,默认 `true`。
|
|
373
|
+
|
|
374
|
+
默认行为:
|
|
375
|
+
|
|
376
|
+
1. 当类目数量大于 `visibleCount` 时,组件生成 `dataZoom`。
|
|
377
|
+
2. 默认从数据末尾向前取 `visibleCount` 个类目,适合“最新数据优先展示”。
|
|
378
|
+
3. 当类目数量小于等于 `visibleCount` 时,不生成 `dataZoom`。
|
|
379
|
+
4. 开启底部滚动条时,组件默认把 `grid.bottom` 提升到 `56`,避免滚动条挤压坐标轴。
|
|
380
|
+
5. `customOption.dataZoom` 与 `customOption.grid.bottom` 优先级最高,可覆盖组件生成结果。
|
|
381
|
+
|
|
382
|
+
### 7.7 Events
|
|
323
383
|
|
|
324
384
|
| 事件名 | 参数 | 说明 |
|
|
325
385
|
| --- | --- | --- |
|
|
326
386
|
| `ready` | `chart` | 底层 ECharts 实例 |
|
|
327
387
|
| `chart-click` | `params` | 点击图形元素时触发 |
|
|
328
388
|
|
|
329
|
-
### 7.
|
|
389
|
+
### 7.8 常见场景
|
|
330
390
|
|
|
331
391
|
1. **基础柱线组合**:销售额 + 完成率双轴。
|
|
332
392
|
2. **圆柱视觉**:看板类数据强调“柱体感”。
|
|
333
393
|
3. **方柱视觉**:更偏装饰型、品牌型大屏风格。
|
|
334
394
|
4. **堆叠柱图**:多个系列共享一组类目。
|
|
335
|
-
5.
|
|
395
|
+
5. **横轴类目滚动**:通过 `xAxisScroll` 默认展示最新一段数据。
|
|
396
|
+
6. **自定义展示细节**:通过 `customOption` 补 tooltip、legend、grid、dataZoom。
|
|
336
397
|
|
|
337
398
|
推荐查阅:
|
|
338
399
|
|
|
@@ -360,8 +421,8 @@ colors: ['#A8BEFA', '#6B98F8', '#3EE8FE']
|
|
|
360
421
|
| `dimension` | `String` | `'2d'` | 维度:`2d` / `3d` |
|
|
361
422
|
| `preset` | `String` | `'ratio'` | 预设:`ratio` / `rank` |
|
|
362
423
|
| `heightMode` | `String` | `'equal'` | 3D 高度:`equal` / `value` |
|
|
363
|
-
| `minHeight` | `Number` | `
|
|
364
|
-
| `maxHeight` | `Number` | `
|
|
424
|
+
| `minHeight` | `Number` | `10` | 3D 最小扇区高度 |
|
|
425
|
+
| `maxHeight` | `Number` | `25` | 3D 最大扇区高度 |
|
|
365
426
|
| `internalDiameterRatio` | `Number` | `0.6` | 环图内径比例 |
|
|
366
427
|
| `roseRadiusRange` | `Array` | `[0.75, 1.15]` | 玫瑰图外半径映射范围 |
|
|
367
428
|
| `showLabelLine` | `Boolean` | `false` | 是否显示标签引导线 |
|
|
@@ -516,22 +577,35 @@ const labelOptions = {
|
|
|
516
577
|
- `percent`:组件内部计算出来的百分比。
|
|
517
578
|
- `data`:当前扇区对应的原始数据项。
|
|
518
579
|
|
|
519
|
-
### 8.6
|
|
580
|
+
### 8.6 hover tooltip 说明
|
|
581
|
+
|
|
582
|
+
`PieChart` 默认 hover tooltip 使用白底阴影卡片,
|
|
583
|
+
内容为“彩色圆点 + 名称:值”,例如 `● 已完成:140`。
|
|
584
|
+
|
|
585
|
+
3D 饼图的 surface hover 参数不是业务值,
|
|
586
|
+
组件会自动回退到扇区原始数据,避免显示参数方程采样值。
|
|
587
|
+
|
|
588
|
+
如果业务需要展示百分比、单位或多行内容,
|
|
589
|
+
可通过 `customOption.tooltip.formatter` 自定义。
|
|
590
|
+
|
|
591
|
+
### 8.7 Events
|
|
520
592
|
|
|
521
593
|
| 事件名 | 参数 | 说明 |
|
|
522
594
|
| --- | --- | --- |
|
|
523
595
|
| `ready` | `chart` | 底层 ECharts 实例 |
|
|
524
596
|
| `chart-click` | `params` | 点击图形元素时触发 |
|
|
525
|
-
| `runtime-error` | `error` | 3D
|
|
597
|
+
| `runtime-error` | `error` | 3D 运行时未就绪或接入失败时触发 |
|
|
526
598
|
|
|
527
|
-
### 8.
|
|
599
|
+
### 8.8 3D 依赖说明
|
|
528
600
|
|
|
529
|
-
- `dimension="2d"`
|
|
530
|
-
- `dimension="3d"`
|
|
531
|
-
- 3D
|
|
532
|
-
-
|
|
601
|
+
- `dimension="2d"` 时,不需要引入 `echarts-gl`。
|
|
602
|
+
- `dimension="3d"` 时,需要业务项目先安装 `echarts-gl`。
|
|
603
|
+
- 当前推荐直接在使用 3D `PieChart` 的业务页面中写 `import '@xq-labs/data-ui-v2/pie-chart/3d-runtime'`。
|
|
604
|
+
- 如果多个页面都用 3D,也可以在应用入口统一引入这个桥接入口。
|
|
605
|
+
- 包内保留 `pie-chart/3d-runtime.js` 物理入口,用于兼容不识别 `package.json#exports` 的老 webpack / Vue CLI 链路。
|
|
606
|
+
- 若 3D 运行时未就绪,组件会优先显示内部错误文案,但仍保留 `stateConfig.empty.image` 与 `stateConfig.loading.text`。
|
|
533
607
|
|
|
534
|
-
### 8.
|
|
608
|
+
### 8.9 常见场景
|
|
535
609
|
|
|
536
610
|
1. **普通饼图**:`variant="pie"`,适合占比展示。
|
|
537
611
|
2. **环图**:`variant="ring"`,适合中心留白展示关键指标。
|
|
@@ -552,11 +626,131 @@ const labelOptions = {
|
|
|
552
626
|
|
|
553
627
|
---
|
|
554
628
|
|
|
555
|
-
## 9.
|
|
629
|
+
## 9. `RadarChart` API
|
|
630
|
+
|
|
631
|
+
### 9.1 组件定位
|
|
632
|
+
|
|
633
|
+
`RadarChart` 用于承接能力画像、指标评分、多对象指标对比等场景。
|
|
634
|
+
推荐通过 `data + indicators` 表达业务数据,由组件内部把字段映射为 ECharts `value` 数组。
|
|
635
|
+
|
|
636
|
+
### 9.2 Props
|
|
637
|
+
|
|
638
|
+
| Prop | 类型 | 默认值 | 说明 |
|
|
639
|
+
| --- | --- | --- | --- |
|
|
640
|
+
| `data` | `Array` | `[]` | 雷达图业务数据数组 |
|
|
641
|
+
| `indicators` | `Array` | `[]` | 雷达指标配置数组 |
|
|
642
|
+
| `nameKey` | `String` | `'name'` | 系列名称字段 |
|
|
643
|
+
| `variant` | `String` | `'area'` | 形态:`area` / `line` |
|
|
644
|
+
| `preset` | `String` | `'compare'` | 预设:`compare` / `score` |
|
|
645
|
+
| `colors` | `Array` | `[]` | 组件级系列色板,按数据顺序分配 |
|
|
646
|
+
| `customOption` | `Object` | `{}` | 对 ECharts option 的补充覆盖 |
|
|
647
|
+
| `loading` | `Boolean` | `false` | 是否显示统一遮罩式 loading |
|
|
648
|
+
| `stateConfig` | `Object` | `{}` | 统一状态配置,原样透传给 `BaseChart` |
|
|
649
|
+
| `height` | `String \| Number` | `320` | 容器高度 |
|
|
650
|
+
|
|
651
|
+
### 9.3 RadarChart 数据格式
|
|
652
|
+
|
|
653
|
+
`RadarChart` 的数据由两部分组成:
|
|
654
|
+
|
|
655
|
+
1. `indicators`:定义雷达轴,`key` 决定从数据中取哪个字段。
|
|
656
|
+
2. `data`:每一项代表一个雷达系列,例如本月、上月、目标值。
|
|
657
|
+
|
|
658
|
+
推荐写法:
|
|
659
|
+
|
|
660
|
+
```js
|
|
661
|
+
const indicators = [
|
|
662
|
+
{ key: 'quality', name: '质量', max: 100 },
|
|
663
|
+
{ key: 'efficiency', name: '效率', max: 100 },
|
|
664
|
+
{ key: 'cost', name: '成本控制', max: 100 },
|
|
665
|
+
{ key: 'risk', name: '风险控制', max: 100 }
|
|
666
|
+
]
|
|
667
|
+
|
|
668
|
+
const data = [
|
|
669
|
+
{
|
|
670
|
+
name: '本月',
|
|
671
|
+
quality: 86,
|
|
672
|
+
efficiency: 78,
|
|
673
|
+
cost: 92,
|
|
674
|
+
risk: 70
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
name: '上月',
|
|
678
|
+
quality: 80,
|
|
679
|
+
efficiency: 72,
|
|
680
|
+
cost: 88,
|
|
681
|
+
risk: 76
|
|
682
|
+
}
|
|
683
|
+
]
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
关键规则:
|
|
687
|
+
|
|
688
|
+
- `indicators[i].key` 必须是非空字符串,非法指标会被过滤。
|
|
689
|
+
- `indicators[i].name` 只负责展示,不参与取值。
|
|
690
|
+
- `indicators[i].max` 非法时回退为 `100`,`min` 非法时回退为 `0`。
|
|
691
|
+
- `data[i][nameKey]` 用于系列名称,缺失时回退为 `数据1`、`数据2`。
|
|
692
|
+
- `data[i][indicator.key]` 会转为数值,非法值回退为 `0`。
|
|
693
|
+
|
|
694
|
+
### 9.4 颜色配置
|
|
695
|
+
|
|
696
|
+
`RadarChart` 支持组件级色板和单系列颜色覆盖。
|
|
697
|
+
|
|
698
|
+
颜色优先级:
|
|
699
|
+
|
|
700
|
+
```text
|
|
701
|
+
data[i].color → colors[index] → DEFAULT_COLORS[index]
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
示例:
|
|
705
|
+
|
|
706
|
+
```js
|
|
707
|
+
const colors = ['#6B98F8', '#FF8A5B']
|
|
708
|
+
|
|
709
|
+
const data = [
|
|
710
|
+
{
|
|
711
|
+
name: '本月',
|
|
712
|
+
color: '#6B98F8',
|
|
713
|
+
quality: 86,
|
|
714
|
+
efficiency: 78
|
|
715
|
+
}
|
|
716
|
+
]
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
说明:
|
|
720
|
+
|
|
721
|
+
- `data[i].color` 适合单个系列特殊强调。
|
|
722
|
+
- `colors` 适合页面统一传业务色板。
|
|
723
|
+
- `variant="area"` 会使用系列色生成半透明面积填充。
|
|
724
|
+
- `variant="line"` 只使用系列色绘制折线和拐点,不生成面积填充。
|
|
725
|
+
|
|
726
|
+
### 9.5 Events
|
|
727
|
+
|
|
728
|
+
| 事件名 | 参数 | 说明 |
|
|
729
|
+
| --- | --- | --- |
|
|
730
|
+
| `ready` | `chart` | 底层 ECharts 实例 |
|
|
731
|
+
| `chart-click` | `params` | 点击图形元素时触发 |
|
|
732
|
+
|
|
733
|
+
### 9.6 常见场景
|
|
734
|
+
|
|
735
|
+
1. **能力画像**:多个能力维度综合展示。
|
|
736
|
+
2. **指标评分**:单个对象的健康度或成熟度评分。
|
|
737
|
+
3. **多对象对比**:本月/上月、团队 A/团队 B 对比。
|
|
738
|
+
4. **颜色强调**:通过 `colors` 或 `data[i].color` 控制系列色。
|
|
739
|
+
5. **自定义展示细节**:通过 `customOption` 补 title、tooltip、radar 样式。
|
|
740
|
+
|
|
741
|
+
推荐查阅:
|
|
742
|
+
|
|
743
|
+
- `docs/examples/radar-chart.md`
|
|
744
|
+
- Playground 路由:`/radar-chart/basic`
|
|
745
|
+
- Playground 路由:`/radar-chart/custom`
|
|
746
|
+
|
|
747
|
+
---
|
|
748
|
+
|
|
749
|
+
## 10. 外部配置怎么传
|
|
556
750
|
|
|
557
751
|
推荐用 `v-bind` 传一个清晰的配置对象,而不是在模板里零散写大量字面量。
|
|
558
752
|
|
|
559
|
-
###
|
|
753
|
+
### 10.1 `BarLineChart`
|
|
560
754
|
|
|
561
755
|
```vue
|
|
562
756
|
<BarLineChart
|
|
@@ -566,13 +760,15 @@ const labelOptions = {
|
|
|
566
760
|
series,
|
|
567
761
|
variant: 'cylinder',
|
|
568
762
|
preset: 'compare',
|
|
763
|
+
barBackground,
|
|
764
|
+
xAxisScroll,
|
|
569
765
|
stateConfig,
|
|
570
766
|
customOption
|
|
571
767
|
}"
|
|
572
768
|
/>
|
|
573
769
|
```
|
|
574
770
|
|
|
575
|
-
###
|
|
771
|
+
### 10.2 `PieChart`
|
|
576
772
|
|
|
577
773
|
```vue
|
|
578
774
|
<PieChart
|
|
@@ -581,8 +777,8 @@ const labelOptions = {
|
|
|
581
777
|
variant: 'ring',
|
|
582
778
|
dimension: '3d',
|
|
583
779
|
heightMode: 'value',
|
|
584
|
-
minHeight:
|
|
585
|
-
maxHeight:
|
|
780
|
+
minHeight: 10,
|
|
781
|
+
maxHeight: 25,
|
|
586
782
|
showLabelLine: true,
|
|
587
783
|
labelOptions,
|
|
588
784
|
stateConfig,
|
|
@@ -591,13 +787,30 @@ const labelOptions = {
|
|
|
591
787
|
/>
|
|
592
788
|
```
|
|
593
789
|
|
|
790
|
+
### 10.3 `RadarChart`
|
|
791
|
+
|
|
792
|
+
```vue
|
|
793
|
+
<RadarChart
|
|
794
|
+
v-bind="{
|
|
795
|
+
data,
|
|
796
|
+
indicators,
|
|
797
|
+
variant: 'area',
|
|
798
|
+
preset: 'compare',
|
|
799
|
+
colors,
|
|
800
|
+
stateConfig,
|
|
801
|
+
customOption
|
|
802
|
+
}"
|
|
803
|
+
/>
|
|
804
|
+
```
|
|
805
|
+
|
|
594
806
|
---
|
|
595
807
|
|
|
596
|
-
##
|
|
808
|
+
## 11. 文档与示例导航
|
|
597
809
|
|
|
598
810
|
- API 总览:`docs/api/overview.md`
|
|
599
811
|
- 柱线图示例说明:`docs/examples/bar-line-chart.md`
|
|
600
812
|
- 饼图示例说明:`docs/examples/pie-chart.md`
|
|
813
|
+
- 雷达图示例说明:`docs/examples/radar-chart.md`
|
|
601
814
|
- 可运行 Demo 库:`playground`
|
|
602
815
|
|
|
603
816
|
建议阅读顺序:
|
|
@@ -27,6 +27,8 @@ Playground 中 `BarLineChart` 按分组路由组织:
|
|
|
27
27
|
preset,
|
|
28
28
|
barWidth,
|
|
29
29
|
barGap,
|
|
30
|
+
barBackground,
|
|
31
|
+
xAxisScroll,
|
|
30
32
|
customOption,
|
|
31
33
|
stateConfig
|
|
32
34
|
}"
|
|
@@ -41,12 +43,28 @@ Playground 中 `BarLineChart` 按分组路由组织:
|
|
|
41
43
|
- `variant`:`flat` / `cylinder` / `cube`。
|
|
42
44
|
- `preset`:展示预设。
|
|
43
45
|
- `barWidth`、`barGap`:柱体宽度与间距。
|
|
46
|
+
- `barBackground`:柱形背景配置,用于为当前图中的柱系列补整列高度背景柱。
|
|
47
|
+
- `xAxisScroll`:X 轴滚动配置,用于类目过多时默认展示最新数据窗口。
|
|
44
48
|
- `customOption`:ECharts 展示细节覆盖。
|
|
45
49
|
- `stateConfig`:统一收拢空态文案、空态图和 loading 文案。
|
|
46
50
|
|
|
47
51
|
推荐结构:
|
|
48
52
|
|
|
49
53
|
```js
|
|
54
|
+
const xAxisScroll = {
|
|
55
|
+
enabled: true,
|
|
56
|
+
visibleCount: 8,
|
|
57
|
+
startPosition: 'end',
|
|
58
|
+
showSlider: true,
|
|
59
|
+
inside: true
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const barBackground = {
|
|
63
|
+
show: true,
|
|
64
|
+
colors: ['#FFFFFF', '#D8E4FF'],
|
|
65
|
+
opacity: 0.2
|
|
66
|
+
}
|
|
67
|
+
|
|
50
68
|
const stateConfig = {
|
|
51
69
|
empty: {
|
|
52
70
|
text: '暂无柱线图数据',
|
|
@@ -58,17 +76,39 @@ const stateConfig = {
|
|
|
58
76
|
}
|
|
59
77
|
```
|
|
60
78
|
|
|
79
|
+
`xAxisScroll` 字段说明:
|
|
80
|
+
|
|
81
|
+
- `enabled`:是否开启 X 轴滚动;默认不开启。
|
|
82
|
+
- `visibleCount`:窗口内展示的类目数量,默认按 `8` 处理。
|
|
83
|
+
- `startPosition`:初始窗口位置,`end` 表示从末尾展示最新数据,`start` 表示从开头展示。
|
|
84
|
+
- `startIndex`:指定窗口起始索引;传入合法数字时优先级高于 `startPosition`。
|
|
85
|
+
- `showSlider`:是否显示底部滚动条。
|
|
86
|
+
- `inside`:是否允许鼠标滚轮 / 触控板在图表内部滚动。
|
|
87
|
+
|
|
88
|
+
`barBackground` 字段说明:
|
|
89
|
+
|
|
90
|
+
- `show`:是否开启柱形背景。
|
|
91
|
+
- `colors`:可选背景色板,支持 1~3 个色值;建议传不带 alpha 的颜色值,不传时按当前柱形默认背景色推导。
|
|
92
|
+
- `opacity`:背景柱透明度,推荐传 `0 ~ 1` 之间的小数。
|
|
93
|
+
|
|
94
|
+
背景高度语义:
|
|
95
|
+
|
|
96
|
+
- `barBackground` 渲染的是当前坐标轴下的整列高度背景柱,不跟随单个数据值缩放。
|
|
97
|
+
|
|
61
98
|
## 3. 如何自定义(推荐顺序)
|
|
62
99
|
|
|
63
100
|
1. **优先 `series` 表达业务语义**:先确定字段、柱线类型、双轴和堆叠关系。
|
|
64
101
|
2. **用 `series.colors` 控制系列配色**:把业务色板放在系列层。
|
|
65
|
-
3.
|
|
66
|
-
4.
|
|
102
|
+
3. **用 `barBackground` 强化柱槽轮廓**:需要整列高度背景时,再开启背景柱并调透明度。
|
|
103
|
+
4. **用 `xAxisScroll` 控制横轴窗口**:类目较多时默认展示最新 `visibleCount` 个类目。
|
|
104
|
+
5. **`stateConfig` 收拢状态文案**:空态图、空态文案、loading 文案统一从这里传。
|
|
105
|
+
6. **`customOption` 补充细节**:用于 tooltip、legend、grid、坐标轴样式、dataZoom 等展示项。
|
|
67
106
|
|
|
68
107
|
不建议用 `customOption` 直接整体替换关键业务结构。
|
|
108
|
+
如果必须完全自定义滚动条,可通过 `customOption.dataZoom` 覆盖 `xAxisScroll` 生成结果。
|
|
69
109
|
|
|
70
110
|
## 4. 可执行验收要点
|
|
71
111
|
|
|
72
112
|
- 页面分组名称与路由一致:基础用法、圆柱样式、方柱样式、进阶配置、customOption 与自定义、实验室。
|
|
73
|
-
- 文档示例包含 `series.colors`、`stateConfig` 与 `customOption`。
|
|
113
|
+
- 文档示例包含 `series.colors`、`barBackground`、`xAxisScroll`、`stateConfig` 与 `customOption`。
|
|
74
114
|
- 文档明确实验室边界与推荐自定义顺序。
|