/// import { BoxItem } from "../box/interface"; import { DriveItem, RegisterItem } from "../drive/interface"; import { Column } from "../shared/Column"; import { MqttCombination, MqttTimestamp } from "../shared/DefaultValues"; import { PaginationProps } from "../shared/Pagination"; import { SelectItem } from "../shared/SelectItem"; /** * PLC对象 * @see [PLC配置协议](https://broker-docs.platform.flexem.net/mqtt/protocol#plc%E9%85%8D%E7%BD%AE%E5%8D%8F%E8%AE%AE) */ export interface PlcItem { /** Id 一般作为主键(GUID) */ id?: string; /** PLC驱动厂商 */ manufacturer?: string; /** cfg中的驱动Id PLC Id号(0表示为本地监控点) */ plcId?: number; /** cfg中的驱动名称 */ plcName?: string; /** 别名 */ alias?: string; /** 通信类型(ethernet, serial, local[本地类型无驱动]) */ type?: string; /** 网络配置 */ ethernet?: { /** IP地址 */ ip?: string; /** 端口 */ port?: number; }; /** 串口配置 */ serial?: { /** 通讯参数(0:com1 1:com2 2:com3) */ portNo?: number; /** 工作模式(0:RS232 1:RS485_4W 2:RS485_2W) */ workMode?: number; /** 波特率 */ baudRate?: number; /** 数据位 */ dataBits?: number; /** 停止位(0:None 1:One 2:Two 3:OneHanlf) */ stopBits?: number; /** 校验位(0:None 1:Odd 2:Even) */ parity?: number; }; /** 设备模式(0:主模式 1:从模式) */ deviceMode?: number; /** 从设备站号 */ slaveStationNo?: number; /** 是否启用广播站号 */ enableBroadcast?: boolean; /** 广播站号 */ broadcastStationNo?: number; /** 高级选项 */ advance?: { /** PLC超时常数 */ plcResponceTimeout?: number; /** 协议超时常数1 */ protocolTimeout1?: number; /** 协议超时常数2 */ protocolTimeout2?: number; /** 字最大组包长度 */ maxPacketsWordReg?: number; /** 位最大组包长度 */ maxPacketsBitReg?: number; /** 字组包间隔 */ assembleIntervalWordReg?: number; /** 位组包间隔 */ assembleIntervalBitReg?: number; /** 通信时间间隔 */ protocolInterval?: number; /** 16位字节序(0:21, 1:12) */ byteOrder16?: number; /** 32位字节序(0:4321, 1:3412, 2:2143, 3:1234) */ byteOrder32?: number; /** 32位浮点字节序(0:4321, 1:3412, 2:2143, 3:1234) */ byteOrderFloat?: number; /** 自动组包 */ autoPackage?: number; /** 提醒信息显示时间 */ errMsgDispTime?: number; }; /** 驱动文件 */ drive?: { /** 驱动so文件Url */ soFileUrl?: string; /** 驱动so文件MD5 */ soFileMd5?: string; }; /** 寄存器列表 */ registers?: RegisterItem[]; } /** * 变量配置对象 * @see [变量配置协议](https://broker-docs.platform.flexem.net/mqtt/protocol#%E5%8F%98%E9%87%8F%E9%85%8D%E7%BD%AE%E5%8D%8F%E8%AE%AE) */ export interface VariableItem { /** id 一般作为主键(Guid) */ id?: string; /** 变量名称 */ name?: string; /** 描述信息(下位机忽略) */ description?: string; /** 关联的PLCId(对应PlcItem.id) */ deviceId?: string; /** 站号(本地监控点站号为0xff) */ stationNo?: number; /** 数据类型(0:boolean, 1:uint16, 2:int16, 3:bcd16, 4:hex16, 5:binary16, 11:uint32, 12:int32, 13:bcd32, 14:hex32, 15:binary32, 16:single/float, 30:string) */ dataType?: number; /** 字符串编码设置 */ stringSetting?: { /** 编码类型 0:none 1:unicode 2:ascii */ encoding?: number; /** 高低字节转换 */ order?: boolean; /** 字符个数 */ charCount?: number; }; /** 寄存器Id */ registerId?: number; /** 寄存器名称 */ registerName?: string; /** 主地址 */ mainAddress?: number; /** 子地址 */ subAddress?: number; /** 地址块索引(西门子专用) */ subIndex?: number; /** 单位 */ unit?: string; /** 死区 */ deadZone?: number; /** 启用按位索引 */ enabledIndex?: boolean; /** 按位索引 */ bitIndex?: number; /** 整数位 */ integerDigits?: number; /** 小数位 */ fractionDigits?: number; /** 读写配置(2:只写, 4:只读, 6:读写) */ privilege?: number; /** 数值运算 */ valueTransform?: { /** 运算类型(0:不启用,1:比例,2:缩放) */ type?: number; /** 比例换算 */ scale?: { /** 数值上限 */ maxValue?: number; /** 数值下限 */ minValue?: number; /** 比例上限 */ scaleMaxValue?: number; /** 比例下限 */ scaleMinValue?: number; }; /** 缩放 */ zoom?: { /** 增益 */ gain?: number; /** 偏移量 */ offset?: number; }; }; } /** * 报警配置条目 */ export interface AlarmItem { /** id 一般作为主键(Guid) */ id?: string; /** 报警名称 */ name?: string; /** 关联变量Id */ variableId?: string; /** * 条件1 * 0:不等于, 1:等于, 2:大于 3:大于等于 4:小于 5:小于等于 */ condition1?: number; /** 条件1对应的值 */ operate1?: number; /** * 关系运算符 * 0:None, 1:And 2:Or */ condMethod?: number; /** * 条件2 * 0:不等于, 1:等于, 2:大于 3:大于等于 4:小于 5:小于等于 */ condition2?: number; /** * 条件2对应的值 */ operate2?: number; /** 报警消息 */ msg?: string; /** 死区值 */ dead_value?: number; /** 死区类型(0:忽略 2:整数 4:浮点) */ dead_type?: number; } /** * 数据转发变量格式对象 */ export interface TransferFormatItem { /** id(guid) */ id?: string; /** 对象类型(item:监控点, attri:内置属性, define_attri:自定义变量, array:数组, object:对象) */ obj_type?: string; /** 关联监控点、内置变量名称 */ relate_name?: string | null; /** MQTT变量名称 */ anonymous_name?: string; /** MQTT变量类型 */ value_type?: string; /** 关联监控点Id */ item_id?: string | null; /** 默认值 */ default_value?: any; /** 关联组合方式 */ combe_type?: string | null; /** * 子节点 * 默认array和object类型才有子节点 */ children?: TransferFormatItem[] | null; } /** * 数据转发Topic对象 */ export interface TransferTopicItem { /** topic */ topic?: string; /** server_id */ server_mark?: string; /** 启用离线缓存后的Topic */ cacheTopic?: string; /** MQTT变量列表 */ format?: TransferFormatItem[]; } /** * 数据转发功能对象 */ export interface TransferFunctionItem { /** Id */ id?: string; /** 功能名称 */ name?: string; /** * 功能类型 * @see [转发功能列表](https://broker-docs.platform.flexem.net/mqtt/function) */ function?: string; /** 发布配置 */ pub?: TransferTopicItem; /** 订阅配置 */ sub?: TransferTopicItem; alarm_event?: { /** 报警条目Id(guid) */ item_id?: string; before_time?: number; after_time?: number; }; } /** * 数据转发配置对象 * @see [转发配置协议](https://broker-docs.platform.flexem.net/mqtt/protocol#%E8%BD%AC%E5%8F%91%E9%85%8D%E7%BD%AE) */ export interface TransferItem { /** id 一般对应主键(Guid) */ id?: string; /** 是否启用该配置(当前固件默认仅支持一个有效配置) */ enable?: boolean; /** MQTT服务器配置 */ server_config?: { /** 配置名称 */ config_name?: string; /** 平台类型 */ platform?: string; /** MQTT服务器地址 */ server_url?: string; /** MQTT服务器端口 */ server_port?: number; /** MQTT服务路径(只针对websocket连接有效) */ path?: string; /** * MQTTClientId(模板里配置请使用环境变量,默认为$uuid) * @see [环境变量](https://broker-docs.platform.flexem.net/mqtt/protocol#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F) */ client_id?: string; /** Keepalive时间(单位:s) */ keepalive?: number; /** MQTT版本(3.1, 3.1.1, 5.0) */ mqtt_version?: string; /** MQTT连接类型(raw_tcp:TCP连接, secure_tcp:TCP证书连接, raw_websocket:websocket连接,secure_websocket:websocket证书连接) */ connection_type?: string; /** ca证书(文件内容) */ ca_crt?: string; /** ca证书(文件名称) */ ca_crt_file?: string; /** 客户端证书(文件内容) */ client_crt?: string; /** 客户端证书(文件名称) */ client_crt_file?: string; /** 客户端证书密钥(文件内容) */ client_key?: string; /** 客户端证书密钥(文件名称) */ client_key_file?: string; /** 存储位置(local:本地存储, sd:SD卡存储, usb:USB存储) */ store?: string; /** 是否开启验证 */ with_authen?: boolean; /** * 用户名,环境变量($uid)指代设备硬件ID * @see [环境变量](https://broker-docs.platform.flexem.net/mqtt/protocol#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F) */ username?: string; /** * 密码,环境变量($password)指代设备硬件密码 * @see [环境变量](https://broker-docs.platform.flexem.net/mqtt/protocol#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F) */ password?: string; /** 推送方式(interval:定时推送, change:变化推送) */ pub_mode?: string; /** 推送间隔(单位:ms) */ pub_interval?: number; /** 是否启用离线缓存 */ offline_caching?: boolean; /** 缓存数据上报时间(单位:ms) */ cache_time?: number; /** 缓存数据采集间隔(单位:s) */ cache_get_time?: number; /** 报文压缩 */ compress_info?: { /** 是否启用报文压缩 */ compress?: number; /** 压缩算法类型 */ type?: string; }; }; /** 时间格式配置 */ timestamp_format?: { /** 时间格式 */ time_format?: string; /** 时区(utc、asia/shanghai) */ time_zone?: string; }; /** 组合方式配置 */ items_config?: { /** 组合方式Id */ id?: string; /** 格式 */ format?: string; }[]; /** 转发功能列表 */ function_config?: TransferFunctionItem[]; /** MQTT驱动文件 */ drive?: { /** * @deprecated 该属性已弃用(请使用checkUrl) * MQTT驱动so文件Url */ soFileUrl?: string; /** * @deprecated 该属性已弃用(请使用checkUrl) * MQTTso文件MD5 */ soFileMd5?: string; /** 驱动检查接口地址 */ checkUrl?: string; }; } /** 变量监视对象 */ export interface MacroWatchItem { /** 变量名称 */ name?: string; /** 偏移量 */ offset?: number; /** 值 */ value?: any; } /** 代码选中区域对象 */ export interface MacroCodeSelection { /** 起始位置 */ start: { row: number; column: number; }; /** 结束位置 */ end: { row: number; column: number; }; } /** 宏脚本执行计划 */ export interface MacroScheduleItem { /** * 执行模式 * 0:启动执行 1:周期执行 2:条件执行 */ mode?: number; /** * 执行周期 * 周期执行模式下取该值 */ cycle?: number; /** * 执行条件 * 条件执行模式下取该值 */ condition?: { /** 关联变量Id */ variableId?: string; /** * 条件1 * 0:不等于, 1:等于, 2:大于 3:大于等于 4:小于 5:小于等于 */ condition1?: number; /** 条件1对应的值 */ operate1?: number; /** * 关系运算符 * 0:None, 1:And 2:Or */ condMethod?: number; /** * 条件2 * 0:不等于, 1:等于, 2:大于 3:大于等于 4:小于 5:小于等于 */ condition2?: number; /** * 条件2对应的值 */ operate2?: number; }; } /** * 宏脚本 */ export interface MacroItem { /** id 一般对应主键(Guid) */ id?: string; /** 名称 */ name?: string; /** 脚本内容 */ script?: string; /** 描述信息(下位机忽略) */ description?: string; /** 关联变量Ids */ variableIds?: string[]; /** 执行计划 */ schedules?: MacroScheduleItem[]; } /** * 模板对象 * 模板支持导入和导出,因此所有关联数据均需要放置在模板上进行隔离,防止导入到其它设备上时因缺少依赖数据而失败 */ export interface TemplateItem { /** id 主键(Guid) */ id?: string; /** 模板名称 */ name?: string; /** 是否应用 */ applied?: boolean; /** 备注 */ remark?: string; /** PLC配置列表 */ plcs?: PlcItem[]; /** 变量配置列表 */ variables?: VariableItem[]; /** 报警配置列表 */ alarms?: AlarmItem[]; /** 宏脚本列表 */ macros?: MacroItem[]; /** 转发配置列表 */ transfers?: TransferItem[]; /** 组合方式列表 */ combinations?: MqttCombination[]; /** 时间戳格式列表 */ timestamps?: MqttTimestamp[]; } export interface TemplatePlcEditProps { /** * @deprecated 该属性已弃用 * @see [驱动配置](https://broker-docs.platform.flexem.net/components/drive) */ dirves?: DriveItem[]; formData?: { item: PlcItem; portNoItems: SelectItem[]; plcTypeItems: SelectItem[]; }; formResult?: boolean; references?: TemplateReferenceItem[]; /** * 当表单验证时触发 * schema: (result: boolean, item?: PlcItem) => boolean */ onFormValidate?: (result: boolean, item?: PlcItem) => boolean; /** * 当表单提交时触发 * schema: (item: PlcItem) => void */ onFormSubmit?: (item: PlcItem) => void; onRefRelease?: (item: TemplateReferenceItem) => void; } export interface TemplatePlcTableProps { data?: PlcItem[]; columns?: Column[]; pagination?: PaginationProps; showDeleteModal?: boolean; selectable?: boolean; selectionType?: 'checkbox' | 'radio'; /** * schema: (item: PlcItem) => void */ onDelete?: (item: PlcItem) => void; /** * schema: (item: PlcItem) => void */ onEdit?: (item: PlcItem) => void; onSelect?: (items: PlcItem[]) => void; } export interface TemplatePlcToolbarProps { selectable?: boolean; /** * schema: (args: { alias?: string, plcName?: string, type?: string }) => void */ onSearch?: (args: { alias?: string; plcName?: string; type?: string; }) => void; /** * schema: () => void */ onCreate?: () => void; onBatchDelete?: () => void; } export interface TemplatePlcProps extends Pick, Pick, Omit { onDelete?: (items: PlcItem[]) => Promise; onRefCheck?: (items: PlcItem[]) => TemplateReferenceItem[]; onRefRelease?: (items: PlcItem[], ref: TemplateReferenceItem) => TemplateReferenceItem[]; } export interface TemplateVariableEditProps { item?: VariableItem; plcs?: PlcItem[]; formResult?: boolean; batch?: boolean; references?: TemplateReferenceItem[]; /** * schema: (result: boolean, item?: VariableItem) => boolean */ onFormValidate?: (result: boolean, item?: VariableItem) => boolean; /** * schema: (item: VariableItem) => void */ onFormSubmit?: (item: VariableItem) => void; onRefRelease?: (item: TemplateReferenceItem) => void; } export interface TemplateVariableEditModalProps extends Pick { visible?: boolean; editItem?: VariableItem; batch?: boolean; plcs?: PlcItem[]; references?: TemplateReferenceItem[]; onVisibleChange?: (visible: boolean) => void; onFormValidate?: (result: boolean, item?: VariableItem) => boolean; onFormSubmit?: (item: VariableItem) => void; } export interface TemplateVariableTableProps extends Pick { size?: 'small' | 'middle' | 'large' | undefined; selectable?: boolean; selectionType?: 'checkbox' | 'radio'; data?: VariableItem[]; columns?: Column[]; pagination?: PaginationProps; showDeleteModal?: boolean; rowSelection?: any; /** * schema: (item: VariableItem) => void */ onEdit?: (item: VariableItem) => void; /** * schema: (item: VariableItem) => void */ onDelete?: (item: VariableItem) => void; /** * schema: (items: VariableItem[]) => void */ onSelect?: (items: VariableItem[]) => void; } export interface TemplateVariableToolbarProps { selectable?: boolean; /** * schema: (args: { name?: string, description?: string }) => void */ onSearch?: (args: { name?: string; description?: string; }) => void; /** * schema: () => void */ onCreate?: (batch: boolean) => void; onBatchDelete?: () => void; } export interface TemplateReferenceItem { /** 引用对象类型(0:设备配置、1:变脸配置、2:报警配置、3:边缘计算、4:转发配置, 5:边缘计算执行条件) */ objectType?: number; /** 引用对象id列表 */ objectIds?: string[]; } export interface TemplateReferenceProps { data?: TemplateReferenceItem[]; visible?: boolean; onVisibleChange?: (visible: boolean) => void; onRefRelease?: (item: TemplateReferenceItem) => void; } export interface TemplateVariableProps extends Pick, Pick, Omit { onRefCheck?: (items: VariableItem[]) => TemplateReferenceItem[]; onRefRelease?: (vars: VariableItem[], ref: TemplateReferenceItem) => TemplateReferenceItem[]; onDelete?: (items: VariableItem[]) => Promise; } export interface TemplateTransferProtocolProps { data?: TransferItem[]; mqttConfig?: { host?: string; port?: number; path?: string; }; timestamps?: MqttTimestamp[]; /** * schema: (level: number, item?: TransferItem) => void */ onSelect?: (level: number, item?: TransferItem) => void; /** * schema: (result: boolean, item: TransferItem) => boolean */ onFormValidate?: (result: boolean, item: TransferItem) => boolean; /** * schema: (item: TransferItem) => void */ onFormSubmit?: (item: TransferItem) => void; /** * schema: (item: TransferItem) => void */ onDelete?: (item: TransferItem) => void; /** * schema: (item: TransferItem) => void */ onChange?: (item: TransferItem) => void; } export interface TemplateTransferConnectionProps extends Pick { data?: TransferFunctionItem[]; variables?: VariableItem[]; alarms?: AlarmItem[]; enableCache?: boolean; onFormValidate?: (result: boolean, item: TransferFunctionItem) => boolean; /** * schema: (item: TransferFunctionItem, combinations: MqttCombination[]) => void */ onFormSubmit?: (item: TransferFunctionItem, combinations: MqttCombination[]) => void; /** * schema: (item: TransferFunctionItem) => void */ onDelete?: (item: TransferFunctionItem) => void; /** * schema: (item: TransferFunctionItem) => void */ onEdit?: (item: TransferFunctionItem) => void; /** * schema: (args: { name?: string, function?: string }) => void */ onSearch?: (args: { name?: string; function?: string; }) => void; } export interface TemplateTransferConfigProps { combinations?: MqttCombination[]; timestamps?: MqttTimestamp[]; /** * schema: (item: MqttCombination) => void */ onCombinationCreate?: (item: MqttCombination) => void; /** * schema: (item: MqttCombination) => void */ onCombinationDelete?: (item: MqttCombination) => void; /** * schema: (item: MqttTimestamp) => void */ onTimestampCreate?: (item: MqttTimestamp) => void; /** * schema: (item: MqttTimestamp) => void */ onTimestampDelete?: (item: MqttTimestamp) => void; } export interface TemplateTransferProps extends TemplateTransferConfigProps, Pick, Pick { } export interface TemplateSearchItem { name?: string; remark?: string; } export interface TemplateToolbarProps { showName?: boolean; showRemark?: boolean; showClean?: boolean; showSearch?: boolean; showImport?: boolean; showCreate?: boolean; showBatch?: boolean; searchItem?: TemplateSearchItem; selectable?: boolean; /** * schema: () => void */ onImport?: () => void; /** * schema: () => void */ onCreate?: () => void; /** * schema: (args: TemplateSearchItem) => void */ onSearch?: (args: TemplateSearchItem) => void; onMenuItemClick?: (key: string) => void; } export interface TemplateImportProps { formResult?: boolean; /** * schema: (item: TemplateItem) => void */ onImport?: (items: TemplateItem[]) => void; } export interface TemplateImportModalProps { visible?: boolean; onVisibleChange?: (visible: boolean) => void; onImport?: (items: TemplateItem[]) => void; } export interface TemplateEditProps { item?: TemplateItem; formResult?: boolean; /** * schema: (result: boolean) => void */ onFormValidate?: (result: boolean) => void; /** * schema: (item: TemplateItem) => void */ onFormSubmit?: (item: TemplateItem) => void; } export interface TemplateEditModalProps { visible?: boolean; editItem?: TemplateItem; onVisibleChange?: (visible: boolean) => void; onSave?: (item: TemplateItem) => void; } export interface TemplateTableProps { columns?: Column[]; data?: TemplateItem[]; pagination?: PaginationProps; selectable?: boolean; selectionType?: 'checkbox' | 'radio'; size?: 'small' | 'middle' | 'large'; /** * schema: (items: TemplateItem[]) => void */ onSelect?: (items: TemplateItem[]) => void; /** * schema: (item: TemplateItem) => void */ onConfig?: (item: TemplateItem) => void; /** * schema: (item: TemplateItem) => void */ onApply?: (item: TemplateItem) => void; /** * schema: (item: TemplateItem) => void */ onDelete?: (item: TemplateItem) => void; /** * schema: (item: TemplateItem) => void */ onCopy?: (item: TemplateItem) => void; /** * schema: (item: TemplateItem) => void */ onEdit?: (item: TemplateItem) => void; /** * schema: (item: TemplateItem) => void */ onViewRecord?: (item: TemplateItem) => void; /** * schema: (id: string) => Promise */ onItemLoad?: (id: string) => Promise; } /** 模板编辑选项卡属性 */ export interface TemplateTabProps extends TemplateTransferConfigProps { /** PLC列表数据源 */ plcs?: PlcItem[]; /** PLC列表分页参数 */ plcPagination?: PaginationProps; /** 变量列表数据源 */ variables?: VariableItem[]; /** 变量列表分页参数 */ variablePagination?: PaginationProps; /** 报警列表数据源 */ alarms?: AlarmItem[]; /** 报警列表分页参数 */ alarmPagination?: PaginationProps; /** 宏脚本列表数据源 */ macros?: MacroItem[]; /** 宏脚本列表分页参数 */ macroPagination?: PaginationProps; /** 宏脚本调试器属性 */ macroDebugger?: MacroDebuggerProps; /** 转发配置数据源 */ transfers?: TransferItem[]; /** * 点击PLC创建模态框的确定按钮时触发 * schema: (item: PlcItem) => void */ onPlcCreate?: (item: PlcItem) => void; /** * 点击PLC列表删除按钮时触发 * schema: (item: PlcItem) => void */ onPlcDelete?: (items: PlcItem[]) => Promise; /** * 点击PLC列表搜索按钮时触发 * schema: (args: { alias?: string, plcName?: string, type?: string }) => void */ onPlcSearch?: (args: { alias?: string; plcName?: string; type?: string; }) => void; onPlcRefCheck?: (items: PlcItem[]) => TemplateReferenceItem[]; onPlcRefRelease?: (items: PlcItem[], ref: TemplateReferenceItem) => TemplateReferenceItem[]; /** * 点击变量创建模态框的确定按钮时触发 * schema: (item: VariableItem) => void */ onVariableCreate?: (item: VariableItem) => void; /** * 点击变量列表删除按钮时触发 * schema: (item: VariableItem) => void */ onVariableDelete?: (items: VariableItem[]) => Promise; /** * 点击变量列表搜索按钮时触发 * schema: (args: { name?: string, description?: string }) => void */ onVariableSearch?: (args: { name?: string; description?: string; }) => void; onVariableRefCheck?: (items: VariableItem[]) => TemplateReferenceItem[]; onVariableRefRelease?: (items: VariableItem[], ref: TemplateReferenceItem) => TemplateReferenceItem[]; /** * 点击MQTT转发连接创建模态框的确定按钮时触发 * schema: (item: TransferItem) => void */ onTransferCreate?: (item: TransferItem) => void; /** * 右键点击MQTT连接删除按钮时触发 * schema: (item: TransferItem) => void */ onTransferDelete?: (item: TransferItem) => void; /** * MQTT配置内容变化时触发(包括添加修改和删除功能以及MQTT变量) * schema: (item: TransferItem) => void */ onTransferChange?: (item: TransferItem) => void; /** * 点击报警创建模态框确定按钮时触发 * schema: (item: AlarmItem) => void */ onAlarmCreate?: (item: AlarmItem) => void; /** * 点击报警列表删除按钮时触发 * schema: (item: AlarmItem) => void */ onAlarmDelete?: (items: AlarmItem[]) => Promise; /** * 点击报警列表搜索按钮时触发 * schema: (args: { name?: string }) => void */ onAlarmSearch?: (args: { name?: string; }) => void; onAlarmRefCheck?: (items: AlarmItem[]) => TemplateReferenceItem[]; onAlarmRefRelease?: (items: AlarmItem[], ref: TemplateReferenceItem) => TemplateReferenceItem[]; /** * 点击宏脚本创建模态框的确定按钮时触发 * schema: (item: MacroItem) => void */ onMacroCreate?: (item: MacroItem) => void; /** * 点击宏脚本列表删除按钮时触发 * schema: (item: MacroItem) => void */ onMacroDelete?: (items: MacroItem[]) => Promise; /** * 点击宏脚本列表搜索按钮触发 * schema: (args: { name?: string }) => void */ onMacroSearch?: (args: { name?: string; }) => void; } export interface TemplateProgressBarProps { visible?: boolean; percent?: number; display?: React.ReactNode | string; } export interface TemplateProps extends Pick, Pick, Pick { data?: TemplateItem[]; boxes?: BoxItem[]; boxPagination?: PaginationProps; /** * schema: (item: TemplateItem) => void */ onTemplateCreate?: (item: TemplateItem) => void; /** * schema: (item: TemplateItem) => void */ onTemplateUpdate?: (item: TemplateItem) => void; /** * schema: (item: TemplateItem[]) => void */ onTemplateDelete?: (item: TemplateItem[]) => void; /** * schema: (item: TemplateItem) => void */ onTemplateImport?: (item: TemplateItem) => void; /** * schema: (template: TemplateItem, boxes: BoxItem[], modules: string[]) => void */ onTemplateApply?: (template: TemplateItem, boxes: BoxItem[], modules: string[]) => void; /** * schema: (args: { keyword?: string, remark?: string }) => void */ onBoxSearch?: (args: { keyword?: string; remark?: string; }) => void; } export interface TemplateAlarmToolbarProps { selectable?: boolean; /** * 点击搜索按钮时触发 * schema: (args: { name?: string }) => void */ onSearch?: (args: { name?: string; }) => void; /** * 点检创建按钮时触发 * schema: () => void */ onCreate?: () => void; onBatchDelete?: () => void; } export interface TemplateAlarmTableProps { data?: AlarmItem[]; columns?: Column[]; plcs?: PlcItem[]; variables?: VariableItem[]; pagination?: PaginationProps; selectable?: boolean; selectionType?: 'checkbox' | 'radio'; /** * schema: (item: AlarmItem) => void */ onEdit?: (item: AlarmItem) => void; /** * schema: (item: AlarmItem) => void */ onDelete?: (item: AlarmItem) => void; onSelect?: (items: AlarmItem[]) => void; } export interface TemplateAlarmEditProps { item?: AlarmItem; plcs?: PlcItem[]; variables?: VariableItem[]; formResult?: boolean; references?: TemplateReferenceItem[]; /** * schema: (result: boolean, item?: AlarmItem) => boolean */ onFormValidate?: (result: boolean, item?: AlarmItem) => boolean; /** * 表单提交时触发 * schema: (item: AlarmItem) => void */ onFormSubmit?: (item: AlarmItem) => void; onRefRelease?: (item: TemplateReferenceItem) => void; } export interface TemplateAlarmProps extends Pick, Pick, Omit { onDelete?: (items: AlarmItem[]) => Promise; onRefCheck?: (items: AlarmItem[]) => TemplateReferenceItem[]; onRefRelease?: (items: AlarmItem[], ref: TemplateReferenceItem) => TemplateReferenceItem[]; } export interface MacroDebuggerProps { watchItems?: MacroWatchItem[]; output?: string; selection?: MacroCodeSelection; status?: number; /** * schema: (code: string, variables: VariableItem[], plcs: PlcItem[]) => void */ onRun?: (code: string, variables: VariableItem[], plcs: PlcItem[]) => void; /** * schema: (code: string, variables: VariableItem[], plcs: PlcItem[]) => void */ onStep?: (code: string, variables: VariableItem[], plcs: PlcItem[]) => void; /** * schema: () => void */ onStop?: () => void; /** * schema: () => void */ onClear?: () => void; /** * schema: (breakPoints: Map) => void */ onBreakPointsChange?: (breakPoints: Map) => void; } export interface TemplateMacroEditorProps extends Pick { watchColumns?: Column[]; defaultValue?: string; /** * schema: (value: string) => void */ onChange?: (value: string) => void; } export interface TemplateMacroTableProps { data?: MacroItem[]; columns?: Column[]; pagination?: PaginationProps; selectable?: boolean; selectionType?: 'checkbox' | 'radio'; /** * schema: (item: MacroItem) => void */ onEdit?: (item: MacroItem) => void; /** * schema: (item: MacroItem) => void */ onDelete?: (item: MacroItem) => void; onSelect?: (items: MacroItem[]) => void; } export interface TemplateMacroToolbarProps { selectable?: boolean; /** * schema: () => void */ onCreate?: () => void; /** * schema: (args: { name?: string }) => void */ onSearch?: (args: { name?: string; }) => void; onBatchDelete?: () => void; } export interface TemplateMacroVariableProps { item?: MacroItem; plcs?: PlcItem[]; variables?: VariableItem[]; /** * schema: (item: MacroItem) => void */ onItemChange?: (item: MacroItem) => void; } export interface TemplateMacroEditProps extends MacroDebuggerProps { item?: MacroItem; plcs?: PlcItem[]; variables?: VariableItem[]; saving?: boolean; formResult?: boolean; /** * schema: (item: MacroItem, close?: boolean) => void */ onSave?: (item: MacroItem, close?: boolean) => void; /** * schema: (saveing: boolean) => void */ onStateChange?: (saveing: boolean) => void; /** * schema: (item: MacroItem) => void */ onItemChange?: (item: MacroItem) => void; } export interface TemplateMacroProps extends Pick, Omit, Omit { onDelete?: (items: MacroItem[]) => Promise; } export interface TemplateApplyProps { data: BoxItem[]; pagination?: PaginationProps; /** * schema: (items: BoxItem[]) => void */ onSelect?: (items: BoxItem[]) => void; /** * schema: (args: { keyword?: string; remark?: string }) => void */ onSearch?: (args: { keyword?: string; remark?: string; }) => void; } export interface TemplateTransferTableProps { data?: TransferItem[]; columns?: Column[]; pagination?: PaginationProps; onEdit?: (item: TransferItem) => void; onDelete?: (item: TransferItem) => void; }