add skill files

This commit is contained in:
2026-05-31 19:47:50 +08:00
parent 86df2672d3
commit 3d8df9b51f
3 changed files with 1304 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
# E10 内部 API: getFormFieldPage
## 端点
```
POST /api/workflow/core/form/field/manage/getFormFieldPage
```
浏览器内调用,自动带 session cookie 认证。
## 请求体
```json
{
"pageNo": 1,
"pageSize": 20,
"module": "workflow",
"formFieldSearchEntity": {
"isDelete": 0,
"status": "enable",
"formId": "1185512764483297325",
"formTableId": "1185512764483297435"
}
}
```
| 参数 | 说明 |
|------|------|
| pageNo | 页码(非 `page` |
| pageSize | 每页条数(非 `size` |
| module | 固定 `workflow` |
| formFieldSearchEntity.isDelete | 0 |
| formFieldSearchEntity.status | `enable` |
| formFieldSearchEntity.formId | 表单 ID |
| formFieldSearchEntity.formTableId | 表 ID(主表 vs 明细表);主表必传,明细表传对应的 tableId |
## 响应结构
```json
{
"code": 200,
"msg": "接口返回成功",
"status": true,
"data": {
"pageDatas": {
"pageNo": 1,
"pageSize": 20,
"result": [
{
"title": "申请人",
"dataKey": "sqr",
"type": "Employee",
"fieldId": "1185512764483297398",
"formId": "1185512764483297325",
"formTableId": "1185512764483297435",
"showOrder": 0,
"groupName": "基础信息",
"columnName": "sqr",
"columnType": "MEDIUMTEXT",
"systemField": false,
"componentKey": "Employee"
}
]
}
}
}
```
## 获取 formId 的方法
### 方法 1: localStorage
```
localStorage key: Form_0_<formId>_checkNewForm
```
示例: `Form_0_1185512764483297325_checkNewForm` → formId = `1185512764483297325`
### 方法 2: XHR 拦截
注入 `XMLHttpRequest` 钩子,然后在页面上切换 主表/明细表 tab 触发 API 调用,从捕获的请求体中提取。
### 方法 3: 页面 URL 提取
流程详情页 URL: `/info/engine_wf/pathdef/list/company/pathset/<WORKFLOW_ID>/base`
## 已知示例
来自"06.用车审批流程"(浙江聿见纺织科技 E10 v10.0.2508.01:
| 属性 | 值 |
|------|-----|
| formId | 1185512764483297325 |
| formTableId (主表) | 1185512764483297435 |
| workflowId | 1185512781721886720 |
| 数据库表 | fl_ycsplc |
| 主表字段数 | 13 |
| 明细表字段数 | 0(无明细表) |
+257
View File
@@ -0,0 +1,257 @@
# 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。