weaver-e10-builder 1.1.3 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/commands/check.d.ts.map +1 -1
  2. package/dist/commands/check.js +48 -15
  3. package/dist/commands/check.js.map +1 -1
  4. package/dist/commands/designer-common.d.ts +56 -0
  5. package/dist/commands/designer-common.d.ts.map +1 -0
  6. package/dist/commands/designer-common.js +165 -0
  7. package/dist/commands/designer-common.js.map +1 -0
  8. package/dist/commands/designer-setters.d.ts +13 -0
  9. package/dist/commands/designer-setters.d.ts.map +1 -0
  10. package/dist/commands/designer-setters.js +593 -0
  11. package/dist/commands/designer-setters.js.map +1 -0
  12. package/dist/commands/designer.d.ts +17 -0
  13. package/dist/commands/designer.d.ts.map +1 -0
  14. package/dist/commands/designer.js +448 -0
  15. package/dist/commands/designer.js.map +1 -0
  16. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  17. package/dist/commands/form-add-detail-table.js +59 -0
  18. package/dist/commands/form-add-detail-table.js.map +1 -1
  19. package/dist/commands/form-association.d.ts.map +1 -1
  20. package/dist/commands/form-association.js +3 -2
  21. package/dist/commands/form-association.js.map +1 -1
  22. package/dist/commands/form-button.d.ts.map +1 -1
  23. package/dist/commands/form-button.js +86 -1
  24. package/dist/commands/form-button.js.map +1 -1
  25. package/dist/commands/form-data.d.ts.map +1 -1
  26. package/dist/commands/form-data.js +13 -1
  27. package/dist/commands/form-data.js.map +1 -1
  28. package/dist/commands/form-ebuilder-scope.js +3 -3
  29. package/dist/commands/form-ebuilder-scope.js.map +1 -1
  30. package/dist/commands/form-formula.js +4 -4
  31. package/dist/commands/form-formula.js.map +1 -1
  32. package/dist/commands/form-list-click.d.ts.map +1 -1
  33. package/dist/commands/form-list-click.js +30 -2
  34. package/dist/commands/form-list-click.js.map +1 -1
  35. package/dist/commands/form-list-filter.js +1 -1
  36. package/dist/commands/form-list-filter.js.map +1 -1
  37. package/dist/commands/form-list-hierarchy.d.ts +3 -0
  38. package/dist/commands/form-list-hierarchy.d.ts.map +1 -0
  39. package/dist/commands/form-list-hierarchy.js +133 -0
  40. package/dist/commands/form-list-hierarchy.js.map +1 -0
  41. package/dist/commands/form-list-permission.d.ts.map +1 -1
  42. package/dist/commands/form-list-permission.js +17 -3
  43. package/dist/commands/form-list-permission.js.map +1 -1
  44. package/dist/commands/form-list.d.ts.map +1 -1
  45. package/dist/commands/form-list.js +2 -0
  46. package/dist/commands/form-list.js.map +1 -1
  47. package/dist/commands/form-native.d.ts.map +1 -1
  48. package/dist/commands/form-native.js +13 -1
  49. package/dist/commands/form-native.js.map +1 -1
  50. package/dist/commands/form-nlist.d.ts.map +1 -1
  51. package/dist/commands/form-nlist.js +47 -15
  52. package/dist/commands/form-nlist.js.map +1 -1
  53. package/dist/commands/form-option-template.d.ts +3 -0
  54. package/dist/commands/form-option-template.d.ts.map +1 -0
  55. package/dist/commands/form-option-template.js +291 -0
  56. package/dist/commands/form-option-template.js.map +1 -0
  57. package/dist/commands/form-permission.d.ts.map +1 -1
  58. package/dist/commands/form-permission.js +214 -2
  59. package/dist/commands/form-permission.js.map +1 -1
  60. package/dist/commands/form-view.d.ts.map +1 -1
  61. package/dist/commands/form-view.js +23 -1
  62. package/dist/commands/form-view.js.map +1 -1
  63. package/dist/commands/form.d.ts.map +1 -1
  64. package/dist/commands/form.js +259 -59
  65. package/dist/commands/form.js.map +1 -1
  66. package/dist/commands/icon.d.ts.map +1 -1
  67. package/dist/commands/icon.js +9 -13
  68. package/dist/commands/icon.js.map +1 -1
  69. package/dist/commands/menu-permission.d.ts.map +1 -1
  70. package/dist/commands/menu-permission.js +19 -12
  71. package/dist/commands/menu-permission.js.map +1 -1
  72. package/dist/commands/page.d.ts +14 -0
  73. package/dist/commands/page.d.ts.map +1 -0
  74. package/dist/commands/page.js +175 -0
  75. package/dist/commands/page.js.map +1 -0
  76. package/dist/commands/wf-form.js +1 -1
  77. package/dist/commands/wf-form.js.map +1 -1
  78. package/dist/commands/workflow-condition.js +9 -8
  79. package/dist/commands/workflow-condition.js.map +1 -1
  80. package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
  81. package/dist/commands/workflow-node-overtime.js +16 -8
  82. package/dist/commands/workflow-node-overtime.js.map +1 -1
  83. package/dist/commands/workflow-node.d.ts.map +1 -1
  84. package/dist/commands/workflow-node.js +35 -5
  85. package/dist/commands/workflow-node.js.map +1 -1
  86. package/dist/commands/workflow-numbering.d.ts.map +1 -1
  87. package/dist/commands/workflow-numbering.js +63 -30
  88. package/dist/commands/workflow-numbering.js.map +1 -1
  89. package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
  90. package/dist/commands/workflow-operator-sign.js +2 -1
  91. package/dist/commands/workflow-operator-sign.js.map +1 -1
  92. package/dist/commands/workflow.d.ts.map +1 -1
  93. package/dist/commands/workflow.js +78 -38
  94. package/dist/commands/workflow.js.map +1 -1
  95. package/dist/core/client.d.ts +9 -0
  96. package/dist/core/client.d.ts.map +1 -1
  97. package/dist/core/client.js +16 -1
  98. package/dist/core/client.js.map +1 -1
  99. package/dist/index.js +6 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  102. package/dist/services/actionflow/preflight_service.js +40 -17
  103. package/dist/services/actionflow/preflight_service.js.map +1 -1
  104. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  105. package/dist/services/actionflow/workflow_compiler.js +4 -2
  106. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  107. package/dist/services/form-button-action.d.ts +17 -0
  108. package/dist/services/form-button-action.d.ts.map +1 -0
  109. package/dist/services/form-button-action.js +111 -0
  110. package/dist/services/form-button-action.js.map +1 -0
  111. package/dist/services/form-create.d.ts +15 -1
  112. package/dist/services/form-create.d.ts.map +1 -1
  113. package/dist/services/form-create.js +42 -8
  114. package/dist/services/form-create.js.map +1 -1
  115. package/dist/services/form-list-stats.d.ts.map +1 -1
  116. package/dist/services/form-list-stats.js +29 -6
  117. package/dist/services/form-list-stats.js.map +1 -1
  118. package/dist/services/form-nlist.d.ts +8 -2
  119. package/dist/services/form-nlist.d.ts.map +1 -1
  120. package/dist/services/form-nlist.js +32 -7
  121. package/dist/services/form-nlist.js.map +1 -1
  122. package/dist/services/form-sub-detail.d.ts +36 -0
  123. package/dist/services/form-sub-detail.d.ts.map +1 -0
  124. package/dist/services/form-sub-detail.js +132 -0
  125. package/dist/services/form-sub-detail.js.map +1 -0
  126. package/dist/services/form-view.d.ts +6 -0
  127. package/dist/services/form-view.d.ts.map +1 -1
  128. package/dist/services/form-view.js +24 -0
  129. package/dist/services/form-view.js.map +1 -1
  130. package/dist/services/workflow-operator.d.ts +9 -0
  131. package/dist/services/workflow-operator.d.ts.map +1 -1
  132. package/dist/services/workflow-operator.js +33 -0
  133. package/dist/services/workflow-operator.js.map +1 -1
  134. package/package.json +1 -1
  135. package/skill-docs/SKILL.md +28 -46
  136. package/skill-docs/assets/factory/chart-dimensions.json +536 -0
  137. package/skill-docs/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  138. package/skill-docs/assets/factory/example-configured-2.json +13805 -0
  139. package/skill-docs/assets/factory/example-configured.json +6735 -0
  140. package/skill-docs/assets/factory/factory-bar-stack.json +326 -0
  141. package/skill-docs/assets/factory/factory-bar.json +222 -0
  142. package/skill-docs/assets/factory/factory-bubble.json +322 -0
  143. package/skill-docs/assets/factory/factory-calendar.json +325 -0
  144. package/skill-docs/assets/factory/factory-circular.json +320 -0
  145. package/skill-docs/assets/factory/factory-collapse-panel.json +132 -0
  146. package/skill-docs/assets/factory/factory-comment.json +388 -0
  147. package/skill-docs/assets/factory/factory-count-down.json +198 -0
  148. package/skill-docs/assets/factory/factory-digital-panel.json +108 -0
  149. package/skill-docs/assets/factory/factory-eb-button.json +150 -0
  150. package/skill-docs/assets/factory/factory-fast-create.json +62 -0
  151. package/skill-docs/assets/factory/factory-gauge.json +312 -0
  152. package/skill-docs/assets/factory/factory-h-bar-stack.json +328 -0
  153. package/skill-docs/assets/factory/factory-h-bar.json +326 -0
  154. package/skill-docs/assets/factory/factory-line.json +212 -0
  155. package/skill-docs/assets/factory/factory-nav-bar.json +167 -0
  156. package/skill-docs/assets/factory/factory-nav-menu.json +144 -0
  157. package/skill-docs/assets/factory/factory-nav-panel.json +338 -0
  158. package/skill-docs/assets/factory/factory-new-tab.json +163 -0
  159. package/skill-docs/assets/factory/factory-nightingale.json +312 -0
  160. package/skill-docs/assets/factory/factory-nlist.json +112 -0
  161. package/skill-docs/assets/factory/factory-page-header.json +171 -0
  162. package/skill-docs/assets/factory/factory-picture.json +169 -0
  163. package/skill-docs/assets/factory/factory-pie.json +212 -0
  164. package/skill-docs/assets/factory/factory-progress-chart.json +162 -0
  165. package/skill-docs/assets/factory/factory-search-global.json +104 -0
  166. package/skill-docs/assets/factory/factory-slide.json +164 -0
  167. package/skill-docs/assets/factory/factory-treemap.json +322 -0
  168. package/skill-docs/assets/icons.db +0 -0
  169. package/skill-docs/references/coding/guide-page-code.md +21 -1
  170. package/skill-docs/references/coding/ref-compile-rules.md +24 -0
  171. package/skill-docs/references/common/guide-plan-template.md +219 -201
  172. package/skill-docs/references/common/ref-cli-commands.md +366 -320
  173. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +110 -0
  174. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -0
  175. package/skill-docs/references/ebuilder-designer/guide-designer-version.md +111 -0
  176. package/skill-docs/references/ebuilder-designer/guide-designer.md +287 -0
  177. package/skill-docs/references/form/guide-create-form.md +464 -409
  178. package/skill-docs/references/form/guide-form-button.md +82 -54
  179. package/skill-docs/references/form/guide-form-view.md +299 -284
  180. package/skill-docs/references/workflow/guide-workflow.md +59 -0
@@ -1,320 +1,366 @@
1
- # e10-cli 命令参考
2
-
3
- > **所有系统交互统一使用 `e10-cli`**。auth 文件自动查找,也可 `--auth <path>` 指定。加 `--json` 输出 JSON 格式。
4
-
5
- ---
6
-
7
- ## 工具
8
-
9
- | 命令 | 说明 |
10
- |------|------|
11
- | `e10-cli docx read <文件>` | 解析 Word 文档为 markdown + 提取图片到 `_images/`。**禁止自己写 python-docx 脚本** |
12
-
13
- ---
14
-
15
- ## Ecode 项目操作
16
-
17
- | 命令 | 说明 |
18
- |------|------|
19
- | `e10-cli project create <name> [desc]` | 新建 Ecode 项目(名称自动追加时间戳) |
20
- | `e10-cli project import <projectId> <zip> --main-url <url>` | 导入 zip 包,`--main-url` **必填** |
21
- | `e10-cli project tree <parentId>` | 查看目录结构 |
22
- | `e10-cli project read <fileId>` | 读取代码文件内容 |
23
- | `e10-cli project update <fileId> <content>` | 更新代码文件(content 以 `@` 开头则为文件路径) |
24
- | `e10-cli project create-file <name> <parentId> [type]` | 新建代码文件(默认 js) |
25
- | `e10-cli project create-folder <name> <parentId>` | 新建文件夹 |
26
- | `e10-cli project delete-file <fileId>` | 删除代码文件 |
27
- | `e10-cli project delete-folder <folderId>` | 删除文件夹(= 删除应用) |
28
-
29
- - 导入成功后会在 Ecode 项目下生成应用文件夹
30
- - 二次导入之前先删掉旧应用文件夹(通过 `e10-cli project tree` 找到 folderId)
31
-
32
- ---
33
-
34
- ## Ebuilder 应用 & 表单
35
-
36
- | 命令 | 说明 |
37
- |------|------|
38
- | `e10-cli app create <name> [desc]` | 新建 Ebuilder 应用(scope=PC_MOBILE,INTERNAL 类型)。`--json` 输出 `{id,name}` |
39
- | `e10-cli app list [--name <关键词>]` | 查询应用列表(扁平 id/name/description) |
40
- | `e10-cli app folder [--type 1/2/3]` | 查看应用目录结构(文件夹+应用树,含发布状态)。1=我管理的/2=我创建的/3=全部 |
41
- | `e10-cli app read <appId>` | 查看应用**详情**(全量配置:名称/描述/简称/范围/目录/组织/发布状态)。`--json` 输出完整对象。走 `/app/info` |
42
- | `e10-cli app edit <appId> [--name] [--desc] [--short-name]` | 编辑应用信息(至少指定一个写参数;内部先读 `/app/info` 再合并提交) |
43
- | `e10-cli app delete <appId>` | 删除应用(软删除,可恢复;存在关联资源会提示先清理) |
44
- | `e10-cli form read <objId> [--app-id <appId>] [--out <file>]` | 读取表单字段。`--app-id` 含明细表字段+Select/RadioBox/CheckBox 选项;`--out fields.json` 写 UTF-8 JSON(推荐,机器可读)。旧版 `[dir]` 参数写 memo.md,已过时 |
45
- | `e10-cli form read <objId> --app-id <appId> --out fields.json` | 读取字段含选项(Select/RadioBox/CheckBox 自动带 options)。**含明细表字段**,配动作流/联动拿明细 fieldId 用这个 |
46
- | `e10-cli form list <appId>` | 列出应用下的所有表单 |
47
- | `e10-cli form create <appId> <name> <dir> --fields @<json文件>` | 创建表单。`--fields` **必填**。支持 DetailTable(嵌套formFields)、EBuilder(sformId+dataTitle)、relateFrom(联动)。fields.json 字段可带 `"required":true`/`"readOnly":true` 直标(写进布局 comps)。**默认不加菜单**,要入口传 `--menu`(台账菜单 VIEWPORT);漏加 `e10-cli menu add-table <appId> <objId>` 补 |
48
- | `e10-cli form add-field <objId> <appId> <name> <type> [title]` | 添加字段。`<type>`=componentKey(Text/Select/Employee/Money/DetailTable 等同 form create);`[title]` 字段显示名,不传同 name。Select 类型需单独 `field-options` 配选项。**`--sub-form-id <明细表subFormId>` 在明细表里加字段**(自动重新布局)。Number 类型:**`--percent` 百分比显示**(numberType=percentage,缺省 1 位小数)、**`--default <值>` 默认值**(如 `--default 1000` 工时单价默认 1000)、`--precision <n>` 精度。**EBuilder/Flow 类型**:`--sform-id <目标表单objId>`(EBuilder 表关联 / Flow 浏览-流程字段,数据来源=浏览流程)。EBuilder 字段**自动配关联浏览弹窗显示列**(=目标表全部业务字段,去系统字段)。**`--multiple` 多选**(人员/部门/EBuilder/Browser 默认单选;**下拉 Select --multiple → SelectMultiple 类型**)。**`--max-len <n>` 文本最大长度**(Text 缺省 100、TextArea 缺省 4000)。**`--single-row` 独占一行显示** |
49
- | `e10-cli form edit-field <objId> <appId> <fieldId>` | 编辑字段属性。`--title`/`--required`/`--no-required`/`--sform-id`(改EBuilder关联)/`--relate-from`(值带出)/**`--multiple`/`--no-multiple`**(人员/部门/EBuilder/Browser 多选切换) |
50
- | `e10-cli form serial-mark set <objId> <appId> <fieldId> --segments @<json>` | **表单编号**(纯建模表):用 JSON 数组组合任意编号规则,数组顺序即拼接顺序。段类型 `fixed`/`year`/`serial`/`field`/`system`/`date`;field 段可 inline `shortName` 代字映射。子命令组:`set`(配置,--segments) / `add-segment`(增量追加段) / `short-name`(代字 list/set) / `read`(查看) / `fields`(查可绑定字段) / `clear`(解除)。被编码字段平台自动只读。**⚠ 仅对未绑流程的纯建模表有效——eb表单绑流程后表单编号字段在流程提交时不生效,编号改走流程编号(`workflow numbering`,落到 REQUEST_NO 系统字段)** |
51
- | `e10-cli form field-options <objId> <appId> <fieldId> --options @<json> [--default <key>]` | 设选项/默认值。options.json: `[{"name":"选项名","valueKey":"可选"}]`;`--default` 用平台生成的长 valueKey(`form read --app-id` 获取),不是 name |
52
- | `e10-cli form linkage add <appId> <objId> <name> --config @<json>` | 添加字段显隐联动规则 |
53
- | `e10-cli form relate <appId> <objId> <目标字段> --from <源字段>` | **HRM 值带出联动**:源字段为表内 Employee(人员)或 Department(部门)类型,换源自动填目标字段(换申请人→填邮箱/工号/部门;换所属部门→填部门编号/上级部门)。`--key` 从平台清单校验(默认 Employee=department、Department=name),`--title` 指定显示名(默认属性中文名)。详见 `form/guide-form-linkage.md` |
54
- | `e10-cli form delete <objId> <appId>` | 删除表单 |
55
- | `e10-cli form permission <list\|add\|remove\|rebuild> <objId> <appId>` | **表单数据权限**(谁能创建/查看/编辑/删除该表单数据)。`add --org-type <all/role/department/company/employee/group/post> --org-id <id> [--right-type 0创建/1查看/2编辑/3删除/5归档查看/6归档编辑/7归档删除] [--creator-related 0本人/1上级/5本岗位]`;all 类型 org-id 自动 0;添加后若提示 isShowRebuild=2 用 `rebuild` 重构。`list` 查看、`remove <id>` 删 |
56
- | `e10-cli form list-view <objId> <appId>` | 查看台账/数据列表(获取 viewId 用于菜单配置) |
57
- | `e10-cli form list-columns <objId> <appId> <listId> [--add <fieldId...>] [--remove <fieldId...>] [--set @columns.json] [--terminal pc/mobile] [--pc-only]` | 查看/批量设置台账显示列。增量追加、移除或整组指定顺序/列宽/格式;整组模式与增删互斥。支持主表和明细子字段,保留已有列未指定属性、事件及数据主键;一次保存并回读核对目标列和另一终端。详见 `references/form/guide-list-columns.md` |
58
- | `e10-cli form list-unit <objId> <appId> <listId> <fieldId> <后缀> [--prefix <前缀>] [--clear] [--pc-only]` | 设置台账列显示**单位**(后缀/前缀)。平台无字段级单位属性,靠列表列配置 `showTrans.ruleConfig.suffix/prefix` 实现。如 `form list-unit ... <fieldId> "(元)"` 让列显示单位;`--clear` 清除 |
59
- | `e10-cli form list-format <objId> <appId> <listId> <fieldId> [--thousandths] [--no-thousandths] [--decimal <n>] [--clear] [--pc-only]` | 查看/设置台账列**千分位/小数位**(Number/Money 列)。不加参数显示当前;`--thousandths` 开千分位(列 `format:"THOUSANDS"`)、`--no-thousandths` 关、`--decimal <n>` 小数位数(`decimalLength`)、`--clear` 清除恢复默认。与 `list-unit`(单位,走 `showTrans`)是两套不同机制。**自动保留移动端配置** |
60
- | `e10-cli form list-click <objId> <appId> <listId> <fieldId> [--target <formObjId>] [--open-mode <模式>] [--win-size <尺寸>] [--clear] [--pc-only]` | 设置台账列**点击跳转**(字段事件,eventGroup/NewPage):点该列数据跳目标表单视图(带该行数据 ID)。缺省跳本表单;`--target` 跳别的表单;`--open-mode` 打开方式:当前页面/新窗口/弹出窗口/右侧滑出(缺省)/右侧推出;`--win-size` 滑出/推出的宽度(缺省 800px,可传 % 如 50%);`--clear` 移除。区别于行事件 `list-event`(点整行) |
61
- | `e10-cli form ebuilder-columns <objId> <appId> <fieldId> [字段名/ID...] [--clear]` | 设置 EBuilder 关联字段的**浏览显示列**(存在字段配置 `ffDisplayColumns:{id,name}[]`)。**缺省查看**:列出当前显示列 + 目标表单全部**业务字段候选**(系统字段已自动过滤,不设显示列时浏览走平台默认列会带系统字段);**传目标表业务字段名/ID 设置**,系统字段会被拦截提示"系统字段不能设为显示列";`--clear` 清空。关联浏览显示哪些字段(只留业务字段) |
62
- | `e10-cli form ebuilder-scope <get\|set\|clear> <objId> <appId> <fieldId>` | **浏览数据定义 → 数据范围设置**(关联浏览字段,限定被关联数据须满足条件才可选,如关联客户只选"客户状态=启用"的)。走 `browserDataScope` 接口(独立于字段布局)。`set --rules '[{"field":"客户状态","operator":"eq","value":"启用"}]'`(选项类 value 用选项名,CLI 自动解析 valueKey);`--logic and/or` 多规则关系;`--fill-null` 关联字段为空时填充;`get` 读已设条件;`clear` 清空。**这是关联浏览筛选的正解**,旧 `ebuilder-filter` 走 layout/save 不被设计器识别 |
63
- | `e10-cli form validate list <objId> <appId>` | 查看表单**查重规则**(字段重复校验,多字段 AND)。`add <objId> <appId> <字段名...> [--help 提示] [--remind]` 新增(缺省禁止提交 NOSUBMISSION,`--remind` 仅提醒);`delete <objId> <appId> <ruleId>` 删除。项目名称重名/工时日期重复不允许 |
64
- | `e10-cli form list-search <objId> <appId> <listId> [--add <fieldId...>] [--quick <fieldId...>] [--remove <fieldId>] [--pc-only]` | 查看/配置台账**搜索条件**。`--add` 进搜索面板、`--quick` 加顶部快捷筛选(均支持多字段)、`--remove` 移除。主表字段直取 ds/fields;明细子字段自动 fallback `getFormField` 单取元数据。**自动保留移动端配置** |
65
- | `e10-cli form list-sort <objId> <appId> <listId> [--field <fieldId...>] [--order ASC\|DESC] [--clear] [--pc-only]` | 查看/配置台账**排序**。`--field` 支持多个(按传入顺序多级排序,`--order` 对所有字段生效)、`--clear` 清除。**自动保留移动端配置** |
66
- | `e10-cli form list-stats <objId> <appId> <listId> [--add <json或@文件>] [--remove <statId>] [--pc-only]` | 主表/明细顶部统计,sum/count/avg/max/min、条件及格式;明细 count 支持 `{ "type":"count", "subFormId":"..." }`。保存后回读、保护移动端;平台可能共享两端统计,输出 mobileStatistics。详见 `references/form/guide-list-stats.md` |
67
- | `e10-cli form list-stats detail <objId> <appId> <listId> <subFormId> [--fields <fieldId...>] [--name-prefix <文本>] [--pc-only]` | 为明细数值字段批量生成 sum 和一项子表 count;重复运行复用同名同配置项 |
68
- | `e10-cli form list-filter <objId> <appId> <listId> [--add '<json>'] [--clear] [--pc-only]` | 查看/配置**视图数据条件**(台账只显示满足条件的数据)。`--add '{"conditions":[{"fieldId":"...","func":"eq","value":"研发valueKey","text":"研发"}]}'`(func: eq 等于 / notEq 不等于 / in 属于 / notIn 不属于 / like 包含 / notLike 不包含 / gt 大于 / lt 小于 / between 介于 / isNull 为空 / isNotNull 不为空,单选 Select 用 eq;value 填选项 valueKey、text 填显示名;多条件默认 AND)、`--clear` 清空。走 saveNListConfig config.filter(明文条件树,非独立接口)。**自动保留移动端配置** |
69
- | `e10-cli form list-event <objId> <appId> <listId> [--add-page '<json>'] [--add-field '<json>'] [--open-mode <模式>] [--modal-width <pct>] [--modal-height <pct>] [--win-size <pct>] [--clear] [--pc-only]` | 查看/配置**行事件**(点击行数据 NewPage 打开表单布局)。`--add-page '{"pageId":"1/<objId>","pageName":"新建数据","openMode":"右侧滑出"}'` 选页面方式(pageId 缺省 `1/<objId>` 新建布局,`0/<objId>`=显示布局)、`--add-field '{"urlFieldId":"字段id"}'` 选字段方式(URL取自行内字段值,urlFieldText/Type自动补)、`--clear` 清空。**打开方式** `--open-mode`(或在 JSON 里写 `openMode`):当前页面/新窗口/弹出窗口/右侧滑出(缺省)/右侧推出;弹出/滑出/推出 用 `--modal-width`/`--modal-height`(缺省 50%),滑出/推出 用 `--win-size`(缺省 100%)。走 saveNListConfig config.eventGroup(明文 JSON,config+mConfig 都写)。**自动保留移动端配置** |
70
- | `e10-cli form list-group <objId> <appId> <listId> [--enable --group-field <fieldId> [--group-size N]] [--disable] [--pc-only]` | 查看/配置**启用分组**(台账按某字段分组聚合显示)。`--enable --group-field <分组字段id> [--group-size N 默认100]` 启用/换分组字段、`--disable` 禁用(保留 groupField/groupSize 仅 enable=false)。走 saveNListConfig config.enableGroup(对象,持久化,不走 layout/save LZW)。**自动保留移动端配置** |
71
- | `e10-cli form list-permission <objId> <appId> <listId> [--add-all] [--add-user <userId> --name <name>] [--add-role <roleId> [--name <name>]] [--add-matrix <矩阵id> --name <name>] [--share-level <n>] [--seclevel <min>-<max>] [--add-raw '<json>'] [--remove <id>] [--clear]` | 查看/配置**台账视图权限**(查阅/查看权限:谁能查看这个台账)。`--add-all` 所有人、`--add-user <userId> --name <name>` 人员、`--add-role <roleId>` **角色**(`--name` 缺省自动从角色树查名)、`--add-matrix <矩阵id> --name <name>` **矩阵**(自动取矩阵值字段建 matrixValueRelation 映射、type SELF 按当前用户匹配)、`--add-raw '<json>'` dept/company/post/group/matrix 等高级类型(整对象)。两条可配维度:`--share-level <n>` **共享级别**(roleLevel,实测 总部=1/分部=2/全部=3,同角色可不同级别各存一条)、`--seclevel <min>-<max>` **安全级别范围**(levelScope,如 0-100)。幂等:同级别已存在跳过。`--remove <id>` 移除一条、`--clear` 清空。走 list/permission/save + getList(专用端点,full-replace 语义 omit即删,头 ebBusinessId+enableTrans:0)。
72
- | `e10-cli form list-search-group <objId> <appId> <listId> [--add <fieldId>] [--remove <fieldId>] [--clear] [--pc-only]` | 查看/配置**分类搜索**(按选项字段分类筛选)。`--add <选项字段fieldId>`(须已在显示列)、`--remove <fieldId>`、`--clear`。走 saveNListConfig config.searchConditions.groupFilters(视图级明文)。**仅主表选项类字段 Select/RadioBox/CheckBox,不支持明细字段(产品边界,传明细报错)**。listGroupSets 留空由平台运行时生成 |
73
- | `e10-cli form view list <objId> <appId> [--with-comps]` | 列出表单全部视图。`--with-comps` 额外拉每个视图布局 comps 数、标出空视图(NList 数据视图会显示「读取失败」,正常) |
74
- | `e10-cli form view create <objId> <appId> <视图名> [--type formView\|kanbanView\|calendarView\|mindMapView\|multiView] [--terminal PC\|MOBILE] [--layout-type FLOW\|EXCEL] [--detail <明细名>] [--sub-form-id <明细subFormId>]` | 给**已有表单**添加视图。`formView` 创建后是空布局,需续跑 `form view populate` 填字段;`kanbanView`/`calendarView`/`mindMapView`/`multiView` 建视图实体。**multiView 数据维度**:缺省主表;明细表维度用 `--detail <明细名>`(按名解析)或 `--sub-form-id <明细subFormId>`(直传),传值即明细维度(`subFormMain:true`)。**台账(NList)视图**用 `form table-view create`,不在此命令 |
75
- | `e10-cli form view populate <objId> <appId> <viewId>` | 把已有字段按布局类型填入新增的 formView(视图为空时用这个填充) |
76
- | `e10-cli form layout read <objId> <appId> [--view-id <id>]` | 读表单布局结构(comps 坐标/只读)。不传 `--view-id` 读默认布局,传则读指定视图 |
77
- | `e10-cli form group <objId> <appId> --groups '{"基本信息":["字段名/fieldId",...]}'` | 给**已建好的 eb 表**加字段分组(折叠容器)。建组 saveFieldGroup → 分配 updateFormFieldGroup → initLayout generateCollapse 渲染。`--groups` 可 `@文件`;`--required` 同时设分组内字段必填;同名分组复用不重复建(去重)。建表时一次性带分组用 `form create` 的 fields.json `group` 属性 |
78
- | `e10-cli form data add <objId> <appId> <json>` | 写入表单数据(`@` 开头为 JSON 文件路径)。JSON key 可用 fieldId 或字段名;Select/RadioBox 值填选项名(自动解析 valueKey)或 valueKey、CheckBox/SelectMultiple 用数组、TextArea 直接值、Employee/Department 用 ID。详见 `form/guide-form-data.md` |
79
- | `e10-cli form data list <objId> [--page <n>] [--size <n>]` | 查询表单数据。`--page` 页码(缺省1)、`--size` 每页条数(缺省1000;不传 pageInfo 平台默认卡 10) |
80
- | `e10-cli form data delete <objId> <dataId>` | 删除一条表单数据 |
81
-
82
- ### 表单按钮
83
-
84
- | 命令 | 说明 |
85
- |------|------|
86
- | `e10-cli form button list <objId> <appId>` | 列出所有按钮 |
87
- | `e10-cli form button add <objId> <appId> <name> --url <url> --open-type <1\|2\|3> [--position <位置...>] [--view <视图...>]` | 添加自定义按钮(open-type: 1=弹窗,2=新页面,3=当前页)。`--position` 显示位置可多个:右上/右上下拉/行上/行末下拉(缺省右上);`--view` 显示视图可多个:视图 ID/唯一名称/新建/编辑/显示(仅一个台账时可省略为台账)。走 `button/showPosition` 的 `<listId>_table`/`add_form`/`edit_form`/`show_form` key |
88
- | `e10-cli form button toggle <objId> <appId> <buttonId>` | 启用/禁用按钮 |
89
- | `e10-cli form button position <objId> <appId> <buttonId> [--view <视图...> --position <位置...>] [--show-position <json或@文件>] [--replace]` | 设置已有按钮位置并回读验证。默认合并、保留未指定页面;`--replace` 全量替换。视图支持 ID/唯一名称/新建/编辑/显示;多台账不能省略具体视图。系统按钮适用,保留动作权限及返回的日志/提示配置。详见 `references/form/guide-form-button.md` |
90
- | `e10-cli form button views <objId> <appId> <buttonId>` | 读取该按钮可选视图及当前 showPosition,配置前先查询 |
91
- | `e10-cli form association list/get <objId> <appId> [associationId]` | 查询关联页签列表或详情;get 必须传 associationId,详情含目标视图、筛选映射和权限 |
92
- | `e10-cli form association views <objId> <appId> [--target-app <id>]` | 查询可绑定视图及所属表单 |
93
- | `e10-cli form association fields <objId> <appId> --view <viewId> [--target-app <id>]` | 查询来源表单字段和目标视图字段 |
94
- | `e10-cli form association create <objId> <appId> <name> --view <viewId> --permissions <json或@文件> [--layouts 显示 编辑] [--terminals PC MOBILE] [--mappings <json或@文件>]` | 创建关联页签;默认仅显示布局、PC+MOBILE、启用。权限必须显式提供,筛选映射为 [{targetField,sourceField}] |
95
- | `e10-cli form association update <objId> <appId> <associationId> [--name <名>] [--view <viewId>] [--layouts 显示 编辑] [--terminals PC MOBILE] [--enabled true/false] [--mappings <json或@文件>]` | 保留未指定配置;布局和终端为集合替换;显示=0,编辑=2,none 关闭全部布局。多动作时传 --action |
96
- | `e10-cli form association set-filter <objId> <appId> <associationId> --mappings <json或@文件> [--action <id>]` | 替换目标视图动作的数据筛选字段映射,区别于权限条件 |
97
- | `e10-cli form association clear-filter <objId> <appId> <associationId> [--action <id>]` | 清空指定视图动作的数据筛选映射 |
98
- | `e10-cli form association set-condition <objId> <appId> <associationId> --perm <序号或类型> --rules <json或@文件> [--logic and/or]` | 设置页签权限条件,来源表单字段;与关联目标视图数据筛选独立 |
99
- | `e10-cli form association clear-condition <objId> <appId> <associationId> --perm <序号或类型>` | 清空指定权限条件;完整指南见 references/form/guide-form-association.md |
100
- | `e10-cli form button info <objId> <appId> <buttonId>` | 查看按钮详情 |
101
- | `e10-cli form button sort <objId> <appId> <sourceId> <targetId>` | 调整按钮排序 |
102
- | `e10-cli form button delete <objId> <appId> <buttonId>` | 删除按钮 |
103
-
104
- > **除非用户明确要求,否则不要往表单写入任何数据。** 表单创建完成后只需确认字段正确即可,不要自动插入测试数据。
105
-
106
- | `e10-cli form field-linkage list <appId> <objId>` | 字段联动(跨表带出赋值):列出联动 |
107
- | `e10-cli form field-linkage read <appId> <objId> <id>` | 回读单条(inFields/outFields) |
108
- | `e10-cli form field-linkage fields <appId> <formId>` | 查源表可带出字段 |
109
- | `e10-cli form field-linkage delete <appId> <objId> <ids...>` | 删除(批量) |
110
- | `e10-cli form field-linkage add <appId> <objId> --trigger <字段名> --target <字段名> --hops "<objId:字段名,...>"` | 新增。`--hops` 多跳链式(单跳用 `--source-form/--query-field`)。**Text 字段必须多跳取名称**。详见 `form/guide-field-linkage.md` |
111
-
112
- > **创建表单流程**:
113
- > 1. 读取 `references/form/guide-create-form.md` 了解字段类型和参数格式
114
- > 2. 与用户确认所有字段名和字段类型
115
- > 3. 将字段定义写入临时 JSON 文件(格式:`[{"componentKey":"Text","fieldName":"姓名"},...]`)
116
- > 4. 执行 `e10-cli form create ... --fields @<临时文件路径>`
117
- > 5. 涉及人员的字段统一使用 Employee 类型,不要用 Text
118
-
119
- ---
120
-
121
- ## 角色
122
-
123
- | 命令 | 说明 |
124
- |------|------|
125
- | `e10-cli role list` | 列出所有角色(树形结构,含层级关系) |
126
- | `e10-cli role create <name>` | 创建角色,`--parent <id>` 指定父角色,`--code` 编码,`--remark` 备注 |
127
- | `e10-cli role delete <ids...>` | 删除角色(可多个) |
128
- | `e10-cli role add-member <roleId> <keyword>` | 搜索人员并添加到角色 |
129
-
130
- ## 流程
131
-
132
- | 命令 | 说明 |
133
- |------|------|
134
- | `e10-cli workflow create <appId> <formObjId> <name> [desc]` | 创建流程,自动设置所有人可发起。**默认不加菜单**,要入口传 `--menu`(发起菜单 LAYOUT,指向表单新建页 `/sp/ebdfpage/card/1/<formObjId>/0`,点开即触发流程);漏加 `e10-cli menu add-start <appId> <formObjId>` 补 |
135
- | `e10-cli workflow create-workflow <name>` | **非默认路径**。仅当用户明确强调「用流程表单 / 工作流程 / 流程中心建流程、不在应用下」时才用;默认走上一条 `workflow create`(eb 应用内)。关联流程表单:不传 `--form-id` 自建(`relateForm=0`,服务端建表回吐 `data.formId`)/ `--form-id <已有>` 绑定(`relateForm=1`)。`--workflow-type`(默认 -1=其它)、`--sub-company <机构>`(团队必传)、`--belong-type <0个人/1团队>`(默认 1)、`--table-name`、`--desc`、`--is-free`、`--layout <FLOW流式(默认)/EXCEL表格式>`(自建模式下 EXCEL 走 formmanage/saveForm 建表后绑定,对齐 eb 表 `form create --layout EXCEL`;建表后不可切换)。不带 source/messageParams |
136
- | `e10-cli wf-form read <formId>` | **流程表单管理(非默认路径)**。读流程表单字段(getConfig)。`<formId>` 由 `workflow create-workflow` 回吐。与 eb 表 `form read` 对齐,走 `/api/workflow/core/form/...`(module=workflow、customParam={}、无 apid) |
137
- | `e10-cli wf-form add-field <formId> <字段名> <类型> [标题]` | 给流程表单加字段。类型:Text/TextArea/Number/Money/Date/DateTime/Select/Employee/Department/Browser。`--sub-form-id <明细subFormId>` 明细字段;`--multiple` 多选;`--precision`/`--percent`/`--default`(Number/Money);`--format`(日期精度)。formTableId 省略 |
138
- | `e10-cli wf-form edit-field <formId> <fieldId> [--title <标题>] [--multiple|--single]` | 编辑已有字段(read-modify-write)。`--multiple`/`--single`:Employee/Department/Browser 切 isSingle,Select↔SelectMultiple。必填为布局级用 `wf-form layout init --required` |
139
- | `e10-cli wf-form formula set <formId> --expression "DAYS({主表.开始时间},{主表.结束时间})" --target <fieldId>` | 给流程表单字段绑定计算公式。`{主表.字段}`/`{明细表名.字段}` 引用(getConfig 解析)→ `/api/excel/formula/save`(module=workflow) → ffExpress 绑字段 + saveSourceForm。`--name`/`--return-type`。另:`formula get <id>` / `list <formId>` / `functions` |
140
- | `e10-cli wf-form linkage <formId> <联动名> --config '{"conditions":[{"field":"请假天数","operator":"EQUAL","value":"3"}],"actions":[{"prop":"hide","fields":["请假事由"]}]}'` | 显隐联动。`--config` 写字段名(自动 getConfig 解析 fieldId/dataKey)。prop: hide/show/edit/readonly/required/hideLine;operator: EQUAL/NOT_EQUAL/GREATER/LESS/EMPTY 等 |
141
- | `e10-cli wf-form validate add <formId> <字段名...> [--remind] [--help <提示>]` | 字段查重规则(多字段 AND,重复禁止提交/提醒)。`list`/`delete <ruleId>`。字段名自动 getConfig 解析 |
142
- | `e10-cli wf-form relate <formId> <目标字段> --from <Employee/Department源字段> [--key email/department/code/name] [--title <名>]` | 值带出:换表内 Employee/Department 字段自动填目标字段(HRM 属性带出)。`--key` 默认 Employee=department/Department=name。机制同 eb 表(ffRelateField,Employee 源 module=hrm) |
143
- | `e10-cli wf-form permission get <formId>` | 查看流程表单字段权限(display/readOnly/required/disableEdit)。**写字段权限用 `workflow node field-permission`**(节点级,流程表单表单级写平台多返 500) |
144
- | `e10-cli wf-form add-detail-table <formId> <明细表名> [首字段名] [--init]` | 给流程表单加明细子表(saveSubForm+首字段+可选 init 放入布局)。机制同 eb 表 `form add-detail-table` |
145
- | `e10-cli wf-form field-options <formId> <fieldId> --options '[{"name":"事假"},...]' [--default <序号>]` | 给流程表单 Select/SelectMultiple 配选项(read-modify-write:getFormField 读全字段→改 options→saveFormFieldNew 重存)。`--options` 支持 `@文件`;`--default` 默认选项 valueKey |
146
- | `e10-cli wf-form layout init <formId>` | 初始化/重建流程表单布局(initLayout,按 layoutType 选模板,默认 FLOW)。`--read-only`/`--required`/`--single-row` 覆盖字段属性 |
147
- | `e10-cli wf-form group <formId> --groups '{"基本信息":["字段名/ID",...]}'` | 给**已建好的流程表单**加字段分组(折叠容器,对齐 eb 表 `form group`)。建组 saveFieldGroup → 分配 updateFormFieldGroup → initLayout generateCollapse 渲染。`--groups` 可 `@文件`;同名分组复用不重复建(去重) |
148
- | `e10-cli workflow list <appId>` | 列出应用下的所有流程 |
149
- | `e10-cli workflow search` | 通用搜索流程(不依赖 appId)。`--name`/`--id`/`--type`/`--belong` |
150
- | `e10-cli workflow nodes <workflowId>` | 查看流程节点详情(名称、类型、操作者、连线含 linkId) |
151
- | `e10-cli workflow nodes <wf> --mode list` | 列表视图:展示全节点含 nodeAttr、合流方式(比 chart XML 更全) |
152
- | `e10-cli workflow set-operator <wf> <node> [keyword]` | 设置节点操作者。`--type user`(指定人) / `role`(指定角色) / `dept`(指定部门) / `position`(指定岗位) / `all`(所有人) / `free`(自由选择) / `superior`(发起人上级) / `initiator`(流程发起人本人) / `prev-node`(上一节点) / `form`(表单相关人员) / `matrix`(矩阵对应,需 `--matrix-id` `--value-config-id` `--matrix-rule`)。`--sign-order` 会签/非会签/竞签/依次处理/抄送/抄送需批注(form 类型也支持,概念见 guide-workflow)。**依次处理倒序**用 `--execute-order 2-2`(默认)/`2-1`正序/`1-1,2-2`安全级别正序+倒序。**`--dept-scope 本部门`**=单个部门内会签/`本及下级`默认。**一个节点多人用逗号分隔 keyword**(如 `"区域经理,部门领导"`,user/dept 都支持);默认每次全量重建操作者组(先清空再新建),重复设置不堆积。**多操作者组叠加(如「部门领导矩阵 + 门店经理矩阵」双组会签):先用 set-operator 配第一组,再用 `--append` 配第二组**,`--append` 不清空已有组,两组合起来就是双矩阵会签 |
153
- | `e10-cli workflow generate-link-id <wf>` | 生成新连线 ID |
154
- | `e10-cli workflow add-node <wf> <type> <name>` | 添加节点(列表 API)。`<type>`: 0=发起 1=审批 2=确认 3=归档 5=投递 7=自动处理 8=等待 / forkstart/forkend/forkmiddle。**结束节点=归档节点(type=3)**。`--node-attr` 节点属性;合流点支持 `--merge-type`(0=全部/1=指定/2=数量/3=比例)、`--merge-num`、`--branch-nodes` |
155
- | `e10-cli workflow rename-node <wf> <nodeId> <name>` | 重命名节点(saveNodeSetForm API) |
156
- | `e10-cli workflow add-link <wf> <from> <to> <label>` | 一键添加连线(列表 API)。`--reject` 退回 / `--default` 默认出口 |
157
- | `e10-cli workflow add-links <wf> @links.json` | 批量添加连线(列表 API,一次保存)。格式:`[{"from":"节点ID","to":"节点ID","label":"标签","reject":true,"default":true}]` |
158
- | `e10-cli workflow link-list <wf>` | 查看出口列表(含默认/退回/条件标志)。`--node-id` 过滤单节点 |
159
- | `e10-cli workflow link-save <wf> @datas.json` | 修改/删除出口(列表方式)。`--delete-rows`/`--changed-link-ids`/`--update-row-ids` |
160
- | `e10-cli workflow link-rename <wf> <linkId> <名称>` | 重命名出口(连线名称)。linkId 用 link-list 查看。实现:读出口列表 → 改 linkName → saveNodeLinkEditTable(updateRowIds) |
161
- | `e10-cli workflow numbering read <wf>` | 查看流程编号规则 |
162
- | `e10-cli workflow numbering enable <wf>` | 启用流程编号(`--off` 关闭)。方案要求"流程有编号"时必做,平台默认不自动启用 |
163
- | `e10-cli workflow numbering set <wf> [--prefix <前缀>] [--serial <n>] [--no-year]` | **配置流程编号规则**(一次设全组成):前缀 + 流水号位数(默认4)+ 可选年份段。如 `--prefix LC --serial 4 --no-year` → `LC0001`。比 `add-component` 逐个加更省事,常用这条 |
164
- | `e10-cli workflow numbering add-component <wf> --type fixed\|date\|field --value <text> --format <yyyyMMdd> --field-id <id>` | 添加编号组成项:fixed=固定内容 / date=日期 / field=表单字段 |
165
- | `e10-cli workflow numbering reserve <wf> <count> [--prefix]` | 预留编号。**流程编号=REQUEST_NO 系统字段**:eb表单绑流程后编号走本命令(不要用 `form serial-mark` 表单编号,那对流程表无效) |
166
- | `e10-cli workflow node validate <wf> <nodeId> --rule "主题字段 操作 值字段或字面值"` | 节点提交校验(智能审批规则,提交时拦截)。值可以是**字段**(字段 vs 字段)或**字面值**(字段 vs 常量);主题字段支持**跨表**——用「明细表名.字段名」定位明细字段做主子表校验:`"请假时长 小于 4"`、`"行程明细.行程开始时间 等于 出差开始日期"`(明细字段=主表字段)。`--name` 规则名;`--disable` 关闭;`--view` 查看 |
167
- | `e10-cli workflow node menu <wf> <nodeId>` | 查看/切换节点操作菜单。`--toggle <menuId>` 切换启用状态 |
168
- | `e10-cli workflow node reject <wf> <nodeId>` | 配置节点退回设置。`--remind`/`--type`/`--checked-node`/`--submit-type` |
169
- | `e10-cli workflow node timeout <wf> <nodeId>` | 配置节点超时处理。`--time-type`/`--time-value`/`--flow-type`/`--remind-type` |
170
- | `e10-cli workflow node field-permission get <wf> <nodeId>` | 查看节点字段权限(各字段 显示/隐藏)。表单字段在节点上可见与否 |
171
- | `e10-cli workflow node field-permission set <wf> <nodeId> --hide <字段...>` | 设置节点字段显示/隐藏。`--hide 字段名/ID` 隐藏、`--show` 显示;可多个,已设权限则更新、未设则新建 |
172
- | `e10-cli workflow node sign <wf> <nodeId>` | 节点签字意见必填(退回时必填意见等)。缺省查看;`--all-required` 全部必填、`--none-required` 全部不必填、`--select "退回,加签"` 指定操作类型必填(按 mustInputDto=2 + 选中操作类型 id)。`getSignConfigForm` 枚举操作类型 |
173
- | `e10-cli workflow node empty-handle get <wf> <nodeId>` | 查看节点**流程异常处理**(无可处理人时怎么办) |
174
- | `e10-cli workflow node empty-handle set <wf> <nodeId> --handle-way <1-5>` | 设置节点流程异常处理:1=指定人员(`--person 名称/ID`) / 2=用户指定 / 3=发起人 / 4=自动流转下一节点 / 5=提交指定节点(`--assign-node <节点ID>`);`--off` 关闭;`--sync` 同步所有节点 |
175
- | `e10-cli workflow setting title <wf>` | 流程标题规则(发起后标题按规则生成,如"发起人-提交日期-客户名称"→真实数据)。缺省列出可用变量(发起人/部门/日期/表单字段);`--rule "发起人\|提交日期\|客户名称"` 竖线分隔字段名设置;`--sep <分隔符>` 默认 `-`;`--disable` 关闭自动生成(标题回退流程名+系统默认)。占位符 `$code$`,平台发起时替换为真实值 |
176
- | `e10-cli workflow setting submit <wf>` | 提交确认设置。`--confirm`/`--node-range`/`--show-way` |
177
- | `e10-cli workflow setting sign <wf>` | 签字意见设置。`--show-order`/`--inform-range` |
178
- | `e10-cli workflow setting comment <wf>` | 评论功能开关。`--enable` |
179
- | `e10-cli workflow setting batch <wf>` | 批量操作设置。`--enable-batch`/`--enable-turn-todo`/`--enable-consult`/`--enable-reject` |
180
- | `e10-cli workflow setting auto <wf>` | 自动处理设置。`--enable`/`--way`/`--follow-type` |
181
- | `e10-cli workflow setting other <wf>` | 其他设置。`--message-op`/`--auto-save`/`--switch-identity` |
182
- | `e10-cli workflow advanced doc <wf>` | 流程存档设置。`--enable`/`--dir-select`/`--doc-types` |
183
- | `e10-cli workflow advanced schedule <wf>` | 定时触发审批。`--enable`/`--frequency`/`--begin-date`/`--time`/`--weekday-only`/`--sms`/`--email`/`--message`/`--limit-creator` |
184
- | `e10-cli workflow advanced schedule-range <wf>` | 定时触发人员范围。`--list`/`--add`/`--delete` |
185
- | `e10-cli workflow delete <workflowId>` | 删除流程。`--with-form` 同时删除关联表单 |
186
- | `e10-cli workflow delete-link <wf> <linkIds...>` | 删除连线(列表 API,可多个)。自动清理关联节点 |
187
- | `e10-cli workflow delete-node <wf> <nodeId>` | 删除节点(自动清理关联出口)。`--bridge` 桥接上下游 |
188
- | `e10-cli workflow save-layout <wf> @xmlfile` | 保存完整流程图 XML(浏览器 mxGraph 格式:数字 cell id + nodeId/linkId)。服务器只认浏览器格式,勿转 node_X。新增节点/连线会自动注入 flag="add" |
189
- | `e10-cli workflow auto-layout <wf>` | **节点自动排版**(分层布局,全量重排坐标)。`--direction ltr/ttb`(默认ltr)、`--gap-x/--gap-y` 间距、`--dry-run` 只算不打回、`--out` 配合 dry-run 输出新 XML。忽略退回线分层,分支自然融入 |
190
- | `e10-cli workflow condition add <wf> <sourceId> <nodeId> <name> --rule "..."` | **简化语法**添加条件。`--rule "system:流程标题:包含:关键词"` 或 `--rule "form:字段ID|字段名|dataKey:大于:1000"`(fieldId/名/dataKey 均可匹配)。按 fieldType 自动判族校验算子,`--relation AND/OR`。**增强语法**:字段vs字段 `form:字段:大于:field:值字段`(range 用 `form:字段:范围:field:左:右`);明细量词 规则末尾 `:任一`/`:所有`;多值属于 `form:字段:包含:值1,值2`;人员/部门字段 `form:人员字段:包含:张三,李四` 自动解析成对象;系统字段 `system:紧急程度:等于:紧急`;嵌套 OR 用 `\|` 分隔 `form:关联项目:不为空\|form:关联客户:不为空`。详见 `workflow/guide-workflow-condition.md` |
191
- | `e10-cli workflow save-condition @jsonfile --app-id <appId>` | 保存条件规则(原始 JSON)。CLI 自动生成 ID 并绑定到连线 |
192
- | `e10-cli workflow condition list <wf>` | 列出工作流下所有连线绑定的条件(连线名 + 条件名 + 表达式 + mapId),支持 `--name` 过滤 |
193
- | `e10-cli workflow condition get <wf> <id>` | 查看单个条件详情。`<id>` 可用 conditionKey / mapId / conditionId |
194
- | `e10-cli workflow condition delete <wf> <id> [--link-id <linkId>] [--node-id <nodeId>]` | 删除条件(删定义 + 解绑连线)。`<id>` 同 get |
195
- | `e10-cli workflow set-link-condition-key <wf> <link> <key> <node>` | 绑定条件 Key 到连线 |
196
- | `e10-cli workflow save-action @jsonfile` | 加节点提交动作(常量赋值)。**只接 JSON 一个参数**,`workflowId`/`nodeId` 写在 JSON 内部(不是位置参数)。JSON 格式见 `workflow/guide-workflow-action.md` |
197
- | `e10-cli actionflow generate '{"planFile":"@plan.json","appName":"AI-名称"}'` | **动作流生成**(语义 plan → 编译 → preflight → 保存并启用 → 正式回读,返回设计器链接)。`planFile` 必须以 `@` 引用文件(`@plan.json` 或 `@绝对路径`),CLI 强制要求 `@` 前缀。event 节点 `ApproveTrigger` 自带流程节点触发绑定(`workflowPath`+`triggerTiming`+`approveNode`/`approveLink`),不走 pathdef/addaction,无需单独绑节点。默认保存并启用;`{"mode":"stash",...}` 显式暂存。组件契约/参数/映射/条件的权威是 `e10-cli actionflow component-describe <type>`,详见 `actionflows/SKILL.md`。覆盖 ActionEb 全系列/Approve/Document/Hrm/触发器(含 CustomTrigger、InnerMQListener)/消息(含 InnerMQSend)/会议日程/逻辑 20+ 组件;InnerMQListener 与 InnerMQSend 同流互斥 |
198
- | `e10-cli actionflow update '@update-plan.json'` | **已有动作流保留式修改**(精确 appId → 读正式设计 → 备份 → 按原节点 ID 显式 operations → saveDesign(saveNewVersion=true) → 正式回读)。**不可改 event 触发器**(触发类型/表单/时机/参数变了就新建);未声明内容保留。触发类型含按钮触发、自定义触发、内置 MQ 监听/发送 |
199
- | `e10-cli workflow action list-node <wf> <nodeId> [--trigger-type all\|link]` | 列出节点绑定的动作(getAddActionDataList)。显示每条的动作类型/appId/触发时机,type0 还带字段=值 |
200
- | `e10-cli workflow action clear-node <wf> <nodeId> [--trigger-type all\|link]` | **清空节点所有动作绑定**(deleteAddAction + delList)。清理重复 add/已删实体残留的悬空绑定;动作流实体另用 `action delete` 清 |
201
- | `e10-cli workflow action disable <appId> <name>` | 禁用动作流(禁用后才能删除) |
202
- | `e10-cli workflow action delete <appId> <name>` | 删除动作流(自动先禁用再 batchAddRecycle 删实体)。**平台无"按动作流反查绑定节点"接口**:删实体后,绑定了此动作流的节点会残留**悬空引用**(前端显示「被删除」)。CLI 删完会提示,需逐个用 `action clear-node <wf> <node>` 清理节点绑定 |
203
- | `e10-cli workflow action batch-delete @list.json` | 批量删除动作流(每项 `{id,name}`,自动先禁用再 batchAddRecycle) |
204
-
205
- > **加节点**: add-node 直接操作节点列表 API (getNodeEditTable → saveNodeEditTable)
206
- > **加连线**: add-link/add-links 直接操作出口列表 API (getWfpNodeLinkTable → saveNodeLinkEditTable)
207
- > **删连线**: delete-link 直接操作出口列表 API (getWfpNodeLinkTable → saveNodeLinkEditTable, deleteRows)
208
- > **删节点**: delete-node 直接操作节点列表 API (saveNodeEditTable, deleteRows),`--bridge` 自动桥接
209
- > **查看节点/出口**: nodes --mode list / link-list 走列表 API(比 chart XML 更完整)
210
- > **加分支条件两种方式**:
211
- > - 简化: `condition add` — 一行命令搞定
212
- > - 完整: generate-link-id → save-layout → save-condition → set-link-condition-key
213
- > **加节点提交动作(字段常量赋值)**: save-action @action.json(格式见 `workflow/guide-workflow-action.md`)
214
- > **加跨表单动作流**: `e10-cli actionflow generate`(语义 plan 生成 + 保存并启用 + 正式回读,event 自带流程节点绑定);`workflow action` 仅作查/清/删/禁用管理
215
-
216
- ---
217
-
218
- ## 菜单
219
-
220
- | 命令 | 说明 |
221
- |------|------|
222
- | `e10-cli menu list <appId>` | 列出当前Ebuilder应用下的菜单 |
223
- | `e10-cli menu add <name> <path> <appId>` | 将页面加入左侧导航(LINK 类型,URL path)。ecode 页面 path 如 `/sp/custom/ecode/project-list`。**表单台账/流程发起菜单用下面两条专用命令**(VIEWPORT/LAYOUT 类型,非 URL) |
224
- | `e10-cli menu add-table <appId> <objId> [name]` | 给表单加**台账菜单**(VIEWPORT,指向数据列表页)。`form create --menu` 才自动加(默认不加),此处用于事后补加 |
225
- | `e10-cli menu add-start <appId> <formObjId> [name]` | 给流程绑定的表单加**发起菜单**(LAYOUT,指向表单新建页,点开触发流程)。`workflow create --menu` 才自动加(默认不加) |
226
- | `e10-cli menu permission list <appId> <menuId>` | 列菜单可见范围授权(**默认所有人**;无输出=全可见) |
227
- | `e10-cli menu permission add <appId> <menuId> <目标> --type role\|dept\|user\|all` | 给菜单授权。默认语义:**加角色/人/部门后自动撤「所有人」→ 只有授权对象可见**;`--keep-all` 保留所有人;`--type all` 恢复"所有人可见" |
228
- | `e10-cli menu permission remove <appId> <menuId> <目标> --type role\|dept\|user\|all` | 撤销菜单授权(撤销所有人用 `--type all`) |
229
- | `e10-cli menu delete <menuId> <appId>` | 删除菜单项 |
230
-
231
- ---
232
-
233
- ## 人员 & 图标
234
-
235
- | 命令 | 说明 |
236
- |------|------|
237
- | `e10-cli user search <keyword> [count]` | 模糊搜索员工(返回 ID/姓名/部门/手机) |
238
- | `e10-cli icon search <keyword...>` | 搜索 Ebuilder 图标(4999 个,支持多关键词) |
239
-
240
- ---
241
-
242
- ## 版本更新(只提醒,升级需确认)
243
-
244
- | 命令 | 说明 |
245
- |------|------|
246
- | `e10-cli update check` | 强制连网查一次(忽略 24h 缓存),显示 当前/最新/结论。`--on`/`--off` 开关注册 |
247
- | `e10-cli update apply [--yes]` | 升级到最新(打印将执行的 `npm install -g weaver-e10-builder@<最新>` 并询问确认;加 `--yes` 跳过确认)。仅在线可用,内网走离线 tgz |
248
-
249
- > **自动提醒**:每次 `e10-cli auth status` 末尾静默检查(每 24h 最多连网一次;离线/内网自动跳过不打扰)。检测到新版本只打一行 `💡 有新版本…`,**不自动安装**。
250
-
251
- ---
252
-
253
- ## 代码检查
254
-
255
- | 命令 | 说明 |
256
- |------|------|
257
- | `e10-cli check <项目目录>` | 代码质量检查,逐条自检,全部确认通过后再 build |
258
-
259
- ---
260
-
261
- ## 典型工作流
262
-
263
- ```bash
264
- # 1. 创建项目ecode
265
- e10-cli project create 会议室预订
266
-
267
- # 2. 打包 & 上传
268
- ecodecmd build /path/to/project --target=e10
269
- e10-cli project import <projectId> .target/xxx.zip --main-url /sp/custom/ecode/table-demo
270
-
271
- # 3. 后续改代码再上传(先删旧应用文件夹)
272
- ecodecmd build /path/to/project --target=e10
273
- e10-cli project tree <projectId> # 找旧应用 folderId
274
- e10-cli project delete-folder <folderId>
275
- e10-cli project import <projectId> .target/xxx.zip --main-url /sp/custom/ecode/table-demo
276
-
277
- # 4. 需要表单时
278
- e10-cli app create 会议室管理 # → appId
279
- # 先写字段定义文件 fields.json,然后:
280
- e10-cli form create <appId> 会议室表单 /path/to/project --fields @fields.json # → objId
281
- e10-cli form read <objId> --app-id <appId> --out fields.json # 写入 fields.json(推荐)
282
-
283
- # 5. 角色管理
284
- e10-cli role create 财务主管 --code CW01 --remark "审批角色"
285
- e10-cli role add-member <roleId> 张三
286
-
287
- # 6. 创建流程
288
- e10-cli workflow create <appId> <formObjId> 会议室审批
289
- e10-cli workflow nodes <workflowId> # 查看节点
290
-
291
- # 7. 配置审批节点
292
- e10-cli workflow set-operator <wf> <nodeId> 张三 # 指定人
293
- e10-cli workflow set-operator <wf> <nodeId> 财务主管 --type role # 指定角色
294
-
295
- # 8. 加分支条件(如金额≥1000走CEO审批)
296
- e10-cli workflow generate-link-id <wf> # → newLinkId
297
- e10-cli workflow save-layout <wf> @修改后的xml文件
298
- e10-cli workflow save-condition @条件.json # → conditionKey
299
- e10-cli workflow set-link-condition-key <wf> <linkId> <key> <nodeId>
300
-
301
- # 9. 添加菜单
302
- e10-cli menu add 会议室预订 /sp/custom/ecode/meeting/list <appId>
303
-
304
- # 10. 配置动作流(新建/修改)—— 新建走 generate,已有流修改走 update
305
- # 先查目标表字段 + 流程上下文 paramKey
306
- e10-cli actionflow form-fields '{"tableId":"<targetTableId>","appId":"<targetAppId>"}'
307
- e10-cli actionflow workflow-context-fields '{"workflowId":"<wf>"}'
308
- # 按名称或 paramKey 筛选;默认每页仅 20 条,避免终端截断
309
- e10-cli actionflow workflow-context-fields '{"workflowId":"<wf>","query":"数据ID"}'
310
- # 输出完整原始 JSON(终端仍只显示可用摘要,避免截断)
311
- e10-cli actionflow workflow-context-fields '{"workflowId":"<wf>"}' --out context.json
312
- # 正式设计回读同理;默认摘要,raw:true 才直接打印完整 JSON
313
- e10-cli actionflow read-design '{"sceneId":"<sceneId>"}' --out design.json
314
- # 写 plan.json(event=ApproveTrigger 带 workflowPath+triggerTiming;actions=ActionEbAdd/Update/Delete)
315
- # mapping: {"源paramKey":"目标字段ID"},目标ID +前缀=累加 -前缀=累减;明细仅 add;
316
- # update 定位: opType=id(关联字段)/updateData+filterCondition(requestId 定位走 ApprovalData paramKey)
317
- e10-cli actionflow generate '{"planFile":"@plan.json","appName":"AI-动作流名"}' # planFile 必须以 @ 引用文件(@plan.json 或 @绝对路径)
318
- # 管理: list-node 查节点绑定 / clear-node 清 / delete/disable 删动作流
319
- e10-cli workflow action list-node <wf> <nodeId>
320
- ```
1
+ # e10-cli 命令参考
2
+
3
+ > **所有系统交互统一使用 `e10-cli`**。auth 文件自动查找,也可 `--auth <path>` 指定。加 `--json` 输出 JSON 格式。
4
+
5
+ ---
6
+
7
+ ## 工具
8
+
9
+ | 命令 | 说明 |
10
+ |------|------|
11
+ | `e10-cli docx read <文件>` | 解析 Word 文档为 markdown + 提取图片到 `_images/`。**禁止自己写 python-docx 脚本** |
12
+
13
+ ---
14
+
15
+ ## Ecode 项目操作
16
+
17
+ | 命令 | 说明 |
18
+ |------|------|
19
+ | `e10-cli project create <name> [desc]` | 新建 Ecode 项目(名称自动追加时间戳) |
20
+ | `e10-cli project import <projectId> <zip> --main-url <url>` | 导入 zip 包,`--main-url` **必填** |
21
+ | `e10-cli project tree <parentId>` | 查看目录结构 |
22
+ | `e10-cli project read <fileId>` | 读取代码文件内容 |
23
+ | `e10-cli project update <fileId> <content>` | 更新代码文件(content 以 `@` 开头则为文件路径) |
24
+ | `e10-cli project create-file <name> <parentId> [type]` | 新建代码文件(默认 js) |
25
+ | `e10-cli project create-folder <name> <parentId>` | 新建文件夹 |
26
+ | `e10-cli project delete-file <fileId>` | 删除代码文件 |
27
+ | `e10-cli project delete-folder <folderId>` | 删除文件夹(= 删除应用) |
28
+
29
+ - 导入成功后会在 Ecode 项目下生成应用文件夹
30
+ - 二次导入之前先删掉旧应用文件夹(通过 `e10-cli project tree` 找到 folderId)
31
+
32
+ ---
33
+
34
+ ## Ebuilder 应用 & 表单
35
+
36
+ | 命令 | 说明 |
37
+ |------|------|
38
+ | `e10-cli app create <name> [desc]` | 新建 Ebuilder 应用(scope=PC_MOBILE,INTERNAL 类型)。`--json` 输出 `{id,name}` |
39
+ | `e10-cli app list [--name <关键词>]` | 查询应用列表(扁平 id/name/description) |
40
+ | `e10-cli app folder [--type 1/2/3]` | 查看应用目录结构(文件夹+应用树,含发布状态)。1=我管理的/2=我创建的/3=全部 |
41
+ | `e10-cli app read <appId>` | 查看应用**详情**(全量配置:名称/描述/简称/范围/目录/组织/发布状态)。`--json` 输出完整对象。走 `/app/info` |
42
+ | `e10-cli app edit <appId> [--name] [--desc] [--short-name]` | 编辑应用信息(至少指定一个写参数;内部先读 `/app/info` 再合并提交) |
43
+ | `e10-cli app delete <appId>` | 删除应用(软删除,可恢复;存在关联资源会提示先清理) |
44
+ | `e10-cli form read <objId> [--app-id <appId>] [--out <file>]` | 读取表单字段。`--app-id` 含明细表字段+Select/RadioBox/CheckBox 选项;`--out fields.json` 写 UTF-8 JSON(推荐,机器可读)。旧版 `[dir]` 参数写 memo.md,已过时 |
45
+ | `e10-cli form read <objId> --app-id <appId> --out fields.json` | 读取字段含选项(Select/RadioBox/CheckBox 自动带 options)。**含明细表字段**,配动作流/联动拿明细 fieldId 用这个 |
46
+ | `e10-cli form list <appId>` | 列出应用下的所有表单 |
47
+ | `e10-cli form create <appId> <name> <dir> --fields @<json文件>` | 创建表单。`--fields` **必填**。支持 DetailTable(嵌套formFields)、EBuilder(sformId+dataTitle)、relateFrom(联动)。fields.json 字段可带 `"required":true`/`"readOnly":true` 直标(写进布局 comps)。**字段名与平台系统字段重名(标题/创建者/创建时间/数据ID/最后更新人/数据状态)→ 不新建物理字段、复用系统字段**,并把该字段在**布局置为可见**(platform 系统字段默认隐藏;可写 `"singleRow":true` 独占一行、`"hidden":true` 保持隐藏)。`--json` 返回 `skippedSys`。**默认不加菜单**,要入口传 `--menu`(台账菜单 VIEWPORT);漏加 `e10-cli menu add-table <appId> <objId>` 补 |
48
+ | `e10-cli form add-field <objId> <appId> <name> <type> [title]` | 添加字段。`<type>`=componentKey(Text/Select/Employee/Money/DetailTable 等同 form create);`[title]` 字段显示名,不传同 name。Select 类型需单独 `field-options` 配选项。**`--sub-form-id <明细表subFormId>` 在明细表里加字段**(自动重新布局)。Number 类型:**`--percent` 百分比显示**(numberType=percentage,缺省 1 位小数)、**`--default <值>` 默认值**(如 `--default 1000` 工时单价默认 1000)、`--precision <n>` 精度。**EBuilder/Flow 类型**:`--sform-id <目标表单objId>`(EBuilder 表关联 / Flow 浏览-流程字段,数据来源=浏览流程)。EBuilder 字段**自动配关联浏览弹窗显示列**(=目标表全部业务字段,去系统字段)。**`--multiple` 多选**(人员/部门/EBuilder/Browser 默认单选;**下拉 Select --multiple → SelectMultiple 类型**)。**`--max-len <n>` 文本最大长度**(Text 缺省 100、TextArea 缺省 4000)。**`--single-row` 独占一行显示**。**`--option-template <模板ID或名>` Select 绑定选项预设模板**(选项来自模板,与 `field-options` 二选一) |
49
+ | `e10-cli form detail-table list/read <objId> <appId> [...]` | 列出明细表,或读取指定明细表的二级明细开关与配置 |
50
+ | `e10-cli form detail-table sub-detail set <objId> <appId> <父明细表> --target <子明细表> --target-field <子字段> [--default-expand]` | 开启并设置二级明细。表和字段可写名称或 ID;默认采用平台实测的 `rowId/inside/single`,保存后自动回读。另有 `enable`、`disable`(保留配置)、`clear`(清空配置) |
51
+ | `e10-cli form edit-field <objId> <appId> <fieldId>` | 编辑字段属性。`--title`/`--required`/`--no-required`/`--sform-id`(改EBuilder关联)/`--relate-from`(值带出)/**`--multiple`/`--no-multiple`**(人员/部门/EBuilder/Browser 多选切换) |
52
+ | `e10-cli form serial-mark set <objId> <appId> <fieldId> --segments @<json>` | **表单编号**(纯建模表):用 JSON 数组组合任意编号规则,数组顺序即拼接顺序。段类型 `fixed`/`year`/`serial`/`field`/`system`/`date`;field 段可 inline `shortName` 代字映射。子命令组:`set`(配置,--segments) / `add-segment`(增量追加段) / `short-name`(代字 list/set) / `read`(查看) / `fields`(查可绑定字段) / `clear`(解除)。被编码字段平台自动只读。**⚠ 仅对未绑流程的纯建模表有效——eb表单绑流程后表单编号字段在流程提交时不生效,编号改走流程编号(`workflow numbering`,落到 REQUEST_NO 系统字段)** |
53
+ | `e10-cli form field-options <objId> <appId> <fieldId> --options @<json> [--default <key>]` | 设选项/默认值。options.json: `[{"name":"选项名","valueKey":"可选"}]`;`--default` 用平台生成的长 valueKey(`form read --app-id` 获取),不是 name |
54
+ | `e10-cli form option-template <list\|read\|create\|copy\|delete>` | **Select 选项预设模板管理**(下拉选项复用:多个表单共享一套选项,模板改了各表单跟着变)。`list [--system]` 列模板(默认自定义模板,--system 看系统内置);`read <模板ID> [--flat]` 看选项树;`create <名称> --options @<json> [--level 1] [--describe 文本]` 建模板(options.json: `[{"name":"低","valueKey":"10","children":[]}]`,**valueKey 必须数字**,children 嵌套=多级);`copy <模板ID>` 复制(系统 default 模板不可复制);`delete <模板ID>` 删模板(被引用时平台拒绝)。**字段引用模板**:`form add-field --option-template <模板ID或名>` 或 fields.json 写 `"optionTemplate":"模板名"`(Select 专有,选项不内联) |
55
+ | `e10-cli form linkage add <appId> <objId> <name> --config @<json>` | 添加字段显隐联动规则 |
56
+ | `e10-cli form relate <appId> <objId> <目标字段> --from <源字段>` | **HRM 值带出联动**:源字段为表内 Employee(人员)或 Department(部门)类型,换源自动填目标字段(换申请人→填邮箱/工号/部门;换所属部门→填部门编号/上级部门)。`--key` 从平台清单校验(默认 Employee=department、Department=name),`--title` 指定显示名(默认属性中文名)。详见 `form/guide-form-linkage.md` |
57
+ | `e10-cli form delete <objId> <appId>` | 删除表单 |
58
+ | `e10-cli form permission data add <objId> <appId> --org-type <类型> [--org-id <id>] --rights <view/edit/delete...> [--file-rights <view/download...>]` | **表单数据权限**,`1/view=查看`、`2/edit=编辑`、`3/delete=删除`,可任意组合;附件 `401/view=查看`、`402/download=下载`。固定写入 `obj_data_admin` 并按新增权限 ID 回读。授权对象支持 all/role/department/company/employee/group/post;all 的 orgId 自动为 0 |
59
+ | `e10-cli form permission imp-exp <list\|add> <objId> <appId> ...` | **导入导出权限**(独立分类 `data_imp_exp`,⚠ 勿用 `data add` 加——共享权限只有 查看/编辑/删除 三种,导出/导入不在其中)。`list` 查看;`add --org-type <类型> [--org-id] --rights <export/import/delete-import...> [--update-import] [--export-details] [--export-attachment] [--export-field-range listShowField|all]`。`export=8`、`import=9`、`delete-import=93`(93 须与 import 同选,自动带更新导入);添加后按权限 ID 回读 `impRightList` 校验。删除同 `permission remove --right-id` |
60
+ | `e10-cli form permission <list\|add\|remove\|rebuild> <objId> <appId>` | 权限通用管理及兼容入口。新建权限与数据权限分开;旧 `add --right-type` 保留兼容。`list` 查看全部分类;`remove --right-id <id[,id...]>` 删除一条或多条权限;添加后提示 `isShowRebuild=2` 时执行 `rebuild` |
61
+ | `e10-cli form list-view <objId> <appId>` | 查看台账/数据列表(获取 viewId 用于菜单配置) |
62
+ | `e10-cli form list-columns <objId> <appId> <listId> [--add <fieldId...>] [--remove <fieldId...>] [--set @columns.json] [--terminal pc/mobile] [--pc-only]` | 查看/批量设置台账显示列。增量追加、移除或整组指定顺序/列宽/格式;整组模式与增删互斥。支持主表和明细子字段,保留已有列未指定属性、事件及数据主键;一次保存并回读核对目标列和另一终端。详见 `references/form/guide-list-columns.md` |
63
+ | `e10-cli form list-unit <objId> <appId> <listId> <fieldId> <后缀> [--prefix <前缀>] [--clear] [--pc-only]` | 设置台账列显示**单位**(后缀/前缀)。平台无字段级单位属性,靠列表列配置 `showTrans.ruleConfig.suffix/prefix` 实现。如 `form list-unit ... <fieldId> "(元)"` 让列显示单位;`--clear` 清除 |
64
+ | `e10-cli form list-format <objId> <appId> <listId> <fieldId> [--thousandths] [--no-thousandths] [--decimal <n>] [--clear] [--pc-only]` | 查看/设置台账列**千分位/小数位**(Number/Money 列)。不加参数显示当前;`--thousandths` 开千分位(列 `format:"THOUSANDS"`)、`--no-thousandths` 关、`--decimal <n>` 小数位数(`decimalLength`)、`--clear` 清除恢复默认。与 `list-unit`(单位,走 `showTrans`)是两套不同机制。**自动保留移动端配置** |
65
+ | `e10-cli form list-click <objId> <appId> <listId> <fieldId> [--target <formObjId>] [--open-mode <模式>] [--win-size <尺寸>] [--clear] [--pc-only]` | 设置台账列**点击跳转**。`--open-mode` 支持当前页面/新窗口/弹出窗口/右侧滑出/右侧推出;`--win-size` 仅用于滑出/推出,具体数值按需求填写:百分比使用 `%`(0~100),像素使用 `px`,两种单位不可混用。缺省 `800px` |
66
+ | `e10-cli form ebuilder-columns <objId> <appId> <fieldId> [字段名/ID...] [--clear]` | 设置 EBuilder 关联字段的**浏览显示列**(存在字段配置 `ffDisplayColumns:{id,name}[]`)。**缺省查看**:列出当前显示列 + 目标表单全部**业务字段候选**(系统字段已自动过滤,不设显示列时浏览走平台默认列会带系统字段);**传目标表业务字段名/ID 设置**,系统字段会被拦截提示"系统字段不能设为显示列";`--clear` 清空。关联浏览显示哪些字段(只留业务字段) |
67
+ | `e10-cli form ebuilder-scope <get\|set\|clear> <objId> <appId> <fieldId>` | **浏览数据定义 → 数据范围设置**(关联浏览字段,限定被关联数据须满足条件才可选,如关联客户只选"客户状态=启用"的)。走 `browserDataScope` 接口(独立于字段布局)。`set --rules '[{"field":"客户状态","operator":"eq","value":"启用"}]'`(选项类 value 用选项名,CLI 自动解析 valueKey);`--logic and/or` 多规则关系;`--fill-null` 关联字段为空时填充;`get` 读已设条件;`clear` 清空。**这是关联浏览筛选的正解**,旧 `ebuilder-filter` 走 layout/save 不被设计器识别 |
68
+ | `e10-cli form validate list <objId> <appId>` | 查看表单**查重规则**(字段重复校验,多字段 AND)。`add <objId> <appId> <字段名...> [--help 提示] [--remind]` 新增(缺省禁止提交 NOSUBMISSION,`--remind` 仅提醒);`delete <objId> <appId> <ruleId>` 删除。项目名称重名/工时日期重复不允许 |
69
+ | `e10-cli form list-search <objId> <appId> <listId> [--add <fieldId...>] [--quick <fieldId...>] [--remove <fieldId>] [--pc-only]` | 查看/配置台账**搜索条件**。`--add` 进搜索面板、`--quick` 加顶部快捷筛选(均支持多字段)、`--remove` 移除。主表字段直取 ds/fields;明细子字段自动 fallback `getFormField` 单取元数据。**自动保留移动端配置** |
70
+ | `e10-cli form list-sort <objId> <appId> <listId> [--field <fieldId...>] [--order ASC\|DESC] [--clear] [--pc-only]` | 查看/配置台账**排序**。`--field` 支持多个(按传入顺序多级排序,`--order` 对所有字段生效)、`--clear` 清除。**自动保留移动端配置** |
71
+ | `e10-cli form list-stats <objId> <appId> <listId> [--add <json或@文件>] [--remove <statId>] [--pc-only]` | 主表/明细顶部统计,sum/count/avg/max/min、条件及格式;明细 count 支持 `{ "type":"count", "subFormId":"..." }`。保存后回读、保护移动端;平台可能共享两端统计,输出 mobileStatistics。详见 `references/form/guide-list-stats.md` |
72
+ | `e10-cli form list-stats detail <objId> <appId> <listId> <subFormId> [--fields <fieldId...>] [--name-prefix <文本>] [--pc-only]` | 为明细数值字段批量生成 sum 和一项子表 count;重复运行复用同名同配置项 |
73
+ | `e10-cli form list-filter <objId> <appId> <listId> [--add '<json>'] [--clear] [--pc-only]` | 查看/配置**视图数据条件**(台账只显示满足条件的数据)。`--add '{"conditions":[{"fieldId":"...","func":"eq","value":"研发valueKey","text":"研发"}]}'`(func: eq 等于 / notEq 不等于 / in 属于 / notIn 不属于 / like 包含 / notLike 不包含 / gt 大于 / lt 小于 / between 介于 / isNull 为空 / isNotNull 不为空,单选 Select 用 eq;value 填选项 valueKey、text 填显示名;多条件默认 AND)、`--clear` 清空。走 saveNListConfig config.filter(明文条件树,非独立接口)。**自动保留移动端配置** |
74
+ | `e10-cli form list-event <objId> <appId> <listId> [--add-page '<json>'] [--add-field '<json>'] [--open-mode <模式>] [--modal-width <pct>] [--modal-height <pct>] [--win-size <pct>] [--clear] [--pc-only]` | 查看/配置**行事件**(点击行数据 NewPage 打开表单布局)。`--add-page '{"pageId":"1/<objId>","pageName":"新建数据","openMode":"右侧滑出"}'` 选页面方式(pageId 缺省 `1/<objId>` 新建布局,`0/<objId>`=显示布局)、`--add-field '{"urlFieldId":"字段id"}'` 选字段方式(URL取自行内字段值,urlFieldText/Type自动补)、`--clear` 清空。**打开方式** `--open-mode`(或在 JSON 里写 `openMode`):当前页面/新窗口/弹出窗口/右侧滑出(缺省)/右侧推出;弹出/滑出/推出 用 `--modal-width`/`--modal-height`(缺省 50%),滑出/推出 用 `--win-size`(缺省 100%)。走 saveNListConfig config.eventGroup(明文 JSON,config+mConfig 都写)。**自动保留移动端配置** |
75
+ | `e10-cli form list-group <objId> <appId> <listId> [--enable --group-field <fieldId> [--group-size N]] [--disable] [--pc-only]` | 查看/配置**启用分组**(台账按某字段分组聚合显示)。`--enable --group-field <分组字段id> [--group-size N 默认100]` 启用/换分组字段、`--disable` 禁用(保留 groupField/groupSize 仅 enable=false)。走 saveNListConfig config.enableGroup(对象,持久化,不走 layout/save LZW)。**自动保留移动端配置** |
76
+ | `e10-cli form list-hierarchy <objId> <appId> <listId> [--enable --parent-field <名称或fieldId> [--expand-level N]] [--disable] [--pc-only]` | 查看/配置**上下级树形展示**。上级字段必须是主表中单选、关联当前表单自身的 EBuilder 字段(常见名称“上级类型”);与普通 `list-group` 分组聚合不是同一能力。走 `saveNListConfig config.superiorField`,保存后独立回读并自动保留移动端配置 |
77
+ | `e10-cli form list-permission <objId> <appId> <listId> [--add-all] [--add-user <userId> --name <name>] [--add-role <roleId> [--name <name>]] [--add-matrix <矩阵id> --name <name>] [--share-level <n>] [--seclevel <min>-<max>] [--add-raw '<json>'] [--remove <id>] [--remove-all] [--clear]` | 查看/配置**台账视图权限**(谁能查看这个台账)。`--add-all` 所有人(自动把空 dataid 与 0 视为同一主体,避免重复)、`--add-user` 人员、`--add-role` 角色、`--add-matrix` 矩阵。`--remove <id>` 删除指定权限;`--remove-all` 删除全部“所有人”,与 `--add-all` 同用可清理重复后只保留一条;`--clear` 清空全部。保存走 `list/permission/save` 全量覆盖并回读。另支持共享级别和安全级别范围 |
78
+ | `e10-cli form list-search-group <objId> <appId> <listId> [--add <fieldId>] [--remove <fieldId>] [--clear] [--pc-only]` | 查看/配置**分类搜索**(按选项字段分类筛选)。`--add <选项字段fieldId>`(须已在显示列)、`--remove <fieldId>`、`--clear`。走 saveNListConfig config.searchConditions.groupFilters(视图级明文)。**仅主表选项类字段 Select/RadioBox/CheckBox,不支持明细字段(产品边界,传明细报错)**。listGroupSets 留空由平台运行时生成 |
79
+ | `e10-cli form view list <objId> <appId> [--with-comps]` | 列出表单全部视图。`--with-comps` 额外拉每个视图布局 comps 数、标出空视图(NList 数据视图会显示「读取失败」,正常) |
80
+ | `e10-cli form view rename <objId> <appId> <viewId> <新名称>` | 修改已有默认台账(nListView)的名称,保留原视图 ID 和配置,并在保存后回读确认。需求名称与默认名称不一致时统一用此命令,不新建重复视图 |
81
+ | `e10-cli form view create <objId> <appId> <视图名> [--type formView\|kanbanView\|calendarView\|mindMapView\|multiView] [--terminal PC\|MOBILE] [--layout-type FLOW\|EXCEL] [--detail <明细名>] [--sub-form-id <明细subFormId>]` | 给**已有表单**添加视图。`formView` 创建后是空布局,需续跑 `form view populate` 填字段;`kanbanView`/`calendarView`/`mindMapView`/`multiView` 建视图实体。**multiView 数据维度**:缺省主表;明细表维度用 `--detail <明细名>`(按名解析)或 `--sub-form-id <明细subFormId>`(直传),传值即明细维度(`subFormMain:true`)。**台账(NList)视图**用 `form table-view create`,不在此命令 |
82
+ | `e10-cli form view populate <objId> <appId> <viewId>` | 把已有字段按布局类型填入新增的 formView(视图为空时用这个填充) |
83
+ | `e10-cli form layout read <objId> <appId> [--view-id <id>]` | 读表单布局结构(comps 坐标/只读)。不传 `--view-id` 读默认布局,传则读指定视图 |
84
+ | `e10-cli form group <objId> <appId> --groups '{"基本信息":["字段名/fieldId",...]}'` | 给**已建好的 eb 表**加字段分组(折叠容器)。建组 saveFieldGroup → 分配 updateFormFieldGroup → initLayout generateCollapse 渲染。`--groups` 可 `@文件`;`--required` 同时设分组内字段必填;同名分组复用不重复建(去重)。建表时一次性带分组用 `form create` 的 fields.json `group` 属性 |
85
+ | `e10-cli form data add <objId> <appId> <json>` | 写入表单数据(`@` 开头为 JSON 文件路径)。JSON key 可用 fieldId 或字段名;Select/RadioBox 值填选项名(自动解析 valueKey)或 valueKey、CheckBox/SelectMultiple 用数组、TextArea 直接值、Employee/Department 用 ID。详见 `form/guide-form-data.md` |
86
+ | `e10-cli form data list <objId> [--page <n>] [--size <n>]` | 查询表单数据。`--page` 页码(缺省1)、`--size` 每页条数(缺省1000;不传 pageInfo 平台默认卡 10) |
87
+ | `e10-cli form data delete <objId> <dataId>` | 删除一条表单数据 |
88
+
89
+ ### 表单按钮
90
+
91
+ | 命令 | 说明 |
92
+ |------|------|
93
+ | `e10-cli form button list <objId> <appId>` | 列出所有按钮 |
94
+ | `e10-cli form button add <objId> <appId> <name> [--url <url>\|--open-view <视图>\|--open-layout <表单>\|--start-workflow <流程>] [--layout-type 新建\|编辑\|显示] [--map "目标字段:来源字段"...] [--target-app <appId>] --view <来源视图> --position <位置...>` | 添加通用打开页面按钮。支持固定 URL、平台视图、表单布局及流程快捷入口;`--map` 把当前行来源字段传给目标字段,可多项。当前行映射只允许行上/行末下拉;右上按钮无单行上下文。目标名称不唯一时使用 ID,保存后回读动作和映射 |
95
+ | `e10-cli form button action-set <objId> <appId> <buttonId> [--open-view ...\|--open-layout ...\|--start-workflow ...] [--map ...]` | 更新已有自定义按钮的单一 `openpage` 动作,保留按钮位置和权限;适合修正目标页面或动态字段映射,避免重复创建同名按钮 |
96
+ | `e10-cli form button toggle <objId> <appId> <buttonId>` | 启用/禁用按钮 |
97
+ | `e10-cli form button position <objId> <appId> <buttonId> [--view <视图...> --position <位置...>] [--show-position <json或@文件>] [--replace]` | 设置已有按钮位置并回读验证。默认合并、保留未指定页面;`--replace` 全量替换。视图支持 ID/唯一名称/新建/编辑/显示;多台账不能省略具体视图。系统按钮适用,保留动作权限及返回的日志/提示配置。详见 `references/form/guide-form-button.md` |
98
+ | `e10-cli form button views <objId> <appId> <buttonId>` | 读取该按钮可选视图及当前 showPosition,配置前先查询 |
99
+ | `e10-cli form association list/get <objId> <appId> [associationId]` | 查询关联页签列表或详情;get 必须传 associationId,详情含目标视图、筛选映射和权限 |
100
+ | `e10-cli form association views <objId> <appId> [--target-app <id>]` | 查询可绑定视图及所属表单 |
101
+ | `e10-cli form association fields <objId> <appId> --view <viewId> [--target-app <id>]` | 查询来源表单字段和目标视图字段 |
102
+ | `e10-cli form association create <objId> <appId> <name> --view <viewId> --permissions <json或@文件> [--layouts 显示 编辑] [--terminals PC MOBILE] [--mappings <json或@文件>]` | 创建关联页签;默认仅显示布局、PC+MOBILE、启用。权限必须显式提供,筛选映射为 [{targetField,sourceField}] |
103
+ | `e10-cli form association update <objId> <appId> <associationId> [--name <名>] [--view <viewId>] [--layouts 显示 编辑] [--terminals PC MOBILE] [--enabled true/false] [--mappings <json或@文件>]` | 保留未指定配置;布局和终端为集合替换;显示=0,编辑=2,none 关闭全部布局。多动作时传 --action |
104
+ | `e10-cli form association set-filter <objId> <appId> <associationId> --mappings <json或@文件> [--action <id>]` | 替换目标视图动作的数据筛选字段映射,区别于权限条件 |
105
+ | `e10-cli form association clear-filter <objId> <appId> <associationId> [--action <id>]` | 清空指定视图动作的数据筛选映射 |
106
+ | `e10-cli form association set-condition <objId> <appId> <associationId> --perm <序号或类型> --rules <json或@文件> [--logic and/or]` | 设置页签权限条件,来源表单字段;与关联目标视图数据筛选独立 |
107
+ | `e10-cli form association clear-condition <objId> <appId> <associationId> --perm <序号或类型>` | 清空指定权限条件;完整指南见 references/form/guide-form-association.md |
108
+ | `e10-cli form button info <objId> <appId> <buttonId>` | 查看按钮详情 |
109
+ | `e10-cli form button sort <objId> <appId> <sourceId> <targetId>` | 调整按钮排序 |
110
+ | `e10-cli form button delete <objId> <appId> <buttonId>` | 删除按钮 |
111
+
112
+ > **除非用户明确要求,否则不要往表单写入任何数据。** 表单创建完成后只需确认字段正确即可,不要自动插入测试数据。
113
+
114
+ | `e10-cli form field-linkage list <appId> <objId>` | 字段联动(跨表带出赋值):列出联动 |
115
+ | `e10-cli form field-linkage read <appId> <objId> <id>` | 回读单条(inFields/outFields) |
116
+ | `e10-cli form field-linkage fields <appId> <formId>` | 查源表可带出字段 |
117
+ | `e10-cli form field-linkage delete <appId> <objId> <ids...>` | 删除(批量) |
118
+ | `e10-cli form field-linkage add <appId> <objId> --trigger <字段名> --target <字段名> --hops "<objId:字段名,...>"` | 新增。`--hops` 多跳链式(单跳用 `--source-form/--query-field`)。**Text 字段必须多跳取名称**。详见 `form/guide-field-linkage.md` |
119
+
120
+ > **创建表单流程**:
121
+ > 1. 读取 `references/form/guide-create-form.md` 了解字段类型和参数格式
122
+ > 2. 与用户确认所有字段名和字段类型
123
+ > 3. 将字段定义写入临时 JSON 文件(格式:`[{"componentKey":"Text","fieldName":"姓名"},...]`)
124
+ > 4. 执行 `e10-cli form create ... --fields @<临时文件路径>`
125
+ > 5. 涉及人员的字段统一使用 Employee 类型,不要用 Text
126
+
127
+ ---
128
+
129
+ ## 角色
130
+
131
+ | 命令 | 说明 |
132
+ |------|------|
133
+ | `e10-cli role list` | 列出所有角色(树形结构,含层级关系) |
134
+ | `e10-cli role create <name>` | 创建角色,`--parent <id>` 指定父角色,`--code` 编码,`--remark` 备注 |
135
+ | `e10-cli role delete <ids...>` | 删除角色(可多个) |
136
+ | `e10-cli role add-member <roleId> <keyword>` | 搜索人员并添加到角色 |
137
+
138
+ ## 流程
139
+
140
+ | 命令 | 说明 |
141
+ |------|------|
142
+ | `e10-cli workflow create <appId> <formObjId> <name> [desc]` | 创建流程,自动设置所有人可发起。**默认不加菜单**,要入口传 `--menu`(发起菜单 LAYOUT,指向表单新建页 `/sp/ebdfpage/card/1/<formObjId>/0`,点开即触发流程);漏加 `e10-cli menu add-start <appId> <formObjId>` 补 |
143
+ | `e10-cli workflow create-workflow <name>` | **非默认路径**。仅当用户明确强调「用流程表单 / 工作流程 / 流程中心建流程、不在应用下」时才用;默认走上一条 `workflow create`(eb 应用内)。关联流程表单:不传 `--form-id` 自建(`relateForm=0`,服务端建表回吐 `data.formId`)/ `--form-id <已有>` 绑定(`relateForm=1`)。`--workflow-type`(默认 -1=其它)、`--sub-company <机构>`(团队必传)、`--belong-type <0个人/1团队>`(默认 1)、`--table-name`、`--desc`、`--is-free`、`--layout <FLOW流式(默认)/EXCEL表格式>`(自建模式下 EXCEL 走 formmanage/saveForm 建表后绑定,对齐 eb 表 `form create --layout EXCEL`;建表后不可切换)。不带 source/messageParams |
144
+ | `e10-cli wf-form read <formId>` | **流程表单管理(非默认路径)**。读流程表单字段(getConfig)。`<formId>` 由 `workflow create-workflow` 回吐。与 eb 表 `form read` 对齐,走 `/api/workflow/core/form/...`(module=workflow、customParam={}、无 apid) |
145
+ | `e10-cli wf-form add-field <formId> <字段名> <类型> [标题]` | 给流程表单加字段。类型:Text/TextArea/Number/Money/Date/DateTime/Select/Employee/Department/Browser。`--sub-form-id <明细subFormId>` 明细字段;`--multiple` 多选;`--precision`/`--percent`/`--default`(Number/Money);`--format`(日期精度)。formTableId 省略 |
146
+ | `e10-cli wf-form edit-field <formId> <fieldId> [--title <标题>] [--multiple|--single]` | 编辑已有字段(read-modify-write)。`--multiple`/`--single`:Employee/Department/Browser 切 isSingle,Select↔SelectMultiple。必填为布局级用 `wf-form layout init --required` |
147
+ | `e10-cli wf-form formula set <formId> --expression "DAYS({主表.开始时间},{主表.结束时间})" --target <fieldId>` | 给流程表单字段绑定计算公式。`{主表.字段}`/`{明细表名.字段}` 引用(getConfig 解析)→ `/api/excel/formula/save`(module=workflow) → ffExpress 绑字段 + saveSourceForm。`--name`/`--return-type`。另:`formula get <id>` / `list <formId>` / `functions` |
148
+ | `e10-cli wf-form linkage <formId> <联动名> --config '{"conditions":[{"field":"请假天数","operator":"EQUAL","value":"3"}],"actions":[{"prop":"hide","fields":["请假事由"]}]}'` | 显隐联动。`--config` 写字段名(自动 getConfig 解析 fieldId/dataKey)。prop: hide/show/edit/readonly/required/hideLine;operator: EQUAL/NOT_EQUAL/GREATER/LESS/EMPTY 等 |
149
+ | `e10-cli wf-form validate add <formId> <字段名...> [--remind] [--help <提示>]` | 字段查重规则(多字段 AND,重复禁止提交/提醒)。`list`/`delete <ruleId>`。字段名自动 getConfig 解析 |
150
+ | `e10-cli wf-form relate <formId> <目标字段> --from <Employee/Department源字段> [--key email/department/code/name] [--title <名>]` | 值带出:换表内 Employee/Department 字段自动填目标字段(HRM 属性带出)。`--key` 默认 Employee=department/Department=name。机制同 eb 表(ffRelateField,Employee 源 module=hrm) |
151
+ | `e10-cli wf-form permission get <formId>` | 查看流程表单字段权限(display/readOnly/required/disableEdit)。**写字段权限用 `workflow node field-permission`**(节点级,流程表单表单级写平台多返 500) |
152
+ | `e10-cli wf-form add-detail-table <formId> <明细表名> [首字段名] [--init]` | 给流程表单加明细子表(saveSubForm+首字段+可选 init 放入布局)。机制同 eb 表 `form add-detail-table` |
153
+ | `e10-cli wf-form field-options <formId> <fieldId> --options '[{"name":"事假"},...]' [--default <序号>]` | 给流程表单 Select/SelectMultiple 配选项(read-modify-write:getFormField 读全字段→改 options→saveFormFieldNew 重存)。`--options` 支持 `@文件`;`--default` 默认选项 valueKey |
154
+ | `e10-cli wf-form layout init <formId>` | 初始化/重建流程表单布局(initLayout,按 layoutType 选模板,默认 FLOW)。`--read-only`/`--required`/`--single-row` 覆盖字段属性 |
155
+ | `e10-cli wf-form layout add <formId> --name <布局名>` | 新增一套流程表单布局。`--layout-type FLOW|EXCEL`(默认 FLOW)、`--terminal-type PC|MOBILE`(默认 PC)、`--describe`、`--workflow-id`;返回 `layoutId`,多套布局并存且不覆盖原布局 |
156
+ | `e10-cli wf-form layout delete <formId> <layoutId>` | 删除指定流程表单布局。`layoutId` 取自 `layout add` 返回值;可传 `--workflow-id`、`--terminal PC|MOBILE`(默认 PC)。该操作从布局列表移除目标布局 |
157
+ | `e10-cli wf-form field-prop <formId>` | 设置运行时布局字段属性:`--required <字段...>`、`--no-required <字段...>`、`--readonly <字段...>`、`--editable <字段...>`、`--single-row <字段...>`。字段可传名称或 ID;内部 getConfig 读取并由 initLayout 保存,同时保留已有分组和独占一行设置 |
158
+ | `e10-cli wf-form group <formId> --groups '{"基本信息":["字段名/ID",...]}'` | 给**已建好的流程表单**加字段分组(折叠容器,对齐 eb 表 `form group`)。建组 saveFieldGroup → 分配 updateFormFieldGroup → initLayout generateCollapse 渲染。`--groups` 可 `@文件`;同名分组复用不重复建(去重) |
159
+ | `e10-cli workflow list <appId>` | 列出应用下的所有流程 |
160
+ | `e10-cli workflow search` | 通用搜索流程(不依赖 appId)。`--name`/`--id`/`--type`/`--belong` |
161
+ | `e10-cli workflow nodes <workflowId>` | 查看流程节点详情(名称、类型、操作者、连线含 linkId) |
162
+ | `e10-cli workflow nodes <wf> --mode list` | 列表视图:展示全节点含 nodeAttr、合流方式(比 chart XML 更全) |
163
+ | `e10-cli workflow set-operator <wf> <node> [keyword]` | 设置节点操作者。`--type user`(指定人) / `role`(指定角色) / `dept`(指定部门) / `position`(指定岗位) / `all`(所有人) / `free`(自由选择) / `superior`(发起人上级) / `initiator`(流程发起人本人) / `prev-node`(上一节点) / `form`(表单相关人员) / `matrix`(矩阵对应,需 `--matrix-id` `--value-config-id` `--matrix-rule`)。`--sign-order` 会签/非会签/竞签/依次处理/抄送/抄送需批注(form 类型也支持,概念见 guide-workflow)。**依次处理倒序**用 `--execute-order 2-2`(默认)/`2-1`正序/`1-1,2-2`安全级别正序+倒序。**`--dept-scope 本部门`**=单个部门内会签/`本及下级`默认。**一个节点多人用逗号分隔 keyword**(如 `"区域经理,部门领导"`,user/dept 都支持);默认每次全量重建操作者组(先清空再新建),重复设置不堆积。**多操作者组叠加(如「部门领导矩阵 + 门店经理矩阵」双组会签):先用 set-operator 配第一组,再用 `--append` 配第二组**,`--append` 不清空已有组,两组合起来就是双矩阵会签 |
164
+ | `e10-cli workflow generate-link-id <wf>` | 生成新连线 ID |
165
+ | `e10-cli workflow add-node <wf> <type> <name>` | 添加节点(列表 API)。`<type>`: 0=发起 1=审批 2=确认 3=归档 5=投递 7=自动处理 8=等待 / forkstart/forkend/forkmiddle。**结束节点=归档节点(type=3)**。`--node-attr` 节点属性;合流点支持 `--merge-type`(0=全部/1=指定/2=数量/3=比例)、`--merge-num`、`--branch-nodes` |
166
+ | `e10-cli workflow rename-node <wf> <nodeId> <name>` | 重命名节点(saveNodeSetForm API) |
167
+ | `e10-cli workflow add-link <wf> <from> <to> <label>` | 一键添加连线(列表 API)。`--reject` 退回 / `--default` 默认出口 |
168
+ | `e10-cli workflow add-links <wf> @links.json` | 批量添加连线(列表 API,一次保存)。格式:`[{"from":"节点ID","to":"节点ID","label":"标签","reject":true,"default":true}]` |
169
+ | `e10-cli workflow link-list <wf>` | 查看出口列表(含默认/退回/条件标志)。`--node-id` 过滤单节点 |
170
+ | `e10-cli workflow link-save <wf> @datas.json` | 修改/删除出口(列表方式)。`--delete-rows`/`--changed-link-ids`/`--update-row-ids` |
171
+ | `e10-cli workflow link-rename <wf> <linkId> <名称>` | 重命名出口(连线名称)。linkId 用 link-list 查看。实现:读出口列表 → 改 linkName → saveNodeLinkEditTable(updateRowIds) |
172
+ | `e10-cli workflow numbering read <wf>` | 查看流程编号规则 |
173
+ | `e10-cli workflow numbering enable <wf>` | 启用流程编号(`--off` 关闭)。方案要求"流程有编号"时必做,平台默认不自动启用 |
174
+ | `e10-cli workflow numbering set <wf> [--prefix <前缀>] [--separator <ch>] [--serial <n>] [--no-year] [--dry-run]` | **配置流程编号规则**(一次设全组成):前缀 + 流水号位数(默认4)+ 可选年份段。**`--separator <ch>` 段间分隔符**(如 `-` `~`):在相邻段(前缀-年、年-流水)间自动插独立固定段 → `--prefix QXBK --separator ~ --serial 4` = `QXBK~2026~0001`;平台分隔符就是独立 FIX_CONTEXT 段、可多个固定段共存。`--dry-run` 只打印将产出的段序列(复用/新建/删除)不落库。旧版曾按类型只留一段会删掉已有分隔符段。`--prefix LC --serial 4 --no-year` → `LC0001`。比 `add-component` 逐个加更省事,常用这条 |
175
+ | `e10-cli workflow numbering add-component <wf> --type fixed\|date\|field --value <text> --format <yyyyMMdd> --field-id <id>` | 添加编号组成项:fixed=固定内容 / date=日期 / field=表单字段 |
176
+ | `e10-cli workflow numbering reserve <wf> <count> [--prefix]` | 预留编号。**流程编号=REQUEST_NO 系统字段**:eb表单绑流程后编号走本命令(不要用 `form serial-mark` 表单编号,那对流程表无效) |
177
+ | `e10-cli workflow node validate <wf> <nodeId> --rule "主题字段 操作 值字段或字面值"` | 节点提交校验(智能审批规则,提交时拦截)。值可以是**字段**(字段 vs 字段)或**字面值**(字段 vs 常量);主题字段支持**跨表**——用「明细表名.字段名」定位明细字段做主子表校验:`"请假时长 小于 4"`、`"行程明细.行程开始时间 等于 出差开始日期"`(明细字段=主表字段)。`--name` 规则名;`--disable` 关闭;`--view` 查看 |
178
+ | `e10-cli workflow node menu <wf> <nodeId>` | 查看/切换节点操作菜单。`--toggle <menuId>` 切换启用状态 |
179
+ | `e10-cli workflow node reject <wf> <nodeId>` | 配置节点退回设置。`--remind`/`--type`/`--checked-node`/`--submit-type` |
180
+ | `e10-cli workflow node timeout <wf> <nodeId>` | 配置节点超时处理。`--time-type`/`--time-value`/`--flow-type`/`--remind-type` |
181
+ | `e10-cli workflow node field-permission get <wf> <nodeId>` | 查看节点字段权限(各字段 显示/隐藏)。表单字段在节点上可见与否 |
182
+ | `e10-cli workflow node field-permission set <wf> <nodeId> --hide <字段...>` | 设置节点字段显示/隐藏。`--hide 字段名/ID` 隐藏、`--show` 显示;可多个,已设权限则更新、未设则新建 |
183
+ | `e10-cli workflow node sign <wf> <nodeId>` | 节点签字意见必填(退回时必填意见等)。缺省查看;`--all-required` 全部必填、`--none-required` 全部不必填、`--select "退回,加签"` 指定操作类型必填(按 mustInputDto=2 + 选中操作类型 id)。`getSignConfigForm` 枚举操作类型 |
184
+ | `e10-cli workflow node empty-handle get <wf> <nodeId>` | 查看节点**流程异常处理**(无可处理人时怎么办) |
185
+ | `e10-cli workflow node empty-handle set <wf> <nodeId> --handle-way <1-5>` | 设置节点流程异常处理:1=指定人员(`--person 名称/ID`) / 2=用户指定 / 3=发起人 / 4=自动流转下一节点 / 5=提交指定节点(`--assign-node <节点ID>`);`--off` 关闭;`--sync` 同步所有节点 |
186
+ | `e10-cli workflow setting title <wf>` | 流程标题规则(发起后标题按规则生成,如"发起人-提交日期-客户名称"→真实数据)。缺省列出可用变量(发起人/部门/日期/表单字段);`--rule "发起人\|提交日期\|客户名称"` 竖线分隔字段名设置;`--sep <分隔符>` 默认 `-`;`--disable` 关闭自动生成(标题回退流程名+系统默认)。占位符 `$code$`,平台发起时替换为真实值 |
187
+ | `e10-cli workflow setting submit <wf>` | 提交确认设置。`--confirm`/`--node-range`/`--show-way` |
188
+ | `e10-cli workflow setting sign <wf>` | 签字意见设置。`--show-order`/`--inform-range` |
189
+ | `e10-cli workflow setting comment <wf>` | 评论功能开关。`--enable` |
190
+ | `e10-cli workflow setting batch <wf>` | 批量操作设置。`--enable-batch`/`--enable-turn-todo`/`--enable-consult`/`--enable-reject` |
191
+ | `e10-cli workflow setting auto <wf>` | 自动处理设置。`--enable`/`--way`/`--follow-type` |
192
+ | `e10-cli workflow setting other <wf>` | 其他设置。`--message-op`/`--auto-save`/`--switch-identity` |
193
+ | `e10-cli workflow advanced doc <wf>` | 流程存档设置。`--enable`/`--dir-select`/`--doc-types` |
194
+ | `e10-cli workflow advanced schedule <wf>` | 定时触发审批。`--enable`/`--frequency`/`--begin-date`/`--time`/`--weekday-only`/`--sms`/`--email`/`--message`/`--limit-creator` |
195
+ | `e10-cli workflow advanced schedule-range <wf>` | 定时触发人员范围。`--list`/`--add`/`--delete` |
196
+ | `e10-cli workflow delete <workflowId>` | 删除流程。`--with-form` 同时删除关联表单 |
197
+ | `e10-cli workflow delete-link <wf> <linkIds...>` | 删除连线(列表 API,可多个)。自动清理关联节点 |
198
+ | `e10-cli workflow delete-node <wf> <nodeId>` | 删除节点(自动清理关联出口)。`--bridge` 桥接上下游 |
199
+ | `e10-cli workflow save-layout <wf> @xmlfile` | 保存完整流程图 XML(浏览器 mxGraph 格式:数字 cell id + nodeId/linkId)。服务器只认浏览器格式,勿转 node_X。新增节点/连线会自动注入 flag="add" |
200
+ | `e10-cli workflow auto-layout <wf>` | **节点自动排版**(分层布局,全量重排坐标)。`--direction ltr/ttb`(默认ltr)、`--gap-x/--gap-y` 间距、`--dry-run` 只算不打回、`--out` 配合 dry-run 输出新 XML。忽略退回线分层,分支自然融入 |
201
+ | `e10-cli workflow condition add <wf> <sourceId> <nodeId> <name> --rule "..."` | **简化语法**添加条件。`--rule "system:流程标题:包含:关键词"` 或 `--rule "form:字段ID|字段名|dataKey:大于:1000"`(fieldId/名/dataKey 均可匹配)。按 fieldType 自动判族校验算子,`--relation AND/OR`。**增强语法**:字段vs字段 `form:字段:大于:field:值字段`(range 用 `form:字段:范围:field:左:右`);明细量词 规则末尾 `:任一`/`:所有`;多值属于 `form:字段:包含:值1,值2`;人员/部门字段 `form:人员字段:包含:张三,李四` 自动解析成对象;系统字段 `system:紧急程度:等于:紧急`;嵌套 OR 用 `\|` 分隔 `form:关联项目:不为空\|form:关联客户:不为空`。详见 `workflow/guide-workflow-condition.md` |
202
+ | `e10-cli workflow save-condition @jsonfile --app-id <appId>` | 保存条件规则(原始 JSON)。CLI 自动生成 ID 并绑定到连线 |
203
+ | `e10-cli workflow condition list <wf>` | 列出工作流下所有连线绑定的条件(连线名 + 条件名 + 表达式 + mapId),支持 `--name` 过滤 |
204
+ | `e10-cli workflow condition get <wf> <id>` | 查看单个条件详情。`<id>` 可用 conditionKey / mapId / conditionId |
205
+ | `e10-cli workflow condition delete <wf> <id> [--link-id <linkId>] [--node-id <nodeId>]` | 删除条件(删定义 + 解绑连线)。`<id>` 同 get |
206
+ | `e10-cli workflow set-link-condition-key <wf> <link> <key> <node>` | 绑定条件 Key 到连线 |
207
+ | `e10-cli workflow save-action @jsonfile` | 加节点提交动作(常量赋值)。**只接 JSON 一个参数**,`workflowId`/`nodeId` 写在 JSON 内部(不是位置参数)。JSON 格式见 `workflow/guide-workflow-action.md` |
208
+ | `e10-cli actionflow generate '{"planFile":"@plan.json","appName":"AI-名称"}'` | **动作流生成**(语义 plan → 编译 → preflight → 保存并启用 → 正式回读,返回设计器链接)。`planFile` 必须以 `@` 引用文件(`@plan.json` 或 `@绝对路径`),CLI 强制要求 `@` 前缀。event 节点 `ApproveTrigger` 自带流程节点触发绑定(`workflowPath`+`triggerTiming`+`approveNode`/`approveLink`),不走 pathdef/addaction,无需单独绑节点。默认保存并启用;`{"mode":"stash",...}` 显式暂存。组件契约/参数/映射/条件的权威是 `e10-cli actionflow component-describe <type>`,详见 `actionflows/SKILL.md`。覆盖 ActionEb 全系列/Approve/Document/Hrm/触发器(含 CustomTrigger、InnerMQListener)/消息(含 InnerMQSend)/会议日程/逻辑 20+ 组件;InnerMQListener 与 InnerMQSend 同流互斥 |
209
+ | `e10-cli actionflow update '@update-plan.json'` | **已有动作流保留式修改**(精确 appId → 读正式设计 → 备份 → 按原节点 ID 显式 operations → saveDesign(saveNewVersion=true) → 正式回读)。**不可改 event 触发器**(触发类型/表单/时机/参数变了就新建);未声明内容保留。触发类型含按钮触发、自定义触发、内置 MQ 监听/发送 |
210
+ | `e10-cli workflow action list-node <wf> <nodeId> [--trigger-type all\|link]` | 列出节点绑定的动作(getAddActionDataList)。显示每条的动作类型/appId/触发时机,type0 还带字段=值 |
211
+ | `e10-cli workflow action clear-node <wf> <nodeId> [--trigger-type all\|link]` | **清空节点所有动作绑定**(deleteAddAction + delList)。清理重复 add/已删实体残留的悬空绑定;动作流实体另用 `action delete` 清 |
212
+ | `e10-cli workflow action disable <appId> <name>` | 禁用动作流(禁用后才能删除) |
213
+ | `e10-cli workflow action delete <appId> <name>` | 删除动作流(自动先禁用再 batchAddRecycle 删实体)。**平台无"按动作流反查绑定节点"接口**:删实体后,绑定了此动作流的节点会残留**悬空引用**(前端显示「被删除」)。CLI 删完会提示,需逐个用 `action clear-node <wf> <node>` 清理节点绑定 |
214
+ | `e10-cli workflow action batch-delete @list.json` | 批量删除动作流(每项 `{id,name}`,自动先禁用再 batchAddRecycle) |
215
+
216
+ > **加节点**: add-node 直接操作节点列表 API (getNodeEditTable → saveNodeEditTable)
217
+ > **加连线**: add-link/add-links 直接操作出口列表 API (getWfpNodeLinkTable → saveNodeLinkEditTable)
218
+ > **删连线**: delete-link 直接操作出口列表 API (getWfpNodeLinkTable → saveNodeLinkEditTable, deleteRows)
219
+ > **删节点**: delete-node 直接操作节点列表 API (saveNodeEditTable, deleteRows),`--bridge` 自动桥接
220
+ > **查看节点/出口**: nodes --mode list / link-list 走列表 API(比 chart XML 更完整)
221
+ > **加分支条件两种方式**:
222
+ > - 简化: `condition add` — 一行命令搞定
223
+ > - 完整: generate-link-id → save-layout → save-condition → set-link-condition-key
224
+ > **加节点提交动作(字段常量赋值)**: save-action @action.json(格式见 `workflow/guide-workflow-action.md`)
225
+ > **加跨表单动作流**: `e10-cli actionflow generate`(语义 plan 生成 + 保存并启用 + 正式回读,event 自带流程节点绑定);`workflow action` 仅作查/清/删/禁用管理
226
+
227
+ ---
228
+
229
+ ## 菜单
230
+
231
+ | 命令 | 说明 |
232
+ |------|------|
233
+ | `e10-cli menu list <appId>` | 列出当前Ebuilder应用下的菜单 |
234
+ | `e10-cli menu add <name> <path> <appId>` | 将页面加入左侧导航(LINK 类型,URL path)。ecode 页面 path 如 `/sp/custom/ecode/project-list`。**表单台账/流程发起菜单用下面两条专用命令**(VIEWPORT/LAYOUT 类型,非 URL) |
235
+ | `e10-cli menu add-table <appId> <objId> [name]` | 给表单加**台账菜单**(VIEWPORT,指向数据列表页)。`form create --menu` 才自动加(默认不加),此处用于事后补加 |
236
+ | `e10-cli menu add-start <appId> <formObjId> [name]` | 给流程绑定的表单加**发起菜单**(LAYOUT,指向表单新建页,点开触发流程)。`workflow create --menu` 才自动加(默认不加) |
237
+ | `e10-cli menu permission list <appId> <menuId>` | 列菜单可见范围授权(**默认所有人**;无输出=全可见) |
238
+ | `e10-cli menu permission add <appId> <menuId> <目标> --type role\|dept\|user\|all` | 给菜单授权。默认语义:**加角色/人/部门后自动撤「所有人」→ 只有授权对象可见**;`--keep-all` 保留所有人;`--type all` 恢复"所有人可见" |
239
+ | `e10-cli menu permission remove <appId> <menuId> <目标> --type role\|dept\|user\|all` | 撤销菜单授权(撤销所有人用 `--type all`) |
240
+ | `e10-cli menu delete <menuId> <appId>` | 删除菜单项 |
241
+
242
+ ---
243
+
244
+ ## 页面 & 设计器(配置式页面搭建)
245
+
246
+ > 设计器页面 vs Ecode 页面:应用内建页**优先用设计器 Ebuilder 页面(配置式)**——`page create` 建页 → `designer comp-add --template` 加组件(28 个内置 factory 模板)→ 组件 setter/脚本绑数据 → `designer save` → `designer unlock` → `page publish-menu` 发布菜单,全程不写前端代码。详见 `ebuilder-designer/guide-designer.md`。
247
+
248
+ | 命令 | 说明 |
249
+ |------|------|
250
+ | `e10-cli page list --app-id <appId>` | 列应用下页面(id/name/belongModule/terminalScope) |
251
+ | `e10-cli page create <name> <appId> [--scope PC,MOBILE] [--layout-type GRID] [--module EB_PAGE]` | 创建页面(**参数顺序:名称在前、appId 在后,写反会 401**)。免登录页 `--module EB_ANONYMOUS_PAGE` 不支持 Comment/SearchGlobal/FastCreate |
252
+ | `e10-cli page get <pageId>` | 页面详情(模块/终端/权限视图) |
253
+ | `e10-cli page delete <pageIds...>` | 删除页面(软删除,可多个) |
254
+ | `e10-cli page publish-menu <pageId> <appId> [name]` | 页面发布为应用菜单(默认所有人可见,`menu permission` 收窄)。**发布前先 save+unlock**,否则设计器/预览弹「布局未保存」 |
255
+ | `e10-cli designer info <pageId>` | 页面元信息。**看 `allowEdit`/`isLock`**:isLock=1 先 unlock 再 save |
256
+ | `e10-cli designer layout <pageId> [--json] [--terminal pc\|mobile]` | 读布局(`--json` 输出完整两端 JSON 供 save 复用;摘要模式看组件 id/type/标题/坐标) |
257
+ | `e10-cli designer save <pageId> --layouts <json\|@file> [--page-name] [--sync-outdate]` | 保存布局(自动 LZ 压缩)。**入参取自 layout --json、只改 comps;必须含 PC+MOBILE 两端**(缺端丢另一端),CLI 强校验 |
258
+ | `e10-cli designer lock <pageId>` / `designer unlock <pageId>` | 锁定/解锁(软锁;**收尾必做 unlock**,每次都递增版本号) |
259
+ | `e10-cli designer position <pageId> <compId> --x --y --w --h` | 调 PC 栅格位置(12 列;改后自动保存) |
260
+ | `e10-cli designer comp-add <pageId> --template <名\|路径> [--type <Type>] [--x --y --w --h]` | 加组件:内置模板直接传名(`pie`/`bar`/`nlist`/`slide`…28 个,`designer factory-list` 查全表);也可传任意布局 JSON 路径,或 `--from <srcPage> --comp <id>` 从活页克隆。自动生成新 id + PC/MOBILE refCompId 互连并保存 |
261
+ | `e10-cli designer comp-remove <pageId> <compId>` | 移除组件(PC/MOBILE 按 refCompId 联动删) |
262
+ | `e10-cli designer factory-list` | 列出 28 个内置 factory 模板(名称↔组件 type 对照) |
263
+ | `e10-cli designer chart dataset-set\|measure-add\|dimension-add\|title\|height` | **图表配置(全 11 种)**。dataset-set 绑表单;measure-add 加度量(SUM/AVG/MAX/MIN 用 `--field-id`,COUNT 用 `--count-records`);dimension-add 加维度(字段名/ID 均可,Date 自动按月);title 设业务标题;height 设像素高。**Gauge:COUNT+无维度;堆积:2 度量+1 维度;Bubble:只能 1 度量** |
264
+ | `e10-cli designer digital-panel panel-add ...` | 数字面板加 KPI 卡(`--field-id --aggregator SUM\|COUNT\|AVG\|MAX\|MIN --label`) |
265
+ | `e10-cli designer list dataset-set\|field-add\|order-add` | NList 绑数据源/加显示列(`--type` `--comp-type` 同值传字段类型)/加排序 |
266
+ | `e10-cli designer calendar dataset-bind\|field-map\|title` | 日历绑数据源(`--start --end --title-field`,内置全视图渲染)/调映射(`--end clear` 全天单日)/设标题 |
267
+ | `e10-cli designer slide pic-add\|title` | 幻灯片加轮播图(**平台资源路径**,已防 Git Bash 路径转换)/设标题 |
268
+ | `e10-cli designer nav-panel menu-add\|menu-source-type\|title` | 导航面板加跳页菜单(NewPage 双层 eventGroup 自动构造)/切菜单来源 DEFAULT\|CUSTOM/设标题 |
269
+
270
+ > **setter 通用**:`--field-id` 传字段名或 fieldId;绑定条目由 CLI 从 ds/fields 取平台原样字段对象自动构造(不用手填 physicalField/browserParams);其余 12 类非图表组件无 setter,走「导出 layout → 脚本改 config → save」(见 `ebuilder-designer/guide-designer-factory.md` 深度配置节)。
271
+ | `e10-cli designer auto-height <pageId>` | **单列纵堆模式**:按组件内容自动定高 + 重排 y(配完字段后跑一次)。**多列栅格勿用**(会覆盖 w/x),手调 position |
272
+ | `e10-cli designer version list <pageId> [--page] [--size] [--since/--until] [--remark]` | 版本列表(save 自动产生快照;**versionId 取 records[].id 非 version 号**) |
273
+ | `e10-cli designer version revert <pageId> <versionId>` | 还原历史版本(整体替换两端;不可逆,还原前建议 lock) |
274
+
275
+ > **坑**:① save 入参铁律——取自 `/layout/list` 原值只改 comps,元数据不动;② 组件标题用业务名(comp-add 出来是占位名,配完必改);③ 高度是内容驱动(h 过低裁切,`position --h` 调大);④ 非 TTY 环境给 `comp-add` 带 `--yes`。
276
+
277
+ ---
278
+
279
+ ## 人员 & 图标
280
+
281
+ | 命令 | 说明 |
282
+ |------|------|
283
+ | `e10-cli user search <keyword> [count]` | 模糊搜索员工(返回 ID/姓名/部门/手机) |
284
+ | `e10-cli icon search <keyword...>` | 搜索 Ebuilder 图标(4999 个,支持多关键词) |
285
+
286
+ ---
287
+
288
+ ## 版本更新(只提醒,升级需确认)
289
+
290
+ | 命令 | 说明 |
291
+ |------|------|
292
+ | `e10-cli update check` | 强制连网查一次(忽略 24h 缓存),显示 当前/最新/结论。`--on`/`--off` 开关注册 |
293
+ | `e10-cli update apply [--yes]` | 升级到最新(打印将执行的 `npm install -g weaver-e10-builder@<最新>` 并询问确认;加 `--yes` 跳过确认)。仅在线可用,内网走离线 tgz |
294
+
295
+ > **自动提醒**:每次 `e10-cli auth status` 末尾静默检查(每 24h 最多连网一次;离线/内网自动跳过不打扰)。检测到新版本只打一行 `💡 有新版本…`,**不自动安装**。
296
+
297
+ ---
298
+
299
+ ## 代码检查
300
+
301
+ | 命令 | 说明 |
302
+ |------|------|
303
+ | `e10-cli check <项目目录>` | 代码质量检查,逐条自检,全部确认通过后再 build |
304
+
305
+ ---
306
+
307
+ ## 典型工作流
308
+
309
+ ```bash
310
+ # 1. 创建项目ecode
311
+ e10-cli project create 会议室预订
312
+
313
+ # 2. 打包 & 上传
314
+ ecodecmd build /path/to/project --target=e10
315
+ e10-cli project import <projectId> .target/xxx.zip --main-url /sp/custom/ecode/table-demo
316
+
317
+ # 3. 后续改代码再上传(先删旧应用文件夹)
318
+ ecodecmd build /path/to/project --target=e10
319
+ e10-cli project tree <projectId> # 找旧应用 folderId
320
+ e10-cli project delete-folder <folderId>
321
+ e10-cli project import <projectId> .target/xxx.zip --main-url /sp/custom/ecode/table-demo
322
+
323
+ # 4. 需要表单时
324
+ e10-cli app create 会议室管理 # → appId
325
+ # 先写字段定义文件 fields.json,然后:
326
+ e10-cli form create <appId> 会议室表单 /path/to/project --fields @fields.json # → objId
327
+ e10-cli form read <objId> --app-id <appId> --out fields.json # 写入 fields.json(推荐)
328
+
329
+ # 5. 角色管理
330
+ e10-cli role create 财务主管 --code CW01 --remark "审批角色"
331
+ e10-cli role add-member <roleId> 张三
332
+
333
+ # 6. 创建流程
334
+ e10-cli workflow create <appId> <formObjId> 会议室审批
335
+ e10-cli workflow nodes <workflowId> # 查看节点
336
+
337
+ # 7. 配置审批节点
338
+ e10-cli workflow set-operator <wf> <nodeId> 张三 # 指定人
339
+ e10-cli workflow set-operator <wf> <nodeId> 财务主管 --type role # 指定角色
340
+
341
+ # 8. 加分支条件(如金额≥1000走CEO审批)
342
+ e10-cli workflow generate-link-id <wf> # → newLinkId
343
+ e10-cli workflow save-layout <wf> @修改后的xml文件
344
+ e10-cli workflow save-condition @条件.json # → conditionKey
345
+ e10-cli workflow set-link-condition-key <wf> <linkId> <key> <nodeId>
346
+
347
+ # 9. 添加菜单
348
+ e10-cli menu add 会议室预订 /sp/custom/ecode/meeting/list <appId>
349
+
350
+ # 10. 配置动作流(新建/修改)—— 新建走 generate,已有流修改走 update
351
+ # 先查目标表字段 + 流程上下文 paramKey
352
+ e10-cli actionflow form-fields '{"tableId":"<targetTableId>","appId":"<targetAppId>"}'
353
+ e10-cli actionflow workflow-context-fields '{"workflowId":"<wf>"}'
354
+ # 按名称或 paramKey 筛选;默认每页仅 20 条,避免终端截断
355
+ e10-cli actionflow workflow-context-fields '{"workflowId":"<wf>","query":"数据ID"}'
356
+ # 输出完整原始 JSON(终端仍只显示可用摘要,避免截断)
357
+ e10-cli actionflow workflow-context-fields '{"workflowId":"<wf>"}' --out context.json
358
+ # 正式设计回读同理;默认摘要,raw:true 才直接打印完整 JSON
359
+ e10-cli actionflow read-design '{"sceneId":"<sceneId>"}' --out design.json
360
+ # 写 plan.json(event=ApproveTrigger 带 workflowPath+triggerTiming;actions=ActionEbAdd/Update/Delete)
361
+ # mapping: {"源paramKey":"目标字段ID"},目标ID +前缀=累加 -前缀=累减;明细仅 add;
362
+ # update 定位: opType=id(关联字段)/updateData+filterCondition(requestId 定位走 ApprovalData paramKey)
363
+ e10-cli actionflow generate '{"planFile":"@plan.json","appName":"AI-动作流名"}' # planFile 必须以 @ 引用文件(@plan.json 或 @绝对路径)
364
+ # 管理: list-node 查节点绑定 / clear-node 清 / delete/disable 删动作流
365
+ e10-cli workflow action list-node <wf> <nodeId>
366
+ ```