amis-model-design
Version:
amis模型设计器
63 lines (62 loc) • 2.55 kB
TypeScript
/**
* @file 零代码list builder
* @desc 基于crud2 builder构建结果改造而成,支持无代码的列表构建
*/
import { BaseSchemaBuilder } from './SchemaBuilder';
import { Manager } from '../base/Manager';
import { SharedContext } from './SharedContext';
import { ApiStrategyInterface } from './ApiStrategyInterface';
import type { PlainObject } from 'amis';
import type { ModelItem, ModelEntityApiSchema, ExtraField, FeatType } from '../type';
import { CRUDSchemaBuilder } from './CRUDBuilder';
interface IPageMap {
pageFormId: string;
pageFormDetailId: string;
}
export interface NoCodeCRUDBuilderOptions {
/** 表格的展示模式 */
mode: 'table2' | 'list' | 'cards' | 'table';
/** 支持的功能场景 */
feats: FeatType[];
/** 支持列表查看的字段集合 */
listFields: ExtraField[];
/** 支持新增的字段集合 */
insertFields?: ExtraField[];
/** 支持批量编辑字段集合 */
bulkEditFields?: ExtraField[];
/** 支持查看详情的字段集合 */
viewFields?: ExtraField[];
/** 支持编辑的字段集合 */
editFields?: ExtraField[];
/** 支持模糊查询的字段集合 */
fuzzyQueryFields?: ExtraField[];
/** 支持简单查询的字段集合 */
simpleQueryFields?: ExtraField[];
/** 支持高级查询的字段集合 */
advancedQueryFields?: ExtraField[];
/** 列表接口的预过滤条件 */
filters?: ModelEntityApiSchema['filters'];
/** 列表接口的排序规则 */
orders?: ModelEntityApiSchema['orders'];
/** 列表table的功能配置 */
table?: string[];
/** 详情表单配置 */
formFields?: PlainObject[];
/** 关联页面配置 */
pageMap: IPageMap;
}
/** headerToolbar 和 footerToolbar 布局换成 flex 包裹 container */
export declare const addSchema2Toolbar: (schema: any, content: any, position: 'header' | 'footer', align: 'left' | 'right') => void;
export declare class NoCodeListSchemaBuilder extends BaseSchemaBuilder<NoCodeCRUDBuilderOptions> {
readonly model: ModelItem;
readonly apiStrategy: ApiStrategyInterface;
readonly manager: Manager;
readonly sharedContext: SharedContext;
static id: string;
options: NoCodeCRUDBuilderOptions;
readonly ApiIdentifier: 'model-entity';
readonly crudSchemaBuilder: CRUDSchemaBuilder;
constructor(model: ModelItem, apiStrategy: ApiStrategyInterface, manager: Manager, sharedContext: SharedContext);
build(options: NoCodeCRUDBuilderOptions): Promise<any>;
}
export {};