表单管理平台 - 用户手册

低代码表单搭建 · 工作流自动化 · AI智能助手

1. 登录系统

客户登录

打开平台首页,输入手机号密码即可登录。

登录后可以看到所有你有权限访问的表单。管理员可以看到所有表单,普通成员只能看到被授权的表单。

子账号登录

子账号使用用户名(不是手机号)和密码登录。子账号的权限由管理员在「成员管理」中设置。

管理后台

访问 /admin.html 进入管理后台,使用超级管理员账号登录。管理后台可以管理所有客户。

2. 表单管理

表单是平台的核心概念。每个表单相当于一个独立的数据采集表单,有自己的字段、脚本和数据。

创建表单

1 点击首页的 「搭建新表单」 按钮

2 进入搭建器页面,设计表单

3 点击 「保存」 完成创建

表单类型

类型说明适用场景
普通表单标准数据采集表单报名、签到、订单、调查问卷
仪表盘数据可视化展示数据分析、经营看板
数据池大批量数据存储生产排期、Excel大表读写

查看数据

在表单卡片上点击 「查看数据」,进入独立数据页面。支持:

设为主表单

主表单会在客户首页直接显示。点击表单卡片的 「设为主表单」 即可。

文件管理

/files.html 页面可以管理表单上传的附件文件。

3. 搭建表单(表单设计器)

搭建器是一个可视化的表单设计器,通过拖拽组件来设计表单。

界面布局

可用组件

组件说明用途
文本输入单行文本输入框姓名、手机号、编号
数字输入数值输入框数量、金额、年龄
下拉选择选项列表分类、状态选择
日期选择日期选择器生日、截止日期
多行文本多行文本区域备注、详细描述
成员选择从组织成员中选择审批人、负责人
子表单可增删行的明细表格订单明细、考勤记录
标签纯文字说明标题、提示信息
按钮操作按钮提交、重置、自定义操作
弹窗弹出提示框确认、警告、成功提示
图片上传图片/文件上传照片、附件、凭证
扫码输入扫描二维码/条码设备编号、产品追溯
定位获取地理位置签到打卡、巡检定位
签名手写签名确认签字、验收签名
柱状图柱状图组件(仪表盘用)数据对比
折线图折线图组件(仪表盘用)趋势展示
饼图饼图组件(仪表盘用)占比分析

操作步骤

1 从左栏拖拽组件到画布

2 在画布上调整组件位置(拖拽)和大小(拖拽边框)

3 点击组件,在右栏编辑属性(标签、字段名、必填等)

4 点击 「保存」 按钮保存

组件属性说明

整体设置

点击搭建器顶部的 「整体设置」 按钮,可以设置:

4. 计算脚本(重点功能)

计算脚本可以在用户填写表单时自动执行计算,输出结果到指定字段。

打开脚本编辑器

在搭建器中点击 「计算脚本」 按钮,打开脚本编辑器。

基本用法

每个脚本由三部分组成:

  1. 触发条件:什么时候执行这个脚本
  2. 脚本代码:做什么计算
  3. 输出字段:计算结果展示在哪里

读取数据

使用 data.字段名 获取表单字段的值:

var 名字 = data.姓名;         // 获取文本值
var 价格 = toNum(data.单价);  // 获取数字值
var 日期 = data.下单日期;     // 获取日期值

输出结果

使用 result.字段名 = 值 设置输出:

result.总价 = toNum(data.单价) * toNum(data.数量);
result.状态 = '已完成';
result.备注 = data.姓名 + ' 的订单';

触发条件

设置脚本在什么条件下执行:

条件类型说明
值变化当字段值发生变化时触发
等于字段值等于指定值
不等于字段值不等于指定值
大于/小于数值比较
为空/非空字段是否有值

多个条件可以设置为「全部满足」(AND)或「任一满足」(OR)。

内置函数

函数说明示例
toNum(v)转为数字,失败返回0toNum(data.数量)
toStr(v)转为文本toStr(data.编号)
toPct(v, d)转为百分数toPct(0.85, 1) → "85.0%"
toFixed(v, d)保留d位小数toFixed(3.14159, 2) → "3.14"
splitStr(v, sep)按分隔符拆分文本splitStr("a,b,c", ",") → ["a","b","c"]
joinStr(arr, sep)用分隔符拼接数组joinStr([1,2,3], "-") → "1-2-3"
showPopup(id)显示弹窗组件showPopup('popup_提示')
closePopup(id)关闭弹窗组件closePopup('popup_提示')
setSfRows(key, n)设置子表单行数setSfRows('明细', 5)
scanDecode()触发扫码解码配合扫码输入组件使用
printForm(tplId)打印表单配合打印模板使用

自定义函数

你可以在脚本中定义自己的函数,然后调用它:

// 定义一个折扣计算函数
function 计算折扣(原价, 折扣率) {
  var p = toNum(原价);
  var r = toNum(折扣率);
  if (r <= 0 || r > 1) r = 1;
  return p * r;
}

// 调用函数
result.折后价 = 计算折扣(data.原价, data.折扣率);
函数定义必须写在调用之前。可以定义多个函数,函数之间也可以互相调用。

子表单操作

子表单的每一列在脚本中表现为数组:

// 假设子表单字段名是「明细」,有「数量」和「单价」两列
var 总金额 = 0;
for (var i = 0; i < 明细_数量.length; i++) {
  总金额 += toNum(明细_数量[i]) * toNum(明细_单价[i]);
}
result.总金额 = toFixed(总金额, 2);

子表单行数简写语法

设置子表单行数可以用简写:

明细=5行        // 等价于 setSfRows('明细', 5)
子表单=10行     // 等价于 setSfRows('子表单', 10)

跨触发变量共享

多个触发条件的脚本可以共享变量。在一个脚本中定义的变量,其他脚本可以读取。这允许你将复杂逻辑拆分为多个小脚本,各自负责不同的计算。

静默轮询

脚本支持定时轮询执行,无需用户操作。在脚本设置中开启「静默轮询」,设置间隔时间(秒),脚本会自动周期性执行。适用于实时计算、定时校验等场景。

可用的全局对象

脚本示例

示例1:根据金额计算等级

var 金额 = toNum(data.金额);
if (金额 >= 1000) {
  result.等级 = 'VIP客户';
  result.折扣 = 0.8;
} else if (金额 >= 500) {
  result.等级 = '高级客户';
  result.折扣 = 0.9;
} else {
  result.等级 = '普通客户';
  result.折扣 = 1;
}

示例2:子表单求和 + 自定义函数

// 定义计算单行金额的函数
function 行金额(数量, 单价) {
  return toNum(数量) * toNum(单价);
}

var 总数量 = 0;
var 总金额 = 0;
for (var i = 0; i < 明细_数量.length; i++) {
  总数量 += toNum(明细_数量[i]);
  总金额 += 行金额(明细_数量[i], 明细_单价[i]);
}

result.总数量 = 总数量;
result.总金额 = toFixed(总金额, 2);

示例3:数据校验

var errors = [];

// 检查手机号格式
if (data.手机号 && !/^1\d{10}$/.test(data.手机号)) {
  errors.push('手机号格式不正确');
}

// 检查年龄范围
var 年龄 = toNum(data.年龄);
if (年龄 < 0 || 年龄 > 150) {
  errors.push('年龄应在0-150之间');
}

if (errors.length > 0) {
  result.校验结果 = '错误: ' + joinStr(errors, '; ');
} else {
  result.校验结果 = '校验通过';
}

5. 成员管理

管理员可以在「成员管理」中添加和管理子账号。

添加成员

1 点击 「添加成员」

2 填写用户名和密码

3 设置角色和权限

4 保存

个人信息

每个成员可以维护个人信息:

权限角色

通过角色管理权限,每个角色可配置菜单权限和按钮权限:

权限默认隐藏,只有分配了对应权限的成员才能看到相应菜单和按钮。

部门管理

支持树形部门结构,成员可归属到不同部门。部门可用于审批流程中的通知范围筛选。

6. 权限系统

平台采用5层权限体系,从粗到细精确控制访问。

权限层次

层级说明示例
菜单权限控制能否看到某个功能菜单搭建器、工作流、数据工厂
按钮权限控制能否执行某个操作新增、删除、导出
表单权限按表单控制操作权限打印、查看、导出、导入
字段权限控制字段是否可见/可编辑成本价、利润字段
行级权限控制只能看到自己提交的数据普通成员只看自己的记录

权限组

权限组用于批量管理成员权限:

  1. 创建权限组(如「销售组」、「财务组」)
  2. 添加成员到组
  3. 为组配置权限
  4. 在表单中引用权限组控制可见范围

表单级权限

打印、查看、导出、导入等操作支持按表单单独配置。在搭建器的「权限设置」标签页中,可以指定哪些角色/成员可以在该表单中执行这些操作。

7. 工作流

工作流用于定义跨表单的数据流转逻辑。通过可视化的节点连线,定义数据从一个环节到另一个环节的流转。

节点类型

节点说明
触发器工作流的起点,监听表单提交事件
查询数据从表单中查询数据
设置变量定义和赋值变量
计算脚本执行数据计算
发送API调用外部接口
修改数据更新已有数据
添加数据向表单中添加新数据
条件判断根据条件走不同分支
通知发送通知给指定成员
结束工作流终点

使用步骤

1 从左栏拖拽节点到画布

2 点击节点,在右栏配置属性

3 从一个节点的输出端口拖线到下一个节点的输入端口

4 保存并启用工作流

预警通知

工作流支持配置预警规则。当数据达到预警条件时,自动发送通知给指定人员:

工作流在后台自动运行,不需要人工干预。当触发条件满足时,工作流会自动执行。

8. 审批流程

审批流程用于需要人工审批的业务场景,如请假审批、报销审批等。

配置审批流程

在搭建器的「审批流程」标签页中,通过画布编辑器设计审批流程:

  1. 添加审批节点,指定审批人(支持个人、角色、部门负责人)
  2. 连接节点,定义审批顺序
  3. 设置每个节点的通过拒绝后的流向
  4. 配置超时处理(可选)

审批操作

查看审批

在首页点击 「审批」 标签,可以看到:

9. 数据工厂

数据工厂用于跨表单的数据整合和分析,通过管道式处理流程,将多个数据源合并、转换、输出。

节点类型

节点说明
数据源从表单中获取数据
过滤按条件筛选数据
映射字段计算和转换
分组聚合按字段分组并计算汇总
排序按字段排序
连接关联两个数据源(类似SQL JOIN)
合并将多个数据源合并(UNION)
限制限制输出行数
输出将结果保存到数据库或生成报表

定时执行

数据工厂支持定时执行。在配置中设置 cron 表达式,如:

应用场景

10. 设备终端

设备终端功能可以将表单打包为独立应用,部署到设备上运行,实现数据自动采集。

支持的设备协议

协议说明
TCP通过TCP连接接收设备数据
UDP通过UDP接收设备数据
串口通过串口(COM口)接收数据
HTTP通过HTTP接口接收数据推送

配置步骤

1 在搭建器的「设备配置」标签页中配置

2 选择协议类型

3 设置数据格式(JSON/分隔符/定长)

4 配置字段映射(设备字段 → 表单字段)

5 保存后可以通过打包功能导出独立HTML

脚本编辑器集成

设备配置页面内嵌脚本编辑器,可以为设备数据编写处理脚本,实现数据校验、转换和自动计算。

11. AI助手

平台内置AI助手,可以通过自然语言对话来查询数据、分析业务、生成报表。

启用AI助手

在「系统设置」中配置AI功能:

  1. 开启AI助手开关
  2. 输入你的 DeepSeek API Key
  3. 保存配置
AI助手使用你自己的API Key,平台不会存储你的对话内容。

AI助手能力

侧边栏使用

在搭建器和数据查看页面,点击右侧的AI助手图标打开侧边栏,直接对话操作。

12. 通知与机器人

平台支持钉钉、飞书机器人推送消息,以及通讯录同步。

12.1 钉钉机器人配置

第一步:创建钉钉群机器人

  1. 打开钉钉桌面端,进入要接收通知的群
  2. 点击群右上角 「群设置」「智能群助手」
  3. 点击 「添加机器人」 → 选择 「自定义」
  4. 填写机器人名称(如"工厂助手"),安全设置选择 「自定义关键词」,填入:通知
  5. 点击完成后,会显示 Webhook URL,复制保存

第二步:获取 RobotCode

  1. 打开 钉钉开放平台
  2. 登录后,点击 「应用开发」「企业内部开发」
  3. 创建一个应用(或使用已有的)
  4. 进入应用详情,在左侧菜单找到 「凭证与基础信息」
  5. 找到 「RobotCode」(不是 AppKey!),复制保存
重要:RobotCode ≠ AppKey ≠ AppSecret。很多人搞混这三个。在钉钉开放平台的应用详情页,RobotCode 是单独的一项,格式类似 dingxxxxxxxxxx

第三步:在平台配置

  1. 进入平台 「系统设置」 页面
  2. 找到 「钉钉接口」 区域
  3. 填入 Webhook URL(第一步获取的)
  4. 填入 RobotCode(第二步获取的)
  5. 点击 「测试连接」 验证

第四步:通讯录同步(可选)

如需从钉钉同步组织架构和成员:

  1. 在钉钉开放平台,进入你的应用
  2. 左侧菜单 「权限管理」
  3. 搜索并开通以下权限:
    • contact:department.base:readonly — 读取部门
    • contact:user.base:readonly — 读取用户
  4. 在平台 「成员管理」 页面,点击 「同步通讯录」

12.2 飞书机器人配置

前提条件

飞书通讯录API必须有组织才能用!个人版飞书(没有加入任何企业/团队)无法使用通讯录同步功能。你需要先创建或加入一个飞书组织。

第一步:创建飞书应用

  1. 打开 飞书开放平台
  2. 登录后,点击 「创建应用」 → 选择 「企业自建应用」
  3. 填写应用名称(如"工厂助手")和描述
  4. 创建完成后,进入应用详情页

第二步:获取凭证

  1. 在应用详情页,左侧菜单 「凭证与基础信息」
  2. 复制 App IDApp Secret
  3. 左侧菜单 「事件与回调」「加密策略」
  4. 复制 Verification Token

第三步:开启机器人能力

  1. 左侧菜单 「应用能力」「机器人」
  2. 点击 「启用机器人」

第四步:配置事件订阅

  1. 左侧菜单 「事件与回调」「事件配置」
  2. 请求地址配置:填入 https://你的域名/api/feishu/event
  3. 添加事件:im.message.receive_v1(接收消息)
飞书会向你的回调地址发送一个 challenge 验证请求,平台会自动响应。如果验证失败,检查服务器是否能从外网访问。

第五步:配置权限

左侧菜单 「权限管理」,搜索并开通以下权限:

权限名说明用途
im:message:send_as_bot以机器人身份发送消息推送通知
im:message:receive_v1接收消息事件接收用户@机器人消息
contact:user.base:readonly读取用户基本信息通讯录同步
contact:department.base:readonly读取部门基本信息通讯录同步
注意:权限名是 contact:user.base:readonly,不是 contact:user:readonly!写错了会返回 40004 错误。
另外,还需要在权限管理页面开启 「通讯录」总开关(搜索"通讯录"→开启),否则所有 contact API 都会返回 40004。

第六步:发布应用

必须发布版本!自建应用必须在飞书开放平台 「版本管理与发布」 中创建版本并发布,事件订阅才会生效。未发布的应用,事件回调不会触发。

第七步:在平台配置

  1. 进入平台 「系统设置」 页面
  2. 找到 「飞书接口」 区域
  3. 填入 App IDApp SecretVerify Token
  4. 点击 「测试连接」 验证

第八步:通讯录同步(可选)

在平台 「成员管理」 页面,点击 「同步通讯录」

飞书用户手机号带国际区号(如 +8613379300835),平台会自动去除 +86 前缀进行匹配。

12.3 通知规则配置

配置好机器人后,可以在 「通知设置」 中配置通知规则:

  1. 点击工具栏的 按钮,打开通知设置弹窗
  2. 左侧:Webhook群管理 — 添加/编辑/删除通知群
  3. 右侧:通知规则管理 — 配置什么事件发到哪个群
  4. 支持的通知触发事件:

    • 工作流执行成功/失败
    • 审批通过/拒绝
    • 预警线触发(数据超过阈值)

    12.4 常见问题

    Q: 钉钉机器人发不出消息?

    A: 检查以下几点:

    1. Webhook URL 是否正确(以 https://oapi.dingtalk.com/robot/send?access_token= 开头)
    2. 群机器人是否设置了关键词,消息内容必须包含关键词才能发送
    3. RobotCode 是否填写正确(不是 AppKey)

    Q: 飞书机器人发不出消息?

    A: 检查以下几点:

    1. App ID 和 App Secret 是否正确
    2. 应用是否已发布版本(未发布的应用无法发送消息)
    3. 是否开通了 im:message:send_as_bot 权限

    Q: 飞书通讯录同步失败?

    A: 检查以下几点:

    1. 是否是个人版飞书(通讯录API必须有组织才能用)
    2. 是否开启了「通讯录」总开关(权限管理页面搜索"通讯录"→开启)
    3. 权限名是否写对:contact:user.base:readonlycontact:department.base:readonly
    4. 应用是否已发布版本

    Q: 飞书回调验证失败?

    A: 检查以下几点:

    1. 回调地址是否能从外网访问(飞书服务器需要能访问你的服务器)
    2. 回调地址格式:https://你的域名/api/feishu/event
    3. Verify Token 是否填写正确

13. 打印模板

打印模板用于将表单数据格式化输出,支持打印和导出PDF。

配置打印模板

在搭建器的「打印模板」标签页中:

  1. 设计打印模板,使用变量引用表单字段:${字段名}
  2. 支持表格、图片、条码等元素
  3. 配置纸张大小和方向
  4. 保存模板

使用打印

在数据查看页面,选中记录后点击「打印」按钮,选择模板即可打印或导出PDF。

打印操作需要「打印」表单权限。在搭建器的权限设置中配置。

14. 模块商城

模块商城提供预制的业务模块模板,可以一键安装使用。

浏览模块

在首页点击「模块商城」,可以浏览可用的模块模板:

安装模块

1 选择需要的模块

2 点击「预览」查看模块内容

3 点击「安装」导入到你的平台

4 安装后可自行修改调整

15. 常见问题

Q: 为什么脚本没有执行?

A: 检查以下几点:

  1. 触发条件是否正确设置(字段名是否匹配)
  2. 脚本代码是否有语法错误(查看「脚本错误」提示)
  3. 是否点击了「保存全部」按钮

Q: 如何在脚本中引用子表单的数据?

A: 子表单的每一列在脚本中是一个数组。例如子表单字段名是「明细」,有「数量」列,则用 明细_数量 获取该列的所有值(数组)。也可以用简写语法 明细=5行 设置行数。

Q: 数字计算结果不正确?

A: 表单字段的值默认是文本类型,在计算前必须用 toNum() 转为数字。例如 toNum(data.单价) * toNum(data.数量)

Q: 如何设置权限?

A: 在「成员管理」中创建角色,为角色分配菜单权限和按钮权限。然后将成员关联到角色。表单级权限(打印/导出等)在搭建器的「权限设置」中按表单配置。

Q: 数据可以导出吗?

A: 在表单的「查看数据」页面,支持CSV导出。选中记录后点击「导出」按钮。也可以通过数据工厂生成定时报表。

Q: AI助手不响应?

A: 检查以下几点:

  1. 「系统设置」中AI开关是否开启
  2. DeepSeek API Key是否正确
  3. API Key是否有效(未过期/未用完额度)

Q: 飞书/钉钉机器人发不出消息?

A: 检查以下几点:

  1. 「系统设置」中的配置是否正确
  2. 飞书应用是否已发布版本
  3. 钉钉RobotCode是否填写正确(不是app_key)
  4. 机器人是否在目标群/会话中

Q: 端口被占用怎么办?

A: 如果启动时提示端口被占用,运行以下命令找到并关闭占用端口的进程:

netstat -ano | findstr :3000
taskkill /PID <进程ID> /F
表单管理平台 用户手册 · 最后更新:2026年6月