AgentStack
SKILL verified Apache-2.0 Self-run

Jeecg Desform

skill-jeecgboot-skills-jeecg-desform · by jeecgboot

JeecgBoot 表单设计器(desform)全生命周期管理——通过对话的方式创建、更新、复制、删除表单设计器,管理表单数据(CRUD),生成 PC/移动端表单视图,以及一键创建 OA 审批应用(表单+流程+授权)。只要用户意图涉及「表单设计器」就必须使用本技能,包括但不限于:创建或生成表单("做一个请假表单"、"AI设计表单"、"desform")、修改已有表单或字段("加个字段"、"改一下表单")、复制/删除表单、录入或查询表单数据、创建表单视图(含移动端)、以及咨询设计器功能(控件类型、字典配置、校验规则、关联记录、子表、公式计算、JS/CSS增强、默认值、外链等)。当用户想要创建带审批流程的 OA 应用时也应触发("创建OA应用"、"创建审批单"、"创建报销单"、"创建请假单"、"做一个OA表单带流程"、"一键创建表单和流程"、"面试申请"、"出差申请"等)。即使用户只是描述字…

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add skill-jeecgboot-skills-jeecg-desform

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Jeecg Desform? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

JeecgBoot 表单设计器 AI 自动生成器

使用自然语言(或图片)生成表单设计器配置。

> 重要:本 skill 只处理「表单设计器」(desform),不涉及 Online 表单。两者是完全独立的表单体系。


执行准则(必读)

本技能的所有强制规则,都在对抗同一个 AI 倾向:用"我大概知道"替代"我确认知道"

跳步:校验、确认、读文档看似多余——AI 倾向于省略。但每个步骤都是防错设计,省略后出错时代价是数据损坏或 API 异常,且无法回头。

猜测:系统特定的编码、API 参数格式、控件配置细节,训练知识不够用,但 AI 会用"看起来合理"的值填补——配置看似正确,运行时才报错。

本系统有大量与通用认知冲突的特殊行为(API 接口不可靠、参数大小写有严格要求、控件结构非直觉、部分值只存在于用户自己的系统中)。你对这个系统的了解程度,不如这份文档和用户本身。

遇到任何操作,遵守以下三条:

  1. 步骤不可跳 — 感觉没必要时仍要执行,这是防错机制而不是形式
  2. 有专属文档的功能先读文档 — 通用知识在本系统大概率是错的,文档记录的是实测验证的行为
  3. 系统特定的值必须问 — 无法从当前上下文确认的参数(规则 Code、报表编码、业务 ID 等),直接告知用户"需要您提供 X",不要猜测

第 2 条的执行方式(强制): 遇到不确定某功能在哪里配置时,先在 SKILL.md 末尾的参考文档列表中找到对应的 references/ 文件并读取,再执行任何 API 操作。参考文档列表覆盖了所有专属功能,是权威索引。


临时配置文件规则(强制)

所有传给脚本的 --config 必须放在 {系统临时目录}/jeecg-desform/ 下,由操作系统自动清理;skill 与脚本均不主动删除该目录或文件。

tempfile.gettempdir() 自动适配各平台:Windows %TEMP%、Linux /tmp、macOS /var/folders/.../T(注意 macOS 并非 /tmp)。文件名建议使用 _.json(如 sk_audit_create.json),路径已含技能名称无需重复前缀。

场景一:Claude 用 Write 工具写文件后调脚本(最常见)

Write 工具需要绝对路径,所以必须先通过公共脚本拿到路径。脚本一次完成「定位系统临时目录 → 创建技能子目录 → 返回路径」:

# 取目录
python "/scripts/skill_temp_path.py"
# → C:\Users\xxx\AppData\Local\Temp\jeecg-desform

# 直接拿完整文件路径(推荐)
python "/scripts/skill_temp_path.py" -f sk_audit_create.json
# → C:\Users\xxx\AppData\Local\Temp\jeecg-desform\sk_audit_create.json

得到路径后:

  1. Write 工具将 JSON 写入该路径
  2. 调脚本 --config

会话内目录可复用——首次取到后缓存到上下文,后续临时文件直接拼接同一前缀,不必每次重新调用脚本。

场景二:技能内的 Python 脚本自行写中间文件

skill 自己的脚本(desform_creator.py 等)在脚本进程内写文件时,不要通过 Write 工具,直接用 tempfile

import tempfile, os, json

skill_dir = os.path.join(tempfile.gettempdir(), "jeecg-desform")
os.makedirs(skill_dir, exist_ok=True)          # 确保目录存在,不主动检查

config_path = os.path.join(skill_dir, 'sk_audit_create.json')
with open(config_path, 'w', encoding='utf-8') as f:
    json.dump(cfg, f, ensure_ascii=False, indent=2)

❌ 禁止

  • 写到 /tmp/ 或当前工作目录(污染 skill / 用户项目)
  • 硬编码 /tmpC:\Temp 或任何固定路径(不跨平台)
  • 每步完成后主动 rm / Remove-Item(操作系统会清理,属多余 tool call)
  • 主动 os.path.exists() 检查(其本身即为一次 tool call)

os.makedirs(…, exist_ok=True)skill_temp_path.py 都已隐式建目录,无需另外检查)

文件丢失补救

临时文件可能被操作系统异步清理,但仍遵循 乐观调用 + 报错补救:仅当脚本返回 FileNotFoundError配置文件不存在 时,使用相同内容、在相同的 {系统临时目录}/jeecg-desform/ 路径下重写(重写前重新调一次 skill_temp_path.pyos.makedirs(skill_dir, exist_ok=True) 确保目录存在),切勿更换路径或回退至 skill 目录。


lowApp 模式(敲敲云 / 零代码模式)

当用户提及以下任一场景时,必须先阅读 references/desform-lowapp.md,再执行任何操作

  • 用户说「工作表」(而非「表单」)
  • 用户说「在 xxx 应用下」「应用里」「某个应用中」
  • 用户说「敲敲云」「零代码」「lowApp」
  • 用户提到「组织」「租户」(作为操作对象,而非系统权限配置)

lowApp 模式下:

  • 表单设计器表单 = 工作表(概念同,名称不同)
  • 需要「组织(租户)+ 应用」两级上下文
  • 初始化用 init_lowapp不是 init_api
  • 初始化后,create_formadd_widget 等所有表单操作函数无需修改,自动生效
  • 详细说明见 references/desform-lowapp.md(概念+流程)和 references/desform-lowapp-utils.md(函数导入方式与完整说明)

前置条件

用户必须提供以下信息(或由 AI 引导确认):

  1. API 地址:JeecgBoot 后端地址(如 https://boot3.jeecg.com/jeecgboot
  2. X-Access-Token:JWT 登录令牌(从浏览器 F12 获取)

如果用户未提供,提示: > 请提供 JeecgBoot 后端地址和 X-Access-Token(从浏览器 F12 → Network → 任意请求的 Request Headers 中复制)。

API 初始化(统一入口)

所有 Python 操作前都需要先初始化 API 连接。init_api 只存在于 desform_utils.py 中,其他模块(如 desform_data_utils.py)不包含此函数——错误导入会导致 ImportError。

import sys
sys.path.insert(0, r'/scripts')
from desform_utils import init_api
init_api('', '')

后续按需从各模块导入函数,查阅函数详细说明时: 先 grep 函数名定位行号,再用 offset+limit 读取对应章节,不要全量阅读文档。

# 示例:查 update_design_config 的用法
grep -n "## update_design_config" references/desform-python-utils.md
# 得到行号后:Read 该文件,offset=, limit=40

desform_utils 函数速查表

完整函数列表见 references/desform-python-utils.md;列表视图函数见 references/desform-list-view.md

| 函数 | 适用场景 | |------|---------| | 表单生命周期 | | | check_code_available(code) | 新建前校验编码唯一性 | | create_form(name, code, widgets, ...) | 一站式创建表单(查找/创建→保存设计→同步权限) | | update_form(code, widgets, ...) | 整体重设计已有表单 | | update_design_config(code, config_updates) | 只改配置不改控件(发布/通知/打印/业务规则等) | | query_form(code) | 查询表单完整信息(含设计JSON) | | get_form_fields(form_code) | 获取所有字段的 model/key/type 映射 | | 字段级操作 | | | add_widget(code, widget_or_widgets) | 追加字段到已有表单末尾 | | update_widget(code, changes, *, key=None, model=None) | 修改字段属性(优先传 key=) | | delete_widget(code, *, key=None, model=None) | 删除字段(优先传 key=) | | 设计JSON预处理 | | | export_design_json(code, output_path) | 导出设计JSON到文件(用于手动修改场景) | | save_design_from_file(code, file_path) | 将修改后的文件保存回后台 | | extract_field_table_from_design(design_json) | 从设计JSON提取字段参照表(不调用API) | | 工具 | | | query_dict(dict_code) | 查询字典项列表 | | search_dict(keyword) | 按名称/编码模糊搜索字典 | | gen_menu_sql(parent_name, children, ...) | 生成菜单和角色授权SQL |

主数据复用规则

表单字段配置字典、选人、选部门等数据源时,遵循"先查后建"原则——先查系统是否已有该字典/角色/部门,避免重复创建。

> 使用 jeecg-system skill 的 system_utils.py 查询和管理主数据,详见 jeecg-system 技能。


创建表单

1. 解析用户需求

从用户描述中提取:表单名称、表单编码(英文命名,模块名前缀)、字段列表、字段属性。

布局选择规则: 默认使用普通布局(auto/half/full),不要主动使用 Word 风格。只有当用户明确要求时才使用 layout: "word"——例如用户说"Word风格"、"表格边框样式"、"像Word文档那样"等。即使表单是审批单、申请表等看起来适合 Word 风格的场景,也不要自行判断使用 Word 风格,而是让用户来决定。

编码唯一性校验(新建表单时):

创建新表单时,生成 desformCode 后立即执行编码校验,在校验通过前不要展示摘要让用户确认。原因:用户确认摘要后会期望直接执行成功,如果执行时才发现编码冲突,体验很差,且可能意外覆盖已有表单数据。

from desform_utils import init_api, check_code_available
init_api('', '')
result = check_code_available('')  # 只接受 1 个参数
# True → 编码可用  |  False → 已占用,自动换一个编码重试

2. 识别字段并选择控件类型

根据用户描述的关键词(也可能是图片),匹配对应的控件 type——下方自动注入的索引表已含「关键词 → 控件」映射WIDGET_OPTIONS_INDEX 区块的「关键词」列),直接据此选型。

【强制】确定控件类型后、配置其属性前,必须先阅读 references/desform-widget-options.md 中该控件对应的片段——按下方自动注入的行号索引表查到该控件的 offset / limit,直接 Read 只读那一段(该文档很长,禁止全量读,无需 grep)。原因:许多控件有非直觉的内置能力,只看 desform_utils.py 工厂函数的默认 options 会把它们当成"无用的空字段"漏掉——典型如 select-user/select-departkeyMaps(选人/选部门后自动回填工号、部门、职位、电话等关联字段,属于组件内置功能,无需 JS 增强)。不要凭训练知识假设某字段不存在或猜它的名字。

!python ${CLAUDE_SKILL_DIR}/scripts/gen_widget_options_index.py 2>/dev/null || echo '> (控件选项索引自动生成失败,请用 grep -n "## " references/desform-widget-options.md 定位行号后再 Read 该片段)'

对于 radio/select/checkbox 控件,支持静态选项(默认)和系统字典两种数据源。

> 详见 references/desform-dict-config.md — 字典配置方式、常用字典编码、Python 快捷函数用法。

对于 table-dict (表字典) 组件尤其必须阅读 references/desform-widget-options.md(按上方索引表定位 table-dict 片段),了解用法和限制后再使用,强制前提(不可跳过,不可替代)

⚠️ 选项颜色强制约束(radio / select / checkbox 的 itemColor): 系统前端硬编码了 20 个合法颜色值,设置 itemColor 时必须严格从这 20 个值中选取,禁止使用任何范围外的颜色(包括视觉上接近的近似色,如 #FF9800#FF9300#9C27B0#7500EA#F44336#F52222)。同时必须将 useColor 设为 true,否则颜色在甘特图/看板视图中不生效。 > 完整颜色表见 references/desform-widget-options.md 顶部「选项颜色合法值约束」章节(强制查阅,不可凭记忆填写颜色值)。

对于 select-tree (下拉树) 组件:用户未指定 categoryCode 时,直接使用默认值 "B02"禁止查询系统分类 API 或向用户询问。

3. 展示表单摘要并确认

展示以下内容,等待用户确认后再执行:

## 表单摘要
- 表单名称:{name}
- 表单编码:{code}(已通过校验)
- 目标环境:{API_BASE}

### 字段列表
| 序号 | 字段名称 | 控件类型 | 必填 | 说明 |
|------|---------|---------|------|------|
| 1 | ... | ... | ... | ... |

确认以上信息正确?(y/n)

4. 防覆盖检查

用户确认后、执行创建前,通过 get_form_id(code) 检查编码是否已存在。这是防止误覆盖的最后一道安全网——编码校验只检查当前时刻,而从校验到执行之间可能有其他人创建了同编码表单。

如果表单已存在:

  1. 告知用户:表单 {code} 已存在 (ID={id}),是否要覆盖更新?
  2. 用户确认后才执行覆盖(调用 update_form
  3. 用户拒绝覆盖时,基于原编码生成 3~5 个新编码供选择

5. 生成 JSON 并调用 API

使用 scripts/desform_creator.py + JSON 配置文件创建表单。这个脚本封装了完整的 JSON 构造逻辑(控件包裹、key/model 生成、跨控件引用等),比手动拼 JSON 更可靠,也更不容易出错。

⚡ 预处理优先原则(存在创建后需要修改的属性时):

执行创建前,先判断是否存在 JSON config 无法直接配置、但需要创建后额外操作的属性,常见场景包括:

  • 字段默认隐藏(hidden: true)—— JSON config 不支持此参数
  • 业务规则(bizRuleConfig
  • JS / CSS 增强代码
  • 控件深层嵌套属性的精确修改

如果存在以上任一需求,优先使用 --preprocess 模式,在一次创建流程内完成所有修改,避免创建后再调用 update_widget / update_design_config 等额外步骤。

> 详见本文档「设计 JSON 预处理 → 场景一:创建表单时预处理」章节。

执行前必须判断字段数量,选择正确方式——禁止在字段数 ≤50 时使用临时文件:

默认方式:常规表单(≤50 个字段) → stdin 管道,一条命令完成,无需临时文件:

echo '' | python "/scripts/desform_creator.py" --api-base  --token  --config -

仅当字段 >50 时 → 临时文件方式,避免管道传输大量数据时的稳定性问题:

  1. 根据「临时配置文件规则(强制)」章节,将 JSON 配置写到 {系统临时目录}/jeecg-desform/_create.json
  2. 执行脚本:python "/scripts/desform_creator.py" --api-base --token --config
  3. 不要主动删除该文件,操作系统会自动清理

> 详见 references/desform-json-config.md — JSON 配置格式、字段定义、子表说明、完整示例。

脚本自动处理的跨控件引用:

  • capital-money(大写金额):优先通过 JSON 中的 moneyField(字段中文名)解析关联目标,未指定时兜底查找前面最近的 money/formula/summary 控件。当大写金额与目标字段不相邻时,必须显式传入 moneyField
  • summary(汇总)linkTable(子表中文名)和 field(子表列中文名)自动解析为实际 model;filter.rules 中的 field 也支持中文名自动解析
  • formula(公式)表达式:支持使用字段中文名作为占位符(如 $预算总额$),自动解析为实际 model
  • Word 布局下的 divider(分隔符):自动包裹在 span=24isWordStyle=true 的 grid 容器中

> 脚本已自动处理 JSON 结构规则(card 容器、key/model 生成、className/icon、控件跨引用等)。如需排查或手动构造,详见 references/desform-design-json-schema.md

> 多表互相关联场景(2+ 个表单通过 link-record 互相引用):阅读 references/desform-cross-form-binding.md,采用"先建表后关联"策略。

降级方案: 如果脚本执行失败,先向用户说明失败原因,经用户确认后可降级为手动构造 JSON。 > 详见 references/desform-fallback-manual-json.md — 手动构造 desformDesignJson 的完整指南。

6. 检查结果与权限

  • success: true → 表单创建成功,脚本会自动创建字段权限
  • success: false → 输出错误信息,参见 references/desform-api-notes.md 错误处理表
  • 权限创建失败不会阻断主流程(仅输出警告),可用 scripts/desform_auth_retry.py --api-base --token --code 重试

7. 输出结果

## 表单创建成功
- 表单ID:{id}
- 表单名称:{desformName}
- 表单编码:{desformCode}
- 目标环境:{API_BASE}

请在表单设计器中查看:打开 JeecgBoot 后台 → 表单设计器 → 找到该表单

同时输出菜单 + 角色授权 SQL(用于将表单设计器加入系统菜单)。

> 详见 references/desform-menu-sql.md — genmenusql 调用方式、输出格式、SQL 字段说明、本地自动执行规则。

api_basehttp://127.0.0.1http://localhost 开头时,通过 MySQL CLI 自动执行菜单 SQL。


更新已有表单

所有更新相关的函数详见 references/desform-python-utils.md

更新流程

  1. 获取现有表单信息:get_form_fields(code)
  2. 分析用户需求,确定操作类型(添加/修改/删除/整体重设计)
  3. 展示变更摘要(新增/修改/删除的字段列表),等待用户确认
  4. 执行操作
  5. 自动同步权限

整体重设计

如果用户要全面修改已有表单:

  1. 查询现有表单设计 JSON:query_form(code)get_form_fields(code)
  2. 根据用户需求重新组装控件列表
  3. 调用 update_form(code, new_widgets) 保存(自动获取 updateCount

字段级操作

如果用户只是添加/修改/删除个别字段:

  • 添加字段add_widget(code, widget) — 向已有表单追加控件
  • 修改字段属性update_widget(code, changes_dict, *, key=None, model=None) — 修改指定控件属性,优先传 key=
  • 删除字段delete_widget(code, *, key=None, model=None) — 删除指定控件,优先传 key=
  • 操作后自动同步权限:sync_auth(code, design_list, form_id)

设计 JSON 预处理

当脚本能力不足以满足需求时(例如创建后还需要精确修改某个控件的嵌套属性),可以使用预处理模式——让脚本把生成的设计 JSON 输出到临时文件,AI 用文本工具手动修改后再统一保存。

场景一:创建表单时预处理

正常创建命令加 --preprocess 参数(管道符和临时文件方式均支持):

echo '' | python "/scripts/desform_creator.py" \
    --api-base  --token  --config - --preprocess

脚本会:

  1. 在后台创建表单实体(获得 form_id),但跳过保存设计 JSON
  2. 将生成的设计 JSON 写入临时文件(格式化缩进)
  3. 打印所有字段的标题 / key / model 参照表

AI 使用 Read/Edit/Write 工具修改临时文件,完成后调用保存:

from desform_utils import init_api, save_design_from_file
init_api('', '')
save_design_from_file('', r'')

场景二:修改已有表单时预处理

from desform_utils import init_api, export_design_json, save_design_from_file
init_api('', '')

# 1. 导出当前设计 JSON,同时打印字段参照表
file_path, field_rows = export_design_json('')

# 2. 使用 Read/Edit/Write 工具修改 file_path 中的内容

# 3. 保存修改后的设计 JSON
save_design_from_file('', file_path)

复制表单

copy_form(source_code, new_code) 可快速复制已有表单的设计 JSON 创建新表单。适用于基于现有表单创建类似表单(如复制"请假申请"改造为"出差申请")。

流程:

  1. 用户提供源表单编码和新表单编码
  2. 校验新编码可用性(check_code_available(new_code)
  3. 调用 copy_form(source_code, new_code) 完成复制
  4. 如需修改,使用 update_form 或字段级操作调整

删除表单

delete_form 已封装完整的删除流程(查找 → 逻辑删除 → 物理删除),支持传 code 或 ID。

> 详见 references/desform-api-notes.md — 删除流程、注意事项。

视图类型说明(消歧)

desform 有两种完全独立的视图概念:

| 类型 | 控制内容 | 触发关键词 | |------|---------|-----------| | 列表视图 | 数据记录在列表页如何展示(表格/看板/日历/甘特图) | 用户直接说"视图"、"新建视图"、"看板"、"日历"、"甘特图"等 | | 表单视图 | 填报表单时字段的布局和显示方式(PC/移动端) | 用户明确说"表单视图"、"移动端视图"、"移动视图" |

默认规则:用户说"视图"时,默认理解为列表视图。只有明确提到"表单视图"或"移动视图/移动端视图"时,才处理表单视图。


列表视图

列表视图控制数据记录在列表页的展示方式,支持四种类型:

| 类型 | 说明 | 必要配置 | |------|------|---------| | 表格 | Table 组件逐行显示,最常规 | 无 | | 看板 | 按字段值分列展示卡片(也称卡片视图) | 分组字段(限单选/下拉/人员/表字典/关联记录单条) | | 日历 | 数据挂载到日历显示 | 至少 1 个日期字段;可选开始+结束;可多组 | | 甘特图 | 时间线任务展示 | 1 个开始日期 + 1 个结束日期(均必填) |

> 注意:创建表单时系统会自动生成一个默认的表格列表视图,无需主动调用视图创建方法。只有用户明确要求"创建看板"、"添加日历视图"、"新增甘特图"等时,才需要操作列表视图。

> 详见 references/desform-list-view.md — 各视图类型字段规则、操作方式


表单视图

创建表单视图(PC 表单视图、移动端表单视图)时,优先使用 scripts/desform_view_creator.py 通用脚本,支持复制主表单视图或自定义字段两种模式。

> 详见 references/desform-view-config.md — 创建流程、JSON 配置格式、移动端优化规则、踩坑汇总。

自定义动作(自定义按钮 + 自定义规则)

> 当用户说"自定义按钮"、"添加按钮"、"视图按钮"、"自定义动作"、"zdyan"、"删除规则"、"控制删除"时触发本章节。

自定义动作包含两类:

  • 自定义按钮:通过独立的 /desform/button/* API 管理
  • 自定义规则:目前只有删除规则,通过 PUT /desform/view/updateViewConfigcustomRules 字段配置,控制用户能否删除记录

> 详见 references/desform-custom-button.md — 删除规则完整结构与示例、自定义按钮数据结构、三种动作模式、显示条件、颜色预设、API 列表、Python 用法、工作流关联说明。

操作流程:

  1. 查询已有按钮(list_buttons),了解当前配置
  2. 展示变更摘要,等待用户确认
  3. 调用相应函数执行(函数列表见 references/desform-custom-button.md 的"Python 工具函数"章节)

关于工作流(重要):

  • clickThen='form' + flowStatus=False完全可以纯 API 完成,无需工作流
  • clickThen='execute''confirm'(必须触发工作流):创建按钮后会得到 processId,工作流节点内容需同时使用 jeecg-lowcode-miniflow 技能配置

功能开关(零代码应用专属)

> 触发场景:当用户在零代码应用(工作表)语境下,说到以下任意情况时,立即阅读 references/desform-switch-setting.md: > > - 控制某功能是否显示/可用:「不让用户创建记录」「隐藏创建按钮」「禁用导入」「关掉批量操作」「关闭批量删除」「关闭分享」「禁止下载附件」「隐藏评论」「禁用打印」 > - 限制使用范围:「只有管理员才能 XX」「XX 功能只在某个视图显示」「限制某功能的可见范围」 > - 直接说功能开关:「功能开关」「开关设置」「switchSetting」 > > 注意:功能开关仅在零代码应用的工作表中存在,普通表单设计器没有此功能。函数位于 desform_lowapp_utils,需 init_lowapp 初始化(非 init_api)。

操作流程:

  1. 阅读 references/desform-switch-setting.md,确认目标 code 和配置值
  2. 调用 get_switch_settings(code) 查看当前状态(可选,直接构造也可)
  3. 构造配置对象,注意父子联动规则(BATCH_ACTION 变更时需同时传所有子级)
  4. 调用 save_switch_settings(code, items) 保存(函数导入方式见 references/desform-lowapp-utils.md,需 init_lowapp 初始化)

表单数据操作(CRUD)

对已有表单进行数据新增、查询、编辑、删除。

> 详见 references/desform-data-utils.md — 函数导入方式、完整函数列表和用法。

数据新增流程:

  1. 先获取字段 model 映射:get_form_fields(code) 返回 (titleField, {字段名: {model, key, type}, ...})
  2. 构造数据字典:key 为字段的 model(如 input_1774607211242_327900),value 为字段值
  3. 调用 add_data(code, data_dict) 提交

错误处理

> 详见 references/desform-api-notes.md — 完整错误处理表。


OA 审批应用一键生成(表单 + 流程 + 授权)

> 当用户说"创建审批单"、"创建报销单"、"做一个OA表单带流程"、"面试申请"、"请假申请"等,立即阅读 references/desform-oa-guide.md,其中包含完整的交互流程(Step 0–2)、JSON 配置格式、OA 专用字段类型、审批人类型、流程分支规则和常见模板。


一键生成积木报表(打印)

> 当用户说"给这个表单加积木报表打印"、"创建打印报表"、"desform 集成积木"、"一键生成打印模板"、"按字段生成打印报表"等,立即阅读 references/desform-jimureport.md,然后用 scripts/desform_jimureport.py 一键创建报表并关联到表单的 allowJmReport 打印。

脚本自动完成 5 步:创建空报表 → 保存 desform API 数据源 → 构造卡片打印模板(按 formStyle 适配 normal/word)→ 保存设计 → 回写表单 allowJmReport/jmReportURL

两个关键点(详见 reference):

  • 积木报表 API base 常与 desform 不同:desform 用 --api-base(如 :3100/jeecgboot),积木报表用 --jmreport-base(如 :8080/jeecg-boot);同体部署时只传 --api-base
  • 字段绑定用 ${dbCode.model}:desform 数据 API 返回的 JSON key = 控件 model,绑定/fieldName 都必须用 model(不是 key),否则打印值全空。

> 简单的"按字段排版打印"用本脚本即可,无需加载 jimureport 技能。仅当用户要高度定制报表(分组/交叉/图表/套打背景图等)时,才提示用户加载 jimureport 技能,并以 references/desform-jimureport.md 的 desform 数据 API 规范作为数据集来源。


参考文档

OA 审批应用

  • references/desform-oa-guide.md — OA 一键生成完整指南:交互步骤、JSON 配置格式、OA 专用字段类型、审批人类型、流程分支规则、常见模板(费用报销/请假/采购/出差)

脚本工具

| 脚本 | 用途 | |------|------| | scripts/desform_creator.py | 通用表单创建脚本,优先使用 | | scripts/desform_view_creator.py | 通用表单视图创建脚本(PC/移动端) | | scripts/desform_utils.py | 共通工具库(控件工厂、API 封装、布局引擎、字段权限) | | scripts/desform_data_utils.py | 数据操作工具库(CRUD、批量、回收站) | | scripts/desform_auth_retry.py | 字段权限重试(仅权限自动创建失败时使用) | | scripts/desform_button_utils.py | 自定义按钮操作工具库(增删改查、视图绑定、排序) | | scripts/desform_jimureport.py | 一键创建积木报表并关联表单打印(含删除/清除关联) | | scripts/skill_temp_path.py | 跨平台获取本技能临时目录/文件路径(写临时配置前必先调用,自动建目录) |

创建/更新表单时阅读

  • references/desform-json-config.md — JSON 配置格式、字段定义、子表说明、完整示例
  • references/desform-dict-config.md — 字典数据源配置(静态选项、系统字典、Python 用法)
  • references/desform-python-utils.md — desform_utils.py 使用指南、快捷函数、layout 参

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.