@travel-screen/l-module-components 1.0.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 +86 -0
- package/package.json +34 -0
- package/src/index.js +60 -0
- package/src/l-bar-chart/README.md +302 -0
- package/src/l-bar-chart/index.vue +405 -0
- package/src/l-bar-chart/interface/index.js +210 -0
- package/src/l-data-panel/README.md +331 -0
- package/src/l-data-panel/img/images.js +47 -0
- package/src/l-data-panel/img/l-data-panel_bg_1.png +0 -0
- package/src/l-data-panel/img/l-data-panel_bg_2.png +0 -0
- package/src/l-data-panel/img/l-data-panel_bg_3.png +0 -0
- package/src/l-data-panel/index.vue +150 -0
- package/src/l-data-panel/interface/index.js +249 -0
- package/src/l-data-ring/README.md +292 -0
- package/src/l-data-ring/img/images.js +21 -0
- package/src/l-data-ring/img/l-data-ring_bg.png +0 -0
- package/src/l-data-ring/index.vue +93 -0
- package/src/l-data-ring/interface/index.js +116 -0
- package/src/l-date-picker/README.md +276 -0
- package/src/l-date-picker/index.vue +185 -0
- package/src/l-date-picker/interface/index.js +128 -0
- package/src/l-icon-label/README.md +356 -0
- package/src/l-icon-label/img/images.js +28 -0
- package/src/l-icon-label/img/l-icon-label_bg.png +0 -0
- package/src/l-icon-label/img/l-icon-label_icon.png +0 -0
- package/src/l-icon-label/index.vue +162 -0
- package/src/l-icon-label/interface/index.js +234 -0
- package/src/l-label-value/README.md +358 -0
- package/src/l-label-value/img/images.js +19 -0
- package/src/l-label-value/img/l-label-value_line.png +0 -0
- package/src/l-label-value/index.vue +132 -0
- package/src/l-label-value/interface/index.js +116 -0
- package/src/l-metric-tile/README.md +391 -0
- package/src/l-metric-tile/img/images.js +19 -0
- package/src/l-metric-tile/img/l-metric-tile_bg_1.png +0 -0
- package/src/l-metric-tile/index.vue +138 -0
- package/src/l-metric-tile/interface/index.js +241 -0
- package/src/l-module-box/README.md +289 -0
- package/src/l-module-box/img/images.js +28 -0
- package/src/l-module-box/img/l-module-box_bg.png +0 -0
- package/src/l-module-box/img/l-module-box_icon.png +0 -0
- package/src/l-module-box/index.vue +125 -0
- package/src/l-module-box/interface/index.js +93 -0
- package/src/l-module-tag/README.md +243 -0
- package/src/l-module-tag/index.vue +137 -0
- package/src/l-module-tag/interface/index.js +91 -0
- package/src/l-rank-list/README.md +553 -0
- package/src/l-rank-list/img/images.js +34 -0
- package/src/l-rank-list/img/l-rank-list_icon_line.png +0 -0
- package/src/l-rank-list/img/l-rank-list_icon_rank_1.png +0 -0
- package/src/l-rank-list/img/l-rank-list_icon_rank_2.png +0 -0
- package/src/l-rank-list/img/l-rank-list_icon_rank_other.png +0 -0
- package/src/l-rank-list/index.vue +610 -0
- package/src/l-rank-list/interface/index.js +343 -0
- package/src/l-stat-card/README.md +309 -0
- package/src/l-stat-card/img/images.js +36 -0
- package/src/l-stat-card/img/img-bg.png +0 -0
- package/src/l-stat-card/img/l-stat-card_img_1.png +0 -0
- package/src/l-stat-card/index.vue +136 -0
- package/src/l-stat-card/interface/index.js +159 -0
- package/src/l-tabs/README.md +285 -0
- package/src/l-tabs/img/images.js +19 -0
- package/src/l-tabs/img/l-tabs_bg.png +0 -0
- package/src/l-tabs/index.vue +97 -0
- package/src/l-tabs/interface/index.js +115 -0
- package/src/l-trend-card/README.md +415 -0
- package/src/l-trend-card/img/images.js +41 -0
- package/src/l-trend-card/img/l-trend-card_bg.png +0 -0
- package/src/l-trend-card/img/l-trend-card_icon_1.png +0 -0
- package/src/l-trend-card/img/l-trend-card_icon_down.png +0 -0
- package/src/l-trend-card/img/l-trend-card_icon_up.png +0 -0
- package/src/l-trend-card/index.vue +181 -0
- package/src/l-trend-card/interface/index.js +243 -0
- package/src/utils/tooltip.js +30 -0
- package/src/utils/util.js +27 -0
package/README.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
AIGC:
|
|
3
|
+
ContentProducer: '001191110102MAD55U9H0F10002'
|
|
4
|
+
ContentPropagator: '001191110102MAD55U9H0F10002'
|
|
5
|
+
Label: '1'
|
|
6
|
+
ProduceID: '08114faf-f9a3-45bb-9dd9-aec85ed6e46e'
|
|
7
|
+
PropagateID: '08114faf-f9a3-45bb-9dd9-aec85ed6e46e'
|
|
8
|
+
ReservedCode1: '1979d7a3-a59f-4722-a4f7-c6d43d40fcac'
|
|
9
|
+
ReservedCode2: '1979d7a3-a59f-4722-a4f7-c6d43d40fcac'
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# L-Module-Components
|
|
13
|
+
|
|
14
|
+
数据可视化大屏组件库 - 暗黑科技风 Vue 2 组件集。
|
|
15
|
+
|
|
16
|
+
## 安装
|
|
17
|
+
|
|
18
|
+
已在主项目 `package.json` 中配置为本地依赖:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
"l-module-components": "file:./lib/l-module-components"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
执行 `pnpm install` 即可安装。
|
|
25
|
+
|
|
26
|
+
## 使用方式
|
|
27
|
+
|
|
28
|
+
### 全量注册
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
import LModuleComponents from 'l-module-components/src'
|
|
32
|
+
|
|
33
|
+
Vue.use(LModuleComponents)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
注册后可在模板中直接使用所有组件:
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<l-module-box title="客流分析">
|
|
40
|
+
<l-bar-chart :dataList="chartData" />
|
|
41
|
+
</l-module-box>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 按需导入
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
import { LBarChart, LModuleBox, LTrendCard } from 'l-module-components/src'
|
|
48
|
+
|
|
49
|
+
export default {
|
|
50
|
+
components: { LBarChart, LModuleBox, LTrendCard }
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 导入工具函数
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
import { dealPercentdDisplay, judgeRateType } from 'l-module-components/src'
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 组件列表
|
|
61
|
+
|
|
62
|
+
| 组件 | 标签名 | 说明 |
|
|
63
|
+
|------|--------|------|
|
|
64
|
+
| LBarChart | `<l-bar-chart>` | ECharts 柱状图 |
|
|
65
|
+
| LDataPanel | `<l-data-panel>` | 3卡片数据面板 |
|
|
66
|
+
| LDataRing | `<l-data-ring>` | 环形指标展示 |
|
|
67
|
+
| LDatePicker | `<l-date-picker>` | 日期选择器(基于 Element UI) |
|
|
68
|
+
| LIconLabel | `<l-icon-label>` | 图标标签卡片 |
|
|
69
|
+
| LLabelValue | `<l-label-value>` | 标签数值展示 |
|
|
70
|
+
| LMetricTile | `<l-metric-tile>` | 指标卡片 |
|
|
71
|
+
| LModuleBox | `<l-module-box>` | 模块容器 |
|
|
72
|
+
| LModuleTag | `<l-module-tag>` | 模块标签 |
|
|
73
|
+
| LRankList | `<l-rank-list>` | 排行榜列表 |
|
|
74
|
+
| LStatCard | `<l-stat-card>` | 统计卡片 |
|
|
75
|
+
| LTabs | `<l-tabs>` | 选项卡 |
|
|
76
|
+
| LTrendCard | `<l-trend-card>` | 趋势卡片 |
|
|
77
|
+
|
|
78
|
+
## 依赖说明
|
|
79
|
+
|
|
80
|
+
本组件库依赖以下第三方包(已声明在 peerDependencies/dependencies 中):
|
|
81
|
+
|
|
82
|
+
- `vue` ^2.6.0(宿主项目提供)
|
|
83
|
+
- `echarts` ^5.5.1(LBarChart 使用)
|
|
84
|
+
- `element-ui` 2.13.2(LDatePicker 使用 el-date-picker)
|
|
85
|
+
|
|
86
|
+
> AI生成
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@travel-screen/l-module-components",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "数据可视化大屏组件库 - 暗黑科技风 Vue 2 组件集",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"src",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "vue-cli-service build --target lib --name l-module-components --dest lib src/index.js"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"echarts": "^5.5.1",
|
|
18
|
+
"element-ui": "2.13.2"
|
|
19
|
+
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"vue": "^2.6.0"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"vue",
|
|
25
|
+
"vue2",
|
|
26
|
+
"component",
|
|
27
|
+
"dashboard",
|
|
28
|
+
"echarts",
|
|
29
|
+
"datav",
|
|
30
|
+
"dark-theme",
|
|
31
|
+
"visualization"
|
|
32
|
+
],
|
|
33
|
+
"license": "MIT"
|
|
34
|
+
}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L-Module-Components 入口文件
|
|
3
|
+
* 支持全量注册(Vue.use)和按需导入
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// 按需导出各组件
|
|
7
|
+
export { default as LBarChart } from './l-bar-chart'
|
|
8
|
+
export { default as LDataPanel } from './l-data-panel'
|
|
9
|
+
export { default as LDataRing } from './l-data-ring'
|
|
10
|
+
export { default as LDatePicker } from './l-date-picker'
|
|
11
|
+
export { default as LIconLabel } from './l-icon-label'
|
|
12
|
+
export { default as LLabelValue } from './l-label-value'
|
|
13
|
+
export { default as LMetricTile } from './l-metric-tile'
|
|
14
|
+
export { default as LModuleBox } from './l-module-box'
|
|
15
|
+
export { default as LModuleTag } from './l-module-tag'
|
|
16
|
+
export { default as LRankList } from './l-rank-list'
|
|
17
|
+
export { default as LStatCard } from './l-stat-card'
|
|
18
|
+
export { default as LTabs } from './l-tabs'
|
|
19
|
+
export { default as LTrendCard } from './l-trend-card'
|
|
20
|
+
|
|
21
|
+
// 导出工具函数
|
|
22
|
+
export { dealPercentdDisplay, judgeRateType } from './utils/util'
|
|
23
|
+
export { tooltipItemsHtmlString } from './utils/tooltip'
|
|
24
|
+
|
|
25
|
+
// 组件列表
|
|
26
|
+
const components = [
|
|
27
|
+
require('./l-bar-chart').default,
|
|
28
|
+
require('./l-data-panel').default,
|
|
29
|
+
require('./l-data-ring').default,
|
|
30
|
+
require('./l-date-picker').default,
|
|
31
|
+
require('./l-icon-label').default,
|
|
32
|
+
require('./l-label-value').default,
|
|
33
|
+
require('./l-metric-tile').default,
|
|
34
|
+
require('./l-module-box').default,
|
|
35
|
+
require('./l-module-tag').default,
|
|
36
|
+
require('./l-rank-list').default,
|
|
37
|
+
require('./l-stat-card').default,
|
|
38
|
+
require('./l-tabs').default,
|
|
39
|
+
require('./l-trend-card').default
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 全量注册所有组件
|
|
44
|
+
* @param {Object} Vue - Vue 构造函数
|
|
45
|
+
*/
|
|
46
|
+
const install = function(Vue) {
|
|
47
|
+
components.forEach(component => {
|
|
48
|
+
Vue.component(component.name, component)
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// 支持浏览器直接引入(CDN 方式)
|
|
53
|
+
if (typeof window !== 'undefined' && window.Vue) {
|
|
54
|
+
install(window.Vue)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default {
|
|
58
|
+
version: '1.0.0',
|
|
59
|
+
install
|
|
60
|
+
}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
---
|
|
2
|
+
AIGC:
|
|
3
|
+
ContentProducer: '001191110102MAD55U9H0F10002'
|
|
4
|
+
ContentPropagator: '001191110102MAD55U9H0F10002'
|
|
5
|
+
Label: '1'
|
|
6
|
+
ProduceID: '206b7c92-a1d7-4576-ad36-dbf6c00b4b50'
|
|
7
|
+
PropagateID: '206b7c92-a1d7-4576-ad36-dbf6c00b4b50'
|
|
8
|
+
ReservedCode1: '45845310-f991-4483-a31d-adf048dad8a3'
|
|
9
|
+
ReservedCode2: '45845310-f991-4483-a31d-adf048dad8a3'
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# LBarChart 组件说明
|
|
13
|
+
|
|
14
|
+
## 概述
|
|
15
|
+
|
|
16
|
+
`LBarChart` 是一个参数化驱动的柱状图组件,采用类似 Element UI 的封装方式。所有 ECharts 配置(渐变色、柱状图样式、图例、坐标轴等)均通过 props 参数动态控制。
|
|
17
|
+
|
|
18
|
+
## 核心特性
|
|
19
|
+
|
|
20
|
+
- ✅ **Props 驱动**:所有样式通过 props 参数控制,类似 Element UI
|
|
21
|
+
- ✅ **高度灵活**:支持自定义渐变色、柱状图宽度、圆角、图例等
|
|
22
|
+
- ✅ **导出功能**:支持导出图片和 CSV 数据
|
|
23
|
+
- ✅ **滚动条支持**:自动判断或手动控制 X 轴滚动条
|
|
24
|
+
- ✅ **工具箱**:支持保存为图片、数据视图、导出 CSV
|
|
25
|
+
|
|
26
|
+
## 文件结构
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
l-bar-chart/
|
|
30
|
+
├── interface/
|
|
31
|
+
│ └── index.js # Props 定义(30+ 个参数)
|
|
32
|
+
├── index.vue # 主组件
|
|
33
|
+
└── README.md # 组件说明文档
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Props 参数
|
|
37
|
+
|
|
38
|
+
### 基础配置
|
|
39
|
+
|
|
40
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
41
|
+
|--------|------|--------|------|
|
|
42
|
+
| `width` | String | `'100%'` | 容器宽度 |
|
|
43
|
+
| `height` | String | `'100%'` | 容器高度 |
|
|
44
|
+
| `title` | String | `''` | 图表标题(Y轴名称) |
|
|
45
|
+
| `tooltips` | String | `''` | 提示框单位文字 |
|
|
46
|
+
| `dataList` | Array | `[]` | 图表数据:`[类型数组, X轴数据, 多系列数据]` |
|
|
47
|
+
| `animation` | Boolean | `false` | 是否开启动画 |
|
|
48
|
+
|
|
49
|
+
### 柱状图样式
|
|
50
|
+
|
|
51
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
52
|
+
|--------|------|--------|------|
|
|
53
|
+
| `barWidth` | Number | `7` | 柱状图宽度(像素) |
|
|
54
|
+
| `barBorderRadius` | Array/Object | `[5, 5, 0, 0]` | 柱状图圆角:`[上左, 上右, 下右, 下左]` |
|
|
55
|
+
| `lineColor` | Array | `[]` | 柱状图渐变色配置数组 |
|
|
56
|
+
| `showAreaStyle` | Boolean | `true` | 是否显示渐变区域 |
|
|
57
|
+
|
|
58
|
+
### 图例配置
|
|
59
|
+
|
|
60
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
61
|
+
|--------|------|--------|------|
|
|
62
|
+
| `legendIsShow` | Boolean | `true` | 是否显示图例 |
|
|
63
|
+
| `legendTop` | Number | `-15` | 图例顶部偏移 |
|
|
64
|
+
| `legendIcon` | String/Boolean | `'circle'` | 图例图标形状 |
|
|
65
|
+
| `itemWidth` | Number | `10` | 图例图标宽度 |
|
|
66
|
+
| `itemHeight` | Number | `10` | 图例图标高度 |
|
|
67
|
+
|
|
68
|
+
### 字体样式
|
|
69
|
+
|
|
70
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
71
|
+
|--------|------|--------|------|
|
|
72
|
+
| `fontColor` | String | `'rgba(188, 205, 235, 1)'` | 字体颜色 |
|
|
73
|
+
| `fontSize` | Number | `14` | 字体大小 |
|
|
74
|
+
| `toolSize` | Number | `null` | 提示框字体大小 |
|
|
75
|
+
|
|
76
|
+
### 网格配置
|
|
77
|
+
|
|
78
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
79
|
+
|--------|------|--------|------|
|
|
80
|
+
| `grid` | Object | `{ left: 50, right: 20, top: 25, bottom: 91 }` | 图表边距 |
|
|
81
|
+
|
|
82
|
+
### X轴配置
|
|
83
|
+
|
|
84
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
85
|
+
|--------|------|--------|------|
|
|
86
|
+
| `interval` | Number/String | `'auto'` | X轴标签间隔 |
|
|
87
|
+
|
|
88
|
+
### Y轴配置
|
|
89
|
+
|
|
90
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
91
|
+
|--------|------|--------|------|
|
|
92
|
+
| `yMax` | Number | `null` | Y轴最大值 |
|
|
93
|
+
| `yInterval` | Number | `null` | Y轴刻度间隔 |
|
|
94
|
+
| `axisLabelShow` | Boolean | `true` | 是否显示Y轴标签 |
|
|
95
|
+
|
|
96
|
+
### 工具箱配置
|
|
97
|
+
|
|
98
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
99
|
+
|--------|------|--------|------|
|
|
100
|
+
| `showToolbox` | Boolean | `false` | 是否显示工具箱 |
|
|
101
|
+
| `showDataView` | Boolean | `false` | 是否显示数据视图 |
|
|
102
|
+
|
|
103
|
+
### 导出配置
|
|
104
|
+
|
|
105
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
106
|
+
|--------|------|--------|------|
|
|
107
|
+
| `exportFileName` | String | `'chart-export'` | 导出文件名 |
|
|
108
|
+
| `exportPixelRatio` | Number | `2` | 导出图片像素比 |
|
|
109
|
+
| `exportType` | String | `'png'` | 导出图片类型(png/jpeg) |
|
|
110
|
+
|
|
111
|
+
### 滚动条配置
|
|
112
|
+
|
|
113
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
114
|
+
|--------|------|--------|------|
|
|
115
|
+
| `showDataZoom` | Boolean/String | `'auto'` | 是否显示滚动条 |
|
|
116
|
+
| `dataZoomThreshold` | Number | `15` | 滚动条阈值 |
|
|
117
|
+
| `dataZoomStart` | Number | `0` | 滚动条起始位置 |
|
|
118
|
+
| `dataZoomEnd` | Number | `50` | 滚动条结束位置 |
|
|
119
|
+
| `dataZoomHeight` | Number | `20` | 滚动条高度 |
|
|
120
|
+
|
|
121
|
+
## 使用方式
|
|
122
|
+
|
|
123
|
+
### 基本使用
|
|
124
|
+
|
|
125
|
+
```vue
|
|
126
|
+
<template>
|
|
127
|
+
<l-bar-chart
|
|
128
|
+
:dataList="chartData"
|
|
129
|
+
title="单位:人次"
|
|
130
|
+
/>
|
|
131
|
+
</template>
|
|
132
|
+
|
|
133
|
+
<script>
|
|
134
|
+
import LBarChart from '@/components/moduleDataNew/l-bar-chart/index.vue'
|
|
135
|
+
|
|
136
|
+
export default {
|
|
137
|
+
components: {
|
|
138
|
+
LBarChart
|
|
139
|
+
},
|
|
140
|
+
data() {
|
|
141
|
+
return {
|
|
142
|
+
chartData: [
|
|
143
|
+
['旅游人次'],
|
|
144
|
+
['3.10', '3.11', '3.12', '3.13', '3.14', '3.15', '3.16'],
|
|
145
|
+
[[212, 302, 222, 112, 102, 222, 282]]
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
</script>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 自定义渐变色
|
|
154
|
+
|
|
155
|
+
```vue
|
|
156
|
+
<template>
|
|
157
|
+
<l-bar-chart
|
|
158
|
+
:dataList="chartData"
|
|
159
|
+
:lineColor="[
|
|
160
|
+
{ color1: 'rgba(131, 255, 153, .1)', color2: 'rgba(131, 255, 153, .5)', color3: 'rgba(51, 204, 115, 1)' },
|
|
161
|
+
{ color1: 'rgba(255, 199, 61, 1)', color2: 'rgba(255, 199, 61, .5)', color3: 'rgba(255, 199, 61, .1)' }
|
|
162
|
+
]"
|
|
163
|
+
/>
|
|
164
|
+
</template>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 启用工具箱和导出功能
|
|
168
|
+
|
|
169
|
+
```vue
|
|
170
|
+
<template>
|
|
171
|
+
<l-bar-chart
|
|
172
|
+
:dataList="chartData"
|
|
173
|
+
:showToolbox="true"
|
|
174
|
+
:showDataView="true"
|
|
175
|
+
exportFileName="旅游人次统计"
|
|
176
|
+
:exportPixelRatio="2"
|
|
177
|
+
/>
|
|
178
|
+
</template>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 启用滚动条
|
|
182
|
+
|
|
183
|
+
```vue
|
|
184
|
+
<template>
|
|
185
|
+
<l-bar-chart
|
|
186
|
+
:dataList="chartData"
|
|
187
|
+
:showDataZoom="'auto'"
|
|
188
|
+
:dataZoomThreshold="10"
|
|
189
|
+
:dataZoomStart="0"
|
|
190
|
+
:dataZoomEnd="50"
|
|
191
|
+
/>
|
|
192
|
+
</template>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 完整自定义
|
|
196
|
+
|
|
197
|
+
```vue
|
|
198
|
+
<template>
|
|
199
|
+
<l-bar-chart
|
|
200
|
+
:dataList="chartData"
|
|
201
|
+
title="单位:人次"
|
|
202
|
+
:barWidth="10"
|
|
203
|
+
:barBorderRadius="[8, 8, 0, 0]"
|
|
204
|
+
:fontSize="12"
|
|
205
|
+
:fontColor="'#FFFFFF'"
|
|
206
|
+
:grid="{ left: 60, right: 30, top: 40, bottom: 80 }"
|
|
207
|
+
:legendIsShow="true"
|
|
208
|
+
:legendTop="-10"
|
|
209
|
+
legendIcon="rect"
|
|
210
|
+
:showToolbox="true"
|
|
211
|
+
exportFileName="旅游统计报表"
|
|
212
|
+
:showDataZoom="'auto'"
|
|
213
|
+
:dataZoomThreshold="15"
|
|
214
|
+
/>
|
|
215
|
+
</template>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## 数据结构
|
|
219
|
+
|
|
220
|
+
### dataList 格式
|
|
221
|
+
|
|
222
|
+
```javascript
|
|
223
|
+
[
|
|
224
|
+
['类型1', '类型2'], // 系列名称数组
|
|
225
|
+
['3.10', '3.11', '3.12'], // X轴数据
|
|
226
|
+
[
|
|
227
|
+
[212, 302, 222], // 系列1数据
|
|
228
|
+
[150, 200, 180] // 系列2数据
|
|
229
|
+
]
|
|
230
|
+
]
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## 方法
|
|
234
|
+
|
|
235
|
+
### exportChartImage(options)
|
|
236
|
+
|
|
237
|
+
导出图表为图片。
|
|
238
|
+
|
|
239
|
+
**参数**:
|
|
240
|
+
- `options.fileName`:文件名(默认使用 `exportFileName`)
|
|
241
|
+
- `options.pixelRatio`:像素比(默认使用 `exportPixelRatio`)
|
|
242
|
+
- `options.type`:图片类型(默认使用 `exportType`)
|
|
243
|
+
|
|
244
|
+
**示例**:
|
|
245
|
+
```javascript
|
|
246
|
+
this.$refs.chart.exportChartImage({
|
|
247
|
+
fileName: 'my-chart',
|
|
248
|
+
pixelRatio: 3,
|
|
249
|
+
type: 'jpeg'
|
|
250
|
+
})
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### exportDataCSV(fileName)
|
|
254
|
+
|
|
255
|
+
导出数据为 CSV 格式。
|
|
256
|
+
|
|
257
|
+
**参数**:
|
|
258
|
+
- `fileName`:文件名(默认使用 `exportFileName`)
|
|
259
|
+
|
|
260
|
+
**示例**:
|
|
261
|
+
```javascript
|
|
262
|
+
this.$refs.chart.exportDataCSV('my-data')
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### cDispose()
|
|
266
|
+
|
|
267
|
+
销毁图表实例。
|
|
268
|
+
|
|
269
|
+
**示例**:
|
|
270
|
+
```javascript
|
|
271
|
+
this.$refs.chart.cDispose()
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## 注意事项
|
|
275
|
+
|
|
276
|
+
1. **数据格式**:`dataList` 必须按照 `[类型数组, X轴数据, 多系列数据]` 的格式传入
|
|
277
|
+
2. **渐变色**:`lineColor` 数组的每一项包含 `color1`、`color2`、`color3` 三个颜色值
|
|
278
|
+
3. **滚动条**:`showDataZoom='auto'` 时,数据点超过 `dataZoomThreshold` 自动显示滚动条
|
|
279
|
+
4. **工具箱**:开启 `showToolbox` 后,图例会自动向左偏移空出工具箱空间
|
|
280
|
+
5. **导出功能**:支持导出 PNG/JPEG 图片和 CSV 数据文件
|
|
281
|
+
6. **响应式**:组件会自动监听 `dataList` 变化并重新渲染图表
|
|
282
|
+
|
|
283
|
+
## 适用场景
|
|
284
|
+
|
|
285
|
+
- ✅ 旅游人次统计展示
|
|
286
|
+
- ✅ 销售数据对比分析
|
|
287
|
+
- ✅ 多维度数据柱状图展示
|
|
288
|
+
- ✅ 需要导出图表和数据的场景
|
|
289
|
+
- ✅ 数据量大需要滚动查看的场景
|
|
290
|
+
|
|
291
|
+
## 更新日志
|
|
292
|
+
|
|
293
|
+
- **v1.0.0** (2026-06-18)
|
|
294
|
+
- 从 `barEchart` 重命名为 `l-bar-chart`
|
|
295
|
+
- 参考 `l-rank-list` 封装结构进行参数化重构
|
|
296
|
+
- 所有 ECharts 配置项抽离为 Props 参数
|
|
297
|
+
- 添加详细的字段注释说明
|
|
298
|
+
- 支持导出图片和 CSV 数据
|
|
299
|
+
- 支持 X 轴滚动条自动判断
|
|
300
|
+
- 支持工具箱功能
|
|
301
|
+
|
|
302
|
+
> AI生成
|