Files
fanwei-e10-api-doc/references/internal-apis.md
T
2026-05-31 19:47:50 +08:00

258 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` — workflowIdpathSetId),用于后续查询
- `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。