当前位置: 首页 > news >正文

thingsboard 自定义动作JS编程

在 ThingsBoard 中实现 自定义动作(Custom Action)的 JavaScript 编程,主要通过“Custom action (with HTML template)”方式完成,适用于创建弹窗、编辑实体、控制设备等交互行为。

实现步骤(以添加设备或资产为例)

1、进入部件编辑模式 → 点击“+”添加动作。

2、选择动作来源(如:Widget header button 或 Action cell button)。

3、动作类型选择:Custom action (with HTML template)

4、配置四个标签页:
Resources:引入外部 JS/CSS(可选);
CSS:自定义样式;
HTML:弹窗或交互界面结构;
JavaScript:核心逻辑代码。

 5、JavaScript 示例:添加设备/资产弹窗逻辑(精简版)

    var targetStateId = '';// 防止 entityLabel 为 nullif (entityLabel) {                               //entityLabel 是否包含“用电保护器” if (entityLabel.includes('用电保护器')) {targetStateId = 'state_air';             // 用电保护器} else if (entityLabel.includes('数字量')) {targetStateId = 'state_output';          // 数字量输入输出}else if (entityLabel.includes('DTU')) {targetStateId = 'state_dtu';          // DTU}}/* 2. 可选:额外参数,随状态一起带过去 */const params = {entityId: entityId.id,entityName: entityName,entityLabel: entityLabel};/* 3. 获取仪表盘所有已定义的状态列表 *///const states = widgetContext.dashboardCtrl.dashboard.configuration.states || {};//alert(JSON.stringify(states, null, 2));if (targetStateId) {widgetContext.stateController.openState(targetStateId, params, true);} else {widgetContext.showErrorToast('状态 "' + targetStateId + '" 未定义。');}

“自定义动作(Custom Action)” 的 JS 编程不是“炫技”,而是解决实际业务痛点的关键手段。它的好处和解决的问题可以总结为:


✅ 1. 解决“标准动作”无法满足的业务需求

  • 痛点:ThingsBoard 自带的动作(如“打开仪表盘”、“打开详情”)只能做固定的事情,无法处理复杂业务逻辑。

  • 例子

    • 点击按钮后需要弹窗输入设备参数(如 SIM 卡号、固件版本)再保存;

    • 点击“报警确认”按钮时,需要调用外部 API(钉钉/微信)通知运维人员;

    • 点击“重启设备”按钮时,需要先弹窗确认,再下发 RPC 命令并记录日志。


✅ 2. 解决“多步骤交互”问题

  • 痛点:标准动作是“一步完成”,而实际业务需要“多步交互”(如表单验证、异步加载数据)。

  • 例子

    • 添加设备时,先选择设备类型 → 动态加载对应的属性模板 → 再填写参数 → 最后保存;

    • 点击“批量下发配置”时,先选择配置模板 → 再选择目标设备 → 最后确认执行。


✅ 3. 解决“跨系统集成”问题

  • 痛点:ThingsBoard 无法直接调用外部系统(如 ERP、CRM、工单系统)。

  • 例子

    • 点击“创建工单”按钮时,调用 Jira/ServiceNow API 创建问题单;

    • 点击“同步库存”按钮时,调用 ERP 接口获取最新库存数据并更新 ThingsBoard 属性。


✅ 4. 解决“用户体验差”问题

  • 痛点:标准动作的弹窗样式固定,无法根据品牌或业务需求定制。

  • 例子

    • 自定义弹窗的标题、按钮颜色、布局,使其符合公司 UI 规范;

    • 在弹窗中嵌入图表(如历史数据趋势)辅助用户决策。


✅ 5. 解决“重复劳动”问题

  • 痛点:多个仪表盘需要相同的“添加/编辑”功能,但标准动作无法复用。

  • 例子

    • 封装一个“通用设备添加弹窗”,所有仪表盘只需引用,无需重复造轮子;

    • 将复杂逻辑(如设备注册流程)封装成可复用的自定义动作模板。


✅ 6. 解决“权限控制”问题

  • 痛点:标准动作无法根据用户角色动态控制按钮显隐。

  • 例子

    • 只有“管理员”角色才能看到“删除设备”按钮;

    • 只有“维修工程师”角色才能看到“远程调试”按钮。

http://www.lryc.cn/news/603153.html

相关文章:

  • uniapp 如果进入页面输入框自动聚焦,此时快速返回页面或者跳转到下一个页面,输入法顶上来的页面出现半屏的黑屏问题。
  • 在 Ubuntu 下测试单目与双目相机
  • 影翎Antigravity将发布全球首款全景无人机,8月开启公测招募
  • python案例:基于python 神经网络cnn和LDA主题分析的旅游景点满意度分析
  • JAVA第五学:方法的使用
  • 实时画面回传的开发复盘
  • 【LeetCode 热题 100】34. 在排序数组中查找元素的第一个和最后一个位置——二分查找
  • Linux之网络部分-应用层协议 HTTP
  • Objective-c 初阶——异常处理(try-catch)
  • 第2章算法分析:大O符号的定义和性质
  • 第17章——多元函数积分学的预备知识
  • golang--通道和锁
  • springboot集成deepseek
  • c++: 尾置返回类型(Trailing Return Type)
  • 【MySQL基础篇】:MySQL常用数据类型的选择逻辑与正确使用
  • 前段面试题新版
  • 【分布式版本控制系统】Git的使用
  • 完整复现cacti的RCE
  • 【Python】自动化GIT提交
  • Linux:线程同步与线程互斥
  • SpringBoot原理揭秘--自动装配
  • LeetCode 2044.统计按位或能得到最大值的子集数目:二进制枚举/DFS回溯(剪枝)
  • Leaflet 综合案例 - 路径规划
  • 3. 卷积网络代码参数解读分析
  • 前端高级综合搜索组件 SearchBox 使用详解!
  • 4.DRF 认证--Authentication4.DRF 认证--Authentication
  • django ManyToManyField 如何添加数据
  • python-内存管理
  • Kubernetes --存储入门
  • 基于FPGA和DDS原理的任意波形发生器(含仿真)