258 lines
6.5 KiB
Markdown
258 lines
6.5 KiB
Markdown
# 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_<formId>_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。
|