UNPKG

8.62 kBTypeScriptView Raw
1import { VXEComponent } from '../component'
2import { VxeTablePropTypes, VxeTableConstructor, VxeTableDataRow } from '../table'
3import { VxeGridConstructor } from '../grid'
4
5/* eslint-disable no-use-before-define */
6
7/**
8 * 表格模块 - 导出、导入、打印
9 */
10export const VxeTableExportModule: VXEComponent<{ [key: string]: any }>
11/**
12 * 表格模块 - 导出、导入、打印
13 */
14export const Export: VXEComponent<{ [key: string]: any }>
15
16export interface TableExportMethods<D = VxeTableDataRow> {
17 /**
18 * 打开高级导出
19 * @param options 参数
20 */
21 openExport(options?: VxeTablePropTypes.ExportConfig): void
22 /**
23 * 将表格数据导出
24 * @param options 参数
25 */
26 exportData(options?: VxeTablePropTypes.ExportConfig): Promise<any>
27 /**
28 * 打开高级导入
29 * @param options 参数
30 */
31 openImport(options?: VxeTablePropTypes.ImportConfig): void
32 /**
33 * 将数据导入表格
34 * @param options 参数
35 */
36 importData(options?: VxeTablePropTypes.ImportConfig): Promise<any>
37 /**
38 * 将一个文件的数据导入表格
39 * @param file 文件流
40 * @param options 参数
41 */
42 importByFile(file: File, options: VxeTablePropTypes.ImportConfig): Promise<any>
43 /**
44 * 保存文件到本地
45 * @param options
46 */
47 saveFile: SaveFileFunction
48 /**
49 * 读取本地文件
50 * @param options 参数
51 */
52 readFile: ReadFileFunction
53 /**
54 * 打印表格数据
55 * @param options 参数
56 */
57 print: PrintFunction
58 /**
59 * 打开高级打印
60 * @param options 参数
61 */
62 openPrint(options?: VxeTablePropTypes.PrintConfig): void
63}
64
65export interface TableExportPrivateMethods<D = VxeTableDataRow> { }
66
67declare module '../grid' {
68 export interface VxeGridMethods<D = VxeTableDataRow> extends TableExportMethods<D> { }
69}
70
71declare module '../table' {
72 export interface VxeTableMethods<D = VxeTableDataRow> extends TableExportMethods<D> { }
73 export interface VxeTablePrivateMethods<D = VxeTableDataRow> extends TableExportPrivateMethods<D> { }
74 export namespace VxeTableDefines {
75 export interface ExtortSheetMethodParams {
76 $table: VxeTableConstructor
77 $grid?: VxeGridConstructor
78 options: VxeTablePropTypes.ExportHandleOptions
79 datas: any[]
80 columns: VxeTableDefines.ColumnInfo[]
81 colgroups: VxeTableDefines.ColumnInfo[][]
82 }
83 }
84 export namespace VxeTablePropTypes {
85 /**
86 * 导入参数
87 */
88 export interface ImportConfig {
89 // 内置属性
90 _typeMaps?: Record<string, number>
91
92 /**
93 * 可选文件类型列表
94 */
95 types?: string[]
96 /**
97 * 导入数据的方式
98 */
99 mode?: string
100 modes?: string[]
101 /**
102 * 是否显示内置的消息提示
103 */
104 message?: boolean
105 /**
106 * 是否服务端导出
107 */
108 remote?: boolean
109 encoding?: string
110 /**
111 * 只对 remote=true 有效,用于自定义导入逻辑
112 */
113 importMethod?(params: {
114 $table: VxeTableConstructor
115 $grid: VxeGridConstructor
116 file: File
117 options: ImportHandleOptions
118 }): Promise<any>
119 beforeImportMethod?(params: {
120 $table: VxeTableConstructor
121 options: any
122 }): void
123 afterImportMethod?(params: {
124 $table: VxeTableConstructor
125 options: any
126 status: boolean
127 }): void
128 }
129 export interface ImportOpts extends ImportConfig {
130 modes: string[]
131 }
132 export interface ImportHandleOptions extends ImportConfig {
133 data: any[]
134 columns: VxeTableDefines.ColumnInfo[]
135 colgroups: VxeTableDefines.ColumnInfo[][]
136 }
137
138 export interface ExportOrPrintColumnOption {
139 colid?: number
140 type?: string
141 field?: string
142 }
143
144 /**
145 * 导出参数
146 */
147 export interface ExportConfig {
148 // 内置属性
149 _typeMaps?: Record<string, number>
150
151 /**
152 * 文件名
153 */
154 filename?: string
155 /**
156 * 表名
157 */
158 sheetName?: string
159 /**
160 * 文件类型
161 */
162 type?: string
163 /**
164 * 可选文件类型列表
165 */
166 types?: string[]
167 /**
168 * 输出数据的方式
169 */
170 mode?: string
171 /**
172 * 输出数据的方式列表
173 */
174 modes?: string[]
175 /**
176 * 是否为源数据
177 */
178 original?: boolean
179 /**
180 * 是否显示内置的消息提示
181 */
182 message?: boolean
183 /**
184 * 是否需要表头
185 */
186 isHeader?: boolean
187 /**
188 * 是否需要表尾
189 */
190 isFooter?: boolean
191 isMerge?: boolean
192 isColgroup?: boolean
193 /**
194 * 是否马上下载,如果设置为 false 则通过返回结果为内容的 Promise
195 */
196 download?: boolean
197 /**
198 * 自定义数据
199 */
200 data?: any[]
201 /**
202 * 自定义列
203 */
204 columns?: VxeTableDefines.ColumnInfo[] | ExportOrPrintColumnOption[]
205 /**
206 * 列过滤方法
207 */
208 columnFilterMethod?(params: { column: VxeTableDefines.ColumnInfo, $columnIndex: number }): boolean
209 /**
210 * 数据过滤方法
211 */
212 dataFilterMethod?(params: { row: any, $rowIndex: number }): boolean
213 /**
214 * 表尾过滤方法
215 */
216 footerFilterMethod?(params: { items: any[], $rowIndex: number }): boolean
217 /**
218 * 是否服务端导出
219 */
220 remote?: boolean
221 /**
222 * 只对 remote=html,xlsx 有效,是否使用样式
223 */
224 useStyle?: boolean
225 sheetMethod?(params: VxeTableDefines.ExtortSheetMethodParams): void
226 /**
227 * 只对 remote=true 有效,用于自定义导出逻辑
228 */
229 exportMethod?(params: {
230 $table: VxeTableConstructor
231 $grid?: VxeGridConstructor
232 options: ExportHandleOptions
233 }): Promise<any>
234 beforeExportMethod?(params: {
235 options: ExportHandleOptions
236 }): void
237 afterExportMethod?(params: {
238 options: ExportHandleOptions
239 }): void
240 }
241 export interface ExportOpts extends ExportConfig { }
242 export interface ExportHandleOptions extends ExportConfig {
243 data: any[]
244 columns: VxeTableDefines.ColumnInfo[]
245 colgroups: VxeTableDefines.ColumnInfo[][]
246 }
247
248 /**
249 * 打印参数
250 */
251 export interface PrintConfig {
252 /**
253 * 表名
254 */
255 sheetName?: string
256 /**
257 * 输出数据的方式
258 */
259 mode?: string
260 /**
261 * 输出数据的方式列表
262 */
263 modes?: string[]
264 /**
265 * 是否为源数据
266 */
267 original?: boolean
268 /**
269 * 是否需要表头
270 */
271 isHeader?: boolean
272 /**
273 * 是否需要表尾
274 */
275 isFooter?: boolean
276 /**
277 * 自定义数据
278 */
279 data?: any[]
280 /**
281 * 自定义列
282 */
283 columns?: VxeTableDefines.ColumnInfo[] | ExportOrPrintColumnOption[]
284 /**
285 * 打印样式
286 */
287 style?: string
288 /**
289 * 自定义打印内容
290 */
291 content?: string
292 /**
293 * 列过滤方法
294 */
295 columnFilterMethod?(params: { column: VxeTableDefines.ColumnInfo, $columnIndex: number }): boolean
296 /**
297 * 数据过滤方法
298 */
299 dataFilterMethod?(params: { row: any, $rowIndex: number }): boolean
300 /**
301 * 表尾过滤方法
302 */
303 footerFilterMethod?(params: { items: any[], $rowIndex: number }): boolean
304 /**
305 * 打印之前的方法,可以通过返回自定义打印的内容
306 */
307 beforePrintMethod?(params: {
308 $table: VxeTableConstructor | null
309 content: string
310 options: PrintHandleOptions
311 }): string
312 }
313 export interface PrintOpts extends PrintConfig { }
314 export interface PrintHandleOptions extends PrintConfig { }
315 }
316}
317
318export type SaveFileFunction = (options: {
319 filename: string
320 type: string
321 content: string | Blob
322}) => Promise<any>
323
324export type ReadFileFunction = (options?: {
325 multiple?: boolean
326 types?: string[]
327 message?: boolean
328}) => Promise<{
329 status: boolean
330 files: FileList
331 file: File
332}>
333
334export type PrintFunction = (options?: VxeTablePropTypes.PrintConfig) => any