import Vue from 'vue'; import { ButtonType } from 'element-ui/types/button'; import { DicProps } from './variable'; import { DialogFormPlugin } from './global-component/dialog-form'; import { CropperImage, ImageCropperOption } from './global-component/image-cropper'; import { ImagePreviewFn } from './global-component/image-preview'; import { Export } from './global-component/export'; import { WaterMark, WaterMarkOption } from './global-component/watermark'; import { AvueCrudColumn } from './crud/column'; import { AvueFormColumn } from './form/column'; /** Avue组件公共定义 */ export declare class AvueComponent extends Vue { /** 将组件注册到Vue中 */ static install(vue: typeof Vue): void; } /** 组件尺寸,仅对ElementUI支持的组件有效(button, input) */ export type AvueComponentSize = 'medium' | 'small' | 'mini'; /** 对齐方式 */ export type AvueAlignment = 'left' | 'center' | 'right'; /** 菜单类型 */ export type AvueMenuType = 'button' | 'text' | 'icon' | 'icon-plain' | 'menu'; /** * 对象定义 */ export declare type Obj = Record & Object; /** log日志类型 */ type LogType = 'primary' | 'success' | 'warning' | 'danger' | 'text'; // window属性扩展 declare global { interface Window { /** 日志 */ $Log: { /** * @description 打印一个 [ title | text ] 样式的信息 * @param {String} title title text * @param {String} info info text * @param {String} type style */ capsule: (title: string, info: string, type?: ButtonType) => void; /** * @description 打印彩色文字 */ colorful: (text: string) => void; /** * @description 打印 default 样式的文字 */ default: (text: string) => void; /** * @description 打印 primary 样式的文字 */ primary: (text: string) => void; /** * @description 打印 success 样式的文字 */ success: (text: string) => void; /** * @description 打印 warning 样式的文字 */ warning: (text: string) => void; /** * @description 打印 danger 样式的文字 */ danger: (text: string) => void; }; } } // 全局方法定义 declare module 'vue/types/vue' { interface Vue { /** * 弹窗表单 * @since 2.9.0 */ $DialogForm: DialogFormPlugin; /** * 图片裁剪 * @since 2.9.9 */ $ImageCropper: (params: ImageCropperOption) => CropperImage; /** * 预览 * @param data 需要预览的数组 * @param {string} data[].url 需要预览的地址 * @param {string} [data[].name] url不是图片和视频时生效 * @param {number} index 默认打开序号 * @param {object} ops 其他配置 * @param {boolean} [ops.closeOnClickModal = false] 点击modal时是否关闭 * @param {Function} [ops.beforeClose] 关闭前执行事件 * @param {Function} [ops.click] 点击事件 * @param {boolean} [ops.modal = true] 是否显示modal * @since 2.9.0 */ $ImagePreview: ImagePreviewFn; /** * 从对象数组查找符合条件的对象 * @param list 对象数组 * @param value 查找的关键词 * @param [key] 关键词对应的属性名 * @since 2.10.10 */ findObject: ( /** 对象数组 */ list: T[], /** 查找的关键词 */ value: string, /** 关键词对应的属性名 */ key?: string ) => T; /** * 打印 * @description 打印方法在2.8.7重写,配置项与之前不同 * @since 2.8.7 */ $Print: (dom: HTMLElement | Vue | string, option?: { noPrint?: string }) => void; /** * 导出相关 * @since 2.8.8 */ $Export: Export; /** * excel导出 * @deprecated 2.8.8 */ $export: (options: { /** excel标题 */ title: string; /** 数据列配置 */ columns: { /** 列名称 */ label: string; /** 列ID */ prop: string; }[]; /** 数据 */ data: Obj[]; }) => void; /** 全局水印 */ watermark: (options: WaterMarkOption) => WaterMark; /** * 文件下载 * @param url 下载地址 */ downFile: (url: string) => void; /** * 加载外部链接 * @param type 链接类型,可选值为css和js */ loadScript: (type: 'css' | 'js', url: string) => Promise; /** 对象深拷贝 */ deepClone: (data: T) => T; /** * 设置css像素方法 * @param num css像素,数字默认加px属性 * @param defaultValue 默认值,当num为空时生效 */ setPx: (num: unknown, defaultValue?: string) => string; /** * 判断对象、数组、字符串是否为空 */ validatenull: (v: T | undefined | null) => v is undefined | null; /** * 根据对象属性在数组中找到符合的下标返回,没有则为-1 * @param arr 对象数组 * @param value 数组项对象的某个属性值 * @param key 数组项对象的属性名,默认为value */ findArray: (arr: Obj[], value: any, key?: string) => number; /** * 判断是否包含权限 * @param valid 是否包含权限 * @param defaultValid 默认是否包含 */ vaildData: (valid?: T, defaultValid?: boolean) => boolean; /** * 将所层列表转换为一层列 * @since 2.10.10 */ flattenColumns: (list: T[]) => T[]; /** * 获取所有表单项 * @description 过滤基础类型和容器类型组件 * @since 2.10.10 */ findFormColumns: (list: T[]) => T[]; /** * 比较两个值是否相等 * @description 比较两个值在内容上是否相等(不仅限指针相等),仅针对基本类型 * @since 2.10.10 */ valueEquals: (a: any, b: any) => boolean; /** 日志打印,可以打印不同颜色和标注的日志 */ $Log: { /** * 打印一个 [ title | text ] 样式的信息 * @param title 标题 * @param info 信息 * @param type style */ capsule: (title: string, info: string, type?: LogType) => void; /** * 打印彩色文字 */ colorful: ( textArr: { /** 日志内容 */ text: string; /** 日志类型 */ type?: LogType; }[] ) => void; /** * 打印 default 样式的文字 * @param text 日志文字 */ default: (text: string) => void; /** * 打印 primary 样式的文字 * @param text 日志文字 */ primary: (text: string) => void; /** * 打印 success 样式的文字 * @param text 日志文字 */ success: (text: string) => void; /** * 打印 warning 样式的文字 * @param text 日志文字 */ warning: (text: string) => void; /** * 打印 danger 样式的文字 * @param text 日志文字 */ danger: (text: string) => void; }; /** * 复制文本到剪切板 * @param text 需要复制的文本 */ $Clipboard: (option: { text: string }) => Promise; /** * 查找节点 * @param {object[]} list 需要查找的对象数组 * @param {object} props 搜索配置 * @param {string} [props.value='value'] 搜索值对应的字段 * @param {string} [props.children='children'] 子节点 * @param {any} value 被搜索的值 * @returns {object | undefined} 节点 * @since 2.10.10 */ findNode: (list?: Obj[], props?: Partial, value?: any) => Obj | undefined; /** * 获取当前表单项值的label * @param row 表单数据 * @param column 表单项配置 * @param option 表单配置 * @param dic DIC配置 * @since 2.10.10 */ getLabel: (row?: Obj, column?: Obj, option?: Obj, dic?: Obj[]) => string; } }