66 lines
2.5 KiB
TypeScript
66 lines
2.5 KiB
TypeScript
|
|
/**
|
|||
|
|
* F3 — 节点 Provider Metadata API
|
|||
|
|
*
|
|||
|
|
* 后端 B4/B5/B6 Provider SPI 暴露每个节点类型的 form-create schema。
|
|||
|
|
* 前端启动(或打开规则链编辑页)时一次性拉取,缓存到 Pinia。
|
|||
|
|
*
|
|||
|
|
* 后端 B4/B5/B6 未就绪时使用 mock;对齐 F2 `useNodeCatalog` 的 NodeTypeMeta
|
|||
|
|
* 并扩展 `schema.rule` 字段。
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
import type { NodeTypeMeta } from '#/components/iot-dag';
|
|||
|
|
|
|||
|
|
import { requestClient } from '#/api/request';
|
|||
|
|
|
|||
|
|
// ──────────────────────────────────────────────
|
|||
|
|
// 类型定义
|
|||
|
|
// ──────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
/** form-create rule 单项 — 与 @form-create/ant-design-vue 的 Rule 对齐(宽松定义) */
|
|||
|
|
export interface FormCreateRuleItem {
|
|||
|
|
/** 组件类型(select / input / DeviceSelector 等) */
|
|||
|
|
type: string;
|
|||
|
|
/** 字段名 */
|
|||
|
|
field?: string;
|
|||
|
|
/** 显示标题(i18n key 或原始文案) */
|
|||
|
|
title?: string;
|
|||
|
|
/** 组件 props */
|
|||
|
|
props?: Record<string, unknown>;
|
|||
|
|
/** 下拉选项 */
|
|||
|
|
options?: Array<{ label: string; value: boolean | number | string }>;
|
|||
|
|
/** 校验规则(antd Form rule 风格) */
|
|||
|
|
validate?: Array<Record<string, unknown>>;
|
|||
|
|
/** 默认值 */
|
|||
|
|
value?: unknown;
|
|||
|
|
/** 子项(嵌套表单) */
|
|||
|
|
children?: FormCreateRuleItem[];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** form-create schema(完整) */
|
|||
|
|
export interface FormCreateSchema {
|
|||
|
|
/** 字段规则数组 */
|
|||
|
|
rule: FormCreateRuleItem[];
|
|||
|
|
/** 全局 option(submitBtn / resetBtn 等) */
|
|||
|
|
option?: Record<string, unknown>;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** Provider 节点元数据(含 schema,比 NodeTypeMeta 多一层) */
|
|||
|
|
export interface ProviderMetadata extends NodeTypeMeta {
|
|||
|
|
/** 动态表单 schema(form-create 配置) */
|
|||
|
|
schema: FormCreateSchema;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ──────────────────────────────────────────────
|
|||
|
|
// API
|
|||
|
|
// ──────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 拉取所有 Provider 节点元数据(含 schema)
|
|||
|
|
*
|
|||
|
|
* 后端端点约定:`GET /iot/rule/provider/metadata`
|
|||
|
|
* B4/B5/B6 就绪后返回结构需对齐 `ProviderMetadata[]`。
|
|||
|
|
*/
|
|||
|
|
export function getProviderMetadata(): Promise<ProviderMetadata[]> {
|
|||
|
|
return requestClient.get<ProviderMetadata[]>('/iot/rule/provider/metadata');
|
|||
|
|
}
|