mixdashboards 1.0.12 → 1.0.13

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 CHANGED
@@ -5,7 +5,7 @@
5
5
  [![npm version](https://img.shields.io/npm/v/mixdashboards.svg)](https://www.npmjs.com/package/mixdashboards)
6
6
  [![license](https://img.shields.io/npm/l/mixdashboards.svg)](https://github.com/mixlinker/mixdashboards/blob/main/LICENSE)
7
7
 
8
- MixDashboards - 新一代企业级可视化组件库
8
+ **MixDashboards** - 新一代企业级可视化大屏组件库
9
9
 
10
10
  专为工业物联网和数据可视化场景设计的 Vue 3 组件库
11
11
 
@@ -15,12 +15,13 @@ MixDashboards - 新一代企业级可视化组件库
15
15
 
16
16
  ## ✨ 特性
17
17
 
18
- - 🎯 **开箱即用** - 内置丰富的图表和可视化组件
18
+ - 🎯 **开箱即用** - 内置 70+ 图表和可视化组件
19
19
  - 🚀 **实时数据** - 基于 WebSocket 的实时数据推送
20
20
  - 🎨 **高度可定制** - 灵活的配置系统,满足各种业务需求
21
- - 📱 **响应式设计** - 完美适配桌面和大屏展示
21
+ - 📱 **响应式设计** - 完美适配桌面和大屏展示(自动缩放)
22
22
  - 🔧 **Vue 3 + TypeScript** - 基于最新技术栈构建
23
23
  - 🌐 **多场景支持** - Pro、Show、App、Pad 四种展示模式
24
+ - 📦 **图层系统** - 支持多图层叠加,灵活控制组件层级
24
25
 
25
26
  ---
26
27
 
@@ -28,24 +29,29 @@ MixDashboards - 新一代企业级可视化组件库
28
29
 
29
30
  ```bash
30
31
  # 使用 npm
31
- npm install mixdashboards vue element-plus
32
+ npm install mixdashboards
32
33
 
33
34
  # 使用 pnpm
34
- pnpm add mixdashboards vue element-plus
35
+ pnpm add mixdashboards
35
36
 
36
37
  # 使用 yarn
37
- yarn add mixdashboards vue element-plus
38
+ yarn add mixdashboards
38
39
  ```
39
40
 
40
- ### 依赖要求
41
+ ### 必需的依赖
41
42
 
42
- - Vue 3.5+
43
- - Element Plus 2.11+
43
+ mixdashboards 需要以下 peer dependencies:
44
44
 
45
45
  ```bash
46
- npm install vue@^3.5.0 element-plus@^2.11.0
46
+ npm install vue@^3.5.0 echarts@^5.6.0 three@^0.180.0
47
47
  ```
48
48
 
49
+ | 依赖 | 版本 | 说明 |
50
+ |------|------|------|
51
+ | `vue` | ^3.5.0 | Vue 3 核心框架 |
52
+ | `echarts` | ^5.6.0 | 图表渲染引擎 |
53
+ | `three` | ^0.180.0 | 3D 可视化支持 |
54
+
49
55
  ---
50
56
 
51
57
  ## 🚀 快速开始
@@ -145,12 +151,84 @@ app.mount('#app')
145
151
 
146
152
  ---
147
153
 
148
- ### DesignShow - 展示版
154
+ ### MixDesignShow - 大屏展示版 ⭐
155
+
156
+ 全屏只读展示模式,专为大屏展示场景设计。**自动缩放适配任意分辨率屏幕**。
149
157
 
150
- 只读展示模式,适合大屏展示场景。
158
+ **Props**
159
+
160
+ | 属性 | 类型 | 默认值 | 必填 | 说明 |
161
+ |------|------|--------|------|------|
162
+ | `script` | `Object` | - | ✅ | 仪表盘配置对象 |
163
+ | `uid` | `String` | - | ❌ | 唯一标识符 |
164
+ | `enableWebSocket` | `Boolean` | `true` | ❌ | 是否启用 WebSocket 实时数据 |
165
+
166
+ **完整使用示例**
151
167
 
152
168
  ```vue
153
- <DesignShow :script="config" uid="show-001" />
169
+ <template>
170
+ <MixDesignShow :script="dashboardData" />
171
+ </template>
172
+
173
+ <script setup>
174
+ import { MixDesignShow } from 'mixdashboards'
175
+ import 'mixdashboards/style'
176
+
177
+ const dashboardData = {
178
+ "dashboard": [{
179
+ "name": "生产监控大屏",
180
+ "id": "SHOW001",
181
+ "type": "show",
182
+ "version": "3.0.0",
183
+ "sheets": [{
184
+ "name": "主页面",
185
+ "id": "sheet_001",
186
+ "col": 100,
187
+ "screenWidth": 1920,
188
+ "screenHeight": 1080,
189
+ "background": "defaultBg1",
190
+ "layers": [
191
+ {
192
+ "id": "layer_001",
193
+ "name": "图层 1",
194
+ "visible": true,
195
+ "opacity": 100,
196
+ "order": 0,
197
+ "components": [
198
+ {
199
+ "x": 4, "y": 8, "w": 39, "h": 48,
200
+ "i": "001",
201
+ "type": "pie",
202
+ "id": "pie_001",
203
+ "name": "饼状图",
204
+ "options": {
205
+ "titleColor": "#111",
206
+ "bgColor": "#fff"
207
+ }
208
+ }
209
+ ]
210
+ },
211
+ {
212
+ "id": "layer_002",
213
+ "name": "图层 2",
214
+ "visible": true,
215
+ "opacity": 100,
216
+ "order": 1,
217
+ "components": [
218
+ {
219
+ "x": 50, "y": 30, "w": 45, "h": 50,
220
+ "i": "002",
221
+ "type": "circleBar",
222
+ "id": "circleBar_002",
223
+ "name": "环形图"
224
+ }
225
+ ]
226
+ }
227
+ ]
228
+ }]
229
+ }]
230
+ }
231
+ </script>
154
232
  ```
155
233
 
156
234
  ---
@@ -219,32 +297,84 @@ localStorage.setItem('user', JSON.stringify({
219
297
  }
220
298
  ```
221
299
 
222
- ## 配置结构
300
+ ## 📋 配置结构
301
+
302
+ ### 完整配置示例
223
303
 
224
304
  ```typescript
225
305
  interface DashboardConfig {
226
- name: string // 仪表盘名称
227
- type: 'pro' | 'show' // 类型
228
- version: string // 版本号
229
- sheets: Sheet[] // 页面列表
230
- currentPage: number // 当前页码
306
+ dashboard: [{
307
+ name: string // 仪表盘名称
308
+ id: string // 唯一ID
309
+ type: 'pro' | 'show' // 类型:pro=专业版, show=展示版
310
+ version: string // 版本号
311
+ sheets: Sheet[] // 页面列表
312
+ currentPage?: number // 当前页码
313
+ }]
231
314
  }
232
315
 
233
316
  interface Sheet {
234
- name: string // 页面名称
235
- components: Component[] // 组件列表
236
- background?: string // 背景设置
317
+ name: string // 页面名称
318
+ id: string // 页面ID
319
+ col: number // 列数(推荐 100)
320
+ screenWidth: number // 设计宽度(如 1920)
321
+ screenHeight: number // 设计高度(如 1080)
322
+ background?: string // 背景:颜色值或 'defaultBg1'/'defaultBg2'
323
+ layers: Layer[] // 图层列表
324
+ }
325
+
326
+ interface Layer {
327
+ id: string // 图层ID
328
+ name: string // 图层名称
329
+ visible: boolean // 是否可见
330
+ opacity: number // 透明度 0-100
331
+ order: number // 层级顺序(数字越大越靠上)
332
+ locked?: boolean // 是否锁定
333
+ components: Component[] // 该图层的组件列表
237
334
  }
238
335
 
239
336
  interface Component {
240
- type: string // 组件类型(如 'bar', 'line', 'pie' 等)
241
- name: string // 组件名称
242
- options: object // 组件配置
243
- data: DataItem[] // 数据配置
244
- common: CommonConfig // 通用配置
337
+ x: number // X 坐标(网格单位)
338
+ y: number // Y 坐标(网格单位)
339
+ w: number // 宽度(网格单位)
340
+ h: number // 高度(网格单位)
341
+ i: string // 唯一标识
342
+ id: string // 组件ID
343
+ type: string // 组件类型(如 'bar', 'line', 'pie' 等)
344
+ name: string // 组件名称
345
+ options?: object // 组件配置项
346
+ data?: DataItem[] // 数据配置
347
+ common?: CommonConfig // 通用配置(数据源)
348
+ }
349
+
350
+ interface DataItem {
351
+ fv: string // 字段变量名
352
+ name: string // 显示名称
353
+ }
354
+
355
+ interface CommonConfig {
356
+ object_id: string // 数据对象ID
245
357
  }
246
358
  ```
247
359
 
360
+ ### 图层系统说明
361
+
362
+ 图层按 `order` 值从小到大渲染,`order` 值大的图层显示在上层:
363
+
364
+ ```
365
+ ┌─────────────────────────────┐
366
+ │ 图层2 (order: 1) - 最上层 │
367
+ │ ┌─────────────────┐ │
368
+ │ │ 环形图 │ │
369
+ │ └─────────────────┘ │
370
+ ├─────────────────────────────┤
371
+ │ 图层1 (order: 0) - 底层 │
372
+ │ ┌─────────────────┐ │
373
+ │ │ 饼状图 │ │
374
+ │ └─────────────────┘ │
375
+ └─────────────────────────────┘
376
+ ```
377
+
248
378
  ---
249
379
 
250
380
  ## 💡 开发模式
@@ -265,18 +395,50 @@ interface Component {
265
395
 
266
396
  ---
267
397
 
268
- ## 🎨 支持的图表类型
269
-
270
- - 📊 **柱状图 (bar)** - 横向/纵向柱状图
271
- - 📈 **折线图 (line)** - 单线/多线图
272
- - 🥧 **饼图 (pie)** - 饼图/环形图
273
- - 📉 **散点图 (scatter)** - 散点分布图
274
- - 🎯 **仪表盘 (gauge)** - 仪表盘图表
275
- - 🗺️ **地图 (map)** - 地理数据可视化
276
- - 📊 **竞赛条图 (raceBar)** - 动态排名图
277
- - 🔢 **数字 (number)** - 数值展示组件
278
- - 📝 **表格 (table)** - 数据表格
279
- - 还有更多...
398
+ ## 🎨 支持的组件类型
399
+
400
+ ### 📊 图表类组件
401
+
402
+ | 类型 | 名称 | 说明 |
403
+ |------|------|------|
404
+ | `bar` | 柱状图 | 横向/纵向柱状图 |
405
+ | `line` | 折线图 | 单线/多线趋势图 |
406
+ | `pie` | 饼图 | 饼图/扇形图 |
407
+ | `circleBar` | 环形图 | 环形进度图 |
408
+ | `gauge` | 仪表盘 | 仪表盘图表 |
409
+ | `scatter` | 散点图 | 散点分布图 |
410
+ | `radar` | 雷达图 | 多维数据对比 |
411
+ | `funnel` | 漏斗图 | 转化率分析 |
412
+ | `raceBar` | 竞赛条图 | 动态排名图 |
413
+
414
+ ### 🔢 数据展示组件
415
+
416
+ | 类型 | 名称 | 说明 |
417
+ |------|------|------|
418
+ | `number` | 数字 | 大数字展示 |
419
+ | `table` | 表格 | 数据表格 |
420
+ | `list` | 列表 | 滚动列表 |
421
+ | `progress` | 进度条 | 进度展示 |
422
+ | `rank` | 排名 | 排行榜 |
423
+
424
+ ### 🎥 媒体组件
425
+
426
+ | 类型 | 名称 | 说明 |
427
+ |------|------|------|
428
+ | `video` | 视频 | 视频播放/RTMP推流 |
429
+ | `audio` | 音频 | 音频播放器 |
430
+ | `image` | 图片 | 图片展示 |
431
+ | `fileViewer` | 文件查看器 | PDF/Office 预览 |
432
+
433
+ ### �️ 其他组件
434
+
435
+ | 类型 | 名称 | 说明 |
436
+ |------|------|------|
437
+ | `clock` | 时钟 | 时间显示 |
438
+ | `text` | 文本 | 富文本展示 |
439
+ | `border` | 边框 | 装饰边框 |
440
+ | `map` | 地图 | 地理数据可视化 |
441
+ | `model3d` | 3D模型 | Three.js 3D展示 |
280
442
 
281
443
  ---
282
444
 
@@ -287,34 +449,51 @@ interface Component {
287
449
  确保导入了样式文件:
288
450
 
289
451
  ```typescript
452
+ import 'mixdashboards/style'
453
+ // 或者
290
454
  import 'mixdashboards/dist/mixdashboards.css'
291
- import 'element-plus/dist/index.css'
292
455
  ```
293
456
 
294
- ### 2. WebSocket 连接失败?
457
+ ### 2. ECharts 报错 "Can't get DOM width or height"?
458
+
459
+ 这是因为容器在 ECharts 初始化时还没有尺寸。MixDesignShow 组件已内置处理,确保:
460
+ - 父容器有明确的宽高
461
+ - 或者使用 MixDesignShow(会自动全屏)
462
+
463
+ ### 3. WebSocket 连接失败?
295
464
 
296
465
  检查以下几点:
297
466
  1. 确保设置了 `enableWebSocket="true"`
298
- 2. 确保 localStorage 中有用户 token
299
- 3. 检查网络连接和后端服务状态
467
+ 2. 确保 localStorage 中有用户 token
468
+ ```javascript
469
+ localStorage.setItem('user', JSON.stringify({ token: 'xxx' }))
470
+ ```
471
+ 3. 检查后端 WebSocket 服务是否正常
300
472
 
301
- ### 3. 图表不显示数据?
473
+ ### 4. 图表不显示数据?
302
474
 
303
475
  确保配置中包含:
304
476
  - `common.object_id` - 数据对象ID
305
477
  - `data[].fv` - 数据字段名
306
478
 
307
- ### 4. 如何自定义主题?
308
-
309
- 可以通过 CSS 变量覆盖默认样式:
479
+ ### 5. 大屏显示比例不对?
310
480
 
311
- ```css
312
- :root {
313
- --primary-color: #409EFF;
314
- --background-color: #1a1a1a;
481
+ 检查 Sheet 配置中的 `screenWidth` 和 `screenHeight` 是否正确设置:
482
+ ```javascript
483
+ {
484
+ "screenWidth": 1920,
485
+ "screenHeight": 1080,
486
+ "col": 100
315
487
  }
316
488
  ```
317
489
 
490
+ ### 6. 缺少依赖报错?
491
+
492
+ 确保安装了所有必需的 peer dependencies:
493
+ ```bash
494
+ npm install vue echarts three
495
+ ```
496
+
318
497
  ---
319
498
 
320
499
  ## 🔗 相关链接