@jnrs/lingshu-smart 2.2.35 → 2.2.36
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/AGENTS.md +33 -12
- package/README.md +8 -8
- package/dist/components/debug/DebugPanel.vue.d.ts +1 -60
- package/dist/components/debug/WsProxy/ConnPanel.vue.d.ts +13 -4
- package/dist/components/debug/WsProxy/index.vue.d.ts +3 -6
- package/dist/components/debug/WsProxy/proxy.d.ts +16 -4
- package/dist/components/editor/ControlBar/CaseTitleEdit.vue.d.ts +87 -87
- package/dist/components/editor/OptionCard/Equipment/models/Pallet.vue.d.ts +2 -0
- package/dist/components/editor/OptionCard/Equipment/stationSlot/StationSlotGroupDialog.vue.d.ts +4 -0
- package/dist/components/editor/OptionCard/Equipment/stationSlot/StationSlotGroupLayers.vue.d.ts +2 -0
- package/dist/components/index.d.ts +1 -2
- package/dist/components/index.js +13337 -13018
- package/dist/components/preview/index.vue.d.ts +296 -0
- package/dist/index.js +94 -86
- package/dist/lingshu-smart/wsProxyConfig.json +30 -0
- package/dist/locales/index.js +2 -2
- package/dist/playground/ViewPageDemo.vue.d.ts +596 -8
- package/dist/stores/useAppStore.d.ts +888 -0
- package/dist/stores/useDataStore.d.ts +888 -0
- package/dist/stores/useDebugStore.d.ts +30 -12
- package/dist/types/components/config.types.d.ts +5 -0
- package/dist/types/enums.d.ts +2 -1
- package/dist/types/guards.d.ts +7 -1
- package/dist/types/models/config.types.d.ts +25 -1
- package/dist/types/models/operating.types.d.ts +14 -1
- package/dist/ui/models/Pallet.d.ts +16 -0
- package/dist/ui/models/ShuttleStation.d.ts +17 -4
- package/package.json +1 -1
- package/dist/components/debug/WsProxy/WsProxyPage.vue.d.ts +0 -14
- package/dist/components/debug/WsProxy/broadcast.d.ts +0 -31
package/AGENTS.md
CHANGED
|
@@ -476,6 +476,7 @@ onMounted(() => {
|
|
|
476
476
|
type ILayerOperating =
|
|
477
477
|
| IMachineToolOperating
|
|
478
478
|
| ILoadingStationOperating
|
|
479
|
+
| IShuttleStationOperating
|
|
479
480
|
| IMarkingMachineOperating
|
|
480
481
|
| ICleaningMachineOperating
|
|
481
482
|
| ISingleJointRobotOperating
|
|
@@ -483,6 +484,7 @@ type ILayerOperating =
|
|
|
483
484
|
| IRGVOperating
|
|
484
485
|
| IRailOperating
|
|
485
486
|
| IResourceStoreOperating
|
|
487
|
+
| IPalletOperating
|
|
486
488
|
```
|
|
487
489
|
|
|
488
490
|
### 子类型一览
|
|
@@ -491,6 +493,7 @@ type ILayerOperating =
|
|
|
491
493
|
| ---------------------------- | -------------------- | ------------------------------------------------------------------ | -------------------------------------------------- | ------------------ |
|
|
492
494
|
| `IMachineToolOperating` | `MACHINE_TOOL` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(含旋转)、进度条、出入口、工位槽 | `MachineTool` |
|
|
493
495
|
| `ILoadingStationOperating` | `LOADING_STATION` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(无旋转)、进度条、出入口、工位槽 | `LoadingStation` |
|
|
496
|
+
| `IShuttleStationOperating` | `SHUTTLE_STATION` | `light?`, `layerStatus?` | 状态灯、多工位层状态灯 | `ShuttleStation` |
|
|
494
497
|
| `IMarkingMachineOperating` | `MARKING_MACHINE` | `light?`, `progress?`, `entrance?`, `laserSiteNumberArray?` | 状态灯、进度条、出入口、工位槽、激光工位指示 | `MarkingMachine` |
|
|
495
498
|
| `ICleaningMachineOperating` | `CLEANING_MACHINE` | `light?`, `progress?`, `entrance?` | 状态灯、进度条、出入口、工位槽 | `CleaningMachine` |
|
|
496
499
|
| `ISingleJointRobotOperating` | `SINGLE_JOINT_ROBOT` | `light?`, `x?`, `y?`, `j1?`, `currentFixture?`, `resource?` | 双状态灯、轨道位移、关节旋转、夹具切换、双工位槽 | `SingleJointRobot` |
|
|
@@ -498,6 +501,7 @@ type ILayerOperating =
|
|
|
498
501
|
| `IRGVOperating` | `RGV` | `light?`, `x?`, `j1?`, `forkXY?`, `forkZ?`, `resource?` | 双状态灯、轨道位移、旋转、货叉 XY/Z、双工位槽 | `Rgv` |
|
|
499
502
|
| `IRailOperating` | `RAIL` | `x?`, `botId?` | 拖链动画(关联 botId 的设备移动时拖链跟随) | `Rail` |
|
|
500
503
|
| `IResourceStoreOperating` | `RESOURCE_STORE` | `light?`, `x?`, `resource?` | 状态灯、轨道位移、托盘/刀具工位槽 | `ResourceStore` |
|
|
504
|
+
| `IPalletOperating` | `PALLET` | `light?`, `x?`, `y?` | 状态灯、X/Y 位移 | `Pallet` |
|
|
501
505
|
|
|
502
506
|
### 子类型字段详情
|
|
503
507
|
|
|
@@ -521,6 +525,15 @@ type ILayerOperating =
|
|
|
521
525
|
| `stationRotatable` | `boolean` | 工位容器方向 |
|
|
522
526
|
| `resource` | `IResourceOperating` | 工位槽资源 |
|
|
523
527
|
|
|
528
|
+
#### IShuttleStationOperating
|
|
529
|
+
|
|
530
|
+
| 属性 | 类型 | 说明 |
|
|
531
|
+
| ------------- | ----------------------------------- | --------------------------------------------------------------- |
|
|
532
|
+
| `light` | `Omit<ILightOperating, 'rotating'>` | 状态灯(不支持旋转灯效) |
|
|
533
|
+
| `layerStatus` | `Record<number, number \| string>` | 各层工位组状态灯:键为层索引(1-based),值为状态码或颜色字符串 |
|
|
534
|
+
|
|
535
|
+
> `layerStatus` 在代理器中通过 `dictColorMap` 转换后值为颜色字符串;未转换时值为状态数字码。
|
|
536
|
+
|
|
524
537
|
#### IMarkingMachineOperating
|
|
525
538
|
|
|
526
539
|
| 属性 | 类型 | 说明 |
|
|
@@ -596,6 +609,14 @@ type ILayerOperating =
|
|
|
596
609
|
| `x` | `number` | 沿轨道位移(像素,随行托场景) |
|
|
597
610
|
| `resource` | `IResourceOperating` | 托盘/刀具工位槽增删 |
|
|
598
611
|
|
|
612
|
+
#### IPalletOperating
|
|
613
|
+
|
|
614
|
+
| 属性 | 类型 | 说明 |
|
|
615
|
+
| ------- | ----------------- | ----------------------- |
|
|
616
|
+
| `light` | `ILightOperating` | 状态灯 |
|
|
617
|
+
| `x` | `number` | 沿 X 轴移动位置(像素) |
|
|
618
|
+
| `y` | `number` | 沿 Y 轴移动位置(像素) |
|
|
619
|
+
|
|
599
620
|
### 子组件运转类型(IComponentOperating)
|
|
600
621
|
|
|
601
622
|
被 `ILayerOperating` 各字段引用的子组件操作类型,定义于 `src/types/components/operating.types.ts`:
|
|
@@ -699,18 +720,18 @@ type ILayerOperating =
|
|
|
699
720
|
|
|
700
721
|
### 架构
|
|
701
722
|
|
|
702
|
-
| 模块
|
|
703
|
-
|
|
|
704
|
-
| `utils/logger.ts`
|
|
705
|
-
| `utils/debug-flags.ts`
|
|
706
|
-
| `utils/performance-stats.ts`
|
|
707
|
-
| `stores/useDebugStore.ts`
|
|
708
|
-
| `composables/useDebugEasterEgg.ts`
|
|
709
|
-
| `components/debug/DebugPanel.vue`
|
|
710
|
-
| `components/debug/ScriptRunner/`
|
|
711
|
-
| `components/debug/WsProxy/`
|
|
712
|
-
| `components/debug/WsProxy/WsProxyPage.vue` | `WsProxy` 独立路由页面组件:以独立 URL/标签页运行代理器配置,将 operating/raw/状态广播给预览页驱动图形运转
|
|
713
|
-
| `controller/AppController.ts`
|
|
723
|
+
| 模块 | 职责 |
|
|
724
|
+
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
725
|
+
| `utils/logger.ts` | 统一日志工具,支持 tag 着色、LogLevel 过滤、`operating` 追踪级别 |
|
|
726
|
+
| `utils/debug-flags.ts` | 模块级动画标志位,供 UI 组件直接导入控制循环动画 |
|
|
727
|
+
| `utils/performance-stats.ts` | 性能统计工具,记录运行时长和 WebSocket 数据接收量 |
|
|
728
|
+
| `stores/useDebugStore.ts` | 全局调试配置 Pinia store,localStorage 持久化 |
|
|
729
|
+
| `composables/useDebugEasterEgg.ts` | 调试触发检测:500ms 内 10 次点击打开面板 |
|
|
730
|
+
| `components/debug/DebugPanel.vue` | 调试配置对话框 UI |
|
|
731
|
+
| `components/debug/ScriptRunner/` | Socket 脚本模拟器:脚本步骤编排、断点调试、消息结构配置(code/msg、payload 字段名、type)、日志查看 |
|
|
732
|
+
| `components/debug/WsProxy/` | WebSocket 代理器:声明式字段映射将后端 socket 结构桥接为 operating,支持连接/断开/重连、日志、配置导出/导入、场景像素换算(percentToPixel 百分比/ runtimeToPixel 运行时坐标)、standalone 独立标签页模式 / remote 远程接收模式(BroadcastChannel 跨标签页流转数据) |
|
|
733
|
+
| `components/debug/WsProxy/WsProxyPage.vue` | `WsProxy` 独立路由页面组件:以独立 URL/标签页运行代理器配置,将 operating/raw/状态广播给预览页驱动图形运转 |
|
|
734
|
+
| `controller/AppController.ts` | 提供 `toggleShadows` / `toggleAnimations` / `setFps` 方法 |
|
|
714
735
|
|
|
715
736
|
### 日志系统
|
|
716
737
|
|
package/README.md
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
### 核心功能
|
|
8
8
|
|
|
9
|
-
| 功能
|
|
10
|
-
|
|
|
11
|
-
| 编辑器模式
|
|
12
|
-
| 运行看板
|
|
13
|
-
| 设备模型
|
|
14
|
-
| 设备运转
|
|
15
|
-
| 坐标转换
|
|
16
|
-
| WebSocket 代理器 | `WsProxy` — 声明式字段映射将后端 socket 数据桥接为 operating
|
|
9
|
+
| 功能 | 说明 |
|
|
10
|
+
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| 编辑器模式 | `LingshuSmartEditor` — 方案可视化编辑,支持拖拽布局、设备配置、图层管理、方案保存/预览 |
|
|
12
|
+
| 运行看板 | `LingshuSmartPreview` — 方案运行看板,支持 WebSocket 实时驱动设备动画、交互事件(点击/拖拽/右键菜单) |
|
|
13
|
+
| 设备模型 | 机床、机器人(单关节/双关节)、RGV、装载站、打标机、清洗机、轨道拖链、资源库、托盘等 |
|
|
14
|
+
| 设备运转 | 灯光、进度条、入口动画、工位槽资源增删、坐标/角度/货叉控制 |
|
|
15
|
+
| 坐标转换 | `transRuntimeToPixel` / `transPercentToPixel` — 物理坐标与像素坐标互转 |
|
|
16
|
+
| WebSocket 代理器 | `WsProxy` — 声明式字段映射将后端 socket 数据桥接为 operating 驱动设备动画;支持内置请求器/外接注入两种数据源、direct/proxy 请求模式、自动连接开关、按 type 分类代理配置及配置导出/导入 |
|
|
17
17
|
|
|
18
18
|
## 💻 技术栈
|
|
19
19
|
|
|
@@ -1,61 +1,2 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
|
|
2
|
-
wsProxyRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
|
|
3
|
-
autoApply?: boolean;
|
|
4
|
-
config?: import('./WsProxy/proxy').WsProxyConfig;
|
|
5
|
-
scene?: import('../..').IScene | null;
|
|
6
|
-
dictFn?: import('./WsProxy/proxy').DictFn;
|
|
7
|
-
standalone?: boolean;
|
|
8
|
-
remote?: boolean;
|
|
9
|
-
}> & Readonly<{
|
|
10
|
-
onOperating?: ((data: import('../..').ILayerOperating) => any) | undefined;
|
|
11
|
-
onRaw?: ((data: unknown) => any) | undefined;
|
|
12
|
-
"onStatus-change"?: ((connected: boolean) => any) | undefined;
|
|
13
|
-
}>, {
|
|
14
|
-
open: () => void;
|
|
15
|
-
feedMessage: (rawMessage: any) => void;
|
|
16
|
-
setConfig: (cfg: import('./WsProxy/proxy').WsProxyConfig) => void;
|
|
17
|
-
isConnected: import('vue').Ref<boolean, boolean>;
|
|
18
|
-
rules: import('vue').ComputedRef<import('./WsProxy/proxy').ProxyRule[]>;
|
|
19
|
-
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
20
|
-
operating: (data: import('../..').ILayerOperating) => any;
|
|
21
|
-
raw: (data: unknown) => any;
|
|
22
|
-
"status-change": (connected: boolean) => any;
|
|
23
|
-
}, import('vue').PublicProps, {
|
|
24
|
-
scene: import('../..').IScene | null;
|
|
25
|
-
config: import('./WsProxy/proxy').WsProxyConfig;
|
|
26
|
-
remote: boolean;
|
|
27
|
-
autoApply: boolean;
|
|
28
|
-
standalone: boolean;
|
|
29
|
-
}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
|
|
30
|
-
P: {};
|
|
31
|
-
B: {};
|
|
32
|
-
D: {};
|
|
33
|
-
C: {};
|
|
34
|
-
M: {};
|
|
35
|
-
Defaults: {};
|
|
36
|
-
}, Readonly<{
|
|
37
|
-
autoApply?: boolean;
|
|
38
|
-
config?: import('./WsProxy/proxy').WsProxyConfig;
|
|
39
|
-
scene?: import('../..').IScene | null;
|
|
40
|
-
dictFn?: import('./WsProxy/proxy').DictFn;
|
|
41
|
-
standalone?: boolean;
|
|
42
|
-
remote?: boolean;
|
|
43
|
-
}> & Readonly<{
|
|
44
|
-
onOperating?: ((data: import('../..').ILayerOperating) => any) | undefined;
|
|
45
|
-
onRaw?: ((data: unknown) => any) | undefined;
|
|
46
|
-
"onStatus-change"?: ((connected: boolean) => any) | undefined;
|
|
47
|
-
}>, {
|
|
48
|
-
open: () => void;
|
|
49
|
-
feedMessage: (rawMessage: any) => void;
|
|
50
|
-
setConfig: (cfg: import('./WsProxy/proxy').WsProxyConfig) => void;
|
|
51
|
-
isConnected: import('vue').Ref<boolean, boolean>;
|
|
52
|
-
rules: import('vue').ComputedRef<import('./WsProxy/proxy').ProxyRule[]>;
|
|
53
|
-
}, {}, {}, {}, {
|
|
54
|
-
scene: import('../..').IScene | null;
|
|
55
|
-
config: import('./WsProxy/proxy').WsProxyConfig;
|
|
56
|
-
remote: boolean;
|
|
57
|
-
autoApply: boolean;
|
|
58
|
-
standalone: boolean;
|
|
59
|
-
}> | null;
|
|
60
|
-
}, any>;
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
61
2
|
export default _default;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { WsProxyRequestMode } from './proxy';
|
|
1
2
|
type __VLS_Props = {
|
|
2
3
|
url: string;
|
|
4
|
+
/** 请求模式:direct 直接请求 / proxy 代理请求 */
|
|
5
|
+
requestMode: WsProxyRequestMode;
|
|
6
|
+
/** 是否自动连接:组件挂载且 wsUrl 有效时自动建立 WebSocket 连接 */
|
|
7
|
+
autoConnect: boolean;
|
|
3
8
|
isConnected: boolean;
|
|
4
9
|
isConnecting: boolean;
|
|
5
10
|
stateInfo: string;
|
|
@@ -7,18 +12,22 @@ type __VLS_Props = {
|
|
|
7
12
|
heartbeatInterval: number;
|
|
8
13
|
};
|
|
9
14
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
15
|
+
disconnect: () => any;
|
|
16
|
+
send: (data: string) => any;
|
|
10
17
|
"update:url": (value: string) => any;
|
|
18
|
+
"update:requestMode": (value: WsProxyRequestMode) => any;
|
|
19
|
+
"update:autoConnect": (value: boolean) => any;
|
|
11
20
|
"update:heartbeatInterval": (value: number) => any;
|
|
12
21
|
connect: () => any;
|
|
13
|
-
disconnect: () => any;
|
|
14
22
|
reconnect: () => any;
|
|
15
|
-
send: (data: string) => any;
|
|
16
23
|
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
24
|
+
onDisconnect?: (() => any) | undefined;
|
|
25
|
+
onSend?: ((data: string) => any) | undefined;
|
|
17
26
|
"onUpdate:url"?: ((value: string) => any) | undefined;
|
|
27
|
+
"onUpdate:requestMode"?: ((value: WsProxyRequestMode) => any) | undefined;
|
|
28
|
+
"onUpdate:autoConnect"?: ((value: boolean) => any) | undefined;
|
|
18
29
|
"onUpdate:heartbeatInterval"?: ((value: number) => any) | undefined;
|
|
19
30
|
onConnect?: (() => any) | undefined;
|
|
20
|
-
onDisconnect?: (() => any) | undefined;
|
|
21
31
|
onReconnect?: (() => any) | undefined;
|
|
22
|
-
onSend?: ((data: string) => any) | undefined;
|
|
23
32
|
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
24
33
|
export default _default;
|
|
@@ -10,10 +10,8 @@ type __VLS_Props = {
|
|
|
10
10
|
/** 字典转换函数:用于「字典 Label / 字典 Color」特殊处理
|
|
11
11
|
* 入参 (name: string, value?: string|number, type: 'label'|'color'),返回 string 赋给画布字段 */
|
|
12
12
|
dictFn?: DictFn;
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
/** 远程接收模式:监听 BroadcastChannel,将独立代理器广播的 operating/raw/状态 透传给父组件 */
|
|
16
|
-
remote?: boolean;
|
|
13
|
+
/** 认证 token:作为 WebSocket 子协议(subprotocol)附带在连接请求中(参考 useWebSocket 的 token 用法) */
|
|
14
|
+
token?: string;
|
|
17
15
|
};
|
|
18
16
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
19
17
|
open: () => void;
|
|
@@ -32,8 +30,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
|
32
30
|
}>, {
|
|
33
31
|
scene: IScene | null;
|
|
34
32
|
config: WsProxyConfig;
|
|
35
|
-
remote: boolean;
|
|
36
33
|
autoApply: boolean;
|
|
37
|
-
|
|
34
|
+
token: string;
|
|
38
35
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
39
36
|
export default _default;
|
|
@@ -19,11 +19,11 @@ export interface FieldMapper {
|
|
|
19
19
|
/** 值映射:把源字段的取值映射为指定值(键为源值字符串,如 { '1': true }) */
|
|
20
20
|
valueMap?: Record<string, boolean | number | string>;
|
|
21
21
|
/** 源字段为空或未命中 valueMap 时的兜底值 */
|
|
22
|
-
defaultValue?: boolean | number | string
|
|
22
|
+
defaultValue?: boolean | number | string | Record<string, unknown>;
|
|
23
23
|
/** 是否启用该映射(默认 true) */
|
|
24
24
|
enabled?: boolean;
|
|
25
|
-
/** 特殊处理:'percentToPixel' 百分比转像素 / 'runtimeToPixel' 运行时坐标转像素 / 'dictLabel' 字典Label / 'dictColor' 字典Color / 'condition' 条件判断;为空表示不处理 */
|
|
26
|
-
transform?: 'percentToPixel' | 'runtimeToPixel' | 'dictLabel' | 'dictColor' | 'condition';
|
|
25
|
+
/** 特殊处理:'percentToPixel' 百分比转像素 / 'runtimeToPixel' 运行时坐标转像素 / 'dictLabel' 字典Label / 'dictColor' 字典Color / 'dictColorMap' 对象值批量字典Color / 'condition' 条件判断;为空表示不处理 */
|
|
26
|
+
transform?: 'percentToPixel' | 'runtimeToPixel' | 'dictLabel' | 'dictColor' | 'dictColorMap' | 'condition';
|
|
27
27
|
/** 换算维度(transform 为 percentToPixel / runtimeToPixel 时必填):'width' 横向 / 'height' 纵向 */
|
|
28
28
|
transformType?: 'width' | 'height';
|
|
29
29
|
/** 换算精度(transform 为 percentToPixel 时生效,默认 2) */
|
|
@@ -87,14 +87,26 @@ export interface ProxyRule {
|
|
|
87
87
|
/** 全局操作字段映射(operate: 'global' 时生效) */
|
|
88
88
|
globalFields?: GlobalFieldConfig;
|
|
89
89
|
}
|
|
90
|
+
/** 请求模式:direct 直接请求(完整 ws/wss 地址);proxy 代理请求(仅 path,通过 vite/nginx 代理转发) */
|
|
91
|
+
export type WsProxyRequestMode = 'direct' | 'proxy';
|
|
92
|
+
/** 数据源:builtin 内置模式(组件内置 WebSocket 请求器);external 外接模式(feedMessage 注入) */
|
|
93
|
+
export type WsProxyDataSource = 'builtin' | 'external';
|
|
90
94
|
/** WsProxy 代理配置(可导出为 JSON) */
|
|
91
95
|
export interface WsProxyConfig {
|
|
92
96
|
/** 配置文件相对路径(不含 .json,支持嵌套如 lingshu-smart/wsProxyConfig) */
|
|
93
97
|
name: string;
|
|
94
98
|
/** 配置版本 */
|
|
95
99
|
version: number;
|
|
96
|
-
/**
|
|
100
|
+
/** 数据源:builtin 内置模式(组件内置 WebSocket 请求器);external 外接模式(feedMessage 注入);默认 builtin */
|
|
101
|
+
dataSource?: WsProxyDataSource;
|
|
102
|
+
/** 默认 WebSocket 地址(可选)
|
|
103
|
+
* direct 模式:完整 ws/wss 地址(如 ws://host:port/path)
|
|
104
|
+
* proxy 模式:仅路径(如 ws/monitor?page=ctsMonitor),运行时拼接当前页面协议+主机 */
|
|
97
105
|
wsUrl?: string;
|
|
106
|
+
/** 请求模式:direct 直接请求 / proxy 代理请求(仅填 path,通过 vite/nginx 代理);默认 direct */
|
|
107
|
+
requestMode?: WsProxyRequestMode;
|
|
108
|
+
/** 是否在组件挂载且 wsUrl 有效时自动连接 WebSocket(默认 true) */
|
|
109
|
+
autoConnect?: boolean;
|
|
98
110
|
/** 业务数据字段名:源消息下该字段的数据作为画布运行 payload(默认 data) */
|
|
99
111
|
payloadKey?: string;
|
|
100
112
|
/** 源类型字段名:从源消息中提取设备类型的字段路径(默认 type,可设为 data.type 等) */
|
|
@@ -17,12 +17,12 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
17
17
|
}> & Omit<{
|
|
18
18
|
readonly type: import('element-plus').InputType;
|
|
19
19
|
readonly modelValue: string | number | null;
|
|
20
|
-
readonly modelModifiers: import('element-plus').InputModelModifiers;
|
|
21
20
|
readonly autocomplete: string;
|
|
22
|
-
readonly wordLimitPosition: "inside" | "outside";
|
|
23
|
-
readonly tabindex: string | number;
|
|
24
21
|
readonly validateEvent: boolean;
|
|
22
|
+
readonly tabindex: string | number;
|
|
25
23
|
readonly inputStyle: string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null;
|
|
24
|
+
readonly modelModifiers: import('element-plus').InputModelModifiers;
|
|
25
|
+
readonly wordLimitPosition: "inside" | "outside";
|
|
26
26
|
readonly rows: number;
|
|
27
27
|
readonly name?: string | undefined;
|
|
28
28
|
readonly disabled?: boolean | undefined;
|
|
@@ -31,22 +31,22 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
31
31
|
readonly form?: string | undefined;
|
|
32
32
|
readonly size?: import('element-plus').ComponentSize | undefined;
|
|
33
33
|
readonly resize?: "none" | "both" | "horizontal" | "vertical" | undefined;
|
|
34
|
+
readonly ariaLabel?: string | undefined;
|
|
35
|
+
readonly clearable?: boolean | undefined;
|
|
36
|
+
readonly clearIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
|
|
37
|
+
readonly suffixIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
|
|
34
38
|
readonly autofocus?: boolean | undefined;
|
|
39
|
+
readonly readonly?: boolean | undefined;
|
|
40
|
+
readonly inputmode?: "none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal" | undefined;
|
|
35
41
|
readonly maxlength?: string | number | undefined;
|
|
36
42
|
readonly minlength?: string | number | undefined;
|
|
37
43
|
readonly autosize?: import('element-plus').InputAutoSize | undefined;
|
|
38
44
|
readonly formatter?: ((value: string) => string) | undefined;
|
|
39
45
|
readonly parser?: ((value: string) => string) | undefined;
|
|
40
|
-
readonly readonly?: boolean | undefined;
|
|
41
|
-
readonly clearable?: boolean | undefined;
|
|
42
|
-
readonly clearIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
|
|
43
46
|
readonly showPassword?: boolean | undefined;
|
|
44
47
|
readonly showWordLimit?: boolean | undefined;
|
|
45
|
-
readonly suffixIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
|
|
46
48
|
readonly prefixIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
|
|
47
49
|
readonly containerRole?: string | undefined;
|
|
48
|
-
readonly ariaLabel?: string | undefined;
|
|
49
|
-
readonly inputmode?: "none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal" | undefined;
|
|
50
50
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined | undefined;
|
|
51
51
|
onInput?: ((value: string) => any) | undefined | undefined;
|
|
52
52
|
onFocus?: ((evt: FocusEvent) => any) | undefined | undefined;
|
|
@@ -59,7 +59,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
59
59
|
onMouseenter?: ((evt: MouseEvent) => any) | undefined | undefined;
|
|
60
60
|
onMouseleave?: ((evt: MouseEvent) => any) | undefined | undefined;
|
|
61
61
|
onClear?: (() => any) | undefined | undefined;
|
|
62
|
-
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, "disabled" | "type" | "modelValue" | "
|
|
62
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, "disabled" | "type" | "modelValue" | "autocomplete" | "clearIcon" | "validateEvent" | "tabindex" | "inputStyle" | "modelModifiers" | "wordLimitPosition" | "rows">;
|
|
63
63
|
$attrs: {
|
|
64
64
|
[x: string]: unknown;
|
|
65
65
|
};
|
|
@@ -101,13 +101,48 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
101
101
|
resize: {
|
|
102
102
|
type: import('vue').PropType<"horizontal" | "vertical" | "none" | "both">;
|
|
103
103
|
};
|
|
104
|
-
autofocus: {
|
|
105
|
-
type: import('vue').PropType<boolean>;
|
|
106
|
-
};
|
|
107
104
|
modelValue: {
|
|
108
105
|
type: import('vue').PropType<string | number | null>;
|
|
109
106
|
default: "";
|
|
110
107
|
};
|
|
108
|
+
ariaLabel: {
|
|
109
|
+
type: import('vue').PropType<string>;
|
|
110
|
+
};
|
|
111
|
+
autocomplete: {
|
|
112
|
+
type: import('vue').PropType<string>;
|
|
113
|
+
default: "off";
|
|
114
|
+
};
|
|
115
|
+
clearable: {
|
|
116
|
+
type: import('vue').PropType<boolean>;
|
|
117
|
+
};
|
|
118
|
+
clearIcon: {
|
|
119
|
+
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
120
|
+
default: any;
|
|
121
|
+
};
|
|
122
|
+
suffixIcon: {
|
|
123
|
+
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
124
|
+
};
|
|
125
|
+
validateEvent: {
|
|
126
|
+
type: import('vue').PropType<boolean>;
|
|
127
|
+
default: true;
|
|
128
|
+
};
|
|
129
|
+
tabindex: {
|
|
130
|
+
type: import('vue').PropType<string | number>;
|
|
131
|
+
default: 0;
|
|
132
|
+
};
|
|
133
|
+
inputStyle: {
|
|
134
|
+
type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
|
|
135
|
+
default: () => {};
|
|
136
|
+
};
|
|
137
|
+
autofocus: {
|
|
138
|
+
type: import('vue').PropType<boolean>;
|
|
139
|
+
};
|
|
140
|
+
readonly: {
|
|
141
|
+
type: import('vue').PropType<boolean>;
|
|
142
|
+
};
|
|
143
|
+
inputmode: {
|
|
144
|
+
type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
|
|
145
|
+
};
|
|
111
146
|
modelModifiers: {
|
|
112
147
|
type: import('vue').PropType<import('element-plus').InputModelModifiers>;
|
|
113
148
|
default: () => {};
|
|
@@ -121,26 +156,12 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
121
156
|
autosize: {
|
|
122
157
|
type: import('vue').PropType<import('element-plus').InputAutoSize>;
|
|
123
158
|
};
|
|
124
|
-
autocomplete: {
|
|
125
|
-
type: import('vue').PropType<string>;
|
|
126
|
-
default: "off";
|
|
127
|
-
};
|
|
128
159
|
formatter: {
|
|
129
160
|
type: import('vue').PropType<(value: string) => string>;
|
|
130
161
|
};
|
|
131
162
|
parser: {
|
|
132
163
|
type: import('vue').PropType<(value: string) => string>;
|
|
133
164
|
};
|
|
134
|
-
readonly: {
|
|
135
|
-
type: import('vue').PropType<boolean>;
|
|
136
|
-
};
|
|
137
|
-
clearable: {
|
|
138
|
-
type: import('vue').PropType<boolean>;
|
|
139
|
-
};
|
|
140
|
-
clearIcon: {
|
|
141
|
-
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
142
|
-
default: any;
|
|
143
|
-
};
|
|
144
165
|
showPassword: {
|
|
145
166
|
type: import('vue').PropType<boolean>;
|
|
146
167
|
};
|
|
@@ -151,37 +172,16 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
151
172
|
type: import('vue').PropType<"inside" | "outside">;
|
|
152
173
|
default: "inside";
|
|
153
174
|
};
|
|
154
|
-
suffixIcon: {
|
|
155
|
-
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
156
|
-
};
|
|
157
175
|
prefixIcon: {
|
|
158
176
|
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
159
177
|
};
|
|
160
178
|
containerRole: {
|
|
161
179
|
type: import('vue').PropType<string>;
|
|
162
180
|
};
|
|
163
|
-
tabindex: {
|
|
164
|
-
type: import('vue').PropType<string | number>;
|
|
165
|
-
default: 0;
|
|
166
|
-
};
|
|
167
|
-
validateEvent: {
|
|
168
|
-
type: import('vue').PropType<boolean>;
|
|
169
|
-
default: true;
|
|
170
|
-
};
|
|
171
|
-
inputStyle: {
|
|
172
|
-
type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
|
|
173
|
-
default: () => {};
|
|
174
|
-
};
|
|
175
181
|
rows: {
|
|
176
182
|
type: import('vue').PropType<number>;
|
|
177
183
|
default: 2;
|
|
178
184
|
};
|
|
179
|
-
ariaLabel: {
|
|
180
|
-
type: import('vue').PropType<string>;
|
|
181
|
-
};
|
|
182
|
-
inputmode: {
|
|
183
|
-
type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
|
|
184
|
-
};
|
|
185
185
|
}>> & {
|
|
186
186
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
187
187
|
onInput?: ((value: string) => any) | undefined;
|
|
@@ -291,13 +291,48 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
291
291
|
resize: {
|
|
292
292
|
type: import('vue').PropType<"horizontal" | "vertical" | "none" | "both">;
|
|
293
293
|
};
|
|
294
|
-
autofocus: {
|
|
295
|
-
type: import('vue').PropType<boolean>;
|
|
296
|
-
};
|
|
297
294
|
modelValue: {
|
|
298
295
|
type: import('vue').PropType<string | number | null>;
|
|
299
296
|
default: "";
|
|
300
297
|
};
|
|
298
|
+
ariaLabel: {
|
|
299
|
+
type: import('vue').PropType<string>;
|
|
300
|
+
};
|
|
301
|
+
autocomplete: {
|
|
302
|
+
type: import('vue').PropType<string>;
|
|
303
|
+
default: "off";
|
|
304
|
+
};
|
|
305
|
+
clearable: {
|
|
306
|
+
type: import('vue').PropType<boolean>;
|
|
307
|
+
};
|
|
308
|
+
clearIcon: {
|
|
309
|
+
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
310
|
+
default: any;
|
|
311
|
+
};
|
|
312
|
+
suffixIcon: {
|
|
313
|
+
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
314
|
+
};
|
|
315
|
+
validateEvent: {
|
|
316
|
+
type: import('vue').PropType<boolean>;
|
|
317
|
+
default: true;
|
|
318
|
+
};
|
|
319
|
+
tabindex: {
|
|
320
|
+
type: import('vue').PropType<string | number>;
|
|
321
|
+
default: 0;
|
|
322
|
+
};
|
|
323
|
+
inputStyle: {
|
|
324
|
+
type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
|
|
325
|
+
default: () => {};
|
|
326
|
+
};
|
|
327
|
+
autofocus: {
|
|
328
|
+
type: import('vue').PropType<boolean>;
|
|
329
|
+
};
|
|
330
|
+
readonly: {
|
|
331
|
+
type: import('vue').PropType<boolean>;
|
|
332
|
+
};
|
|
333
|
+
inputmode: {
|
|
334
|
+
type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
|
|
335
|
+
};
|
|
301
336
|
modelModifiers: {
|
|
302
337
|
type: import('vue').PropType<import('element-plus').InputModelModifiers>;
|
|
303
338
|
default: () => {};
|
|
@@ -311,26 +346,12 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
311
346
|
autosize: {
|
|
312
347
|
type: import('vue').PropType<import('element-plus').InputAutoSize>;
|
|
313
348
|
};
|
|
314
|
-
autocomplete: {
|
|
315
|
-
type: import('vue').PropType<string>;
|
|
316
|
-
default: "off";
|
|
317
|
-
};
|
|
318
349
|
formatter: {
|
|
319
350
|
type: import('vue').PropType<(value: string) => string>;
|
|
320
351
|
};
|
|
321
352
|
parser: {
|
|
322
353
|
type: import('vue').PropType<(value: string) => string>;
|
|
323
354
|
};
|
|
324
|
-
readonly: {
|
|
325
|
-
type: import('vue').PropType<boolean>;
|
|
326
|
-
};
|
|
327
|
-
clearable: {
|
|
328
|
-
type: import('vue').PropType<boolean>;
|
|
329
|
-
};
|
|
330
|
-
clearIcon: {
|
|
331
|
-
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
332
|
-
default: any;
|
|
333
|
-
};
|
|
334
355
|
showPassword: {
|
|
335
356
|
type: import('vue').PropType<boolean>;
|
|
336
357
|
};
|
|
@@ -341,37 +362,16 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
341
362
|
type: import('vue').PropType<"inside" | "outside">;
|
|
342
363
|
default: "inside";
|
|
343
364
|
};
|
|
344
|
-
suffixIcon: {
|
|
345
|
-
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
346
|
-
};
|
|
347
365
|
prefixIcon: {
|
|
348
366
|
type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
|
|
349
367
|
};
|
|
350
368
|
containerRole: {
|
|
351
369
|
type: import('vue').PropType<string>;
|
|
352
370
|
};
|
|
353
|
-
tabindex: {
|
|
354
|
-
type: import('vue').PropType<string | number>;
|
|
355
|
-
default: 0;
|
|
356
|
-
};
|
|
357
|
-
validateEvent: {
|
|
358
|
-
type: import('vue').PropType<boolean>;
|
|
359
|
-
default: true;
|
|
360
|
-
};
|
|
361
|
-
inputStyle: {
|
|
362
|
-
type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
|
|
363
|
-
default: () => {};
|
|
364
|
-
};
|
|
365
371
|
rows: {
|
|
366
372
|
type: import('vue').PropType<number>;
|
|
367
373
|
default: 2;
|
|
368
374
|
};
|
|
369
|
-
ariaLabel: {
|
|
370
|
-
type: import('vue').PropType<string>;
|
|
371
|
-
};
|
|
372
|
-
inputmode: {
|
|
373
|
-
type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
|
|
374
|
-
};
|
|
375
375
|
}>> & {
|
|
376
376
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
377
377
|
onInput?: ((value: string) => any) | undefined;
|
|
@@ -385,7 +385,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
|
|
|
385
385
|
onMouseenter?: ((evt: MouseEvent) => any) | undefined;
|
|
386
386
|
onMouseleave?: ((evt: MouseEvent) => any) | undefined;
|
|
387
387
|
onClear?: (() => any) | undefined;
|
|
388
|
-
}, "disabled" | "type" | "blur" | "focus" | "clear" | "input" | "select" | "textarea" | "
|
|
388
|
+
}, "disabled" | "type" | "blur" | "focus" | "clear" | "input" | "select" | "textarea" | "modelValue" | "autocomplete" | "clearIcon" | "validateEvent" | "tabindex" | "inputStyle" | "ref" | "modelModifiers" | "autosize" | "wordLimitPosition" | "rows" | "textareaStyle" | "isComposing" | "resizeTextarea"> & import('vue').ShallowUnwrapRef<{
|
|
389
389
|
input: import('vue').ShallowRef<HTMLInputElement | undefined>;
|
|
390
390
|
textarea: import('vue').ShallowRef<HTMLTextAreaElement | undefined>;
|
|
391
391
|
ref: import('vue').ComputedRef<HTMLInputElement | HTMLTextAreaElement | undefined>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
package/dist/components/editor/OptionCard/Equipment/stationSlot/StationSlotGroupDialog.vue.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ interface Props {
|
|
|
5
5
|
resourceType: EnumResourceType;
|
|
6
6
|
flowOptions?: IFlowConfig;
|
|
7
7
|
stationSlots?: IStationSlotConfig[];
|
|
8
|
+
hideBounds?: boolean;
|
|
8
9
|
containerWidth?: number;
|
|
9
10
|
containerHeight?: number;
|
|
10
11
|
}
|
|
@@ -13,14 +14,17 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
|
|
|
13
14
|
save: (data: {
|
|
14
15
|
flowOptions: IFlowConfig;
|
|
15
16
|
stationSlots: IStationSlotConfig[];
|
|
17
|
+
hideBounds: boolean;
|
|
16
18
|
}) => any;
|
|
17
19
|
}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
|
|
18
20
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
19
21
|
onSave?: ((data: {
|
|
20
22
|
flowOptions: IFlowConfig;
|
|
21
23
|
stationSlots: IStationSlotConfig[];
|
|
24
|
+
hideBounds: boolean;
|
|
22
25
|
}) => any) | undefined;
|
|
23
26
|
}>, {
|
|
27
|
+
hideBounds: boolean;
|
|
24
28
|
stationSlots: IStationSlotConfig[];
|
|
25
29
|
flowOptions: IFlowConfig;
|
|
26
30
|
containerWidth: number;
|
package/dist/components/editor/OptionCard/Equipment/stationSlot/StationSlotGroupLayers.vue.d.ts
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -3,5 +3,4 @@ import { default as LingshuSmartPreview } from './preview/index.vue';
|
|
|
3
3
|
import { default as PerformanceStats } from './debug/PerformanceStats.vue';
|
|
4
4
|
import { default as ScriptRunner } from './debug/ScriptRunner/index.vue';
|
|
5
5
|
import { default as WsProxy } from './debug/WsProxy/index.vue';
|
|
6
|
-
|
|
7
|
-
export { LingshuSmartEditor, LingshuSmartPreview, PerformanceStats, ScriptRunner, WsProxy, WsProxyPage };
|
|
6
|
+
export { LingshuSmartEditor, LingshuSmartPreview, PerformanceStats, ScriptRunner, WsProxy };
|