import { ColumnType, ICommonColumn } from '../../common'; import type { ExtractPropTypes } from 'vue'; import type { FormItemRule } from 'element-plus'; import type { ITableCommonColumn, ITableCommonOption } from '../../table'; import type { ISearchCommonColumn, ISearchCommonOption } from '../../search'; import type { IFormCommonColumn, IFormCommonOption } from '../../form'; type WithoutFormColumn = Omit; type WithoutSearchColumn = Omit; export interface ICrudCommonColumn extends ICommonColumn, ITableCommonColumn, WithoutFormColumn, WithoutSearchColumn { /** * @description 搜索排序 */ searchOrder?: number; /** * @description 表单排序 */ formOrder?: number; /** * @description 是否开启搜索 */ search?: boolean; /** * @description 搜索默认值 */ searchValue?: any; /** * @description 表单默认值 */ formValue?: any; /** * @description 搜索占位文本 */ searchPlaceholder?: string; /** * @description 表单占位文本 */ formPlaceholder?: string; /** * @description 搜索下拉组件等可清除 */ searchClearable?: boolean; /** * @description 表单下拉组件等可清除 */ formClearable?: boolean; /** * @description 搜索标签宽度 */ searchLabelWidth?: string; /** * @description 表单标签宽度 */ formLabelWidth?: string; /** * @description 搜索校验规则 */ searchRules?: FormItemRule[]; /** * @description 表单校验规则 */ formRules?: FormItemRule[]; /** * @description 列表是否显示 */ hide?: boolean; /** * @description 新增对话框是否显示 */ addHide?: boolean; /** * @description 查看对话框是否显示 */ viewHide?: boolean; /** * @description 编辑对话框是否显示 */ editHide?: boolean; /** * @description 搜索项框栅列 */ searchSpan?: number; /** * @description 新增项框栅列 */ addSpan?: number; /** * @description 编辑项框栅列 */ editSpan?: number; /** * @description 查看项框栅列 */ viewSpan?: number; /** * @description 表单项框栅列 */ formSpan?: number; /** * @description 新增表单禁用 */ addDisabled?: boolean; /** * @description 编辑表单禁用 */ editDisabled?: boolean; } export interface ICrudColumn extends ICrudCommonColumn { type?: ColumnType | 'index' | 'single' | 'selection'; /** * @description 仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选 * @param row 行数据 * @param index 索引 * @returns */ selectable?: (row: any, index: number) => boolean; /** * @description 对应列是否可以排序, 如果设置为 'custom',则代表用户希望远程排序,需要监听 Table 的 sort-change 事件 */ sortable?: boolean | string; } /** * @description crud配置 */ export interface ICrudOption extends ITableCommonOption, IFormCommonOption, ISearchCommonOption { /** * @description 新增按钮是否需要 */ addBtn?: boolean; /** * @description 编辑按钮是否需要 */ editBtn?: boolean; /** * @description 删除按钮是否需要 */ delBtn?: boolean; /** * @description 新增按钮文字 */ addBtnText?: string; /** * @description 新增按钮图标 */ addBtnIcon?: string; /** * @description 搜索label宽度 */ searchLabelWidth?: string; /** * @description 表单label宽度 */ formLabelWidth?: string; /** * @description 新增弹窗标题 */ addDialogTitle?: string; /** * @description 编辑弹窗标题 */ editDialogTitle?: string; /** * @description 查看弹窗标题 */ viewDialogTitle?: string; /** * @description 弹窗宽度 */ dialogWidth?: string; /** * @description 表格高度 */ height?: string; /** * @description 表格最大高度 */ maxHeight?: string; /** * @description 表格高度调节(px) */ calcHeight?: number; /** * @description crud列配置 */ column: ICrudColumn[]; } export declare const crudProps: { readonly size: { readonly type: import("vue").PropType>; readonly required: false; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; readonly loading: import("m-eleplus-crud/es/utils").EpPropFinalized; readonly data: { readonly type: import("vue").PropType; readonly required: true; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; readonly search: import("m-eleplus-crud/es/utils").EpPropFinalized {}, boolean>; readonly total: import("m-eleplus-crud/es/utils").EpPropFinalized; readonly modelValue: { readonly type: import("vue").PropType>; readonly required: true; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; readonly permission: import("m-eleplus-crud/es/utils").EpPropFinalized { addBtn: boolean; editBtn: boolean; delBtn: boolean; }, boolean>; readonly select: import("m-eleplus-crud/es/utils").EpPropFinalized never[], boolean>; readonly beforeEnter: { readonly type: import("vue").PropType; readonly required: false; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; readonly option: { readonly type: import("vue").PropType; readonly required: false; readonly validator: ((val: unknown) => boolean) | undefined; __epPropKey: true; }; }; export type CrudProps = ExtractPropTypes; export declare const crudEmits: { /** * @description 更新选择数据 * @param arr 选择的数据 * @returns */ 'update:select': (arr: any[]) => boolean; /** * @description 更新表单数据 * @param value 表单数据 * @returns */ 'update:modelValue': (value: any) => value is Record; /** * 表格自定义排序模式下排序变化触发 * @param data * @returns */ sortChange: (data: { column: any; prop: string; order: any; }) => boolean; /** * 查询事件触发 * @param form 查询表单数据 * @returns */ search: (form: any) => form is Record; /** * 重置事件触发 * @returns */ reset: () => boolean; /** * 新增 * @param form 表单数据 * @param done 完成 * @param loading 加载 * @returns */ rowSave: (form: any, done: () => void, loading: () => void) => boolean; /** * 编辑 * @param form 表单数据 * @param done 完成 * @param loading 加载 * @returns */ rowEdit: (form: any, done: () => void, loading: () => void) => boolean; /** * 取消 * @param form 表单数据 * @param index 索引 * @param type 类型 * @returns */ rowCancel: (form: any, index: number, type: "add" | "edit" | "view") => boolean; /** * 删除 * @param row 行数据 * @param index 索引 * @returns */ rowDel: (row: any, index: number) => boolean; }; export type CrudEmits = typeof crudEmits; export {};