vue-table-print
Version:
一个强大的Vue表格打印工具,支持ElementPlus、Ant Design Vue、Arco Design vue等组件库
70 lines (68 loc) • 2.17 kB
TypeScript
interface TableColumn {
prop: string;
label: string;
align?: "left" | "center" | "right";
width?: number | string;
formatter?: (row: any, column: TableColumn, cellValue: any, index: number) => string;
}
interface PrintOptions {
title?: string;
showHeader?: boolean;
showFooter?: boolean;
pageSize?: "A4" | "A3" | "A5" | "Letter";
orientation?: "portrait" | "landscape" | "";
margins?: string;
fontSize?: string;
headerStyle?: {
backgroundColor?: string;
color?: string;
fontWeight?: string;
};
customStyles?: string;
watermark?: string;
logo?: string;
[key: string]: any;
}
interface PrintResult {
success: boolean;
message?: string;
}
/**
* 高级表格打印工具类
*/
declare class TablePrintUtil {
private options;
constructor(options?: any);
/**
* 打印表格
*/
printTable(data: any[], columns: TableColumn[], customOptions?: Partial<PrintOptions>): Promise<PrintResult>;
/**
* 预览表格
*/
previewTable(data: any[], columns: TableColumn[], options?: Partial<PrintOptions>): void;
/**
* 导出为HTML文件
*/
exportToHTML(data: any[], columns: TableColumn[], filename?: string, options?: Partial<PrintOptions>): void;
private generateAdvancedHTML;
private generatePrintStyles;
private generateWatermarkStyle;
private generateHeader;
private generateTableContent;
private generateFooter;
private generatePrintScript;
private executePrint;
private getNestedValue;
}
/**
* Vue 组合式函数
*/
declare function useTablePrint(options?: PrintOptions): {
printTable: (data: any[], columns: TableColumn[], customOptions?: Partial<PrintOptions>) => Promise<PrintResult>;
previewTable: (data: any[], columns: TableColumn[], customOptions?: Partial<PrintOptions>) => void;
exportToHTML: (data: any[], columns: TableColumn[], filename?: string, customOptions?: Partial<PrintOptions>) => void;
printUtil: TablePrintUtil;
};
export { TablePrintUtil, TablePrintUtil as default, useTablePrint };
export type { PrintOptions, PrintResult, TableColumn };