# E10 内部 API 参考 这些是 E10 管理后台前端调用的内部 REST API(非 OpenAPI),在浏览器已登录的情况下可直接用 `fetch()` 调用,session cookie 自动携带。适合替代复杂的 UI 点击操作获取数据。 > **适用场景**:登录后(Phase 1),所有流程发现、表单查询、字段提取均可通过这些 API 完成,无需逐层点击 UI。 --- ## 1. 获取所有工作流列表 **用途**:按分类树形列出所有工作流,找到目标流程的 `workflowId`(也叫 pathSetId)。 ``` POST /api/bs/workflow/pathdef/baseSet/getBaseInfoListTree ``` **请求体**: ```json { "searchParams": { "otherSearchDatas": { "workflowType": "", "workflowId": "", "subCompanyId": "" } }, "isTemplate": 0, "belongType": 1 } ``` **响应结构**: ```json { "code": 200, "data": { "total": 42, "dataGroupTitle": [ {"typeName": "行政类", "count": 9, "id": "1184726218683441153"} ], "datas": [ { "typeName": "行政类", "children": [ { "id": "1185512781721886720", "title": "06.用车审批流程", "defaultWorkflowName": "06.用车审批流程", "status": "1" } ] } ] } } ``` **关键字段**: - `datas[].children[].id` — workflowId(pathSetId),用于后续查询 - `datas[].children[].title` — 流程名称 - `datas[].typeName` — 流程分类(人事类/行政类/财务类/业务类) --- ## 2. 搜索表单(按名称) **用途**:根据表单名称搜索,获取 `formId`。名称支持模糊匹配。 ``` POST /api/workflow/core/form/formmanage/getFormList ``` **请求体**: ```json { "module": "workflow", "pageNo": 1, "pageSize": 50, "name": "用车" } ``` **响应结构**: ```json { "code": 200, "data": { "pageDatas": { "result": [ { "id": "1185512764483297325", "name": "用车审批流程" } ] } } } ``` **关键字段**: - `data.pageDatas.result[].id` — formId - `data.pageDatas.result[].name` — 表单名称 > **注意**:流程名称(如"06.用车审批流程")与表单名称(如"用车审批流程")可能不同(有无编号前缀)。搜索时去掉编号前缀。 --- ## 3. 获取表单详情 **用途**:获取表单的元数据(表名、类型、基础设置)。 ``` POST /api/workflow/core/form/formmanage/getForm ``` **请求体**: ```json { "module": "workflow", "form": { "id": "1185512764483297325" } } ``` **响应结构**: ```json { "code": 200, "data": { "id": "1185512764483297325", "tableName": "ft_ycsplc", "name": "用车审批流程", "tableType": "MAIN", "systemTable": false, "editTable": true } } ``` **关键字段**: - `data.tableName` — 数据库表名 - `data.tableType` — MAIN(主表)或 DETAIL(明细表) - `data.name` — 表单名称 --- ## 4. 获取表单字段列表(分页) **用途**:获取主表或明细表的所有字段定义(含 fieldId、dataKey、类型、分组)。 ``` POST /api/workflow/core/form/field/manage/getFormFieldPage ``` **请求体(主表字段)**: ```json { "pageNo": 1, "pageSize": 20, "module": "workflow", "formFieldSearchEntity": { "isDelete": 0, "status": "enable", "formId": "1185512764483297325", "formTableId": "1185512764483297435" } } ``` **请求体(明细表字段)**:同上,`formTableId` 替换为明细表的 table ID。 **响应结构**: ```json { "code": 200, "data": { "pageDatas": { "pageNo": 1, "pageSize": 20, "result": [ { "title": "申请人", "dataKey": "sqr", "type": "Employee", "fieldId": "1185512764483297398", "showOrder": 0, "groupName": "基础信息", "columnName": "sqr", "formTableId": "1185512764483297435", "formId": "1185512764483297325" } ] } } } ``` **关键字段**: - `title` — 字段显示名称 - `dataKey` — 字段编码(API 传参用) - `fieldId` — 字段 ID(API 传参用,纯数字) - `type` — 字段类型(Employee/Date/Text/TextArea/Department/SubCompany/File/EBuilder/Flow/Document) - `showOrder` — 显示顺序 - `groupName` — 所属分组 - `columnName` — 数据库列名 **常见字段类型映射**: | API type | 中文含义 | formData 传值方式 | |----------|----------|-------------------| | Employee | 人员选择 | `dataOptions[].type: "resource"` | | Department | 部门选择 | `dataOptions[].type: "department"` | | SubCompany | 分部选择 | `dataOptions[].type: "subcompany"` | | Date | 日期 | `content: "2026-05-27"` | | Text | 单行文本 | `content: "文本值"` | | TextArea | 多行文本 | `content: "文本值"` | | File | 附件 | `dataOptions[].type: "file"` + uploadParam | | EBuilder | 关联e-builder | 选项型传值 | | Flow | 关联流程 | 选项型传值 | | Document | 关联文档 | 选项型传值 | --- ## 5. 获取 formTableId(主表和明细表) formTableId 可以从以下途径获取: 1. **XHR 拦截**:在字段管理页面切换 主表/明细表 标签时,页面会调用 `getFormFieldPage`,其请求体中的 `formTableId` 即为当前表的 ID。 2. **字段响应反推**:主表任一字段的 `formTableId` 即为主表的 table ID。 3. **明细表为空时**:不需要 formTableId。 --- ## formId 的其他获取方式 除了 `getFormList` API 搜索,还可从以下途径获取 formId: 1. **localStorage**:访问过表单管理页面后,`localStorage` 中会有 key `Form_0__checkNewForm`,从中提取数字部分。 ```js for (var key in localStorage) { if (key.startsWith("Form_0_") && key.endsWith("_checkNewForm")) { return key.replace("Form_0_", "").replace("_checkNewForm", ""); } } ``` 2. **URL 路径**(不可靠,仅作参考):流程详情页 URL 中的 `pathset/` 后数字是 workflowId,不是 formId。