当前位置: 首页 > 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.dtcms.com/a/305429.html

相关文章:

  • 1768. 交替合并字符串
  • 2025年06月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【C#学习Day13笔记】静态成员、接口、运算符重载和索引器
  • Redis 键值对操作详解:Python 实现指南
  • 【Dify】-进阶14- 用 Dify 搭建法律文档解析助手
  • 工作中使用git可能遇到的场景
  • docker docker、swarm 全流程执行
  • 抵御酒店管理系统收银终端篡改攻击 API 加密的好处及实现——仙盟创梦IDE
  • LLM中BLEU 指标、ROUGE 指标、PPL指标
  • MySQL图解索引篇
  • 7.29 Java SE(Java高级 P191-P199)
  • Linux 线程概念与控制
  • 继续打卡day6
  • SpringJDBC源码初探-DataSource类
  • 理解“无界队列”与“有界队列”及其适用场景
  • BigemapPro吸附功能 | 绘图共点共边,标绘从此无缝衔接!
  • 【Python】数据可视化之聚类图
  • 进阶向:Manus AI与多语言手写识别
  • 大模型量化004
  • 机器学习-贝叶斯函数(理解版)
  • Xmind 2025下载与保姆级安装教程
  • 数据库-索引
  • Python Day17 常用模块 和 加解密操作 及例题分析
  • window weblogic 解锁
  • Java 9 新特性解析
  • 《零基础入门AI:传统机器学习入门(从理论到Scikit-Learn实践)》
  • 36.Manacher 算法
  • 【n8n】如何跟着AI学习n8n【01】:定制AI老师
  • 【Linux】pthread学习笔记
  • scrapy框架新浪新闻