@agile-team/mach-report 2.2.0 → 2.3.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 +54 -10
- package/dist/ReportPreview-B-mwUSk9.cjs +6 -0
- package/dist/ReportPreview-DKjr4cwO.js +1688 -0
- package/dist/defaults-D4o0NCLo.js +9 -0
- package/dist/defaults-DOO1yHwx.cjs +1 -0
- package/dist/grid-geometry-Dw7BlENr.js +130 -0
- package/dist/grid-geometry-bkciiZ4Q.cjs +1 -0
- package/dist/index.cjs +6 -6
- package/dist/index.d.cts +37 -5
- package/dist/index.d.ts +37 -5
- package/dist/index.js +1163 -1037
- package/dist/pdf.cjs +48 -48
- package/dist/pdf.d.cts +18 -0
- package/dist/pdf.d.ts +18 -0
- package/dist/pdf.js +5605 -5575
- package/dist/{plugin-BMoMUxrw.cjs → plugin-2lqgTX26.cjs} +1 -1
- package/dist/{plugin-CAcNe0FT.js → plugin-5R00MJQs.js} +1 -1
- package/dist/render-plan-CfJ3wf1l.cjs +1 -0
- package/dist/render-plan-I9AHvQv7.js +13 -0
- package/dist/sql.cjs +42 -42
- package/dist/sql.js +1366 -1363
- package/dist/style.css +1 -1
- package/dist/textwrap-nH0UYU6D.js +108 -0
- package/dist/textwrap-oD-t4b4B.cjs +4 -0
- package/dist/vue/async.d.cts +33 -7
- package/dist/vue/async.d.ts +33 -7
- package/dist/vue/index.d.cts +36 -10
- package/dist/vue/index.d.ts +36 -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 +4 -4
- package/dist/xlsx.cjs +24 -24
- package/dist/xlsx.d.cts +24 -4
- package/dist/xlsx.d.ts +24 -4
- package/dist/xlsx.js +8287 -8166
- package/package.json +1 -1
- package/dist/ReportPreview-BWrQCj9M.js +0 -1643
- package/dist/ReportPreview-DY0PGGqF.cjs +0 -6
- package/dist/grid-geometry-DBH9ExuY.cjs +0 -1
- package/dist/grid-geometry-DONcjshk.js +0 -130
- package/dist/textwrap-DdaewxAd.js +0 -117
- package/dist/textwrap-DqiFwAV3.cjs +0 -3
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.mrp-toolbar[data-v-601f8fa8]{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-title[data-v-601f8fa8]{font-size:13px;font-weight:600;margin-right:8px;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-nav[data-v-601f8fa8]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-601f8fa8]:hover:not(:disabled){background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-nav[data-v-601f8fa8]:disabled{opacity:.4;cursor:not-allowed}.mrp-active[data-v-601f8fa8]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mrp-pageinfo[data-v-601f8fa8]{font-size:12px;min-width:56px;text-align:center;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-spacer[data-v-601f8fa8]{flex:1}.mrp-search[data-v-601f8fa8]{display:flex;align-items:center;gap:4px}.mrp-search-input[data-v-601f8fa8]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;width:150px;outline:none}.mrp-search-input[data-v-601f8fa8]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-search-count[data-v-601f8fa8]{font-size:12px;color:var(--mrp-toolbar-fg, #e8e8e8);min-width:42px;text-align:center}.mrp-params[data-v-aafce92d]{display:flex;align-items:flex-end;gap:12px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-params-title[data-v-aafce92d]{font-size:12px;font-weight:600;color:var(--mrp-toolbar-fg, #e8e8e8);padding-bottom:5px;white-space:nowrap}.mrp-params-grid[data-v-aafce92d]{display:flex;flex-wrap:wrap;gap:8px 12px;flex:1}.mrp-param[data-v-aafce92d]{display:flex;flex-direction:column;gap:2px}.mrp-param-label[data-v-aafce92d]{font-size:11px;color:var(--mrp-toolbar-fg, #e8e8e8);opacity:.85}.mrp-param-star[data-v-aafce92d]{color:#ff7b72;font-style:normal;margin-left:2px}.mrp-param-input[data-v-aafce92d]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:3px 8px;font-size:12px;min-width:130px;outline:none}.mrp-param-input[data-v-aafce92d]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-param-missing .mrp-param-input[data-v-aafce92d]{border-color:#ff7b72}select.mrp-param-input option[data-v-aafce92d]{background:#22252a}.mrp-params-actions[data-v-aafce92d]{display:flex;gap:6px;padding-bottom:1px}.mrp-nav[data-v-aafce92d]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:4px 14px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-aafce92d]:hover{background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-param-query[data-v-aafce92d]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mach-report-preview[data-v-
|
|
1
|
+
.mrp-toolbar[data-v-601f8fa8]{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-title[data-v-601f8fa8]{font-size:13px;font-weight:600;margin-right:8px;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-nav[data-v-601f8fa8]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-601f8fa8]:hover:not(:disabled){background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-nav[data-v-601f8fa8]:disabled{opacity:.4;cursor:not-allowed}.mrp-active[data-v-601f8fa8]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mrp-pageinfo[data-v-601f8fa8]{font-size:12px;min-width:56px;text-align:center;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-spacer[data-v-601f8fa8]{flex:1}.mrp-search[data-v-601f8fa8]{display:flex;align-items:center;gap:4px}.mrp-search-input[data-v-601f8fa8]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;width:150px;outline:none}.mrp-search-input[data-v-601f8fa8]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-search-count[data-v-601f8fa8]{font-size:12px;color:var(--mrp-toolbar-fg, #e8e8e8);min-width:42px;text-align:center}.mrp-params[data-v-aafce92d]{display:flex;align-items:flex-end;gap:12px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-params-title[data-v-aafce92d]{font-size:12px;font-weight:600;color:var(--mrp-toolbar-fg, #e8e8e8);padding-bottom:5px;white-space:nowrap}.mrp-params-grid[data-v-aafce92d]{display:flex;flex-wrap:wrap;gap:8px 12px;flex:1}.mrp-param[data-v-aafce92d]{display:flex;flex-direction:column;gap:2px}.mrp-param-label[data-v-aafce92d]{font-size:11px;color:var(--mrp-toolbar-fg, #e8e8e8);opacity:.85}.mrp-param-star[data-v-aafce92d]{color:#ff7b72;font-style:normal;margin-left:2px}.mrp-param-input[data-v-aafce92d]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:3px 8px;font-size:12px;min-width:130px;outline:none}.mrp-param-input[data-v-aafce92d]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-param-missing .mrp-param-input[data-v-aafce92d]{border-color:#ff7b72}select.mrp-param-input option[data-v-aafce92d]{background:#22252a}.mrp-params-actions[data-v-aafce92d]{display:flex;gap:6px;padding-bottom:1px}.mrp-nav[data-v-aafce92d]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:4px 14px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-aafce92d]:hover{background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-param-query[data-v-aafce92d]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mach-report-preview[data-v-48919dc8]{--mrp-shell-bg: #525659;--mrp-shell-fg: #e8e8e8;--mrp-toolbar-bg: #323639;--mrp-toolbar-border: #22252a;--mrp-toolbar-fg: #e8e8e8;--mrp-btn-fg: #cfcfcf;--mrp-btn-border: #4a4d52;--mrp-btn-hover-bg: #414549;--mrp-btn-hover-fg: #ffffff;--mrp-btn-active-bg: #2d5fb8;position:relative;display:flex;flex-direction:column;background:var(--mrp-shell-bg);color:var(--mrp-shell-fg);overflow:hidden}.mrp-main[data-v-48919dc8]{display:flex;flex:1;min-height:0}.mrp-body[data-v-48919dc8]{flex:1;min-width:0;overflow:auto;padding:24px;outline:none}.mrp-scale[data-v-48919dc8]{position:relative;margin:0 auto}.mrp-scale-inner[data-v-48919dc8]{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center}.mrp-page-holder[data-v-48919dc8]{background:#fff;box-shadow:0 2px 8px #00000059;margin-bottom:var(--v8eb72344);flex:none}.mrp-wide-report .mrp-page-holder[data-v-48919dc8]{box-shadow:none}.mrp-state[data-v-48919dc8]{padding:40px;text-align:center;color:#bfbfbf;font-size:13px}.mrp-error[data-v-48919dc8]{color:#ff9d9d}.mrp-export-notice[data-v-48919dc8]{padding:7px 12px;font-size:12px;background:#fff0c2;color:#613c00}.mrp-export-error[data-v-48919dc8]{background:#ffe0df;color:#8e1f1f}.mrp-export-progress[data-v-48919dc8]{background:#e7f0ff;color:#1a4d86}.mrp-retry[data-v-48919dc8]{margin-left:12px;background:transparent;color:#8fb7ff;border:1px solid #5a7fbf;border-radius:4px;padding:1px 10px;cursor:pointer}.mrp-overlay[data-v-48919dc8]{position:absolute;inset:0;pointer-events:none}.mrp-page-holder[data-v-48919dc8] mark.mrp-hit{background:#ffe066;color:#7a5c00;border-radius:2px;padding:0 1px;scroll-margin:8px}.mrp-thumbs[data-v-48919dc8]{width:140px;flex:none;overflow-y:auto;border-left:1px solid var(--mrp-toolbar-border);background:var(--mrp-toolbar-bg);padding:8px;display:flex;flex-direction:column}.mrp-thumb[data-v-48919dc8]{cursor:pointer;text-align:center;flex:none;margin-bottom:8px}.mrp-thumb-spacer[data-v-48919dc8]{flex:none}.mrp-thumb-box[data-v-48919dc8]{box-sizing:border-box;width:116px;background:#fff;box-shadow:0 1px 4px #0006;overflow:hidden;border:2px solid transparent}.mrp-thumb-active .mrp-thumb-box[data-v-48919dc8]{border-color:var(--mrp-btn-active-bg)}.mrp-thumb-no[data-v-48919dc8]{display:block;margin-top:4px;line-height:16px;font-size:11px;color:var(--mrp-toolbar-fg)}.mrp-debug[data-v-48919dc8]{position:absolute;right:8px;bottom:8px;background:#000000c7;color:#7ee787;font:11px/1.6 ui-monospace,monospace;padding:6px 10px;border-radius:6px;pointer-events:none;white-space:pre}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const l = /[\u3000-\u9fff\uff00-\uffef]/, s = new Uint8Array(128);
|
|
2
|
+
{
|
|
3
|
+
for (const t of "iljtf.,:;'`|!()[]") s[t.charCodeAt(0)] = 1;
|
|
4
|
+
for (const t of "mwMW@") s[t.charCodeAt(0)] = 2;
|
|
5
|
+
for (let t = 48; t <= 57; t++) s[t] = 3;
|
|
6
|
+
for (let t = 65; t <= 90; t++) s[t] = 4;
|
|
7
|
+
s[32] = 5;
|
|
8
|
+
}
|
|
9
|
+
const d = [0.54, 0.26, 0.95, 0.59, 0.67, 0.3];
|
|
10
|
+
function M(t) {
|
|
11
|
+
const e = t.charCodeAt(0);
|
|
12
|
+
return e < 128 ? d[s[e]] : l.test(t) ? 1 : /[A-Z]/.test(t) ? 0.67 : 0.54;
|
|
13
|
+
}
|
|
14
|
+
const a = {
|
|
15
|
+
measureMm(t, e) {
|
|
16
|
+
const { fontSizePt: i, bold: f = !1, letterSpacingPt: o = 0 } = e, c = 25.4 / 72;
|
|
17
|
+
let r = 0;
|
|
18
|
+
for (const n of t)
|
|
19
|
+
r += M(n);
|
|
20
|
+
return f && (r *= 1.04), (r * i + o * t.length) * c;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
function p() {
|
|
24
|
+
return a;
|
|
25
|
+
}
|
|
26
|
+
function x(t, e) {
|
|
27
|
+
return a.measureMm(t, e);
|
|
28
|
+
}
|
|
29
|
+
function A(t) {
|
|
30
|
+
let e;
|
|
31
|
+
return {
|
|
32
|
+
measureMm(i, f) {
|
|
33
|
+
if (e === void 0 && (e = t()), !e) return a.measureMm(i, f);
|
|
34
|
+
const o = f.fontSizePt * 96 / 72;
|
|
35
|
+
return e.font = `${f.bold ? "bold " : ""}${o}px sans-serif`, e.measureText(i).width * 25.4 / 96;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function w(t, e, i) {
|
|
40
|
+
const f = [];
|
|
41
|
+
let o = "", c = 0;
|
|
42
|
+
const r = () => {
|
|
43
|
+
o && (f.push({ text: o, widthMm: c, cjk: !1 }), o = "", c = 0);
|
|
44
|
+
};
|
|
45
|
+
for (const n of t) {
|
|
46
|
+
if (n === `
|
|
47
|
+
`) {
|
|
48
|
+
r(), f.push({ text: `
|
|
49
|
+
`, widthMm: 0, cjk: !1, br: !0 });
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (n === " ") {
|
|
53
|
+
r(), f.push({ text: n, widthMm: i.measureMm(n, e), cjk: !1, space: !0 });
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (l.test(n)) {
|
|
57
|
+
r(), f.push({ text: n, widthMm: i.measureMm(n, e), cjk: !0 });
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
o += n, c += i.measureMm(n, e);
|
|
61
|
+
}
|
|
62
|
+
return r(), f;
|
|
63
|
+
}
|
|
64
|
+
function T(t, e, i, f = a) {
|
|
65
|
+
if (!t) return [""];
|
|
66
|
+
t = t.replace(/\r\n?/g, `
|
|
67
|
+
`);
|
|
68
|
+
const o = [];
|
|
69
|
+
let c = "", r = 0;
|
|
70
|
+
const n = () => {
|
|
71
|
+
o.push(c), c = "", r = 0;
|
|
72
|
+
};
|
|
73
|
+
for (const u of w(t, i, f)) {
|
|
74
|
+
if (u.br) {
|
|
75
|
+
n();
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (r + u.widthMm <= e) {
|
|
79
|
+
c += u.text, r += u.widthMm;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (u.space) {
|
|
83
|
+
n();
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (u.cjk) {
|
|
87
|
+
c.length > 0 && n(), c = u.text, r = u.widthMm;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (c.length > 0 && n(), u.widthMm <= e) {
|
|
91
|
+
c = u.text, r = u.widthMm;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
for (const h of u.text) {
|
|
95
|
+
const m = f.measureMm(h, i);
|
|
96
|
+
r + m > e && c.length > 0 && n(), c += h, r += m;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return n(), o;
|
|
100
|
+
}
|
|
101
|
+
export {
|
|
102
|
+
A as a,
|
|
103
|
+
p as b,
|
|
104
|
+
M as c,
|
|
105
|
+
a as h,
|
|
106
|
+
x as m,
|
|
107
|
+
T as w
|
|
108
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";const M=/[\u3000-\u9fff\uff00-\uffef]/,o=new Uint8Array(128);{for(const t of"iljtf.,:;'`|!()[]")o[t.charCodeAt(0)]=1;for(const t of"mwMW@")o[t.charCodeAt(0)]=2;for(let t=48;t<=57;t++)o[t]=3;for(let t=65;t<=90;t++)o[t]=4;o[32]=5}const d=[.54,.26,.95,.59,.67,.3];function l(t){const e=t.charCodeAt(0);return e<128?d[o[e]]:M.test(t)?1:/[A-Z]/.test(t)?.67:.54}const a={measureMm(t,e){const{fontSizePt:s,bold:u=!1,letterSpacingPt:f=0}=e,c=25.4/72;let n=0;for(const r of t)n+=l(r);return u&&(n*=1.04),(n*s+f*t.length)*c}};function w(){return a}function p(t,e){return a.measureMm(t,e)}function x(t){let e;return{measureMm(s,u){if(e===void 0&&(e=t()),!e)return a.measureMm(s,u);const f=u.fontSizePt*96/72;return e.font=`${u.bold?"bold ":""}${f}px sans-serif`,e.measureText(s).width*25.4/96}}}function T(t,e,s){const u=[];let f="",c=0;const n=()=>{f&&(u.push({text:f,widthMm:c,cjk:!1}),f="",c=0)};for(const r of t){if(r===`
|
|
2
|
+
`){n(),u.push({text:`
|
|
3
|
+
`,widthMm:0,cjk:!1,br:!0});continue}if(r===" "){n(),u.push({text:r,widthMm:s.measureMm(r,e),cjk:!1,space:!0});continue}if(M.test(r)){n(),u.push({text:r,widthMm:s.measureMm(r,e),cjk:!0});continue}f+=r,c+=s.measureMm(r,e)}return n(),u}function A(t,e,s,u=a){if(!t)return[""];t=t.replace(/\r\n?/g,`
|
|
4
|
+
`);const f=[];let c="",n=0;const r=()=>{f.push(c),c="",n=0};for(const i of T(t,s,u)){if(i.br){r();continue}if(n+i.widthMm<=e){c+=i.text,n+=i.widthMm;continue}if(i.space){r();continue}if(i.cjk){c.length>0&&r(),c=i.text,n=i.widthMm;continue}if(c.length>0&&r(),i.widthMm<=e){c=i.text,n=i.widthMm;continue}for(const h of i.text){const m=u.measureMm(h,s);n+m>e&&c.length>0&&r(),c+=h,n+=m}}return r(),f}exports.charWidthEm=l;exports.createCanvasMeasurer=x;exports.createHeuristicMeasurer=w;exports.heuristicMeasurer=a;exports.measureTextMm=p;exports.wrapText=A;
|
package/dist/vue/async.d.cts
CHANGED
|
@@ -102,6 +102,10 @@ declare interface ListColumn {
|
|
|
102
102
|
declare interface ListComponent {
|
|
103
103
|
kind: "list";
|
|
104
104
|
id?: string;
|
|
105
|
+
/** 宽表标记用于连续 Excel;不改变低层列表的列宽和分页算法。 */
|
|
106
|
+
layout?: "page" | "wide";
|
|
107
|
+
/** 逻辑表名称,供 Excel Sheet 命名;不额外生成标题组件。 */
|
|
108
|
+
title?: string;
|
|
105
109
|
leftMm: number;
|
|
106
110
|
topMm: number;
|
|
107
111
|
widthMm: number;
|
|
@@ -348,13 +352,13 @@ export declare const MachReportPreview: {
|
|
|
348
352
|
height: string;
|
|
349
353
|
gapPx: number;
|
|
350
354
|
params: Record<string, string>;
|
|
355
|
+
reportId: string | string[] | null;
|
|
351
356
|
debug: boolean;
|
|
352
357
|
showExport: boolean;
|
|
353
358
|
showPrint: boolean;
|
|
354
359
|
showPdfWindow: boolean;
|
|
355
360
|
showParams: boolean;
|
|
356
361
|
messages: Partial<MachReportMessages>;
|
|
357
|
-
reportId: string | string[] | null;
|
|
358
362
|
autoLoad: boolean;
|
|
359
363
|
preset: string;
|
|
360
364
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -449,13 +453,13 @@ export declare const MachReportPreview: {
|
|
|
449
453
|
height: string;
|
|
450
454
|
gapPx: number;
|
|
451
455
|
params: Record<string, string>;
|
|
456
|
+
reportId: string | string[] | null;
|
|
452
457
|
debug: boolean;
|
|
453
458
|
showExport: boolean;
|
|
454
459
|
showPrint: boolean;
|
|
455
460
|
showPdfWindow: boolean;
|
|
456
461
|
showParams: boolean;
|
|
457
462
|
messages: Partial<MachReportMessages>;
|
|
458
|
-
reportId: string | string[] | null;
|
|
459
463
|
autoLoad: boolean;
|
|
460
464
|
preset: string;
|
|
461
465
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -550,13 +554,13 @@ warning: (message: string) => any;
|
|
|
550
554
|
height: string;
|
|
551
555
|
gapPx: number;
|
|
552
556
|
params: Record<string, string>;
|
|
557
|
+
reportId: string | string[] | null;
|
|
553
558
|
debug: boolean;
|
|
554
559
|
showExport: boolean;
|
|
555
560
|
showPrint: boolean;
|
|
556
561
|
showPdfWindow: boolean;
|
|
557
562
|
showParams: boolean;
|
|
558
563
|
messages: Partial<MachReportMessages>;
|
|
559
|
-
reportId: string | string[] | null;
|
|
560
564
|
autoLoad: boolean;
|
|
561
565
|
preset: string;
|
|
562
566
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -648,6 +652,7 @@ declare interface PlanComponent {
|
|
|
648
652
|
richParagraphs?: RichParagraph[];
|
|
649
653
|
imageData?: string;
|
|
650
654
|
grid?: PlanGrid;
|
|
655
|
+
table?: PlanTableFragment;
|
|
651
656
|
style?: ComponentStyle;
|
|
652
657
|
meta?: Record<string, unknown>;
|
|
653
658
|
/** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
|
|
@@ -665,9 +670,13 @@ declare interface PlanGrid {
|
|
|
665
670
|
colWidthsMm?: number[];
|
|
666
671
|
rowHeightsMm?: number[];
|
|
667
672
|
gapMm?: number;
|
|
673
|
+
/** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
|
|
674
|
+
paddingMm?: number;
|
|
668
675
|
}
|
|
669
676
|
|
|
670
677
|
declare interface PlanPage {
|
|
678
|
+
/** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
|
|
679
|
+
layout?: "page" | "wide";
|
|
671
680
|
pageWidthMm: number;
|
|
672
681
|
pageHeightMm: number;
|
|
673
682
|
marginTopMm?: number;
|
|
@@ -677,6 +686,19 @@ declare interface PlanPage {
|
|
|
677
686
|
components: PlanComponent[];
|
|
678
687
|
}
|
|
679
688
|
|
|
689
|
+
/** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
|
|
690
|
+
declare interface PlanTableFragment {
|
|
691
|
+
/** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
|
|
692
|
+
id: string;
|
|
693
|
+
/** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
|
|
694
|
+
rowIndex: number;
|
|
695
|
+
role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
|
|
696
|
+
/** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
|
|
697
|
+
columnKeys: string[];
|
|
698
|
+
layout?: "page" | "wide";
|
|
699
|
+
title?: string;
|
|
700
|
+
}
|
|
701
|
+
|
|
680
702
|
/** 预取组件分片(路由 hover / 空闲时调用,正式渲染零等待) */
|
|
681
703
|
export declare function preloadMachReport(): Promise<unknown>;
|
|
682
704
|
|
|
@@ -774,6 +796,8 @@ declare type TemplateComponent = PlanComponent | ListComponent;
|
|
|
774
796
|
declare interface TemplatePage {
|
|
775
797
|
widthMm: number;
|
|
776
798
|
heightMm: number;
|
|
799
|
+
/** 宽表保持全列自然宽度,页高只控制内部纵向分段。 */
|
|
800
|
+
layout?: "page" | "wide";
|
|
777
801
|
marginTopMm?: number;
|
|
778
802
|
marginBottomMm?: number;
|
|
779
803
|
marginLeftMm?: number;
|
|
@@ -809,11 +833,13 @@ declare interface TextMeasurer {
|
|
|
809
833
|
* - 未支持组件、富文本专有内容与单元格嵌套组件跳过并计入 warnings
|
|
810
834
|
*/
|
|
811
835
|
declare interface XlsxRenderOptions {
|
|
812
|
-
/**
|
|
813
|
-
sheetName?: (
|
|
814
|
-
/**
|
|
836
|
+
/** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
|
|
837
|
+
sheetName?: (sheetIndex: number) => string;
|
|
838
|
+
/** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
|
|
839
|
+
sheetMode?: "auto" | "pages" | "continuous";
|
|
840
|
+
/** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
|
|
815
841
|
valueMode?: "text" | "raw";
|
|
816
|
-
/**
|
|
842
|
+
/** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
|
|
817
843
|
paperSize?: "auto" | "a3" | "a4" | "a5";
|
|
818
844
|
}
|
|
819
845
|
|
package/dist/vue/async.d.ts
CHANGED
|
@@ -102,6 +102,10 @@ declare interface ListColumn {
|
|
|
102
102
|
declare interface ListComponent {
|
|
103
103
|
kind: "list";
|
|
104
104
|
id?: string;
|
|
105
|
+
/** 宽表标记用于连续 Excel;不改变低层列表的列宽和分页算法。 */
|
|
106
|
+
layout?: "page" | "wide";
|
|
107
|
+
/** 逻辑表名称,供 Excel Sheet 命名;不额外生成标题组件。 */
|
|
108
|
+
title?: string;
|
|
105
109
|
leftMm: number;
|
|
106
110
|
topMm: number;
|
|
107
111
|
widthMm: number;
|
|
@@ -348,13 +352,13 @@ export declare const MachReportPreview: {
|
|
|
348
352
|
height: string;
|
|
349
353
|
gapPx: number;
|
|
350
354
|
params: Record<string, string>;
|
|
355
|
+
reportId: string | string[] | null;
|
|
351
356
|
debug: boolean;
|
|
352
357
|
showExport: boolean;
|
|
353
358
|
showPrint: boolean;
|
|
354
359
|
showPdfWindow: boolean;
|
|
355
360
|
showParams: boolean;
|
|
356
361
|
messages: Partial<MachReportMessages>;
|
|
357
|
-
reportId: string | string[] | null;
|
|
358
362
|
autoLoad: boolean;
|
|
359
363
|
preset: string;
|
|
360
364
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -449,13 +453,13 @@ export declare const MachReportPreview: {
|
|
|
449
453
|
height: string;
|
|
450
454
|
gapPx: number;
|
|
451
455
|
params: Record<string, string>;
|
|
456
|
+
reportId: string | string[] | null;
|
|
452
457
|
debug: boolean;
|
|
453
458
|
showExport: boolean;
|
|
454
459
|
showPrint: boolean;
|
|
455
460
|
showPdfWindow: boolean;
|
|
456
461
|
showParams: boolean;
|
|
457
462
|
messages: Partial<MachReportMessages>;
|
|
458
|
-
reportId: string | string[] | null;
|
|
459
463
|
autoLoad: boolean;
|
|
460
464
|
preset: string;
|
|
461
465
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -550,13 +554,13 @@ warning: (message: string) => any;
|
|
|
550
554
|
height: string;
|
|
551
555
|
gapPx: number;
|
|
552
556
|
params: Record<string, string>;
|
|
557
|
+
reportId: string | string[] | null;
|
|
553
558
|
debug: boolean;
|
|
554
559
|
showExport: boolean;
|
|
555
560
|
showPrint: boolean;
|
|
556
561
|
showPdfWindow: boolean;
|
|
557
562
|
showParams: boolean;
|
|
558
563
|
messages: Partial<MachReportMessages>;
|
|
559
|
-
reportId: string | string[] | null;
|
|
560
564
|
autoLoad: boolean;
|
|
561
565
|
preset: string;
|
|
562
566
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -648,6 +652,7 @@ declare interface PlanComponent {
|
|
|
648
652
|
richParagraphs?: RichParagraph[];
|
|
649
653
|
imageData?: string;
|
|
650
654
|
grid?: PlanGrid;
|
|
655
|
+
table?: PlanTableFragment;
|
|
651
656
|
style?: ComponentStyle;
|
|
652
657
|
meta?: Record<string, unknown>;
|
|
653
658
|
/** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
|
|
@@ -665,9 +670,13 @@ declare interface PlanGrid {
|
|
|
665
670
|
colWidthsMm?: number[];
|
|
666
671
|
rowHeightsMm?: number[];
|
|
667
672
|
gapMm?: number;
|
|
673
|
+
/** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
|
|
674
|
+
paddingMm?: number;
|
|
668
675
|
}
|
|
669
676
|
|
|
670
677
|
declare interface PlanPage {
|
|
678
|
+
/** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
|
|
679
|
+
layout?: "page" | "wide";
|
|
671
680
|
pageWidthMm: number;
|
|
672
681
|
pageHeightMm: number;
|
|
673
682
|
marginTopMm?: number;
|
|
@@ -677,6 +686,19 @@ declare interface PlanPage {
|
|
|
677
686
|
components: PlanComponent[];
|
|
678
687
|
}
|
|
679
688
|
|
|
689
|
+
/** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
|
|
690
|
+
declare interface PlanTableFragment {
|
|
691
|
+
/** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
|
|
692
|
+
id: string;
|
|
693
|
+
/** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
|
|
694
|
+
rowIndex: number;
|
|
695
|
+
role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
|
|
696
|
+
/** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
|
|
697
|
+
columnKeys: string[];
|
|
698
|
+
layout?: "page" | "wide";
|
|
699
|
+
title?: string;
|
|
700
|
+
}
|
|
701
|
+
|
|
680
702
|
/** 预取组件分片(路由 hover / 空闲时调用,正式渲染零等待) */
|
|
681
703
|
export declare function preloadMachReport(): Promise<unknown>;
|
|
682
704
|
|
|
@@ -774,6 +796,8 @@ declare type TemplateComponent = PlanComponent | ListComponent;
|
|
|
774
796
|
declare interface TemplatePage {
|
|
775
797
|
widthMm: number;
|
|
776
798
|
heightMm: number;
|
|
799
|
+
/** 宽表保持全列自然宽度,页高只控制内部纵向分段。 */
|
|
800
|
+
layout?: "page" | "wide";
|
|
777
801
|
marginTopMm?: number;
|
|
778
802
|
marginBottomMm?: number;
|
|
779
803
|
marginLeftMm?: number;
|
|
@@ -809,11 +833,13 @@ declare interface TextMeasurer {
|
|
|
809
833
|
* - 未支持组件、富文本专有内容与单元格嵌套组件跳过并计入 warnings
|
|
810
834
|
*/
|
|
811
835
|
declare interface XlsxRenderOptions {
|
|
812
|
-
/**
|
|
813
|
-
sheetName?: (
|
|
814
|
-
/**
|
|
836
|
+
/** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
|
|
837
|
+
sheetName?: (sheetIndex: number) => string;
|
|
838
|
+
/** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
|
|
839
|
+
sheetMode?: "auto" | "pages" | "continuous";
|
|
840
|
+
/** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
|
|
815
841
|
valueMode?: "text" | "raw";
|
|
816
|
-
/**
|
|
842
|
+
/** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
|
|
817
843
|
paperSize?: "auto" | "a3" | "a4" | "a5";
|
|
818
844
|
}
|
|
819
845
|
|
package/dist/vue/index.d.cts
CHANGED
|
@@ -173,13 +173,13 @@ onWarning?: ((message: string) => any) | undefined;
|
|
|
173
173
|
height: string;
|
|
174
174
|
gapPx: number;
|
|
175
175
|
params: Record<string, string>;
|
|
176
|
+
reportId: string | string[] | null;
|
|
176
177
|
debug: boolean;
|
|
177
178
|
showExport: boolean;
|
|
178
179
|
showPrint: boolean;
|
|
179
180
|
showPdfWindow: boolean;
|
|
180
181
|
showParams: boolean;
|
|
181
182
|
messages: Partial<MachReportMessages>;
|
|
182
|
-
reportId: string | string[] | null;
|
|
183
183
|
autoLoad: boolean;
|
|
184
184
|
preset: string;
|
|
185
185
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -405,6 +405,10 @@ declare interface ListColumn {
|
|
|
405
405
|
declare interface ListComponent {
|
|
406
406
|
kind: "list";
|
|
407
407
|
id?: string;
|
|
408
|
+
/** 宽表标记用于连续 Excel;不改变低层列表的列宽和分页算法。 */
|
|
409
|
+
layout?: "page" | "wide";
|
|
410
|
+
/** 逻辑表名称,供 Excel Sheet 命名;不额外生成标题组件。 */
|
|
411
|
+
title?: string;
|
|
408
412
|
leftMm: number;
|
|
409
413
|
topMm: number;
|
|
410
414
|
widthMm: number;
|
|
@@ -724,13 +728,13 @@ export declare const MachReportPreview: {
|
|
|
724
728
|
height: string;
|
|
725
729
|
gapPx: number;
|
|
726
730
|
params: Record<string, string>;
|
|
731
|
+
reportId: string | string[] | null;
|
|
727
732
|
debug: boolean;
|
|
728
733
|
showExport: boolean;
|
|
729
734
|
showPrint: boolean;
|
|
730
735
|
showPdfWindow: boolean;
|
|
731
736
|
showParams: boolean;
|
|
732
737
|
messages: Partial<MachReportMessages>;
|
|
733
|
-
reportId: string | string[] | null;
|
|
734
738
|
autoLoad: boolean;
|
|
735
739
|
preset: string;
|
|
736
740
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -825,13 +829,13 @@ export declare const MachReportPreview: {
|
|
|
825
829
|
height: string;
|
|
826
830
|
gapPx: number;
|
|
827
831
|
params: Record<string, string>;
|
|
832
|
+
reportId: string | string[] | null;
|
|
828
833
|
debug: boolean;
|
|
829
834
|
showExport: boolean;
|
|
830
835
|
showPrint: boolean;
|
|
831
836
|
showPdfWindow: boolean;
|
|
832
837
|
showParams: boolean;
|
|
833
838
|
messages: Partial<MachReportMessages>;
|
|
834
|
-
reportId: string | string[] | null;
|
|
835
839
|
autoLoad: boolean;
|
|
836
840
|
preset: string;
|
|
837
841
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -926,13 +930,13 @@ warning: (message: string) => any;
|
|
|
926
930
|
height: string;
|
|
927
931
|
gapPx: number;
|
|
928
932
|
params: Record<string, string>;
|
|
933
|
+
reportId: string | string[] | null;
|
|
929
934
|
debug: boolean;
|
|
930
935
|
showExport: boolean;
|
|
931
936
|
showPrint: boolean;
|
|
932
937
|
showPdfWindow: boolean;
|
|
933
938
|
showParams: boolean;
|
|
934
939
|
messages: Partial<MachReportMessages>;
|
|
935
|
-
reportId: string | string[] | null;
|
|
936
940
|
autoLoad: boolean;
|
|
937
941
|
preset: string;
|
|
938
942
|
paramDefs: ReportParamDef[] | undefined;
|
|
@@ -1035,6 +1039,7 @@ declare interface PlanComponent {
|
|
|
1035
1039
|
richParagraphs?: RichParagraph[];
|
|
1036
1040
|
imageData?: string;
|
|
1037
1041
|
grid?: PlanGrid;
|
|
1042
|
+
table?: PlanTableFragment;
|
|
1038
1043
|
style?: ComponentStyle;
|
|
1039
1044
|
meta?: Record<string, unknown>;
|
|
1040
1045
|
/** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
|
|
@@ -1052,6 +1057,8 @@ declare interface PlanGrid {
|
|
|
1052
1057
|
colWidthsMm?: number[];
|
|
1053
1058
|
rowHeightsMm?: number[];
|
|
1054
1059
|
gapMm?: number;
|
|
1060
|
+
/** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
|
|
1061
|
+
paddingMm?: number;
|
|
1055
1062
|
}
|
|
1056
1063
|
|
|
1057
1064
|
export declare class PlanLoadError extends Error {
|
|
@@ -1059,6 +1066,8 @@ export declare class PlanLoadError extends Error {
|
|
|
1059
1066
|
}
|
|
1060
1067
|
|
|
1061
1068
|
declare interface PlanPage {
|
|
1069
|
+
/** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
|
|
1070
|
+
layout?: "page" | "wide";
|
|
1062
1071
|
pageWidthMm: number;
|
|
1063
1072
|
pageHeightMm: number;
|
|
1064
1073
|
marginTopMm?: number;
|
|
@@ -1068,6 +1077,19 @@ declare interface PlanPage {
|
|
|
1068
1077
|
components: PlanComponent[];
|
|
1069
1078
|
}
|
|
1070
1079
|
|
|
1080
|
+
/** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
|
|
1081
|
+
declare interface PlanTableFragment {
|
|
1082
|
+
/** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
|
|
1083
|
+
id: string;
|
|
1084
|
+
/** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
|
|
1085
|
+
rowIndex: number;
|
|
1086
|
+
role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
|
|
1087
|
+
/** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
|
|
1088
|
+
columnKeys: string[];
|
|
1089
|
+
layout?: "page" | "wide";
|
|
1090
|
+
title?: string;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1071
1093
|
declare function print_2(): Promise<void>;
|
|
1072
1094
|
|
|
1073
1095
|
declare interface PrintHtmlResult {
|
|
@@ -1244,6 +1266,8 @@ declare type TemplateComponent = PlanComponent | ListComponent;
|
|
|
1244
1266
|
declare interface TemplatePage {
|
|
1245
1267
|
widthMm: number;
|
|
1246
1268
|
heightMm: number;
|
|
1269
|
+
/** 宽表保持全列自然宽度,页高只控制内部纵向分段。 */
|
|
1270
|
+
layout?: "page" | "wide";
|
|
1247
1271
|
marginTopMm?: number;
|
|
1248
1272
|
marginBottomMm?: number;
|
|
1249
1273
|
marginLeftMm?: number;
|
|
@@ -1340,8 +1364,8 @@ export declare function useReportPreview(): MachReportController | null;
|
|
|
1340
1364
|
|
|
1341
1365
|
/**
|
|
1342
1366
|
* 缩放状态(transform: scale 方案):
|
|
1343
|
-
* - fit
|
|
1344
|
-
* - raw
|
|
1367
|
+
* - fit 模式:按视口宽自适应,超宽表也能完整缩入视口
|
|
1368
|
+
* - raw 模式:固定百分比(30%~300%)
|
|
1345
1369
|
* transform 而非 CSS zoom:标准属性、跨浏览器、零重排。
|
|
1346
1370
|
*/
|
|
1347
1371
|
export declare function useZoom(getFitInputs: () => {
|
|
@@ -1363,11 +1387,13 @@ export declare function useZoom(getFitInputs: () => {
|
|
|
1363
1387
|
* - 未支持组件、富文本专有内容与单元格嵌套组件跳过并计入 warnings
|
|
1364
1388
|
*/
|
|
1365
1389
|
declare interface XlsxRenderOptions {
|
|
1366
|
-
/**
|
|
1367
|
-
sheetName?: (
|
|
1368
|
-
/**
|
|
1390
|
+
/** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
|
|
1391
|
+
sheetName?: (sheetIndex: number) => string;
|
|
1392
|
+
/** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
|
|
1393
|
+
sheetMode?: "auto" | "pages" | "continuous";
|
|
1394
|
+
/** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
|
|
1369
1395
|
valueMode?: "text" | "raw";
|
|
1370
|
-
/**
|
|
1396
|
+
/** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
|
|
1371
1397
|
paperSize?: "auto" | "a3" | "a4" | "a5";
|
|
1372
1398
|
}
|
|
1373
1399
|
|