@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.
Files changed (75) hide show
  1. package/README.md +86 -0
  2. package/package.json +34 -0
  3. package/src/index.js +60 -0
  4. package/src/l-bar-chart/README.md +302 -0
  5. package/src/l-bar-chart/index.vue +405 -0
  6. package/src/l-bar-chart/interface/index.js +210 -0
  7. package/src/l-data-panel/README.md +331 -0
  8. package/src/l-data-panel/img/images.js +47 -0
  9. package/src/l-data-panel/img/l-data-panel_bg_1.png +0 -0
  10. package/src/l-data-panel/img/l-data-panel_bg_2.png +0 -0
  11. package/src/l-data-panel/img/l-data-panel_bg_3.png +0 -0
  12. package/src/l-data-panel/index.vue +150 -0
  13. package/src/l-data-panel/interface/index.js +249 -0
  14. package/src/l-data-ring/README.md +292 -0
  15. package/src/l-data-ring/img/images.js +21 -0
  16. package/src/l-data-ring/img/l-data-ring_bg.png +0 -0
  17. package/src/l-data-ring/index.vue +93 -0
  18. package/src/l-data-ring/interface/index.js +116 -0
  19. package/src/l-date-picker/README.md +276 -0
  20. package/src/l-date-picker/index.vue +185 -0
  21. package/src/l-date-picker/interface/index.js +128 -0
  22. package/src/l-icon-label/README.md +356 -0
  23. package/src/l-icon-label/img/images.js +28 -0
  24. package/src/l-icon-label/img/l-icon-label_bg.png +0 -0
  25. package/src/l-icon-label/img/l-icon-label_icon.png +0 -0
  26. package/src/l-icon-label/index.vue +162 -0
  27. package/src/l-icon-label/interface/index.js +234 -0
  28. package/src/l-label-value/README.md +358 -0
  29. package/src/l-label-value/img/images.js +19 -0
  30. package/src/l-label-value/img/l-label-value_line.png +0 -0
  31. package/src/l-label-value/index.vue +132 -0
  32. package/src/l-label-value/interface/index.js +116 -0
  33. package/src/l-metric-tile/README.md +391 -0
  34. package/src/l-metric-tile/img/images.js +19 -0
  35. package/src/l-metric-tile/img/l-metric-tile_bg_1.png +0 -0
  36. package/src/l-metric-tile/index.vue +138 -0
  37. package/src/l-metric-tile/interface/index.js +241 -0
  38. package/src/l-module-box/README.md +289 -0
  39. package/src/l-module-box/img/images.js +28 -0
  40. package/src/l-module-box/img/l-module-box_bg.png +0 -0
  41. package/src/l-module-box/img/l-module-box_icon.png +0 -0
  42. package/src/l-module-box/index.vue +125 -0
  43. package/src/l-module-box/interface/index.js +93 -0
  44. package/src/l-module-tag/README.md +243 -0
  45. package/src/l-module-tag/index.vue +137 -0
  46. package/src/l-module-tag/interface/index.js +91 -0
  47. package/src/l-rank-list/README.md +553 -0
  48. package/src/l-rank-list/img/images.js +34 -0
  49. package/src/l-rank-list/img/l-rank-list_icon_line.png +0 -0
  50. package/src/l-rank-list/img/l-rank-list_icon_rank_1.png +0 -0
  51. package/src/l-rank-list/img/l-rank-list_icon_rank_2.png +0 -0
  52. package/src/l-rank-list/img/l-rank-list_icon_rank_other.png +0 -0
  53. package/src/l-rank-list/index.vue +610 -0
  54. package/src/l-rank-list/interface/index.js +343 -0
  55. package/src/l-stat-card/README.md +309 -0
  56. package/src/l-stat-card/img/images.js +36 -0
  57. package/src/l-stat-card/img/img-bg.png +0 -0
  58. package/src/l-stat-card/img/l-stat-card_img_1.png +0 -0
  59. package/src/l-stat-card/index.vue +136 -0
  60. package/src/l-stat-card/interface/index.js +159 -0
  61. package/src/l-tabs/README.md +285 -0
  62. package/src/l-tabs/img/images.js +19 -0
  63. package/src/l-tabs/img/l-tabs_bg.png +0 -0
  64. package/src/l-tabs/index.vue +97 -0
  65. package/src/l-tabs/interface/index.js +115 -0
  66. package/src/l-trend-card/README.md +415 -0
  67. package/src/l-trend-card/img/images.js +41 -0
  68. package/src/l-trend-card/img/l-trend-card_bg.png +0 -0
  69. package/src/l-trend-card/img/l-trend-card_icon_1.png +0 -0
  70. package/src/l-trend-card/img/l-trend-card_icon_down.png +0 -0
  71. package/src/l-trend-card/img/l-trend-card_icon_up.png +0 -0
  72. package/src/l-trend-card/index.vue +181 -0
  73. package/src/l-trend-card/interface/index.js +243 -0
  74. package/src/utils/tooltip.js +30 -0
  75. 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生成