fantasy-ngzorro 2.2.37 → 2.2.39
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 +1 -0
- package/bundles/fantasy-ngzorro.umd.js +398 -227
- package/bundles/fantasy-ngzorro.umd.js.map +1 -1
- package/bundles/fantasy-ngzorro.umd.min.js +1 -1
- package/bundles/fantasy-ngzorro.umd.min.js.map +1 -1
- package/esm2015/hd-table/hd-table.component.js +306 -200
- package/esm2015/utils/hd-table-scroll.util.js +3 -2
- package/esm5/hd-table/hd-table.component.js +397 -227
- package/esm5/utils/hd-table-scroll.util.js +3 -2
- package/fantasy-ngzorro.metadata.json +1 -1
- package/fesm2015/fantasy-ngzorro.js +307 -200
- package/fesm2015/fantasy-ngzorro.js.map +1 -1
- package/fesm5/fantasy-ngzorro.js +398 -227
- package/fesm5/fantasy-ngzorro.js.map +1 -1
- package/hd-table/hd-table.component.d.ts +30 -22
- package/package.json +2 -2
- package/utils/hd-table-scroll.util.d.ts +4 -1
package/fesm5/fantasy-ngzorro.js
CHANGED
|
@@ -1298,7 +1298,8 @@ function getTableScrollXViewportWidth(nzTable, hostClass) {
|
|
|
1298
1298
|
return getTableViewportWidth(nzTable, hostClass);
|
|
1299
1299
|
}
|
|
1300
1300
|
/**
|
|
1301
|
-
* 无数据或列宽未超出容器时不启用横向 scroll
|
|
1301
|
+
* 无数据或列宽未超出容器时不启用横向 scroll(表宽 100%、table-layout: auto)。
|
|
1302
|
+
* auto 布局下单元格 max-width 不生效,固定宽列会被均摊撑开;需要锁宽的场景见 hd-table 的横向布局。
|
|
1302
1303
|
* @param {?} nzTable
|
|
1303
1304
|
* @param {?} hasData
|
|
1304
1305
|
* @param {?=} colWidth
|
|
@@ -10747,6 +10748,67 @@ if (false) {
|
|
|
10747
10748
|
* @fileoverview added by tsickle
|
|
10748
10749
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
10749
10750
|
*/
|
|
10751
|
+
/**
|
|
10752
|
+
* 勾选列宽(px),与模板 nzWidth、less 兜底保持一致
|
|
10753
|
+
* @type {?}
|
|
10754
|
+
*/
|
|
10755
|
+
var SELECT_COL_WIDTH = 40;
|
|
10756
|
+
/**
|
|
10757
|
+
* 横向布局计算结果
|
|
10758
|
+
* @record
|
|
10759
|
+
*/
|
|
10760
|
+
function HdTableHorizontalLayout() { }
|
|
10761
|
+
if (false) {
|
|
10762
|
+
/**
|
|
10763
|
+
* 传给 nzScroll.x;只有列宽总和 <= 0 时为 null
|
|
10764
|
+
* @type {?}
|
|
10765
|
+
*/
|
|
10766
|
+
HdTableHorizontalLayout.prototype.scrollX;
|
|
10767
|
+
/**
|
|
10768
|
+
* 按声明宽比例分给各业务列的总补宽,列多时为 0
|
|
10769
|
+
* @type {?}
|
|
10770
|
+
*/
|
|
10771
|
+
HdTableHorizontalLayout.prototype.fluidExtra;
|
|
10772
|
+
/**
|
|
10773
|
+
* 实际渲染总宽 = 声明总宽 + fluidExtra
|
|
10774
|
+
* @type {?}
|
|
10775
|
+
*/
|
|
10776
|
+
HdTableHorizontalLayout.prototype.displayTotal;
|
|
10777
|
+
/**
|
|
10778
|
+
* 列少、靠补宽吃满容器,不需要真正横滚
|
|
10779
|
+
* @type {?}
|
|
10780
|
+
*/
|
|
10781
|
+
HdTableHorizontalLayout.prototype.isFluid;
|
|
10782
|
+
}
|
|
10783
|
+
/**
|
|
10784
|
+
* 列多(或量不到容器宽):scroll.x = 声明总宽,正常横滚
|
|
10785
|
+
* @param {?} declaredWidth
|
|
10786
|
+
* @return {?}
|
|
10787
|
+
*/
|
|
10788
|
+
function fixedLayout(declaredWidth) {
|
|
10789
|
+
return {
|
|
10790
|
+
scrollX: Math.ceil(declaredWidth) + "px",
|
|
10791
|
+
fluidExtra: 0,
|
|
10792
|
+
displayTotal: declaredWidth,
|
|
10793
|
+
isFluid: false,
|
|
10794
|
+
};
|
|
10795
|
+
}
|
|
10796
|
+
/**
|
|
10797
|
+
* 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列
|
|
10798
|
+
* @param {?} containerWidth
|
|
10799
|
+
* @param {?} declaredWidth
|
|
10800
|
+
* @return {?}
|
|
10801
|
+
*/
|
|
10802
|
+
function fluidLayout(containerWidth, declaredWidth) {
|
|
10803
|
+
/** @type {?} */
|
|
10804
|
+
var fluidExtra = Math.max(0, containerWidth - declaredWidth);
|
|
10805
|
+
return {
|
|
10806
|
+
scrollX: containerWidth + "px",
|
|
10807
|
+
fluidExtra: fluidExtra,
|
|
10808
|
+
displayTotal: declaredWidth + fluidExtra,
|
|
10809
|
+
isFluid: true,
|
|
10810
|
+
};
|
|
10811
|
+
}
|
|
10750
10812
|
var HdTableComponent = /** @class */ (function () {
|
|
10751
10813
|
function HdTableComponent(hostEl, cdr, commonSessionService) {
|
|
10752
10814
|
var _this = this;
|
|
@@ -10832,23 +10894,21 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
10832
10894
|
*/
|
|
10833
10895
|
this.virtualScrollActive = null;
|
|
10834
10896
|
/**
|
|
10835
|
-
*
|
|
10897
|
+
* 实际渲染列宽合计(含勾选/序号 + 补宽),合计 footer 表宽用
|
|
10836
10898
|
*/
|
|
10837
10899
|
this.tableColWidthTotal = 0;
|
|
10838
10900
|
/**
|
|
10839
|
-
*
|
|
10840
|
-
* 并设 scroll.x = 容器宽,避免表宽 100% 均摊撑开勾选列;拖拽改宽仍写 col.width。
|
|
10901
|
+
* 待按比例分给各业务列的总补宽;只影响展示,不写回 col.width(列宽缓存、拖拽仍用声明宽)
|
|
10841
10902
|
*/
|
|
10842
10903
|
this.fluidExtraWidth = 0;
|
|
10843
10904
|
/**
|
|
10844
|
-
*
|
|
10845
|
-
* 用于关掉 ng-zorro fixed-header 带来的常驻 X 轴滚动条。
|
|
10905
|
+
* 列少、靠补宽吃满容器:模板据此加 hd-table--fluid-x,隐藏 fixed-header 常驻的横滚槽
|
|
10846
10906
|
*/
|
|
10847
10907
|
this.fluidHorizontal = false;
|
|
10848
10908
|
/**
|
|
10849
|
-
*
|
|
10909
|
+
* 各业务列分到的补宽(按列对象取,applyHorizontalLayout 时整表重建)
|
|
10850
10910
|
*/
|
|
10851
|
-
this.
|
|
10911
|
+
this.fluidExtraByCol = new Map();
|
|
10852
10912
|
/**
|
|
10853
10913
|
* 数据更新后待复位纵向滚动位置
|
|
10854
10914
|
*/
|
|
@@ -11070,10 +11130,8 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
11070
11130
|
changes["tableData"]["currentValue"]["pageNumber"] !==
|
|
11071
11131
|
changes["tableData"]["previousValue"]["pageNumber"]) {
|
|
11072
11132
|
this.pendingResetScrollTop = true;
|
|
11073
|
-
// pageSize
|
|
11074
|
-
//
|
|
11075
|
-
// virtualScroll=false 时若这里跳过,空表初始化后的 fluid 不会补上,勾选列被撑开。
|
|
11076
|
-
// applyTableScrollMode(false) 在模式未变时只 dealScroll,不会强制重建清排序态。
|
|
11133
|
+
// 业务可能把 Page.pageSize 写成 content.length,换数据时就会走到这里,
|
|
11134
|
+
// 必须重算横向布局。滚动模式不变时不会重建,排序态不会被清掉。
|
|
11077
11135
|
this.applyTableScrollMode(false);
|
|
11078
11136
|
// 翻页/改 pageSize:主动多次复位,覆盖 CDK 异步渲染时序
|
|
11079
11137
|
this.scheduleResetTableBodyScrollTop();
|
|
@@ -11085,9 +11143,7 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
11085
11143
|
}
|
|
11086
11144
|
if (changes["tableData"]) {
|
|
11087
11145
|
this.pendingResetScrollTop = true;
|
|
11088
|
-
//
|
|
11089
|
-
// 收款/付款编辑等页 [virtualScroll]=false + 异步灌数据:原先跳过会导致
|
|
11090
|
-
// 空表初始化后不再补宽,勾选列被均摊撑开。
|
|
11146
|
+
// 不论是否虚拟滚动,数据变化后都要重算横向布局
|
|
11091
11147
|
this.applyTableScrollMode(false);
|
|
11092
11148
|
// 数据更新后复位纵向滚动(含虚拟滚动场景)
|
|
11093
11149
|
this.scheduleResetTableBodyScrollTop();
|
|
@@ -11328,13 +11384,13 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
11328
11384
|
return col.fixed === "left" ? (col.fixedWidth || 0) + "px" : null;
|
|
11329
11385
|
};
|
|
11330
11386
|
Object.defineProperty(HdTableComponent.prototype, "lineNumberLeft", {
|
|
11331
|
-
/** 开启合计时序号列的 left
|
|
11387
|
+
/** 开启合计时序号列的 left(跟在勾选列后面) */
|
|
11332
11388
|
get: /**
|
|
11333
|
-
* 开启合计时序号列的 left
|
|
11389
|
+
* 开启合计时序号列的 left(跟在勾选列后面)
|
|
11334
11390
|
* @return {?}
|
|
11335
11391
|
*/
|
|
11336
11392
|
function () {
|
|
11337
|
-
return this.showSelected ?
|
|
11393
|
+
return (this.showSelected ? SELECT_COL_WIDTH : 0) + "px";
|
|
11338
11394
|
},
|
|
11339
11395
|
enumerable: true,
|
|
11340
11396
|
configurable: true
|
|
@@ -11365,64 +11421,194 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
11365
11421
|
enumerable: true,
|
|
11366
11422
|
configurable: true
|
|
11367
11423
|
});
|
|
11368
|
-
/** 展示用列宽:fluid 时最后一列业务列 = 声明宽 + fluidExtraWidth */
|
|
11369
11424
|
/**
|
|
11370
|
-
*
|
|
11425
|
+
* @private
|
|
11426
|
+
* @param {?} col
|
|
11427
|
+
* @return {?}
|
|
11428
|
+
*/
|
|
11429
|
+
HdTableComponent.prototype.isColVisible = /**
|
|
11430
|
+
* @private
|
|
11431
|
+
* @param {?} col
|
|
11432
|
+
* @return {?}
|
|
11433
|
+
*/
|
|
11434
|
+
function (col) {
|
|
11435
|
+
return !!col && col.isShow !== false;
|
|
11436
|
+
};
|
|
11437
|
+
/** 业务列声明宽:未配置时按 fixColWidth */
|
|
11438
|
+
/**
|
|
11439
|
+
* 业务列声明宽:未配置时按 fixColWidth
|
|
11440
|
+
* @private
|
|
11441
|
+
* @param {?} col
|
|
11442
|
+
* @return {?}
|
|
11443
|
+
*/
|
|
11444
|
+
HdTableComponent.prototype.getColDeclaredWidth = /**
|
|
11445
|
+
* 业务列声明宽:未配置时按 fixColWidth
|
|
11446
|
+
* @private
|
|
11447
|
+
* @param {?} col
|
|
11448
|
+
* @return {?}
|
|
11449
|
+
*/
|
|
11450
|
+
function (col) {
|
|
11451
|
+
return col && col.width > 0 ? col.width : ColWidth.fixColWidth;
|
|
11452
|
+
};
|
|
11453
|
+
/** 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽 */
|
|
11454
|
+
/**
|
|
11455
|
+
* 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽
|
|
11456
|
+
* @private
|
|
11457
|
+
* @return {?}
|
|
11458
|
+
*/
|
|
11459
|
+
HdTableComponent.prototype.getDeclaredColWidthTotal = /**
|
|
11460
|
+
* 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽
|
|
11461
|
+
* @private
|
|
11462
|
+
* @return {?}
|
|
11463
|
+
*/
|
|
11464
|
+
function () {
|
|
11465
|
+
var _this = this;
|
|
11466
|
+
/** @type {?} */
|
|
11467
|
+
var total = 0;
|
|
11468
|
+
if (this.showSelected) {
|
|
11469
|
+
total += SELECT_COL_WIDTH;
|
|
11470
|
+
}
|
|
11471
|
+
if (this.showTableTotal) {
|
|
11472
|
+
total += this.lineNumberColWidth;
|
|
11473
|
+
}
|
|
11474
|
+
(this.tableCols || []).forEach((/**
|
|
11475
|
+
* @param {?} col
|
|
11476
|
+
* @return {?}
|
|
11477
|
+
*/
|
|
11478
|
+
function (col) {
|
|
11479
|
+
if (_this.isColVisible(col)) {
|
|
11480
|
+
total += _this.getColDeclaredWidth(col);
|
|
11481
|
+
}
|
|
11482
|
+
}));
|
|
11483
|
+
return total;
|
|
11484
|
+
};
|
|
11485
|
+
/** 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽 */
|
|
11486
|
+
/**
|
|
11487
|
+
* 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽
|
|
11371
11488
|
* @param {?} col
|
|
11372
11489
|
* @return {?}
|
|
11373
11490
|
*/
|
|
11374
11491
|
HdTableComponent.prototype.getColDisplayWidth = /**
|
|
11375
|
-
*
|
|
11492
|
+
* 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽
|
|
11376
11493
|
* @param {?} col
|
|
11377
11494
|
* @return {?}
|
|
11378
11495
|
*/
|
|
11379
11496
|
function (col) {
|
|
11380
11497
|
/** @type {?} */
|
|
11381
|
-
var
|
|
11382
|
-
|
|
11383
|
-
|
|
11384
|
-
if (this.fluidExtraWidth <= 0 ||
|
|
11385
|
-
!col ||
|
|
11386
|
-
!this.fluidExtraTargetCol ||
|
|
11387
|
-
col !== this.fluidExtraTargetCol) {
|
|
11388
|
-
return base;
|
|
11498
|
+
var declared = this.getColDeclaredWidth(col);
|
|
11499
|
+
if (!col || this.fluidExtraWidth <= 0) {
|
|
11500
|
+
return declared;
|
|
11389
11501
|
}
|
|
11390
|
-
|
|
11502
|
+
/** @type {?} */
|
|
11503
|
+
var extra = this.fluidExtraByCol.get(col);
|
|
11504
|
+
return declared + (extra > 0 ? extra : 0);
|
|
11391
11505
|
};
|
|
11392
|
-
/** 按当前 layout 刷新 fluid 补宽目标列(仅 dealScroll / sync 时调用) */
|
|
11393
11506
|
/**
|
|
11394
|
-
*
|
|
11507
|
+
* 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
|
|
11508
|
+
* 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
|
|
11509
|
+
*/
|
|
11510
|
+
/**
|
|
11511
|
+
* 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
|
|
11512
|
+
* 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
|
|
11395
11513
|
* @private
|
|
11514
|
+
* @param {?} fluidExtra
|
|
11396
11515
|
* @return {?}
|
|
11397
11516
|
*/
|
|
11398
|
-
HdTableComponent.prototype.
|
|
11399
|
-
*
|
|
11517
|
+
HdTableComponent.prototype.rebuildFluidExtraByCol = /**
|
|
11518
|
+
* 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
|
|
11519
|
+
* 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
|
|
11400
11520
|
* @private
|
|
11521
|
+
* @param {?} fluidExtra
|
|
11401
11522
|
* @return {?}
|
|
11402
11523
|
*/
|
|
11403
|
-
function () {
|
|
11404
|
-
|
|
11405
|
-
|
|
11406
|
-
|
|
11407
|
-
!this.tableCols.length) {
|
|
11524
|
+
function (fluidExtra) {
|
|
11525
|
+
var _this = this;
|
|
11526
|
+
this.fluidExtraByCol = new Map();
|
|
11527
|
+
if (fluidExtra <= 0 || !this.tableCols || !this.tableCols.length) {
|
|
11408
11528
|
return;
|
|
11409
11529
|
}
|
|
11410
|
-
|
|
11411
|
-
|
|
11412
|
-
|
|
11413
|
-
|
|
11414
|
-
|
|
11530
|
+
/** @type {?} */
|
|
11531
|
+
var parts = [];
|
|
11532
|
+
/** @type {?} */
|
|
11533
|
+
var sumDeclared = 0;
|
|
11534
|
+
this.tableCols.forEach((/**
|
|
11535
|
+
* @param {?} col
|
|
11536
|
+
* @return {?}
|
|
11537
|
+
*/
|
|
11538
|
+
function (col) {
|
|
11539
|
+
if (!_this.isColVisible(col)) {
|
|
11415
11540
|
return;
|
|
11416
11541
|
}
|
|
11542
|
+
/** @type {?} */
|
|
11543
|
+
var declared = _this.getColDeclaredWidth(col);
|
|
11544
|
+
sumDeclared += declared;
|
|
11545
|
+
parts.push({ col: col, declared: declared, share: 0, frac: 0 });
|
|
11546
|
+
}));
|
|
11547
|
+
if (sumDeclared <= 0 || !parts.length) {
|
|
11548
|
+
return;
|
|
11417
11549
|
}
|
|
11418
|
-
|
|
11550
|
+
/** @type {?} */
|
|
11551
|
+
var assigned = 0;
|
|
11552
|
+
parts.forEach((/**
|
|
11553
|
+
* @param {?} part
|
|
11554
|
+
* @return {?}
|
|
11555
|
+
*/
|
|
11556
|
+
function (part) {
|
|
11419
11557
|
/** @type {?} */
|
|
11420
|
-
var
|
|
11421
|
-
|
|
11422
|
-
|
|
11558
|
+
var exact = (fluidExtra * part.declared) / sumDeclared;
|
|
11559
|
+
part.share = Math.floor(exact);
|
|
11560
|
+
part.frac = exact - part.share;
|
|
11561
|
+
assigned += part.share;
|
|
11562
|
+
}));
|
|
11563
|
+
/** @type {?} */
|
|
11564
|
+
var remain = fluidExtra - assigned;
|
|
11565
|
+
parts
|
|
11566
|
+
.slice()
|
|
11567
|
+
.sort((/**
|
|
11568
|
+
* @param {?} a
|
|
11569
|
+
* @param {?} b
|
|
11570
|
+
* @return {?}
|
|
11571
|
+
*/
|
|
11572
|
+
function (a, b) { return b.frac - a.frac; }))
|
|
11573
|
+
.forEach((/**
|
|
11574
|
+
* @param {?} part
|
|
11575
|
+
* @return {?}
|
|
11576
|
+
*/
|
|
11577
|
+
function (part) {
|
|
11578
|
+
if (remain <= 0) {
|
|
11423
11579
|
return;
|
|
11424
11580
|
}
|
|
11425
|
-
|
|
11581
|
+
part.share += 1;
|
|
11582
|
+
remain -= 1;
|
|
11583
|
+
}));
|
|
11584
|
+
parts.forEach((/**
|
|
11585
|
+
* @param {?} part
|
|
11586
|
+
* @return {?}
|
|
11587
|
+
*/
|
|
11588
|
+
function (part) {
|
|
11589
|
+
if (part.share > 0) {
|
|
11590
|
+
_this.fluidExtraByCol.set(part.col, part.share);
|
|
11591
|
+
}
|
|
11592
|
+
}));
|
|
11593
|
+
};
|
|
11594
|
+
/** 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用) */
|
|
11595
|
+
/**
|
|
11596
|
+
* 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用)
|
|
11597
|
+
* @private
|
|
11598
|
+
* @param {?} layout
|
|
11599
|
+
* @return {?}
|
|
11600
|
+
*/
|
|
11601
|
+
HdTableComponent.prototype.applyHorizontalLayout = /**
|
|
11602
|
+
* 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用)
|
|
11603
|
+
* @private
|
|
11604
|
+
* @param {?} layout
|
|
11605
|
+
* @return {?}
|
|
11606
|
+
*/
|
|
11607
|
+
function (layout) {
|
|
11608
|
+
this.fluidExtraWidth = layout.fluidExtra;
|
|
11609
|
+
this.fluidHorizontal = layout.isFluid;
|
|
11610
|
+
this.rebuildFluidExtraByCol(layout.fluidExtra);
|
|
11611
|
+
this.tableColWidthTotal = layout.displayTotal;
|
|
11426
11612
|
};
|
|
11427
11613
|
Object.defineProperty(HdTableComponent.prototype, "totalFooterTableWidth", {
|
|
11428
11614
|
/** fluid → 100%;固定 → scroll.x(与表体同一套横向宽度) */
|
|
@@ -11550,7 +11736,6 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
11550
11736
|
* @return {?}
|
|
11551
11737
|
*/
|
|
11552
11738
|
function (forceRemount) {
|
|
11553
|
-
var _this = this;
|
|
11554
11739
|
if (forceRemount === void 0) { forceRemount = false; }
|
|
11555
11740
|
/** @type {?} */
|
|
11556
11741
|
var useVirtual = this.useVirtualScroll;
|
|
@@ -11563,23 +11748,7 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
11563
11748
|
// ng-zorro 只在 AfterViewInit 绑一次 header/body 的 scroll 同步;
|
|
11564
11749
|
// 若先以 y=null 创建再改成有 y,表头监听会丢,表现为列头不跟着横滚。
|
|
11565
11750
|
this.presetScrollBeforeRemount(useVirtual);
|
|
11566
|
-
this.
|
|
11567
|
-
this.cdr.markForCheck();
|
|
11568
|
-
setTimeout((/**
|
|
11569
|
-
* @return {?}
|
|
11570
|
-
*/
|
|
11571
|
-
function () {
|
|
11572
|
-
_this.showTable = true;
|
|
11573
|
-
_this.cdr.markForCheck();
|
|
11574
|
-
setTimeout((/**
|
|
11575
|
-
* @return {?}
|
|
11576
|
-
*/
|
|
11577
|
-
function () {
|
|
11578
|
-
_this.dealScroll();
|
|
11579
|
-
_this.cdr.markForCheck();
|
|
11580
|
-
_this.afterTableRender(useVirtual);
|
|
11581
|
-
}));
|
|
11582
|
-
}));
|
|
11751
|
+
this.remountTable(useVirtual);
|
|
11583
11752
|
return;
|
|
11584
11753
|
}
|
|
11585
11754
|
/** @type {?} */
|
|
@@ -11591,32 +11760,48 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
11591
11760
|
var nextHasX = !!(this.scroll && this.scroll.x);
|
|
11592
11761
|
/** @type {?} */
|
|
11593
11762
|
var nextHasY = !!(this.scroll && this.scroll.y);
|
|
11594
|
-
//
|
|
11595
|
-
// - y:ng-zorro 只在 AfterViewInit
|
|
11596
|
-
// - x
|
|
11597
|
-
// 不重建时勾选列仍按 auto 均摊撑开(收款编辑等异步灌数页)
|
|
11763
|
+
// scroll.x / scroll.y 从无到有(或反过来)时必须重建,原地改值不生效:
|
|
11764
|
+
// - y:ng-zorro 8 只在 AfterViewInit 绑一次表头/表体滚动同步,且决定表头是否拆成独立 table
|
|
11765
|
+
// - x:决定是否带 ant-table-fixed(table-layout: fixed),勾选列锁宽依赖它
|
|
11598
11766
|
if (prevHasY !== nextHasY || prevHasX !== nextHasX) {
|
|
11599
|
-
this.
|
|
11600
|
-
|
|
11767
|
+
this.remountTable(useVirtual);
|
|
11768
|
+
return;
|
|
11769
|
+
}
|
|
11770
|
+
this.cdr.markForCheck();
|
|
11771
|
+
this.afterTableRender(useVirtual);
|
|
11772
|
+
};
|
|
11773
|
+
/** 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局 */
|
|
11774
|
+
/**
|
|
11775
|
+
* 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局
|
|
11776
|
+
* @private
|
|
11777
|
+
* @param {?} useVirtual
|
|
11778
|
+
* @return {?}
|
|
11779
|
+
*/
|
|
11780
|
+
HdTableComponent.prototype.remountTable = /**
|
|
11781
|
+
* 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局
|
|
11782
|
+
* @private
|
|
11783
|
+
* @param {?} useVirtual
|
|
11784
|
+
* @return {?}
|
|
11785
|
+
*/
|
|
11786
|
+
function (useVirtual) {
|
|
11787
|
+
var _this = this;
|
|
11788
|
+
this.showTable = false;
|
|
11789
|
+
this.cdr.markForCheck();
|
|
11790
|
+
setTimeout((/**
|
|
11791
|
+
* @return {?}
|
|
11792
|
+
*/
|
|
11793
|
+
function () {
|
|
11794
|
+
_this.showTable = true;
|
|
11795
|
+
_this.cdr.markForCheck();
|
|
11601
11796
|
setTimeout((/**
|
|
11602
11797
|
* @return {?}
|
|
11603
11798
|
*/
|
|
11604
11799
|
function () {
|
|
11605
|
-
_this.
|
|
11800
|
+
_this.dealScroll();
|
|
11606
11801
|
_this.cdr.markForCheck();
|
|
11607
|
-
|
|
11608
|
-
* @return {?}
|
|
11609
|
-
*/
|
|
11610
|
-
function () {
|
|
11611
|
-
_this.dealScroll();
|
|
11612
|
-
_this.cdr.markForCheck();
|
|
11613
|
-
_this.afterTableRender(useVirtual);
|
|
11614
|
-
}));
|
|
11802
|
+
_this.afterTableRender(useVirtual);
|
|
11615
11803
|
}));
|
|
11616
|
-
|
|
11617
|
-
}
|
|
11618
|
-
this.cdr.markForCheck();
|
|
11619
|
-
this.afterTableRender(useVirtual);
|
|
11804
|
+
}));
|
|
11620
11805
|
};
|
|
11621
11806
|
/** 重建前预设 scroll,保证 AfterViewInit 时 header/body 结构已正确 */
|
|
11622
11807
|
/**
|
|
@@ -12481,48 +12666,62 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
12481
12666
|
function (maxOffset) {
|
|
12482
12667
|
return "calc(100vh - " + maxOffset + "px)";
|
|
12483
12668
|
};
|
|
12484
|
-
|
|
12485
|
-
*
|
|
12486
|
-
*
|
|
12487
|
-
|
|
12488
|
-
|
|
12489
|
-
*
|
|
12490
|
-
*
|
|
12491
|
-
|
|
12492
|
-
|
|
12493
|
-
|
|
12494
|
-
|
|
12495
|
-
|
|
12496
|
-
|
|
12497
|
-
|
|
12498
|
-
*
|
|
12499
|
-
|
|
12500
|
-
|
|
12501
|
-
|
|
12502
|
-
|
|
12503
|
-
|
|
12504
|
-
|
|
12505
|
-
|
|
12506
|
-
|
|
12507
|
-
|
|
12508
|
-
|
|
12509
|
-
|
|
12669
|
+
/*
|
|
12670
|
+
* 横向布局(勾选列锁 40px 的关键)
|
|
12671
|
+
*
|
|
12672
|
+
* 勾选列只有在 table-layout: fixed 下才锁得住:ng-zorro 8 仅在 nzScroll.x 有值时
|
|
12673
|
+
* 给 table 加 ant-table-fixed;auto 布局下 table 宽 100%、每列都有 nzWidth,
|
|
12674
|
+
* 剩余空间会按比例摊到所有列(含勾选列),单元格上的 max-width 也不生效。
|
|
12675
|
+
* 所以只要有列(无论有没有数据)就一定设置 scroll.x:
|
|
12676
|
+
* - 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列(fluid,不出真横滚)
|
|
12677
|
+
* - 列多:scroll.x = 声明总宽,正常横滚
|
|
12678
|
+
* less 里勾选列的 40px 只是 fixed 布局下的兜底。
|
|
12679
|
+
*/
|
|
12680
|
+
/**
|
|
12681
|
+
* 按声明列宽合计 + 容器宽算出横向布局。
|
|
12682
|
+
* 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
|
|
12683
|
+
* 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
|
|
12684
|
+
*/
|
|
12685
|
+
/*
|
|
12686
|
+
* 横向布局(勾选列锁 40px 的关键)
|
|
12687
|
+
*
|
|
12688
|
+
* 勾选列只有在 table-layout: fixed 下才锁得住:ng-zorro 8 仅在 nzScroll.x 有值时
|
|
12689
|
+
* 给 table 加 ant-table-fixed;auto 布局下 table 宽 100%、每列都有 nzWidth,
|
|
12690
|
+
* 剩余空间会按比例摊到所有列(含勾选列),单元格上的 max-width 也不生效。
|
|
12691
|
+
* 所以只要有列(无论有没有数据)就一定设置 scroll.x:
|
|
12692
|
+
* - 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列(fluid,不出真横滚)
|
|
12693
|
+
* - 列多:scroll.x = 声明总宽,正常横滚
|
|
12694
|
+
* less 里勾选列的 40px 只是 fixed 布局下的兜底。
|
|
12695
|
+
*/
|
|
12696
|
+
/**
|
|
12697
|
+
* 按声明列宽合计 + 容器宽算出横向布局。
|
|
12698
|
+
* 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
|
|
12699
|
+
* 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
|
|
12510
12700
|
* @private
|
|
12511
12701
|
* @param {?} declaredColWidth
|
|
12512
12702
|
* @return {?}
|
|
12513
12703
|
*/
|
|
12514
|
-
HdTableComponent.prototype.resolveHorizontalLayout =
|
|
12515
|
-
|
|
12516
|
-
|
|
12517
|
-
|
|
12518
|
-
|
|
12519
|
-
|
|
12704
|
+
HdTableComponent.prototype.resolveHorizontalLayout = /*
|
|
12705
|
+
* 横向布局(勾选列锁 40px 的关键)
|
|
12706
|
+
*
|
|
12707
|
+
* 勾选列只有在 table-layout: fixed 下才锁得住:ng-zorro 8 仅在 nzScroll.x 有值时
|
|
12708
|
+
* 给 table 加 ant-table-fixed;auto 布局下 table 宽 100%、每列都有 nzWidth,
|
|
12709
|
+
* 剩余空间会按比例摊到所有列(含勾选列),单元格上的 max-width 也不生效。
|
|
12710
|
+
* 所以只要有列(无论有没有数据)就一定设置 scroll.x:
|
|
12711
|
+
* - 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列(fluid,不出真横滚)
|
|
12712
|
+
* - 列多:scroll.x = 声明总宽,正常横滚
|
|
12713
|
+
* less 里勾选列的 40px 只是 fixed 布局下的兜底。
|
|
12714
|
+
*/
|
|
12715
|
+
/**
|
|
12716
|
+
* 按声明列宽合计 + 容器宽算出横向布局。
|
|
12717
|
+
* 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
|
|
12718
|
+
* 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
|
|
12520
12719
|
* @private
|
|
12521
12720
|
* @param {?} declaredColWidth
|
|
12522
12721
|
* @return {?}
|
|
12523
12722
|
*/
|
|
12524
12723
|
function (declaredColWidth) {
|
|
12525
|
-
if (
|
|
12724
|
+
if (declaredColWidth <= 0) {
|
|
12526
12725
|
return {
|
|
12527
12726
|
scrollX: null,
|
|
12528
12727
|
fluidExtra: 0,
|
|
@@ -12531,115 +12730,64 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
12531
12730
|
};
|
|
12532
12731
|
}
|
|
12533
12732
|
/** @type {?} */
|
|
12534
|
-
var
|
|
12733
|
+
var compareWidth = this.nzTableComponent
|
|
12535
12734
|
? getTableScrollXViewportWidth(this.nzTableComponent)
|
|
12536
12735
|
: 0;
|
|
12537
|
-
//
|
|
12538
|
-
if (
|
|
12539
|
-
/** @type {?} */
|
|
12540
|
-
var hostW = ((/** @type {?} */ (this.hostEl.nativeElement))).offsetWidth;
|
|
12541
|
-
if (hostW > 0) {
|
|
12542
|
-
viewportCompare = hostW;
|
|
12543
|
-
}
|
|
12736
|
+
// 表体还没渲染出来(刚重建 / 在 spin 里)时用宿主宽兜底
|
|
12737
|
+
if (compareWidth <= 0 && this.hostEl && this.hostEl.nativeElement) {
|
|
12738
|
+
compareWidth = ((/** @type {?} */ (this.hostEl.nativeElement))).offsetWidth;
|
|
12544
12739
|
}
|
|
12545
|
-
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
scrollX: Math.ceil(declaredColWidth) + "px",
|
|
12549
|
-
fluidExtra: 0,
|
|
12550
|
-
displayTotal: declaredColWidth,
|
|
12551
|
-
isFluid: false,
|
|
12552
|
-
};
|
|
12553
|
-
}
|
|
12554
|
-
/** @type {?} */
|
|
12555
|
-
var fillWidth = this.nzTableComponent
|
|
12556
|
-
? getTableViewportWidth(this.nzTableComponent)
|
|
12557
|
-
: 0;
|
|
12558
|
-
/** @type {?} */
|
|
12559
|
-
var target = Math.floor(fillWidth > 0 ? fillWidth : viewportCompare);
|
|
12560
|
-
/** @type {?} */
|
|
12561
|
-
var fluidExtra = Math.max(0, target - declaredColWidth);
|
|
12562
|
-
return {
|
|
12563
|
-
scrollX: target + "px",
|
|
12564
|
-
fluidExtra: fluidExtra,
|
|
12565
|
-
displayTotal: declaredColWidth + fluidExtra,
|
|
12566
|
-
isFluid: true,
|
|
12567
|
-
};
|
|
12740
|
+
// 仍量不到(如宿主在 display:none 里):先按声明宽走 fixed,等 ResizeObserver 触发再转 fluid
|
|
12741
|
+
if (compareWidth <= 0) {
|
|
12742
|
+
return fixedLayout(declaredColWidth);
|
|
12568
12743
|
}
|
|
12569
|
-
//
|
|
12570
|
-
|
|
12571
|
-
|
|
12572
|
-
|
|
12573
|
-
|
|
12574
|
-
|
|
12575
|
-
|
|
12576
|
-
|
|
12744
|
+
// 1px 容差,避免亚像素误判
|
|
12745
|
+
if (declaredColWidth > compareWidth + 1) {
|
|
12746
|
+
return fixedLayout(declaredColWidth);
|
|
12747
|
+
}
|
|
12748
|
+
/** @type {?} */
|
|
12749
|
+
var fillWidth = this.nzTableComponent
|
|
12750
|
+
? getTableViewportWidth(this.nzTableComponent)
|
|
12751
|
+
: 0;
|
|
12752
|
+
/** @type {?} */
|
|
12753
|
+
var containerWidth = Math.floor(fillWidth > 0 ? fillWidth : compareWidth);
|
|
12754
|
+
return fluidLayout(containerWidth, declaredColWidth);
|
|
12577
12755
|
};
|
|
12578
|
-
/**
|
|
12756
|
+
/** 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变 */
|
|
12579
12757
|
/**
|
|
12580
|
-
*
|
|
12758
|
+
* 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变
|
|
12581
12759
|
* @private
|
|
12582
12760
|
* @return {?}
|
|
12583
12761
|
*/
|
|
12584
12762
|
HdTableComponent.prototype.syncHorizontalScroll = /**
|
|
12585
|
-
*
|
|
12763
|
+
* 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变
|
|
12586
12764
|
* @private
|
|
12587
12765
|
* @return {?}
|
|
12588
12766
|
*/
|
|
12589
12767
|
function () {
|
|
12590
12768
|
var _this = this;
|
|
12591
12769
|
/** @type {?} */
|
|
12592
|
-
var declared = 0;
|
|
12593
|
-
if (this.showSelected) {
|
|
12594
|
-
declared += 40;
|
|
12595
|
-
}
|
|
12596
|
-
if (this.showTableTotal) {
|
|
12597
|
-
declared += this.lineNumberColWidth;
|
|
12598
|
-
}
|
|
12599
|
-
if (this.tableCols) {
|
|
12600
|
-
this.tableCols.forEach((/**
|
|
12601
|
-
* @param {?} item
|
|
12602
|
-
* @return {?}
|
|
12603
|
-
*/
|
|
12604
|
-
function (item) {
|
|
12605
|
-
if (item && item.isShow !== false) {
|
|
12606
|
-
declared += item.width > 0 ? item.width : ColWidth.fixColWidth;
|
|
12607
|
-
}
|
|
12608
|
-
}));
|
|
12609
|
-
}
|
|
12610
|
-
/** @type {?} */
|
|
12611
12770
|
var prevHasX = !!(this.scroll && this.scroll.x);
|
|
12612
12771
|
/** @type {?} */
|
|
12613
|
-
var layout = this.resolveHorizontalLayout(
|
|
12614
|
-
/** @type {?} */
|
|
12615
|
-
var currentY = this.scroll ? this.scroll.y : null;
|
|
12616
|
-
/** @type {?} */
|
|
12617
|
-
var nextHasX = !!layout.scrollX;
|
|
12772
|
+
var layout = this.resolveHorizontalLayout(this.getDeclaredColWidthTotal());
|
|
12618
12773
|
/** @type {?} */
|
|
12619
|
-
var
|
|
12620
|
-
|
|
12621
|
-
|
|
12622
|
-
|
|
12623
|
-
|
|
12624
|
-
if (sameX &&
|
|
12625
|
-
sameExtra &&
|
|
12626
|
-
sameFluid &&
|
|
12627
|
-
this.scroll &&
|
|
12628
|
-
this.scroll.y === currentY) {
|
|
12774
|
+
var unchanged = this.scroll &&
|
|
12775
|
+
this.scroll.x === layout.scrollX &&
|
|
12776
|
+
this.fluidExtraWidth === layout.fluidExtra &&
|
|
12777
|
+
this.fluidHorizontal === layout.isFluid;
|
|
12778
|
+
if (unchanged) {
|
|
12629
12779
|
setTimeout((/**
|
|
12630
12780
|
* @return {?}
|
|
12631
12781
|
*/
|
|
12632
12782
|
function () { return _this.syncTotalFooterWithBody(); }));
|
|
12633
12783
|
return;
|
|
12634
12784
|
}
|
|
12635
|
-
this.
|
|
12636
|
-
this.
|
|
12637
|
-
this.
|
|
12638
|
-
this.tableColWidthTotal = layout.displayTotal;
|
|
12639
|
-
this.scroll = { x: layout.scrollX, y: currentY };
|
|
12785
|
+
this.applyHorizontalLayout(layout);
|
|
12786
|
+
this.refreshStickyOffsets();
|
|
12787
|
+
this.scroll = { x: layout.scrollX, y: this.scroll ? this.scroll.y : null };
|
|
12640
12788
|
this.cdr.markForCheck();
|
|
12641
|
-
//
|
|
12642
|
-
if (prevHasX !==
|
|
12789
|
+
// x 从无到有(或反过来)要重建才能切换 table-layout
|
|
12790
|
+
if (prevHasX !== !!layout.scrollX) {
|
|
12643
12791
|
this.applyTableScrollMode(true);
|
|
12644
12792
|
return;
|
|
12645
12793
|
}
|
|
@@ -12953,21 +13101,32 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
12953
13101
|
}), 100);
|
|
12954
13102
|
};
|
|
12955
13103
|
/**
|
|
13104
|
+
* 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
|
|
13105
|
+
* 须在 applyHorizontalLayout 之后调用。
|
|
13106
|
+
*/
|
|
13107
|
+
/**
|
|
13108
|
+
* 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
|
|
13109
|
+
* 须在 applyHorizontalLayout 之后调用。
|
|
13110
|
+
* @private
|
|
12956
13111
|
* @return {?}
|
|
12957
13112
|
*/
|
|
12958
|
-
HdTableComponent.prototype.
|
|
13113
|
+
HdTableComponent.prototype.refreshStickyOffsets = /**
|
|
13114
|
+
* 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
|
|
13115
|
+
* 须在 applyHorizontalLayout 之后调用。
|
|
13116
|
+
* @private
|
|
12959
13117
|
* @return {?}
|
|
12960
13118
|
*/
|
|
12961
13119
|
function () {
|
|
13120
|
+
var _this = this;
|
|
12962
13121
|
/** @type {?} */
|
|
12963
|
-
var
|
|
13122
|
+
var leftOffset = 0;
|
|
12964
13123
|
if (this.showSelected) {
|
|
12965
|
-
|
|
13124
|
+
leftOffset += SELECT_COL_WIDTH;
|
|
12966
13125
|
}
|
|
12967
13126
|
if (this.showTableTotal) {
|
|
12968
|
-
|
|
13127
|
+
leftOffset += this.lineNumberColWidth;
|
|
12969
13128
|
}
|
|
12970
|
-
this.tableCols.forEach((/**
|
|
13129
|
+
(this.tableCols || []).forEach((/**
|
|
12971
13130
|
* @param {?} item
|
|
12972
13131
|
* @return {?}
|
|
12973
13132
|
*/
|
|
@@ -12975,34 +13134,48 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
12975
13134
|
if (!item.width) {
|
|
12976
13135
|
item.width = ColWidth.fixColWidth;
|
|
12977
13136
|
}
|
|
12978
|
-
if (item
|
|
12979
|
-
item.fixedWidth =
|
|
12980
|
-
|
|
13137
|
+
if (_this.isColVisible(item)) {
|
|
13138
|
+
item.fixedWidth = leftOffset;
|
|
13139
|
+
leftOffset += _this.getColDisplayWidth(item);
|
|
12981
13140
|
}
|
|
12982
13141
|
}));
|
|
12983
|
-
// 右侧固定列:从右往左累计偏移,避免多列都 right:0 互相遮挡
|
|
12984
13142
|
/** @type {?} */
|
|
12985
13143
|
var rightOffset = 0;
|
|
12986
|
-
for (var i = this.tableCols.length - 1; i >= 0; i--) {
|
|
13144
|
+
for (var i = (this.tableCols || []).length - 1; i >= 0; i--) {
|
|
12987
13145
|
/** @type {?} */
|
|
12988
13146
|
var item = this.tableCols[i];
|
|
12989
|
-
if (item
|
|
13147
|
+
if (!this.isColVisible(item)) {
|
|
12990
13148
|
continue;
|
|
12991
13149
|
}
|
|
12992
13150
|
if (item.fixed === "right") {
|
|
12993
13151
|
item.fixedRightWidth = rightOffset;
|
|
12994
|
-
rightOffset += item
|
|
13152
|
+
rightOffset += this.getColDisplayWidth(item);
|
|
12995
13153
|
}
|
|
12996
13154
|
else {
|
|
12997
13155
|
item.fixedRightWidth = 0;
|
|
12998
13156
|
}
|
|
12999
13157
|
}
|
|
13158
|
+
};
|
|
13159
|
+
/**
|
|
13160
|
+
* @return {?}
|
|
13161
|
+
*/
|
|
13162
|
+
HdTableComponent.prototype.dealScroll = /**
|
|
13163
|
+
* @return {?}
|
|
13164
|
+
*/
|
|
13165
|
+
function () {
|
|
13166
|
+
(this.tableCols || []).forEach((/**
|
|
13167
|
+
* @param {?} item
|
|
13168
|
+
* @return {?}
|
|
13169
|
+
*/
|
|
13170
|
+
function (item) {
|
|
13171
|
+
if (!item.width) {
|
|
13172
|
+
item.width = ColWidth.fixColWidth;
|
|
13173
|
+
}
|
|
13174
|
+
}));
|
|
13000
13175
|
/** @type {?} */
|
|
13001
|
-
var layout = this.resolveHorizontalLayout(
|
|
13002
|
-
this.
|
|
13003
|
-
this.
|
|
13004
|
-
this.refreshFluidExtraTargetCol();
|
|
13005
|
-
this.tableColWidthTotal = layout.displayTotal;
|
|
13176
|
+
var layout = this.resolveHorizontalLayout(this.getDeclaredColWidthTotal());
|
|
13177
|
+
this.applyHorizontalLayout(layout);
|
|
13178
|
+
this.refreshStickyOffsets();
|
|
13006
13179
|
/** @type {?} */
|
|
13007
13180
|
var maxOffset = this.getScrollYMaxOffset();
|
|
13008
13181
|
/** @type {?} */
|
|
@@ -14239,7 +14412,7 @@ var HdTableComponent = /** @class */ (function () {
|
|
|
14239
14412
|
HdTableComponent.decorators = [
|
|
14240
14413
|
{ type: Component, args: [{
|
|
14241
14414
|
selector: "hd-table",
|
|
14242
|
-
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 <ng-container *ngIf=\"showColSettings\">\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-container>\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 [class.hd-table--fluid-x]=\"fluidHorizontal\" [class.hd-table--has-select]=\"showSelected\"\n [class.hd-table--has-total]=\"showTableTotal\" [nzScroll]=\"scroll\" [nzShowPagination]=\"pagination\"\n [nzShowSizeChanger]=\"pagination\" [nzShowQuickJumper]=\"pagination\" [nzFrontPagination]=\"useFrontPagination\"\n nzSize=\"middle\" [nzData]=\"tableData.content\" [nzTotal]=\"getTableTotalCount()\" [(nzPageIndex)]=\"tablePageIndex\"\n [nzLoading]=\"tableLoading\" [nzPageSizeOptions]=\"[ 10, 50, 100, 200, 500, 1000 ]\" [(nzPageSize)]=\"tablePageSize\"\n (nzPageSizeChange)=\"pagination ? search(true) : null\" (nzPageIndexChange)=\"pagination ? search(false) : null\"\n (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\" [nzShowTotal]=\"tableTotalTemplate\"\n [nzFooter]=\"showTableTotal ? tableTotalFooter : null\" [nzVirtualScroll]=\"useVirtualScroll\"\n [nzVirtualItemSize]=\"useVirtualScroll ? effectiveVirtualItemSize : 0\" [nzVirtualForTrackBy]=\"virtualTrackByRow\">\n <thead (nzSortChange)=\"sort($event)\" nzSingleSort>\n <tr>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected && selectType !== 'radio'\" nzShowCheckbox\n [(nzChecked)]=\"isAllDisplayDataChecked\" [nzIndeterminate]=\"isIndeterminate\"\n (nzCheckedChange)=\"checkAll($event)\"></th>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected && selectType === 'radio'\"></th>\n <th class=\"hd-table-line-no-col\" [nzWidth]=\"lineNumberColWidthPx\" [nzLeft]=\"lineNumberLeft\"\n *ngIf=\"showTableTotal\">\u5E8F\u53F7</th>\n <ng-container *ngFor=\"let col of tableCols\">\n <th *ngIf=\"col.isShow\" [nzWidth]=\"getColDisplayWidth(col) + 'px'\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\" [nzRight]=\"getRightSticky(col)\" nz-resizable nzBounds=\"window\" nzPreview\n (nzResizeEnd)=\"onResize($event, col)\" [nzShowSort]=\"col.canSort\" [nzSortKey]=\"col.name\"\n [nzSort]=\"getColSort(col)\">\n <span class=\"hd-table-col-title\">\n <span class=\"hd-table-col-require\" *ngIf=\"col.require && col.editType\">*</span>\n <ng-container *ngIf=\"getTitleParts(col) as titleParts; else plainTitle\">\n <span class=\"hd-table-title-with-bar\">{{ titleParts[0] }}<i class=\"hd-table-row-no-bar\"></i>{{\n titleParts[1] }}</span>\n </ng-container>\n <ng-template #plainTitle>{{ col.title }}</ng-template>\n </span>\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\" [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\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 [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\n <ng-container *ngTemplateOutlet=\"tableCells; context: { $implicit: data, index: i }\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n <ng-template #tableTotalTemplate>\n \u5171 {{ getTableTotalCount() }} \u6761\u6570\u636E\n </ng-template>\n <ng-template #tableTotalFooter>\n <!--\n \u5217\u603B\u5BBD < \u5BB9\u5668\uFF1Ascroll.x=\u5BB9\u5668\u5BBD\uFF0C\u5DEE\u989D\u8865\u5230\u6700\u540E\u4E1A\u52A1\u5217\uFF08\u52FE\u9009\u4FDD\u6301 40\uFF09\uFF1B\u53EF\u62D6\u62FD\u3002\n \u5217\u603B\u5BBD > \u5BB9\u5668\uFF1Ascroll.x=\u58F0\u660E\u603B\u5BBD\uFF0C\u6A2A\u6EDA\u540C\u6B65\u3002\n -->\n <div class=\"hd-table-total-footer\" [class.hd-table-total-footer--fluid]=\"isTotalFooterFluid\"\n [class.hd-table-total-footer--y-gutter]=\"totalFooterNeedYGutter\">\n <table class=\"hd-table-total-footer-table\" [style.width]=\"totalFooterTableWidth\">\n <colgroup>\n <!-- \u52FE\u9009/\u5E8F\u53F7\u9501\u5BBD\uFF0C\u4E0D\u53C2\u4E0E\u5747\u644A -->\n <col *ngIf=\"showSelected\" style=\"width: 40px; min-width: 40px; max-width: 40px;\" />\n <col *ngIf=\"showTableTotal\" [style.width.px]=\"lineNumberColWidth\" [style.min-width.px]=\"lineNumberColWidth\"\n [style.max-width.px]=\"lineNumberColWidth\" />\n <ng-container *ngFor=\"let col of tableCols; trackBy: trackByCol\">\n <col *ngIf=\"col.isShow\" [style.width.px]=\"getColDisplayWidth(col)\" />\n </ng-container>\n </colgroup>\n <tr class=\"hd-table-total\">\n <td *ngIf=\"showSelected\" class=\"hd-table-total-footer-cell hd-table-total-footer-select\"\n [class.hd-table-total-footer-sticky-left]=\"!isTotalFooterFluid\" style=\"left: 0;\"> </td>\n <td class=\"hd-table-total-footer-cell hd-table-total-footer-line-no\"\n [class.hd-table-total-footer-sticky-left]=\"!isTotalFooterFluid\"\n [style.left]=\"!isTotalFooterFluid ? lineNumberLeft : null\">\u5408\u8BA1</td>\n <ng-container *ngFor=\"let col of tableCols; let colIndex = index; trackBy: trackByCol\">\n <td *ngIf=\"col.isShow\" class=\"hd-table-total-footer-cell\"\n [class.hd-table-total-footer-sticky-left]=\"!isTotalFooterFluid && col.fixed === 'left'\"\n [class.hd-table-total-footer-sticky-right]=\"!isTotalFooterFluid && col.fixed === 'right'\"\n [class.hd-table-total-align-left]=\"getTableTotalCellAlign(col, colIndex) === 'left'\"\n [class.hd-table-total-align-center]=\"getTableTotalCellAlign(col, colIndex) === 'center'\"\n [class.hd-table-total-align-right]=\"getTableTotalCellAlign(col, colIndex) === 'right'\"\n [style.left]=\"!isTotalFooterFluid && col.fixed === 'left' ? (col.fixedWidth || 0) + 'px' : null\"\n [style.right]=\"!isTotalFooterFluid && col.fixed === 'right' ? (col.fixedRightWidth || 0) + 'px' : null\"\n [ngStyle]=\"{'text-align': getTableTotalCellAlign(col, colIndex)}\">\n {{ getTableTotalCellValue(col, colIndex) }}\n </td>\n </ng-container>\n </tr>\n </table>\n </div>\n </ng-template>\n </nz-table>\n</ng-container>\n\n<ng-template #tableCells let-data let-index=\"index\">\n <td nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected && selectType !== 'radio'\" nzShowCheckbox\n [nzChecked]=\"mapOfCheckedId[data[selectField]]\" [nzDisabled]=\"isSelectDisabled(data)\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <td nzWidth=\"40px\" nzLeft=\"0px\" class=\"hd-table-select-radio\" *ngIf=\"showSelected && selectType === 'radio'\">\n <label nz-radio [nzDisabled]=\"isSelectDisabled(data)\" [ngModel]=\"!!mapOfCheckedId[data[selectField]]\"\n (ngModelChange)=\"onRadioSelect($event, data)\"></label>\n </td>\n <td class=\"hd-table-line-no-col\" [nzWidth]=\"lineNumberColWidthPx\" [nzLeft]=\"lineNumberLeft\" *ngIf=\"showTableTotal\">{{\n getLineNumber(index) }}</td>\n <ng-container *ngFor=\"let col of tableCols; trackBy: trackByCol\">\n <td *ngIf=\"col.isShow\" [style.max-width.px]=\"getColDisplayWidth(col)\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\" [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 <ng-container *ngIf=\"hasInlineEdit(col); else displayCellTpl\">\n <div class=\"hd-table-cell-edit\">\n <ng-container [ngSwitch]=\"col.editType\">\n <input *ngSwitchCase=\"'input'\" nz-input class=\"hd-table-cell-edit-control\"\n [placeholder]=\"col.placeholder || ''\" [disabled]=\"isEditDisabled(col, data)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onCellChange(col, data, $event)\" />\n <nz-input-number *ngSwitchCase=\"'inputNumber'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"col.placeholder || ''\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzMin]=\"getInputNumberProp(col, 'min', 0)\" [nzMax]=\"getInputNumberProp(col, 'max', 99999999)\"\n [nzStep]=\"getInputNumberProp(col, 'step', 1)\" [nzPrecision]=\"getInputNumberProp(col, 'precision', 4)\"\n [ngModel]=\"data[col.name]\" (ngModelChange)=\"onCellChange(col, data, $event)\">\n </nz-input-number>\n <nz-select *ngSwitchCase=\"'select'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"col.placeholder || '\u8BF7\u9009\u62E9'\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzAllowClear]=\"col.selectOption && col.selectOption.hdAllowClear !== false\"\n [nzShowSearch]=\"!col.selectOption || col.selectOption.hdShowSearch !== false\"\n [nzServerSearch]=\"!!(col.selectOption && col.selectOption.hdServerSearch)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onSelectChange(col, data, $event)\"\n (nzOpenChange)=\"onSelectOpenChange(col, data, $event)\" (nzOnSearch)=\"onSelectSearch(col, data, $event)\">\n <nz-option *ngFor=\"let selectItem of getSelectList(col, data)\"\n [nzValue]=\"selectItem[col.selectOption.value]\" [nzLabel]=\"getSelectOptionLabel(col, selectItem)\">\n </nz-option>\n </nz-select>\n <nz-date-picker *ngSwitchCase=\"'date'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"col.placeholder || '\u8BF7\u9009\u62E9\u65E5\u671F'\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzDisabledDate]=\"getDisabledDate(col)\" [nzShowToday]=\"isDateShowToday(col)\"\n [nzShowTime]=\"isDateShowTime(col)\" [nzFormat]=\"getDateFormat(col, false)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onCellChange(col, data, $event)\">\n </nz-date-picker>\n <nz-range-picker *ngSwitchCase=\"'dateRange'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"getRangePlaceholder(col)\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzDisabledDate]=\"getDisabledDate(col)\" [nzFormat]=\"getDateFormat(col, true)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onCellChange(col, data, $event)\">\n </nz-range-picker>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #displayCellTpl>\n <div [class.hd-table-cell-with-actions]=\"col.btnList && col.btnList.length\">\n <div class=\"hd-table-cell-value\" [class.hd-table-cell-value--rowno]=\"hasRowNo(col)\"\n [class.hd-table-cell-value--edit]=\"isEditable(col, data)\">\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\"\n nz-tooltip [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\" [ngStyle]=\"{'color': getLinkCellColor(col, data, cell.isEmpty)}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ cell.display }}</a>\n <a *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': getLinkCellColor(col, data, cell.isEmpty)}\"\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\"\n nz-tooltip [nzTooltipTitle]=\"cell.title\" [ngStyle]=\"{'color': getPlainCellColor(col, data)}\">{{\n cell.display }}</span>\n <span *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': getPlainCellColor(col, data)}\">{{ cell.display }}</span>\n </ng-container>\n </ng-template>\n </ng-template>\n <span class=\"hd-table-row-no\" *ngIf=\"hasRowNo(col) && getRowNoText(col, data, index)\">\n <i class=\"hd-table-row-no-bar\"></i>{{ getRowNoText(col, data, index) }}\n </span>\n <a *ngIf=\"isEditable(col, data)\" class=\"hd-table-edit-icon\" href=\"javascript:;\" title=\"\u7F16\u8F91\"\n (click)=\"onEditClick($event, col, data)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M8.10797 1.42626C8.44968 1.08456 9.0037 1.08456 9.34541 1.42626L10.9746 3.05542C11.3163 3.39713 11.3163 3.95115 10.9746 4.29286L5.01002 10.2574C4.87077 10.3967 4.68863 10.4849 4.49305 10.5078L2.72936 10.7142C2.18281 10.7782 1.71357 10.3278 1.7551 9.77914L1.89441 7.93871C1.9102 7.73007 2.00024 7.53399 2.14819 7.38604L8.10797 1.42626ZM7.67304 3.51111L8.88972 4.72779L9.94337 3.67414L8.72669 2.45746L7.67304 3.51111ZM8.06477 5.55274L6.84808 4.33606L3.04959 8.13456L2.94515 9.51434L4.25672 9.36079L8.06477 5.55274ZM12.25 12.8333L1.75 12.8333V11.6666L12.25 11.6666V12.8333Z\"\n fill=\"currentColor\" />\n </svg>\n </a>\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 </ng-template>\n </td>\n </ng-container>\n</ng-template>",
|
|
14415
|
+
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 <ng-container *ngIf=\"showColSettings\">\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-container>\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 [class.hd-table--fluid-x]=\"fluidHorizontal\" [class.hd-table--has-select]=\"showSelected\"\n [class.hd-table--has-total]=\"showTableTotal\" [nzScroll]=\"scroll\" [nzShowPagination]=\"pagination\"\n [nzShowSizeChanger]=\"pagination\" [nzShowQuickJumper]=\"pagination\" [nzFrontPagination]=\"useFrontPagination\"\n nzSize=\"middle\" [nzData]=\"tableData.content\" [nzTotal]=\"getTableTotalCount()\" [(nzPageIndex)]=\"tablePageIndex\"\n [nzLoading]=\"tableLoading\" [nzPageSizeOptions]=\"[ 10, 50, 100, 200, 500, 1000 ]\" [(nzPageSize)]=\"tablePageSize\"\n (nzPageSizeChange)=\"pagination ? search(true) : null\" (nzPageIndexChange)=\"pagination ? search(false) : null\"\n (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\" [nzShowTotal]=\"tableTotalTemplate\"\n [nzFooter]=\"showTableTotal ? tableTotalFooter : null\" [nzVirtualScroll]=\"useVirtualScroll\"\n [nzVirtualItemSize]=\"useVirtualScroll ? effectiveVirtualItemSize : 0\" [nzVirtualForTrackBy]=\"virtualTrackByRow\">\n <thead (nzSortChange)=\"sort($event)\" nzSingleSort>\n <tr>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected && selectType !== 'radio'\" nzShowCheckbox\n [(nzChecked)]=\"isAllDisplayDataChecked\" [nzIndeterminate]=\"isIndeterminate\"\n (nzCheckedChange)=\"checkAll($event)\"></th>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected && selectType === 'radio'\"></th>\n <th class=\"hd-table-line-no-col\" [nzWidth]=\"lineNumberColWidthPx\" [nzLeft]=\"lineNumberLeft\"\n *ngIf=\"showTableTotal\">\u5E8F\u53F7</th>\n <ng-container *ngFor=\"let col of tableCols\">\n <th *ngIf=\"col.isShow\" [nzWidth]=\"getColDisplayWidth(col) + 'px'\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\" [nzRight]=\"getRightSticky(col)\" nz-resizable nzBounds=\"window\" nzPreview\n (nzResizeEnd)=\"onResize($event, col)\" [nzShowSort]=\"col.canSort\" [nzSortKey]=\"col.name\"\n [nzSort]=\"getColSort(col)\">\n <span class=\"hd-table-col-title\">\n <span class=\"hd-table-col-require\" *ngIf=\"col.require && col.editType\">*</span>\n <ng-container *ngIf=\"getTitleParts(col) as titleParts; else plainTitle\">\n <span class=\"hd-table-title-with-bar\">{{ titleParts[0] }}<i class=\"hd-table-row-no-bar\"></i>{{\n titleParts[1] }}</span>\n </ng-container>\n <ng-template #plainTitle>{{ col.title }}</ng-template>\n </span>\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\" [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\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 [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\n <ng-container *ngTemplateOutlet=\"tableCells; context: { $implicit: data, index: i }\"></ng-container>\n </tr>\n </ng-container>\n </tbody>\n <ng-template #tableTotalTemplate>\n \u5171 {{ getTableTotalCount() }} \u6761\u6570\u636E\n </ng-template>\n <ng-template #tableTotalFooter>\n <!--\n \u5217\u603B\u5BBD < \u5BB9\u5668\uFF1Ascroll.x=\u5BB9\u5668\u5BBD\uFF0C\u5DEE\u989D\u6309\u58F0\u660E\u5BBD\u6BD4\u4F8B\u5206\u5230\u5404\u4E1A\u52A1\u5217\uFF08\u52FE\u9009\u4FDD\u6301 40\uFF09\uFF1B\u53EF\u62D6\u62FD\u3002\n \u5217\u603B\u5BBD > \u5BB9\u5668\uFF1Ascroll.x=\u58F0\u660E\u603B\u5BBD\uFF0C\u6A2A\u6EDA\u540C\u6B65\u3002\n -->\n <div class=\"hd-table-total-footer\" [class.hd-table-total-footer--fluid]=\"isTotalFooterFluid\"\n [class.hd-table-total-footer--y-gutter]=\"totalFooterNeedYGutter\">\n <table class=\"hd-table-total-footer-table\" [style.width]=\"totalFooterTableWidth\">\n <colgroup>\n <!-- \u52FE\u9009/\u5E8F\u53F7\u9501\u5BBD\uFF0C\u4E0D\u53C2\u4E0E\u5747\u644A -->\n <col *ngIf=\"showSelected\" style=\"width: 40px; min-width: 40px; max-width: 40px;\" />\n <col *ngIf=\"showTableTotal\" [style.width.px]=\"lineNumberColWidth\" [style.min-width.px]=\"lineNumberColWidth\"\n [style.max-width.px]=\"lineNumberColWidth\" />\n <ng-container *ngFor=\"let col of tableCols; trackBy: trackByCol\">\n <col *ngIf=\"col.isShow\" [style.width.px]=\"getColDisplayWidth(col)\" />\n </ng-container>\n </colgroup>\n <tr class=\"hd-table-total\">\n <td *ngIf=\"showSelected\" class=\"hd-table-total-footer-cell hd-table-total-footer-select\"\n [class.hd-table-total-footer-sticky-left]=\"!isTotalFooterFluid\" style=\"left: 0;\"> </td>\n <td class=\"hd-table-total-footer-cell hd-table-total-footer-line-no\"\n [class.hd-table-total-footer-sticky-left]=\"!isTotalFooterFluid\"\n [style.left]=\"!isTotalFooterFluid ? lineNumberLeft : null\">\u5408\u8BA1</td>\n <ng-container *ngFor=\"let col of tableCols; let colIndex = index; trackBy: trackByCol\">\n <td *ngIf=\"col.isShow\" class=\"hd-table-total-footer-cell\"\n [class.hd-table-total-footer-sticky-left]=\"!isTotalFooterFluid && col.fixed === 'left'\"\n [class.hd-table-total-footer-sticky-right]=\"!isTotalFooterFluid && col.fixed === 'right'\"\n [class.hd-table-total-align-left]=\"getTableTotalCellAlign(col, colIndex) === 'left'\"\n [class.hd-table-total-align-center]=\"getTableTotalCellAlign(col, colIndex) === 'center'\"\n [class.hd-table-total-align-right]=\"getTableTotalCellAlign(col, colIndex) === 'right'\"\n [style.left]=\"!isTotalFooterFluid && col.fixed === 'left' ? (col.fixedWidth || 0) + 'px' : null\"\n [style.right]=\"!isTotalFooterFluid && col.fixed === 'right' ? (col.fixedRightWidth || 0) + 'px' : null\"\n [ngStyle]=\"{'text-align': getTableTotalCellAlign(col, colIndex)}\">\n {{ getTableTotalCellValue(col, colIndex) }}\n </td>\n </ng-container>\n </tr>\n </table>\n </div>\n </ng-template>\n </nz-table>\n</ng-container>\n\n<ng-template #tableCells let-data let-index=\"index\">\n <td nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showSelected && selectType !== 'radio'\" nzShowCheckbox\n [nzChecked]=\"mapOfCheckedId[data[selectField]]\" [nzDisabled]=\"isSelectDisabled(data)\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <td nzWidth=\"40px\" nzLeft=\"0px\" class=\"hd-table-select-radio\" *ngIf=\"showSelected && selectType === 'radio'\">\n <label nz-radio [nzDisabled]=\"isSelectDisabled(data)\" [ngModel]=\"!!mapOfCheckedId[data[selectField]]\"\n (ngModelChange)=\"onRadioSelect($event, data)\"></label>\n </td>\n <td class=\"hd-table-line-no-col\" [nzWidth]=\"lineNumberColWidthPx\" [nzLeft]=\"lineNumberLeft\" *ngIf=\"showTableTotal\">{{\n getLineNumber(index) }}</td>\n <ng-container *ngFor=\"let col of tableCols; trackBy: trackByCol\">\n <td *ngIf=\"col.isShow\" [style.max-width.px]=\"getColDisplayWidth(col)\" [nzAlign]=\"col.align\"\n [nzLeft]=\"getLeftSticky(col)\" [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 <ng-container *ngIf=\"hasInlineEdit(col); else displayCellTpl\">\n <div class=\"hd-table-cell-edit\">\n <ng-container [ngSwitch]=\"col.editType\">\n <input *ngSwitchCase=\"'input'\" nz-input class=\"hd-table-cell-edit-control\"\n [placeholder]=\"col.placeholder || ''\" [disabled]=\"isEditDisabled(col, data)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onCellChange(col, data, $event)\" />\n <nz-input-number *ngSwitchCase=\"'inputNumber'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"col.placeholder || ''\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzMin]=\"getInputNumberProp(col, 'min', 0)\" [nzMax]=\"getInputNumberProp(col, 'max', 99999999)\"\n [nzStep]=\"getInputNumberProp(col, 'step', 1)\" [nzPrecision]=\"getInputNumberProp(col, 'precision', 4)\"\n [ngModel]=\"data[col.name]\" (ngModelChange)=\"onCellChange(col, data, $event)\">\n </nz-input-number>\n <nz-select *ngSwitchCase=\"'select'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"col.placeholder || '\u8BF7\u9009\u62E9'\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzAllowClear]=\"col.selectOption && col.selectOption.hdAllowClear !== false\"\n [nzShowSearch]=\"!col.selectOption || col.selectOption.hdShowSearch !== false\"\n [nzServerSearch]=\"!!(col.selectOption && col.selectOption.hdServerSearch)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onSelectChange(col, data, $event)\"\n (nzOpenChange)=\"onSelectOpenChange(col, data, $event)\" (nzOnSearch)=\"onSelectSearch(col, data, $event)\">\n <nz-option *ngFor=\"let selectItem of getSelectList(col, data)\"\n [nzValue]=\"selectItem[col.selectOption.value]\" [nzLabel]=\"getSelectOptionLabel(col, selectItem)\">\n </nz-option>\n </nz-select>\n <nz-date-picker *ngSwitchCase=\"'date'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"col.placeholder || '\u8BF7\u9009\u62E9\u65E5\u671F'\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzDisabledDate]=\"getDisabledDate(col)\" [nzShowToday]=\"isDateShowToday(col)\"\n [nzShowTime]=\"isDateShowTime(col)\" [nzFormat]=\"getDateFormat(col, false)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onCellChange(col, data, $event)\">\n </nz-date-picker>\n <nz-range-picker *ngSwitchCase=\"'dateRange'\" class=\"hd-table-cell-edit-control\"\n [nzPlaceHolder]=\"getRangePlaceholder(col)\" [nzDisabled]=\"isEditDisabled(col, data)\"\n [nzDisabledDate]=\"getDisabledDate(col)\" [nzFormat]=\"getDateFormat(col, true)\" [ngModel]=\"data[col.name]\"\n (ngModelChange)=\"onCellChange(col, data, $event)\">\n </nz-range-picker>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #displayCellTpl>\n <div [class.hd-table-cell-with-actions]=\"col.btnList && col.btnList.length\">\n <div class=\"hd-table-cell-value\" [class.hd-table-cell-value--rowno]=\"hasRowNo(col)\"\n [class.hd-table-cell-value--edit]=\"isEditable(col, data)\">\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\"\n nz-tooltip [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\" [ngStyle]=\"{'color': getLinkCellColor(col, data, cell.isEmpty)}\"\n (click)=\"triggerEvent(col.click || null, data)\">{{ cell.display }}</a>\n <a *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': getLinkCellColor(col, data, cell.isEmpty)}\"\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\"\n nz-tooltip [nzTooltipTitle]=\"cell.title\" [ngStyle]=\"{'color': getPlainCellColor(col, data)}\">{{\n cell.display }}</span>\n <span *ngIf=\"!cell.overflow || (col.canWarp && showDetail)\"\n [ngStyle]=\"{'color': getPlainCellColor(col, data)}\">{{ cell.display }}</span>\n </ng-container>\n </ng-template>\n </ng-template>\n <span class=\"hd-table-row-no\" *ngIf=\"hasRowNo(col) && getRowNoText(col, data, index)\">\n <i class=\"hd-table-row-no-bar\"></i>{{ getRowNoText(col, data, index) }}\n </span>\n <a *ngIf=\"isEditable(col, data)\" class=\"hd-table-edit-icon\" href=\"javascript:;\" title=\"\u7F16\u8F91\"\n (click)=\"onEditClick($event, col, data)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M8.10797 1.42626C8.44968 1.08456 9.0037 1.08456 9.34541 1.42626L10.9746 3.05542C11.3163 3.39713 11.3163 3.95115 10.9746 4.29286L5.01002 10.2574C4.87077 10.3967 4.68863 10.4849 4.49305 10.5078L2.72936 10.7142C2.18281 10.7782 1.71357 10.3278 1.7551 9.77914L1.89441 7.93871C1.9102 7.73007 2.00024 7.53399 2.14819 7.38604L8.10797 1.42626ZM7.67304 3.51111L8.88972 4.72779L9.94337 3.67414L8.72669 2.45746L7.67304 3.51111ZM8.06477 5.55274L6.84808 4.33606L3.04959 8.13456L2.94515 9.51434L4.25672 9.36079L8.06477 5.55274ZM12.25 12.8333L1.75 12.8333V11.6666L12.25 11.6666V12.8333Z\"\n fill=\"currentColor\" />\n </svg>\n </a>\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 </ng-template>\n </td>\n </ng-container>\n</ng-template>",
|
|
14243
14416
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
14244
14417
|
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--multiple .ant-select-selection__rendered>ul>li.ant-select-search--inline:only-child{margin-left:4px}::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 .ant-table-tbody>tr>td.hd-table-line-no-col,.hd-table-container ::ng-deep .ant-table-thead>tr>th.hd-table-line-no-col{width:72px!important;min-width:72px!important;max-width:72px!important;box-sizing:border-box}.hd-table-container ::ng-deep .ant-table-tbody>tr>td.ant-table-selection-column,.hd-table-container ::ng-deep .ant-table-thead>tr>th.ant-table-selection-column{width:40px!important;min-width:40px!important;max-width:40px!important;box-sizing:border-box;padding-left:8px!important;padding-right:8px!important}.hd-table-container .hd-table-cell-value--edit,.hd-table-container .hd-table-cell-value--rowno{display:inline-flex;align-items:center;min-width:0}.hd-table-container .hd-table-cell-value--edit>a:not(.hd-table-edit-icon),.hd-table-container .hd-table-cell-value--edit>hd-status,.hd-table-container .hd-table-cell-value--edit>span:not(.hd-table-row-no),.hd-table-container .hd-table-cell-value--rowno>a:not(.hd-table-edit-icon),.hd-table-container .hd-table-cell-value--rowno>hd-status,.hd-table-container .hd-table-cell-value--rowno>span:not(.hd-table-row-no){min-width:0}.hd-table-container .hd-table-row-no{display:inline-flex;flex-shrink:0;align-items:center;margin-left:4px;color:#1d1f29;font-size:14px;line-height:22px}.hd-table-container .hd-table-row-no-bar{display:inline-block;flex:0 0 auto;align-self:center;width:1px;height:14px;margin-right:4px;background:#1d1f29;vertical-align:middle}.hd-table-container .hd-table-edit-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;margin-left:2px;width:14px;height:14px;color:#20b95d;line-height:1;cursor:pointer}.hd-table-container .hd-table-edit-icon:hover{color:#20bd62}.hd-table-container .hd-table-edit-icon svg{display:block;width:14px;height:14px}.hd-table-container .hd-table-col-title{display:inline-flex;align-items:center}.hd-table-container .hd-table-col-require{margin-right:4px;color:#f5222d;font-family:SimSun,sans-serif}.hd-table-container .hd-table-title-with-bar{display:inline-flex;align-items:center}.hd-table-container .hd-table-title-with-bar .hd-table-row-no-bar{width:1px;height:14px;margin:0 4px;align-self:center}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td.ant-table-td-right-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td.ant-table-td-right-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td.ant-table-td-right-sticky{background:#f7f8fa!important;color:#868a9c!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group>a{color:#20b95d!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group>a:hover{color:#20bd62!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group .common-danger-btn:hover{color:#f05b24!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .hd-table-cell-value>a{color:#20b95d}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-billNumber>a{color:#3b77e3}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .hd-status-text{color:#868a9c!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.hd-table--scroll-x ::ng-deep .ant-table-body>table,.hd-table-container.hd-table--scroll-x ::ng-deep .ant-table-header>table,.hd-table-container.hd-table--scroll-x ::ng-deep .cdk-virtual-scroll-content-wrapper>table{table-layout:fixed}.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}.hd-table-container.hd-table--scroll-x:not(.hd-table--scroll-y) ::ng-deep .ant-table-body{overflow-y:hidden!important}.hd-table-container.hd-table--fluid-x ::ng-deep .ant-table-body{overflow-x:hidden!important}.hd-table-container.hd-table--fluid-x.hd-table--scroll-y ::ng-deep .ant-table-header{margin-bottom:0!important;padding-bottom:0!important;overflow-x:hidden!important}.hd-table-container.hd-table--has-total ::ng-deep .ant-table-footer{padding:0;overflow:hidden;background:#fafafa;border-top:1px solid #e8e8e8}.hd-table-total-footer{width:100%;box-sizing:border-box;overflow-x:auto;overflow-y:hidden;background:#fafafa;scrollbar-width:thin;scrollbar-color:transparent transparent}.hd-table-total-footer::-webkit-scrollbar{width:12px;height:0}.hd-table-total-footer::-webkit-scrollbar-track{background:0 0}.hd-table-total-footer::-webkit-scrollbar-thumb{background:padding-box;border:4px solid transparent}.hd-table-total-footer::-webkit-scrollbar-corner{background:0 0}.hd-table-total-footer.hd-table-total-footer--y-gutter{overflow-y:scroll}.hd-table-total-footer.hd-table-total-footer--fluid{overflow-x:hidden}.hd-table-total-footer-table{table-layout:fixed;border-collapse:separate;border-spacing:0}.hd-table-total-footer-cell{padding:12px 8px;font-weight:500;background:#fafafa;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:0}.hd-table-total-footer-cell.hd-table-total-align-left{text-align:left!important}.hd-table-total-footer-cell.hd-table-total-align-center{text-align:center!important}.hd-table-total-footer-cell.hd-table-total-align-right{text-align:right!important}.hd-table-select-radio{text-align:center}.hd-table-select-radio ::ng-deep .ant-radio-wrapper{margin-right:0}.hd-table-total-footer-select{width:40px;min-width:40px;max-width:40px;padding-left:8px;padding-right:8px;text-align:center}.hd-table-total-footer-line-no{width:72px;min-width:72px;max-width:72px}.hd-table-total-footer-sticky-left,.hd-table-total-footer-sticky-right{position:-webkit-sticky;position:sticky;z-index:2;background:#fafafa}::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}.hd-table-cell-edit{width:100%;min-width:0}.hd-table-cell-edit-control{width:100%!important}::ng-deep .hd-table-cell-edit .ant-calendar-picker,::ng-deep .hd-table-cell-edit .ant-input,::ng-deep .hd-table-cell-edit .ant-input-number,::ng-deep .hd-table-cell-edit .ant-select{width:100%}::ng-deep .hd-table-cell-edit .ant-input,::ng-deep .hd-table-cell-edit .ant-input-number,::ng-deep .hd-table-cell-edit .ant-select-selection{height:32px}::ng-deep .hd-table-cell-edit .ant-input-number-input{height:30px}::ng-deep .hd-table-cell-edit .ant-select-selection__rendered{line-height:30px}"]
|
|
14245
14418
|
}] }
|
|
@@ -14477,28 +14650,26 @@ if (false) {
|
|
|
14477
14650
|
*/
|
|
14478
14651
|
HdTableComponent.prototype.virtualScrollActive;
|
|
14479
14652
|
/**
|
|
14480
|
-
*
|
|
14653
|
+
* 实际渲染列宽合计(含勾选/序号 + 补宽),合计 footer 表宽用
|
|
14481
14654
|
* @type {?}
|
|
14482
14655
|
*/
|
|
14483
14656
|
HdTableComponent.prototype.tableColWidthTotal;
|
|
14484
14657
|
/**
|
|
14485
|
-
*
|
|
14486
|
-
* 并设 scroll.x = 容器宽,避免表宽 100% 均摊撑开勾选列;拖拽改宽仍写 col.width。
|
|
14658
|
+
* 待按比例分给各业务列的总补宽;只影响展示,不写回 col.width(列宽缓存、拖拽仍用声明宽)
|
|
14487
14659
|
* @type {?}
|
|
14488
14660
|
*/
|
|
14489
14661
|
HdTableComponent.prototype.fluidExtraWidth;
|
|
14490
14662
|
/**
|
|
14491
|
-
*
|
|
14492
|
-
* 用于关掉 ng-zorro fixed-header 带来的常驻 X 轴滚动条。
|
|
14663
|
+
* 列少、靠补宽吃满容器:模板据此加 hd-table--fluid-x,隐藏 fixed-header 常驻的横滚槽
|
|
14493
14664
|
* @type {?}
|
|
14494
14665
|
*/
|
|
14495
14666
|
HdTableComponent.prototype.fluidHorizontal;
|
|
14496
14667
|
/**
|
|
14497
|
-
*
|
|
14668
|
+
* 各业务列分到的补宽(按列对象取,applyHorizontalLayout 时整表重建)
|
|
14498
14669
|
* @type {?}
|
|
14499
14670
|
* @private
|
|
14500
14671
|
*/
|
|
14501
|
-
HdTableComponent.prototype.
|
|
14672
|
+
HdTableComponent.prototype.fluidExtraByCol;
|
|
14502
14673
|
/**
|
|
14503
14674
|
* 数据更新后待复位纵向滚动位置
|
|
14504
14675
|
* @type {?}
|