fantasy-ngzorro 2.1.13 → 2.1.15

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 CHANGED
@@ -36,6 +36,10 @@
36
36
  | — | 2026-5-20 | 补充 hd-table、hd-detail-lines-page 等组件;完善公共子类型(SelectOption、FormItem 等)文档 |
37
37
  | — | 2026-6-23 | hd-table 状态列支持 `stateField` 自定义取值字段、`isState` 按列名取值;hd-form Input 支持 `prefix` / `prefixIcon`;hd-detail-lines-page 支持 `isCrossPageSelect` 跨页勾选开关 |
38
38
  | — | 2026-7-6 | hd-form 支持 `FormListType.Checkbox`(单个复选框 / 复选框组)及 `CheckboxOption` 配置 |
39
+ | — | 2026-8-6 | hd-form-lines:`allowEmpty` + 仅删除按钮时初始化不补空行、可删至 0 行;分页页码删空校正;ViewDom 字号 14px |
40
+ | — | 2026-8-21 | 分页选项统一增加 500 / 1000;`hd-table` / `hd-detail-lines` / `hd-detail-lines-page` 默认 `tablePageSize` 改为 100 |
41
+ | — | 2026-8-25 | hd-status:`statusToColor` 按 sunan-server 业务状态枚举全量去重补充(排除银行 / AGV / HTTP StatusCode) |
42
+ | — | 2026-8-26 | 文档补齐:`hd-form-lines` 勾选/复制/插槽/暴露方法/`allowEmpty`;分页默认值与选项;`FormLine` 字段 |
39
43
 
40
44
  ## 前言
41
45
 
@@ -48,9 +52,11 @@
48
52
 
49
53
  | 模块 | 说明 |
50
54
  | ---- | ---- |
55
+ | `FantasyNgzorroModule` | 根模块,业务侧统一引入 |
51
56
  | `ColWidth` | 列宽常量 |
52
57
  | `Page<T>` | 分页数据结构 |
53
58
  | `Utils` | 精度计算工具 |
59
+ | `HdOverlayCleanupService` | 清理残留 tooltip/overlay(引入模块后自动生效) |
54
60
  | `HdTableColumn` / `FormLine` / `Filter` 等 | 各组件配置类型,详见 [附录:公共配置类型](#附录公共配置类型) |
55
61
 
56
62
  ---
@@ -70,14 +76,15 @@
70
76
  | ---- | ---- | ------ | ---- |
71
77
  | type | string | default | primary \| dashed \| danger \| default \| link \| reset \| add |
72
78
  | size | string | normal | 按钮尺寸 |
73
- | loading | boolean | false | 加载中(与 loading 配合时必须用 clickAction) |
74
- | disabled | boolean | false | 是否禁用 |
79
+ | loading | boolean | false | 加载中(与 loading 配合时必须用 clickAction / nzOnConfirm) |
80
+ | disabled | boolean | false | 是否禁用;loading 时也会禁用 |
75
81
  | clickAction | EventEmitter | — | 点击事件 |
82
+ | nzOnConfirm | EventEmitter | — | 确认类点击事件(与 clickAction 二选一亦可) |
76
83
 
77
84
  ### 注意点
78
85
 
79
86
  - **禁止**使用 `type="submit"`,请用普通按钮 + `clickAction` 触发表单提交。
80
- - 设置了 `loading` 的按钮必须用 `(clickAction)`,不能用 `(click)`。
87
+ - 设置了 `loading` 的按钮必须用 `(clickAction)` 或 `(nzOnConfirm)`,不能用 `(click)`。
81
88
 
82
89
  ---
83
90
 
@@ -154,7 +161,20 @@
154
161
  | ---- | ---- | ---- |
155
162
  | status | string | 状态值,匹配 `hd-status.service.ts` 中 `statusToColor` 配置 |
156
163
 
157
- 匹配时不区分大小写。新增状态请在 `statusToColor` 中配置颜色。
164
+ 匹配时**不区分大小写**。未命中时圆点默认为灰色 `#9FA4A2`。新增状态请在 `statusToColor` 中配置颜色。
165
+
166
+ #### statusToColor 颜色语义
167
+
168
+ | 颜色 | 含义 | 常见状态码示例 |
169
+ | ---- | ---- | -------------- |
170
+ | `#FAB13B` 黄 | 过程中 / 中间态 | committed、picking、receiving、待生效 |
171
+ | `#9FA4A2` 灰 | 初始 / 未开始 / 线下停用 | initial、saved、未审核、已保存、OFF_LINE |
172
+ | `#F5222D` 红 | 作废 / 拒绝 / 失效 / 禁用 | aborted、rejected、INVALID、已作废 |
173
+ | `#3B77E3` 蓝 | 审核流转 / 处理中 | audited、submitted、处理中、已初审 |
174
+ | `#20B95D` 绿 | 完成 / 启用 / 生效 | finished、published、EFFECTIVE、已完成 |
175
+ | `#F05B24` 橙 | 部分完成 / 预警 | partPublished、部分核销、willExpired |
176
+
177
+ 状态码已按 sunan-server 业务 `*State` / `*Status` 枚举全量去重补齐(排除银行支付 / AGV / HTTP StatusCode)。同时支持英文码、`SCREAMING_SNAKE` 与中文枚举名。
158
178
 
159
179
  ---
160
180
 
@@ -244,12 +264,16 @@ search(reset = false) {
244
264
  | tablePageSize | number | 10 | 每页条数(双向绑定) |
245
265
  | tableLoading | boolean | false | 加载状态 |
246
266
  | tableSearchEvent | EventEmitter | — | 翻页 / 改 pageSize 触发,参数 reset 表示是否重置到第一页 |
247
- | scroll | object | { x: '1150px' } | 横向滚动 |
267
+ | scroll | object | { x: '1px' } | 横向滚动 |
248
268
  | showSelected | boolean | false | 是否显示勾选列 |
249
269
  | selectField | string | billNumber | 勾选主键字段 |
250
270
  | selectEvent | EventEmitter | — | 勾选变化 |
271
+ | showTableTotal | boolean | false | 底部合计行 |
272
+ | tableTotalOption | TableTotalOption[] | — | 合计配置(已弃用类型) |
251
273
  | tableHead / tableBody / tableTotal | TemplateRef | — | 表头 / 表体 / 顶部合计插槽 |
252
274
 
275
+ 分页可选条数:`10 / 50 / 100 / 200 / 500 / 1000`。
276
+
253
277
  ---
254
278
 
255
279
  ## 9、增强表格(hd-table)
@@ -307,12 +331,16 @@ tableCols: HdTableColumn[] = [{
307
331
  | ---- | ---- | ------ | ---- |
308
332
  | tableCols | HdTableColumn[] | [] | 列配置 |
309
333
  | tableData | Page\<any\> | — | 分页数据 |
310
- | tablePageIndex / tablePageSize | number | | 分页(双向绑定) |
334
+ | tablePageIndex | number | 1 | 当前页(双向绑定) |
335
+ | tablePageSize | number | 100 | 每页条数(双向绑定);外面传入会覆盖默认值 |
311
336
  | tableLoading | boolean | false | 加载状态 |
312
337
  | tableSearchEvent | EventEmitter | — | 翻页查询 |
338
+ | tablePageSizeChange | EventEmitter | — | pageSize 双向绑定同步 |
339
+ | tablePageSizeChangeEvent | EventEmitter | — | pageSize 变化(含缓存恢复),常用于重新查询 |
313
340
  | sortEvent | EventEmitter | — | 排序 |
314
341
  | selectEvent | EventEmitter | — | 勾选变化 |
315
342
  | showSelected | boolean | false | 勾选列 |
343
+ | selectField | string | billNumber | 勾选主键字段 |
316
344
  | showOperateColWarpButton | boolean | false | 展开/缩略显示换行列 |
317
345
  | showTableTotal | boolean | false | 底部合计行 |
318
346
  | tableTotalOption | HdTableTotalOption[] | — | 合计配置 |
@@ -321,6 +349,8 @@ tableCols: HdTableColumn[] = [{
321
349
  | uuid | string | — | 列缓存唯一标识(必填,用于 IndexedDB 缓存) |
322
350
  | tableLeftButton / tableRightButton / tableTotal | TemplateRef | — | 工具栏插槽 |
323
351
 
352
+ 分页可选条数:`10 / 50 / 100 / 200 / 500 / 1000`。若本地缓存过该表 `pageSize` 且 `> 10`,初始化会优先使用缓存值并回写父组件。
353
+
324
354
  #### HdTableColumn 配置
325
355
 
326
356
  列定义见 [HdTableColumn](#hdtablecolumn表格列)、[OperateBtn](#operatebtn操作列按钮)、[HdTableTotalOption](#hdtabletotaloptionhd-table-底部合计)。
@@ -404,46 +434,85 @@ formChangeEvent(validateForm: FormGroup) {
404
434
 
405
435
  ## 11、明细表单(hd-form-lines)
406
436
 
407
- 可编辑的明细行表格,支持键盘导航、行内搜索、合计等。
437
+ 可编辑的明细行表格,支持键盘导航、行内搜索、勾选批量填充、合计等。
408
438
 
409
439
  ### 示例
410
440
 
411
441
  ```html
412
- <hd-form-lines #hdFormLines showSearch showKeyboardOperateTip
442
+ <hd-form-lines #hdFormLines showSearch showCheckbox showKeyboardOperateTip
413
443
  [formLines]="formLines" [formLinesData]="formLinesData"
414
- [operateButtons]="['add', 'delete']" [allowEmpty]="false"
415
- (changeEvent)="formLinesChangeEvent($event)">
444
+ [operateButtons]="['add', 'copy', 'delete']" [allowEmpty]="false"
445
+ (changeEvent)="formLinesChangeEvent($event)"
446
+ (selectionChange)="formLinesSelectionChange($event)"
447
+ (deleteLastLineEvent)="deleteEvent()">
448
+ <ng-template #formLinesLeftButton>
449
+ <hd-button type="primary" (clickAction)="batchFill()">批量填充</hd-button>
450
+ </ng-template>
451
+ <ng-template #formLinesRightButton>
452
+ <hd-button type="default">右侧操作</hd-button>
453
+ </ng-template>
454
+ <ng-template #ViewDomRightTemplate let-formItem="formItem" let-formLine="formLine">
455
+ <!-- ViewDom 列右侧自定义内容 -->
456
+ </ng-template>
416
457
  </hd-form-lines>
417
458
  ```
418
459
 
419
460
  | 参数 | 类型 | 默认值 | 说明 |
420
461
  | ---- | ---- | ------ | ---- |
421
462
  | formLines | FormLine[] | — | 列定义 |
422
- | formLinesData | any[] | — | 行数据 |
423
- | operateButtons | string[] | ['add','delete'] | 操作按钮 |
463
+ | formLinesData | any[] | — | 行数据;空数组视为新增 |
464
+ | operateButtons | string[] | ['add','delete'] | 操作按钮:`add` / `copy` / `delete` |
424
465
  | showDeleteConfirm | boolean | false | 删除前确认 |
425
466
  | showSearch | boolean | false | 行内搜索 |
467
+ | showCheckbox | boolean | false | 行勾选列(用于批量操作) |
426
468
  | showKeyboardOperateTip | boolean | false | 键盘操作提示 |
427
469
  | showLineNumber | boolean | true | 序号列 |
428
- | allowEmpty | boolean | true | 是否允许空表 |
470
+ | tableLoading | boolean | false | 加载状态 |
471
+ | allowEmpty | boolean | true | 是否允许空表(见下方说明) |
429
472
  | showTotal | boolean | false | 合计行 |
430
473
  | totalOption / columnsNumber | — | — | 合计配置 |
431
474
  | scroll | object | { x: '1px' } | 横向滚动 |
432
475
  | changeEvent | EventEmitter | — | 表单变化 |
433
- | deleteLastLineEvent | EventEmitter | — | 删除最后一行 |
476
+ | selectionChange | EventEmitter\<FormGroup[]\> | — | 勾选变化 |
477
+ | deleteLastLineEvent | EventEmitter | — | `allowEmpty=false` 时删除最后一行 |
478
+ | deleteLineEvent | EventEmitter | — | 删除行事件 |
434
479
 
435
- #### FormLine 配置
480
+ ### 插槽
436
481
 
437
- 明细列使用 [FormLine](#formline明细表单项) 类型,含 [ColorOption](#coloroption)、[ExplainOption](#explainoption) 及表格型 [SelectOption](#selectoption下拉选项配置)。
482
+ | 插槽 | 说明 |
483
+ | ---- | ---- |
484
+ | formLinesLeftButton | 工具栏左侧自定义按钮(同 hd-table 的 tableLeftButton) |
485
+ | formLinesRightButton | 工具栏右侧自定义按钮 |
486
+ | ViewDomRightTemplate | ViewDom 列右侧自定义模板,上下文:`formItem`、`formLine` |
438
487
 
439
- ---
488
+ ### allowEmpty 行为
489
+
490
+ | 场景 | 行为 |
491
+ | ---- | ---- |
492
+ | `allowEmpty=false` | 不能删掉最后一行,触发 `deleteLastLineEvent` |
493
+ | `allowEmpty=true` 且操作列含 add/copy | 删空后会自动补一行空行 |
494
+ | `allowEmpty=true` 且操作列**仅有** `delete` | 初始化空数据不补空行;可删至 0 行;外部可通过 `addFormLine()` 新增 |
495
+
496
+ ### FormLine 配置
497
+
498
+ 明细列使用 [FormLine](#formline明细表单项) 类型,含 [ColorOption](#coloroption)、[ExplainOption](#explainoption) 及表格型 [SelectOption](#selectoption下拉选项配置)。
440
499
 
441
500
  开启 `showKeyboardOperateTip` 后支持 `[↑][↓][←][→]`、`Enter` 在单元格间跳转;InputNumber 上下键用于跳转,不触发 step 增减。
442
501
 
502
+ 表格分页可选条数:`10 / 50 / 100 / 200 / 500 / 1000`。
503
+
443
504
  #### 暴露方法
444
505
 
445
506
  ```typescript
446
- this.hdFormLines.getValid(); // 获取整表校验状态
507
+ this.hdFormLines.getValid(); // 整表校验状态
508
+ this.hdFormLines.getLines(); // 获取行 FormArray
509
+ this.hdFormLines.addFormLine(); // 末尾新增空行(也可传当前行在其后插入)
510
+ this.hdFormLines.resetForm(); // 重置表单
511
+ this.hdFormLines.getSelectedLines(); // 当前勾选行 FormGroup[]
512
+ this.hdFormLines.getSelectedLinesData(); // 勾选行数据(含跨页)
513
+ this.hdFormLines.getSelectedCount(); // 勾选数量
514
+ this.hdFormLines.clearSelection(); // 清空勾选
515
+ this.hdFormLines.batchFillSelected({ remark: '批量备注' }); // 批量填充勾选行字段
447
516
  ```
448
517
 
449
518
  ---
@@ -516,6 +585,7 @@ formCols: HdOption[] = [
516
585
  | showSearch | boolean | false | 行内搜索 |
517
586
  | searchFields | string[] | [] | 搜索字段,空则搜全部字段 |
518
587
  | hdFrontPagination | boolean | false | 前端分页 |
588
+ | tablePageSize | number | 100 | 每页条数(开启前端分页时生效) |
519
589
  | showSelected | boolean | false | 勾选 |
520
590
  | selectField | string | billNumber | 勾选主键 |
521
591
  | selectedField | string | — | 初始勾选标记字段 |
@@ -526,6 +596,8 @@ formCols: HdOption[] = [
526
596
  | totalOption | TotalOption[] | — | 合计配置,见 [TotalOption](#totaloption明细合计行) |
527
597
  | detailLineHead / detailLineBody | TemplateRef | — | 表头 / 表体插槽 |
528
598
 
599
+ 分页可选条数:`10 / 50 / 100 / 200 / 500 / 1000`。
600
+
529
601
  ---
530
602
 
531
603
  ## 15、详情明细-服务端分页(hd-detail-lines-page)
@@ -559,7 +631,7 @@ formCols: HdOption[] = [
559
631
  ```typescript
560
632
  detailLinesPageData: Page<any> = new Page();
561
633
  detailLinesPageIndex = 1;
562
- detailLinesPageSize = 5;
634
+ detailLinesPageSize = 100;
563
635
  detailLinesPageLoading = false;
564
636
 
565
637
  loadDetailLinesPage(reset = false) {
@@ -589,7 +661,8 @@ onDetailLinesPageSizeChange(pageSize: number) {
589
661
  | ---- | ---- | ------ | ---- |
590
662
  | lines | any[] | [] | 当前页数据(也可用 tableData.content) |
591
663
  | tableData | Page\<any\> | — | 分页对象,提供 totalElements |
592
- | tablePageIndex / tablePageSize | number | 1 / 10 | 分页 |
664
+ | tablePageIndex | number | 1 | 当前页 |
665
+ | tablePageSize | number | 100 | 每页条数 |
593
666
  | tableLoading | boolean | false | 加载状态 |
594
667
  | tablePageIndexChange | EventEmitter | — | 页码变化 |
595
668
  | tablePageSizeChange | EventEmitter | — | 每页条数变化(组件内会重置到第 1 页) |
@@ -597,7 +670,7 @@ onDetailLinesPageSizeChange(pageSize: number) {
597
670
  | showSelected / allowDrop / showTotal 等 | — | — | 同 hd-detail-lines |
598
671
  | isCrossPageSelect | boolean | — | 跨页勾选 |
599
672
 
600
- 模板中 `index` 为**全局序号**:`(pageIndex - 1) * pageSize + 行号`。
673
+ 分页可选条数:`10 / 50 / 100 / 200 / 500 / 1000`。模板中 `index` 为**全局序号**:`(pageIndex - 1) * pageSize + 行号`。
601
674
 
602
675
  ### 与 hd-detail-lines 选型
603
676
 
@@ -811,17 +884,28 @@ selectOption: {
811
884
  | 参数 | 类型 | 默认值 | 说明 |
812
885
  | ---- | ---- | ------ | ---- |
813
886
  | type | FormLineType | — | 控件类型 |
814
- | align | string | — | 列对齐 |
815
- | hideViewDomValue | boolean | false | ViewDom 隐藏 value |
887
+ | align | string | — | 列对齐 left \| right \| center |
888
+ | hideViewDomValue | boolean | false | ViewDom 隐藏 value(如只显示图片) |
816
889
  | isSelect | boolean | — | 聚焦后全选内容 |
817
890
  | preserveNumber | number | — | ViewDom 小数位 |
891
+ | maxLength | number | — | Input 最大长度 |
818
892
  | disabled | boolean | — | 是否禁用 |
893
+ | showTime | boolean | false | Date 是否含时间 |
894
+ | hdShowToday | boolean | true | Date 是否显示「今天」按钮 |
895
+ | hdDisabledDate | Function | — | 不可选日期 |
819
896
  | style | object | — | 列样式 |
820
897
  | canSearch | boolean | false | hide 字段参与搜索 |
821
- | explainOption / explainOptionRight | ExplainOption | — | 说明文字 |
898
+ | defaultLabel | any | — | Select 未初始化时的默认展示文案 |
899
+ | explainOption / explainOptionRight | ExplainOption | — | 说明文字(左 / 右) |
822
900
  | colorOption | ColorOption | — | 动态颜色 |
823
901
  | selectOption | SelectOption | — | 含 tableColumns 表格下拉 |
824
- | onChangeEventDebounceTime | number | — | change 防抖(ms) |
902
+ | inputNumber | InputNumber | — | 数字框配置 |
903
+ | onChangeEvent | Function | — | 值变化,签名见下 |
904
+ | onSearchEvent | Function | — | 下拉搜索 |
905
+ | onOpenChangeEvent | Function | — | 下拉展开/收起,回调 `(open, line)`,可按行请求 selectList |
906
+ | onChangeEventDebounceTime | number | — | change 防抖(ms),未配置或 0 为同步 |
907
+ | onSearchEventEventDebounceTime | number | — | search 防抖(ms) |
908
+ | onOpenChangeEventDebounceTime | number | — | openChange 防抖(ms) |
825
909
 
826
910
  #### FormLineType 枚举
827
911
 
@@ -840,6 +924,7 @@ selectOption: {
840
924
  ```typescript
841
925
  onChangeEvent: (value, line: FormGroup) => void
842
926
  onSearchEvent: (keyword, line?: FormGroup) => void
927
+ onOpenChangeEvent: (open: boolean, line: FormGroup) => void
843
928
  ```
844
929
 
845
930
  ### HdTableColumn(表格列)