xt-element-ui 1.2.5 → 1.2.7

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 (42) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/LICENSE +21 -0
  3. package/README.md +240 -104
  4. package/docs/README.md +67 -168
  5. package/docs/components/base/xt-card-item.md +1 -1
  6. package/docs/components/base/xt-step-price.md +280 -0
  7. package/docs/components/base/xt-time.md +165 -0
  8. package/docs/components/extend/ex-chart.md +252 -144
  9. package/docs/components/extend/ex-date-picker.md +0 -0
  10. package/docs/components/extend/ex-icon.md +1 -2
  11. package/docs/components/extend/ex-page.md +0 -75
  12. package/lib/index.common.js +1172 -586
  13. package/lib/index.css +1 -1
  14. package/lib/index.umd.js +1172 -586
  15. package/lib/index.umd.min.js +5 -5
  16. package/package.json +80 -41
  17. package/src/components/ex-chart/ExBar.vue +35 -29
  18. package/src/components/ex-chart/ExLine.vue +23 -14
  19. package/src/components/ex-chart/ExMulti.vue +30 -52
  20. package/src/components/ex-chart/ExPie.vue +23 -16
  21. package/src/components/ex-chart/theme/dark.js +5 -4
  22. package/src/components/ex-chart/theme/white.js +1 -0
  23. package/src/components/ex-chart/utils.js +148 -7
  24. package/src/components/ex-date-picker/index.js +2 -0
  25. package/src/components/{xt-date-picker → ex-date-picker}/index.vue +1 -1
  26. package/src/components/index.scss +6 -0
  27. package/src/components/xt-card-item/index.vue +3 -1
  28. package/src/components/xt-step-price/index.js +2 -0
  29. package/src/components/xt-step-price/index.vue +270 -0
  30. package/src/components/xt-step-price/style/index.scss +115 -0
  31. package/src/components/xt-step-price-item/index.js +2 -0
  32. package/src/components/xt-step-price-item/index.vue +174 -0
  33. package/src/components/xt-time/index.js +2 -0
  34. package/src/components/xt-time/index.vue +313 -0
  35. package/src/components/xt-time/style/index.scss +23 -0
  36. package/src/index.js +12 -3
  37. package/src/components/ex-chart/theme/blue.js +0 -91
  38. package/src/components/ex-chart/theme/orange.js +0 -92
  39. package/src/components/ex-chart/theme/starry.js +0 -106
  40. package/src/components/xt-date-picker/index.js +0 -2
  41. /package/src/components/{xt-date-picker → ex-date-picker}/SearchDate.vue +0 -0
  42. /package/src/components/{xt-date-picker → ex-date-picker}/quarter.vue +0 -0
@@ -8,49 +8,42 @@
8
8
  npm install echarts --save
9
9
  ```
10
10
 
11
- ## 基本用法
11
+ ## 基础用法
12
12
 
13
- ::: demo 基础柱状图示例
14
- ```vue
15
- <template>
16
- <ExChart type="bar" :chartData="chartData" style="height: 400px;" />
17
- </template>
18
-
19
- <script>
20
- export default {
21
- data() {
22
- return {
23
- chartData: [
24
- { name: '张三', value: 65 },
25
- { name: '李四', value: 78 },
26
- { name: '王五', value: 89 },
27
- { name: '赵六', value: 95 },
28
- { name: '钱七', value: 72 }
29
- ]
30
- }
31
- }
32
- }
33
- </script>
34
- ```
35
- :::
13
+ 图表组件包含五个独立子组件:`ExBar`(柱状图)、`ExLine`(折线图)、`ExPie`(饼图)、`ExMulti`(多系列组合图),以及统一入口组件 `ExChart`(通过 `type` 动态切换图表类型)。所有子组件支持通过 `fieldKeys` 自定义 chartData 中的字段映射。
36
14
 
37
- ## 属性说明
15
+ ## 全局通用属性
38
16
 
39
17
  | 属性 | 类型 | 默认值 | 说明 |
40
18
  |------|------|--------|------|
41
- | `type` | String | bar | 图表类型:`bar`、`line`、`pie`、`multi`、`trend` |
42
- | `theme` | String | - | 主题名称:`white`、`dark`、`blue`、`orange`、`starry` |
19
+ | `theme` | String / Object | - | 主题名称:`white`、`dark` 或自定义主题对象 |
43
20
  | `size` | String | medium | 字体大小:`small`、`medium`、`large` |
44
- | `chartData` | Array | - | 图表数据,格式见各类型示例 |
21
+ | `chartData` | Array | 见各组件默认示例 | 图表数据数组 |
22
+ | `fieldKeys` | Object | `{ label: 'label', value: 'value', data: 'data' }` | 自定义 chartData 中字段名的映射,详见下方「自定义字段映射」 |
23
+ | `simpleMode` | Boolean | false | 是否开启极简模式(隐藏图例、坐标轴等装饰元素) |
24
+
25
+ ### 自定义字段映射 (fieldKeys)
45
26
 
46
- ## 图表类型
27
+ 组件默认从 chartData 中读取 `label`、`value`、`data` 字段。如果后端返回的数据字段名不同,可通过 `fieldKeys` 映射。
47
28
 
48
- ### 柱状图 (bar)
29
+ ```js
30
+ // 例如后端返回 { date: '01月', count: 980 }
31
+ fieldKeys: { label: 'date', value: 'count' }
49
32
 
50
- ::: demo 柱状图示例,支持显示标记点
33
+ // ExMulti 两层嵌套数据可同时配置外层与内层字段
34
+ // 外层: { title: '入户量', points: [...] }
35
+ // 内层: { month: '01月', num: 980 }
36
+ fieldKeys: { label: 'title', value: 'num', data: 'points' }
37
+ ```
38
+
39
+ ---
40
+
41
+ ## ExBar 柱状图
42
+
43
+ ::: demo 基础柱状图
51
44
  ```vue
52
45
  <template>
53
- <ExChart type="bar" :chartData="chartData" :markPoint="true" style="height: 400px;" />
46
+ <ExBar :chartData="chartData" style="height: 400px;" />
54
47
  </template>
55
48
 
56
49
  <script>
@@ -58,13 +51,11 @@ export default {
58
51
  data() {
59
52
  return {
60
53
  chartData: [
61
- { name: '华东区', value: 1250 },
62
- { name: '华南区', value: 980 },
63
- { name: '华北区', value: 890 },
64
- { name: '西南区', value: 720 },
65
- { name: '西北区', value: 560 },
66
- { name: '东北区', value: 680 },
67
- { name: '华中区', value: 820 }
54
+ { label: '华东区', value: 1250 },
55
+ { label: '华南区', value: 980 },
56
+ { label: '华北区', value: 890 },
57
+ { label: '西南区', value: 720 },
58
+ { label: '西北区', value: 560 }
68
59
  ]
69
60
  }
70
61
  }
@@ -73,22 +64,30 @@ export default {
73
64
  ```
74
65
  :::
75
66
 
76
- **柱状图属性**
67
+ ### 属性说明
77
68
 
78
69
  | 属性 | 类型 | 默认值 | 说明 |
79
70
  |------|------|--------|------|
71
+ | `chartData` | Array | 默认示例数据 | 图表数据数组,每项包含 `label`(标签)和 `value`(数值) |
72
+ | `fieldKeys` | Object | `{ label: 'label', value: 'value', data: 'data' }` | 自定义字段映射 |
80
73
  | `markPoint` | Boolean | false | 是否显示标记点(最大值、最小值) |
81
- | `showZoom` | Boolean | false | 是否显示缩放功能 |
82
- | `reverse` | Boolean | false | 是否反转坐标轴 |
83
- | `longLable` | Boolean | false | 是否启用长标签模式 |
74
+ | `unit` | String | '' | Y轴单位名称 |
75
+ | `showZoom` | Boolean | false | 是否显示底部缩放滑动条 |
76
+ | `reverse` | Boolean | false | 是否反转坐标轴(纵向柱 → 横向柱) |
77
+ | `longLable` | Boolean | false | 是否启用长标签换行模式 |
78
+ | `longLableSplitNum` | Number | 1 | 长标签每隔几个字符换行一次 |
79
+ | `longLablePx` | Number | 150 | 长标签模式下左侧/底部预留空间 |
84
80
  | `splitNumber` | Number | 5 | Y轴分割数量 |
81
+ | `simpleMode` | Boolean | false | 是否开启极简模式 |
82
+
83
+ ---
85
84
 
86
- ### 折线图 (line)
85
+ ## ExLine 折线图
87
86
 
88
- ::: demo 折线图示例,支持面积区域显示
87
+ ::: demo 基础折线图,支持面积区域显示
89
88
  ```vue
90
89
  <template>
91
- <ExChart type="line" :chartData="chartData" :isArea="true" style="height: 400px;" />
90
+ <ExLine :chartData="chartData" :isArea="true" style="height: 400px;" />
92
91
  </template>
93
92
 
94
93
  <script>
@@ -96,18 +95,18 @@ export default {
96
95
  data() {
97
96
  return {
98
97
  chartData: [
99
- { name: '1月', value: 2450 },
100
- { name: '2月', value: 2800 },
101
- { name: '3月', value: 3200 },
102
- { name: '4月', value: 2950 },
103
- { name: '5月', value: 3500 },
104
- { name: '6月', value: 3800 },
105
- { name: '7月', value: 4200 },
106
- { name: '8月', value: 4500 },
107
- { name: '9月', value: 4100 },
108
- { name: '10月', value: 3800 },
109
- { name: '11月', value: 4600 },
110
- { name: '12月', value: 5200 }
98
+ { label: '1月', value: 2450 },
99
+ { label: '2月', value: 2800 },
100
+ { label: '3月', value: 3200 },
101
+ { label: '4月', value: 2950 },
102
+ { label: '5月', value: 3500 },
103
+ { label: '6月', value: 3800 },
104
+ { label: '7月', value: 4200 },
105
+ { label: '8月', value: 4500 },
106
+ { label: '9月', value: 4100 },
107
+ { label: '10月', value: 3800 },
108
+ { label: '11月', value: 4600 },
109
+ { label: '12月', value: 5200 }
111
110
  ]
112
111
  }
113
112
  }
@@ -116,20 +115,25 @@ export default {
116
115
  ```
117
116
  :::
118
117
 
119
- **折线图属性**
118
+ ### 属性说明
120
119
 
121
120
  | 属性 | 类型 | 默认值 | 说明 |
122
121
  |------|------|--------|------|
123
- | `isArea` | Boolean | false | 是否显示面积区域 |
124
- | `isDark` | Boolean | false | 是否暗色模式(文字标线为白色) |
125
- | `intervalvalue` | Number | 0 | 自定义间隔值 |
122
+ | `chartData` | Array | 默认示例数据 | 图表数据数组,每项包含 `label` 和 `value` |
123
+ | `fieldKeys` | Object | `{ label: 'label', value: 'value', data: 'data' }` | 自定义字段映射 |
124
+ | `isArea` | Boolean | false | 是否显示面积区域填充 |
125
+ | `unit` | String | '' | Y轴单位名称 |
126
+ | `intervalvalue` | Number | 0 | X轴标签显示间隔(0表示全部显示) |
127
+ | `simpleMode` | Boolean | false | 是否开启极简模式 |
128
+
129
+ ---
126
130
 
127
- ### 饼图 (pie)
131
+ ## ExPie 饼图
128
132
 
129
- ::: demo 饼图示例
133
+ ::: demo 基础饼图,显示总数标题
130
134
  ```vue
131
135
  <template>
132
- <ExChart type="pie" :chartData="chartData" style="height: 400px;" />
136
+ <ExPie :chartData="chartData" style="height: 400px;" />
133
137
  </template>
134
138
 
135
139
  <script>
@@ -137,11 +141,11 @@ export default {
137
141
  data() {
138
142
  return {
139
143
  chartData: [
140
- { name: '手机端', value: 4520 },
141
- { name: 'PC端', value: 3280 },
142
- { name: '平板端', value: 1250 },
143
- { name: '小程序', value: 2150 },
144
- { name: 'H5页面', value: 1800 }
144
+ { label: '手机端', value: 4520 },
145
+ { label: 'PC端', value: 3280 },
146
+ { label: '平板端', value: 1250 },
147
+ { label: '小程序', value: 2150 },
148
+ { label: 'H5页面', value: 1800 }
145
149
  ]
146
150
  }
147
151
  }
@@ -150,12 +154,35 @@ export default {
150
154
  ```
151
155
  :::
152
156
 
153
- ### 组合图 (multi)
157
+ ### 属性说明
158
+
159
+ | 属性 | 类型 | 默认值 | 说明 |
160
+ |------|------|--------|------|
161
+ | `chartData` | Array | 默认示例数据 | 图表数据数组,每项包含 `label` 和 `value` |
162
+ | `fieldKeys` | Object | `{ label: 'label', value: 'value', data: 'data' }` | 自定义字段映射 |
163
+ | `colors` | Array | [] | 自定义饼图颜色数组 |
164
+ | `unit` | String | '' | 数值单位(悬停提示时使用) |
165
+ | `showLegend` | Boolean | true | 是否显示图例 |
166
+ | `roseType` | String | '' | 玫瑰图类型,`'radius'`、`'area'` 等 |
167
+ | `showLabel` | Boolean | true | 是否显示饼图扇区标签及引线 |
168
+ | `totalLabel` | String | '总数' | 饼图中心显示的汇总标题文字 |
169
+ | `simpleMode` | Boolean | false | 是否开启极简模式 |
170
+ | `highlightKey` | String | - | 高亮字段键(用于指定高亮的扇区标识) |
171
+
172
+ ### 计算说明
154
173
 
155
- ::: demo 混合图表示例,支持多系列数据展示
174
+ - `总数`:饼图中心会自动显示图表中心标题,格式为 `{totalLabel}:{value 之和}`。
175
+
176
+ ---
177
+
178
+ ## ExMulti 多系列组合图
179
+
180
+ 多系列组合图,支持多个 series 共存(柱/线任意混合),根据不同 `unit` 自动生成多条 Y 轴。
181
+
182
+ ::: demo 多系列数据示例
156
183
  ```vue
157
184
  <template>
158
- <ExChart type="multi" :chartData="chartData" style="height: 400px;" />
185
+ <ExMulti :chartData="chartData" style="height: 400px;" />
159
186
  </template>
160
187
 
161
188
  <script>
@@ -164,37 +191,29 @@ export default {
164
191
  return {
165
192
  chartData: [
166
193
  {
167
- label: "入户量",
194
+ label: '入户量',
195
+ unit: '户',
196
+ type: 'bar',
168
197
  data: [
169
- { label: "01月", value: 980 },
170
- { label: "02月", value: 806 },
171
- { label: "03月", value: 930 },
172
- { label: "04月", value: 804 },
173
- { label: "05月", value: 750 },
174
- { label: "06月", value: 660 },
175
- { label: "07月", value: 780 },
176
- { label: "08月", value: 630 },
177
- { label: "09月", value: 806 },
178
- { label: "10月", value: 950 },
179
- { label: "11月", value: 810 },
180
- { label: "12月", value: 703 }
198
+ { label: '01月', value: 980 },
199
+ { label: '02月', value: 806 },
200
+ { label: '03月', value: 930 },
201
+ { label: '04月', value: 804 },
202
+ { label: '05月', value: 750 },
203
+ { label: '06月', value: 660 }
181
204
  ]
182
205
  },
183
206
  {
184
- label: "隐患量",
207
+ label: '隐患量',
208
+ unit: '个',
209
+ type: 'line',
185
210
  data: [
186
- { label: "01月", value: 200 },
187
- { label: "02月", value: 120 },
188
- { label: "03月", value: 110 },
189
- { label: "04月", value: 109 },
190
- { label: "05月", value: 108 },
191
- { label: "06月", value: 150 },
192
- { label: "07月", value: 126 },
193
- { label: "08月", value: 130 },
194
- { label: "09月", value: 108 },
195
- { label: "10月", value: 109 },
196
- { label: "11月", value: 140 },
197
- { label: "12月", value: 106 }
211
+ { label: '01月', value: 200 },
212
+ { label: '02月', value: 120 },
213
+ { label: '03月', value: 110 },
214
+ { label: '04月', value: 109 },
215
+ { label: '05月', value: 108 },
216
+ { label: '06月', value: 150 }
198
217
  ]
199
218
  }
200
219
  ]
@@ -205,14 +224,63 @@ export default {
205
224
  ```
206
225
  :::
207
226
 
208
- ### 趋势图 (trend)
227
+ ### 属性说明
228
+
229
+ | 属性 | 类型 | 默认值 | 说明 |
230
+ |------|------|--------|------|
231
+ | `chartData` | Array | 默认示例数据 | 多系列数据,每项外层包含 `label`、`unit`、`type`、`data[]`,内层每项包含 `label`、`value` |
232
+ | `fieldKeys` | Object | `{ label: 'label', value: 'value', data: 'data' }` | 自定义字段映射(外层/内层均生效) |
233
+ | `isDark` | Boolean | false | 是否暗色模式(文字标线为白色) |
234
+ | `colors` | Array | [] | 自定义系列颜色数组 |
235
+ | `energyType` | String / Array | '' | 预留字段,用于扩展类型/单位 |
236
+ | `config` | Object | `{ interval: 0, rotate: 0, gridbottom: 40, isShowthreshold: false }` | 高级配置:`rotate`(X轴标签旋转角度)、`gridbottom`(底部留白) |
237
+ | `simpleMode` | Boolean | false | 是否开启极简模式 |
238
+ | `highlightKey` | String | - | 高亮字段键 |
239
+
240
+ ### chartData 结构说明
241
+
242
+ ```js
243
+ [
244
+ {
245
+ label: '系列名称', // series 名称(映射 fieldKeys.label)
246
+ unit: '单位', // series 单位,用于分组生成 Y 轴(去重)
247
+ type: 'bar', // 'bar' 或 'line',不填默认 bar
248
+ data: [ // 数据点(映射 fieldKeys.data)
249
+ { label: '01月', value: 980 } // 内层映射 fieldKeys.label / fieldKeys.value
250
+ ]
251
+ }
252
+ ]
253
+ ```
254
+
255
+ ---
256
+
257
+ ## ExChart 统一入口
209
258
 
210
- 趋势图适用于展示数据的连续变化趋势,常用于设备状态监控、指标趋势分析等场景。
259
+ `ExChart` 是一个聚合组件,通过 `type` 属性动态选择使用哪个子组件。
211
260
 
212
- ::: demo 趋势图示例
261
+ ```vue
262
+ <ExChart type="bar" :chartData="chartData" />
263
+ <ExChart type="line" :chartData="chartData" :isArea="true" />
264
+ <ExChart type="pie" :chartData="chartData" />
265
+ <ExChart type="multi" :chartData="chartData" />
266
+ ```
267
+
268
+ | 属性 | 类型 | 默认值 | 说明 |
269
+ |------|------|--------|------|
270
+ | `type` | String | bar | 图表类型:`bar`、`line`、`pie`、`multi` |
271
+
272
+ > 其余属性直接透传给子组件,详见各子组件的属性说明。
273
+
274
+ ---
275
+
276
+ ## 极简模式 (simpleMode)
277
+
278
+ 极简模式隐藏图例、坐标轴、网格线等装饰元素,仅保留核心数据曲线/柱形,适用于 Dashboard 密集卡片展示场景。
279
+
280
+ ::: demo 极简模式示例
213
281
  ```vue
214
282
  <template>
215
- <ExChart type="trend" :chartData="chartData" style="height: 200px;" />
283
+ <ExBar :chart-data="chartData" simple-mode style="height: 200px;" />
216
284
  </template>
217
285
 
218
286
  <script>
@@ -240,23 +308,7 @@ export default {
240
308
  ```
241
309
  :::
242
310
 
243
- **趋势图属性**
244
-
245
- | 属性 | 类型 | 默认值 | 说明 |
246
- |------|------|--------|------|
247
- | `type` | String | bar | 图表类型,可选 `bar` 或 `line` |
248
- | `width` | String | 100% | 图表宽度 |
249
- | `energyType` | String | m³ | 单位类型 |
250
-
251
- **趋势图数据格式**
252
-
253
- ```javascript
254
- [
255
- { label: '时间点', value: 数值 },
256
- { label: '时间点', value: 数值 },
257
- // ...
258
- ]
259
- ```
311
+ ---
260
312
 
261
313
  ## 主题示例
262
314
 
@@ -265,19 +317,19 @@ export default {
265
317
  <template>
266
318
  <div style="display: flex; gap: 16px; flex-wrap: wrap;">
267
319
  <div style="width: 300px; height: 200px;">
268
- <ExChart type="bar" :chartData="chartData" theme="white" style="height: 200px;" />
320
+ <ExBar :chartData="chartData" theme="white" style="height: 200px;" />
269
321
  </div>
270
322
  <div style="width: 300px; height: 200px;">
271
- <ExChart type="bar" :chartData="chartData" theme="dark" style="height: 200px;" />
323
+ <ExBar :chartData="chartData" theme="dark" style="height: 200px;" />
272
324
  </div>
273
325
  <div style="width: 300px; height: 200px;">
274
- <ExChart type="bar" :chartData="chartData" theme="blue" style="height: 200px;" />
326
+ <ExBar :chartData="chartData" theme="blue" style="height: 200px;" />
275
327
  </div>
276
328
  <div style="width: 300px; height: 200px;">
277
- <ExChart type="bar" :chartData="chartData" theme="orange" style="height: 200px;" />
329
+ <ExBar :chartData="chartData" theme="orange" style="height: 200px;" />
278
330
  </div>
279
331
  <div style="width: 300px; height: 200px;">
280
- <ExChart type="bar" :chartData="chartData" theme="starry" style="height: 200px;" />
332
+ <ExBar :chartData="chartData" theme="starry" style="height: 200px;" />
281
333
  </div>
282
334
  </div>
283
335
  </template>
@@ -287,10 +339,10 @@ export default {
287
339
  data() {
288
340
  return {
289
341
  chartData: [
290
- { name: '产品A', value: 1250 },
291
- { name: '产品B', value: 980 },
292
- { name: '产品C', value: 820 },
293
- { name: '产品D', value: 750 }
342
+ { label: '产品A', value: 1250 },
343
+ { label: '产品B', value: 980 },
344
+ { label: '产品C', value: 820 },
345
+ { label: '产品D', value: 750 }
294
346
  ]
295
347
  }
296
348
  }
@@ -299,23 +351,25 @@ export default {
299
351
  ```
300
352
  :::
301
353
 
302
- ## 主题列表
354
+ ### 主题列表
303
355
 
304
356
  | 主题名称 | 说明 |
305
357
  |----------|------|
306
358
  | `white` | 白色主题(默认) |
307
- | `dark` | 暗色主题 |
359
+ | `dark` | 暗色主题(深色背景,建议容器设深色) |
308
360
  | `blue` | 蓝色主题 |
309
361
  | `orange` | 橙色主题 |
310
362
  | `starry` | 星空主题 |
311
363
 
364
+ ---
365
+
312
366
  ## 动态数据
313
367
 
314
368
  ::: demo 动态更新图表数据
315
369
  ```vue
316
370
  <template>
317
371
  <div>
318
- <ExChart type="line" :chartData="chartData" :isArea="true" style="height: 400px;" />
372
+ <ExLine :chartData="chartData" :isArea="true" style="height: 400px;" />
319
373
  <button @click="updateData" style="margin-top: 16px; padding: 8px 16px;">更新数据</button>
320
374
  </div>
321
375
  </template>
@@ -325,20 +379,54 @@ export default {
325
379
  data() {
326
380
  return {
327
381
  chartData: [
328
- { name: '1月', value: 50 },
329
- { name: '2月', value: 60 },
330
- { name: '3月', value: 70 },
331
- { name: '4月', value: 80 }
382
+ { label: '1月', value: 50 },
383
+ { label: '2月', value: 60 },
384
+ { label: '3月', value: 70 },
385
+ { label: '4月', value: 80 }
332
386
  ]
333
387
  }
334
388
  },
335
389
  methods: {
336
390
  updateData() {
337
391
  this.chartData = [
338
- { name: '1月', value: 55 },
339
- { name: '2月', value: 75 },
340
- { name: '3月', value: 65 },
341
- { name: '4月', value: 90 }
392
+ { label: '1月', value: 55 },
393
+ { label: '2月', value: 75 },
394
+ { label: '3月', value: 65 },
395
+ { label: '4月', value: 90 }
396
+ ]
397
+ }
398
+ }
399
+ }
400
+ </script>
401
+ ```
402
+ :::
403
+
404
+ ---
405
+
406
+ ## 使用自定义字段映射
407
+
408
+ 当后端返回数据字段与组件默认字段(`label` / `value` / `data`)不一致时,使用 `fieldKeys` 做一次映射即可,无需在前端转换数据。
409
+
410
+ ::: demo 自定义字段映射示例
411
+ ```vue
412
+ <template>
413
+ <ExBar
414
+ :chartData="chartData"
415
+ :fieldKeys="{ label: 'areaName', value: 'sales' }"
416
+ style="height: 400px;"
417
+ />
418
+ </template>
419
+
420
+ <script>
421
+ export default {
422
+ data() {
423
+ return {
424
+ // 后端返回的数据字段不是 label/value
425
+ chartData: [
426
+ { areaName: '华东区', sales: 1250 },
427
+ { areaName: '华南区', sales: 980 },
428
+ { areaName: '华北区', sales: 890 },
429
+ { areaName: '西南区', sales: 720 }
342
430
  ]
343
431
  }
344
432
  }
@@ -347,9 +435,29 @@ export default {
347
435
  ```
348
436
  :::
349
437
 
438
+ 多系列组合图的双层嵌套场景:
439
+
440
+ ```vue
441
+ <ExMulti
442
+ :chartData="chartData"
443
+ :fieldKeys="{ label: 'title', value: 'num', data: 'points' }"
444
+ />
445
+ <!--
446
+ chartData 结构:
447
+ [
448
+ { title: '入户量', unit: '户', points: [{ month: '01月', num: 980 }] }
449
+ ]
450
+ -->
451
+ ```
452
+
453
+ ---
454
+
350
455
  ## 注意事项
351
456
 
352
- 1. **按需导入**:Chart 组件需要手动导入,不包含在默认安装中
353
- 2. **依赖安装**:使用前必须安装 `echarts` 依赖
354
- 3. **数据格式**:确保传入正确的数据格式,不同图表类型有不同的数据要求
355
- 4. **容器尺寸**:确保图表容器有明确的宽高,否则可能无法正常显示
457
+ 1. **依赖安装**:使用前必须安装 `echarts` 依赖
458
+ 2. **容器尺寸**:确保图表容器有明确的高度(如 `style="height: 400px;"`),否则图表可能无法显示
459
+ 3. **数据格式**:
460
+ - `ExBar` / `ExLine` / `ExPie`:扁平数组,每项需包含可映射为 `label` 与 `value` 的字段
461
+ - `ExMulti`:双层嵌套数组,外层需包含 `label`、`unit`、`type`、`data[]`,内层需包含 `label` 与 `value`
462
+ 4. **Y轴去重**(ExMulti):自动按外层 `unit` 去重合并生成 Y 轴,相同 unit 的 series 会共用同一条 Y 轴
463
+ 5. **fieldKeys 合并**:仅需配置与默认值不同的字段即可,未配置的字段会使用默认值 `{ label: 'label', value: 'value', data: 'data' }`
File without changes
@@ -80,7 +80,6 @@
80
80
  </template>
81
81
 
82
82
  <script>
83
- import ExIcon from '@/components/ex-icon'
84
83
  export default {
85
84
  created() {
86
85
  // 注册自定义前缀,避免自动添加 ex-icon 前缀
@@ -172,7 +171,7 @@ export default {
172
171
 
173
172
  | 参数 | 说明 | 类型 | 可选值 | 默认值 |
174
173
  |------|------|------|--------|--------|
175
- | name | 图标名称(支持 el-icon-xxx / #xxx / svg:xxx / <svg>.../ 自定义前缀) | string | — | '' |
174
+ | name | 图标名称(支持 el-icon-xxx 自定义前缀) | string | — | '' |
176
175
  | size | 图标尺寸(数字单位 px,也可传入如 '2em' 的字符串) | string / number | — | '' |
177
176
  | color | 图标颜色(CSS color 值) | string | — | '' |
178
177
  | spin | 是否持续旋转 | boolean | — | false |
@@ -1,75 +0,0 @@
1
- ## ExPage 页面布局组件文档
2
-
3
- ### 组件说明
4
-
5
- ExPage 是基于 Element UI el-container 封装的通用页面布局组件,内置头部、侧边栏、主体、底部插槽,自动计算主体区域高度并向外透传,常用于页面表格、内容区自适应高度场景,支持窗口大小变化实时重算高度。
6
-
7
- ### 基本信息
8
-
9
- . 组件名称:ExPage
10
-
11
- . 依赖:Element UI
12
-
13
- . 适用场景:后台管理系统标准页面布局、表格页面自适应高度、带侧边栏 / 头部 / 底部的组合页面
14
-
15
-
16
-
17
-
18
- ## 基础用法
19
-
20
- ::: demo 按钮基础示例
21
- ```vue
22
- <template>
23
- <div>
24
- <ex-button>默认按钮</ex-button>
25
- <ex-button type="primary">主要按钮</ex-button>
26
- <ex-button type="success">成功按钮</ex-button>
27
- </div>
28
- </template>
29
- ```
30
- :::
31
-
32
- ## 字体大小
33
-
34
- 支持三种尺寸:`small`、`medium`、`large`
35
-
36
- ::: demo 按钮字体大小示例
37
- ```vue
38
- <template>
39
- <div>
40
- <ex-button size="mini">迷你按钮</ex-button>
41
- <ex-button size="small">小按钮</ex-button>
42
- <ex-button size="medium">中按钮</ex-button>
43
- <ex-button size="large">大按钮</ex-button>
44
- </div>
45
- </template>
46
- ```
47
- :::
48
-
49
- ## 继承 ConfigProvider 配置
50
-
51
- 当 ExButton 被包裹在 XtConfigProvider 中时,会自动继承字体大小配置:
52
-
53
- ::: demo 按钮继承字体大小示例
54
- ```vue
55
- <template>
56
- <xt-config-provider size="large">
57
- <ex-button>自动继承大字体</ex-button>
58
- </xt-config-provider>
59
- </template>
60
- ```
61
- :::
62
-
63
- ## Attributes
64
-
65
- | 参数 | 说明 | 类型 | 可选值 | 默认值 |
66
- |------|------|------|--------|--------|
67
- | type | 按钮类型 | string | primary/success/warning/danger | — |
68
- | size | 按钮尺寸 | string | small/medium/large | — |
69
- | throttle | 点击节流时间 (ms) | number | — | 0 |
70
-
71
- ## Events
72
-
73
- | 事件名 | 说明 | 回调参数 |
74
- |--------|------|----------|
75
- | click | 点击按钮时触发 | — |