@agile-team/mach-report 2.3.2 → 2.4.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.
Files changed (39) hide show
  1. package/README.md +40 -5
  2. package/dist/ReportPreview-CL9J9MEE.js +1907 -0
  3. package/dist/ReportPreview-DJvv3h8m.cjs +6 -0
  4. package/dist/grid-geometry-BNIvw52m.cjs +1 -0
  5. package/dist/{grid-geometry-Dw7BlENr.js → grid-geometry-C8hGoe9o.js} +10 -10
  6. package/dist/index.cjs +5 -5
  7. package/dist/index.d.cts +74 -0
  8. package/dist/index.d.ts +74 -0
  9. package/dist/index.js +946 -782
  10. package/dist/number-format-BA_KwrZe.js +55 -0
  11. package/dist/number-format-CZ2T_5kF.cjs +1 -0
  12. package/dist/pdf.cjs +1 -1
  13. package/dist/pdf.d.cts +6 -0
  14. package/dist/pdf.d.ts +6 -0
  15. package/dist/pdf.js +2 -2
  16. package/dist/{plugin-2lqgTX26.cjs → plugin-BkK2mm_p.cjs} +1 -1
  17. package/dist/{plugin-5R00MJQs.js → plugin-DRnvIbdP.js} +1 -1
  18. package/dist/render-plan-CCTL4F9v.cjs +1 -0
  19. package/dist/{render-plan-I9AHvQv7.js → render-plan-CXBWRog4.js} +12 -7
  20. package/dist/style.css +1 -1
  21. package/dist/vue/async.d.cts +598 -1
  22. package/dist/vue/async.d.ts +598 -1
  23. package/dist/vue/index.d.cts +820 -10
  24. package/dist/vue/index.d.ts +820 -10
  25. package/dist/vue-async.cjs +1 -1
  26. package/dist/vue-async.js +3 -3
  27. package/dist/vue.cjs +1 -1
  28. package/dist/vue.js +96 -73
  29. package/dist/xlsx.cjs +24 -24
  30. package/dist/xlsx.d.cts +209 -0
  31. package/dist/xlsx.d.ts +209 -0
  32. package/dist/xlsx.js +9805 -9284
  33. package/package.json +1 -1
  34. package/dist/ReportPreview-B-mwUSk9.cjs +0 -6
  35. package/dist/ReportPreview-DKjr4cwO.js +0 -1688
  36. package/dist/defaults-D4o0NCLo.js +0 -9
  37. package/dist/defaults-DOO1yHwx.cjs +0 -1
  38. package/dist/grid-geometry-bkciiZ4Q.cjs +0 -1
  39. package/dist/render-plan-CfJ3wf1l.cjs +0 -1
package/README.md CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  <p align="center">
6
6
  <strong>面向业务宽表、明细台账与标准打印的 TypeScript 报表引擎</strong><br />
7
- 完整列宽预览 · 连续 Excel · A3 / A4 选配 · 框架无关内核
7
+ 完整列宽预览 · Excel 模板导入 · 可选单元格编辑 · A3 / A4 选配
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <img src="https://img.shields.io/badge/source-2.3.2-2563eb" alt="Source version 2.3.2" />
11
+ <img src="https://img.shields.io/badge/source-2.4.0-2563eb" alt="Source version 2.4.0" />
12
12
  <a href="https://www.npmjs.com/package/@agile-team/mach-report"><img src="https://img.shields.io/npm/v/@agile-team/mach-report?label=npm&color=3178c6" alt="npm version" /></a>
13
13
  <a href="https://github.com/ChenyCHENYU/MachReport/actions/workflows/ci.yml"><img src="https://github.com/ChenyCHENYU/MachReport/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
14
14
  <a href="https://github.com/ChenyCHENYU/MachReport/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-authorization%20required-dc2626" alt="Authorization required" /></a>
@@ -20,6 +20,7 @@
20
20
  <a href="#60-秒开始"><strong>快速开始</strong></a> ·
21
21
  <a href="#完整宽表与标准纸张"><strong>完整宽表</strong></a> ·
22
22
  <a href="#excel-报表能力与边界"><strong>Excel 能力</strong></a> ·
23
+ <a href="#单元格编辑">单元格编辑</a> ·
23
24
  <a href="#对齐与可读性">对齐配置</a> ·
24
25
  <a href="#模板配置与管理扩展">模板管理</a> ·
25
26
  <a href="#接入项目数据">数据接入</a> ·
@@ -42,6 +43,8 @@ MachReport 把模板、数据和输出分开:用 TypeScript DSL 或 JSON 定
42
43
  | 明细与汇总 | 自动折行与分页、重复表头、连续分组小计、末尾总计、页码占位符 |
43
44
  | 数据呈现 | 表头与内容独立对齐、类型自动对齐、数值 / 百分比 / 日期格式化、条件格式 |
44
45
  | 预览交互 | 正文与缩略图双窗口渲染、缩放与适宽、可取消分片搜索、参数面板 |
46
+ | 内容编辑 | 默认只读,按需开启双击编辑;类型校验、异步保存、失败保留原值与输出同步 |
47
+ | Excel 导入 | 多 Sheet、完整宽表、合并单元格、基础样式与缓存公式值转换为可复用模板 |
45
48
  | 模板配置 | 版本化 JSON 文档、导入导出校验、模板目录、异步加载与取消 |
46
49
  | 输出 | 浏览器打印、HTML、PDF、真正的 `.xlsx`、逐页 PNG、Word 兼容 HTML `.doc` |
47
50
  | 工程接入 | 局部组件、全局插件、异步入口、分层配置、结构化错误与导出告警 |
@@ -186,12 +189,43 @@ await writeFile("report.xlsx", new Uint8Array(buffer));
186
189
  | 数字格式 | `raw` 模式沿用小数位、千分位和百分比格式,不猜测文本编号的类型 |
187
190
  | 非表格内容 | 图片、条码、二维码、图表、嵌套组件和无文本回退的富文本等暂不导出,跳过时返回 `warnings` |
188
191
  | 版式与打印 | 普通页面自动识别 A3 / A4 / A5;宽表默认不强制纸型,可选 paperSize,工作表列宽保持完整 |
189
- | Excel 编辑工作流 | 尚无 `.xlsx` 模板导入、交互式工作簿编辑、公式计算或透视表 API |
192
+ | Excel 模板导入 | `.xlsx` 转普通模板,多 Sheet、合并、尺寸、基础样式与原始值;默认完整宽表 |
193
+ | 内容修改 | 预览按需双击编辑;公式格只读且不重算,工作簿编辑器与透视表交互不在当前范围 |
190
194
 
191
195
  列表自动保留原始值,Vue 可在配置中一次启用 `xlsx: { valueMode: "raw" }`;旧计划没有原始值时继续导出显示文本。连续导出使用包内记录的逻辑行与列身份,不按文字猜测重复表头;多报表保持独立 Sheet。显式 continuous 要求可识别的列表结构,不支持的布局会报错。日期对象、公式和自由布局仍需业务明确处理。Excel 不做 PDF 坐标复刻;可使用返回的 ExcelJS `workbook` 继续处理并重新序列化。
192
196
 
193
197
  完整示例、类型保留策略和注意事项见 [Excel 导出指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL.md)。
194
198
 
199
+ ### 导入 Excel,直接生成报表
200
+
201
+ Vue 组件默认关闭导入入口,增加一个配置即可选择本机文件:
202
+
203
+ ```vue
204
+ <MachReportPreview report-id="production" excel-import />
205
+ ```
206
+
207
+ 独立引擎或 Node.js 使用同一转换 API:
208
+
209
+ ```ts
210
+ import { importExcelTemplate } from "@agile-team/mach-report/xlsx";
211
+ import { paginateTemplate } from "@agile-team/mach-report";
212
+
213
+ const { template, warnings } = await importExcelTemplate(file);
214
+ const { plan } = paginateTemplate(template, {});
215
+ ```
216
+
217
+ 默认导入全部可见 Sheet,以自然列宽生成 wide 报表,也支持 `layout: "a3" / "a4"`、选择 Sheet 和范围。保留已有内容,公式使用 Excel 保存的缓存结果并保持只读;不会执行公式或推断后端字段。未支持内容通过告警报告。资源预算和接入细节见 [Excel 模板导入](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL_IMPORT.md)。
218
+
219
+ ## 单元格编辑
220
+
221
+ 报表默认只读。需要修改时开启 `editable`,双击单元格输入,Enter 提交,Esc 取消;打印与导出使用同一份更新后的计划。
222
+
223
+ ```vue
224
+ <MachReportPreview report-id="production" editable />
225
+ ```
226
+
227
+ 本地修改不会写入后台。需要校验、持久化和封月权限时,将 `editable` 改为 `{ canEdit, validate, save }`;包内等待保存成功后再更新,失败保留原值,过期保存不会覆盖新报表。文本编号保持字符串、数值 0 保持数字;表头、汇总和公式默认只读。详细配置与框架无关 API 见 [单元格编辑](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/CELL_EDITING.md)。
228
+
195
229
  ## 对齐与可读性
196
230
 
197
231
  `createTableTemplate()` 提供适合业务报表的默认值,常规列无需逐个配置。表头和内容独立设置,整表配置可被单列覆盖。
@@ -399,7 +433,8 @@ CI 使用同一套校验命令,并在构建后检查实际发布产物。协
399
433
  | 目标 | 入口 |
400
434
  | --- | --- |
401
435
  | 接入与 API | [API 速查](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/API.md):数据模型、模板、Vue 属性 / 事件、配置与导出 |
402
- | Excel | [导出指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL.md):能力边界、Node 示例与原始数据类型 |
436
+ | Excel | [导出指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL.md)与[模板导入](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL_IMPORT.md):原始类型、宽表与工作簿转换 |
437
+ | 单元格编辑 | [编辑指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/CELL_EDITING.md):开关、类型、权限校验、异步保存与输出同步 |
403
438
  | 模板管理 | [扩展指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/TEMPLATE_MANAGEMENT.md):JSON 文档、目录、动态版本与后台接入 |
404
439
  | PDF | [字体与导出指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PDF.md):首次诊断、字库部署、缺字与缓存 |
405
440
  | 本地报表 | [最小示例](https://github.com/ChenyCHENYU/MachReport/tree/main/examples/minimal):出库单、工艺卡、多页与多模板预览 |
@@ -413,7 +448,7 @@ CI 使用同一套校验命令,并在构建后检查实际发布产物。协
413
448
 
414
449
  ## 版本与授权
415
450
 
416
- 当前源码版本为 `2.3.2`,以 [`packages/mach-report/package.json`](https://github.com/ChenyCHENYU/MachReport/blob/main/packages/mach-report/package.json) 为准;npm 已发布版本由顶部 npm 标识展示。
451
+ 当前源码版本为 `2.4.0`,以 [`packages/mach-report/package.json`](https://github.com/ChenyCHENYU/MachReport/blob/main/packages/mach-report/package.json) 为准;npm 已发布版本由顶部 npm 标识展示。
417
452
 
418
453
  Copyright © 2026 ChenyCHENYU (Agile Team). All rights reserved.
419
454