/** * 控件分组,用于在设计器控件面板中分组展示; */ type WidgetGroupType = | 'layout' // 布局: 布局类控件,一般都有插槽 | 'action' // 操作: 操作按钮类控件,也包含按钮发起弹窗类 | 'form' // 表单: 表单类控件; 如:editor, formTable | 'basic' // 基础: 基础常用的控件;如:文本、图片、图标等 | 'chart' // 图表:图表类控件 | 'advanced' // 高级: 不常用的高级控件 /** * 控件分类, 技术层面的控件类型,主要用于插槽的控件限制; */ type CategoryType = | 'layout' // 布局: 布局类控件,一般都有插槽 | 'action' // 操作: 操作按钮类控件,也包含按钮发起弹窗类 | 'form' // 表单: 表单类控件; 如:editor, formTable | 'basic' // 基础: 基础常用的控件;如:文本、图片、图标等 | 'advanced' // 高级: 不常用的高级控件,兼容旧类型normalVue、others;如:流程 /** * 控件属性分组 */ type PropGroupType = { type: 'prop' | 'event' // "属性面板" 、"动作面板" name: string // 分组编码,唯一且不可重复 label: string // 分组展示名称 visiableLabel: boolean // 是否显示该分组名称,如果为false,则直接显示对应的属性,一般只在第一个分组时出现设置为false的情况 } /** * 控件属性录入使用的编辑组件类型 */ type EditorType = | 'string' // 单行文本输入 | 'date' // 单个日期选择 | 'dateRange' // 日期范围选择 | 'dict' // 字典选择 | 'enum' // Select枚举选择 | 'number' // 数字输入 | 'text' // 多行文本输入 | 'file' // 文件上传 | 'lookup' // 树形下拉选择 | 'numberRange' // 数字范围输入 | 'bool' // 布尔选择 | 'geo' // 地图选择 | 'expr' // 表达式输入 | 'icon' // 图标选择 | 'events' // 事件动作面板 | 'dataSource' // 数据源选择 | 'field' // 字段级联选择 | 'cascader' // 级联选择器 | 'object' // 对象嵌套属性编辑 /** * 事件处理器参数类型 */ type EventHanderParamType = { /** * 事件处理器参数名 */ name: string /** * 事件处理器参数中文名称 */ label: string /** * 事件处理器参数描述信息 */ description?: string } /** * 控件事件面板配置项类型 */ type EventsEditorOptionType = { /** * 事件英文名称,一般是原生事件,如:click, mouseover等;或者是自定义事件 */ name: string /** * 事件中文名称,用于在事件面板中展示 */ label: string /** * 调用事件时所传参数 */ params?: EventHanderParamType[] /** * 事件描述信息 */ description?: string } /** * 数据源配置项类型 */ type DataSourceType = { /** * 数据保存名称(DataProvider的name属性) */ name: string /** * 数据源类型 */ type: 'doc' | 'ajax' | 'json' /** * 数据源接口定义 */ queryDef?: { /** * 接口url地址 */ url: string /** * 数据源接口请求方式 */ method: string /** * 数据源接口请求参数 */ params: object } /** * 静态数据 */ initialData?: unknown[] } /** * 控件属性面板级联选择配置项类型 */ type CascaderEditorOptionType = { /** * 数据源信息 */ dataSource: DataSourceType /** * 所需展示数组字段 */ resDataProp?: string /** * 级联内部映射label和value值 */ dataOptions?: { labelKey: string valueKey: string } /** * 映射desc中其他设定值 */ propMappings?: { /** * key为desc中key值,value为接口返回字段key值 */ [propname: string]: string } } /** * 属性匹配条件 */ type WidgetPropMatchCondition = { /** * 属性名称 */ propName: string /** * 属性值 */ propValue: any } /** * 覆盖属性默认值规则配置 */ type OverrideDefaultValueConfig = { /** * 属性匹配条件(支持多个属性同时匹配) */ condition: WidgetPropMatchCondition[] | null /** * 属性默认值 */ defaultValue: any } /** * 匹配上级控件及覆盖规则配置 */ type MatchClosetWidget = { /** * 控件英文名称 */ name: string /** * 是否为父级 */ isParent: boolean /** * 覆盖属性默认值规则配置 */ overridePropConfig: OverrideDefaultValueConfig } /** * 在某些控件下级时,覆盖控件属性默认值配置 */ type OverrideDefaultValueInClosestWidgets = { /** * 匹配上级控件及覆盖规则配置(支持多个) */ closestWidgets: MatchClosetWidget[] /** * 控件英文名称 */ name: string /** * 覆盖属性的配置 */ overridePropConfig: object /** * 覆盖条件配置 */ condition?: unknown[] /** * 属性默认值 */ defaultValue?: string | number | boolean | object | null } /** * 控件属性元数据类型 */ type PropType = { /** * 属性英文名称,Vue组件props的属性名 */ name: string /** * 属性中文名称,用于在属性面板中展示 */ label: string /** * 是否必传 */ required?: boolean /** * 属性录入使用的编辑组件类型;兼容历史配置:未定义时根据 type 的值匹配 Editor */ editorType: EditorType /** * 选择类属性编辑组件需要的选项列表;目前仅支持 enum 类型的属性编辑组件 */ editorOptions?: | object | any[] | PropType[] | CascaderEditorOptionType[] | EventsEditorOptionType[] | OverrideDefaultValueInClosestWidgets[] /** * 属性数据类型 */ type: 'string' | 'number' | 'boolean' | 'object' | 'function' | 'array' | 'date' /** * 属性默认值 */ defaultValue?: string | number | boolean | object | null /** * 属性描述信息 */ description?: string /** * 属性分组 */ group?: PropGroupType['name'] /** * 属性是否在属性面板显示,一般情况下配置为表达式 */ visible?: boolean | string /** * 属性是否在属性面板中为只读状态,一般情况下配置为表达式 */ readonly?: boolean | string /** * 属性是否不保存到applet元数据中,一般情况下配置为表达式 */ notSaveDesc?: boolean | string } /** * 控件插槽元数据类型 可废弃? */ type SlotType = { /** * 插槽英文名称,Vue组件slot名称 */ name: string /** * 插槽允许插入哪些分类的控件 */ acceptCategory: CategoryType[] /** * 插槽中文名称 */ label: string /** * 插槽描述信息 */ description?: string /** * 插槽使用类型 */ type?: string } /** * 控件元数据类型 */ type WidgetType = { /** * 控件英文名称,同Vue组件名 */ name: string /** * 控件相对于包名的相对路径,用于正确导入控件;如:'./path/to/file' */ exposePath: string /** * 控件中文名称 */ label: string /** * 控件图标配置,一般是字体图标class;用于控件面板中展示 */ icon: string /** * 控件所属分类 */ category: CategoryType /** * 控件匹配的引擎名称;null为所有引擎都适用 */ matchCores: string[] | null /** * 控件匹配的视图名称;null为所有视图都适用;不配置是在category为view时,因为view暂不支持嵌套 */ matchViews?: string[] | null /** * 控件属性列表 */ props?: PropType[] /** * 控件插槽列表 */ slots?: SlotType[] /** * 控件描述信息 */ description?: string /** * 是否为无兄弟控件,值为 true 时同一个插槽内只能存在一个本控件,不允许插入其它控件,且高度100% */ isNoneSibling?: boolean /** * 父控件英文名称(控件type),配置值后继承匹配的控件: * 1、要求采用Vue extends继承父控件的方式开发,保障扩展控件功能正常 * 2、props中无须定义父控件的属性,设计器属性面板中聚合展示父控件与本控件的属性 */ parentName?: string } /** * 控件库元数据类型 */ export type WidgetLibType = { /** * 控件库库名称,将会挂载到浏览器全局变量,需要全局唯一 */ name: string /** * 控件库包名称,import 导入时的包名,模块运行时全局唯一 */ packageName: string /** * 工作空间,使用开发平台的工作空间编码,作为控件名称的前缀,避免冲突 */ workspace: string /** * 控件库中的所有控件,根据分类Map归纳 */ widgets: { [group in WidgetGroupType]?: WidgetType[] } /** * 控件库描述信息 */ description?: string /** * 可选;控件库默认中文名称,正常通过界面配置获得 */ label?: string /** * 可选;控件库默认资源下载地址,正常通过界面配置获得 */ url?: string /** * 可选:如果未定义该字段,则默认取控件属性定义中group值为basic和advanced的属性,并分组展示在属性面板上,未定义group字段的属性不予展示 */ groups?: PropGroupType[] }