@agile-team/mach-report 2.3.2 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -5
- package/dist/ReportPreview-BVTpw9Tb.cjs +6 -0
- package/dist/ReportPreview-XF8iSUG1.js +1910 -0
- package/dist/grid-geometry-BNIvw52m.cjs +1 -0
- package/dist/{grid-geometry-Dw7BlENr.js → grid-geometry-C8hGoe9o.js} +10 -10
- package/dist/index.cjs +5 -5
- package/dist/index.d.cts +74 -0
- package/dist/index.d.ts +74 -0
- package/dist/index.js +946 -782
- package/dist/number-format-BA_KwrZe.js +55 -0
- package/dist/number-format-CZ2T_5kF.cjs +1 -0
- package/dist/pdf.cjs +1 -1
- package/dist/pdf.d.cts +6 -0
- package/dist/pdf.d.ts +6 -0
- package/dist/pdf.js +2 -2
- package/dist/{plugin-5R00MJQs.js → plugin-CKnSVuVe.js} +1 -1
- package/dist/{plugin-2lqgTX26.cjs → plugin-DwKr8oF6.cjs} +1 -1
- package/dist/render-plan-CCTL4F9v.cjs +1 -0
- package/dist/{render-plan-I9AHvQv7.js → render-plan-CXBWRog4.js} +12 -7
- package/dist/style.css +1 -1
- package/dist/vue/async.d.cts +598 -1
- package/dist/vue/async.d.ts +598 -1
- package/dist/vue/index.d.cts +820 -10
- package/dist/vue/index.d.ts +820 -10
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +96 -73
- package/dist/xlsx.cjs +24 -24
- package/dist/xlsx.d.cts +209 -0
- package/dist/xlsx.d.ts +209 -0
- package/dist/xlsx.js +9805 -9284
- package/package.json +1 -1
- package/dist/ReportPreview-B-mwUSk9.cjs +0 -6
- package/dist/ReportPreview-DKjr4cwO.js +0 -1688
- package/dist/defaults-D4o0NCLo.js +0 -9
- package/dist/defaults-DOO1yHwx.cjs +0 -1
- package/dist/grid-geometry-bkciiZ4Q.cjs +0 -1
- package/dist/render-plan-CfJ3wf1l.cjs +0 -1
package/dist/vue/async.d.ts
CHANGED
|
@@ -30,6 +30,29 @@ declare type ColumnFormat =
|
|
|
30
30
|
| { kind: "percent"; digits?: number }
|
|
31
31
|
| { kind: "date"; pattern?: string };
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* 列值格式化(声明式、JSON 可序列化)。
|
|
35
|
+
* 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
|
|
36
|
+
* 三后端(DOM/Canvas/PDF)零改动。
|
|
37
|
+
*
|
|
38
|
+
* 语义约定(v0.9 固化):
|
|
39
|
+
* - number.digits 显式给出 → 精确保留(12.5 + digits:2 → "12.50")
|
|
40
|
+
* - number.thousands 默认 false(千分位显式开启)
|
|
41
|
+
* - date 字符串按"本地时区的日历日"解析(YYYY-MM-DD / YYYY/MM/DD 直取年月日,
|
|
42
|
+
* 不经 Date 字符串构造——后者按 UTC 零点,负时区环境会少一天)
|
|
43
|
+
*/
|
|
44
|
+
declare type ColumnFormat_2 = {
|
|
45
|
+
kind: "number";
|
|
46
|
+
thousands?: boolean;
|
|
47
|
+
digits?: number;
|
|
48
|
+
} | {
|
|
49
|
+
kind: "percent";
|
|
50
|
+
digits?: number;
|
|
51
|
+
} | {
|
|
52
|
+
kind: "date";
|
|
53
|
+
pattern?: string;
|
|
54
|
+
};
|
|
55
|
+
|
|
33
56
|
declare type ComponentKind =
|
|
34
57
|
| "text"
|
|
35
58
|
| "image"
|
|
@@ -40,6 +63,10 @@ declare type ComponentKind =
|
|
|
40
63
|
| "rect"
|
|
41
64
|
| "ellipse";
|
|
42
65
|
|
|
66
|
+
declare type ComponentKind_2 = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
|
|
67
|
+
|
|
68
|
+
declare type ComponentKind_3 = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
|
|
69
|
+
|
|
43
70
|
declare interface ComponentStyle {
|
|
44
71
|
fontSizePx?: number;
|
|
45
72
|
fontSize?: number;
|
|
@@ -64,8 +91,136 @@ declare interface ComponentStyle {
|
|
|
64
91
|
rotateDeg?: number;
|
|
65
92
|
}
|
|
66
93
|
|
|
94
|
+
declare interface ComponentStyle_2 {
|
|
95
|
+
fontSizePx?: number;
|
|
96
|
+
fontSize?: number;
|
|
97
|
+
fontFamily?: string;
|
|
98
|
+
bold?: boolean;
|
|
99
|
+
italic?: boolean;
|
|
100
|
+
underline?: boolean;
|
|
101
|
+
color?: string;
|
|
102
|
+
backgroundColor?: string;
|
|
103
|
+
align?: "left" | "center" | "right" | "justify";
|
|
104
|
+
verticalAlign?: "top" | "middle" | "bottom";
|
|
105
|
+
lineColor?: string;
|
|
106
|
+
borderColor?: string;
|
|
107
|
+
lineWidthPt?: number;
|
|
108
|
+
borderTop?: boolean;
|
|
109
|
+
borderRight?: boolean;
|
|
110
|
+
borderBottom?: boolean;
|
|
111
|
+
borderLeft?: boolean;
|
|
112
|
+
lineHeight?: number;
|
|
113
|
+
letterSpacing?: number;
|
|
114
|
+
opacity?: number;
|
|
115
|
+
rotateDeg?: number;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
declare interface ComponentStyle_3 {
|
|
119
|
+
fontSizePx?: number;
|
|
120
|
+
fontSize?: number;
|
|
121
|
+
fontFamily?: string;
|
|
122
|
+
bold?: boolean;
|
|
123
|
+
italic?: boolean;
|
|
124
|
+
underline?: boolean;
|
|
125
|
+
color?: string;
|
|
126
|
+
backgroundColor?: string;
|
|
127
|
+
align?: "left" | "center" | "right" | "justify";
|
|
128
|
+
verticalAlign?: "top" | "middle" | "bottom";
|
|
129
|
+
lineColor?: string;
|
|
130
|
+
borderColor?: string;
|
|
131
|
+
lineWidthPt?: number;
|
|
132
|
+
borderTop?: boolean;
|
|
133
|
+
borderRight?: boolean;
|
|
134
|
+
borderBottom?: boolean;
|
|
135
|
+
borderLeft?: boolean;
|
|
136
|
+
lineHeight?: number;
|
|
137
|
+
letterSpacing?: number;
|
|
138
|
+
opacity?: number;
|
|
139
|
+
rotateDeg?: number;
|
|
140
|
+
}
|
|
141
|
+
|
|
67
142
|
declare type DatasetRows = Record<string, Record<string, unknown>[]>;
|
|
68
143
|
|
|
144
|
+
declare interface ExcelImportedSheet {
|
|
145
|
+
name: string;
|
|
146
|
+
/** Original, one-based workbook position. */
|
|
147
|
+
index: number;
|
|
148
|
+
range: string;
|
|
149
|
+
rowCount: number;
|
|
150
|
+
columnCount: number;
|
|
151
|
+
/** Zero-based index into template.pages. */
|
|
152
|
+
pageStart: number;
|
|
153
|
+
pageCount: number;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Limits apply to the selected rectangular ranges, including their empty cells. */
|
|
157
|
+
declare interface ExcelImportLimits {
|
|
158
|
+
/** Compressed input, default 20 MiB. */
|
|
159
|
+
maxFileBytes?: number;
|
|
160
|
+
/** Declared ZIP uncompressed total, default 64 MiB. */
|
|
161
|
+
maxUncompressedBytes?: number;
|
|
162
|
+
/** Total selected cells across sheets, default 250,000; hard ceiling 1,000,000. */
|
|
163
|
+
maxCells?: number;
|
|
164
|
+
/** Rows per selected sheet, default 100,000; hard ceiling 1,048,576. */
|
|
165
|
+
maxRows?: number;
|
|
166
|
+
/** Columns per selected sheet, default 2,048; hard ceiling 16,384. */
|
|
167
|
+
maxColumns?: number;
|
|
168
|
+
/** Workbook sheets, default 32. */
|
|
169
|
+
maxSheets?: number;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** Limits apply to the selected rectangular ranges, including their empty cells. */
|
|
173
|
+
declare interface ExcelImportLimits_2 {
|
|
174
|
+
/** Compressed input, default 20 MiB. */
|
|
175
|
+
maxFileBytes?: number;
|
|
176
|
+
/** Declared ZIP uncompressed total, default 64 MiB. */
|
|
177
|
+
maxUncompressedBytes?: number;
|
|
178
|
+
/** Total selected cells across sheets, default 250,000; hard ceiling 1,000,000. */
|
|
179
|
+
maxCells?: number;
|
|
180
|
+
/** Rows per selected sheet, default 100,000; hard ceiling 1,048,576. */
|
|
181
|
+
maxRows?: number;
|
|
182
|
+
/** Columns per selected sheet, default 2,048; hard ceiling 16,384. */
|
|
183
|
+
maxColumns?: number;
|
|
184
|
+
/** Workbook sheets, default 32. */
|
|
185
|
+
maxSheets?: number;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
declare interface ExcelImportOptions {
|
|
189
|
+
/** Sheet names or one-based workbook positions. Default: all visible sheets. */
|
|
190
|
+
sheets?: Array<string | number>;
|
|
191
|
+
/** A1 range for every sheet, or ranges keyed by exact sheet name. */
|
|
192
|
+
range?: string | Record<string, string>;
|
|
193
|
+
/** Wide preserves natural column widths. A3/A4 scale the complete width to paper. */
|
|
194
|
+
layout?: "wide" | "a3" | "a4";
|
|
195
|
+
/** Only applies to A3/A4; default landscape. */
|
|
196
|
+
landscape?: boolean;
|
|
197
|
+
/** Vertical preview segment limit, default 80, maximum 200. Merges remain intact. */
|
|
198
|
+
maxRowsPerPage?: number;
|
|
199
|
+
/** Optional resource limits; hard ceilings prevent unbounded allocations. */
|
|
200
|
+
limits?: ExcelImportLimits;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
declare interface ExcelImportOptions_2 {
|
|
204
|
+
/** Sheet names or one-based workbook positions. Default: all visible sheets. */
|
|
205
|
+
sheets?: Array<string | number>;
|
|
206
|
+
/** A1 range for every sheet, or ranges keyed by exact sheet name. */
|
|
207
|
+
range?: string | Record<string, string>;
|
|
208
|
+
/** Wide preserves natural column widths. A3/A4 scale the complete width to paper. */
|
|
209
|
+
layout?: "wide" | "a3" | "a4";
|
|
210
|
+
/** Only applies to A3/A4; default landscape. */
|
|
211
|
+
landscape?: boolean;
|
|
212
|
+
/** Vertical preview segment limit, default 80, maximum 200. Merges remain intact. */
|
|
213
|
+
maxRowsPerPage?: number;
|
|
214
|
+
/** Optional resource limits; hard ceilings prevent unbounded allocations. */
|
|
215
|
+
limits?: ExcelImportLimits_2;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
declare interface ExcelImportResult {
|
|
219
|
+
template: ReportTemplate_2;
|
|
220
|
+
warnings: string[];
|
|
221
|
+
sheets: ExcelImportedSheet[];
|
|
222
|
+
}
|
|
223
|
+
|
|
69
224
|
declare interface GridCell {
|
|
70
225
|
text?: string;
|
|
71
226
|
rawText?: string;
|
|
@@ -73,15 +228,62 @@ declare interface GridCell {
|
|
|
73
228
|
value?: string | number | boolean | null;
|
|
74
229
|
/** Excel 数字格式(例如 #,##0.00 / 0.00%),不改变 text。 */
|
|
75
230
|
numberFormat?: string;
|
|
231
|
+
/** 编辑输入类型;省略时只按原始值推断,数字字符串不会被转换为数值。 */
|
|
232
|
+
valueType?: "text" | "number" | "boolean";
|
|
233
|
+
/** 单元格级编辑控制;预览仍需显式开启 editing。 */
|
|
234
|
+
editable?: boolean;
|
|
235
|
+
/** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
|
|
236
|
+
formula?: string;
|
|
76
237
|
children?: PlanComponent[];
|
|
77
238
|
colSpan?: number;
|
|
78
239
|
rowSpan?: number;
|
|
79
240
|
style?: ComponentStyle;
|
|
80
241
|
}
|
|
81
242
|
|
|
243
|
+
declare interface GridCell_2 {
|
|
244
|
+
text?: string;
|
|
245
|
+
rawText?: string;
|
|
246
|
+
/** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
|
|
247
|
+
value?: string | number | boolean | null;
|
|
248
|
+
/** Excel 数字格式(例如 #,##0.00 / 0.00%),不改变 text。 */
|
|
249
|
+
numberFormat?: string;
|
|
250
|
+
/** 编辑输入类型;省略时只按原始值推断,数字字符串不会被转换为数值。 */
|
|
251
|
+
valueType?: "text" | "number" | "boolean";
|
|
252
|
+
/** 单元格级编辑控制;预览仍需显式开启 editing。 */
|
|
253
|
+
editable?: boolean;
|
|
254
|
+
/** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
|
|
255
|
+
formula?: string;
|
|
256
|
+
children?: PlanComponent_2[];
|
|
257
|
+
colSpan?: number;
|
|
258
|
+
rowSpan?: number;
|
|
259
|
+
style?: ComponentStyle_2;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
declare interface GridCell_3 {
|
|
263
|
+
text?: string;
|
|
264
|
+
rawText?: string;
|
|
265
|
+
/** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
|
|
266
|
+
value?: string | number | boolean | null;
|
|
267
|
+
/** Excel 数字格式(例如 #,##0.00 / 0.00%),不改变 text。 */
|
|
268
|
+
numberFormat?: string;
|
|
269
|
+
/** 编辑输入类型;省略时只按原始值推断,数字字符串不会被转换为数值。 */
|
|
270
|
+
valueType?: "text" | "number" | "boolean";
|
|
271
|
+
/** 单元格级编辑控制;预览仍需显式开启 editing。 */
|
|
272
|
+
editable?: boolean;
|
|
273
|
+
/** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
|
|
274
|
+
formula?: string;
|
|
275
|
+
children?: PlanComponent_3[];
|
|
276
|
+
colSpan?: number;
|
|
277
|
+
rowSpan?: number;
|
|
278
|
+
style?: ComponentStyle_3;
|
|
279
|
+
}
|
|
280
|
+
|
|
82
281
|
/** auto:真实数字/显式数值格式居右,日期与布尔居中,其他内容居左。 */
|
|
83
282
|
declare type ListAlignment = NonNullable<ComponentStyle["align"]> | "auto";
|
|
84
283
|
|
|
284
|
+
/** auto:真实数字/显式数值格式居右,日期与布尔居中,其他内容居左。 */
|
|
285
|
+
declare type ListAlignment_2 = NonNullable<ComponentStyle_3["align"]> | "auto";
|
|
286
|
+
|
|
85
287
|
declare interface ListColumn {
|
|
86
288
|
header: string;
|
|
87
289
|
field: string;
|
|
@@ -97,6 +299,31 @@ declare interface ListColumn {
|
|
|
97
299
|
format?: ColumnFormat;
|
|
98
300
|
/** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
|
|
99
301
|
rules?: StyleRule[];
|
|
302
|
+
/** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
|
|
303
|
+
editable?: boolean;
|
|
304
|
+
/** 空值列或特殊数据类型可显式声明编辑输入类型。 */
|
|
305
|
+
valueType?: GridCell["valueType"];
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
declare interface ListColumn_2 {
|
|
309
|
+
header: string;
|
|
310
|
+
field: string;
|
|
311
|
+
widthMm: number;
|
|
312
|
+
style?: ComponentStyle_3;
|
|
313
|
+
/** 内容对齐,优先于 style.align;数值字符串不会自动判为数字。 */
|
|
314
|
+
align?: ListAlignment_2;
|
|
315
|
+
/** 独立的表头对齐,不改变内容对齐。 */
|
|
316
|
+
headerAlign?: ComponentStyle_3["align"];
|
|
317
|
+
/** 独立的表头样式,优先于列表级表头样式。 */
|
|
318
|
+
headerStyle?: ComponentStyle_3;
|
|
319
|
+
/** 值格式化(声明式):千分位/小数位、百分比、日期 pattern */
|
|
320
|
+
format?: ColumnFormat_2;
|
|
321
|
+
/** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
|
|
322
|
+
rules?: StyleRule_2[];
|
|
323
|
+
/** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
|
|
324
|
+
editable?: boolean;
|
|
325
|
+
/** 空值列或特殊数据类型可显式声明编辑输入类型。 */
|
|
326
|
+
valueType?: GridCell_3["valueType"];
|
|
100
327
|
}
|
|
101
328
|
|
|
102
329
|
declare interface ListComponent {
|
|
@@ -129,6 +356,36 @@ declare interface ListComponent {
|
|
|
129
356
|
grandTotal?: ListGrandTotal;
|
|
130
357
|
}
|
|
131
358
|
|
|
359
|
+
declare interface ListComponent_2 {
|
|
360
|
+
kind: "list";
|
|
361
|
+
id?: string;
|
|
362
|
+
/** 宽表标记用于连续 Excel;不改变低层列表的列宽和分页算法。 */
|
|
363
|
+
layout?: "page" | "wide";
|
|
364
|
+
/** 逻辑表名称,供 Excel Sheet 命名;不额外生成标题组件。 */
|
|
365
|
+
title?: string;
|
|
366
|
+
leftMm: number;
|
|
367
|
+
topMm: number;
|
|
368
|
+
widthMm: number;
|
|
369
|
+
dataset: string;
|
|
370
|
+
columns: ListColumn_2[];
|
|
371
|
+
fontSizePt?: number;
|
|
372
|
+
headerBold?: boolean;
|
|
373
|
+
rowHeightMm?: number;
|
|
374
|
+
paddingMm?: number;
|
|
375
|
+
headerEveryPage?: boolean;
|
|
376
|
+
headerBackgroundColor?: string;
|
|
377
|
+
/** 内容默认对齐,列配置可覆盖;低层模板缺省仍为 left。 */
|
|
378
|
+
align?: ListAlignment_2;
|
|
379
|
+
/** 表头默认对齐,列配置可覆盖。 */
|
|
380
|
+
headerAlign?: ComponentStyle_3["align"];
|
|
381
|
+
headerStyle?: ComponentStyle_3;
|
|
382
|
+
border?: boolean;
|
|
383
|
+
/** 分组小计(组头/组尾小计/组头防孤行) */
|
|
384
|
+
groupBy?: ListGroupBy_2;
|
|
385
|
+
/** 末尾总合计行(依赖 groupBy.subtotal 或显式 fields) */
|
|
386
|
+
grandTotal?: ListGrandTotal_2;
|
|
387
|
+
}
|
|
388
|
+
|
|
132
389
|
declare type ListGrandTotal =
|
|
133
390
|
| boolean
|
|
134
391
|
| {
|
|
@@ -138,6 +395,13 @@ declare type ListGrandTotal =
|
|
|
138
395
|
fields?: string[];
|
|
139
396
|
};
|
|
140
397
|
|
|
398
|
+
declare type ListGrandTotal_2 = boolean | {
|
|
399
|
+
label?: string;
|
|
400
|
+
style?: ComponentStyle_3;
|
|
401
|
+
/** 合计列(缺省沿用 groupBy.subtotal) */
|
|
402
|
+
fields?: string[];
|
|
403
|
+
};
|
|
404
|
+
|
|
141
405
|
/** 分组小计配置(声明式,见 ListComponent.groupBy) */
|
|
142
406
|
declare interface ListGroupBy {
|
|
143
407
|
/** 分组字段(值变化即切组) */
|
|
@@ -153,6 +417,21 @@ declare interface ListGroupBy {
|
|
|
153
417
|
keepWithNext?: boolean;
|
|
154
418
|
}
|
|
155
419
|
|
|
420
|
+
/** 分组小计配置(声明式,见 ListComponent.groupBy) */
|
|
421
|
+
declare interface ListGroupBy_2 {
|
|
422
|
+
/** 分组字段(值变化即切组) */
|
|
423
|
+
field: string;
|
|
424
|
+
/** 组头文案模板,{value} 占位(默认 "{value}") */
|
|
425
|
+
headerTemplate?: string;
|
|
426
|
+
headerStyle?: ComponentStyle_3;
|
|
427
|
+
/** 需要小计的列字段(组尾输出合计行;数值列求和,其余输出首值/留空) */
|
|
428
|
+
subtotal?: string[];
|
|
429
|
+
subtotalStyle?: ComponentStyle_3;
|
|
430
|
+
subtotalLabel?: string;
|
|
431
|
+
/** 组头防孤行(默认 true:页尾放不下"组头+首行"时整体换页) */
|
|
432
|
+
keepWithNext?: boolean;
|
|
433
|
+
}
|
|
434
|
+
|
|
156
435
|
declare const machReportAsyncPlugin: {
|
|
157
436
|
install(app: App, options?: MachReportPluginOptions): void;
|
|
158
437
|
};
|
|
@@ -184,13 +463,17 @@ declare interface MachReportDefaults {
|
|
|
184
463
|
preview?: MachReportPreviewOptions;
|
|
185
464
|
/** Excel 出口配置,按字段继承;不配置使用导出器默认值。 */
|
|
186
465
|
xlsx?: XlsxRenderOptions;
|
|
466
|
+
/** 默认关闭;true 为本地草稿,对象可提供权限、校验和保存回调。 */
|
|
467
|
+
editable?: boolean | ReportEditingOptions;
|
|
468
|
+
/** 默认关闭;启用后提供导入按钮。ExcelJS 仅在导入时加载。 */
|
|
469
|
+
excelImport?: boolean | ExcelImportOptions;
|
|
187
470
|
}
|
|
188
471
|
|
|
189
472
|
/**
|
|
190
473
|
* 结构化错误(code 分类,宿主可按码决定 UX:重试 / 提示 / 降级)。
|
|
191
474
|
* error 事件契约保持 `(message: string)` 不变,新增第二参数 detail(可选)。
|
|
192
475
|
*/
|
|
193
|
-
declare type MachReportErrorCode = "param" | "fetch" | "validate" | "render" | "pdf" | "print" | "export" | "config";
|
|
476
|
+
declare type MachReportErrorCode = "param" | "fetch" | "validate" | "render" | "pdf" | "print" | "export" | "edit" | "import" | "config";
|
|
194
477
|
|
|
195
478
|
/** 日志通道(默认 console;可注入 noop 静默或上报 collector) */
|
|
196
479
|
declare type MachReportLogger = Pick<Console, "warn" | "info">;
|
|
@@ -242,6 +525,14 @@ declare interface MachReportMessages {
|
|
|
242
525
|
paramRequired: string;
|
|
243
526
|
/** 可选搜索进度文案,旧完整 messages 对象无需新增字段。 */
|
|
244
527
|
searching?: string;
|
|
528
|
+
importExcel?: string;
|
|
529
|
+
importing?: string;
|
|
530
|
+
editCell?: string;
|
|
531
|
+
editingHint?: string;
|
|
532
|
+
saving?: string;
|
|
533
|
+
editInvalidNumber?: string;
|
|
534
|
+
editInvalidBoolean?: string;
|
|
535
|
+
editConflict?: string;
|
|
245
536
|
}
|
|
246
537
|
|
|
247
538
|
declare interface MachReportPluginOptions {
|
|
@@ -319,6 +610,14 @@ export declare const MachReportPreview: {
|
|
|
319
610
|
type: BooleanConstructor;
|
|
320
611
|
default: undefined;
|
|
321
612
|
};
|
|
613
|
+
editable: {
|
|
614
|
+
type: PropType<boolean | ReportEditingOptions>;
|
|
615
|
+
default: undefined;
|
|
616
|
+
};
|
|
617
|
+
excelImport: {
|
|
618
|
+
type: PropType<boolean | ExcelImportOptions_2>;
|
|
619
|
+
default: undefined;
|
|
620
|
+
};
|
|
322
621
|
fetcher: {
|
|
323
622
|
type: PropType<PlanFetcher | null>;
|
|
324
623
|
default: null;
|
|
@@ -330,6 +629,8 @@ export declare const MachReportPreview: {
|
|
|
330
629
|
} | undefined) => any) | undefined;
|
|
331
630
|
onLoaded?: ((pageCount: number) => any) | undefined;
|
|
332
631
|
onWarning?: ((message: string) => any) | undefined;
|
|
632
|
+
"onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
|
|
633
|
+
"onTemplate-import"?: ((result: ExcelImportResult) => any) | undefined;
|
|
333
634
|
}>, {
|
|
334
635
|
reload: () => Promise<void>;
|
|
335
636
|
print: () => Promise<void>;
|
|
@@ -340,6 +641,9 @@ export declare const MachReportPreview: {
|
|
|
340
641
|
reload?: boolean;
|
|
341
642
|
}) => Promise<void>;
|
|
342
643
|
checkPdfFont: () => Promise<PdfFontCheckResult>;
|
|
644
|
+
importExcel: (input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions_2) => Promise<ExcelImportResult | null>;
|
|
645
|
+
getPlan: () => RenderPlan | null;
|
|
646
|
+
getChanges: () => ReportCellEdit_2[];
|
|
343
647
|
state: ComputedRef<MachReportState>;
|
|
344
648
|
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
345
649
|
error: (message: string, detail?: {
|
|
@@ -348,7 +652,10 @@ export declare const MachReportPreview: {
|
|
|
348
652
|
} | undefined) => any;
|
|
349
653
|
loaded: (pageCount: number) => any;
|
|
350
654
|
warning: (message: string) => any;
|
|
655
|
+
"cell-edit": (edit: ReportCellEdit_2) => any;
|
|
656
|
+
"template-import": (result: ExcelImportResult) => any;
|
|
351
657
|
}, PublicProps, {
|
|
658
|
+
editable: boolean | ReportEditingOptions;
|
|
352
659
|
height: string;
|
|
353
660
|
gapPx: number;
|
|
354
661
|
params: Record<string, string>;
|
|
@@ -359,11 +666,13 @@ export declare const MachReportPreview: {
|
|
|
359
666
|
showPdfWindow: boolean;
|
|
360
667
|
showParams: boolean;
|
|
361
668
|
messages: Partial<MachReportMessages>;
|
|
669
|
+
excelImport: boolean | ExcelImportOptions_2;
|
|
362
670
|
autoLoad: boolean;
|
|
363
671
|
preset: string;
|
|
364
672
|
paramDefs: ReportParamDef[] | undefined;
|
|
365
673
|
fetcher: PlanFetcher | null;
|
|
366
674
|
}, true, {}, {}, { [K in keyof GlobalComponents]: GlobalComponents[K] }, { [K in keyof GlobalDirectives]: GlobalDirectives[K] }, string, {
|
|
675
|
+
importInputRef: HTMLInputElement;
|
|
367
676
|
viewportRef: HTMLDivElement;
|
|
368
677
|
containerRef: HTMLDivElement;
|
|
369
678
|
thumbsRef: HTMLElement;
|
|
@@ -427,6 +736,14 @@ export declare const MachReportPreview: {
|
|
|
427
736
|
type: BooleanConstructor;
|
|
428
737
|
default: undefined;
|
|
429
738
|
};
|
|
739
|
+
editable: {
|
|
740
|
+
type: PropType<boolean | ReportEditingOptions>;
|
|
741
|
+
default: undefined;
|
|
742
|
+
};
|
|
743
|
+
excelImport: {
|
|
744
|
+
type: PropType<boolean | ExcelImportOptions_2>;
|
|
745
|
+
default: undefined;
|
|
746
|
+
};
|
|
430
747
|
fetcher: {
|
|
431
748
|
type: PropType<PlanFetcher | null>;
|
|
432
749
|
default: null;
|
|
@@ -438,6 +755,8 @@ export declare const MachReportPreview: {
|
|
|
438
755
|
} | undefined) => any) | undefined;
|
|
439
756
|
onLoaded?: ((pageCount: number) => any) | undefined;
|
|
440
757
|
onWarning?: ((message: string) => any) | undefined;
|
|
758
|
+
"onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
|
|
759
|
+
"onTemplate-import"?: ((result: ExcelImportResult) => any) | undefined;
|
|
441
760
|
}>, {
|
|
442
761
|
reload: () => Promise<void>;
|
|
443
762
|
print: () => Promise<void>;
|
|
@@ -448,8 +767,12 @@ export declare const MachReportPreview: {
|
|
|
448
767
|
reload?: boolean;
|
|
449
768
|
}) => Promise<void>;
|
|
450
769
|
checkPdfFont: () => Promise<PdfFontCheckResult>;
|
|
770
|
+
importExcel: (input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions_2) => Promise<ExcelImportResult | null>;
|
|
771
|
+
getPlan: () => RenderPlan | null;
|
|
772
|
+
getChanges: () => ReportCellEdit_2[];
|
|
451
773
|
state: ComputedRef<MachReportState>;
|
|
452
774
|
}, {}, {}, {}, {
|
|
775
|
+
editable: boolean | ReportEditingOptions;
|
|
453
776
|
height: string;
|
|
454
777
|
gapPx: number;
|
|
455
778
|
params: Record<string, string>;
|
|
@@ -460,6 +783,7 @@ export declare const MachReportPreview: {
|
|
|
460
783
|
showPdfWindow: boolean;
|
|
461
784
|
showParams: boolean;
|
|
462
785
|
messages: Partial<MachReportMessages>;
|
|
786
|
+
excelImport: boolean | ExcelImportOptions_2;
|
|
463
787
|
autoLoad: boolean;
|
|
464
788
|
preset: string;
|
|
465
789
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -521,6 +845,14 @@ showParams: {
|
|
|
521
845
|
type: BooleanConstructor;
|
|
522
846
|
default: undefined;
|
|
523
847
|
};
|
|
848
|
+
editable: {
|
|
849
|
+
type: PropType<boolean | ReportEditingOptions>;
|
|
850
|
+
default: undefined;
|
|
851
|
+
};
|
|
852
|
+
excelImport: {
|
|
853
|
+
type: PropType<boolean | ExcelImportOptions_2>;
|
|
854
|
+
default: undefined;
|
|
855
|
+
};
|
|
524
856
|
fetcher: {
|
|
525
857
|
type: PropType<PlanFetcher | null>;
|
|
526
858
|
default: null;
|
|
@@ -532,6 +864,8 @@ cause?: unknown;
|
|
|
532
864
|
} | undefined) => any) | undefined;
|
|
533
865
|
onLoaded?: ((pageCount: number) => any) | undefined;
|
|
534
866
|
onWarning?: ((message: string) => any) | undefined;
|
|
867
|
+
"onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
|
|
868
|
+
"onTemplate-import"?: ((result: ExcelImportResult) => any) | undefined;
|
|
535
869
|
}>, {
|
|
536
870
|
reload: () => Promise<void>;
|
|
537
871
|
print: () => Promise<void>;
|
|
@@ -542,6 +876,9 @@ setParams: (values: Record<string, string>, opts?: {
|
|
|
542
876
|
reload?: boolean;
|
|
543
877
|
}) => Promise<void>;
|
|
544
878
|
checkPdfFont: () => Promise<PdfFontCheckResult>;
|
|
879
|
+
importExcel: (input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions_2) => Promise<ExcelImportResult | null>;
|
|
880
|
+
getPlan: () => RenderPlan | null;
|
|
881
|
+
getChanges: () => ReportCellEdit_2[];
|
|
545
882
|
state: ComputedRef<MachReportState>;
|
|
546
883
|
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
547
884
|
error: (message: string, detail?: {
|
|
@@ -550,7 +887,10 @@ cause?: unknown;
|
|
|
550
887
|
} | undefined) => any;
|
|
551
888
|
loaded: (pageCount: number) => any;
|
|
552
889
|
warning: (message: string) => any;
|
|
890
|
+
"cell-edit": (edit: ReportCellEdit_2) => any;
|
|
891
|
+
"template-import": (result: ExcelImportResult) => any;
|
|
553
892
|
}, string, {
|
|
893
|
+
editable: boolean | ReportEditingOptions;
|
|
554
894
|
height: string;
|
|
555
895
|
gapPx: number;
|
|
556
896
|
params: Record<string, string>;
|
|
@@ -561,6 +901,7 @@ showPrint: boolean;
|
|
|
561
901
|
showPdfWindow: boolean;
|
|
562
902
|
showParams: boolean;
|
|
563
903
|
messages: Partial<MachReportMessages>;
|
|
904
|
+
excelImport: boolean | ExcelImportOptions_2;
|
|
564
905
|
autoLoad: boolean;
|
|
565
906
|
preset: string;
|
|
566
907
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -592,6 +933,10 @@ declare interface MachReportState {
|
|
|
592
933
|
readonly canPrint: boolean;
|
|
593
934
|
readonly error: Readonly<MachReportStateError> | null;
|
|
594
935
|
readonly pdfFont: Readonly<PdfFontCheckResult>;
|
|
936
|
+
readonly editing?: boolean;
|
|
937
|
+
readonly saving?: boolean;
|
|
938
|
+
readonly importing?: boolean;
|
|
939
|
+
readonly dirty?: boolean;
|
|
595
940
|
}
|
|
596
941
|
|
|
597
942
|
declare interface MachReportStateError {
|
|
@@ -659,6 +1004,48 @@ declare interface PlanComponent {
|
|
|
659
1004
|
fallbackText?: string;
|
|
660
1005
|
}
|
|
661
1006
|
|
|
1007
|
+
declare interface PlanComponent_2 {
|
|
1008
|
+
kind: ComponentKind_2;
|
|
1009
|
+
leftMm: number;
|
|
1010
|
+
topMm: number;
|
|
1011
|
+
widthMm: number;
|
|
1012
|
+
heightMm: number;
|
|
1013
|
+
nid?: string;
|
|
1014
|
+
rkey?: string;
|
|
1015
|
+
text?: string;
|
|
1016
|
+
rawText?: string;
|
|
1017
|
+
lines?: string[];
|
|
1018
|
+
richParagraphs?: RichParagraph_2[];
|
|
1019
|
+
imageData?: string;
|
|
1020
|
+
grid?: PlanGrid_2;
|
|
1021
|
+
table?: PlanTableFragment_2;
|
|
1022
|
+
style?: ComponentStyle_2;
|
|
1023
|
+
meta?: Record<string, unknown>;
|
|
1024
|
+
/** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
|
|
1025
|
+
fallbackText?: string;
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
declare interface PlanComponent_3 {
|
|
1029
|
+
kind: ComponentKind_3;
|
|
1030
|
+
leftMm: number;
|
|
1031
|
+
topMm: number;
|
|
1032
|
+
widthMm: number;
|
|
1033
|
+
heightMm: number;
|
|
1034
|
+
nid?: string;
|
|
1035
|
+
rkey?: string;
|
|
1036
|
+
text?: string;
|
|
1037
|
+
rawText?: string;
|
|
1038
|
+
lines?: string[];
|
|
1039
|
+
richParagraphs?: RichParagraph_3[];
|
|
1040
|
+
imageData?: string;
|
|
1041
|
+
grid?: PlanGrid_3;
|
|
1042
|
+
table?: PlanTableFragment_3;
|
|
1043
|
+
style?: ComponentStyle_3;
|
|
1044
|
+
meta?: Record<string, unknown>;
|
|
1045
|
+
/** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
|
|
1046
|
+
fallbackText?: string;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
662
1049
|
declare interface PlanFetcher {
|
|
663
1050
|
(input: ReportFetchInput): Promise<RenderPlan>;
|
|
664
1051
|
getParamDefs?: ReportFetcher["getParamDefs"];
|
|
@@ -674,6 +1061,26 @@ declare interface PlanGrid {
|
|
|
674
1061
|
paddingMm?: number;
|
|
675
1062
|
}
|
|
676
1063
|
|
|
1064
|
+
declare interface PlanGrid_2 {
|
|
1065
|
+
/** 行内允许 null 空位;渲染器按空单元格处理 */
|
|
1066
|
+
cells: (GridCell_2 | null)[][];
|
|
1067
|
+
colWidthsMm?: number[];
|
|
1068
|
+
rowHeightsMm?: number[];
|
|
1069
|
+
gapMm?: number;
|
|
1070
|
+
/** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
|
|
1071
|
+
paddingMm?: number;
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
declare interface PlanGrid_3 {
|
|
1075
|
+
/** 行内允许 null 空位;渲染器按空单元格处理 */
|
|
1076
|
+
cells: (GridCell_3 | null)[][];
|
|
1077
|
+
colWidthsMm?: number[];
|
|
1078
|
+
rowHeightsMm?: number[];
|
|
1079
|
+
gapMm?: number;
|
|
1080
|
+
/** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
|
|
1081
|
+
paddingMm?: number;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
677
1084
|
declare interface PlanPage {
|
|
678
1085
|
/** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
|
|
679
1086
|
layout?: "page" | "wide";
|
|
@@ -699,6 +1106,32 @@ declare interface PlanTableFragment {
|
|
|
699
1106
|
title?: string;
|
|
700
1107
|
}
|
|
701
1108
|
|
|
1109
|
+
/** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
|
|
1110
|
+
declare interface PlanTableFragment_2 {
|
|
1111
|
+
/** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
|
|
1112
|
+
id: string;
|
|
1113
|
+
/** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
|
|
1114
|
+
rowIndex: number;
|
|
1115
|
+
role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
|
|
1116
|
+
/** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
|
|
1117
|
+
columnKeys: string[];
|
|
1118
|
+
layout?: "page" | "wide";
|
|
1119
|
+
title?: string;
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
/** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
|
|
1123
|
+
declare interface PlanTableFragment_3 {
|
|
1124
|
+
/** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
|
|
1125
|
+
id: string;
|
|
1126
|
+
/** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
|
|
1127
|
+
rowIndex: number;
|
|
1128
|
+
role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
|
|
1129
|
+
/** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
|
|
1130
|
+
columnKeys: string[];
|
|
1131
|
+
layout?: "page" | "wide";
|
|
1132
|
+
title?: string;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
702
1135
|
/** 预取组件分片(路由 hover / 空闲时调用,正式渲染零等待) */
|
|
703
1136
|
export declare function preloadMachReport(): Promise<unknown>;
|
|
704
1137
|
|
|
@@ -707,6 +1140,75 @@ declare interface RenderPlan {
|
|
|
707
1140
|
pages: PlanPage[];
|
|
708
1141
|
}
|
|
709
1142
|
|
|
1143
|
+
/** 预览中的物理坐标;合并单元格使用左上角坐标。 */
|
|
1144
|
+
declare interface ReportCellAddress {
|
|
1145
|
+
pageIndex: number;
|
|
1146
|
+
componentIndex: number;
|
|
1147
|
+
rowIndex: number;
|
|
1148
|
+
columnIndex: number;
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
/** 预览中的物理坐标;合并单元格使用左上角坐标。 */
|
|
1152
|
+
declare interface ReportCellAddress_2 {
|
|
1153
|
+
pageIndex: number;
|
|
1154
|
+
componentIndex: number;
|
|
1155
|
+
rowIndex: number;
|
|
1156
|
+
columnIndex: number;
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
declare interface ReportCellContext {
|
|
1160
|
+
address: ReportCellAddress;
|
|
1161
|
+
cell: Readonly<GridCell_2>;
|
|
1162
|
+
component: Readonly<PlanComponent_2>;
|
|
1163
|
+
value: ReportCellValue;
|
|
1164
|
+
valueType: ReportCellValueType;
|
|
1165
|
+
table?: ReportCellTableIdentity;
|
|
1166
|
+
editable: boolean;
|
|
1167
|
+
readOnlyReason?: ReportCellReadOnlyReason;
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
declare interface ReportCellEdit {
|
|
1171
|
+
address: ReportCellAddress;
|
|
1172
|
+
table?: ReportCellTableIdentity;
|
|
1173
|
+
previousValue: ReportCellValue;
|
|
1174
|
+
previousText: string;
|
|
1175
|
+
value: ReportCellValue;
|
|
1176
|
+
text: string;
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
declare interface ReportCellEdit_2 {
|
|
1180
|
+
address: ReportCellAddress_2;
|
|
1181
|
+
table?: ReportCellTableIdentity_2;
|
|
1182
|
+
previousValue: ReportCellValue_2;
|
|
1183
|
+
previousText: string;
|
|
1184
|
+
value: ReportCellValue_2;
|
|
1185
|
+
text: string;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
declare type ReportCellReadOnlyReason = "cell" | "formula" | "complex" | "structure";
|
|
1189
|
+
|
|
1190
|
+
declare interface ReportCellTableIdentity {
|
|
1191
|
+
id: string;
|
|
1192
|
+
/** 逻辑表行索引;跨分页的同一行保持不变。 */
|
|
1193
|
+
rowIndex: number;
|
|
1194
|
+
role: PlanTableFragment_2["role"];
|
|
1195
|
+
columnKey?: string;
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
declare interface ReportCellTableIdentity_2 {
|
|
1199
|
+
id: string;
|
|
1200
|
+
/** 逻辑表行索引;跨分页的同一行保持不变。 */
|
|
1201
|
+
rowIndex: number;
|
|
1202
|
+
role: PlanTableFragment["role"];
|
|
1203
|
+
columnKey?: string;
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
declare type ReportCellValue = string | number | boolean | null;
|
|
1207
|
+
|
|
1208
|
+
declare type ReportCellValue_2 = string | number | boolean | null;
|
|
1209
|
+
|
|
1210
|
+
declare type ReportCellValueType = NonNullable<GridCell_2["valueType"]>;
|
|
1211
|
+
|
|
710
1212
|
declare interface ReportDefinition {
|
|
711
1213
|
/** 静态模板或宿主提供的异步模板加载器;动态模板默认每次重新读取,不缓存版本。 */
|
|
712
1214
|
template: ReportTemplate | ReportTemplateLoader;
|
|
@@ -718,6 +1220,20 @@ declare interface ReportDefinition {
|
|
|
718
1220
|
pagination?: PaginateOptions;
|
|
719
1221
|
}
|
|
720
1222
|
|
|
1223
|
+
/** Opt in with true for local drafts, or provide host validation and persistence. */
|
|
1224
|
+
declare interface ReportEditingOptions {
|
|
1225
|
+
canEdit?(context: ReportCellContext): boolean;
|
|
1226
|
+
/** Return an error message or throw to reject the edit. */
|
|
1227
|
+
validate?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | string | Promise<void | string>;
|
|
1228
|
+
/** Called before applying the change. A rejection leaves the current report untouched. */
|
|
1229
|
+
save?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | Promise<void>;
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
declare interface ReportEditOperation {
|
|
1233
|
+
/** Reload, another import or unmount aborts the operation. Save adapters should forward this signal. */
|
|
1234
|
+
signal: AbortSignal;
|
|
1235
|
+
}
|
|
1236
|
+
|
|
721
1237
|
/** 保持 Promise<RenderPlan> 契约;元数据为可选,旧业务 fetcher 无需改造。 */
|
|
722
1238
|
declare interface ReportFetcher {
|
|
723
1239
|
(input: ReportFetchInput): Promise<RenderPlan>;
|
|
@@ -753,6 +1269,23 @@ declare interface ReportParamDef {
|
|
|
753
1269
|
placeholder?: string;
|
|
754
1270
|
}
|
|
755
1271
|
|
|
1272
|
+
/** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
|
|
1273
|
+
declare interface ReportParamDef_2 {
|
|
1274
|
+
/** 参数名(传入 params,与数据集 SQL #{field} 绑定对应) */
|
|
1275
|
+
field: string;
|
|
1276
|
+
/** 显示名(缺省用 field) */
|
|
1277
|
+
label?: string;
|
|
1278
|
+
type?: "text" | "number" | "date" | "select";
|
|
1279
|
+
/** select 选项 */
|
|
1280
|
+
options?: Array<{
|
|
1281
|
+
label: string;
|
|
1282
|
+
value: string;
|
|
1283
|
+
}>;
|
|
1284
|
+
defaultValue?: string;
|
|
1285
|
+
required?: boolean;
|
|
1286
|
+
placeholder?: string;
|
|
1287
|
+
}
|
|
1288
|
+
|
|
756
1289
|
declare type ReportRegistry = Record<string, ReportDefinition>;
|
|
757
1290
|
|
|
758
1291
|
declare interface ReportTemplate {
|
|
@@ -762,6 +1295,13 @@ declare interface ReportTemplate {
|
|
|
762
1295
|
pages: TemplatePage[];
|
|
763
1296
|
}
|
|
764
1297
|
|
|
1298
|
+
declare interface ReportTemplate_2 {
|
|
1299
|
+
schemaVersion?: string;
|
|
1300
|
+
/** 参数定义(可选;宿主也可经 ReportPreview 的 paramDefs prop 提供,prop 优先) */
|
|
1301
|
+
params?: ReportParamDef_2[];
|
|
1302
|
+
pages: TemplatePage_2[];
|
|
1303
|
+
}
|
|
1304
|
+
|
|
765
1305
|
declare type ReportTemplateLoader = (context: ReportLoadContext) => ReportTemplate | Promise<ReportTemplate>;
|
|
766
1306
|
|
|
767
1307
|
declare interface RichParagraph {
|
|
@@ -773,6 +1313,24 @@ declare interface RichParagraph {
|
|
|
773
1313
|
indentMm?: number;
|
|
774
1314
|
}
|
|
775
1315
|
|
|
1316
|
+
declare interface RichParagraph_2 {
|
|
1317
|
+
segments: RichSegment_2[];
|
|
1318
|
+
align?: ComponentStyle_2["align"];
|
|
1319
|
+
lineHeight?: number;
|
|
1320
|
+
spaceBeforeMm?: number;
|
|
1321
|
+
spaceAfterMm?: number;
|
|
1322
|
+
indentMm?: number;
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
declare interface RichParagraph_3 {
|
|
1326
|
+
segments: RichSegment_3[];
|
|
1327
|
+
align?: ComponentStyle_3["align"];
|
|
1328
|
+
lineHeight?: number;
|
|
1329
|
+
spaceBeforeMm?: number;
|
|
1330
|
+
spaceAfterMm?: number;
|
|
1331
|
+
indentMm?: number;
|
|
1332
|
+
}
|
|
1333
|
+
|
|
776
1334
|
declare interface RichSegment {
|
|
777
1335
|
kind?: "text" | "field";
|
|
778
1336
|
text?: string;
|
|
@@ -780,6 +1338,20 @@ declare interface RichSegment {
|
|
|
780
1338
|
style?: ComponentStyle;
|
|
781
1339
|
}
|
|
782
1340
|
|
|
1341
|
+
declare interface RichSegment_2 {
|
|
1342
|
+
kind?: "text" | "field";
|
|
1343
|
+
text?: string;
|
|
1344
|
+
field?: string;
|
|
1345
|
+
style?: ComponentStyle_2;
|
|
1346
|
+
}
|
|
1347
|
+
|
|
1348
|
+
declare interface RichSegment_3 {
|
|
1349
|
+
kind?: "text" | "field";
|
|
1350
|
+
text?: string;
|
|
1351
|
+
field?: string;
|
|
1352
|
+
style?: ComponentStyle_3;
|
|
1353
|
+
}
|
|
1354
|
+
|
|
783
1355
|
/** 条件格式规则求值(声明式,见 ListColumn.rules) */
|
|
784
1356
|
declare interface StyleRule {
|
|
785
1357
|
when: {
|
|
@@ -791,8 +1363,21 @@ declare interface StyleRule {
|
|
|
791
1363
|
style: Record<string, unknown>;
|
|
792
1364
|
}
|
|
793
1365
|
|
|
1366
|
+
/** 条件格式规则求值(声明式,见 ListColumn.rules) */
|
|
1367
|
+
declare interface StyleRule_2 {
|
|
1368
|
+
when: {
|
|
1369
|
+
field: string;
|
|
1370
|
+
op: ">" | ">=" | "<" | "<=" | "==" | "!=";
|
|
1371
|
+
value: number | string;
|
|
1372
|
+
};
|
|
1373
|
+
/** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
|
|
1374
|
+
style: Record<string, unknown>;
|
|
1375
|
+
}
|
|
1376
|
+
|
|
794
1377
|
declare type TemplateComponent = PlanComponent | ListComponent;
|
|
795
1378
|
|
|
1379
|
+
declare type TemplateComponent_2 = PlanComponent_3 | ListComponent_2;
|
|
1380
|
+
|
|
796
1381
|
declare interface TemplatePage {
|
|
797
1382
|
widthMm: number;
|
|
798
1383
|
heightMm: number;
|
|
@@ -805,6 +1390,18 @@ declare interface TemplatePage {
|
|
|
805
1390
|
components: TemplateComponent[];
|
|
806
1391
|
}
|
|
807
1392
|
|
|
1393
|
+
declare interface TemplatePage_2 {
|
|
1394
|
+
widthMm: number;
|
|
1395
|
+
heightMm: number;
|
|
1396
|
+
/** 宽表保持全列自然宽度,页高只控制内部纵向分段。 */
|
|
1397
|
+
layout?: "page" | "wide";
|
|
1398
|
+
marginTopMm?: number;
|
|
1399
|
+
marginBottomMm?: number;
|
|
1400
|
+
marginLeftMm?: number;
|
|
1401
|
+
marginRightMm?: number;
|
|
1402
|
+
components: TemplateComponent_2[];
|
|
1403
|
+
}
|
|
1404
|
+
|
|
808
1405
|
/**
|
|
809
1406
|
* 文本测量与折行(分页/Canvas/PDF 共用的唯一折行真相源)。
|
|
810
1407
|
*
|