Skip to content

数据源类配置项

与实体、字段、视图等平台数据源相关的专用配置项。这些配置项用于在自定义组件的属性配置面板中绑定平台数据源,供组件拉取业务数据。

xObjectEntityList - 实体列表数据源

下拉列表方式选择平台实体对象,在自定义组件中可通过选择的实体对象 key 获取实体业务类型列表、业务对象描述等数据。

功能特性:

  1. 实体列表展示:以下拉列表形式展示当前可选择的实体对象
  2. 搜索功能:支持实体名称搜索
  3. 值写入:选择的实体 ID 写入对应 name 字段的 value 中
  4. 实体类型控制:通过 custom 属性控制使用标准实体还是自定义实体

使用方法:

在组件模型文件(model.ts)/ 属性配置(propsSchema)中添加使用:

json
{
  "type": "xObjectEntityList",
  "name": "xObjectApiKey",
  "label": "对象实体列表",
  "custom": false
}

属性数值类型:string — 所选的实体对象 ID。

属性说明:

  • name: 字段名称
  • label: 标签文本
  • disabled: 是否禁用
  • custom: 是否使用自定义实体,设置为 false 则表示展示标准实体列表,不传则展示标准实体和自定义实体
  • value: 当前已选择的实体对象 ID(xObjectApiKey)
  • onChange: 值变化回调

xObjectDataApi - 实体业务数据列表数据源

用于配置列表类数据源:实体、fields、分页等,供组件拉取业务数据列表。

功能特性:

  1. 输入框展示:以输入框形式展示当前配置的实体和选择的字段信息
  2. 设置按钮:右侧设置图标,点击打开配置弹窗
  3. 实体类型选择:弹窗中支持选择标准实体或自定义实体
  4. 实体选择:弹窗中支持下拉选择实体
  5. 字段选择:使用 antd Transfer 组件选择字段,默认选中所有实体字段
  6. 分页配置:配置页码(默认展示第几页)和每页条数(每页展示多少条数据)
  7. 值写入:选择的实体 ID 写入 xObjectApiKey,选中的字段列表写入 fields,字段信息列表写入 fieldDescList,页码写入 page,每页条数写入 pageSize

使用方法:

在组件模型文件(model.ts)/ 属性配置(propsSchema)中添加使用::

json
{
  "type": "xObjectDataApi",
  "name": "dataSource",
  "label": "数据源配置"
}

属性数值类型:object — 对象数值格式,包含实体标识、选中字段、分页等信息。

字段类型说明
xObjectApiKeystring选择的实体 API Key
fieldsstring[]选中的字段列表
fieldDescListobject[]字段信息列表
pagenumber页码,默认为 1
pageSizenumber每页条数,默认为 20

属性说明:

  • name: 字段名称
  • label: 标签文本
  • disabled: 是否禁用
  • value: 当前值,格式为 { xObjectApiKey: string, fields: string[], fieldDescList: object[], page: number, pageSize: number }
    • xObjectApiKey: 选择的实体 API Key
    • fields: 选中的字段列表
    • fieldDescList: 字段信息列表
    • page: 页码,默认为 1(默认展示第几页)
    • pageSize: 每页条数,默认为 20(每页展示多少条数据)
  • onChange: 值变化回调

xObjectDetailApi - 实体详情数据源

用于配置单条详情数据源:实体、objectId、字段等,供组件拉取一条业务数据详情。

功能特性:

  1. 输入框展示:以输入框形式展示当前配置的实体、业务数据 ID 和字段信息
  2. 设置按钮:右侧设置图标,点击打开配置弹窗
  3. 实体选择:弹窗中支持下拉选择实体(标准实体/自定义实体)
  4. 业务数据 ID 选择:根据选择的实体,使用 xObject.query 获取业务数据列表,支持选择具体的业务数据 ID
  5. 字段选择:使用 antd Transfer 组件选择字段,默认全部选中
  6. 值写入:选择的实体 ID 写入 xObjectApiKey,业务数据 ID 写入 objectId,字段列表写入 fieldDescList

使用方法:

在组件模型文件(model.ts)/ 属性配置(propsSchema)中添加使用::

json
{
  "type": "xObjectDetailApi",
  "name": "dataSource",
  "label": "业务详情数据源配置"
}

属性数值类型:object — 对象数值格式,包含实体标识、业务数据 ID、选中字段等信息。

字段类型说明
xObjectApiKeystring实体 API Key
objectIdstring业务数据主键,支持上下文变量(如 ${recordId}
fieldsstring[]可选项。选中的字段 apiKey 列表
fieldDescListobject[]可选项。选中的字段描述信息列表

属性说明:

  • name: 字段名称
  • label: 标签文本
  • disabled: 是否禁用
  • value: 当前值,一般为
    { xObjectApiKey: string; objectId: string; fields?: string[]; fieldDescList?: object[] }
    • xObjectApiKey:实体 API Key
    • objectId:业务数据主键,支持上下文变量(如 ${recordId}
    • fields / fieldDescList:在面板中勾选字段后由配置项写入,供组件展示列或拉数
  • onChange: 值变化回调

特性

  • 支持标准实体与自定义实体切换。
  • 选择实体后可联动加载业务数据列表与字段列表。
  • 各选择器支持搜索过滤。

selectFieldsApi - 字段 apiKey 多选(穿梭框)

在已配置实体(xObjectApiKey)的前提下,用穿梭框多选字段 apiKey。须与同表单内提供实体的配置项一起使用(例如 xObjectDataApixObjectDetailApi)。

功能特性:

  1. 输入框展示:以只读输入框展示「已选择 N 个字段」
  2. 设置按钮:右侧设置图标,点击打开「字段选择」弹窗
  3. 穿梭框选择:弹窗内使用 Transfer 在「可选字段」与「已选字段」间勾选,支持搜索
  4. 值写入:选中的字段 apiKey 列表写入 value(string[]
  5. 联动数据源:通过 xObjectApiKey 指定从 props.data 中读取实体 key 的路径,实体变化时会重新拉取字段列表

使用方法:

在组件模型文件(model.ts)/ 属性配置(propsSchema)中添加使用,需与提供 xObjectApiKey 的配置项(如 xObjectDataApi、xObjectDetailApi)关联使用:

json
{
  "type": "selectFieldsApi",
  "name": "fields",
  "label": "选择字段",
  "xObjectApiKey": "dataSource.xObjectApiKey"
}

属性数值类型:string[] — 选中的字段 apiKey 字符串数组。

属性说明:

  • name: 字段名称
  • label: 标签文本
  • disabled: 是否禁用
  • xObjectApiKey: 从 props.data 中获取实体 API Key 的 key 名,不传则默认为 'xObjectApiKey'。若实体在嵌套对象中可传路径,如 'dataSource.xObjectApiKey'
  • value: 当前值,格式为 string[](字段 apiKey 列表)
  • onChange: 值变化回调

selectFieldDescApi - 字段描述选择(下拉单选/多选)

在已配置实体的前提下,通过下拉选择字段,支持单选或多选;选中结果以「字段描述」对象数组存储(含 labelvalue/apiKey)。须与同表单内的实体配置联动。

功能特性:

  1. 下拉选择:以 Select 形式展示,支持搜索、清空
  2. 单选/多选:通过 mode 控制,可选 'multiple''tags'
  3. 值写入:选中的值写入为 Array<{ label: string; value: string }>,其中 value 为字段 apiKey
  4. 联动数据源:通过 xObjectApiKey 指定从 props.data 中读取实体 key 的路径,实体变化时会重新加载字段列表

使用方法:

在组件模型文件(model.ts)/ 属性配置(propsSchema)中添加使用,需与提供 xObjectApiKey 的配置项关联使用:

json
{
  "type": "selectFieldDescApi",
  "name": "selectFieldDesc",
  "label": "绑定字段",
  "xObjectApiKey": "entityApiKey.xObjectApiKey",
  "mode": "tags",
  "placeholder": "请至少选择一个要显示的字段"
}

属性数值类型:Array<{ label: string; value: string }> — 选中字段的描述对象数组,每个元素包含字段的显示名(label)和 apiKey(value)。

属性说明:

  • name: 字段名称
  • label: 标签文本
  • disabled: 是否禁用
  • placeholder: 占位文案
  • xObjectApiKey: 从 props.data 中获取实体 API Key 的 key 名或路径,不传则默认为 'xObjectApiKey',如 'entityApiKey.xObjectApiKey'
  • mode: 可选 'multiple'(多选)或 'tags'(多选标签形式),不传为单选
  • value: 当前值,格式为 Array<{ label: string; value: string }>
  • onChange: 值变化回调

dataViewIdSelect - 实体视图选择

在组件模型文件(model.ts)/ 属性配置(propsSchema)中添加使用,用于选择指定实体下的列表视图viewId),需与提供 xObjectApiKey 的配置项关联使用。

功能特性:

  1. 单选视图:下拉展示当前实体可用视图
  2. 接口加载:根据 xObjectApiKey 请求视图列表(如 /rest/data/v2.0/layouts/listLayout
  3. 搜索与清空:支持搜索视图名、清空选择
  4. 值写入value 为视图 ID 字符串(viewId
  5. 无实体提示:未配置实体时禁用并提示先配置数据源

使用方法:

jsonc
{
  "type": "dataViewIdSelect",
  "name": "defaultViewId",
  "label": "列表视图",
  "xObjectApiKey": "objectApiKey", // 用于关联当前属性配置中的实体数据来源(关联哪个实体对象)
  "placeholder": "请选择列表视图"
}

其中 xObjectApiKey 为从 props.data 读取实体 API Key 的字段名或路径,用于确定查询哪个实体的视图列表。

属性数值类型:string — 所选列表视图的 ID。

属性说明:

  • name: 字段名称
  • label: 标签文本
  • disabled: 是否禁用
  • placeholder: 占位文案,默认可为「请选择视图」
  • xObjectApiKey: 从 props.data 取实体 API Key 的字段名或路径,默认 xObjectApiKey
  • value: 字符串,所选 viewId
  • onChange: 值变化回调

customApi - Neo 平台自定义 API 绑定配置项

属性数值类型:object — 对象数值格式,各字段说明如下:

字段类型说明
apiUrlstring所选自定义 API 的地址(与平台列表项中的 URL 一致)
methodTypestring请求方式,小写:get | post | put | patch | delete
headersRecord<string, string>可选。请求头键值对
dataRecord<string, any>可选。请求参数;值可为解析后的 JSON 或原始字符串(见下文保存规则)

空对象 {} 或未配置时,组件侧可按「未选择 API」处理。

交互方式:在配置面板中默认展示 只读摘要 + 设置按钮;点击设置 icon 后在弹窗中可选择平台已注册的自定义 OpenAPI,并可配置 请求头请求参数(Data)

说明:列表数据来自 neo-open-apicustomApi.getList({ pageNo: 1, pageSize: 10000 })

功能特性:

  1. API 下拉:选项展示为 methodName + methodType,选中后写入 apiUrlmethodType(请求方式随所选接口自动回填,不支持手动编辑)
  2. 请求头:多组 Key / Value;确定时合并为 headers 对象;Key 必填
  3. 请求参数 (Data):多组 Key / Value;Value 若为合法 JSON 字符串则 JSON.parse 后存入,否则存原始字符串
  4. 空对象裁剪headers / data 若最终无键值,会从保存结果中 删除 该字段

使用方法:

在组件模型文件(model.ts)/ 属性配置(propsSchema)中添加使用,用于添加一个可获取平台自定义 API 数据的配置项:

json
{
  "type": "customApi",
  "name": "fetchConfig",
  "label": "自定义接口",
  "description": "请选择已注册的 OpenAPI;Data 中 Value 可填 JSON。"
}

属性说明:

  • name:字段名,必填;对应模型中的属性名
  • label:标签文案;同时作为弹窗标题的默认值
  • description:可选;显示在「请求参数 (Data)」区域下方的说明文字
  • placeholder:预留(主输入框为只读展示,具体以产品为准)
  • value:当前值,结构见上文「适用属性数值类型」
  • onChange:弹窗确定时回传完整对象
  • visibleOn / hiddenOn:与其他字段联动显示

在属性配置面板中获取的数值格式如下:

json
{
    "apiUrl": "/rest/data/v2.0/scripts/api/proxy/forward",
    "methodType": "post",
    "data": {
        "url": "'https://jsonplaceholder.typicode.com/posts",
        "method": "GET",
        "data": "{ test: 123}"
    }
}

以上数据可在自定义组件 this.props.fetchConfig 获取,可通过 customApi.run 获取对应的外部接口数据。使用方式如下:

js
// @ts-ignore
import { customApi } from 'neo-open-api';

const { fetchConfig } = this.props;
const result = await customApi.run(fetchConfig); // 获取平台自定义 API 返回的数据