fantasy-ngzorro 2.1.55 → 2.1.56

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 (36) hide show
  1. package/README.md +71 -2
  2. package/bundles/fantasy-ngzorro.umd.js +318 -8
  3. package/bundles/fantasy-ngzorro.umd.js.map +1 -1
  4. package/bundles/fantasy-ngzorro.umd.min.js +2 -2
  5. package/bundles/fantasy-ngzorro.umd.min.js.map +1 -1
  6. package/esm2015/fantasy-ngzorro.js +6 -5
  7. package/esm2015/hd-accessory-list/hd-accessory-list.component.js +169 -0
  8. package/esm2015/hd-accessory-list/hd-accessory-list.module.js +18 -0
  9. package/esm2015/hd-accessory-list/hd-accessory-list.service.js +50 -0
  10. package/esm2015/hd-component.module.js +3 -1
  11. package/esm2015/hd-table/hd-table.component.js +23 -4
  12. package/esm2015/hd-table/hd-table.service.js +7 -3
  13. package/esm2015/index.js +2 -2
  14. package/esm2015/public-api.js +3 -1
  15. package/esm5/fantasy-ngzorro.js +6 -5
  16. package/esm5/hd-accessory-list/hd-accessory-list.component.js +197 -0
  17. package/esm5/hd-accessory-list/hd-accessory-list.module.js +22 -0
  18. package/esm5/hd-accessory-list/hd-accessory-list.service.js +68 -0
  19. package/esm5/hd-component.module.js +3 -1
  20. package/esm5/hd-table/hd-table.component.js +33 -4
  21. package/esm5/hd-table/hd-table.service.js +7 -3
  22. package/esm5/index.js +2 -2
  23. package/esm5/public-api.js +3 -1
  24. package/fantasy-ngzorro.d.ts +4 -3
  25. package/fantasy-ngzorro.metadata.json +1 -1
  26. package/fesm2015/fantasy-ngzorro.js +262 -6
  27. package/fesm2015/fantasy-ngzorro.js.map +1 -1
  28. package/fesm5/fantasy-ngzorro.js +312 -6
  29. package/fesm5/fantasy-ngzorro.js.map +1 -1
  30. package/hd-accessory-list/hd-accessory-list.component.d.ts +25 -0
  31. package/hd-accessory-list/hd-accessory-list.module.d.ts +2 -0
  32. package/hd-accessory-list/hd-accessory-list.service.d.ts +16 -0
  33. package/hd-table/hd-table.component.d.ts +2 -0
  34. package/hd-table/hd-table.service.d.ts +2 -1
  35. package/package.json +2 -2
  36. package/public-api.d.ts +2 -0
package/README.md CHANGED
@@ -24,6 +24,7 @@
24
24
  | 14 | `hd-detail-lines` | 详情明细(前端分页 / 搜索) |
25
25
  | 15 | `hd-detail-lines-page` | 详情明细(服务端分页) |
26
26
  | 16 | `hd-log` | 操作日志 |
27
+ | 17 | `hd-accessory-list` | 附件列表(分组标签 + 可下载文件行) |
27
28
 
28
29
  > 配置类型(SelectOption、FormItem、HdTableColumn 等)见 [附录:公共配置类型](#附录公共配置类型)。
29
30
 
@@ -34,6 +35,7 @@
34
35
  | MC | 2023-2-10 | Readme 创建;按钮、按钮组、通用表格、筛选器、状态、详情头、详情单头、详情明细文档 |
35
36
  | MC | 2023-2-13 | 表单、明细表单、间隔、小标题文档;组件字段增加必填说明 |
36
37
  | — | 2026-5-20 | 补充 hd-table、hd-detail-lines-page 等组件;完善公共子类型(SelectOption、FormItem 等)文档 |
38
+ | — | 2026-9-14 | 新增 `hd-accessory-list` 附件列表组件(分组 name + accessoryList,点击下载/查看) |
37
39
  | — | 2026-6-23 | hd-table 状态列支持 `stateField` 自定义取值字段、`isState` 按列名取值;hd-form Input 支持 `prefix` / `prefixIcon`;hd-detail-lines-page 支持 `isCrossPageSelect` 跨页勾选开关 |
38
40
  | — | 2026-7-6 | hd-form 支持 `FormListType.Checkbox`(单个复选框 / 复选框组)及 `CheckboxOption` 配置 |
39
41
  | — | 2026-9-8 | hd-form 支持 `FormListType.RegionAddress`(省市区级联 + 详细地址,双 FormControl,固定占 2 列) |
@@ -43,6 +45,7 @@
43
45
  | — | 2026-8-25 | hd-status:`statusToColor` 按 sunan-server 业务状态枚举全量去重补充(排除银行 / AGV / HTTP StatusCode) |
44
46
  | — | 2026-8-21 | 分页选项统一增加 500 / 1000;`hd-table` / `hd-detail-lines` / `hd-detail-lines-page` 默认 `tablePageSize` 改为 100 |
45
47
  | — | 2026-9-14 | TotalOption 增加 `preserveNumber`(合计小数位数,不传默认 2);用于 `hd-detail-lines` / `hd-detail-lines-page` / `hd-form-lines` |
48
+ | — | 2026-9-14 | hd-table:普通列支持文案后挂 `btnList` 操作按钮;`OperateBtn.name` 支持按行动态文案 |
46
49
 
47
50
  ## 前言
48
51
 
@@ -322,6 +325,16 @@ tableCols: HdTableColumn[] = [{
322
325
  isState: true, // 按 hd-status 渲染,取值字段为 name(orderStatus)
323
326
  width: ColWidth.enumColWidth,
324
327
  render: (line) => line.orderStatusText
328
+ }, {
329
+ title: '业务数据自动上报',
330
+ name: 'autoReport',
331
+ width: 140,
332
+ render: (line) => (line.autoReport ? '是' : '否'),
333
+ // 普通列挂 btnList:文案后跟操作按钮(见 Figma 操作列单元格)
334
+ btnList: [{
335
+ name: (line) => (line.autoReport ? '解除' : '设置'),
336
+ click: (line) => { line.autoReport = !line.autoReport; }
337
+ }]
325
338
  }, {
326
339
  title: '操作',
327
340
  name: 'operate',
@@ -720,6 +733,61 @@ onDetailLinesPageSizeChange(pageSize: number) {
720
733
 
721
734
  ---
722
735
 
736
+ ## 17、附件列表(hd-accessory-list)
737
+
738
+ 只读附件分组列表:上方标签(如「营业执照扫描件:」),下方灰色文件行;每行最多 4 个,超出自动换行;点击文件名下载/查看。对齐 Figma「文件列表」样式。
739
+
740
+ ### 示例
741
+
742
+ ```html
743
+ <hd-accessory-list
744
+ [groups]="accessoryGroups"
745
+ (fileClick)="onAccessoryFileClick($event)">
746
+ </hd-accessory-list>
747
+ ```
748
+
749
+ ```typescript
750
+ import { HdAccessoryGroup } from 'fantasy-ngzorro';
751
+
752
+ accessoryGroups: HdAccessoryGroup[] = [
753
+ {
754
+ name: '营业执照扫描件',
755
+ accessoryList: [
756
+ { name: '文件名称.doc', path: 'https://oss.xxx.com/files/license.doc', size: 12 * 1024 * 1024 },
757
+ { name: '副本.pdf', path: 'https://oss.xxx.com/a.pdf' }, // size 可缺省
758
+ ],
759
+ },
760
+ ];
761
+
762
+ onAccessoryFileClick(e: { group: HdAccessoryGroup; file: any; path: string }) {
763
+ console.log('下载', e.path);
764
+ }
765
+ ```
766
+
767
+ | 参数 | 类型 | 默认值 | 说明 |
768
+ | ---- | ---- | ------ | ---- |
769
+ | groups | HdAccessoryGroup[] | [] | 分组数组,每项含 `name` + `accessoryList` |
770
+ | labelColon | boolean | true | 标签后自动补「:」 |
771
+ | autoOpen | boolean | true | 点击后默认 `window.open` 打开 |
772
+ | fileClick | EventEmitter | — | 点击附件回调 `{ group, file, path }` |
773
+
774
+ #### HdAccessoryGroup
775
+
776
+ | 参数 | 类型 | 说明 |
777
+ | ---- | ---- | ---- |
778
+ | name | string | 分组标签 |
779
+ | accessoryList | HdAccessoryFile[] | 附件列表 |
780
+
781
+ #### HdAccessoryFile
782
+
783
+ | 参数 | 类型 | 说明 |
784
+ | ---- | ---- | ---- |
785
+ | name | string | 展示文件名 |
786
+ | path | string | 完整下载/查看地址(由父组件直接传入) |
787
+ | size | number \| string | 可缺省;有值才展示。数字按字节格式化为 B/KB/MB,字符串原样展示 |
788
+
789
+ ---
790
+
723
791
  ## 附录:公共配置类型
724
792
 
725
793
  以下类型在 `hd-filter`、`hd-form`、`hd-form-lines`、`hd-table` 等组件中复用。
@@ -974,13 +1042,14 @@ onOpenChangeEvent: (open: boolean, line: FormGroup) => void
974
1042
  | isState | boolean | false | 是否按状态列渲染,取值字段为 `name` |
975
1043
  | stateField | string | — | 状态列取值字段(`name` 为 `state` 且未设置 `isState` 时生效,默认 `state`) |
976
1044
  | render / click | Function | — | 渲染 / 点击 |
977
- | btnList | OperateBtn[] | — | 操作按钮 |
1045
+ | canClick | (line) => boolean | — | 按行控制是否可点 |
1046
+ | btnList | OperateBtn[] | — | `title` 为「操作」时整列按钮;其他列时显示在单元格文案后的操作按钮 |
978
1047
 
979
1048
  #### OperateBtn(操作列按钮)
980
1049
 
981
1050
  | 参数 | 类型 | 默认值 | 说明 |
982
1051
  | ---- | ---- | ------ | ---- |
983
- | name | string | — | 按钮文案 |
1052
+ | name | string \| (line) => string | — | 按钮文案;支持按行动态(如 `是/否` 旁的「解除/设置」) |
984
1053
  | showConfirm | boolean \| (line) => boolean | false | 是否 popconfirm 确认;传函数时按行数据判断 |
985
1054
  | isRepeat | boolean | false | 与其他按钮互斥显示 |
986
1055
  | click | (line) => void | — | 点击回调 |
@@ -7692,7 +7692,8 @@
7692
7692
  this.align = 'left';
7693
7693
  this.fixed = null;
7694
7694
  // 右侧固定列偏移(其右侧已固定列宽之和)
7695
- this.btnList = [];
7695
+ this.btnList = []; // title 为「操作」时整列按钮;其他列时作为单元格文案后的操作按钮
7696
+ // title 为「操作」时整列按钮;其他列时作为单元格文案后的操作按钮
7696
7697
  this.isShow = true;
7697
7698
  this.canSort = false; // 是否可以排序
7698
7699
  // 是否可以排序
@@ -7749,7 +7750,10 @@
7749
7750
  return OperateBtn;
7750
7751
  }());
7751
7752
  if (false) {
7752
- /** @type {?} */
7753
+ /**
7754
+ * 按钮文案;支持按行动态,如 (line) => line.enabled ? '解除' : '设置'
7755
+ * @type {?}
7756
+ */
7753
7757
  OperateBtn.prototype.name;
7754
7758
  /** @type {?} */
7755
7759
  OperateBtn.prototype.showConfirm;
@@ -9140,7 +9144,7 @@
9140
9144
  */
9141
9145
  function (btn) {
9142
9146
  if (!btn.isRepeat) {
9143
- textStr_1 += btn.name;
9147
+ textStr_1 += typeof btn.name === "function" ? "操作" : btn.name;
9144
9148
  }
9145
9149
  }));
9146
9150
  /** @type {?} */
@@ -9195,6 +9199,35 @@
9195
9199
  }
9196
9200
  return !!btn.showConfirm;
9197
9201
  };
9202
+ /**
9203
+ * @param {?} btn
9204
+ * @param {?} data
9205
+ * @return {?}
9206
+ */
9207
+ HdTableComponent.prototype.getBtnName = /**
9208
+ * @param {?} btn
9209
+ * @param {?} data
9210
+ * @return {?}
9211
+ */
9212
+ function (btn, data) {
9213
+ if (typeof btn.name === "function") {
9214
+ return btn.name(data) || "";
9215
+ }
9216
+ return btn.name != null ? String(btn.name) : "";
9217
+ };
9218
+ /**
9219
+ * @param {?} btn
9220
+ * @param {?} data
9221
+ * @return {?}
9222
+ */
9223
+ HdTableComponent.prototype.isDangerBtn = /**
9224
+ * @param {?} btn
9225
+ * @param {?} data
9226
+ * @return {?}
9227
+ */
9228
+ function (btn, data) {
9229
+ return this.getBtnName(btn, data) === "删除";
9230
+ };
9198
9231
  /** 虚拟滚动开启时使用视口最大高度 */
9199
9232
  /**
9200
9233
  * 虚拟滚动开启时使用视口最大高度
@@ -9559,9 +9592,9 @@
9559
9592
  HdTableComponent.decorators = [
9560
9593
  { type: core.Component, args: [{
9561
9594
  selector: "hd-table",
9562
- template: "<ng-container>\n <hd-button-group>\n <ng-template #buttonGroupLeft>\n <ng-container *ngTemplateOutlet=\"tableLeftButton\"></ng-container>\n <hd-button *ngIf=\"showOperateColWarpButton\" type=\"default\" (click)=\"toggleShowDetail()\">{{showDetail ?\n '\u7F29\u7565\u663E\u793A': '\u5C55\u5F00\u663E\u793A'}}</hd-button>\n </ng-template>\n <ng-template #buttonGroupRight>\n <ng-container *ngTemplateOutlet=\"tableRightButton\"></ng-container>\n <span class=\"hd-table-col-settings\" nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"isDropdownVisible\" (click)=\"confirmDropdown()\" title=\"\u5217\u8BBE\u7F6E\">\n <svg class=\"hd-table-col-settings-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M4.92031 1.80756C5.02551 1.42884 5.37033 1.16675 5.76339 1.16675H8.23667C8.62973 1.16675 8.97455 1.42884 9.07975 1.80756L9.37802 2.88133L10.4571 2.60273C10.8377 2.50448 11.2371 2.67206 11.4336 3.01245L12.6703 5.15438C12.8668 5.49478 12.8122 5.92445 12.5369 6.20491L11.7561 7.00008L12.5369 7.79525C12.8122 8.07572 12.8668 8.50539 12.6703 8.84579L11.4336 10.9877C11.2371 11.3281 10.8377 11.4957 10.4571 11.3974L9.37802 11.1188L9.07975 12.1926C8.97455 12.5713 8.62973 12.8334 8.23667 12.8334H5.76339C5.37033 12.8334 5.02551 12.5713 4.92031 12.1926L4.62206 11.1189L3.54315 11.3974C3.16258 11.4957 2.76318 11.3281 2.56666 10.9877L1.33001 8.84579C1.13349 8.50539 1.18806 8.07572 1.46343 7.79525L2.24419 7.00008L1.46344 6.20491C1.18806 5.92445 1.13349 5.49478 1.33002 5.15438L2.56666 3.01245C2.76319 2.67206 3.16258 2.50448 3.54316 2.60273L4.62206 2.88127L4.92031 1.80756ZM4.54541 10.843L4.54552 10.8433L4.54541 10.843ZM5.98508 2.33341L5.66952 3.46945C5.54185 3.92906 5.06958 4.20173 4.60771 4.08249L3.46618 3.78778L2.45122 5.54572L3.2773 6.38705C3.6115 6.72742 3.6115 7.27275 3.2773 7.61312L2.45122 8.45444L3.46617 10.2124L4.60771 9.91768C5.06958 9.79844 5.54185 10.0711 5.66952 10.5307L5.98508 11.6667H8.01498L8.33056 10.5307C8.45823 10.071 8.9305 9.79838 9.39237 9.91762L10.5341 10.2124L11.5491 8.45444L10.723 7.61312C10.3888 7.27275 10.3888 6.72742 10.723 6.38705L11.5491 5.54572L10.5341 3.78778L9.39237 4.08254C8.9305 4.20178 8.45823 3.92912 8.33056 3.46951L8.01498 2.33341H5.98508ZM7.00003 5.83342C6.3557 5.83342 5.83337 6.35575 5.83337 7.00008C5.83337 7.64441 6.3557 8.16675 7.00003 8.16675C7.64436 8.16675 8.1667 7.64441 8.1667 7.00008C8.1667 6.35575 7.64436 5.83342 7.00003 5.83342ZM4.6667 7.00008C4.6667 5.71142 5.71137 4.66675 7.00003 4.66675C8.2887 4.66675 9.33337 5.71142 9.33337 7.00008C9.33337 8.28875 8.2887 9.33342 7.00003 9.33342C5.71137 9.33342 4.6667 8.28875 4.6667 7.00008Z\"\n fill=\"currentColor\" />\n </svg>\n </span>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"hd-table-col-settings-dropdown\">\n <div class=\"hd-table-col-settings-list\">\n <div *ngIf=\"showListNodes && nowListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"nowListNodes\" nzCheckable nzDraggable nzBlockNode\n nzShowExpand=\"false\" (nzCheckBoxChange)=\"checkAction($event)\" [nzBeforeDrop]=\"beforeDrop\"\n [nzTreeTemplate]=\"nzTreeTemplate\">\n </nz-tree>\n <ng-template #nzTreeTemplate let-node>\n <span\n class=\"ng-tns-c31-110 draggable ng-star-inserted ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"\n [title]=\"node.key\" draggable=\"true\" aria-grabbed=\"true\">\n <span class=\"ant-tree-title\">\n <div class=\"hd-table-tree-node\">\n <span>{{node.key}}</span>\n <div *ngIf=\"!node.origin.disabled\" class=\"hd-table-tree-node-img\">\n <i nz-icon nzType=\"caret-up\" nzTheme=\"outline\"></i>\n <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\"></i>\n </div>\n </div>\n </span>\n </span>\n </ng-template>\n </div>\n <div *ngIf=\"showListNodes && hideListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"hideListNodes\" nzCheckable nzShowExpand=\"false\"\n (nzCheckBoxChange)=\"checkAction($event)\">\n </nz-tree>\n </div>\n </div>\n <div class=\"hd-table-col-settings-footer\">\n <hd-button style=\"margin-right: 4px;\" type=\"default\" size=\"small\" (clickAction)=\"cancelDropdown()\">\u53D6\u6D88\n </hd-button>\n <hd-button type=\"primary\" size=\"small\" (clickAction)=\"submitGrids()\">\u5B8C\u6210</hd-button>\n </div>\n </div>\n </nz-dropdown-menu>\n </ng-template>\n </hd-button-group>\n <hd-space type=\"row\" size=\"12\"></hd-space>\n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n <hd-space *ngIf=\"tableTotal\" type=\"row\" size=\"12\"></hd-space>\n <nz-table *ngIf=\"showTable\" #hdTable class=\"hd-table-container\" [class.hd-table--virtual]=\"useVirtualScroll\"\n [class.hd-table--scroll-y]=\"!!(scroll && scroll.y)\" [class.hd-table--scroll-x]=\"!!(scroll && scroll.x)\"\n [nzScroll]=\"scroll\"\n nzShowSizeChanger nzShowQuickJumper nzFrontPagination=\"false\" nzSize=\"middle\" [nzData]=\"tableData.content\"\n [nzTotal]=\"tableData.totalElements\" [(nzPageIndex)]=\"tablePageIndex\" [nzLoading]=\"tableLoading\"\n [nzPageSizeOptions]=\"[ 10, 50, 100, 200, 500, 1000 ]\" [(nzPageSize)]=\"tablePageSize\" (nzPageSizeChange)=\"search(true)\"\n (nzPageIndexChange)=\"search(false)\" (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\"\n [nzShowTotal]=\"tableTotalTemplate\" [nzVirtualScroll]=\"useVirtualScroll\" [nzVirtualItemSize]=\"useVirtualScroll ? effectiveVirtualItemSize : 0\"\n [nzVirtualForTrackBy]=\"virtualTrackByRow\">\n <thead (nzSortChange)=\"sort($event)\" nzSingleSort>\n <tr>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [(nzChecked)]=\"isAllDisplayDataChecked\"\n [nzIndeterminate]=\"isIndeterminate\" (nzCheckedChange)=\"checkAll($event)\"></th>\n <ng-container *ngFor=\"let col of tableCols\">\n <th *ngIf=\"col.isShow\" [nzWidth]=\"col.width + 'px'\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\"\n [nzRight]=\"getRightSticky(col)\" nz-resizable nzBounds=\"window\" nzPreview\n (nzResizeEnd)=\"onResize($event, col)\" [nzShowSort]=\"col.canSort\" [nzSortKey]=\"col.name\"\n [nzSort]=\"getColSort(col)\">\n {{ col.title }}\n <nz-resize-handle nzDirection=\"right\">\n <div class=\"resize-trigger\"></div>\n </nz-resize-handle>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-template *ngIf=\"useVirtualScroll\" nz-virtual-scroll let-data let-index=\"index\">\n <tr class=\"hd-table-virtual-row\">\n <ng-container *ngTemplateOutlet=\"tableCells; context: { $implicit: data, index: index }\"></ng-container>\n </tr>\n </ng-template>\n <ng-container *ngIf=\"!useVirtualScroll\">\n <tr *ngFor=\"let data of hdTable.data; trackBy: trackByRow; index as i\">\n <ng-container *ngTemplateOutlet=\"tableCells; context: { $implicit: data, index: i }\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n <tfoot *ngIf=\"showTableTotal\">\n <tr class=\"hd-table-total\">\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let tableTotalOption of tableTotalOptionList\">\n <td>{{ tableTotalOption }}</td>\n </ng-container>\n </tr>\n </tfoot>\n <ng-template #tableTotalTemplate>\n \u5171 {{tableData.totalElements}} \u6761\u6570\u636E\n </ng-template>\n </nz-table>\n</ng-container>\n\n<ng-template #tableCells let-data let-index=\"index\">\n <td nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [nzChecked]=\"mapOfCheckedId[data[selectField]]\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngFor=\"let col of tableCols; trackBy: trackByCol\">\n <td *ngIf=\"col.isShow\" [ngStyle]=\"{'max-width': col.width + 'px'}\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\"\n [nzRight]=\"getRightSticky(col)\"\n [ngClass]=\"(col.canWarp && showDetail) ? 'common-td-wrap' : ''\">\n <ng-container *ngIf=\"col.title === '\u64CD\u4F5C';else notOperateTemplate\">\n <div class=\"common-btn-group\">\n <ng-container *ngFor=\"let btn of col.btnList\">\n <ng-container *ngIf=\"!needShowConfirm(btn, data);else showConfirmTemplate\">\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"btn.name === '\u5220\u9664' ? 'common-danger-btn': ''\"\n (click)=\"triggerEvent(btn.click || null, data)\">{{ btn.name }}</a>\n </ng-container>\n <ng-template #showConfirmTemplate>\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"btn.name === '\u5220\u9664' ? 'common-danger-btn': ''\" nz-popconfirm\n [nzPopconfirmTitle]=\"'\u786E\u8BA4\u8981' + btn.name + '\u5417?'\"\n (nzOnConfirm)=\"triggerEvent(btn.click || null, data)\">{{\n btn.name }}</a>\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #notOperateTemplate>\n <ng-container *ngIf=\"col.name === 'state' || col.isState;else otherTemplate\">\n <hd-status [status]=\"data[getStateField(col)]\">\n <ng-container *ngIf=\"(data | hdTableCell:col) as cell\">\n <span *ngIf=\"cell.overflow && !(col.canWarp && showDetail)\" class=\"hd-table-cell-ellipsis\" nz-tooltip\n [nzTooltipTitle]=\"cell.title\">{{ cell.display }}</span>\n <span *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\">{{ cell.display }}</span>\n </ng-container>\n </hd-status>\n </ng-container>\n <ng-template #otherTemplate>\n <ng-container *ngIf=\"col.click && (!col.canClick || col.canClick(data));else noClickTemplate\">\n <ng-container *ngIf=\"(data | hdTableCell:col) as cell\">\n <a *ngIf=\"cell.overflow && !(col.canWarp && showDetail)\" class=\"hd-table-cell-ellipsis\" nz-tooltip\n [nzTooltipTitle]=\"cell.title\"\n [ngStyle]=\"{'color': cell.isEmpty ? '#2A3634' : (col?.color ? col.color : null)}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ cell.display }}</a>\n <a *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': cell.isEmpty ? '#2A3634' : (col?.color ? col.color : null)}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ cell.display }}</a>\n </ng-container>\n </ng-container>\n <ng-template #noClickTemplate>\n <ng-container *ngIf=\"(data | hdTableCell:col) as cell\">\n <span *ngIf=\"cell.overflow && !(col.canWarp && showDetail)\" class=\"hd-table-cell-ellipsis\" nz-tooltip\n [nzTooltipTitle]=\"cell.title\"\n [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{ cell.display }}</span>\n <span *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{ cell.display }}</span>\n </ng-container>\n </ng-template>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n</ng-template>\n",
9595
+ template: "<ng-container>\n <hd-button-group>\n <ng-template #buttonGroupLeft>\n <ng-container *ngTemplateOutlet=\"tableLeftButton\"></ng-container>\n <hd-button *ngIf=\"showOperateColWarpButton\" type=\"default\" (click)=\"toggleShowDetail()\">{{showDetail ?\n '\u7F29\u7565\u663E\u793A': '\u5C55\u5F00\u663E\u793A'}}</hd-button>\n </ng-template>\n <ng-template #buttonGroupRight>\n <ng-container *ngTemplateOutlet=\"tableRightButton\"></ng-container>\n <span class=\"hd-table-col-settings\" nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"isDropdownVisible\" (click)=\"confirmDropdown()\" title=\"\u5217\u8BBE\u7F6E\">\n <svg class=\"hd-table-col-settings-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M4.92031 1.80756C5.02551 1.42884 5.37033 1.16675 5.76339 1.16675H8.23667C8.62973 1.16675 8.97455 1.42884 9.07975 1.80756L9.37802 2.88133L10.4571 2.60273C10.8377 2.50448 11.2371 2.67206 11.4336 3.01245L12.6703 5.15438C12.8668 5.49478 12.8122 5.92445 12.5369 6.20491L11.7561 7.00008L12.5369 7.79525C12.8122 8.07572 12.8668 8.50539 12.6703 8.84579L11.4336 10.9877C11.2371 11.3281 10.8377 11.4957 10.4571 11.3974L9.37802 11.1188L9.07975 12.1926C8.97455 12.5713 8.62973 12.8334 8.23667 12.8334H5.76339C5.37033 12.8334 5.02551 12.5713 4.92031 12.1926L4.62206 11.1189L3.54315 11.3974C3.16258 11.4957 2.76318 11.3281 2.56666 10.9877L1.33001 8.84579C1.13349 8.50539 1.18806 8.07572 1.46343 7.79525L2.24419 7.00008L1.46344 6.20491C1.18806 5.92445 1.13349 5.49478 1.33002 5.15438L2.56666 3.01245C2.76319 2.67206 3.16258 2.50448 3.54316 2.60273L4.62206 2.88127L4.92031 1.80756ZM4.54541 10.843L4.54552 10.8433L4.54541 10.843ZM5.98508 2.33341L5.66952 3.46945C5.54185 3.92906 5.06958 4.20173 4.60771 4.08249L3.46618 3.78778L2.45122 5.54572L3.2773 6.38705C3.6115 6.72742 3.6115 7.27275 3.2773 7.61312L2.45122 8.45444L3.46617 10.2124L4.60771 9.91768C5.06958 9.79844 5.54185 10.0711 5.66952 10.5307L5.98508 11.6667H8.01498L8.33056 10.5307C8.45823 10.071 8.9305 9.79838 9.39237 9.91762L10.5341 10.2124L11.5491 8.45444L10.723 7.61312C10.3888 7.27275 10.3888 6.72742 10.723 6.38705L11.5491 5.54572L10.5341 3.78778L9.39237 4.08254C8.9305 4.20178 8.45823 3.92912 8.33056 3.46951L8.01498 2.33341H5.98508ZM7.00003 5.83342C6.3557 5.83342 5.83337 6.35575 5.83337 7.00008C5.83337 7.64441 6.3557 8.16675 7.00003 8.16675C7.64436 8.16675 8.1667 7.64441 8.1667 7.00008C8.1667 6.35575 7.64436 5.83342 7.00003 5.83342ZM4.6667 7.00008C4.6667 5.71142 5.71137 4.66675 7.00003 4.66675C8.2887 4.66675 9.33337 5.71142 9.33337 7.00008C9.33337 8.28875 8.2887 9.33342 7.00003 9.33342C5.71137 9.33342 4.6667 8.28875 4.6667 7.00008Z\"\n fill=\"currentColor\" />\n </svg>\n </span>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"hd-table-col-settings-dropdown\">\n <div class=\"hd-table-col-settings-list\">\n <div *ngIf=\"showListNodes && nowListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"nowListNodes\" nzCheckable nzDraggable nzBlockNode\n nzShowExpand=\"false\" (nzCheckBoxChange)=\"checkAction($event)\" [nzBeforeDrop]=\"beforeDrop\"\n [nzTreeTemplate]=\"nzTreeTemplate\">\n </nz-tree>\n <ng-template #nzTreeTemplate let-node>\n <span\n class=\"ng-tns-c31-110 draggable ng-star-inserted ant-tree-node-content-wrapper ant-tree-node-content-wrapper-close\"\n [title]=\"node.key\" draggable=\"true\" aria-grabbed=\"true\">\n <span class=\"ant-tree-title\">\n <div class=\"hd-table-tree-node\">\n <span>{{node.key}}</span>\n <div *ngIf=\"!node.origin.disabled\" class=\"hd-table-tree-node-img\">\n <i nz-icon nzType=\"caret-up\" nzTheme=\"outline\"></i>\n <i nz-icon nzType=\"caret-down\" nzTheme=\"outline\"></i>\n </div>\n </div>\n </span>\n </span>\n </ng-template>\n </div>\n <div *ngIf=\"showListNodes && hideListNodes.length > 0\" nz-menu style=\"padding: 5px 10px;\">\n <nz-tree *ngIf=\"showListNodes\" [nzData]=\"hideListNodes\" nzCheckable nzShowExpand=\"false\"\n (nzCheckBoxChange)=\"checkAction($event)\">\n </nz-tree>\n </div>\n </div>\n <div class=\"hd-table-col-settings-footer\">\n <hd-button style=\"margin-right: 4px;\" type=\"default\" size=\"small\" (clickAction)=\"cancelDropdown()\">\u53D6\u6D88\n </hd-button>\n <hd-button type=\"primary\" size=\"small\" (clickAction)=\"submitGrids()\">\u5B8C\u6210</hd-button>\n </div>\n </div>\n </nz-dropdown-menu>\n </ng-template>\n </hd-button-group>\n <hd-space type=\"row\" size=\"12\"></hd-space>\n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n <hd-space *ngIf=\"tableTotal\" type=\"row\" size=\"12\"></hd-space>\n <nz-table *ngIf=\"showTable\" #hdTable class=\"hd-table-container\" [class.hd-table--virtual]=\"useVirtualScroll\"\n [class.hd-table--scroll-y]=\"!!(scroll && scroll.y)\" [class.hd-table--scroll-x]=\"!!(scroll && scroll.x)\"\n [nzScroll]=\"scroll\"\n nzShowSizeChanger nzShowQuickJumper nzFrontPagination=\"false\" nzSize=\"middle\" [nzData]=\"tableData.content\"\n [nzTotal]=\"tableData.totalElements\" [(nzPageIndex)]=\"tablePageIndex\" [nzLoading]=\"tableLoading\"\n [nzPageSizeOptions]=\"[ 10, 50, 100, 200, 500, 1000 ]\" [(nzPageSize)]=\"tablePageSize\" (nzPageSizeChange)=\"search(true)\"\n (nzPageIndexChange)=\"search(false)\" (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\"\n [nzShowTotal]=\"tableTotalTemplate\" [nzVirtualScroll]=\"useVirtualScroll\" [nzVirtualItemSize]=\"useVirtualScroll ? effectiveVirtualItemSize : 0\"\n [nzVirtualForTrackBy]=\"virtualTrackByRow\">\n <thead (nzSortChange)=\"sort($event)\" nzSingleSort>\n <tr>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [(nzChecked)]=\"isAllDisplayDataChecked\"\n [nzIndeterminate]=\"isIndeterminate\" (nzCheckedChange)=\"checkAll($event)\"></th>\n <ng-container *ngFor=\"let col of tableCols\">\n <th *ngIf=\"col.isShow\" [nzWidth]=\"col.width + 'px'\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\"\n [nzRight]=\"getRightSticky(col)\" nz-resizable nzBounds=\"window\" nzPreview\n (nzResizeEnd)=\"onResize($event, col)\" [nzShowSort]=\"col.canSort\" [nzSortKey]=\"col.name\"\n [nzSort]=\"getColSort(col)\">\n {{ col.title }}\n <nz-resize-handle nzDirection=\"right\">\n <div class=\"resize-trigger\"></div>\n </nz-resize-handle>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-template *ngIf=\"useVirtualScroll\" nz-virtual-scroll let-data let-index=\"index\">\n <tr class=\"hd-table-virtual-row\">\n <ng-container *ngTemplateOutlet=\"tableCells; context: { $implicit: data, index: index }\"></ng-container>\n </tr>\n </ng-template>\n <ng-container *ngIf=\"!useVirtualScroll\">\n <tr *ngFor=\"let data of hdTable.data; trackBy: trackByRow; index as i\">\n <ng-container *ngTemplateOutlet=\"tableCells; context: { $implicit: data, index: i }\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n <tfoot *ngIf=\"showTableTotal\">\n <tr class=\"hd-table-total\">\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let tableTotalOption of tableTotalOptionList\">\n <td>{{ tableTotalOption }}</td>\n </ng-container>\n </tr>\n </tfoot>\n <ng-template #tableTotalTemplate>\n \u5171 {{tableData.totalElements}} \u6761\u6570\u636E\n </ng-template>\n </nz-table>\n</ng-container>\n\n<ng-template #tableCells let-data let-index=\"index\">\n <td nzLeft=\"0px\" *ngIf=\"showSelected\" nzShowCheckbox [nzChecked]=\"mapOfCheckedId[data[selectField]]\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngFor=\"let col of tableCols; trackBy: trackByCol\">\n <td *ngIf=\"col.isShow\" [ngStyle]=\"{'max-width': col.width + 'px'}\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\"\n [nzRight]=\"getRightSticky(col)\"\n [ngClass]=\"(col.canWarp && showDetail) ? 'common-td-wrap' : ''\">\n <ng-container *ngIf=\"col.title === '\u64CD\u4F5C';else notOperateTemplate\">\n <div class=\"common-btn-group\">\n <ng-container *ngFor=\"let btn of col.btnList\">\n <ng-container *ngIf=\"!needShowConfirm(btn, data);else showConfirmTemplate\">\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"isDangerBtn(btn, data) ? 'common-danger-btn': ''\"\n (click)=\"triggerEvent(btn.click || null, data)\">{{ getBtnName(btn, data) }}</a>\n </ng-container>\n <ng-template #showConfirmTemplate>\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"isDangerBtn(btn, data) ? 'common-danger-btn': ''\" nz-popconfirm\n [nzPopconfirmTitle]=\"'\u786E\u8BA4\u8981' + getBtnName(btn, data) + '\u5417?'\"\n (nzOnConfirm)=\"triggerEvent(btn.click || null, data)\">{{\n getBtnName(btn, data) }}</a>\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #notOperateTemplate>\n <div [class.hd-table-cell-with-actions]=\"col.btnList && col.btnList.length\">\n <div class=\"hd-table-cell-value\">\n <ng-container *ngIf=\"col.name === 'state' || col.isState;else otherTemplate\">\n <hd-status [status]=\"data[getStateField(col)]\">\n <ng-container *ngIf=\"(data | hdTableCell:col) as cell\">\n <span *ngIf=\"cell.overflow && !(col.canWarp && showDetail)\" class=\"hd-table-cell-ellipsis\" nz-tooltip\n [nzTooltipTitle]=\"cell.title\">{{ cell.display }}</span>\n <span *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\">{{ cell.display }}</span>\n </ng-container>\n </hd-status>\n </ng-container>\n <ng-template #otherTemplate>\n <ng-container *ngIf=\"col.click && (!col.canClick || col.canClick(data));else noClickTemplate\">\n <ng-container *ngIf=\"(data | hdTableCell:col) as cell\">\n <a *ngIf=\"cell.overflow && !(col.canWarp && showDetail)\" class=\"hd-table-cell-ellipsis\" nz-tooltip\n [nzTooltipTitle]=\"cell.title\"\n [ngStyle]=\"{'color': cell.isEmpty ? '#2A3634' : (col?.color ? col.color : null)}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ cell.display }}</a>\n <a *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': cell.isEmpty ? '#2A3634' : (col?.color ? col.color : null)}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ cell.display }}</a>\n </ng-container>\n </ng-container>\n <ng-template #noClickTemplate>\n <ng-container *ngIf=\"(data | hdTableCell:col) as cell\">\n <span *ngIf=\"cell.overflow && !(col.canWarp && showDetail)\" class=\"hd-table-cell-ellipsis\" nz-tooltip\n [nzTooltipTitle]=\"cell.title\"\n [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{ cell.display }}</span>\n <span *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{ cell.display }}</span>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n <div class=\"common-btn-group hd-table-cell-actions\" *ngIf=\"col.btnList && col.btnList.length\">\n <ng-container *ngFor=\"let btn of col.btnList\">\n <ng-container *ngIf=\"!needShowConfirm(btn, data);else cellActionConfirmTpl\">\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"isDangerBtn(btn, data) ? 'common-danger-btn': ''\"\n (click)=\"triggerEvent(btn.click || null, data)\">{{ getBtnName(btn, data) }}</a>\n </ng-container>\n <ng-template #cellActionConfirmTpl>\n <a *ngIf=\"btn.permission ? btn.permission(data) : true\"\n [class]=\"isDangerBtn(btn, data) ? 'common-danger-btn': ''\" nz-popconfirm\n [nzPopconfirmTitle]=\"'\u786E\u8BA4\u8981' + getBtnName(btn, data) + '\u5417?'\"\n (nzOnConfirm)=\"triggerEvent(btn.click || null, data)\">{{\n getBtnName(btn, data) }}</a>\n </ng-template>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </td>\n </ng-container>\n</ng-template>\n",
9563
9596
  changeDetection: core.ChangeDetectionStrategy.OnPush,
9564
- styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset;padding:0 6px!important}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}::ng-deep .hd-table-container .ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-th-right-sticky{z-index:2;transform:translateZ(0)}::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-right-sticky{background:#f5f8f6!important}::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-right-sticky{background:#fff}::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-right-sticky{background:#ecf8f1!important}::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-th-right-sticky{box-shadow:none!important}::ng-deep .hd-table-container .ant-table-fixed-right{right:0!important}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:14px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-pagination-options .ant-select,::ng-deep .ant-pagination-options .ant-select-selection--single{min-width:100px}::ng-deep .ant-pagination-options-size-changer.ant-select{min-width:100px}::ng-deep .ant-time-picker{width:100%}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:var(--hd-cascader-menu-min-width,auto);max-width:560px}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child .ant-cascader-menu-item{white-space:nowrap}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.nz-resizable-preview{position:absolute;top:0;left:0;z-index:8;border:1px dashed #d1d1d1}.nz-resizable-handle{position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:9}.nz-resizable-handle-top{width:100%;height:10px;top:-5px;left:0}.nz-resizable-handle-right{height:100%}.nz-resizable-handle-bottom{width:100%;height:10px;bottom:-5px;left:0}.nz-resizable-handle-left{width:10px;height:100%;top:0;left:-5px}.nz-resizable-handle-topRight{width:20px;height:20px;top:-5px;right:-5px;z-index:10}.nz-resizable-handle-bottomRight{width:20px;height:20px;right:-5px;bottom:-5px;z-index:10}.nz-resizable-handle-bottomLeft{width:20px;height:20px;bottom:-5px;left:-5px;z-index:10}.nz-resizable-handle-topLeft{width:20px;height:20px;top:-5px;left:-5px;z-index:10}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottom,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-top{cursor:row-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-left,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-right{cursor:col-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomRight,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topLeft{cursor:nwse-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomLeft,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topRight{cursor:nesw-resize}.hd-table-col-settings{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:32px;height:32px;padding:0;margin-left:12px;cursor:pointer;color:#2a3634;background:0 0;border:1px solid #e5e6eb;border-radius:4px;vertical-align:middle;flex-shrink:0}.hd-table-col-settings:hover{color:#20b95d;background:#f5f8f6;border-color:#20b95d}.hd-table-col-settings .hd-table-col-settings-icon{display:block;width:14px;height:14px;flex-shrink:0}.hd-table-col-settings-dropdown{background:#fff;border:1px solid #e5e6eb;border-radius:4px;box-shadow:0 6px 16px rgba(0,0,0,.08),0 3px 6px rgba(0,0,0,.06);overflow:hidden}.hd-table-col-settings-list{max-height:400px;overflow-y:auto}.hd-table-col-settings-footer{text-align:right;background:#fff;padding:4px;border-top:1px solid #f0f0f0}.hd-table-container ::ng-deep .ant-pagination-options-quick-jumper input{border-radius:2px;border:1px solid #d9d9d9}.hd-table-container ::ng-deep .ant-pagination-options .ant-select-selection{border-radius:2px}.hd-table-container ::ng-deep .ant-table-thead>tr>th{border-bottom:1px solid #ecf1ed;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .ant-table-tbody>tr>td{border-bottom:1px solid #ecf1ed;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .hd-table-total>td{border:0!important}.hd-table-container ::ng-deep cdk-virtual-scroll-viewport.ant-table-body .hd-table-virtual-row>td{box-sizing:border-box}.hd-table-container:not(.hd-table--scroll-y):not(.hd-table--scroll-x) ::ng-deep .ant-table-body{max-height:none!important;overflow-y:visible!important}::ng-deep .ant-dropdown-menu{border-radius:0}::ng-deep .ant-dropdown{margin-top:8px!important}.common-td-wrap{white-space:normal!important;word-break:break-all}.hd-table-cell-ellipsis{display:block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.nz-resizable-preview{border-width:0 1px 0 0}.resize-trigger{width:10px;height:15px;position:relative;top:calc((100% - 15px)/ 2)}.resize-trigger::after{position:absolute;top:calc((100% - 15px)/ 2);left:0;background:#d5d5d5;content:'';width:1px;height:15px;z-index:1}.nz-resizable-handle-right{position:absolute;width:10px;top:0;right:-5px;z-index:inherit}::ng-deep .ant-table-th-right-sticky .nz-resizable-handle-right{right:0}.hd-table-tree-node{display:inline-flex;align-items:center;padding-right:10px}.hd-table-tree-node .hd-table-tree-node-img{display:flex;flex-direction:column;position:absolute;right:0;margin-top:-2.5px}.hd-table-tree-node .hd-table-tree-node-img i{opacity:.3}.hd-table-tree-node .hd-table-tree-node-img i:last-child{margin-top:-5px}img{width:20px;height:20px}.ant-table-th-left-sticky{z-index:2}::ng-deep .ant-table-thead>tr>th .ant-table-header-column .ant-table-column-sorters>:not(.ant-table-column-sorter){position:unset}"]
9597
+ styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset;padding:0 6px!important}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}::ng-deep .hd-table-container .ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-th-right-sticky{z-index:2;transform:translateZ(0)}::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-right-sticky{background:#f5f8f6!important}::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-right-sticky{background:#fff}::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-right-sticky{background:#ecf8f1!important}::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-th-right-sticky{box-shadow:none!important}::ng-deep .hd-table-container .ant-table-fixed-right{right:0!important}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:14px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-pagination-options .ant-select,::ng-deep .ant-pagination-options .ant-select-selection--single{min-width:100px}::ng-deep .ant-pagination-options-size-changer.ant-select{min-width:100px}::ng-deep .ant-time-picker{width:100%}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:var(--hd-cascader-menu-min-width,auto);max-width:560px}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child .ant-cascader-menu-item{white-space:nowrap}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.nz-resizable-preview{position:absolute;top:0;left:0;z-index:8;border:1px dashed #d1d1d1}.nz-resizable-handle{position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:9}.nz-resizable-handle-top{width:100%;height:10px;top:-5px;left:0}.nz-resizable-handle-right{height:100%}.nz-resizable-handle-bottom{width:100%;height:10px;bottom:-5px;left:0}.nz-resizable-handle-left{width:10px;height:100%;top:0;left:-5px}.nz-resizable-handle-topRight{width:20px;height:20px;top:-5px;right:-5px;z-index:10}.nz-resizable-handle-bottomRight{width:20px;height:20px;right:-5px;bottom:-5px;z-index:10}.nz-resizable-handle-bottomLeft{width:20px;height:20px;bottom:-5px;left:-5px;z-index:10}.nz-resizable-handle-topLeft{width:20px;height:20px;top:-5px;left:-5px;z-index:10}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottom,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-top{cursor:row-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-left,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-right{cursor:col-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomRight,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topLeft{cursor:nwse-resize}.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-bottomLeft,.nz-resizable:not(.nz-resizable-resizing) .nz-resizable-handle-topRight{cursor:nesw-resize}.hd-table-col-settings{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:32px;height:32px;padding:0;margin-left:12px;cursor:pointer;color:#2a3634;background:0 0;border:1px solid #e5e6eb;border-radius:4px;vertical-align:middle;flex-shrink:0}.hd-table-col-settings:hover{color:#20b95d;background:#f5f8f6;border-color:#20b95d}.hd-table-col-settings .hd-table-col-settings-icon{display:block;width:14px;height:14px;flex-shrink:0}.hd-table-cell-with-actions{display:inline-flex;flex-wrap:wrap;align-items:center;-moz-column-gap:12px;column-gap:12px;row-gap:6px;max-width:100%}.hd-table-cell-with-actions .hd-table-cell-value{min-width:0}.hd-table-cell-with-actions .hd-table-cell-actions{flex-shrink:0}.hd-table-col-settings-dropdown{background:#fff;border:1px solid #e5e6eb;border-radius:4px;box-shadow:0 6px 16px rgba(0,0,0,.08),0 3px 6px rgba(0,0,0,.06);overflow:hidden}.hd-table-col-settings-list{max-height:400px;overflow-y:auto}.hd-table-col-settings-footer{text-align:right;background:#fff;padding:4px;border-top:1px solid #f0f0f0}.hd-table-container ::ng-deep .ant-pagination-options-quick-jumper input{border-radius:2px;border:1px solid #d9d9d9}.hd-table-container ::ng-deep .ant-pagination-options .ant-select-selection{border-radius:2px}.hd-table-container ::ng-deep .ant-table-thead>tr>th{border-bottom:1px solid #ecf1ed;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .ant-table-tbody>tr>td{border-bottom:1px solid #ecf1ed;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.hd-table-container ::ng-deep .hd-table-total>td{border:0!important}.hd-table-container ::ng-deep cdk-virtual-scroll-viewport.ant-table-body .hd-table-virtual-row>td{box-sizing:border-box}.hd-table-container:not(.hd-table--scroll-y):not(.hd-table--scroll-x) ::ng-deep .ant-table-body{max-height:none!important;overflow-y:visible!important}::ng-deep .ant-dropdown-menu{border-radius:0}::ng-deep .ant-dropdown{margin-top:8px!important}.common-td-wrap{white-space:normal!important;word-break:break-all}.hd-table-cell-ellipsis{display:block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.nz-resizable-preview{border-width:0 1px 0 0}.resize-trigger{width:10px;height:15px;position:relative;top:calc((100% - 15px)/ 2)}.resize-trigger::after{position:absolute;top:calc((100% - 15px)/ 2);left:0;background:#d5d5d5;content:'';width:1px;height:15px;z-index:1}.nz-resizable-handle-right{position:absolute;width:10px;top:0;right:-5px;z-index:inherit}::ng-deep .ant-table-th-right-sticky .nz-resizable-handle-right{right:0}.hd-table-tree-node{display:inline-flex;align-items:center;padding-right:10px}.hd-table-tree-node .hd-table-tree-node-img{display:flex;flex-direction:column;position:absolute;right:0;margin-top:-2.5px}.hd-table-tree-node .hd-table-tree-node-img i{opacity:.3}.hd-table-tree-node .hd-table-tree-node-img i:last-child{margin-top:-5px}img{width:20px;height:20px}.ant-table-th-left-sticky{z-index:2}::ng-deep .ant-table-thead>tr>th .ant-table-header-column .ant-table-column-sorters>:not(.ant-table-column-sorter){position:unset}"]
9565
9598
  }] }
9566
9599
  ];
9567
9600
  /** @nocollapse */
@@ -9870,6 +9903,218 @@
9870
9903
  return HdTipModule;
9871
9904
  }());
9872
9905
 
9906
+ /**
9907
+ * @fileoverview added by tsickle
9908
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9909
+ */
9910
+ var HdAccessoryListComponent = /** @class */ (function () {
9911
+ function HdAccessoryListComponent() {
9912
+ var _this = this;
9913
+ /**
9914
+ * 分组列表:每项含 name + accessoryList
9915
+ */
9916
+ this.groups = [];
9917
+ /**
9918
+ * 分组标签后是否自动加冒号,默认 true
9919
+ */
9920
+ this.labelColon = true;
9921
+ /**
9922
+ * 点击附件时是否默认 window.open 下载/查看,默认 true
9923
+ */
9924
+ this.autoOpen = true;
9925
+ /**
9926
+ * 点击附件回调(在 autoOpen 之前触发)
9927
+ */
9928
+ this.fileClick = new core.EventEmitter();
9929
+ // 用箭头函数:ngFor 的 trackBy 调用时不会绑定组件 this
9930
+ this.trackByGroup = (/**
9931
+ * @param {?} index
9932
+ * @param {?} group
9933
+ * @return {?}
9934
+ */
9935
+ function (index, group) {
9936
+ return (group && group.name) || index;
9937
+ });
9938
+ this.trackByFile = (/**
9939
+ * @param {?} index
9940
+ * @param {?} file
9941
+ * @return {?}
9942
+ */
9943
+ function (index, file) {
9944
+ return _this.getFilePath(file) || _this.getFileName(file) || index;
9945
+ });
9946
+ }
9947
+ /**
9948
+ * @return {?}
9949
+ */
9950
+ HdAccessoryListComponent.prototype.ngOnInit = /**
9951
+ * @return {?}
9952
+ */
9953
+ function () { };
9954
+ /**
9955
+ * @param {?} file
9956
+ * @return {?}
9957
+ */
9958
+ HdAccessoryListComponent.prototype.getFileName = /**
9959
+ * @param {?} file
9960
+ * @return {?}
9961
+ */
9962
+ function (file) {
9963
+ if (!file || file.name == null) {
9964
+ return "";
9965
+ }
9966
+ return String(file.name);
9967
+ };
9968
+ /**
9969
+ * @param {?} file
9970
+ * @return {?}
9971
+ */
9972
+ HdAccessoryListComponent.prototype.getFilePath = /**
9973
+ * @param {?} file
9974
+ * @return {?}
9975
+ */
9976
+ function (file) {
9977
+ if (!file || file.path == null) {
9978
+ return "";
9979
+ }
9980
+ return String(file.path);
9981
+ };
9982
+ /**
9983
+ * @param {?} file
9984
+ * @return {?}
9985
+ */
9986
+ HdAccessoryListComponent.prototype.getFileSizeText = /**
9987
+ * @param {?} file
9988
+ * @return {?}
9989
+ */
9990
+ function (file) {
9991
+ if (!file) {
9992
+ return "";
9993
+ }
9994
+ /** @type {?} */
9995
+ var raw = file.size;
9996
+ if (raw == null || raw === "") {
9997
+ return "";
9998
+ }
9999
+ if (typeof raw === "string") {
10000
+ return raw;
10001
+ }
10002
+ /** @type {?} */
10003
+ var bytes = Number(raw);
10004
+ if (isNaN(bytes) || bytes < 0) {
10005
+ return "";
10006
+ }
10007
+ if (bytes < 1024) {
10008
+ return bytes + " B";
10009
+ }
10010
+ if (bytes < 1024 * 1024) {
10011
+ return (bytes / 1024).toFixed(bytes < 10 * 1024 ? 1 : 0) + " KB";
10012
+ }
10013
+ return ((bytes / (1024 * 1024)).toFixed(bytes < 10 * 1024 * 1024 ? 1 : 0) + " MB");
10014
+ };
10015
+ /**
10016
+ * @param {?} group
10017
+ * @return {?}
10018
+ */
10019
+ HdAccessoryListComponent.prototype.getLabelText = /**
10020
+ * @param {?} group
10021
+ * @return {?}
10022
+ */
10023
+ function (group) {
10024
+ /** @type {?} */
10025
+ var name = group && group.name != null ? String(group.name) : "";
10026
+ if (!name) {
10027
+ return "";
10028
+ }
10029
+ if (!this.labelColon) {
10030
+ return name;
10031
+ }
10032
+ return /[::]$/.test(name) ? name : name + ":";
10033
+ };
10034
+ /**
10035
+ * @param {?} group
10036
+ * @param {?} file
10037
+ * @param {?} event
10038
+ * @return {?}
10039
+ */
10040
+ HdAccessoryListComponent.prototype.onFileClick = /**
10041
+ * @param {?} group
10042
+ * @param {?} file
10043
+ * @param {?} event
10044
+ * @return {?}
10045
+ */
10046
+ function (group, file, event) {
10047
+ if (event) {
10048
+ event.preventDefault();
10049
+ }
10050
+ /** @type {?} */
10051
+ var path = this.getFilePath(file);
10052
+ this.fileClick.emit({ group: group, file: file, path: path });
10053
+ if (this.autoOpen && path) {
10054
+ window.open(path, "_blank");
10055
+ }
10056
+ };
10057
+ HdAccessoryListComponent.decorators = [
10058
+ { type: core.Component, args: [{
10059
+ selector: "hd-accessory-list",
10060
+ template: "<div class=\"hd-accessory-list\" *ngIf=\"groups && groups.length\">\n <div class=\"hd-accessory-group\" *ngFor=\"let group of groups; trackBy: trackByGroup\">\n <div class=\"hd-accessory-group-label\" *ngIf=\"getLabelText(group)\">\n {{ getLabelText(group) }}\n </div>\n <div class=\"hd-accessory-files\" *ngIf=\"group.accessoryList && group.accessoryList.length\">\n <a class=\"hd-accessory-file\" *ngFor=\"let file of group.accessoryList; trackBy: trackByFile\"\n href=\"javascript:void(0)\"\n (click)=\"onFileClick(group, file, $event)\"\n [attr.title]=\"getFileName(file)\">\n <span class=\"hd-accessory-file-main\">\n <i nz-icon class=\"hd-accessory-file-icon\" nzType=\"link\" nzTheme=\"outline\"></i>\n <span class=\"hd-accessory-file-name\">{{ getFileName(file) || '\u672A\u547D\u540D\u6587\u4EF6' }}</span>\n </span>\n <span class=\"hd-accessory-file-size\" *ngIf=\"getFileSizeText(file)\">{{ getFileSizeText(file) }}</span>\n </a>\n </div>\n </div>\n</div>\n",
10061
+ styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}::ng-deep .hd-table-container .ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-th-right-sticky{z-index:2;transform:translateZ(0)}::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-right-sticky{background:#f5f8f6!important}::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-right-sticky{background:#fff}::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-right-sticky{background:#ecf8f1!important}::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-th-right-sticky{box-shadow:none!important}::ng-deep .hd-table-container .ant-table-fixed-right{right:0!important}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:14px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-pagination-options .ant-select,::ng-deep .ant-pagination-options .ant-select-selection--single{min-width:100px}::ng-deep .ant-pagination-options-size-changer.ant-select{min-width:100px}::ng-deep .ant-time-picker{width:100%}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:var(--hd-cascader-menu-min-width,auto);max-width:560px}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child .ant-cascader-menu-item{white-space:nowrap}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.hd-accessory-list{width:100%;font-size:14px;line-height:22px}.hd-accessory-list .hd-accessory-group+.hd-accessory-group{margin-top:16px}.hd-accessory-list .hd-accessory-group-label{padding:5px 0;min-height:32px;box-sizing:border-box;color:#4e5369;line-height:22px}.hd-accessory-list .hd-accessory-files{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.hd-accessory-list .hd-accessory-file{display:flex;align-items:center;gap:12px;min-width:0;padding:7px 12px;box-sizing:border-box;background:#f7f8fa;border-radius:4px;color:#20b95d;text-decoration:none;cursor:pointer}.hd-accessory-list .hd-accessory-file:hover .hd-accessory-file-icon,.hd-accessory-list .hd-accessory-file:hover .hd-accessory-file-name{color:#20bd62}.hd-accessory-list .hd-accessory-file-main{display:flex;flex:1;min-width:0;align-items:center;gap:4px}.hd-accessory-list .hd-accessory-file-icon{flex-shrink:0;font-size:16px;color:inherit}.hd-accessory-list .hd-accessory-file-name{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:14px;line-height:22px}.hd-accessory-list .hd-accessory-file-size{flex-shrink:0;color:#8d918f;font-size:12px;line-height:18px}"]
10062
+ }] }
10063
+ ];
10064
+ /** @nocollapse */
10065
+ HdAccessoryListComponent.ctorParameters = function () { return []; };
10066
+ HdAccessoryListComponent.propDecorators = {
10067
+ groups: [{ type: core.Input }],
10068
+ labelColon: [{ type: core.Input }],
10069
+ autoOpen: [{ type: core.Input }],
10070
+ fileClick: [{ type: core.Output }]
10071
+ };
10072
+ return HdAccessoryListComponent;
10073
+ }());
10074
+ if (false) {
10075
+ /**
10076
+ * 分组列表:每项含 name + accessoryList
10077
+ * @type {?}
10078
+ */
10079
+ HdAccessoryListComponent.prototype.groups;
10080
+ /**
10081
+ * 分组标签后是否自动加冒号,默认 true
10082
+ * @type {?}
10083
+ */
10084
+ HdAccessoryListComponent.prototype.labelColon;
10085
+ /**
10086
+ * 点击附件时是否默认 window.open 下载/查看,默认 true
10087
+ * @type {?}
10088
+ */
10089
+ HdAccessoryListComponent.prototype.autoOpen;
10090
+ /**
10091
+ * 点击附件回调(在 autoOpen 之前触发)
10092
+ * @type {?}
10093
+ */
10094
+ HdAccessoryListComponent.prototype.fileClick;
10095
+ /** @type {?} */
10096
+ HdAccessoryListComponent.prototype.trackByGroup;
10097
+ /** @type {?} */
10098
+ HdAccessoryListComponent.prototype.trackByFile;
10099
+ }
10100
+
10101
+ /**
10102
+ * @fileoverview added by tsickle
10103
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10104
+ */
10105
+ var HdAccessoryListModule = /** @class */ (function () {
10106
+ function HdAccessoryListModule() {
10107
+ }
10108
+ HdAccessoryListModule.decorators = [
10109
+ { type: core.NgModule, args: [{
10110
+ imports: [common.CommonModule, ngZorroAntd.NgZorroAntdModule],
10111
+ declarations: [HdAccessoryListComponent],
10112
+ exports: [HdAccessoryListComponent],
10113
+ },] }
10114
+ ];
10115
+ return HdAccessoryListModule;
10116
+ }());
10117
+
9873
10118
  /**
9874
10119
  * @fileoverview added by tsickle
9875
10120
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -9994,6 +10239,7 @@
9994
10239
  HdCurrentTableModule,
9995
10240
  HdTableModule,
9996
10241
  HdTipModule,
10242
+ HdAccessoryListModule,
9997
10243
  HdPopconfirmModule,
9998
10244
  HdLogModule
9999
10245
  ]
@@ -10029,6 +10275,66 @@
10029
10275
  return FantasyNgzorroModule;
10030
10276
  }());
10031
10277
 
10278
+ /**
10279
+ * @fileoverview added by tsickle
10280
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10281
+ */
10282
+ /**
10283
+ * 单个附件
10284
+ */
10285
+ var /**
10286
+ * 单个附件
10287
+ */
10288
+ HdAccessoryFile = /** @class */ (function () {
10289
+ function HdAccessoryFile() {
10290
+ }
10291
+ return HdAccessoryFile;
10292
+ }());
10293
+ if (false) {
10294
+ /**
10295
+ * 展示文件名
10296
+ * @type {?}
10297
+ */
10298
+ HdAccessoryFile.prototype.name;
10299
+ /**
10300
+ * 完整下载/查看地址(由父组件直接传入)
10301
+ * @type {?}
10302
+ */
10303
+ HdAccessoryFile.prototype.path;
10304
+ /**
10305
+ * 文件大小(可缺省;有值才展示):数字按字节格式化,字符串原样展示
10306
+ * @type {?}
10307
+ */
10308
+ HdAccessoryFile.prototype.size;
10309
+ }
10310
+ /**
10311
+ * 附件分组:标签 + 附件列表
10312
+ */
10313
+ var /**
10314
+ * 附件分组:标签 + 附件列表
10315
+ */
10316
+ HdAccessoryGroup = /** @class */ (function () {
10317
+ function HdAccessoryGroup() {
10318
+ /**
10319
+ * 该分组下的附件
10320
+ */
10321
+ this.accessoryList = [];
10322
+ }
10323
+ return HdAccessoryGroup;
10324
+ }());
10325
+ if (false) {
10326
+ /**
10327
+ * 分组标签,如「营业执照扫描件」
10328
+ * @type {?}
10329
+ */
10330
+ HdAccessoryGroup.prototype.name;
10331
+ /**
10332
+ * 该分组下的附件
10333
+ * @type {?}
10334
+ */
10335
+ HdAccessoryGroup.prototype.accessoryList;
10336
+ }
10337
+
10032
10338
  /**
10033
10339
  * @fileoverview added by tsickle
10034
10340
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -10538,6 +10844,9 @@
10538
10844
  exports.FormLineType = FormLineType;
10539
10845
  exports.FormListType = FormListType;
10540
10846
  exports.HD_CASCADER_MENU_CLASS = HD_CASCADER_MENU_CLASS;
10847
+ exports.HdAccessoryFile = HdAccessoryFile;
10848
+ exports.HdAccessoryGroup = HdAccessoryGroup;
10849
+ exports.HdAccessoryListComponent = HdAccessoryListComponent;
10541
10850
  exports.HdButtonService = HdButtonService;
10542
10851
  exports.HdCurrentTableComponent = HdCurrentTableComponent;
10543
10852
  exports.HdDetailFormService = HdDetailFormService;
@@ -10575,9 +10884,10 @@
10575
10884
  exports.ɵbb = HdTableCellPipe;
10576
10885
  exports.ɵbc = HdTipModule;
10577
10886
  exports.ɵbd = HdTipComponent;
10578
- exports.ɵbe = HdPopconfirmModule;
10579
- exports.ɵbf = HdPopconfirmComponent;
10580
- exports.ɵbg = HdLogModule;
10887
+ exports.ɵbe = HdAccessoryListModule;
10888
+ exports.ɵbf = HdPopconfirmModule;
10889
+ exports.ɵbg = HdPopconfirmComponent;
10890
+ exports.ɵbh = HdLogModule;
10581
10891
  exports.ɵc = HdButtonComponent;
10582
10892
  exports.ɵd = HdButtonGroupModule;
10583
10893
  exports.ɵe = HdButtonGroupComponent;