1. 设备需求
联盟智能安全系统
  • 公共接口
    • 安全检查
      • 检查任务列表
      • 创建检查任务
      • 检查任务详情
    • 隐患整改
      • 隐患台账
      • 隐患列表
      • 隐患详情
    • 知识库
      • 文件列表
      • 分类列表
    • 安全培训
      • 培训任务列表
      • 培训详情
      • 培训详情v2
    • 安全培训-新
      • 年度计划
        • 年度子计划-培训列表
      • 培训任务列表
    • 题库管理
      • 题库列表,
      • 考试题目列表
    • 数据看板
      • 企业数据看板
      • 联盟数据看板
    • 组织管理
      • 下拉公司列表
      • 下拉部门列表
      • 下拉部门列表-带下级分组
    • 设备需求
      • 列出巡检任务的项目
      • 列出保养任务的项目
      • 列出维修任务的项目
    • ping
      GET
    • 初始化配置
      GET
    • 字典列表
      GET
    • 下拉专家组长列表
      GET
    • 下拉用户列表
      GET
    • wordToPdf
      POST
  • 后台管理
    • login
      • 登录-后台
      • 退出登录
    • 权限管理
      • 人员管理
        • 黑名单管理
          • 人员拉黑
          • 黑名单列表
        • 人员导入
          • 下载人员导入模板文件
          • 导入人员信息
          • 导入记录列表
        • 管理员列表
        • 添加管理员
        • 编辑管理员
        • 删除管理员
        • 管理员详情
        • 当前管理员信息
        • 获取培训对应公司的员工列表
        • 解绑微信
        • 人员调岗
        • 人员离岗
        • 人员复岗
        • 人员离职
      • 角色
        • 数据权限
          • 角色数据权限-详情
          • 角色数据权限-保存
      • 菜单
        • 菜单列表
        • 添加菜单
        • 编辑菜单
    • 组织管理
      • 公司/部门管理
        • 列表(所有)
        • 添加
        • 编辑
        • 删除
        • 详情
        • 所有
        • 上级部门
        • 部门列表(v2)
        • 部门列表导出(v2)
      • 岗位管理
        • 岗位管理
        • 添加岗位
      • 导入
        • 部门导入模板下载
        • 部门导入执行
        • 岗位导入模板下载
        • 岗位导入执行
      • 获取组织树-通用-3级结构
      • 获取组织树-通用-4级层级
    • 安全检查
      • 修改任务
      • 删除任务
    • 隐患管理
    • 安全培训管理
      • 新增培训任务
      • 新增培训任务v2
      • 删除培训
      • 签到/签退列表
      • office转图片
    • 安全培训管理-新
      • 通用培训-专项/四新/常规等
        • 培训列表
        • 新增培训任务
        • 培训详情
        • 删除培训
        • 获取培训人员
        • 修改培训任务
      • 三级安全教育
        • 三级安全教育-新增/修改
        • 三级安全教育-详情
        • 三级安全教育-模板列表
        • 获取组织树-带模板统计
        • 获取组织树-岗位是否设置模板
        • 三级安全教育-岗位绑定模板
        • 三级安全教育-获取对应岗位绑定的模板
      • 年度计划
        • 年度计划-新增/修改
        • 年度计划-详情
        • 年度计划-列表
        • 年度计划-变更记录
        • 年度子计划-列表
        • 年度子计划-新增培训
        • 年度计划-删除
        • 年度子计划-删除培训
      • 师带徒培训
        • 实操考核设置
          • 实新增/修改模板及题目项
          • 考核模板列表
          • 考核模板详情
          • 获取组织树-岗位是否已设置模板
          • 禁用启用模板
          • 为组织树岗位绑定模板
        • 新增师带徒协议
        • 获取组织树(附岗位是否已设置协议)
        • 新增协议与岗位绑定
        • 获取师带徒协议列表
      • 转复岗
        • 保存复岗培训规则
        • 保存转岗培训规则
        • 复岗记录列表
        • 调岗记录列表
        • 转复岗培训详情(触发详情)
        • 转岗规则详情
        • 复岗规则详情
      • 访客培训
        • 保存来访协议
        • 保存来访培训
        • 来访培训列表
        • 来访培训详情
        • 获取来访协议
        • 删除来访培训
        • 来访人员列表-可用于培训详情
      • 调研相关
        • 调研模板
          • 新增调研模板
          • 调研模板详情
          • 编辑调研模板
          • 调研模板列表
          • 启用 / 停用调研模板
          • 删除调研模板
        • 问卷
          • 新增调研问卷
          • 编辑调研问卷
          • 后台-调研问卷详情(含模板与统计)
          • 调研问卷列表(管理端)
          • 删除调研问卷
      • 外协人员
        • 新增/编辑外协资料
        • 添加外协培训
        • 外协资料详情
        • 外协资料列表
      • 台账
        • 接口-培训详情.md
        • 总台账
          • 总台账
        • 讲师台账
          • 讲师台账-汇总列表
          • 讲师台账-讲师的详情-培训列表
        • 三项人员
          • 三项人员台账统计
        • 一人一档
          • 一人一档详情
          • 一人一档列表
          • 一人一档详情-表格统计
        • 一期一档
          • 一期一档列表
      • 触发师带徒协议(测试使用)
      • 触发三级教育培训-岗前培训
    • 考试管理
      • v2
        • v2 新增考试
        • v2 修改考试发布状态
        • v2 考试周期任务开启/关闭
        • 查看考试试卷
        • 批量重算考试成绩(按考试任务ID)
      • 新增考试
      • 考试列表
      • 删除考试任务
      • 考试详情
      • 考试成绩排行
      • 考试签到/签退列表
    • 题库管理
      • 题库分类
        • 题库列表, 即题目分类 v2
        • 新增题库(即新增分类)
        • 新增题库(即新增分类) v2
        • 编辑题库
        • 编辑题库v2
        • 删除题库v2
        • 分享题库v2
      • AI出题
        • AI题目生成
        • 获取模型
        • AI考点总结
        • AI考点总结-新
        • AI题目-异步生成
        • AI出题-列表
        • AI出题-保存
        • 删除出题记录
      • 导入题目到题库
      • 新建题目
      • 编辑题目
      • 删除题目
      • 下载导入模板-题目
    • 资源管理
      • 文件分类
        • v2
          • v2 添加分类
          • v2 分类列表
          • 设置文件分类共享
          • 获取文件分类共享信息
          • 切换文件分类共享状态
        • 添加分类
        • 编辑分类
        • 分类列表
        • 删除分类
      • 文件操作
        • 上传知识库文件
        • 文件列表
        • wps转图片
    • 审批流
      • 添加审批流模板
      • 修改审批流模板
      • 获取审批流模板详情
      • 删除审批流模板
      • 启用/禁用审批流模板
      • 审批流模板列表
      • 获取审批记录
    • 系统配置
      • 全局配置
        • 获取v2全局配置-公司
        • 保存v2全局配置-公司
        • 设置全局配置
        • 获取全局配置
      • 设备管理
        • 获取设备配置
        • 保存设备配置
        • 删除设备配置
      • 获取考试配置
      • 修改考试配置
    • 人脸识别
      • 人脸识别信息列表
      • 人脸识别记录列表
      • 解绑人脸识别信息
    • 三项人员管理
      • 三项人员lists
      • 三项人员-新增
      • 三项人员-复审
      • 三项人员-换证
      • 三项人员-删除
      • 人员信息模板文件上传
      • 下载人员信息导入模板
    • 选人组件
      • 标签
        • 设置标签
        • 获取标签lists
        • 删除标签
        • 修改标签
      • 选人组件-公司部门列表
    • 设备需求
      • 设备管理
        • 添加设备
        • 设备列表
        • 设备详情
        • 设备列表-下拉专用
        • 编辑设备
        • 删除设备
        • 报废设备
        • 设备巡检列表
      • 设备配件管理
        • 删除设备配件
        • 添加设备配件
        • 编辑设备配件
        • 配件列表
        • 报废配件
        • 配件详情
      • 周期计划
        • 添加/修改计划
        • 删除计划
        • 巡检计划-详情
      • 设备台账
        • 点检情况
        • 保养记录
        • 维修任务列表
      • 设备安装地址树
        • 新增地址节点
        • 删除
        • 编辑地址节点
        • 地址详情
        • 地址列表
        • 地址树-下拉/筛选选择使用
      • 导入
        • 下载导入模板-设备信息
        • 导入-设备信息
        • 下载导入模板-设备计划
        • 导入-设备计划(巡检/保养)
      • subscribe
        POST
    • 字典
      • 删除字典数据-适用于字典类型的配置
  • 小程序
    • README.md
    • v2接口使用说明
    • 登录
      • 专家扫码登录
        • 小程序-登录(专家签到时用) v2
        • 小程序-登录(专家签到时用)
        • 小程序专家扫码-确认登录
        • 搜索用户
      • 小程序-账号登录
      • 小程序-绑定微信
      • 小程序-微信快捷登录
      • 企业共享账号登录
    • 个人中心
      • 离复岗
        • 离岗申请
        • 离岗申请-通过
        • 离岗申请-拒绝
        • 复岗申请
      • 来访
      • 重置密码
      • 修改用户名称
      • 发送短信
      • 微信小程序OSS凭证获取
      • 获取用户微信手机号
    • 检查任务
      • 专家-签到
      • 专家-添加隐患(草稿)
      • 删除隐患
      • 专家/组长-编辑隐患
      • 专家-签退(专家提交隐患到组长)
      • 组长-检查完成 (转到企业)
      • 企业负责人-完成整改(转到组长)
    • 隐患整改
      • 企业治理人-添加隐患治理内容(完成整改)
      • 组长-复核通过
      • 组长-复核不通过
      • 组长-作废
      • 竞赛,导出公司前三(除top15)
    • 考试管理
      • v2
        • v2 目录列表-题库练习
        • v2 目录列表-错题集
        • v2 错题列表
        • v2 开始模拟考
        • v2 考试完成签名确认
        • v2 阅卷打分-正常考试/竞赛
        • v2 获取考试结果
        • v2 重算考试分数
        • v2 开始考试
      • 错题集
        • 记录错题
        • 错题集(列表)
        • 移出错题集
      • 我的考试列表
      • 获取考试结果
      • 开始模拟考
      • 开始考试
      • 阅卷打分-正常考试/竞赛
      • 阅卷打分-模拟考
      • 用户是否在考试地点附近
    • 安全培训
      • v2
        • 开启培训考试 v2
        • 培训签到 v2
        • 培训签退 v2
        • 培训签到
      • 培训签退
      • 结束培训
      • 修改培训图片
    • 安全培训_新
      • 师带徒
        • 师带徒列表
        • 师带徒详情
        • 师带徒-修改(师傅id/签名信息)
        • 师带徒-师傅新增带徒记录
        • 师带徒-师傅开始考核徒弟
        • 师带徒-考核人提交考核项的分数
        • 师带徒-师傅点击完成本次考核
        • 师带徒-获取考核详情
      • 三级安全教育
        • 三级安全教育记录列表(师带徒等)
        • 三级安全教育-详情
        • 判断主持人是否已生成线下培训
        • 主持人生成线下培训
      • 培训通用接口
        • 培训列表-专项/四新等
        • 培训详情-新培训通用
        • 签到
        • 签退
        • 主持人-开启线下考试
        • 主持人-结束培训
        • 主持人-修改培训图片
        • 培训日志列表-新
      • 转复岗
        • 转复岗的培训详情
        • 我的转复岗培训列表
      • 来访培训
        • 添加来访记录
        • 更新来访记录
        • 获取来访记录
      • 问卷调研
        • 小程序-调研问卷详情(答题视图)
        • 提交调研答卷
      • 年度计划
        • 年度计划-列表(个人的)
        • 年度计划-详情
      • 外协人员培训
        • 小程序-外协人员登录参与培训
    • 人脸识别
      • 提交人脸信息
      • 添加人脸识别记录
    • 待办
      • 待办-审批流
        • 审批详情- 年度计划
        • 审批流-统一审核
        • 审批详情-离岗复岗
        • 审批详情-访客审批
        • 审批详情-后台新增的访客培训审批
        • 审批详情-后台新增的外协人员资料审批
      • 待办列表
      • v2 待办列表
    • 设备需求
      • 设备与巡检
        • 小程序-设备列表
        • 小程序-设备详情
        • 小程序-设备的巡检记录列表(任务列表)
        • 提交巡检结果
      • 维修与保养
        • 提交非设备问题备注
        • 生成维修任务(维修单)
        • 提交维修结果
        • 提交保养结果
        • 催办-设备任务
        • 维修任务的维修记录
      • 三大任务任务项目列表(通用)
      • 小程序-设备任务列表
      • 设备报修
    • test
  • 功能迭代对接
    • 数据权限与组织树接口对接文档
    • 260614-v2题库媒体支持
      • 题目支持媒体文件 - 前端对接文档
  • 数据模型
    • 返回成功
  1. 设备需求

subscribe

开发中
POST
/adminapi/v2.dingTalk/subscribe
最后修改时间:2025-11-07 02:29:39

请求参数

Authorization
在 header 添加参数
token
示例:
token: ********************
Body 参数application/json必填

示例
{"encrypt":"5Midw/LDo9KoPIguL26B6/FST2ICcmK+nUGeJIe+X38KrdbpEgNO16Y0f65+fBme0jJtdIfr8L286CH/eCW36C1ayBfEILhA8f7LHMOQoiqB06CW9ImwweBqvZWAcEIk"}

请求示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location 'https://safe.fetribe.cn/adminapi/v2.dingTalk/subscribe' \
--header 'token: <api-key>' \
--header 'Content-Type: application/json' \
--data '{"encrypt":"5Midw/LDo9KoPIguL26B6/FST2ICcmK+nUGeJIe+X38KrdbpEgNO16Y0f65+fBme0jJtdIfr8L286CH/eCW36C1ayBfEILhA8f7LHMOQoiqB06CW9ImwweBqvZWAcEIk"}'

返回响应

🟢200成功
application/json
Bodyapplication/json

示例
<script> Sfdump = window.Sfdump || (function (doc) { var refStyle = doc.createElement('style'), rxEsc = /([.*+?^${}()|\[\
    ]/\\
  ])/g, idRx = /\bsf-dump-\d+-ref[
    012
  ]\w+\b/, keyHint = 0 <= navigator.platform.toUpperCase().indexOf('MAC') ? 'Cmd' : 'Ctrl', addEventListener = function (e, n, cb) { e.addEventListener(n, cb, false);
  }; refStyle.innerHTML = 'pre.sf-dump .sf-dump-compact, .sf-dump-str-collapse .sf-dump-str-collapse, .sf-dump-str-expand .sf-dump-str-expand { display: none;
  }'; doc.head.appendChild(refStyle); refStyle = doc.createElement('style'); doc.head.appendChild(refStyle); if (!doc.addEventListener) { addEventListener = function (element, eventName, callback) { element.attachEvent('on' + eventName, function (e) { e.preventDefault = function () {e.returnValue = false;
        }; e.target = e.srcElement; callback(e);
      });
    };
  } function toggle(a, recursive) { var s = a.nextSibling || {}, oldClass = s.className, arrow, newClass; if (/\bsf-dump-compact\b/.test(oldClass)) { arrow = '&#9660;'; newClass = 'sf-dump-expanded';
    } else if (/\bsf-dump-expanded\b/.test(oldClass)) { arrow = '&#9654;'; newClass = 'sf-dump-compact';
    } else { return false;
    } if (doc.createEvent && s.dispatchEvent) { var event = doc.createEvent('Event'); event.initEvent('sf-dump-expanded' === newClass ? 'sfbeforedumpexpand' : 'sfbeforedumpcollapse',
      true, false); s.dispatchEvent(event);
    } a.lastChild.innerHTML = arrow; s.className = s.className.replace(/\bsf-dump-(compact|expanded)\b/, newClass); if (recursive) { try { a = s.querySelectorAll('.'+oldClass); for (s = 0; s < a.length; ++s) { if (-1 == a[s
          ].className.indexOf(newClass)) { a[s
            ].className = newClass; a[s
            ].previousSibling.lastChild.innerHTML = arrow;
          }
        }
      } catch (e) {}
    } return true;
  }; function collapse(a, recursive) { var s = a.nextSibling || {}, oldClass = s.className; if (/\bsf-dump-expanded\b/.test(oldClass)) { toggle(a, recursive); return true;
    } return false;
  }; function expand(a, recursive) { var s = a.nextSibling || {}, oldClass = s.className; if (/\bsf-dump-compact\b/.test(oldClass)) { toggle(a, recursive); return true;
    } return false;
  }; function collapseAll(root) { var a = root.querySelector('a.sf-dump-toggle'); if (a) { collapse(a, true); expand(a); return true;
    } return false;
  } function reveal(node) { var previous, parents = []; while ((node = node.parentNode || {}) && (previous = node.previousSibling) && 'A' === previous.tagName) { parents.push(previous);
    } if (0 !== parents.length) { parents.forEach(function (parent) { expand(parent);
      }); return true;
    } return false;
  } function highlight(root, activeNode, nodes) { resetHighlightedNodes(root); Array.from(nodes||[]).forEach(function (node) { if (!/\bsf-dump-highlight\b/.test(node.className)) { node.className = node.className + ' sf-dump-highlight';
      }
    }); if (!/\bsf-dump-highlight-active\b/.test(activeNode.className)) { activeNode.className = activeNode.className + ' sf-dump-highlight-active';
    }
  } function resetHighlightedNodes(root) { Array.from(root.querySelectorAll('.sf-dump-str, .sf-dump-key, .sf-dump-public, .sf-dump-protected, .sf-dump-private')).forEach(function (strNode) { strNode.className = strNode.className.replace(/\bsf-dump-highlight\b/, ''); strNode.className = strNode.className.replace(/\bsf-dump-highlight-active\b/, '');
    });
  } return function (root, x) { root = doc.getElementById(root); var indentRx = new RegExp('^('+(root.getAttribute('data-indent-pad') || ' ').replace(rxEsc, '\\$1')+')+', 'm'), options = {
      "maxDepth": 1,
      "maxStringLength": 160,
      "fileLinkFormat": false
    }, elt = root.getElementsByTagName('A'), len = elt.length, i = 0, s, h, t = []; while (i < len) t.push(elt[i++
    ]); for (i in x) { options[i
      ] = x[i
      ];
    } function a(e, f) { addEventListener(root, e, function (e, n) { if ('A' == e.target.tagName) { f(e.target, e);
        } else if ('A' == e.target.parentNode.tagName) { f(e.target.parentNode, e);
        } else { n = /\bsf-dump-ellipsis\b/.test(e.target.className) ? e.target.parentNode : e.target; if ((n = n.nextElementSibling) && 'A' == n.tagName) { if (!/\bsf-dump-toggle\b/.test(n.className)) { n = n.nextElementSibling || n;
            } f(n, e, true);
          }
        }
      });
    }; function isCtrlKey(e) { return e.ctrlKey || e.metaKey;
    } function xpathString(str) { var parts = str.match(/[^'"]+|['"
      ]/g).map(function (part) { if ("'" == part) { return '"\'"';
        } if ('"' == part) { return "'\"'";
      } return "'" + part + "'";
    }); return "concat(" + parts.join(",") + ", '')";
  } function xpathHasClass(className) { return "contains(concat(' ', normalize-space(@class), ' '), ' " + className +" ')";
  } addEventListener(root, 'mouseover', function (e) { if ('' != refStyle.innerHTML) { refStyle.innerHTML = '';
    }
  }); a('mouseover', function (a, e, c) { if (c) { e.target.style.cursor = "pointer";
    } else if (a = idRx.exec(a.className)) { try { refStyle.innerHTML = 'pre.sf-dump .'+a[
          0
        ]+'{background-color: #B729D9; color: #FFF !important; border-radius: 2px
        }';
      } catch (e) {}
    }
  }); a('click', function (a, e, c) { if (/\bsf-dump-toggle\b/.test(a.className)) { e.preventDefault(); if (!toggle(a, isCtrlKey(e))) { var r = doc.getElementById(a.getAttribute('href').slice(1)), s = r.previousSibling, f = r.parentNode, t = a.parentNode; t.replaceChild(r, a); f.replaceChild(a, s); t.insertBefore(s, r); f = f.firstChild.nodeValue.match(indentRx); t = t.firstChild.nodeValue.match(indentRx); if (f && t && f[
          0
        ] !== t[
          0
        ]) { r.innerHTML = r.innerHTML.replace(new RegExp('^'+f[
            0
          ].replace(rxEsc, '\\$1'), 'mg'), t[
            0
          ]);
        } if (/\bsf-dump-compact\b/.test(r.className)) { toggle(s, isCtrlKey(e));
        }
      } if (c) {} else if (doc.getSelection) { try { doc.getSelection().removeAllRanges();
        } catch (e) { doc.getSelection().empty();
        }
      } else { doc.selection.empty();
      }
    } else if (/\bsf-dump-str-toggle\b/.test(a.className)) { e.preventDefault(); e = a.parentNode.parentNode; e.className = e.className.replace(/\bsf-dump-str-(expand|collapse)\b/, a.parentNode.className);
    }
  }); elt = root.getElementsByTagName('SAMP'); len = elt.length; i = 0; while (i < len) t.push(elt[i++
  ]); len = t.length; for (i = 0; i < len; ++i) { elt = t[i
    ]; if ('SAMP' == elt.tagName) { a = elt.previousSibling || {}; if ('A' != a.tagName) { a = doc.createElement('A'); a.className = 'sf-dump-ref'; elt.parentNode.insertBefore(a, elt);
      } else { a.innerHTML += ' ';
      } a.title = (a.title ? a.title+'\n[' : '[')+keyHint+'+click
        ] Expand all children'; a.innerHTML += elt.className == 'sf-dump-compact' ? '<span>&#9654;</span>' : '<span>&#9660;</span>'; a.className += ' sf-dump-toggle'; x = 1; if ('sf-dump' != elt.parentNode.className) { x += elt.parentNode.getAttribute('data-depth')/1;
        }
      } else if (/\bsf-dump-ref\b/.test(elt.className) && (a = elt.getAttribute('href'))) { a = a.slice(1); elt.className += ' '+a; if (/[\[
            {
          ]$/.test(elt.previousSibling.nodeValue)) { a = a != elt.nextSibling.id && doc.getElementById(a); try { s = a.nextSibling; elt.appendChild(a); s.parentNode.insertBefore(a, s); if (/^[@#
              ]/.test(elt.innerHTML)) { elt.innerHTML += ' <span>&#9654;</span>';
              } else { elt.innerHTML = '<span>&#9654;</span>'; elt.className = 'sf-dump-ref';
              } elt.className += ' sf-dump-toggle';
            } catch (e) { if ('&' == elt.innerHTML.charAt(0)) { elt.innerHTML = '&#8230;'; elt.className = 'sf-dump-ref';
              }
            }
          }
        }
      } if (doc.evaluate && Array.from && root.children.length > 1) { root.setAttribute('tabindex',
        0); SearchState = function () { this.nodes = []; this.idx = 0;
        }; SearchState.prototype = { next: function () { if (this.isEmpty()) { return this.current();
            } this.idx = this.idx < (this.nodes.length - 1) ? this.idx + 1 : 0; return this.current();
          }, previous: function () { if (this.isEmpty()) { return this.current();
            } this.idx = this.idx > 0 ? this.idx - 1 : (this.nodes.length - 1); return this.current();
          }, isEmpty: function () { return 0 === this.count();
          }, current: function () { if (this.isEmpty()) { return null;
            } return this.nodes[this.idx
            ];
          }, reset: function () { this.nodes = []; this.idx = 0;
          }, count: function () { return this.nodes.length;
          },
        }; function showCurrent(state) { var currentNode = state.current(), currentRect, searchRect; if (currentNode) { reveal(currentNode); highlight(root, currentNode, state.nodes); if ('scrollIntoView' in currentNode) { currentNode.scrollIntoView(true); currentRect = currentNode.getBoundingClientRect(); searchRect = search.getBoundingClientRect(); if (currentRect.top < (searchRect.top + searchRect.height)) { window.scrollBy(0, -(searchRect.top + searchRect.height + 5));
              }
            }
          } counter.textContent = (state.isEmpty() ? 0 : state.idx + 1) + ' of ' + state.count();
        } var search = doc.createElement('div'); search.className = 'sf-dump-search-wrapper sf-dump-search-hidden'; search.innerHTML = ' <input type="text" class="sf-dump-search-input"> <span class="sf-dump-search-count">0 of 0</span> <button type="button" class="sf-dump-search-input-previous" tabindex="-1"> <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 1331l-166 165q-19 19-45 19t-45-19L896 965l-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z"/></svg> </button> <button type="button" class="sf-dump-search-input-next" tabindex="-1"> <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 808l-742 741q-19 19-45 19t-45-19L109 808q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z"/></svg> </button> '; root.insertBefore(search, root.firstChild); var state = new SearchState(); var searchInput = search.querySelector('.sf-dump-search-input'); var counter = search.querySelector('.sf-dump-search-count'); var searchInputTimer = 0; var previousSearchQuery = ''; addEventListener(searchInput, 'keyup', function (e) { var searchQuery = e.target.value; /* Don't perform anything if the pressed key didn't change the query */ if (searchQuery === previousSearchQuery) { return;
          } previousSearchQuery = searchQuery; clearTimeout(searchInputTimer); searchInputTimer = setTimeout(function () { state.reset(); collapseAll(root); resetHighlightedNodes(root); if ('' === searchQuery) { counter.textContent = '0 of 0'; return;
            } var classMatches = [
              "sf-dump-str",
              "sf-dump-key",
              "sf-dump-public",
              "sf-dump-protected",
              "sf-dump-private",
            ].map(xpathHasClass).join(' or '); var xpathResult = doc.evaluate('. //span[' + classMatches + '][contains(translate(child::text(), ' + xpathString(searchQuery.toUpperCase()) + ', ' + xpathString(searchQuery.toLowerCase()) + '), ' + xpathString(searchQuery.toLowerCase()) + ')]', root, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); while (node = xpathResult.iterateNext()) state.nodes.push(node); showCurrent(state); }, 400); }); Array.from(search.querySelectorAll('.sf-dump-search-input-next, .sf-dump-search-input-previous')).forEach(function (btn) { addEventListener(btn, 'click', function (e) { e.preventDefault(); -1 !== e.target.className.indexOf('next') ? state.next() : state.previous(); searchInput.focus(); collapseAll(root); showCurrent(state); }) }); addEventListener(root, 'keydown', function (e) { var isSearchActive = !/\bsf-dump-search-hidden\b/.test(search.className); if ((114 === e.keyCode && !isSearchActive) || (isCtrlKey(e) && 70 === e.keyCode)) { /* F3 or CMD/CTRL + F */ if (70 === e.keyCode && document.activeElement === searchInput) { /* * If CMD/CTRL + F is hit while having focus on search input, * the user probably meant to trigger browser search instead. * Let the browser execute its behavior: */ return; } e.preventDefault(); search.className = search.className.replace(/\bsf-dump-search-hidden\b/, ''); searchInput.focus(); } else if (isSearchActive) { if (27 === e.keyCode) { /* ESC key */ search.className += ' sf-dump-search-hidden'; e.preventDefault(); resetHighlightedNodes(root); searchInput.value = ''; } else if ( (isCtrlKey(e) && 71 === e.keyCode) /* CMD/CTRL + G */ || 13 === e.keyCode /* Enter */ || 114 === e.keyCode /* F3 */ ) { e.preventDefault(); e.shiftKey ? state.previous() : state.next(); collapseAll(root); showCurrent(state); } } }); } if (0 >= options.maxStringLength) { return; } try { elt = root.querySelectorAll('.sf-dump-str'); len = elt.length; i = 0; t = []; while (i < len) t.push(elt[i++]); len = t.length; for (i = 0; i < len; ++i) { elt = t[i]; s = elt.innerText || elt.textContent; x = s.length - options.maxStringLength; if (0 < x) { h = elt.innerHTML; elt[elt.innerText ? 'innerText' : 'textContent'] = s.substring(0, options.maxStringLength); elt.className += ' sf-dump-str-collapse'; elt.innerHTML = '<span class=sf-dump-str-collapse>'+h+'<a class="sf-dump-ref sf-dump-str-toggle" title="Collapse"> &#9664;</a></span>'+ '<span class=sf-dump-str-expand>'+elt.innerHTML+'<a class="sf-dump-ref sf-dump-str-toggle" title="'+x+' remaining characters"> &#9654;</a></span>'; } } } catch (e) { } }; })(document); </script><style> pre.sf-dump { display: block; white-space: pre; padding: 5px; overflow: initial !important; } pre.sf-dump:after { content: ""; visibility: hidden; display: block; height: 0; clear: both; } pre.sf-dump span { display: inline; } pre.sf-dump a { text-decoration: none; cursor: pointer; border: 0; outline: none; color: inherit; } pre.sf-dump img { max-width: 50em; max-height: 50em; margin: .5em 0 0 0; padding: 0; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAHUlEQVQY02O8zAABilCaiQEN0EeA8QuUcX9g3QEAAjcC5piyhyEAAAAASUVORK5CYII=) #D3D3D3; } pre.sf-dump .sf-dump-ellipsis { display: inline-block; overflow: visible; text-overflow: ellipsis; max-width: 5em; white-space: nowrap; overflow: hidden; vertical-align: top; } pre.sf-dump .sf-dump-ellipsis+.sf-dump-ellipsis { max-width: none; } pre.sf-dump code { display:inline; padding:0; background:none; } .sf-dump-public.sf-dump-highlight, .sf-dump-protected.sf-dump-highlight, .sf-dump-private.sf-dump-highlight, .sf-dump-str.sf-dump-highlight, .sf-dump-key.sf-dump-highlight { background: rgba(111, 172, 204, 0.3); border: 1px solid #7DA0B1; border-radius: 3px; } .sf-dump-public.sf-dump-highlight-active, .sf-dump-protected.sf-dump-highlight-active, .sf-dump-private.sf-dump-highlight-active, .sf-dump-str.sf-dump-highlight-active, .sf-dump-key.sf-dump-highlight-active { background: rgba(253, 175, 0, 0.4); border: 1px solid #ffa500; border-radius: 3px; } pre.sf-dump .sf-dump-search-hidden { display: none !important; } pre.sf-dump .sf-dump-search-wrapper { font-size: 0; white-space: nowrap; margin-bottom: 5px; display: flex; position: -webkit-sticky; position: sticky; top: 5px; } pre.sf-dump .sf-dump-search-wrapper > * { vertical-align: top; box-sizing: border-box; height: 21px; font-weight: normal; border-radius: 0; background: #FFF; color: #757575; border: 1px solid #BBB; } pre.sf-dump .sf-dump-search-wrapper > input.sf-dump-search-input { padding: 3px; height: 21px; font-size: 12px; border-right: none; border-top-left-radius: 3px; border-bottom-left-radius: 3px; color: #000; min-width: 15px; width: 100%; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next, pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous { background: #F2F2F2; outline: none; border-left: none; font-size: 0; line-height: 0; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next > svg, pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous > svg { pointer-events: none; width: 12px; height: 12px; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-count { display: inline-block; padding: 0 5px; margin: 0; border-left: none; line-height: 21px; font-size: 12px; }pre.sf-dump, pre.sf-dump .sf-dump-default{background-color:#18171B; color:#FF8400; line-height:1.2em; font:12px Menlo, Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:99999; word-break: break-all}pre.sf-dump .sf-dump-num{font-weight:bold; color:#1299DA}pre.sf-dump .sf-dump-const{font-weight:bold}pre.sf-dump .sf-dump-str{font-weight:bold; color:#56DB3A}pre.sf-dump .sf-dump-note{color:#1299DA}pre.sf-dump .sf-dump-ref{color:#A0A0A0}pre.sf-dump .sf-dump-public{color:#FFFFFF}pre.sf-dump .sf-dump-protected{color:#FFFFFF}pre.sf-dump .sf-dump-private{color:#FFFFFF}pre.sf-dump .sf-dump-meta{color:#B729D9}pre.sf-dump .sf-dump-key{color:#56DB3A}pre.sf-dump .sf-dump-index{color:#1299DA}pre.sf-dump .sf-dump-ellipsis{color:#FF8400}pre.sf-dump .sf-dump-ns{user-select:none;}pre.sf-dump .sf-dump-ellipsis-note{color:#1299DA}</style><pre class=sf-dump id=sf-dump-1567297353 data-indent-pad="  "><span class=sf-dump-default>^</span><span class=sf-dump-default> </span><span class=sf-dump-note>array:3</span> [<samp data-depth=1 class=sf-dump-expanded>
  "<span class=sf-dump-key>DataList</span>" => <span class=sf-dump-note>array: 1</span> [<samp data-depth=2 class=sf-dump-compact>
    <span class=sf-dump-index>0</span> => <span class=sf-dump-note>array: 11</span> [<samp data-depth=3 class=sf-dump-compact>
      "<span class=sf-dump-key>address</span>" => "<span class=sf-dump-str title="23 characters">&#31119;&#24314;&#30465;&#21414;&#38376;&#24066;&#24605;&#26126;&#21306;&#33714;&#21069;&#34903;&#36947;&#34382;&#20180;&#23665;&#36335;&#21414;&#38376;&#24066;&#36719;&#20214;&#22253;</span>"
      "<span class=sf-dump-key>checkTime</span>" => <span class=sf-dump-num>1762482323000</span>
      "<span class=sf-dump-key>corpId</span>" => "<span class=sf-dump-str title="36 characters">ding4e6862a81f03c709ffe93478753d9884</span>"
      "<span class=sf-dump-key>locationResult</span>" => "<span class=sf-dump-str title="6 characters">Normal</span>"
      "<span class=sf-dump-key>groupId</span>" => "<span class=sf-dump-str title="32 characters">3CF44A18684D6B5F47537A056A66D7B2</span>"
      "<span class=sf-dump-key>latitude</span>" => <span class=sf-dump-num>24.491677</span>
      "<span class=sf-dump-key>bizId</span>" => "<span class=sf-dump-str title="32 characters">AC2F4EE08D23B512375AC1ACBDDB7D7D</span>"
      "<span class=sf-dump-key>locationMethod</span>" => "<span class=sf-dump-str title="3 characters">MAP</span>"
      "<span class=sf-dump-key>checkByUser</span>" => <span class=sf-dump-const>true</span>
      "<span class=sf-dump-key>userId</span>" => "<span class=sf-dump-str title="18 characters">564331512021476453</span>"
      "<span class=sf-dump-key>longitude</span>" => <span class=sf-dump-num>118.180431</span>
    </samp>
              ]
  </samp>
            ]
  "<span class=sf-dump-key>eventId</span>" => "<span class=sf-dump-str title="32 characters">f5fdae42f9dc436a8d1fc4e7f1434c99</span>"
  "<span class=sf-dump-key>EventType</span>" => "<span class=sf-dump-str title="23 characters">attendance_check_record</span>"
</samp>
          ]
</pre><script>Sfdump("sf-dump-1567297353")</script>
{
            "msg_signature": "97e570f3d5440c99adbd908dc21df525f311c88e",
            "encrypt": "EB+vgLWdwQJfwiK0NBwskKNR1lqYF1WV2XIy9ExRkAHNnXKg/p+fjWQMLo9YV9o+tvx5Kzd/cvNaggR1QlBq/g==",
            "timeStamp": 1762482662,
            "nonce": "yAQUn7krHvCHO0gY"
          }
修改于 2025-11-07 02:29:39
上一页
导入-设备计划(巡检/保养)
下一页
删除字典数据-适用于字典类型的配置
Built with