fantasy-ngzorro 2.1.60 → 2.1.61

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
@@ -37,6 +37,7 @@
37
37
  | — | 2026-5-20 | 补充 hd-table、hd-detail-lines-page 等组件;完善公共子类型(SelectOption、FormItem 等)文档 |
38
38
  | — | 2026-9-18 | `hd-form-lines` 选中回显(nzHide)认 `showLabelAndValue`,与下拉 `[value]label` 一致(对齐 `hd-form`) |
39
39
  | — | 2026-9-18 | `hd-detail-lines-page` 对齐 `hd-table` 支持虚拟滚动(`virtualScroll` / `virtualItemSize`);千行勾选时减少 DOM 卡顿 |
40
+ | — | 2026-9-20 | hd-detail-form 支持附件图片字段(`HdDetailFormFieldType.Accessory`,Figma 48×48 缩略图横排,不复用 hd-accessory-list) |
40
41
  | — | 2026-9-17 | hd-table / hd-detail-lines / hd-detail-lines-page 支持 `selectDisabledField` / `rowInvalidField`:按行字段控制勾选禁用、失效行样式 |
41
42
  | — | 2026-9-14 | 新增 `hd-accessory-list` 附件列表组件(分组 name + accessoryList,点击下载/查看) |
42
43
  | — | 2026-6-23 | hd-table 状态列支持 `stateField` 自定义取值字段、`isState` 按列名取值;hd-form Input 支持 `prefix` / `prefixIcon`;hd-detail-lines-page 支持 `isCrossPageSelect` 跨页勾选开关 |
@@ -578,14 +579,27 @@ this.hdFormLines.batchFillSelected({ remark: '批量备注' }); // 批量填充
578
579
  ### 示例
579
580
 
580
581
  ```html
581
- <hd-detail-form [formCols]="formCols"></hd-detail-form>
582
+ <hd-detail-form [formCols]="formCols" (imageClick)="onDetailFormImageClick($event)"></hd-detail-form>
582
583
  ```
583
584
 
584
585
  ```typescript
586
+ import { HdDetailFormFieldType, HdOption } from 'fantasy-ngzorro';
587
+
585
588
  formCols: HdOption[] = [
586
589
  { label: '收货单号', value: '202111030001' },
587
590
  { label: '地址', value: '江苏/南京市/玄武区 某某路', width: 2 },
588
- { label: '备注', value: '...' }
591
+ { label: '备注', value: '...' },
592
+ // 附件图片:label + 图片地址列表(Figma 48×48 缩略图横排)
593
+ {
594
+ label: '食品经营许可证',
595
+ type: HdDetailFormFieldType.Accessory,
596
+ width: 2,
597
+ value: [
598
+ { name: '正面', path: 'https://oss.xxx.com/a.png' },
599
+ { name: '背面', path: 'https://oss.xxx.com/b.png' },
600
+ 'https://oss.xxx.com/c.png', // 也支持纯地址字符串
601
+ ],
602
+ },
589
603
  ];
590
604
  ```
591
605
 
@@ -593,6 +607,15 @@ formCols: HdOption[] = [
593
607
  | ---- | ---- | ------ | ---- |
594
608
  | formCols | HdOption[] | — | 展示字段,见 [HdOption](#hdoption键值展示项) |
595
609
  | nzColumn | number \| object | `4` | 一行列数,默认固定 4 列 |
610
+ | imageClick | EventEmitter | — | 附件图片点击回调 `{ image, path, index }`(`type=accessory` 时) |
611
+
612
+ 附件字段 `type: HdDetailFormFieldType.Accessory`(或 `'accessory'`):
613
+
614
+ - 对齐 Figma `items/description-cell`「图片」:标签 + **48×48** 缩略图横排(间距 6px,边框 `#E5E6EB`,圆角 4px)
615
+ - `value` 支持:图片地址 `string` / `string[]`,或 `{ name?, path?/url? }[]`
616
+ - 点击缩略图默认 `window.open` 打开原图,并触发 `imageClick`
617
+ - 无图时展示 `<空>`
618
+ - **不使用** `hd-accessory-list`(文件列表样式请用独立附件列表组件)
596
619
 
597
620
  ---
598
621
 
@@ -904,7 +927,8 @@ selectOption: {
904
927
  | 参数 | 类型 | 说明 |
905
928
  | ---- | ---- | ---- |
906
929
  | label | string | 标签 |
907
- | value | any | |
930
+ | value | any | 值;附件类型时为图片地址 `string` / `string[]` 或 `{ name?, path?/url? }[]` |
931
+ | type | string / HdDetailFormFieldType | 字段类型,默认文本;`accessory` 为附件图片缩略图 |
908
932
  | width | number | 占据列数,默认 1,最大 4;未传按 1 |
909
933
  | color | string | 文字颜色 |
910
934
  | hide | boolean | 是否隐藏 |
@@ -433,6 +433,44 @@
433
433
  return HdButtonModule;
434
434
  }());
435
435
 
436
+ /**
437
+ * @fileoverview added by tsickle
438
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
439
+ */
440
+ /** @enum {string} */
441
+ var HdDetailFormFieldType = {
442
+ /** 普通文本(默认) */
443
+ Text: "text",
444
+ /** 附件图片(描述项内横排缩略图) */
445
+ Accessory: "accessory",
446
+ };
447
+ /**
448
+ * 附件图片项(path 为图片地址)
449
+ * @record
450
+ */
451
+ function HdDetailFormImage() { }
452
+ if (false) {
453
+ /** @type {?|undefined} */
454
+ HdDetailFormImage.prototype.name;
455
+ /** @type {?|undefined} */
456
+ HdDetailFormImage.prototype.path;
457
+ /** @type {?|undefined} */
458
+ HdDetailFormImage.prototype.url;
459
+ }
460
+ var HdDetailFormService = /** @class */ (function () {
461
+ function HdDetailFormService() {
462
+ }
463
+ HdDetailFormService.decorators = [
464
+ { type: core.Injectable, args: [{
465
+ providedIn: "root",
466
+ },] }
467
+ ];
468
+ /** @nocollapse */
469
+ HdDetailFormService.ctorParameters = function () { return []; };
470
+ /** @nocollapse */ HdDetailFormService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function HdDetailFormService_Factory() { return new HdDetailFormService(); }, token: HdDetailFormService, providedIn: "root" });
471
+ return HdDetailFormService;
472
+ }());
473
+
436
474
  /**
437
475
  * @fileoverview added by tsickle
438
476
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -444,6 +482,11 @@
444
482
  * 一行列数,默认固定 4 列(不再按屏幕宽度自适应)
445
483
  */
446
484
  this.nzColumn = 4;
485
+ /**
486
+ * 附件图片点击回调
487
+ */
488
+ this.imageClick = new core.EventEmitter();
489
+ this.HdDetailFormFieldType = HdDetailFormFieldType;
447
490
  }
448
491
  /**
449
492
  * @return {?}
@@ -453,7 +496,6 @@
453
496
  */
454
497
  function () {
455
498
  if (this.formCols && this.formCols.length > 0) {
456
- // 剔除掉formCols里面不需要显示的内容
457
499
  this.formCols = this.formCols.filter((/**
458
500
  * @param {?} item
459
501
  * @return {?}
@@ -470,9 +512,10 @@
470
512
  * @return {?}
471
513
  */
472
514
  function (changes) {
473
- if (changes['formCols'] && JSON.stringify(changes['formCols'].currentValue) !== JSON.stringify(changes['formCols'].previousValue)) {
515
+ if (changes["formCols"] &&
516
+ JSON.stringify(changes["formCols"].currentValue) !==
517
+ JSON.stringify(changes["formCols"].previousValue)) {
474
518
  if (this.formCols && this.formCols.length > 0) {
475
- // 剔除掉formCols里面不需要显示的内容
476
519
  this.formCols = this.formCols.filter((/**
477
520
  * @param {?} item
478
521
  * @return {?}
@@ -481,6 +524,118 @@
481
524
  }
482
525
  }
483
526
  };
527
+ /**
528
+ * @param {?} col
529
+ * @return {?}
530
+ */
531
+ HdDetailFormComponent.prototype.isAccessory = /**
532
+ * @param {?} col
533
+ * @return {?}
534
+ */
535
+ function (col) {
536
+ return !!(col &&
537
+ (col.type === HdDetailFormFieldType.Accessory ||
538
+ col.type === "accessory"));
539
+ };
540
+ /**
541
+ * 解析附件图片列表。value 支持:
542
+ * - string / string[](图片地址)
543
+ * - { name?, path? / url? }[]
544
+ */
545
+ /**
546
+ * 解析附件图片列表。value 支持:
547
+ * - string / string[](图片地址)
548
+ * - { name?, path? / url? }[]
549
+ * @param {?} col
550
+ * @return {?}
551
+ */
552
+ HdDetailFormComponent.prototype.getImageList = /**
553
+ * 解析附件图片列表。value 支持:
554
+ * - string / string[](图片地址)
555
+ * - { name?, path? / url? }[]
556
+ * @param {?} col
557
+ * @return {?}
558
+ */
559
+ function (col) {
560
+ /** @type {?} */
561
+ var value = col && col.value;
562
+ if (value == null || value === "") {
563
+ return [];
564
+ }
565
+ /** @type {?} */
566
+ var list = Array.isArray(value) ? value : [value];
567
+ /** @type {?} */
568
+ var result = [];
569
+ list.forEach((/**
570
+ * @param {?} item
571
+ * @return {?}
572
+ */
573
+ function (item) {
574
+ if (item == null || item === "") {
575
+ return;
576
+ }
577
+ if (typeof item === "string") {
578
+ result.push({ path: item });
579
+ return;
580
+ }
581
+ /** @type {?} */
582
+ var path = item.path || item.url || item.address || "";
583
+ if (!path) {
584
+ return;
585
+ }
586
+ result.push({
587
+ name: item.name || item.fileName,
588
+ path: String(path),
589
+ });
590
+ }));
591
+ return result;
592
+ };
593
+ /**
594
+ * @param {?} col
595
+ * @return {?}
596
+ */
597
+ HdDetailFormComponent.prototype.hasImages = /**
598
+ * @param {?} col
599
+ * @return {?}
600
+ */
601
+ function (col) {
602
+ return this.getImageList(col).length > 0;
603
+ };
604
+ /**
605
+ * @param {?} image
606
+ * @return {?}
607
+ */
608
+ HdDetailFormComponent.prototype.getImagePath = /**
609
+ * @param {?} image
610
+ * @return {?}
611
+ */
612
+ function (image) {
613
+ return (image && (image.path || image.url)) || "";
614
+ };
615
+ /**
616
+ * @param {?} image
617
+ * @param {?} index
618
+ * @param {?=} event
619
+ * @return {?}
620
+ */
621
+ HdDetailFormComponent.prototype.onImageClick = /**
622
+ * @param {?} image
623
+ * @param {?} index
624
+ * @param {?=} event
625
+ * @return {?}
626
+ */
627
+ function (image, index, event) {
628
+ if (event) {
629
+ event.preventDefault();
630
+ event.stopPropagation();
631
+ }
632
+ /** @type {?} */
633
+ var path = this.getImagePath(image);
634
+ this.imageClick.emit({ image: image, path: path, index: index });
635
+ if (path) {
636
+ window.open(path, "_blank");
637
+ }
638
+ };
484
639
  /** HdOption.width:默认 1,最大 4 */
485
640
  /**
486
641
  * HdOption.width:默认 1,最大 4
@@ -515,16 +670,17 @@
515
670
  };
516
671
  HdDetailFormComponent.decorators = [
517
672
  { type: core.Component, args: [{
518
- selector: 'hd-detail-form',
519
- template: "<nz-content class=\"hd-detail-form-container\">\n <nz-descriptions [nzColumn]=\"nzColumn\">\n <ng-container *ngFor=\"let col of formCols\">\n <nz-descriptions-item *ngIf=\"!col.click\" [nzTitle]=\"col.label\" [nzSpan]=\"getColSpan(col)\">\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{(col.value === '0' || col.value === 0 || col.value\n )? col.value : '&lt;\u7A7A&gt;'}}</span>\n </nz-descriptions-item>\n <nz-descriptions-item *ngIf=\"col.click\" [nzTitle]=\"col.label\" [nzSpan]=\"getColSpan(col)\">\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\" *ngIf=\"col.clickText\">\n {{(col.value === '0' || col.value === 0 || col.value\n )? col.value : '&lt;\u7A7A&gt;'}}\n <a (click)=\"triggerEvent(col.click || null)\">&nbsp;&nbsp;&nbsp;&nbsp;{{ col.clickText }}</a>\n <a *ngIf=\"col.clickText1\" (click)=\"triggerEvent(col.click1 || null)\">&nbsp;&nbsp;&nbsp;&nbsp;{{ col.clickText1 }}</a>\n </span>\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\" *ngIf=\"!col.clickText\">\n <a (click)=\"triggerEvent(col.click || null)\">{{(col.value === '0' || col.value === 0 || col.value\n )? col.value : '&lt;\u7A7A&gt;'}}</a>\n <a *ngIf=\"col.clickText1\" (click)=\"triggerEvent(col.click1 || null)\">&nbsp;&nbsp;&nbsp;&nbsp;{{ col.clickText1 }}</a>\n </span>\n </nz-descriptions-item>\n </ng-container>\n </nz-descriptions>\n</nz-content>\n",
520
- 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-detail-form-container{font-size:14px}.hd-detail-form-container ::ng-deep td.ant-descriptions-item{vertical-align:top;padding-top:6px!important;padding-bottom:6px!important;padding-left:0!important;font-size:14px}.hd-detail-form-container ::ng-deep .ant-descriptions-item-label{color:#4b504e;font-size:14px}.hd-detail-form-container ::ng-deep .ant-descriptions-item-content{word-break:break-all;color:rgba(0,0,0,.85);font-weight:400;font-size:14px}.hd-detail-form-container ::ng-deep a{font-size:14px}.hd-detail-form-container ::ng-deep td{white-space:unset!important}"]
673
+ selector: "hd-detail-form",
674
+ template: "<nz-content class=\"hd-detail-form-container\">\n <nz-descriptions [nzColumn]=\"nzColumn\">\n <ng-container *ngFor=\"let col of formCols\">\n <!-- \u9644\u4EF6\u56FE\u7247\uFF1A\u6807\u7B7E\u4E0E\u9996\u56FE\u5DE6\u4E0A\u89D2\u9876\u5BF9\u9F50\uFF08Figma description-cell / \u56FE\u7247\uFF09 -->\n <nz-descriptions-item *ngIf=\"isAccessory(col)\" [nzTitle]=\"col.label\" [nzSpan]=\"getColSpan(col)\">\n <div class=\"hd-detail-form-images\" *ngIf=\"hasImages(col)\">\n <a class=\"hd-detail-form-image\" *ngFor=\"let image of getImageList(col); let i = index\"\n href=\"javascript:void(0)\"\n (click)=\"onImageClick(image, i, $event)\"\n [attr.title]=\"image.name || ('\u56FE\u7247' + (i + 1))\">\n <img [src]=\"getImagePath(image)\" [alt]=\"image.name || ('\u56FE\u7247' + (i + 1))\" />\n </a>\n </div>\n <span *ngIf=\"!hasImages(col)\">&lt;\u7A7A&gt;</span>\n </nz-descriptions-item>\n <!-- \u666E\u901A\u6587\u672C -->\n <nz-descriptions-item *ngIf=\"!isAccessory(col) && !col.click\" [nzTitle]=\"col.label\" [nzSpan]=\"getColSpan(col)\">\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\">{{(col.value === '0' || col.value === 0 || col.value\n )? col.value : '&lt;\u7A7A&gt;'}}</span>\n </nz-descriptions-item>\n <!-- \u53EF\u70B9\u51FB -->\n <nz-descriptions-item *ngIf=\"!isAccessory(col) && col.click\" [nzTitle]=\"col.label\" [nzSpan]=\"getColSpan(col)\">\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\" *ngIf=\"col.clickText\">\n {{(col.value === '0' || col.value === 0 || col.value\n )? col.value : '&lt;\u7A7A&gt;'}}\n <a (click)=\"triggerEvent(col.click || null)\">&nbsp;&nbsp;&nbsp;&nbsp;{{ col.clickText }}</a>\n <a *ngIf=\"col.clickText1\" (click)=\"triggerEvent(col.click1 || null)\">&nbsp;&nbsp;&nbsp;&nbsp;{{ col.clickText1 }}</a>\n </span>\n <span [ngStyle]=\"{'color': col?.color ? col.color : null}\" *ngIf=\"!col.clickText\">\n <a (click)=\"triggerEvent(col.click || null)\">{{(col.value === '0' || col.value === 0 || col.value\n )? col.value : '&lt;\u7A7A&gt;'}}</a>\n <a *ngIf=\"col.clickText1\" (click)=\"triggerEvent(col.click1 || null)\">&nbsp;&nbsp;&nbsp;&nbsp;{{ col.clickText1 }}</a>\n </span>\n </nz-descriptions-item>\n </ng-container>\n </nz-descriptions>\n</nz-content>\n",
675
+ 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-detail-form-container{font-size:14px}.hd-detail-form-container ::ng-deep td.ant-descriptions-item{vertical-align:top;padding-top:6px!important;padding-bottom:6px!important;padding-left:0!important;font-size:14px}.hd-detail-form-container ::ng-deep .ant-descriptions-item>span{vertical-align:top}.hd-detail-form-container ::ng-deep .ant-descriptions-item-label{color:#4b504e;font-size:14px;line-height:22px;padding-top:1px;vertical-align:top}.hd-detail-form-container ::ng-deep .ant-descriptions-item-content{word-break:break-all;color:rgba(0,0,0,.85);font-weight:400;font-size:14px;vertical-align:top;line-height:22px}.hd-detail-form-container ::ng-deep a{font-size:14px}.hd-detail-form-container ::ng-deep td{white-space:unset!important}.hd-detail-form-container .hd-detail-form-images{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px}.hd-detail-form-container .hd-detail-form-image{display:inline-flex;flex-shrink:0;box-sizing:border-box;width:48px;height:48px;overflow:hidden;border:1px solid #e5e6eb;border-radius:4px;cursor:pointer;line-height:0}.hd-detail-form-container .hd-detail-form-image img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.hd-detail-form-container .hd-detail-form-image:hover{border-color:#20b95d}"]
521
676
  }] }
522
677
  ];
523
678
  /** @nocollapse */
524
679
  HdDetailFormComponent.ctorParameters = function () { return []; };
525
680
  HdDetailFormComponent.propDecorators = {
526
681
  formCols: [{ type: core.Input }],
527
- nzColumn: [{ type: core.Input }]
682
+ nzColumn: [{ type: core.Input }],
683
+ imageClick: [{ type: core.Output }]
528
684
  };
529
685
  return HdDetailFormComponent;
530
686
  }());
@@ -536,6 +692,13 @@
536
692
  * @type {?}
537
693
  */
538
694
  HdDetailFormComponent.prototype.nzColumn;
695
+ /**
696
+ * 附件图片点击回调
697
+ * @type {?}
698
+ */
699
+ HdDetailFormComponent.prototype.imageClick;
700
+ /** @type {?} */
701
+ HdDetailFormComponent.prototype.HdDetailFormFieldType;
539
702
  }
540
703
 
541
704
  /**
@@ -547,12 +710,9 @@
547
710
  }
548
711
  HdDetailFormModule.decorators = [
549
712
  { type: core.NgModule, args: [{
550
- imports: [
551
- common.CommonModule,
552
- ngZorroAntd.NgZorroAntdModule
553
- ],
713
+ imports: [common.CommonModule, ngZorroAntd.NgZorroAntdModule],
554
714
  exports: [HdDetailFormComponent],
555
- declarations: [HdDetailFormComponent]
715
+ declarations: [HdDetailFormComponent],
556
716
  },] }
557
717
  ];
558
718
  return HdDetailFormModule;
@@ -727,6 +887,12 @@
727
887
  * @type {?}
728
888
  */
729
889
  HdOption.prototype.width;
890
+ /**
891
+ * 字段类型,默认文本。
892
+ * `accessory`:附件图片,value 为图片地址 string / string[] 或 { name?, path?/url? }[]
893
+ * @type {?}
894
+ */
895
+ HdOption.prototype.type;
730
896
  /** @type {?} */
731
897
  HdOption.prototype.clickText;
732
898
  /** @type {?} */
@@ -10910,24 +11076,6 @@
10910
11076
  TableTotalOption.prototype.insertName;
10911
11077
  }
10912
11078
 
10913
- /**
10914
- * @fileoverview added by tsickle
10915
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10916
- */
10917
- var HdDetailFormService = /** @class */ (function () {
10918
- function HdDetailFormService() {
10919
- }
10920
- HdDetailFormService.decorators = [
10921
- { type: core.Injectable, args: [{
10922
- providedIn: 'root'
10923
- },] }
10924
- ];
10925
- /** @nocollapse */
10926
- HdDetailFormService.ctorParameters = function () { return []; };
10927
- /** @nocollapse */ HdDetailFormService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function HdDetailFormService_Factory() { return new HdDetailFormService(); }, token: HdDetailFormService, providedIn: "root" });
10928
- return HdDetailFormService;
10929
- }());
10930
-
10931
11079
  /**
10932
11080
  * @fileoverview added by tsickle
10933
11081
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -11381,6 +11529,7 @@
11381
11529
  exports.HdAccessoryListComponent = HdAccessoryListComponent;
11382
11530
  exports.HdButtonService = HdButtonService;
11383
11531
  exports.HdCurrentTableComponent = HdCurrentTableComponent;
11532
+ exports.HdDetailFormFieldType = HdDetailFormFieldType;
11384
11533
  exports.HdDetailFormService = HdDetailFormService;
11385
11534
  exports.HdFilterService = HdFilterService;
11386
11535
  exports.HdFormLinesService = HdFormLinesService;