@agile-team/mach-report 0.9.1 → 0.10.0
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/dist/ReportPreview--ElcAKoi.cjs +6 -0
- package/dist/ReportPreview-C6b5TOzz.js +1068 -0
- package/dist/builder/template-builder.d.ts +16 -0
- package/dist/index.cjs +3 -3
- package/dist/index.js +50 -33
- package/dist/layout/paginate.d.ts +18 -0
- package/dist/{plugin-Bo8QqzCz.js → plugin-QjAiSBP6.js} +1 -1
- package/dist/{plugin-Dh1exwdD.cjs → plugin-gftml2ST.cjs} +1 -1
- package/dist/style.css +1 -1
- package/dist/vue/ReportParamPanel.d.ts +19 -0
- package/dist/vue/ReportPreview.d.ts +23 -0
- package/dist/vue/async.d.cts +30 -0
- package/dist/vue/async.d.ts +30 -0
- package/dist/vue/config.d.ts +9 -1
- package/dist/vue/index.d.cts +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/plugin.d.ts +30 -0
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +32 -31
- package/package.json +10 -1
- package/dist/ReportPreview-D-Us9mrX.cjs +0 -6
- package/dist/ReportPreview-VCx59rSt.js +0 -926
package/dist/vue/async.d.cts
CHANGED
|
@@ -63,6 +63,14 @@ export declare const MachReportPreview: {
|
|
|
63
63
|
type: BooleanConstructor;
|
|
64
64
|
default: boolean;
|
|
65
65
|
};
|
|
66
|
+
paramDefs: {
|
|
67
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
68
|
+
default: undefined;
|
|
69
|
+
};
|
|
70
|
+
showParams: {
|
|
71
|
+
type: BooleanConstructor;
|
|
72
|
+
default: undefined;
|
|
73
|
+
};
|
|
66
74
|
fetcher: {
|
|
67
75
|
type: import('vue').PropType<import('./adapters').PlanFetcher | null>;
|
|
68
76
|
default: null;
|
|
@@ -95,9 +103,11 @@ export declare const MachReportPreview: {
|
|
|
95
103
|
showExport: boolean;
|
|
96
104
|
showPrint: boolean;
|
|
97
105
|
showPdfWindow: boolean;
|
|
106
|
+
showParams: boolean;
|
|
98
107
|
messages: Partial<import('./config').MachReportMessages>;
|
|
99
108
|
autoLoad: boolean;
|
|
100
109
|
preset: string;
|
|
110
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
101
111
|
fetcher: import('./adapters').PlanFetcher | null;
|
|
102
112
|
}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
|
|
103
113
|
viewportRef: HTMLDivElement;
|
|
@@ -159,6 +169,14 @@ export declare const MachReportPreview: {
|
|
|
159
169
|
type: BooleanConstructor;
|
|
160
170
|
default: boolean;
|
|
161
171
|
};
|
|
172
|
+
paramDefs: {
|
|
173
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
174
|
+
default: undefined;
|
|
175
|
+
};
|
|
176
|
+
showParams: {
|
|
177
|
+
type: BooleanConstructor;
|
|
178
|
+
default: undefined;
|
|
179
|
+
};
|
|
162
180
|
fetcher: {
|
|
163
181
|
type: import('vue').PropType<import('./adapters').PlanFetcher | null>;
|
|
164
182
|
default: null;
|
|
@@ -185,9 +203,11 @@ export declare const MachReportPreview: {
|
|
|
185
203
|
showExport: boolean;
|
|
186
204
|
showPrint: boolean;
|
|
187
205
|
showPdfWindow: boolean;
|
|
206
|
+
showParams: boolean;
|
|
188
207
|
messages: Partial<import('./config').MachReportMessages>;
|
|
189
208
|
autoLoad: boolean;
|
|
190
209
|
preset: string;
|
|
210
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
191
211
|
fetcher: import('./adapters').PlanFetcher | null;
|
|
192
212
|
}>;
|
|
193
213
|
__isFragment?: never;
|
|
@@ -242,6 +262,14 @@ export declare const MachReportPreview: {
|
|
|
242
262
|
type: BooleanConstructor;
|
|
243
263
|
default: boolean;
|
|
244
264
|
};
|
|
265
|
+
paramDefs: {
|
|
266
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
267
|
+
default: undefined;
|
|
268
|
+
};
|
|
269
|
+
showParams: {
|
|
270
|
+
type: BooleanConstructor;
|
|
271
|
+
default: undefined;
|
|
272
|
+
};
|
|
245
273
|
fetcher: {
|
|
246
274
|
type: import('vue').PropType<import('./adapters').PlanFetcher | null>;
|
|
247
275
|
default: null;
|
|
@@ -274,9 +302,11 @@ export declare const MachReportPreview: {
|
|
|
274
302
|
showExport: boolean;
|
|
275
303
|
showPrint: boolean;
|
|
276
304
|
showPdfWindow: boolean;
|
|
305
|
+
showParams: boolean;
|
|
277
306
|
messages: Partial<import('./config').MachReportMessages>;
|
|
278
307
|
autoLoad: boolean;
|
|
279
308
|
preset: string;
|
|
309
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
280
310
|
fetcher: import('./adapters').PlanFetcher | null;
|
|
281
311
|
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
|
|
282
312
|
$slots: {
|
package/dist/vue/async.d.ts
CHANGED
|
@@ -63,6 +63,14 @@ export declare const MachReportPreview: {
|
|
|
63
63
|
type: BooleanConstructor;
|
|
64
64
|
default: boolean;
|
|
65
65
|
};
|
|
66
|
+
paramDefs: {
|
|
67
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
68
|
+
default: undefined;
|
|
69
|
+
};
|
|
70
|
+
showParams: {
|
|
71
|
+
type: BooleanConstructor;
|
|
72
|
+
default: undefined;
|
|
73
|
+
};
|
|
66
74
|
fetcher: {
|
|
67
75
|
type: import('vue').PropType<import('./adapters').PlanFetcher | null>;
|
|
68
76
|
default: null;
|
|
@@ -95,9 +103,11 @@ export declare const MachReportPreview: {
|
|
|
95
103
|
showExport: boolean;
|
|
96
104
|
showPrint: boolean;
|
|
97
105
|
showPdfWindow: boolean;
|
|
106
|
+
showParams: boolean;
|
|
98
107
|
messages: Partial<import('./config').MachReportMessages>;
|
|
99
108
|
autoLoad: boolean;
|
|
100
109
|
preset: string;
|
|
110
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
101
111
|
fetcher: import('./adapters').PlanFetcher | null;
|
|
102
112
|
}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
|
|
103
113
|
viewportRef: HTMLDivElement;
|
|
@@ -159,6 +169,14 @@ export declare const MachReportPreview: {
|
|
|
159
169
|
type: BooleanConstructor;
|
|
160
170
|
default: boolean;
|
|
161
171
|
};
|
|
172
|
+
paramDefs: {
|
|
173
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
174
|
+
default: undefined;
|
|
175
|
+
};
|
|
176
|
+
showParams: {
|
|
177
|
+
type: BooleanConstructor;
|
|
178
|
+
default: undefined;
|
|
179
|
+
};
|
|
162
180
|
fetcher: {
|
|
163
181
|
type: import('vue').PropType<import('./adapters').PlanFetcher | null>;
|
|
164
182
|
default: null;
|
|
@@ -185,9 +203,11 @@ export declare const MachReportPreview: {
|
|
|
185
203
|
showExport: boolean;
|
|
186
204
|
showPrint: boolean;
|
|
187
205
|
showPdfWindow: boolean;
|
|
206
|
+
showParams: boolean;
|
|
188
207
|
messages: Partial<import('./config').MachReportMessages>;
|
|
189
208
|
autoLoad: boolean;
|
|
190
209
|
preset: string;
|
|
210
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
191
211
|
fetcher: import('./adapters').PlanFetcher | null;
|
|
192
212
|
}>;
|
|
193
213
|
__isFragment?: never;
|
|
@@ -242,6 +262,14 @@ export declare const MachReportPreview: {
|
|
|
242
262
|
type: BooleanConstructor;
|
|
243
263
|
default: boolean;
|
|
244
264
|
};
|
|
265
|
+
paramDefs: {
|
|
266
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
267
|
+
default: undefined;
|
|
268
|
+
};
|
|
269
|
+
showParams: {
|
|
270
|
+
type: BooleanConstructor;
|
|
271
|
+
default: undefined;
|
|
272
|
+
};
|
|
245
273
|
fetcher: {
|
|
246
274
|
type: import('vue').PropType<import('./adapters').PlanFetcher | null>;
|
|
247
275
|
default: null;
|
|
@@ -274,9 +302,11 @@ export declare const MachReportPreview: {
|
|
|
274
302
|
showExport: boolean;
|
|
275
303
|
showPrint: boolean;
|
|
276
304
|
showPdfWindow: boolean;
|
|
305
|
+
showParams: boolean;
|
|
277
306
|
messages: Partial<import('./config').MachReportMessages>;
|
|
278
307
|
autoLoad: boolean;
|
|
279
308
|
preset: string;
|
|
309
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
280
310
|
fetcher: import('./adapters').PlanFetcher | null;
|
|
281
311
|
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
|
|
282
312
|
$slots: {
|
package/dist/vue/config.d.ts
CHANGED
|
@@ -31,6 +31,12 @@ export interface MachReportMessages {
|
|
|
31
31
|
nextMatch: string;
|
|
32
32
|
/** 缩略图侧栏开关 */
|
|
33
33
|
thumbnails: string;
|
|
34
|
+
/** 参数面板 */
|
|
35
|
+
paramsTitle: string;
|
|
36
|
+
query: string;
|
|
37
|
+
reset: string;
|
|
38
|
+
/** 必填缺失提示({label} 占位) */
|
|
39
|
+
paramRequired: string;
|
|
34
40
|
}
|
|
35
41
|
export declare const DEFAULT_MESSAGES: MachReportMessages;
|
|
36
42
|
/** 主题变量(组件外壳注入的 --mrp-* CSS 自定义属性) */
|
|
@@ -54,6 +60,8 @@ export interface MachReportDefaults {
|
|
|
54
60
|
showExport?: boolean;
|
|
55
61
|
showPrint?: boolean;
|
|
56
62
|
showPdfWindow?: boolean;
|
|
63
|
+
/** 参数面板显隐(有参数定义且未显式关闭时显示;缺省 true) */
|
|
64
|
+
showParams?: boolean;
|
|
57
65
|
/** 页间距 px */
|
|
58
66
|
gapPx?: number;
|
|
59
67
|
/** PDF 导出中文字体 URL */
|
|
@@ -74,7 +82,7 @@ export interface MachReportConfig {
|
|
|
74
82
|
export declare function defineMachReportConfig(config: MachReportConfig): MachReportConfig;
|
|
75
83
|
/** 类型化 preset 声明 */
|
|
76
84
|
export declare function defineMachReportPreset(preset: MachReportPreset): MachReportPreset;
|
|
77
|
-
export type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "gapPx">> & {
|
|
85
|
+
export type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showParams" | "gapPx">> & {
|
|
78
86
|
pdfFontUrl: string;
|
|
79
87
|
theme: MachReportTheme;
|
|
80
88
|
messages: MachReportMessages;
|
package/dist/vue/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as ReportPreview } from './ReportPreview';
|
|
2
2
|
export { default as ReportToolbar } from './ReportToolbar';
|
|
3
|
+
export { default as ReportParamPanel } from './ReportParamPanel';
|
|
3
4
|
export * from './adapters';
|
|
4
5
|
export * from './local-adapter';
|
|
5
6
|
export * from './injection-keys';
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as ReportPreview } from './ReportPreview';
|
|
2
2
|
export { default as ReportToolbar } from './ReportToolbar';
|
|
3
|
+
export { default as ReportParamPanel } from './ReportParamPanel';
|
|
3
4
|
export * from './adapters';
|
|
4
5
|
export * from './local-adapter';
|
|
5
6
|
export * from './injection-keys';
|
package/dist/vue/plugin.d.ts
CHANGED
|
@@ -56,6 +56,14 @@ export declare const MachReportPreview: {
|
|
|
56
56
|
type: BooleanConstructor;
|
|
57
57
|
default: boolean;
|
|
58
58
|
};
|
|
59
|
+
paramDefs: {
|
|
60
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
61
|
+
default: undefined;
|
|
62
|
+
};
|
|
63
|
+
showParams: {
|
|
64
|
+
type: BooleanConstructor;
|
|
65
|
+
default: undefined;
|
|
66
|
+
};
|
|
59
67
|
fetcher: {
|
|
60
68
|
type: import('vue').PropType<PlanFetcher | null>;
|
|
61
69
|
default: null;
|
|
@@ -88,9 +96,11 @@ export declare const MachReportPreview: {
|
|
|
88
96
|
showExport: boolean;
|
|
89
97
|
showPrint: boolean;
|
|
90
98
|
showPdfWindow: boolean;
|
|
99
|
+
showParams: boolean;
|
|
91
100
|
messages: Partial<import('./config').MachReportMessages>;
|
|
92
101
|
autoLoad: boolean;
|
|
93
102
|
preset: string;
|
|
103
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
94
104
|
fetcher: PlanFetcher | null;
|
|
95
105
|
}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
|
|
96
106
|
viewportRef: HTMLDivElement;
|
|
@@ -152,6 +162,14 @@ export declare const MachReportPreview: {
|
|
|
152
162
|
type: BooleanConstructor;
|
|
153
163
|
default: boolean;
|
|
154
164
|
};
|
|
165
|
+
paramDefs: {
|
|
166
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
167
|
+
default: undefined;
|
|
168
|
+
};
|
|
169
|
+
showParams: {
|
|
170
|
+
type: BooleanConstructor;
|
|
171
|
+
default: undefined;
|
|
172
|
+
};
|
|
155
173
|
fetcher: {
|
|
156
174
|
type: import('vue').PropType<PlanFetcher | null>;
|
|
157
175
|
default: null;
|
|
@@ -178,9 +196,11 @@ export declare const MachReportPreview: {
|
|
|
178
196
|
showExport: boolean;
|
|
179
197
|
showPrint: boolean;
|
|
180
198
|
showPdfWindow: boolean;
|
|
199
|
+
showParams: boolean;
|
|
181
200
|
messages: Partial<import('./config').MachReportMessages>;
|
|
182
201
|
autoLoad: boolean;
|
|
183
202
|
preset: string;
|
|
203
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
184
204
|
fetcher: PlanFetcher | null;
|
|
185
205
|
}>;
|
|
186
206
|
__isFragment?: never;
|
|
@@ -235,6 +255,14 @@ export declare const MachReportPreview: {
|
|
|
235
255
|
type: BooleanConstructor;
|
|
236
256
|
default: boolean;
|
|
237
257
|
};
|
|
258
|
+
paramDefs: {
|
|
259
|
+
type: import('vue').PropType<import('..').ReportParamDef[] | undefined>;
|
|
260
|
+
default: undefined;
|
|
261
|
+
};
|
|
262
|
+
showParams: {
|
|
263
|
+
type: BooleanConstructor;
|
|
264
|
+
default: undefined;
|
|
265
|
+
};
|
|
238
266
|
fetcher: {
|
|
239
267
|
type: import('vue').PropType<PlanFetcher | null>;
|
|
240
268
|
default: null;
|
|
@@ -267,9 +295,11 @@ export declare const MachReportPreview: {
|
|
|
267
295
|
showExport: boolean;
|
|
268
296
|
showPrint: boolean;
|
|
269
297
|
showPdfWindow: boolean;
|
|
298
|
+
showParams: boolean;
|
|
270
299
|
messages: Partial<import('./config').MachReportMessages>;
|
|
271
300
|
autoLoad: boolean;
|
|
272
301
|
preset: string;
|
|
302
|
+
paramDefs: import('..').ReportParamDef[] | undefined;
|
|
273
303
|
fetcher: PlanFetcher | null;
|
|
274
304
|
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
|
|
275
305
|
$slots: {
|
package/dist/vue-async.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),i=require("./plugin-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),i=require("./plugin-gftml2ST.cjs"),r=n.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportPreview--ElcAKoi.cjs")).then(e=>e.ReportPreview$1));function c(){return Promise.resolve().then(()=>require("./ReportPreview--ElcAKoi.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){i.machReportPlugin.install(e,o),e.component("MachReportPreview",r)}};exports.MachReportPreview=r;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=c;
|
package/dist/vue-async.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineAsyncComponent as e } from "vue";
|
|
2
|
-
import { m as n } from "./plugin-
|
|
3
|
-
const r = e(() => import("./ReportPreview-
|
|
2
|
+
import { m as n } from "./plugin-QjAiSBP6.js";
|
|
3
|
+
const r = e(() => import("./ReportPreview-C6b5TOzz.js").then((t) => t.l));
|
|
4
4
|
function m() {
|
|
5
|
-
return import("./ReportPreview-
|
|
5
|
+
return import("./ReportPreview-C6b5TOzz.js").then((t) => t.l);
|
|
6
6
|
}
|
|
7
7
|
const p = {
|
|
8
8
|
install(t, o = {}) {
|
package/dist/vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ReportPreview
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ReportPreview--ElcAKoi.cjs"),r=require("./plugin-gftml2ST.cjs"),c=require("@agile-team/mach-report"),s=require("vue");function P(R){return async({tempIds:t})=>{if(t.length===0)throw new r.PlanLoadError("缺少报表模板 ID");const a=[];for(const n of t){const o=R[n];if(!o)throw new r.PlanLoadError(`本地模板 ${n} 不存在`);const{plan:E,warnings:i}=c.paginateTemplate(o.template,o.datasets??{});i.length>0&&console.warn("[mach-report] 分页告警:",i),a.push(...E.pages)}return{schemaVersion:"mach-local",pages:a}}}function p(){return s.inject(r.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.ReportParamPanel=e.ReportParamPanel;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.printPlans=e.printPlans;exports.provideMachReportConfig=e.provideMachReportConfig;exports.resolveConfig=e.resolveConfig;exports.themeToCssVars=e.themeToCssVars;exports.toErrorDetail=e.toErrorDetail;exports.useMachReportConfig=e.useMachReportConfig;exports.usePageWindow=e.usePageWindow;exports.usePrintExport=e.usePrintExport;exports.useZoom=e.useZoom;exports.MACH_REPORT_CONFIG_KEY=r.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=r.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=r.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=r.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=r.MachReportPreview;exports.PlanLoadError=r.PlanLoadError;exports.createDefaultPdfExporter=r.createDefaultPdfExporter;exports.createFetchRequest=r.createFetchRequest;exports.createJh4jGridPlanFetcher=r.createJh4jGridPlanFetcher;exports.joinTempIds=r.joinTempIds;exports.machReportPlugin=r.machReportPlugin;exports.normalizeTempIds=r.normalizeTempIds;exports.createLocalFetcher=P;exports.useReportPreview=p;
|
package/dist/vue.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { D as T, a as _, M as g, R as M, b as d,
|
|
2
|
-
import { P as t, M as c } from "./plugin-
|
|
3
|
-
import { a as
|
|
1
|
+
import { D as T, a as _, M as g, R as M, b as d, c as C, S as w, d as O, e as D, f as F, p as L, g as A, r as H, t as j, h as v, u as x, i as G, j as S, k as b } from "./ReportPreview-C6b5TOzz.js";
|
|
2
|
+
import { P as t, M as c } from "./plugin-QjAiSBP6.js";
|
|
3
|
+
import { a as K, b as Y, c as N, d as y, e as U, f as V, g as k, j as q, m as z, n as J } from "./plugin-QjAiSBP6.js";
|
|
4
4
|
import { paginateTemplate as p } from "@agile-team/mach-report";
|
|
5
|
-
import { inject as
|
|
6
|
-
function
|
|
5
|
+
import { inject as R } from "vue";
|
|
6
|
+
function P(n) {
|
|
7
7
|
return async ({ tempIds: a }) => {
|
|
8
8
|
if (a.length === 0) throw new t("缺少报表模板 ID");
|
|
9
9
|
const r = [];
|
|
@@ -16,40 +16,41 @@ function h(n) {
|
|
|
16
16
|
return { schemaVersion: "mach-local", pages: r };
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
19
|
+
function h() {
|
|
20
|
+
return R(c, null);
|
|
21
21
|
}
|
|
22
22
|
export {
|
|
23
23
|
T as DEFAULT_MESSAGES,
|
|
24
24
|
_ as DEFAULT_THEME,
|
|
25
|
-
|
|
25
|
+
K as MACH_REPORT_CONFIG_KEY,
|
|
26
26
|
c as MACH_REPORT_CONTROLLER_KEY,
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
Y as MACH_REPORT_FETCHER_KEY,
|
|
28
|
+
N as MACH_REPORT_PDF_EXPORTER_KEY,
|
|
29
29
|
g as MachReportError,
|
|
30
|
-
|
|
30
|
+
y as MachReportPreview,
|
|
31
31
|
t as PlanLoadError,
|
|
32
|
-
M as
|
|
33
|
-
d as
|
|
34
|
-
C as
|
|
35
|
-
w as
|
|
36
|
-
|
|
37
|
-
U as
|
|
38
|
-
V as
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
D as
|
|
32
|
+
M as ReportParamPanel,
|
|
33
|
+
d as ReportPreview,
|
|
34
|
+
C as ReportToolbar,
|
|
35
|
+
w as SILENT_LOGGER,
|
|
36
|
+
O as buildPrintDocument,
|
|
37
|
+
U as createDefaultPdfExporter,
|
|
38
|
+
V as createFetchRequest,
|
|
39
|
+
k as createJh4jGridPlanFetcher,
|
|
40
|
+
P as createLocalFetcher,
|
|
41
|
+
D as defineMachReportConfig,
|
|
42
|
+
F as defineMachReportPreset,
|
|
42
43
|
q as joinTempIds,
|
|
43
44
|
z as machReportPlugin,
|
|
44
45
|
J as normalizeTempIds,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
L as printPlans,
|
|
47
|
+
A as provideMachReportConfig,
|
|
48
|
+
H as resolveConfig,
|
|
49
|
+
j as themeToCssVars,
|
|
50
|
+
v as toErrorDetail,
|
|
51
|
+
x as useMachReportConfig,
|
|
52
|
+
G as usePageWindow,
|
|
53
|
+
S as usePrintExport,
|
|
54
|
+
h as useReportPreview,
|
|
55
|
+
b as useZoom
|
|
55
56
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agile-team/mach-report",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "MachReport 报表引擎单包:RenderPlan 模型 + 分页 + DOM/Canvas/PDF 渲染 + 动态 SQL + 管理端 API + Vue 3 契约组件(零运行时依赖;./vue 为框架子路径,vue 为可选 peer)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -114,6 +114,15 @@
|
|
|
114
114
|
},
|
|
115
115
|
"license": "SEE LICENSE IN LICENSE",
|
|
116
116
|
"author": "ChenyCHENYU (Agile Team)",
|
|
117
|
+
"repository": {
|
|
118
|
+
"type": "git",
|
|
119
|
+
"url": "git+https://github.com/ChenyCHENYU/MachReport.git",
|
|
120
|
+
"directory": "packages/mach-report"
|
|
121
|
+
},
|
|
122
|
+
"homepage": "https://github.com/ChenyCHENYU/MachReport#readme",
|
|
123
|
+
"bugs": {
|
|
124
|
+
"url": "https://github.com/ChenyCHENYU/MachReport/issues"
|
|
125
|
+
},
|
|
117
126
|
"scripts": {
|
|
118
127
|
"build": "vite build && node scripts/copy-dcts.mjs",
|
|
119
128
|
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\""
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),U=require("@agile-team/mach-report"),T=require("./plugin-Dh1exwdD.cjs");function pe(t,r,l={}){const n=l.pxPerMm??3.7795275590551185,a=l.gapPx??18,o=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map(c=>c.pageHeightMm*n)),m=e.computed(()=>{const c=t.value?.pages??[];let p=0,f=0;for(const b of c)p+=b.pageHeightMm*n+a,f=Math.max(f,b.pageWidthMm*n);return{w:f,h:p}}),h=e.computed(()=>U.computePageWindow({pageHeightsPx:i.value,viewportHeightPx:s.value/r.value,scrollTopPx:o.value/r.value,overscan:1,gapPx:a})),g=e.computed(()=>{const c=t.value;if(!c)return[];const{start:p,end:f}=h.value;return f<p?[]:c.pages.slice(p,f+1).map((b,E)=>({page:b,index:p+E}))});function u(c,p){let f=0;return b=>{f||(f=requestAnimationFrame(()=>{if(f=0,o.value=b.scrollTop,s.value=b.clientHeight||800,p.value<=0)return;const E=b.querySelectorAll(".mrp-page-holder");if(!E.length)return;const B=b.getBoundingClientRect().top+56;let $=1;E.forEach(w=>{w.getBoundingClientRect().top<=B&&($=Number(w.dataset.page??1))}),c.value=Math.max(1,Math.min(p.value,$))}))}}return{contentSize:m,windowRange:h,visiblePages:g,makeScrollHandler:u,refreshViewport(c){c&&(s.value=c.clientHeight||800)}}}function fe(t){const r=e.ref(1),l=e.ref("fit");function n(){requestAnimationFrame(()=>{const o=t();!o||!o.viewport||(r.value=Math.min(1,Math.max(.3,(o.viewport.clientWidth-48)/Math.max(1,o.pageWidthPx))))})}function a(o){o==="fit"?(l.value="fit",n()):(l.value="raw",r.value=o/100)}return{zoom:r,zoomMode:l,applyFitZoom:n,setZoom:a}}const X=8;function Q(){return new Promise(t=>setTimeout(t,0))}function Z(t){return`p${Math.round(t.pageWidthMm)}x${Math.round(t.pageHeightMm)}`}function j(t){const r=new Map;t.pages.forEach(s=>{r.has(Z(s))||r.set(Z(s),s)});const a=`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
|
|
2
|
-
.mr-page tr{break-inside:avoid;page-break-inside:avoid;}
|
|
3
|
-
.mr-comp{break-inside:avoid;page-break-inside:avoid;}
|
|
4
|
-
${[...r.values()].map(s=>`@page ${Z(s)}{size:${Math.round(s.pageWidthMm)}mm ${Math.round(s.pageHeightMm)}mm;margin:0;}`).join(`
|
|
5
|
-
`)}
|
|
6
|
-
body{margin:0;background:#fff;}`}</style></head><body>`,o=t.pages.map(s=>{const i=U.renderPage(s,96,{},document);return i.style.page=Z(s),i.outerHTML});return{head:a,pageChunks:o}}async function Ve(t,r={}){const l={pages:t.flatMap(i=>i.pages)};if(l.pages.length===0)return;const{head:n,pageChunks:a}=j(l),o=document.createElement("iframe");o.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(o);let s=!1;try{const i=o.contentDocument;i.open(),i.write(n);for(let m=0;m<a.length;m++)i.write(a[m]),m%X===X-1&&(r.onProgress?.(m+1,a.length),await Q());i.write("</body></html>"),i.close(),await Q(),r.onProgress?.(a.length,a.length),s=!0,o.contentWindow?.focus(),o.contentWindow?.print()}catch(i){r.onError?.(i instanceof Error?`批量打印失败: ${i.message}`:"批量打印失败")}finally{s?setTimeout(()=>o.remove(),6e4):o.remove()}}function ge(t,r){let l=null,n=!1,a=null;function o(){l?.remove(),l=null}function s(u,c){const p=URL.createObjectURL(u),f=document.createElement("a");f.href=p,f.download=c,f.click(),setTimeout(()=>URL.revokeObjectURL(p),1e4)}async function i(){if(n)return;const u=t.value;if(!u||u.pages.length===0)return;n=!0,o();const{head:c,pageChunks:p}=j(u);l=document.createElement("iframe"),l.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(l);const f=l;try{const b=f.contentDocument;b.open(),b.write(c);for(let E=0;E<p.length;E++)if(b.write(p[E]),E%X===X-1&&await Q(),f!==l)return;b.write("</body></html>"),b.close(),await Q(),f.contentWindow?.focus(),f.contentWindow?.print()}catch{r.onError("调用打印失败,请改用导出 PDF")}finally{n=!1}}async function m(){if(a)return a;const u=t.value;if(!(!u||u.pages.length===0))return a=(async()=>{try{const c=await r.getPdfExporter()(u);s(new Blob([c],{type:"application/pdf"}),"mach-report.pdf")}catch(c){r.onError(c instanceof Error?`PDF 导出失败: ${c.message}`:"PDF 导出失败")}finally{a=null}})(),a}function h(u){const c=t.value;if(!c||c.pages.length===0)return;if(u==="pdf"){m();return}const{head:p,pageChunks:f}=j(c),b=`${p}${f.join("")}</body></html>`;s(new Blob([b],{type:"text/html;charset=utf-8"}),`mach-report.${u==="html"?"html":u}`)}function g(){const u=t.value;if(!u||u.pages.length===0)return;const{head:c,pageChunks:p}=j(u),f=`${c}${p.join("")}</body></html>`,b=new Blob([f],{type:"text/html;charset=utf-8"}),E=URL.createObjectURL(b),B=window.open(E,"_blank");if(!B){r.onError("浏览器拦截了弹窗,请允许弹窗后重试"),URL.revokeObjectURL(E);return}setTimeout(()=>B.print(),400),setTimeout(()=>URL.revokeObjectURL(E),1e4)}return{print:i,exportAs:h,openPdfWindow:g,releasePrintFrame:o}}const he="mrp-hit";function Le(t){t.querySelectorAll(`mark.${he}`).forEach(l=>{const n=l.parentNode;if(n){for(;l.firstChild;)n.insertBefore(l.firstChild,l);l.remove(),n.normalize()}})}function Oe(t,r){const l=r.trim();if(!l)return 0;const n=l.toLowerCase(),a=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const m=i.parentElement;return!m||m.closest("mark")||/^(SCRIPT|STYLE)$/.test(m.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(n)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),o=[];for(let i=a.nextNode();i;i=a.nextNode())o.push(i);let s=0;for(const i of o){const m=i.nodeValue??"",h=m.toLowerCase(),g=i.parentElement;if(!g)continue;const u=document.createDocumentFragment();let c=0,p=h.indexOf(n);for(;p>=0;){p>c&&u.appendChild(document.createTextNode(m.slice(c,p)));const f=document.createElement("mark");f.className=he,f.textContent=m.slice(p,p+l.length),u.appendChild(f),s++,c=p+l.length,p=h.indexOf(n,c)}c<m.length&&u.appendChild(document.createTextNode(m.slice(c))),g.replaceChild(u,i)}return s}function de(t,r){let l=0,n=t.toLowerCase().indexOf(r);for(;n>=0;)l++,n=t.toLowerCase().indexOf(r,n+r.length);return l}function He(t){const{plan:r,gotoPage:l,highlight:n,clearHighlights:a}=t,o=t.debounceMs??200,s=e.ref(!1),i=e.ref(""),m=e.ref(""),h=e.ref(0);let g=null;const u=e.computed(()=>{const w=i.value.trim().toLowerCase(),x=r.value;if(!w||!x)return[];const R=[];return x.pages.forEach((F,K)=>{for(const N of F.components)if(N.grid){for(const D of N.grid.cells??[])for(const O of D??[])if(typeof O?.text=="string")for(let G=0;G<de(O.text,w);G++)R.push(K)}else if(N.kind==="text"&&typeof N.text=="string")for(let D=0;D<de(N.text,w);D++)R.push(K)}),R}),c=e.computed(()=>u.value.length);function p(w){if(m.value=w,g&&clearTimeout(g),w.trim()===""){g=null,i.value="",h.value=0;return}g=setTimeout(()=>{g=null,i.value=m.value,h.value=0;const x=u.value[0];x!=null&&l(x+1)},o)}function f(w){const x=u.value.length;x!==0&&(h.value=(h.value+w+x)%x,l(u.value[h.value]+1))}function b(){s.value=!s.value}function E(w){const x=i.value.trim();x&&n(w,x)}function B(w){a(w)}function $(){m.value="",i.value="",h.value=0,g&&clearTimeout(g),g=null}return{visible:s,query:i,matchIndex:h,matchCount:c,toggle:b,onInput:p,onNav:f,apply:E,clear:B,reset:$}}function We(t,r){const l=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),n=e.computed(()=>!l.value||!r.plan.value?0:Math.round(JSON.stringify(r.plan.value).length/1024)),a=e.computed(()=>!l.value||!r.plan.value?null:{pages:r.pageCount.value,window:`${r.windowRange.value.start}-${r.windowRange.value.end}`,zoom:`${Math.round(r.zoom.value*100)}%`,loadMs:`${r.loadMs.value}ms`,planKB:n.value});return{enabled:l,debugStats:a}}function Ae(t,r){const{thumbsRoot:l,visible:n,renderThumbCanvas:a}=r;let o=null;function s(h,g){if(!t.value||h.childElementCount>0)return;const u=a(g);u&&(u.style.width="100%",u.style.height="100%",u.style.display="block",h.appendChild(u))}return{schedule:()=>{!n.value||!t.value||!l.value||typeof IntersectionObserver>"u"||(o?.disconnect(),o=new IntersectionObserver(h=>{for(const g of h){if(!g.isIntersecting)continue;const u=g.target;s(u,Number(u.dataset.thumb??1)-1),o?.unobserve(u)}},{root:l.value,rootMargin:"200px"}),l.value.querySelectorAll("[data-thumb]").forEach(h=>{o.observe(h)}))},destroy:()=>{o?.disconnect(),o=null}}}function Ue(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(r){t.value=r?Math.round(performance.now()-r):0}}}const je={class:"mrp-toolbar"},qe={class:"mrp-title"},Ke=["disabled"],Ge={class:"mrp-pageinfo"},Ye=["disabled"],Ze={key:1,class:"mrp-search"},Je=["placeholder","value"],Xe={key:0,class:"mrp-search-count"},Qe=["disabled"],_e=["disabled"],et=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle"],setup(t){const r=t,l=e.ref(null);e.watch(()=>r.search.visible,a=>{a&&e.nextTick(()=>l.value?.focus())});function n(a,o,s){return a.replace("{cur}",String(o)).replace("{total}",String(s))}return(a,o)=>(e.openBlock(),e.createElementBlock("div",je,[e.createElementVNode("span",qe,e.toDisplayString(t.messages.title),1),t.pageCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage<=1,onClick:o[0]||(o[0]=s=>a.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,Ke),e.createElementVNode("span",Ge,e.toDisplayString(n(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:o[1]||(o[1]=s=>a.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,Ye)],64)):e.createCommentVNode("",!0),o[14]||(o[14]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.search.visible?(e.openBlock(),e.createElementBlock("div",Ze,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:l,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:o[2]||(o[2]=s=>a.$emit("search-input",s.target.value))},null,40,Je),t.search.query?(e.openBlock(),e.createElementBlock("span",Xe,e.toDisplayString(n(t.messages.matchInfo,t.search.matchIndex+1,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[3]||(o[3]=s=>a.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,Qe),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[4]||(o[4]=s=>a.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,_e)])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F",onClick:o[5]||(o[5]=s=>a.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:o[6]||(o[6]=s=>a.$emit("thumbs-toggle"))}," ▦ "+e.toDisplayString(t.messages.thumbnails),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),type:"button",onClick:o[7]||(o[7]=s=>a.$emit("zoom","fit"))},e.toDisplayString(t.messages.fitWidth),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===100}]),type:"button",onClick:o[8]||(o[8]=s=>a.$emit("zoom",100))}," 100% ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===150}]),type:"button",onClick:o[9]||(o[9]=s=>a.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",onClick:o[10]||(o[10]=s=>a.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),1)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",onClick:o[11]||(o[11]=s=>a.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),1)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:4,class:"mrp-nav",type:"button",onClick:o[12]||(o[12]=s=>a.$emit("print"))},e.toDisplayString(t.messages.print),1)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:5,class:"mrp-nav",type:"button",onClick:o[13]||(o[13]=s=>a.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),1)):e.createCommentVNode("",!0)]))}}),ve=(t,r)=>{const l=t.__vccOpts||t;for(const[n,a]of r)l[n]=a;return l},be=ve(et,[["__scopeId","data-v-f50c26e8"]]),we={title:"报表预览",prevPage:"‹ 上一页",nextPage:"下一页 ›",pageInfo:"{cur} / {total}",fitWidth:"适宽",exportHtml:"导出 HTML",exportPdf:"导出 PDF",print:"打印",pdfWindow:"PDF 窗口",loading:"报表渲染中…",empty:"暂无预览数据",errorPrefix:"",retry:"重试",searchPlaceholder:"搜索报表内容",matchInfo:"{cur}/{total}",prevMatch:"‹",nextMatch:"›",thumbnails:"缩略图"},ye={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function tt(t){return t}function ot(t){return t}const L={showExport:!0,showPrint:!0,showPdfWindow:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},nt={warn:()=>{},info:()=>{}};function Ee(t,r){const l=r?t?.presets?.[r]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,n={...t?.defaults,...l};return{showExport:n.showExport??L.showExport,showPrint:n.showPrint??L.showPrint,showPdfWindow:n.showPdfWindow??L.showPdfWindow,gapPx:n.gapPx??L.gapPx,pdfFontUrl:n.pdfFontUrl??L.pdfFontUrl,theme:{...ye,...n.theme},messages:{...we,...n.messages},logger:n.logger??L.logger}}function Pe(t){const r={};return t.shellBg!=null&&(r["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(r["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(r["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(r["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(r["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(r["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(r["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(r["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(r["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(r["--mrp-btn-active-bg"]=t.btnActiveBg),r}function rt(t){const r=e.inject(T.MACH_REPORT_CONFIG_KEY,null),l=e.computed(()=>{const n=r?.value??null,a="defaults"in t&&"presets"in t?t:{defaults:t,presets:{}};return n?{defaults:{...n.defaults,...a.defaults},presets:{...n.presets,...a.presets},defaultPreset:a.defaultPreset??n.defaultPreset}:a});e.provide(T.MACH_REPORT_CONFIG_KEY,l)}function ke(){return e.inject(T.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}class q extends Error{constructor(r,l,n){super(l),this.name="MachReportError",this.code=r,this.cause=n}}function Ce(t){return t instanceof q?{code:t.code,cause:t.cause}:{code:"render",cause:t}}const at={class:"mrp-main"},lt={key:0,class:"mrp-state"},st={key:1,class:"mrp-state mrp-error"},it={key:2,class:"mrp-state"},ut=["data-page"],ct=["onClick"],dt=["data-thumb"],mt={class:"mrp-thumb-no"},pt={class:"mrp-overlay"},ft={key:0,class:"mrp-debug","aria-hidden":"true"},J=96/25.4,me="mach-report:ui",gt=e.defineComponent({__name:"ReportPreview",props:{tempId:{type:[String,Array],default:null},furnitureTempId:{type:String,default:""},params:{type:Object,default:()=>({})},height:{type:String,default:"100vh"},autoLoad:{type:Boolean,default:!0},showExport:{type:Boolean,default:void 0},showPrint:{type:Boolean,default:void 0},showPdfWindow:{type:Boolean,default:void 0},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},fetcher:{type:Function,default:null}},emits:["loaded","error"],setup(t,{expose:r,emit:l}){e.useCssVars(d=>({v3c509574:f.value+"px"}));const n=t,a=l,o=e.shallowRef(null),s=e.ref(!1),i=e.ref(""),m=e.ref(1),h=e.ref(null),g=e.ref(null),u=e.ref(null),c=e.ref(!1),p=Ue(),f=e.computed(()=>Math.max(0,O.value)),b=e.inject(T.MACH_REPORT_FETCHER_KEY,null),B=e.inject(T.MACH_REPORT_PDF_EXPORTER_KEY,null)??T.createDefaultPdfExporter({fontUrl:"/simhei.ttf"}),$=e.computed(()=>T.normalizeTempIds(n.tempId)),w=e.computed(()=>o.value?.pages.length??0),x=ke(),R=e.computed(()=>Ee(x.value,n.preset)),F=e.computed(()=>({...R.value.messages,...n.messages})),K=e.computed(()=>n.showExport??R.value.showExport),N=e.computed(()=>n.showPrint??R.value.showPrint),D=e.computed(()=>n.showPdfWindow??R.value.showPdfWindow),O=e.computed(()=>n.gapPx??R.value.gapPx),G=e.computed(()=>({height:n.height,...Pe(R.value.theme)})),{zoom:M,zoomMode:z,applyFitZoom:le,setZoom:_}=fe(()=>({viewport:g.value,pageWidthPx:(o.value?.pages[0]?.pageWidthMm??210)*J})),Me=pe(o,M,{pxPerMm:J,gapPx:O.value}),{contentSize:ee,windowRange:H,visiblePages:Re,makeScrollHandler:Se,refreshViewport:se}=Me,Be=Se(m,w);function te(d){z.value="raw",M.value=Math.min(3,Math.max(.3,d))}function oe(){o.value=null,m.value=1,P.reset()}let Y=0;async function I(){const d=++Y,y=n.fetcher??b;if($.value.length===0){i.value="缺少报表模板 ID",oe(),a("error",i.value,{code:"param"});return}if(!y){i.value="未提供渲染数据源 fetcher",oe(),a("error",i.value,{code:"config"});return}s.value=!0,i.value="",oe();const k=p.start();try{const v=await y({tempIds:$.value,furnitureTempId:n.furnitureTempId||void 0,params:{...n.params}});if(d!==Y)return;const C=U.validateRenderPlan(v);if(!C.ok){const W=C.errors.slice(0,3).map(A=>`${A.path}: ${A.message}`).join("; ");throw new q("validate",`渲染计划校验失败(${C.errors.length} 处): ${W}`)}C.warnings.length>0&&R.value.logger.warn("[mach-report] 渲染计划告警:",C.warnings),o.value=v,m.value=1,p.end(k),g.value&&(g.value.scrollTop=0),z.value==="fit"&&le(),a("loaded",v.pages.length)}catch(v){if(d!==Y)return;const C=v instanceof q?v:new q("fetch",v instanceof Error?v.message:"预览加载失败",v);i.value=C.message,a("error",C.message,Ce(C))}finally{d===Y&&(s.value=!1)}}function S(d){if(w.value<=0)return;const y=Math.max(1,Math.min(w.value,d));m.value=y;const k=g.value;if(!k)return;let v=0;for(let C=0;C<y-1;C++)v+=(o.value?.pages[C]?.pageHeightMm??0)*J+f.value;k.scrollTop=v*M.value}const{print:ne,exportAs:re,openPdfWindow:ae,releasePrintFrame:Te}=ge(o,{getPdfExporter:()=>B,onError:d=>a("error",d,{code:"print"})}),$e={reload:I,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:S};e.provide(T.MACH_REPORT_CONTROLLER_KEY,$e);const P=He({plan:o,gotoPage:S,highlight:Oe,clearHighlights:Le});function Ne(d){d.ctrlKey&&(d.preventDefault(),te(M.value*(d.deltaY<0?1.1:1/1.1)))}function Fe(d){if((d.ctrlKey||d.metaKey)&&d.key.toLowerCase()==="f"){d.preventDefault(),P.visible.value||P.toggle();return}switch(d.key){case"PageDown":d.preventDefault(),S(m.value+1);break;case"PageUp":d.preventDefault(),S(m.value-1);break;case"Home":d.preventDefault(),S(1);break;case"End":d.preventDefault(),S(w.value);break;case"+":case"=":d.preventDefault(),te(M.value*1.1);break;case"-":d.preventDefault(),te(M.value/1.1);break}}function De(){try{localStorage.setItem(me,JSON.stringify({zoomMode:z.value==="fit"?"fit":Math.round(M.value*100)}))}catch{}}e.watch([z,M],De),e.watchEffect(()=>{const d=o.value;if(!d)return;const y=h.value;if(!y)return;y.querySelectorAll(".mrp-page-holder").forEach(v=>{const C=Number(v.dataset.page??0)-1,W=d.pages[C];if(!W||v.childElementCount>0){if(v.firstElementChild){const ce=v.firstElementChild;P.clear(ce),P.apply(ce)}return}v.style.width=`${W.pageWidthMm*J}px`;const A=U.renderPage(W,96,{},document);P.apply(A),v.appendChild(A)})},{flush:"post"}),e.watch(()=>P.query.value,d=>{d||h.value?.querySelectorAll(".mrp-page-holder").forEach(y=>{P.clear(y)})});const ie=Ae(o,{thumbsRoot:u,visible:c,renderThumbCanvas:d=>{try{const{canvases:y}=U.renderPlanToCanvas(o.value,{start:d,end:d,dpr:.2});return y[0]??null}catch{return null}}});e.watchEffect(()=>{ie.schedule()},{flush:"post"});const ze=e.computed(()=>n.debug),{debugStats:V}=We(ze,{plan:o,pageCount:w,windowRange:H,zoom:M,loadMs:p.loadMs});function ue(){se(g.value),z.value==="fit"&&le()}function Ie(){try{const d=JSON.parse(localStorage.getItem(me)??"{}");d.zoomMode==="fit"?_("fit"):typeof d.zoomMode=="number"&&_(d.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",ue),se(g.value),Ie(),n.autoLoad&&I()}),e.onUnmounted(()=>{window.removeEventListener("resize",ue),ie.destroy(),P.reset(),Te()}),e.watch(()=>[n.tempId,n.furnitureTempId,JSON.stringify(n.params)],()=>{n.autoLoad&&I()}),e.watch(()=>n.fetcher??b,()=>{n.autoLoad&&I()}),r({reload:I,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:S}),(d,y)=>(e.openBlock(),e.createElementBlock("div",{class:"mach-report-preview",style:e.normalizeStyle(G.value)},[e.createVNode(be,{"page-count":w.value,"current-page":m.value,"zoom-mode":e.unref(z),zoom:e.unref(M),"show-export":K.value,"show-print":N.value,"show-pdf-window":D.value,messages:F.value,search:{visible:e.unref(P).visible.value,query:e.unref(P).query.value,matchIndex:e.unref(P).matchIndex.value,matchCount:e.unref(P).matchCount.value},"thumbs-visible":c.value,onGoto:S,onZoom:e.unref(_),onExport:y[0]||(y[0]=k=>e.unref(re)(k)),onPrint:e.unref(ne),onPdfWindow:e.unref(ae),onSearchInput:e.unref(P).onInput,onSearchNav:e.unref(P).onNav,onSearchToggle:e.unref(P).toggle,onThumbsToggle:y[1]||(y[1]=k=>c.value=!c.value)},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","onZoom","onPrint","onPdfWindow","onSearchInput","onSearchNav","onSearchToggle"]),e.createElementVNode("div",at,[e.createElementVNode("div",{ref_key:"viewportRef",ref:g,class:"mrp-body",tabindex:"0",onWheel:Ne,onKeydown:Fe,onScrollPassive:y[2]||(y[2]=k=>e.unref(Be)(k.target))},[s.value?(e.openBlock(),e.createElementBlock("div",lt,e.toDisplayString(F.value.loading),1)):i.value?(e.openBlock(),e.createElementBlock("div",st,[e.createTextVNode(e.toDisplayString(i.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:I},e.toDisplayString(F.value.retry),1)])):!o.value||w.value===0?(e.openBlock(),e.createElementBlock("div",it,e.toDisplayString(F.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(ee).w*e.unref(M)}px`,height:`${e.unref(ee).h*e.unref(M)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:h,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(M)})`,transformOrigin:"top left",width:`${e.unref(ee).w}px`})},[e.unref(H).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(H).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Re),k=>(e.openBlock(),e.createElementBlock("div",{key:k.index,class:"mrp-page-holder","data-page":k.index+1},null,8,ut))),128)),e.unref(H).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(H).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),c.value&&w.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:u,class:"mrp-thumbs"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value?.pages??[],(k,v)=>(e.openBlock(),e.createElementBlock("div",{key:v,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":v+1===m.value}]),onClick:C=>S(v+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":v+1,style:e.normalizeStyle({height:`${Math.round(k.pageHeightMm/k.pageWidthMm*116)}px`})},null,12,dt),e.createElementVNode("span",mt,e.toDisplayString(v+1),1)],10,ct))),128))],512)):e.createCommentVNode("",!0)]),e.createElementVNode("div",pt,[e.renderSlot(d.$slots,"default",{},void 0,!0)]),e.unref(V)?(e.openBlock(),e.createElementBlock("div",ft,[y[3]||(y[3]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(V).pages)+" | window: ["+e.toDisplayString(e.unref(V).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(V).zoom)+" | load: "+e.toDisplayString(e.unref(V).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(V).planKB)+"KB",1)])):e.createCommentVNode("",!0)],4))}}),xe=ve(gt,[["__scopeId","data-v-2e98692a"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:xe},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=we;exports.DEFAULT_THEME=ye;exports.MachReportError=q;exports.ReportPreview=xe;exports.ReportPreview$1=ht;exports.ReportToolbar=be;exports.SILENT_LOGGER=nt;exports.buildPrintDocument=j;exports.defineMachReportConfig=tt;exports.defineMachReportPreset=ot;exports.printPlans=Ve;exports.provideMachReportConfig=rt;exports.resolveConfig=Ee;exports.themeToCssVars=Pe;exports.toErrorDetail=Ce;exports.useMachReportConfig=ke;exports.usePageWindow=pe;exports.usePrintExport=ge;exports.useZoom=fe;
|