@nywqs/scada-engine 1.1.20 → 1.1.21

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
@@ -12,6 +12,7 @@
12
12
  - 响应式:基于 Vue 3 Composition API
13
13
  - 动画引擎:支持节点和连线动画效果
14
14
  - 预览模式:支持编辑模式和预览模式切换
15
+ - 数据集成:支持多种数据源集成方式
15
16
 
16
17
  ## 安装
17
18
 
@@ -107,10 +108,10 @@ const handleNodeUpdate = (data: any) => {
107
108
  - 开关(switch):支持设备控制
108
109
 
109
110
  #### 画布配置
110
- - 画布尺寸:支持多种预设尺寸(1920x1080、1366x768等)
111
+ - 画布尺寸:支持多种预设尺寸(1920x1080、1366x768等)和自定义尺寸
111
112
  - 背景设置:支持颜色、图片背景
112
113
  - 网格配置:支持网格显示、类型、大小设置
113
- - 缩放控制:支持画布缩放
114
+ - 缩放控制:支持画布缩放和自适应屏幕
114
115
  - 参考线:支持对齐参考线
115
116
  - 磁吸功能:支持节点磁吸对齐
116
117
 
@@ -275,10 +276,153 @@ import type {
275
276
  EventConfig,
276
277
  BindingConfig,
277
278
  ComponentConfig,
278
- ComponentCategory
279
+ ComponentCategory,
280
+ Device,
281
+ DevicePoint,
282
+ DeviceList,
283
+ PointDataType,
284
+ PointAccessMode
279
285
  } from '@nywqs/scada-engine'
286
+
287
+ // 设备点位相关枚举
288
+ import {
289
+ DeviceStatus,
290
+ DeviceType,
291
+ PointDataType,
292
+ PointAccessMode
293
+ } from '@nywqs/scada-engine'
294
+ ```
295
+
296
+ ## 数据集成
297
+
298
+ SCADA引擎支持多种方式集成设备数据,实现数据绑定和实时更新。
299
+
300
+ ### 1. 通过组件属性传递数据
301
+
302
+ ```vue
303
+ <template>
304
+ <ScadaCanvas
305
+ :device-data="deviceData"
306
+ :data-source="dataConfig"
307
+ />
308
+ </template>
309
+
310
+ <script setup lang="ts">
311
+ import { ScadaCanvas } from '@nywqs/scada-engine'
312
+
313
+ // 设备数据
314
+ const deviceData = {
315
+ devices: [
316
+ {
317
+ id: 'device_001',
318
+ name: '1号温控设备',
319
+ status: 'online',
320
+ points: [
321
+ {
322
+ id: 'point_001_01',
323
+ name: '当前温度',
324
+ value: 25.5,
325
+ dataType: 'number',
326
+ unit: '°C'
327
+ }
328
+ ]
329
+ }
330
+ ]
331
+ }
332
+
333
+ // 数据源配置
334
+ const dataConfig = {
335
+ type: 'websocket', // 或 'mqtt', 'http', 'sse'
336
+ url: 'ws://localhost:8080/device-data',
337
+ interval: 1000 // 更新间隔(毫秒)
338
+ }
339
+ </script>
340
+ ```
341
+
342
+ ### 2. 通过暴露的方法更新数据
343
+
344
+ ```vue
345
+ <template>
346
+ <ScadaCanvas ref="scadaRef" />
347
+ </template>
348
+
349
+ <script setup lang="ts">
350
+ import { ref, onMounted } from 'vue'
351
+ import { ScadaCanvas } from '@nywqs/scada-engine'
352
+
353
+ const scadaRef = ref()
354
+
355
+ // 获取设备数据并更新到画布
356
+ const updateDeviceData = async () => {
357
+ // 从主应用的API获取设备数据
358
+ const deviceData = await fetchDeviceDataFromAPI()
359
+
360
+ // 通过暴露的方法更新到画布组件
361
+ scadaRef.value?.updateDeviceData(deviceData)
362
+ }
363
+
364
+ onMounted(() => {
365
+ // 定时更新设备数据
366
+ setInterval(updateDeviceData, 1000)
367
+ })
368
+ </script>
369
+ ```
370
+
371
+ ### 3. 使用事件绑定方式
372
+
373
+ ```vue
374
+ <template>
375
+ <ScadaCanvas
376
+ @data-request="handleDataRequest"
377
+ @data-update="handleDataUpdate"
378
+ />
379
+ </template>
380
+
381
+ <script setup lang="ts">
382
+ import { ScadaCanvas } from '@nywqs/scada-engine'
383
+
384
+ // 当画布需要数据时触发
385
+ const handleDataRequest = (requestData: any) => {
386
+ // 根据请求参数获取对应设备数据
387
+ const deviceData = getDeviceData(requestData.deviceIds)
388
+
389
+ // 返回数据给画布
390
+ return deviceData
391
+ }
392
+
393
+ // 当画布数据更新时触发
394
+ const handleDataUpdate = (updatedData: any) => {
395
+ // 将更新的数据发送到主应用的设备系统
396
+ updateDeviceValues(updatedData)
397
+ }
398
+ </script>
399
+ ```
400
+
401
+ ### 4. 数据格式要求
402
+
403
+ 设备数据应遵循以下格式:
404
+
405
+ ```typescript
406
+ interface DeviceData {
407
+ devices: Array<{
408
+ id: string // 设备唯一标识
409
+ name: string // 设备名称
410
+ status: 'online' | 'offline' | 'error' | 'maintenance'
411
+ points: Array<{
412
+ id: string // 点位唯一标识
413
+ name: string // 点位名称
414
+ value: any // 点位值
415
+ dataType: 'number' | 'boolean' | 'string'
416
+ unit?: string // 单位
417
+ quality: 'good' | 'bad' | 'uncertain' // 数据质量
418
+ updateTime: string // 更新时间
419
+ }>
420
+ }>
421
+ }
280
422
  ```
281
423
 
424
+ 推荐使用事件绑定方式或数据绑定配置,这两种方式可以实现主应用与SCADA引擎的双向数据同步,既灵活又高效。
425
+
282
426
  ## 使用示例
283
427
 
284
428
  ### 完整编辑器应用
@@ -472,6 +616,18 @@ npm publish
472
616
 
473
617
  ## 版本历史
474
618
 
619
+ ### 1.1.21 (2026-01-06)
620
+ - 设备数据集成:支持通过deviceData属性和updateDeviceData方法集成外部设备数据
621
+ - 修复预览按钮事件触发问题
622
+ - 优化路由跳转逻辑
623
+
624
+ ### 1.1.20 (2026-01-06)
625
+ - 画布自适应缩放:支持不同分辨率设备自动适配显示
626
+ - 组件库折叠展开:基础组件和IoT组件分组可收缩
627
+ - 组件库三列布局:优化组件展示,更紧凑的空间利用
628
+ - 画布自定义尺寸:支持800-7680px宽度,600-4320px高度
629
+ - 设备点位类型导出:完整的Device、DevicePoint等类型定义
630
+
475
631
  ### 1.1.11 (2025-12-30)
476
632
  - 修复预览按钮事件触发问题
477
633
  - 优化路由跳转逻辑