weaver-e10-builder 1.6.0 → 1.6.5
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.
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +2 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +109 -51
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/form-add-detail-table.js +3 -3
- package/dist/commands/form-add-detail-table.js.map +1 -1
- package/dist/commands/form-attachment-setting.d.ts +3 -0
- package/dist/commands/form-attachment-setting.d.ts.map +1 -0
- package/dist/commands/form-attachment-setting.js +422 -0
- package/dist/commands/form-attachment-setting.js.map +1 -0
- package/dist/commands/form-browser-definition.js +8 -8
- package/dist/commands/form-browser-definition.js.map +1 -1
- package/dist/commands/form-code.js +7 -7
- package/dist/commands/form-code.js.map +1 -1
- package/dist/commands/form-data.d.ts.map +1 -1
- package/dist/commands/form-data.js +50 -2
- package/dist/commands/form-data.js.map +1 -1
- package/dist/commands/form-ebuilder-scope.js +8 -8
- package/dist/commands/form-ebuilder-scope.js.map +1 -1
- package/dist/commands/form-engine-linkage.js +12 -12
- package/dist/commands/form-engine-linkage.js.map +1 -1
- package/dist/commands/form-field-linkage.d.ts +6 -1
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +138 -31
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-layout-diff.js +1 -1
- package/dist/commands/form-layout-diff.js.map +1 -1
- package/dist/commands/form-layout-edit.js +1 -1
- package/dist/commands/form-layout-edit.js.map +1 -1
- package/dist/commands/form-layout-init-reviewed.js +1 -1
- package/dist/commands/form-layout-init-reviewed.js.map +1 -1
- package/dist/commands/form-layout-init.js +2 -2
- package/dist/commands/form-layout-init.js.map +1 -1
- package/dist/commands/form-layout-template-easy.js +1 -1
- package/dist/commands/form-layout-template-easy.js.map +1 -1
- package/dist/commands/form-layout.js +4 -4
- package/dist/commands/form-layout.js.map +1 -1
- package/dist/commands/form-view.d.ts.map +1 -1
- package/dist/commands/form-view.js +1 -2
- package/dist/commands/form-view.js.map +1 -1
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +50 -5
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +39 -6
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/report-admin.js +1 -1
- package/dist/commands/report-admin.js.map +1 -1
- package/dist/commands/report-query.js +1 -1
- package/dist/commands/report-query.js.map +1 -1
- package/dist/commands/report.js +1 -1
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/wf-form-layout-init-reviewed.d.ts +3 -0
- package/dist/commands/wf-form-layout-init-reviewed.d.ts.map +1 -0
- package/dist/commands/wf-form-layout-init-reviewed.js +71 -0
- package/dist/commands/wf-form-layout-init-reviewed.js.map +1 -0
- package/dist/commands/wf-form.d.ts +1 -0
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +16 -16
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-advanced.js +1 -1
- package/dist/commands/workflow-advanced.js.map +1 -1
- package/dist/commands/workflow-basic-info.js +4 -4
- package/dist/commands/workflow-basic-info.js.map +1 -1
- package/dist/commands/workflow.js +6 -6
- package/dist/commands/workflow.js.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/classified_protection_source.d.ts +10 -0
- package/dist/services/actionflow/classified_protection_source.d.ts.map +1 -0
- package/dist/services/actionflow/classified_protection_source.js +27 -0
- package/dist/services/actionflow/classified_protection_source.js.map +1 -0
- package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.js +4 -5
- package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +13 -1
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts +12 -0
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +88 -3
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_create.js +6 -10
- package/dist/services/actionflow/components/approve_create.js.map +1 -1
- package/dist/services/actionflow/components/condition.d.ts.map +1 -1
- package/dist/services/actionflow/components/condition.js +3 -2
- package/dist/services/actionflow/components/condition.js.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.js +9 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
- package/dist/services/actionflow/components/send_message.js +1 -1
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +20 -11
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +9 -1
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/design_client.d.ts +4 -0
- package/dist/services/actionflow/design_client.d.ts.map +1 -1
- package/dist/services/actionflow/design_client.js +65 -0
- package/dist/services/actionflow/design_client.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +9 -2
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +21 -6
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +153 -37
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +14 -3
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +276 -42
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +154 -23
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/form-attachment-settings.d.ts +110 -0
- package/dist/services/form-attachment-settings.d.ts.map +1 -0
- package/dist/services/form-attachment-settings.js +332 -0
- package/dist/services/form-attachment-settings.js.map +1 -0
- package/dist/services/form-attachment-upload.d.ts +30 -0
- package/dist/services/form-attachment-upload.d.ts.map +1 -0
- package/dist/services/form-attachment-upload.js +76 -0
- package/dist/services/form-attachment-upload.js.map +1 -0
- package/dist/services/form-data-openapi.d.ts +2 -0
- package/dist/services/form-data-openapi.d.ts.map +1 -1
- package/dist/services/form-data-openapi.js +1 -0
- package/dist/services/form-data-openapi.js.map +1 -1
- package/dist/services/workflow-layout-init-reviewed.d.ts +35 -0
- package/dist/services/workflow-layout-init-reviewed.d.ts.map +1 -0
- package/dist/services/workflow-layout-init-reviewed.js +120 -0
- package/dist/services/workflow-layout-init-reviewed.js.map +1 -0
- package/package.json +1 -1
- package/skill-docs/SKILL.md +163 -160
- package/skill-docs/_catalog.md +6 -4
- package/skill-docs/actionflows/SKILL.md +2 -0
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +2 -0
- package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +1 -1
- package/skill-docs/actionflows/references/components/logic/Condition.md +2 -0
- package/skill-docs/actionflows/references/components/message/SendMessage.md +2 -2
- package/skill-docs/actionflows/references/components/workflow/ApproveCommit.md +17 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +1 -1
- package/skill-docs/actionflows/references/components/workflow/ApproveSave.md +1 -1
- package/skill-docs/actionflows/references/components/workflow/ApproveSendBack.md +17 -17
- package/skill-docs/assets/sample/api/formApi.js +689 -510
- package/skill-docs/assets/sample/app/config.js +4 -0
- package/skill-docs/assets/sample/app/fields.js +25 -0
- package/skill-docs/assets/sample/entry.js +24 -22
- package/skill-docs/assets/sample/eslint.config.cjs +1 -0
- package/skill-docs/assets/sample/pages/Items.js +247 -0
- package/skill-docs/assets/sample/styles/prototypeStyles.js +137 -0
- package/skill-docs/references/coding/guide-edit-backfill.md +102 -150
- package/skill-docs/references/coding/guide-form-crud.md +195 -172
- package/skill-docs/references/coding/guide-html-to-react.md +250 -0
- package/skill-docs/references/coding/guide-page-code.md +194 -167
- package/skill-docs/references/coding/guide-page-export.md +27 -18
- package/skill-docs/references/coding/ref-compile-rules.md +7 -7
- package/skill-docs/references/common/map.md +2 -1
- package/skill-docs/references/common/ref-cli-commands.md +14 -6
- package/skill-docs/references/components/display-FilePreview.md +5 -4
- package/skill-docs/references/form/guide-browser-definition.md +73 -40
- package/skill-docs/references/form/guide-field-linkage.md +4 -1
- package/skill-docs/references/form/guide-form-attachment-setting.md +95 -0
- package/skill-docs/references/form/guide-form-data.md +22 -1
- package/skill-docs/references/form/layout/code-block/layout-css.md +41 -0
- package/skill-docs/references/form/layout/initialization.md +2 -0
- package/skill-docs/references/form/layout/layout-overview.md +8 -0
- package/skill-docs/references/form/layout/template/advanced.md +21 -0
- package/skill-docs/references/form/layout/template/easy.md +2 -0
- package/skill-docs/references/form/layout/template/flow.md +2 -0
- package/skill-docs/references/form/layout/template/template-guide.md +3 -1
- package/skill-docs/references/form/layout/workflow-layout.md +13 -1
- package/skill-docs/references/form/ref-form-fields.md +18 -4
- package/skill-docs/references/workflow/guide-workflow-odoc.md +1 -1
- package/skill-docs/assets/sample/config/config.js +0 -0
- package/skill-docs/assets/sample/config/configLoad.js +0 -0
- package/skill-docs/assets/sample/config/configLoad_default.js +0 -0
- package/skill-docs/assets/sample/config/config_default.js +0 -0
- package/skill-docs/assets/sample/memo.md +0 -0
- package/skill-docs/assets/sample/readme.js +0 -8
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
| 命令 | 说明 |
|
|
19
19
|
|------|------|
|
|
20
20
|
| `e10-cli project create <name> [desc]` | 新建 Ecode 项目(名称自动追加时间戳) |
|
|
21
|
-
| `e10-cli project import <projectId> <zip> --main-url <url
|
|
21
|
+
| `e10-cli project import <projectId> <zip> --main-url <url> [--replace]` | 导入 zip 包,`--main-url` **必填**;`--replace` 导入前清理同名旧应用目录(含 `ecode1`/`ecode2` 后缀),避免并存 |
|
|
22
22
|
| `e10-cli project tree <parentId>` | 查看目录结构 |
|
|
23
23
|
| `e10-cli project read <fileId>` | 读取代码文件内容 |
|
|
24
24
|
| `e10-cli project update <fileId> <content>` | 更新代码文件(content 以 `@` 开头则为文件路径) |
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
| `e10-cli project delete-folder <folderId>` | 删除文件夹(= 删除应用) |
|
|
29
29
|
|
|
30
30
|
- 导入成功后会在 Ecode 项目下生成应用文件夹
|
|
31
|
-
-
|
|
31
|
+
- 二次导入用 `--replace`;不带时会新建一个同名/带数字后缀的目录
|
|
32
|
+
- `--replace` 先删同名旧目录再导入;如果导入失败,旧目录已删除,需要重新导入
|
|
32
33
|
|
|
33
34
|
---
|
|
34
35
|
|
|
@@ -70,8 +71,8 @@
|
|
|
70
71
|
| `e10-cli app unpublish <appId>` | 取消发布(收回前台入口)。⚠ **不可逆、无回收站**;重新发布是新入口。回读确认入口确实没了才报成功 |
|
|
71
72
|
| `e10-cli app lang get <appId>` | 查看应用名各语言译文 |
|
|
72
73
|
| `e10-cli app lang set <appId> [--zh] [--en]` | 设置应用名多语言。**简体中文那档就是应用名本身**;只给 `--en` 不会清空中文(内部先读回再整份写回)。改应用名(`app edit --name`)不动多语言配置 |
|
|
73
|
-
| `e10-cli form read <objId> [--app-id <appId>] [--out <file>]` | 读取表单字段。`--app-id`
|
|
74
|
-
| `e10-cli form read <objId> --app-id <appId> --out fields.json` |
|
|
74
|
+
| `e10-cli form read <objId> [--app-id <appId>] [--out <file>]` | 读取表单字段。`--app-id` 含明细表字段、Select/RadioBox/CheckBox 选项、`dataKey`(写入 request key)、`multiSelect`、日期 `format`、`optionIds`(选项名→ID)及物理表归属;`--out fields.json` 写 UTF-8 JSON。**字段名就是字段标题**;标题为空说明没写进去 |
|
|
75
|
+
| `e10-cli form read <objId> --app-id <appId> --out fields.json` | 生成页面 `fields.js` 和选项映射的推荐入口:选项、dataKey、多选、日期格式一次导出 |
|
|
75
76
|
| `e10-cli form list <appId>` | 列出应用下的所有表单 |
|
|
76
77
|
| `e10-cli form create <appId> <name> <dir> --fields @<json文件>` | 创建表单。`--fields` **必填**。支持 DetailTable(嵌套formFields)、EBuilder(sformId+dataTitle,**明细 `formFields` 内的 EBuilder 同样绑定**)、relateFrom(联动)。**开关 `Switch` 自动配置固定选项 开启=1 / 关闭=0**(主表/明细/后续加字段同)。fields.json 字段可带 `"required":true`/`"readOnly":true` 直标(写进布局 comps)。**字段名与平台系统字段重名(标题/创建者/创建时间/数据ID/最后更新人/数据状态)→ 不新建物理字段、复用系统字段**,并把该字段在**布局置为可见**(platform 系统字段默认隐藏;可写 `"singleRow":true` 独占一行、`"hidden":true` 保持隐藏)。`--json` 返回 `skippedSys`。**默认不加菜单**,要入口传 `--menu`(台账菜单 VIEWPORT);漏加 `e10-cli menu add-table <appId> <objId>` 补。**`--table-name <名>` 自定义数据库表名**(平台前缀如 `uf_` 由 CLI 自动补,传 `cs_khxx` 与 `uf_cs_khxx` 等价;字母开头、只含字母数字下划线;自定义部分受平台长度上限约束——`uf_` + 总长 30 时最多 27 位,越界直接报错不建半张表;建成后回读校验实际表名;仅物理表应用适用) |
|
|
77
78
|
| `e10-cli form virtual source-groups` / `sources <groupId>` | 查询 EB 表单和系统业务数据源分组、数据源列表 |
|
|
@@ -177,7 +178,8 @@
|
|
|
177
178
|
| `e10-cli form layout delete <objId> <appId> <布局ID>` | 删除一套布局(设计器的「删除」)。⚠ **不可逆**。删完**回读确认列表里确实没了**才算成功;该布局原先占的用途档位会一并打印。删掉正占着 `all` 的那套会怎样**未验证**,慎用 |
|
|
178
179
|
| `e10-cli form group <objId> <appId> --groups '{"基本信息":["字段名/fieldId",...]}'` | 给**已建好的 eb 表**加字段分组(折叠容器)。建组 saveFieldGroup → 分配 updateFormFieldGroup → initLayout generateCollapse 渲染。`--groups` 可 `@文件`;`--required` 同时设分组内字段必填;同名分组复用不重复建(去重)。建表时一次性带分组用 `form create` 的 fields.json `group` 属性 |
|
|
179
180
|
| `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` |
|
|
180
|
-
| `e10-cli form data
|
|
181
|
+
| `e10-cli form data upload --file <路径...> [--create-doc on\|off] [--module ebuilder]` | 上传附件文件,返回 `fileId` / `docId`。表单附件默认 `createDoc=true`,同时生成文档;`--create-doc off` 只留文件、文档中心没有文档。输出 `fileIds` 逗号串,可直接填 `form data add/update` 的附件字段 |
|
|
182
|
+
| `e10-cli form data list <objId> [--page <n>] [--size <n>]` | 查询表单数据(**只含主表**)。`--page` 页码(缺省1)、`--size` 每页条数(缺省1000;不传 pageInfo 平台默认卡 10)。平台返回 `datajson.status=false` 时命令报错并打印原始 message,不再显示“共 0 条” |
|
|
181
183
|
| `e10-cli form data detail <objId> <appId> <dataId> [--no-detail]` | 读一条数据详情,**默认连明细一起读**(`--no-detail` 只要主表)。要明细用这条,`list` 不返回明细。详见 `form/guide-form-data.md` |
|
|
182
184
|
| `e10-cli form data update <objId> <appId> <dataId> <json> [--detail-mode cover\|append]` | 按数据 ID 修改(`@` 开头为文件路径)。只需写要改的字段;带明细表名即处理明细,缺省 `cover` **整表覆盖**,`append` 只追加 |
|
|
183
185
|
| `e10-cli form data delete <objId> <dataId>` | 删除一条表单数据 |
|
|
@@ -225,6 +227,11 @@
|
|
|
225
227
|
| `e10-cli form formula-linkage add <appId> <objId> --target <字段> --expression <函数体>` | 新增函数联动。**`--event <事件...>` 可给多个**(一条联动能挂多个触发时机),每个可自带触发字段:`--event changeField:数量,单价 onclick:按钮`;没自带字段的字段级事件回退 `--trigger <字段...>`。默认 `changeField`。`--effect form\|formLayout\|workFlow\|includeNode`(后两者需 `--workflow-id`,`includeNode` 另需 `--node`)、`--name`。表达式**只给右侧**,左侧 `{主表.目标}=` 自动拼。**目标只能是业务字段**,模块字段可作来源/触发。详见 `form/guide-formula-linkage.md` |
|
|
226
228
|
| `e10-cli form formula-linkage update <appId> <objId> <id> [--event...] [--trigger...] [--effect] [--workflow-id] [--node] [--name] [--state on\|off]` | 改触发时机/生效维度/名称/启停。**不给 `--event`/`--trigger` 就原样沿用现有的触发时机**(不会按第一条重建)。生效维度在「表单/布局 ↔ 工作流/节点」之间切换时**必须**同时给 `--event` |
|
|
227
229
|
| `e10-cli form formula-linkage delete <appId> <objId> <ids...>` | 删除(批量)。`form field-linkage delete` 删不掉这类,会报错指路 |
|
|
230
|
+
| `e10-cli form attachment-setting get <appId> <objId> [--field <字段>]` | 读取附件上传设置:不传 `--field` 看通用配置,传了看字段级覆盖。通用配置分上传目录、新建文档存储位置、新建方式、上传格式、大小限制;字段级空项表示继承通用 |
|
|
231
|
+
| `e10-cli form attachment-setting set <appId> <objId> [--upload-dir] [--doc-dir] [--doc-types] [--formats] [--max-size] [--enable] [--display-tip]` | 修改通用配置。`--upload-dir` 附件/图片上传目录,`--doc-dir` 新建文档存储位置,`--doc-types` 新建方式(逗号分隔),`--formats` 上传格式(扩展名逗号串或 `@doc/@image/@video/@audio/@archive` 预设),写 `none` 清空。读—合并—写—回读校验 |
|
|
232
|
+
| `e10-cli form attachment-setting set <appId> <objId> --field <字段> --upload-mode fixed\|option ...` | 修改字段级覆盖:`fixed` 配 `--upload-dir`,`option` 配 `--option-field`;`--doc-dir`/`--doc-types`/`--formats` 同样可用于字段级。字段级未写的项保持继承通用。详见 `form/guide-form-attachment-setting.md` |
|
|
233
|
+
| `e10-cli form attachment-setting folders [--search <关键字>]` | 列出可用文档目录(系统知识库 + 公司/私有知识库);`--upload-dir` / `--doc-dir` 可写目录 ID,也可写唯一名称或路径 |
|
|
234
|
+
| `e10-cli form attachment-setting doc-types [--folder <目录ID>]` | 列出“新建方式设置”可选的文档类型(html / WORD / markdown / UPLOAD) |
|
|
228
235
|
| `e10-cli form formula set <objId> <appId> --target <fieldId> --expression "<公式>"` | 给 eb 表字段**绑定**计算公式。`{主表.字段}` / `{明细表名.字段}`(平台存储格式)与设计器的 `[字段]` 两种写法都收,保存前归一化成花括号再下发。`--name`、`--return-type`(不传按目标字段类型推断)。**`--formula-id <id>` 原地更新已有公式**(平台认这个字段:不新建、返回 id 不变、字段绑定不受影响),不传才是新建;更新时不传 `--name` 会沿用原公式名,不会被改成「公式_<时间戳>」。另:`formula get <id>` / `list <objId> <appId>` / `functions`。**⚠ 公式语法四条**:函数名必须大写(自定义 JS 脚本函数除外)、逻辑比较用 `==`、给字段赋值用 `=`、跨表粘贴要换掉非本表字段变量 —— 写错**不报错**只是算不对,见 `references/form/guide-form-formula-functions.md` |
|
|
229
236
|
|
|
230
237
|
> **创建表单流程**:
|
|
@@ -294,6 +301,7 @@
|
|
|
294
301
|
| `e10-cli wf-form add-detail-table <formId> <明细表名> [首字段名] [--init]` | 给流程表单加明细子表(saveSubForm+首字段+可选 init 放入布局)。机制同 eb 表 `form add-detail-table` |
|
|
295
302
|
| `e10-cli wf-form field-options <formId> <fieldId> --options '[{"name":"事假"},...]' [--default <序号>]` | 给流程表单 Select/SelectMultiple 配选项(read-modify-write:getFormField 读全字段→改 options→saveFormFieldNew 重存)。`--options` 支持 `@文件`;`--default` 默认选项 valueKey |
|
|
296
303
|
| `e10-cli wf-form layout init <formId> [--layout-id <布局ID>]` | 初始化/重建流程表单布局(initLayout,按 layoutType 选模板,默认 FLOW)。**`--layout-id` 指定要重建哪一套**(节点独立布局的 layoutId),不传则重建默认布局;字段属性用 `--read-only`/`--required`/`--single-row` 覆盖 |
|
|
304
|
+
| `e10-cli wf-form layout init-reviewed <formId> [--layout-id <布局ID>] --style-template <名称或ID> [--preview-only --out <计划文件>\|--preview @<计划文件>]` | 原生流程表单(含公文流程)PC 布局的审阅式模板应用:按 FLOW/EXCEL 类型查询并校验模板,预览后执行,保存后独立回读组件和模板效果。表格式简易模板用 `--easy-template` 替代 `--style-template`;不传模板则采用该布局类型默认模板。 |
|
|
297
305
|
| `e10-cli wf-form layout add <formId> --name <布局名>` | 新增一套流程表单布局。`--layout-type FLOW|EXCEL`(默认 FLOW)、`--terminal-type PC|MOBILE`(默认 PC)、`--describe`、`--workflow-id`;返回 `layoutId`,多套布局并存且不覆盖原布局 |
|
|
298
306
|
| `e10-cli wf-form code layout read/set <formId> --layout-id <id> --terminal PC\|MOBILE [--js <文件>] [--css <文件>]` | 读取或写入指定原生工作流程表单布局源码;代码写法读代码块指南。**源码 ecode 必须用 `encodeURI`,不能用 `encodeURIComponent`(设计器 `decodeURI` 读取)** |
|
|
299
307
|
| `e10-cli wf-form code layout preview/apply <formId> --layout-id <id> --terminal PC\|MOBILE [--js <文件>] [--css <文件>]` | 流程表单布局代码块的独立预览与回读写入;预览用 `--out`,应用用 `--preview @<文件>`。 |
|
|
@@ -609,7 +617,7 @@ e10-cli report py preagg --report-id <id> [--app-id <id>]
|
|
|
609
617
|
|
|
610
618
|
| 命令 | 说明 |
|
|
611
619
|
|------|------|
|
|
612
|
-
| `e10-cli check <项目目录>` |
|
|
620
|
+
| `e10-cli check <项目目录>` | 代码质量检查:递归扫描整个项目(排除 `node_modules/.target`),核对 `build.json` 是否登记全部运行时 JS,并检查 let/const、CSS import、options 短 ID、String(React 节点) 等;通过后再 build |
|
|
613
621
|
|
|
614
622
|
---
|
|
615
623
|
|
|
@@ -36,11 +36,12 @@ export default class FilePreviewDemo extends React.Component {
|
|
|
36
36
|
|
|
37
37
|
附件字段(FileComponent)的 `fileid` 可通过以下方式获取:
|
|
38
38
|
|
|
39
|
-
**1. 从表单数据读取** — `
|
|
39
|
+
**1. 从表单数据读取** — `formClient` 的行里,FileComponent 的 `items[字段ID]` 已经给出文件 ID 与名称;`values[字段ID]` 是逗号分隔的文件 ID 串:
|
|
40
40
|
```js
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
var firstFileId = (row.values[F.attachment] || '').split(',')[0];
|
|
42
|
+
var firstName = row.items[F.attachment] && row.items[F.attachment][0]
|
|
43
|
+
? row.items[F.attachment][0].name
|
|
44
|
+
: '';
|
|
44
45
|
```
|
|
45
46
|
|
|
46
47
|
**2. 上传时** — 从 `uploadedFiles` 状态中获取:
|
|
@@ -58,42 +58,26 @@ e10-cli form-engine browser-definition scope set <formId> <fieldId> --module <mo
|
|
|
58
58
|
|
|
59
59
|
`records` 是完整范围记录,按 `get` 回读的 ID 更新既有项。人员范围与流程操作者的选项概念相近,但并非全量相同,必须以 `describe` 返回的可选布局为准。加入多项范围时,其可选数据取并集;未设置范围时不应把它误判为“空范围”。
|
|
60
60
|
|
|
61
|
-
###
|
|
61
|
+
### 关联 EBuilder:先选配置方式
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
关联 EBuilder 的数据范围决定**目标表单的哪些记录可以在浏览弹窗中选择**。先按规则复杂度选择命令:
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
| 需求 | 配置方式 | 适用范围 |
|
|
66
|
+
| --- | --- | --- |
|
|
67
|
+
| 按目标表单字段设置一层“且/或”条件 | `form ebuilder-scope get/set/clear` | 可使用固定值、目标字段选项、当前表单字段或目标表单字段作条件值 |
|
|
68
|
+
| `A OR (B AND C)` 等混合嵌套条件 | `form-engine browser-definition scope get/set` | 读取候选布局后编写完整条件树 |
|
|
66
69
|
|
|
67
|
-
|
|
70
|
+
先区分两张表单:**当前表单**是用户正在填写、包含关联 EBuilder 字段的源表单;**目标表单**是该关联字段打开浏览弹窗后列出记录的 EBuilder 表单。每条条件的左侧 `field` 始终选择**目标表单字段**,右侧取值来源决定比较方式:
|
|
68
71
|
|
|
69
|
-
|
|
72
|
+
| 右侧取值方式 | 左侧 `field` | 右侧字段 | 适用场景 |
|
|
73
|
+
| --- | --- | --- | --- |
|
|
74
|
+
| 固定值 `value` | 目标表单字段 | 手工输入的值或目标字段的选项 | 只允许选择状态为“启用”的目标记录 |
|
|
75
|
+
| 变量字段 `valueFrom: "currentFormField"` | 目标表单字段 | 当前表单字段 `valueField` | 只允许选择“所属项目”等于当前申请“相关项目”的任务;当前表单字段值作为筛选变量 |
|
|
76
|
+
| 本表字段 `valueFrom: "targetFormField"` | 目标表单字段 | 同一目标表单的另一个字段 `valueField` | 在每条目标记录内部比较两个字段;不引用当前表单的值 |
|
|
70
77
|
|
|
71
|
-
|
|
72
|
-
{
|
|
73
|
-
"key": "root", "relationship": "0", "isParent": true, "parentNode": "",
|
|
74
|
-
"isNewFilter": true, "version": 1, "showFilterIsNull": false,
|
|
75
|
-
"datas": [
|
|
76
|
-
{ "key": "a", "parentNode": "root", "isParent": false, "type": "condition",
|
|
77
|
-
"id": "name", "fieldName": "name", "fieldType": "String", "compType": "Text", "text": "标题",
|
|
78
|
-
"conditions": { "func": "eq", "value": "A", "selectValue": { "id": "manualInput", "content": "手动输入", "type": "SELECTION_CUSTOM" }, "customValue": "A", "customBrowserValue": [] } },
|
|
79
|
-
{ "key": "group-bc", "parentNode": "root", "relationship": "1", "isParent": true,
|
|
80
|
-
"datas": [
|
|
81
|
-
{ "key": "b", "parentNode": "group-bc", "isParent": false, "type": "condition",
|
|
82
|
-
"id": "name", "fieldName": "name", "fieldType": "String", "compType": "Text", "text": "标题",
|
|
83
|
-
"conditions": { "func": "eq", "value": "B", "selectValue": { "id": "manualInput", "content": "手动输入", "type": "SELECTION_CUSTOM" }, "customValue": "B", "customBrowserValue": [] } },
|
|
84
|
-
{ "key": "c", "parentNode": "group-bc", "isParent": false, "type": "condition",
|
|
85
|
-
"id": "name", "fieldName": "name", "fieldType": "String", "compType": "Text", "text": "标题",
|
|
86
|
-
"conditions": { "func": "eq", "value": "C", "selectValue": { "id": "manualInput", "content": "手动输入", "type": "SELECTION_CUSTOM" }, "customValue": "C", "customBrowserValue": [] } }
|
|
87
|
-
] }
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
上面展示的是 `scopeInfoRender` **解码后的条件树**,用于说明嵌套关系;实际 `scope.json` 须把整棵树序列化为 JSON 字符串,放入 `{"records":[{"scopeType":"scopeSql","scopeInfoRender":"<序列化后的条件树>"}]}`。字段 `id/fieldName/fieldType/compType`、`conditions` 的操作符和值结构要按目标字段和 `scope get` 返回的同类条件填写;选项、表单字段、变量字段等值的配置形状与示例的手动文本值不同。更新已有规则时保留其记录 ID(CLI 在未给 ID 时也会按 `scopeType` 查找并沿用已有 ID)。保存后再次 `scope get`,核对树层级、每层 `relationship`、字段和值及记录 ID。工作流程场景还须传 `--workflow-id`,并在所属工作流程的实际使用场景核对筛选效果。
|
|
78
|
+
“本表字段”的“本表”指**被浏览的目标表单**。如果需求写着“关联任务只能选当前所选项目的任务”,右侧应选**变量字段**,不能选本表字段。空值判断 `isnull`、`notnull` 没有右侧取值。旧 `form ebuilder-filter` 修改的是字段布局中的过滤参数,不保证被浏览数据定义识别;设置浏览弹窗可选记录使用本节的数据范围命令。
|
|
93
79
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
关联 EBuilder 字段的数据范围决定**目标表单的哪些记录可以在浏览弹窗中选择**。只需按目标表单主表字段给出一层 AND/OR 条件时,可使用 `form ebuilder-scope`;复杂嵌套条件使用上面的完整条件树。
|
|
80
|
+
#### 常用规则:查询、设置与清空
|
|
97
81
|
|
|
98
82
|
```bash
|
|
99
83
|
e10-cli form ebuilder-scope get <源objId> <appId> <EBuilder字段fieldId>
|
|
@@ -101,7 +85,11 @@ e10-cli form ebuilder-scope set <源objId> <appId> <EBuilder字段fieldId> --rul
|
|
|
101
85
|
e10-cli form ebuilder-scope clear <源objId> <appId> <EBuilder字段fieldId>
|
|
102
86
|
```
|
|
103
87
|
|
|
104
|
-
`源objId` 是包含关联字段的表单对象 ID;`appId` 是应用 ID;`fieldId` 是该关联字段的 ID。规则中的 `field`
|
|
88
|
+
`源objId` 是包含关联字段的表单对象 ID;`appId` 是应用 ID;`fieldId` 是该关联字段的 ID。规则中的 `field` 指目标表单主表字段,可填字段名或 ID,重名时用 ID。`--logic and|or` 控制所有规则的关系,缺省为 `and`。`--fill-null` 可在需要关联字段为空时填充的场景下使用,缺省关闭。
|
|
89
|
+
|
|
90
|
+
规则文件是 JSON 数组。操作符与条件取值写法如下:
|
|
91
|
+
|
|
92
|
+
例如,同时按客户状态和名称设置固定值条件:
|
|
105
93
|
|
|
106
94
|
```json
|
|
107
95
|
[
|
|
@@ -110,13 +98,16 @@ e10-cli form ebuilder-scope clear <源objId> <appId> <EBuilder字段fieldId>
|
|
|
110
98
|
]
|
|
111
99
|
```
|
|
112
100
|
|
|
113
|
-
|
|
|
114
|
-
| --- | --- |
|
|
115
|
-
| `operator` | `eq
|
|
116
|
-
| `value` |
|
|
117
|
-
|
|
|
101
|
+
| 项目 | 写法 | 含义与限制 |
|
|
102
|
+
| --- | --- | --- |
|
|
103
|
+
| `operator` | `eq`、`neq`、`like`、`isnull`、`notnull` | 等于、不等于、包含、为空、不为空;空值条件不填条件值 |
|
|
104
|
+
| 固定值 | `"value":"上海"` | 文本、数字、日期填目标值;选项类字段可填选项名或唯一选项值 ID,CLI 按实际选项匹配 |
|
|
105
|
+
| 当前表单字段 | `"valueFrom":"currentFormField","valueField":"相关项目"` | 选择“变量字段”:左侧仍是目标表单字段,右侧引用源表单主表字段的当前值 |
|
|
106
|
+
| 目标表单字段 | `"valueFrom":"targetFormField","valueField":"项目简介"` | 选择“本表字段”:左侧和右侧均来自被浏览的目标表单主表字段,逐条目标记录内部比较 |
|
|
107
|
+
|
|
108
|
+
字段引用时不填固定 `value`;`valueField` 可填字段名或 ID,重名时用 ID。CLI 先查询字段候选,再分别生成变量字段或本表字段的配置。目前字段引用只验证了**条件左侧为关联浏览字段**的情况;简便规则只读取源表单和目标表单的主表字段,不用于目标明细字段。
|
|
118
109
|
|
|
119
|
-
|
|
110
|
+
例如,浏览“关联项目”时,让目标表的“关联合同”等于当前表单的“关联合同”;再让目标表的“关联客户”等于目标表自己的“项目简介”:
|
|
120
111
|
|
|
121
112
|
```json
|
|
122
113
|
[
|
|
@@ -125,15 +116,57 @@ e10-cli form ebuilder-scope clear <源objId> <appId> <EBuilder字段fieldId>
|
|
|
125
116
|
]
|
|
126
117
|
```
|
|
127
118
|
|
|
128
|
-
|
|
119
|
+
例如,浏览“关联任务”时,只允许选择“所属项目”等于当前申请的“相关项目”、且“任务状态”不为“已完成”的任务,`scope-rules.json` 可写为:
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
[
|
|
123
|
+
{"field":"所属项目","operator":"eq","valueFrom":"currentFormField","valueField":"相关项目"},
|
|
124
|
+
{"field":"任务状态","operator":"neq","value":"已完成"}
|
|
125
|
+
]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
此例须先确认“所属项目”是关联浏览字段、“任务状态”的选项中确有“已完成”,再用 `--logic and` 写入。选项名称或值 ID 均由 CLI 对照目标字段的实际选项。另一个字段引用例子是 `{"field":"关联客户","operator":"eq","valueFrom":"targetFormField","valueField":"项目简介"}`,表示目标表单内两个字段相比较。
|
|
129
|
+
|
|
130
|
+
`set --rules` 会按本次数组重建整组简便规则,修改前先 `get` 并保留仍需生效的条件。写入后再次 `get` 回读,并在实际表单的浏览弹窗核对可选记录。字段引用已验证写入与回读;随当前表单字段值变化的实时筛选效果仍须在实际场景核对。
|
|
129
131
|
|
|
130
|
-
|
|
132
|
+
只允许选择状态为“启用”的客户时,也可直接传规则数组:
|
|
131
133
|
|
|
132
134
|
```bash
|
|
133
135
|
e10-cli form ebuilder-scope set <源objId> <appId> <EBuilder字段fieldId> --rules '[{"field":"客户状态","operator":"eq","value":"启用"}]'
|
|
134
136
|
```
|
|
135
137
|
|
|
136
|
-
|
|
138
|
+
#### 复杂规则:完整条件树
|
|
139
|
+
|
|
140
|
+
关联 EBuilder 使用 `scopeType=scopeSql` 的条件树。需要 `A OR (B AND C)` 等混合逻辑时,使用 `form-engine browser-definition scope get/set` 读写完整 `records[].scopeInfoRender`。先用 `scope get` 读取原配置和候选布局,按目标表实际字段、字段类型与可选操作符调整条件树,再保存并回读。
|
|
141
|
+
|
|
142
|
+
条件树中的 `datas` 可以同时包含字段条件和子条件组;组的 `relationship` 为 `1`(AND/所有条件)或 `0`(OR/任一条件)。每个组有唯一 `key`,子项的 `parentNode` 指向直接父组的 `key`。例如 `A OR (B AND C)` 的结构是:
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"key": "root", "relationship": "0", "isParent": true, "parentNode": "",
|
|
147
|
+
"isNewFilter": true, "version": 1, "showFilterIsNull": false,
|
|
148
|
+
"datas": [
|
|
149
|
+
{ "key": "a", "parentNode": "root", "isParent": false, "type": "condition",
|
|
150
|
+
"id": "name", "fieldName": "name", "fieldType": "String", "compType": "Text", "text": "标题",
|
|
151
|
+
"conditions": { "func": "eq", "value": "A", "selectValue": { "id": "manualInput", "content": "手动输入", "type": "SELECTION_CUSTOM" }, "customValue": "A", "customBrowserValue": [] } },
|
|
152
|
+
{ "key": "group-bc", "parentNode": "root", "relationship": "1", "isParent": true,
|
|
153
|
+
"datas": [
|
|
154
|
+
{ "key": "b", "parentNode": "group-bc", "isParent": false, "type": "condition",
|
|
155
|
+
"id": "name", "fieldName": "name", "fieldType": "String", "compType": "Text", "text": "标题",
|
|
156
|
+
"conditions": { "func": "eq", "value": "B", "selectValue": { "id": "manualInput", "content": "手动输入", "type": "SELECTION_CUSTOM" }, "customValue": "B", "customBrowserValue": [] } },
|
|
157
|
+
{ "key": "c", "parentNode": "group-bc", "isParent": false, "type": "condition",
|
|
158
|
+
"id": "name", "fieldName": "name", "fieldType": "String", "compType": "Text", "text": "标题",
|
|
159
|
+
"conditions": { "func": "eq", "value": "C", "selectValue": { "id": "manualInput", "content": "手动输入", "type": "SELECTION_CUSTOM" }, "customValue": "C", "customBrowserValue": [] } }
|
|
160
|
+
] }
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
上面展示的是 `scopeInfoRender` **解码后的条件树**,用于说明嵌套关系;实际 `scope.json` 须把整棵树序列化为 JSON 字符串,放入 `{"records":[{"scopeType":"scopeSql","scopeInfoRender":"<序列化后的条件树>"}]}`。字段 `id/fieldName/fieldType/compType`、`conditions` 的操作符和值结构要按目标字段和 `scope get` 返回的同类条件填写;选项、表单字段、变量字段等值的配置形状与示例的手动文本值不同。更新已有规则时保留其记录 ID(CLI 在未给 ID 时也会按 `scopeType` 查找并沿用已有 ID)。保存后再次 `scope get`,核对树层级、每层 `relationship`、字段和值及记录 ID。工作流程场景还须传 `--workflow-id`,并在所属工作流程的实际使用场景核对筛选效果。
|
|
166
|
+
|
|
167
|
+
### 自定义浏览框
|
|
168
|
+
|
|
169
|
+
先用 `inspect` 找出目标字段及其 `bcw/customBrowser_*` 来源,再用 `describe` 或 `scope get` 读取当前配置和 `conditionLayout`。候选布局按当前浏览框动态返回,每个字段提供 `id/text/type/compType/conditionType` 等信息;条件树叶节点的字段 ID 与操作符须来自这份布局。`scopeInfoRender` 使用平台的完整条件树 JSON 字符串,组节点的 `datas` 可嵌套 AND/OR 条件。日期区间在候选操作符中记作 `between`,已见保存条件采用 `conditions.func="range"` 且 `value` 为两个日期值;其他操作符和值结构按该字段实际候选及现有配置填写。高级搜索同样先读该浏览框返回的 `layout.items`,再构造 `commonLines/commonCells/lines/cells/searchValue`。Tab 是否可配以 `inspect` 的 `tabs.platform` 为准。
|
|
137
170
|
|
|
138
171
|
### 人员范围码表与简化规则
|
|
139
172
|
|
|
@@ -134,9 +134,12 @@ e10-cli form field-linkage add <appId> <objId> \
|
|
|
134
134
|
|
|
135
135
|
### 明细行依据(`--basis`)
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
**不给 = 依据值选「表」**:用查询结果整表作为依据,设计器里显示为源表名(如 `产品清单(uf_clm_inv_content_51)`);每个赋值都是这张表里的一列(`type=10` + `originValue`)。写明细表通常用这个,也是设计器的默认形态。
|
|
138
|
+
|
|
139
|
+
只有确实需要按某个字段匹配/合并行时,才显式写 `明细表名=源表字段名`。这时设计器里的依据值是字段;当赋值源字段正好等于依据值时,显示为「依据值本身」。
|
|
138
140
|
|
|
139
141
|
```bash
|
|
142
|
+
# 字段级依据(可选,按该字段匹配行)
|
|
140
143
|
--basis "明细表1=测试字段C"
|
|
141
144
|
```
|
|
142
145
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# 附件上传与关联文档设置指南
|
|
2
|
+
|
|
3
|
+
表单「附件设置」页控制附件文件存在哪里、能传什么、以及由附件创建文档时落在哪个目录。设置分**通用配置**和**字段级覆盖**两层:字段级未显式覆盖的项继承通用配置。
|
|
4
|
+
|
|
5
|
+
## 三层对应关系
|
|
6
|
+
|
|
7
|
+
| 界面 | 通用配置 | 字段级覆盖 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| 附件/图片上传目录 | `folderId` + `folderIdBrowserValue` | 同名字段;`folderSelectType` 区分固定目录 / 选项关联 |
|
|
10
|
+
| 关联文档 → 新建方式设置 | `addTypeConfig.types` | `docAddTypeConfig` |
|
|
11
|
+
| 关联文档 → 新建文档存储位置 | `fixedDirectory.folderValue` | `docFixedDirectoryConfig` |
|
|
12
|
+
| 上传格式 | `customLimitFormat` | 同名字段 |
|
|
13
|
+
| 大小限制 / 启用 / 提示语 | `attmentSizeLimit` / `enableState` / `displayTip` | 同名字段 |
|
|
14
|
+
|
|
15
|
+
两个目录不要混:
|
|
16
|
+
|
|
17
|
+
- **上传目录**决定附件文件存放位置;为空表示没有落点。
|
|
18
|
+
- **新建文档存储位置**决定由附件创建出来的文档放在哪个知识库目录。
|
|
19
|
+
- 附件"没有进文档"时,先确认**新建方式**和**新建文档存储位置**,再看上传目录;字段级覆盖成"选项关联但没有匹配目录"也会导致附件没有落点。
|
|
20
|
+
|
|
21
|
+
## 读取
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# 通用配置 + 字段级覆盖概要
|
|
25
|
+
e10-cli form attachment-setting get <appId> <objId>
|
|
26
|
+
|
|
27
|
+
# 单个附件字段的覆盖配置
|
|
28
|
+
e10-cli form attachment-setting get <appId> <objId> --field <字段名或fieldId>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 修改通用配置
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
e10-cli form attachment-setting set <appId> <objId> \
|
|
35
|
+
--upload-dir <目录ID> \
|
|
36
|
+
--doc-dir <目录ID> \
|
|
37
|
+
--doc-types html,WORD,markdown,UPLOAD \
|
|
38
|
+
--formats @doc,@image,@archive \
|
|
39
|
+
--max-size 20 \
|
|
40
|
+
--enable on --display-tip on
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
| 参数 | 说明 |
|
|
44
|
+
|---|---|
|
|
45
|
+
| `--upload-dir` | 附件/图片上传目录,写文档目录 ID 或唯一名称/路径;`none` 清空 |
|
|
46
|
+
| `--doc-dir` | 新建文档存储位置,写法同上;`none` 清空 |
|
|
47
|
+
| `--doc-types` | 新建方式,逗号分隔;`none` 清空。可选值用 `doc-types` 查询 |
|
|
48
|
+
| `--formats` | 上传格式:扩展名逗号串,或预设 `@doc` / `@image` / `@video` / `@audio` / `@archive`;`none` 清空 |
|
|
49
|
+
| `--max-size` | 单文件大小限制(MB),不能超过平台系统上限 |
|
|
50
|
+
| `--enable` | 启用状态 `on` / `off` |
|
|
51
|
+
| `--display-tip` | 是否显示提示语 `on` / `off` |
|
|
52
|
+
|
|
53
|
+
只提交显式给出的项:命令先读回现有配置,合并改动后整份保存,再回读比对;未给出的项保持原值。
|
|
54
|
+
|
|
55
|
+
## 修改字段级覆盖
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# 固定目录
|
|
59
|
+
e10-cli form attachment-setting set <appId> <objId> \
|
|
60
|
+
--field <附件字段> --upload-mode fixed --upload-dir <目录ID>
|
|
61
|
+
|
|
62
|
+
# 选项关联:上传目录跟随某个单选/下拉字段
|
|
63
|
+
e10-cli form attachment-setting set <appId> <objId> \
|
|
64
|
+
--field <附件字段> --upload-mode option --option-field <选项字段>
|
|
65
|
+
|
|
66
|
+
# 字段级的新建方式 / 存储位置 / 上传格式
|
|
67
|
+
e10-cli form attachment-setting set <appId> <objId> \
|
|
68
|
+
--field <附件字段> --doc-dir <目录ID> --doc-types WORD,markdown --formats @image
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- `--field` 给了才是字段级覆盖;不给就是通用配置。
|
|
72
|
+
- 固定目录必须同时给 `--upload-dir`;选项关联必须同时给 `--option-field`。
|
|
73
|
+
- 字段级只写给出的项,未给出的项保持继承通用。
|
|
74
|
+
- `--max-size` / `--enable` / `--display-tip` 当前只支持通用配置。
|
|
75
|
+
|
|
76
|
+
## 查询目录与新建方式
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# 列出可用文档目录(系统知识库 + 公司/私有知识库)
|
|
80
|
+
e10-cli form attachment-setting folders
|
|
81
|
+
e10-cli form attachment-setting folders --search 合同
|
|
82
|
+
|
|
83
|
+
# 列出新建方式可选类型
|
|
84
|
+
e10-cli form attachment-setting doc-types
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`folders` 输出目录 ID、标题和类型;`--upload-dir` / `--doc-dir` 可以直接写 ID,也可以写唯一名称或路径。名称匹配到多个时命令会报错并要求改用 ID。
|
|
88
|
+
|
|
89
|
+
## 注意事项
|
|
90
|
+
|
|
91
|
+
1. **目录 ID 是长数字**,按字符串处理,不要转成 Number。
|
|
92
|
+
2. **读回形状与写入形状不同**:读回的上传目录只在 `folderIdBrowserValue[0]` 里,写报文才带顶层 `folderId`;命令内部会补齐,不要手工拼报文。
|
|
93
|
+
3. **保存顺序**:先字段级列表,再通用配置;两条都成功后再回读校验。
|
|
94
|
+
4. **字段级覆盖优先于通用配置**:字段级把上传目录设成固定目录但没选具体目录,会覆盖掉通用的有效目录。
|
|
95
|
+
5. 命令在保存后会逐项回读;回读不一致会直接报错,不会静默成功。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 表单数据 CLI 操作
|
|
2
2
|
|
|
3
|
-
通过 CLI
|
|
3
|
+
通过 CLI 读写表单数据(不需要写页面代码)。页面侧 JS 数据 API(`formClient` 的 list/get/save/update/remove)见 `coding/guide-form-crud.md`。
|
|
4
4
|
|
|
5
5
|
## 读数据
|
|
6
6
|
|
|
@@ -40,6 +40,27 @@ data.json 格式(`@` 开头为文件路径)。key 可用 **fieldId(长 ID
|
|
|
40
40
|
| FileComponent | `"fileid1,fileid2"` |
|
|
41
41
|
|
|
42
42
|
> **除非用户明确要求,否则不要往表单写入任何数据。** 表单创建完成后只需确认字段正确即可,不要自动插入测试数据。
|
|
43
|
+
>
|
|
44
|
+
> 上表的「选项名 / 数组」是 CLI `form data add` 的转换能力;页面里的 `formClient` 写入仍用选项 ID 和逗号串(数组会被归一化)。两边不要混用写法。
|
|
45
|
+
>
|
|
46
|
+
> Date / DateTime 按字段自身的 `format` 校验,同一张表单可能同时存在 `yyyy-MM-dd`、`yyyy-MM-dd HH:mm`、`yyyy-MM-dd HH:mm:ss`。用 `form read --app-id` 查看 `format`,写完用 `get` 回读比对。
|
|
47
|
+
|
|
48
|
+
## 附件字段:先上传拿 fileId
|
|
49
|
+
|
|
50
|
+
`FileComponent` 的值是逗号分隔的 `fileId`,`fileId` 先用上传命令获取:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
e10-cli form data upload --file <路径> [--file <路径> ...] [--create-doc on|off]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- 默认 `--create-doc on`:上传同时生成文档,输出 `fileId` 与 `docId`
|
|
57
|
+
- `--create-doc off`:只存文件,文档中心不会生成文档 —— 表单里能看到附件,但「文档ID」为空、文档中心查不到
|
|
58
|
+
- 多文件可一次传:`--file a.pdf b.docx`
|
|
59
|
+
- 输出末尾的 `fileIds: id1,id2` 可直接填 `form data add/update` 的附件字段
|
|
60
|
+
|
|
61
|
+
`Document` 类型字段(文档ID)是关联文档浏览字段,**不需要回填**;附件字段只需要新的 `fileId`。
|
|
62
|
+
|
|
63
|
+
历史数据只有附件没有文档时,用 `--create-doc on` 重新上传同一文件,再通过 `form data update` 只更新附件字段即可;dataId 和其余字段不变。
|
|
43
64
|
|
|
44
65
|
## 读明细:`detail`
|
|
45
66
|
|
|
@@ -77,6 +77,20 @@ e10-cli form code layout apply <表单objId> --layout-id <布局ID> --terminal P
|
|
|
77
77
|
|
|
78
78
|
多行文本、日期、下拉、浏览框可能由 `textarea`、`.ui-input-wrap`、`.ui-select-input`、`.ui-browser` 或更外层绘制边框;逐个定位实际画线元素。避免对 `.ebpage input` 或 `.ebpage *` 一次性去边框,这会误伤选择标记、上传区和表格线。
|
|
79
79
|
|
|
80
|
+
### 流式 PC 布局:分组与下拉框
|
|
81
|
+
|
|
82
|
+
已确认的流式 PC 页面以 `.weapp-ebpv-styled-flow` 标识布局容器。分组使用 `.weapp-form-widget__Collapse`;标题下方的蓝线是 `.weapp-form-collapse .ui-collapse-panel__title` 的 `border-bottom`,已观察到 `1px solid #1C69DB`。这条线也可由分组标题的布局样式设置产生;需要统一外观时优先检查分组标题配置,不要把设计器选中时的蓝色虚线框当成运行时边框。
|
|
83
|
+
|
|
84
|
+
下拉字段外层带 `.weapp-form-widget__Select`。实际画出灰色外框的是其 `.weapp-form-widget-content-container`:四侧计算样式均为 `1px solid #E2E2E2`。内部的 `.ui-select-input` 和 `.ui-input-wrap.ui-select-input` 四侧边框为 `none`;只修改内部节点的 `border` 无法替换可见外框。若目标布局需要给下拉外框单独配色,可在布局 CSS 中限定字段类型:
|
|
85
|
+
|
|
86
|
+
```css
|
|
87
|
+
.weapp-ebpv-styled-flow .weapp-form-widget__Select .weapp-form-widget-content-container {
|
|
88
|
+
border-color: #2F6FED;
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
此选择器依据页面 DOM 和计算样式确定,写入后的覆盖效果仍需在目标布局检查。不要把具体 `#widget_…` 或 `.weapp-form-layout_…` 的生成 ID 写进可复用规则。流式明细表已观察到 `.weapp-form-detail-table--FLOW`、`.weapp-form-detail-table-field-header` 和 `td.weapp-form-detail-table-column`;表头和格线的绘制节点尚需分别核对,不能直接套用表格式的 `.excelTableView-content-excel-table` 规则。
|
|
93
|
+
|
|
80
94
|
### 表格式布局的明细表
|
|
81
95
|
|
|
82
96
|
以下规则针对已识别的表格式 PC 明细表结构。流式明细表只有在实际存在这些类和表格元素时才可复用。
|
|
@@ -97,6 +111,33 @@ e10-cli form code layout apply <表单objId> --layout-id <布局ID> --terminal P
|
|
|
97
111
|
|
|
98
112
|
明细表标题对齐与基础边框先用布局网格设置。需要 CSS 补充表头配色时,同时检查内容表与固定表头 `.excelTableView-content-excel-table-fixed-first-row`。把背景写到 `td` 上,是为了避免单元格自带背景遮住整行状态色。
|
|
99
113
|
|
|
114
|
+
## 常见样式场景
|
|
115
|
+
|
|
116
|
+
以下按视觉目标选择写法。除了前文已识别的表格式组件路径,`.wea-form-*`、`.wea-detail-*` 等类名只作结构示意;使用前要从目标布局的实际 DOM 中取得选择器。优先用布局样式、排版、网格和字段属性完成平台已有的设置,CSS 负责其余视觉细节。
|
|
117
|
+
|
|
118
|
+
| 场景 | 写法与检查点 |
|
|
119
|
+
| --- | --- |
|
|
120
|
+
| URL/长文本限制行数 | 若目标页面确有 `.wea-url > span > p` 路径,可对其使用 `display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden`。要只影响明细表时,在选择器前加实际明细容器作用域;检查悬停、编辑态与完整内容的可访问方式。 |
|
|
121
|
+
| 只读态视觉区分 | 找到真实的只读状态标记与输入框包裹层,再调整背景、边框和字色。隐藏清除按钮或下拉箭头只改变外观,不改变字段权限;先检查布局样式中已有的只读背景选项。 |
|
|
122
|
+
| 明细表表头与行 | 可设置表头配色、隔行色、悬停与数字对齐;表格式布局沿用上节的真实 DOM 路径,同时检查固定表头。数字列须用实际列标记限定,避免把文本列也右对齐。 |
|
|
123
|
+
| 按钮与表头 | 可补充品牌色、圆角、阴影或渐变;先检查布局样式中的按钮及表头配置,并确认选择器只覆盖目标布局与目标按钮,不误改弹窗按钮。 |
|
|
124
|
+
| 紧凑排版 | 可微调标题、字段间距和字号;列数、标题位置及网格尺寸仍用布局配置。不要通过 `float` 等规则重排字段。 |
|
|
125
|
+
| 必填与错误提示 | 可强化已有必填标记和错误状态的颜色、边框;先确认平台是否已经绘制星号,避免用 `::before` 重复生成。CSS 不代替必填和校验规则。 |
|
|
126
|
+
| 打印 | 用 `@media print` 隐藏实际页面的工具栏与操作按钮,并检查表头对比度、分页、固定表头及打印预览;不要假定屏幕上的按钮类名适用于打印页面。 |
|
|
127
|
+
|
|
128
|
+
例如,已确认目标布局存在 `.wea-url > span > p` 时,可在该布局的 CSS 文件中加入:
|
|
129
|
+
|
|
130
|
+
```css
|
|
131
|
+
.wea-url > span > p {
|
|
132
|
+
display: -webkit-box;
|
|
133
|
+
-webkit-box-orient: vertical;
|
|
134
|
+
-webkit-line-clamp: 3;
|
|
135
|
+
overflow: hidden;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
其他场景先取目标元素及其父层的 DOM,再把上表中的目标映射为实际选择器;不要把示意类名直接保存到布局源码。获取 DOM 时,记录布局类型、终端以及普通/只读/报错等对应状态即可,不需要整页源码。
|
|
140
|
+
|
|
100
141
|
## 表格式与流式如何选规则
|
|
101
142
|
|
|
102
143
|
| 对象 | 表格式布局 | 流式布局 |
|
|
@@ -37,3 +37,5 @@ e10-cli form layout init-reviewed <objId> --config @init-config.json --preview @
|
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
初始化会重建整套布局,即使只覆盖一个字段也是如此。对已有布局的单字段属性调整,应先评估是否有更局部的字段属性命令;不要为了一个开关重建已精细设计的布局。`display/show` 会影响显示状态,执行后还应在实际表单预览中核对可见性。
|
|
40
|
+
|
|
41
|
+
原生工作流程表单及公文流程的 PC 布局使用 `wf-form layout init-reviewed` 完成同类模板的预览、应用和回读;参数与适用范围见[流程表单布局](workflow-layout.md)。EB 表单的 `form layout init-reviewed` 不接受流程表单 ID。
|
|
@@ -52,6 +52,8 @@
|
|
|
52
52
|
|
|
53
53
|
高级表格式模板的网格、模板 CSS 与实际布局 CSS 是不同的保存对象。模板被应用后,仍需回读实际布局并检查页面效果。当前 PC 流式模板的独立编辑、启停及删除不作为可用能力;按[流式模板指南](template/flow.md)中已经确认的能力操作。
|
|
54
54
|
|
|
55
|
+
创建或编辑布局时,应先把用户期望的**整体效果**拆成结构、单元格、组件、通用样式和运行状态,再选择相应能力组合完成。表格式的行列、合并、字段位置及单元格字体、背景、边框由网格或模板设置承担;组件的通用属性按已支持的布局样式设置;主题色、悬停、高亮及控件的特殊呈现可由 CSS 补足;需要交互逻辑时再使用 JS。一个效果涉及多个层级时,应把相关配置一起完成并在实际布局中核对,不应只修改其中一个层级就认为整体效果已经实现。
|
|
56
|
+
|
|
55
57
|
## 通用核对顺序
|
|
56
58
|
|
|
57
59
|
1. 查询目标表单、布局 ID、布局类型、终端及字段;已有精细布局先导出底稿。
|
|
@@ -60,6 +62,12 @@
|
|
|
60
62
|
4. 按原配置与预览结果应用,随后独立回读。布局代码还须在实际页面检查运行效果;CSS 还须检查 PC/移动端和组件状态。
|
|
61
63
|
5. 若目标布局或字段在预览后发生变化,重新读取并预览,不沿用旧报告。
|
|
62
64
|
|
|
65
|
+
## 问题反馈
|
|
66
|
+
|
|
67
|
+
创建模板、创建或调整布局时,正常的配置选择、预览和回读按任务连续完成;**一般情况不需要停下来要求用户确认,也不需要逐项报告无问题的检查结果**。
|
|
68
|
+
|
|
69
|
+
遇到冲突、校验失败或预览效果异常时,应向用户说清楚:**哪个模板或布局、哪个区域/字段/单元格出了什么问题,对保存或实际显示有什么影响,准备如何修正**。例如列宽总和不符、组件位置重叠、分组或明细区域落在窄列、模板与布局类型不匹配、草稿引入新的结构问题。可修正的问题先依据预览和现有配置修正,再重新核对;无法继续时说明具体阻断原因及所需信息。不要只转述 `canApply=false`、`issues` 或笼统地说“布局有问题”。
|
|
70
|
+
|
|
63
71
|
各命令的完整参数见[CLI 命令参考](../../common/ref-cli-commands.md)。
|
|
64
72
|
|
|
65
73
|
## 相关能力
|
|
@@ -101,6 +101,27 @@
|
|
|
101
101
|
|
|
102
102
|
字体、字号等独立项只修改指定部分;完整 `font` 值与这些独立项不能同时写。颜色可用 `#RGB`、`#RRGGBB` 或 `#RRGGBBAA`。只能向**没有字段组件**的单元格写静态文字或系统参数。合并范围不能覆盖字段组件、重复标记或非左上角文字;拆分按现有合并区域的左上角定位,不能拆分包含组件的区域。修改单元格样式始终保留原有的字段组件关联。完整示例见[网格配置示例](../../../../assets/form-template/style-templates-advanced-grid-example.json)。
|
|
103
103
|
|
|
104
|
+
**表单标题下边框**:先用 `headerTitle: "formTitle"` 放置标题;若 `headerTitlePlacement: "content"`,双列六列网格中的标题位于第 0 行,合并范围为第 1–4 列(`spans` 中 `row: 0, col: 1, colCount: 4`)。要让蓝色下边线覆盖整个标题宽度,在 `grid.main.cells` 中对这四个列坐标逐格设置同样的 `borders.bottom`:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"headerTitle": "formTitle",
|
|
109
|
+
"headerTitlePlacement": "content",
|
|
110
|
+
"grid": {
|
|
111
|
+
"main": {
|
|
112
|
+
"cells": [
|
|
113
|
+
{ "row": 0, "col": 1, "borders": { "bottom": { "color": "#2F6FED", "line": "medium" } } },
|
|
114
|
+
{ "row": 0, "col": 2, "borders": { "bottom": { "color": "#2F6FED", "line": "medium" } } },
|
|
115
|
+
{ "row": 0, "col": 3, "borders": { "bottom": { "color": "#2F6FED", "line": "medium" } } },
|
|
116
|
+
{ "row": 0, "col": 4, "borders": { "bottom": { "color": "#2F6FED", "line": "medium" } } }
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
上述坐标只适用于该六列结构;标题跨列变化时,按实际 `spans` 覆盖的列重算。只设置合并区域左上角的下边框,实际显示的线条会不完整。创建后应在目标表单核对视觉效果,不能仅以配置回读或不落库的布局数据预览判断边框已正确呈现。
|
|
124
|
+
|
|
104
125
|
为标题和字段内容留出相同的左侧空隙时,在主表重复行的四个占位单元格分别写 `style.textIndent`。[基础双列完整模板](../../../../assets/form-template/style-templates-advanced-base-example.json)的 `layoutInfo.pageLayouts[0].config.workbook.Sheet1.cells` 中,第 4 行的第 1、2、3、4 列均设为 `2`,依次对应标题 1、字段 1、标题 2、字段 2。修改完整配置时,找到这四个单元格各自的 `style`,按所需缩进量调整 `textIndent`;不要把属性写到 `cellType` 中,也不要删掉 `cellType.comId`。重复行内的样式会随字段对迭代。分组名称也可另设缩进;行列坐标取决于模板结构,调整分组或字段排布后,应按实际网格重新定位。
|
|
105
126
|
|
|
106
127
|
## 二、组件设置
|
|
@@ -11,6 +11,8 @@ e10-cli form layout init-reviewed <objId> --easy-template <名称或ID> --previe
|
|
|
11
11
|
|
|
12
12
|
应用会按简易模板重新生成整个布局。执行报告核对主网格列宽、行高以及标题/字段的底色和边框色;如需保留当前排版,先导出布局底稿。
|
|
13
13
|
|
|
14
|
+
原生流程表单及公文流程的 PC 表格式布局可使用 `wf-form layout init-reviewed <formId> --easy-template <名称或ID>`,同样先 `--preview-only --out`,再以 `--preview @计划文件` 应用;指定非默认布局时加 `--layout-id`。
|
|
15
|
+
|
|
14
16
|
## 模板类型与新建
|
|
15
17
|
|
|
16
18
|
- **预设模板:**平台提供 6 种系统模板,可预览,不可编辑。
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
`form layout init-reviewed --style-template <名称|ID>` 会读取目标表单的布局类型,按已启用的流式模板列表解析和校验名称或 ID,再初始化表单布局。不同布局类型可能有同名模板,以目标表单的 `FLOW` 类型查询结果为准。
|
|
8
8
|
|
|
9
|
+
原生流程表单及公文流程的 PC 流式布局使用 `wf-form layout init-reviewed <formId> --style-template <名称|ID>`;先传 `--preview-only --out <计划文件>`,再传 `--preview @<计划文件>`。可用 `--layout-id` 限定非默认布局。
|
|
10
|
+
|
|
9
11
|
```bash
|
|
10
12
|
e10-cli form-engine layout-template catalog --kind flow --enabled-only
|
|
11
13
|
e10-cli form-engine layout-template flow get <模板ID>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
4. 预览或初始化接口用于核对生成结果,**不代表模板已保存**。模板保存后回读;应用到表单后再次回读表单布局,确认结构和样式生效。
|
|
17
17
|
5. 模板定义布局与外观;实际表单的业务字段和字段状态来自目标表单。图片或 Excel 还原出的实际表单布局,需映射到模板规则,不能整份作为模板保存。
|
|
18
18
|
|
|
19
|
-
设计高级 PC
|
|
19
|
+
设计高级 PC 表格式模板时,以目标效果为单位统筹各层配置:先在**模板设置**中确定重复结构、网格、合并和单元格样式,再用 **CSS** 完成主题、组件状态、高亮等网格设置无法表达的视觉效果;需要设计器通用属性或行为设置时补充**布局样式**。同一外观尽量在一处维护,但一个效果需要多个层级配合时,应把这些配置一起完成。保存后既核对模板内容,也通过应用预览和实际表单检查整体效果,不能只因某一层已设置就视为完成。具体配置见[高级模板](advanced.md)。
|
|
20
20
|
|
|
21
21
|
当前 CLI 支持表格式简易模板管理、高级 PC 表格式模板的新建与编辑,以及将 PC 流式布局另存为模板。先用统一目录核对模板类别、终端、启用状态与 ID:
|
|
22
22
|
|
|
@@ -41,6 +41,8 @@ e10-cli form layout init-reviewed <objId> --easy-template <简易模板名称或
|
|
|
41
41
|
|
|
42
42
|
命令按目标布局类型解析模板,重建该布局并独立回读。显式指定模板时,预览记录模板样式指纹;执行前会重新核对模板未变。执行报告的 `saved:true` 表示布局身份、组件和配置回读通过;`templateEffectVerified:true` 进一步表示流式模板的标题及通用样式、高级表格式模板的通用字段样式及主网格列宽,或简易模板的主网格列宽、行高、标题/字段底色及边框色,与应用后的布局一致。该核对不覆盖每个单元格及 CSS 的最终浏览器呈现,重要版式仍应打开实际表单检查。
|
|
43
43
|
|
|
44
|
+
原生工作流程表单(包括公文流程绑定的原生表单)可用 `wf-form layout init-reviewed <formId>` 执行同类 PC 模板的预览和应用;指定布局用 `--layout-id`,高级表格式/流式模板用 `--style-template`,简易模板用 `--easy-template`。该流程同样在保存前核对目标、模板类型、字段配置及快照,保存后回读模板效果。详见[流程表单布局](../workflow-layout.md)。
|
|
45
|
+
|
|
44
46
|
`--read-only`、`--required` 等选项控制字段状态,不属于布局模板的样式设置。
|
|
45
47
|
|
|
46
48
|
## 将已有布局另存为模板
|
|
@@ -11,7 +11,19 @@ e10-cli wf-form layout add <formId> --name "审批节点专用布局" --layout-t
|
|
|
11
11
|
e10-cli wf-form layout init <formId> --layout-id <布局ID>
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
`wf-form layout init` 按目标布局类型重建排版;不传 `--layout-id` 则处理默认布局。需要覆盖字段只读、必填或独占一行时,可按该命令的选项设置;只调整运行时字段属性可查看 `wf-form field-prop
|
|
14
|
+
`wf-form layout init` 按目标布局类型重建排版;不传 `--layout-id` 则处理默认布局。需要覆盖字段只读、必填或独占一行时,可按该命令的选项设置;只调整运行时字段属性可查看 `wf-form field-prop`,它同样会经初始化保存,应先核对当前分组、排版和目标布局。
|
|
15
|
+
|
|
16
|
+
应用样式模板时,优先使用审阅式命令。它按目标 PC 布局的 `FLOW`/`EXCEL` 类型解析已启用的流式或高级表格式模板;表格式简易模板使用 `--easy-template`。预览不保存,执行前会重新核对布局、字段配置及模板样式,执行后独立回读组件和可核对的模板效果:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
e10-cli wf-form layout init-reviewed <formId> --layout-id <布局ID> --style-template <模板名称或ID> --preview-only --out plan.json
|
|
20
|
+
e10-cli wf-form layout init-reviewed <formId> --layout-id <布局ID> --style-template <模板名称或ID> --preview @plan.json
|
|
21
|
+
# PC 表格式简易模板将 --style-template 换为 --easy-template
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
不传 `--layout-id` 时处理默认布局。当前审阅式模板应用只支持 PC;移动端仍按现有布局初始化和编辑能力操作。此命令会重建目标布局,应用后仍需检查实际页面;`templateEffectVerified` 不代表浏览器最终呈现已核对。公文流程使用同一原生流程表单 `formId` 和上述命令,其公文专属设置另行维护。
|
|
25
|
+
|
|
26
|
+
删除指定流程表单布局使用:
|
|
15
27
|
|
|
16
28
|
```bash
|
|
17
29
|
e10-cli wf-form layout delete <formId> <布局ID>
|