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
|
@@ -1502,7 +1502,8 @@
|
|
|
1502
1502
|
return getTableViewportWidth(nzTable, hostClass);
|
|
1503
1503
|
}
|
|
1504
1504
|
/**
|
|
1505
|
-
* 无数据或列宽未超出容器时不启用横向 scroll
|
|
1505
|
+
* 无数据或列宽未超出容器时不启用横向 scroll(表宽 100%、table-layout: auto)。
|
|
1506
|
+
* auto 布局下单元格 max-width 不生效,固定宽列会被均摊撑开;需要锁宽的场景见 hd-table 的横向布局。
|
|
1506
1507
|
* @param {?} nzTable
|
|
1507
1508
|
* @param {?} hasData
|
|
1508
1509
|
* @param {?=} colWidth
|
|
@@ -10951,6 +10952,67 @@
|
|
|
10951
10952
|
* @fileoverview added by tsickle
|
|
10952
10953
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
10953
10954
|
*/
|
|
10955
|
+
/**
|
|
10956
|
+
* 勾选列宽(px),与模板 nzWidth、less 兜底保持一致
|
|
10957
|
+
* @type {?}
|
|
10958
|
+
*/
|
|
10959
|
+
var SELECT_COL_WIDTH = 40;
|
|
10960
|
+
/**
|
|
10961
|
+
* 横向布局计算结果
|
|
10962
|
+
* @record
|
|
10963
|
+
*/
|
|
10964
|
+
function HdTableHorizontalLayout() { }
|
|
10965
|
+
if (false) {
|
|
10966
|
+
/**
|
|
10967
|
+
* 传给 nzScroll.x;只有列宽总和 <= 0 时为 null
|
|
10968
|
+
* @type {?}
|
|
10969
|
+
*/
|
|
10970
|
+
HdTableHorizontalLayout.prototype.scrollX;
|
|
10971
|
+
/**
|
|
10972
|
+
* 按声明宽比例分给各业务列的总补宽,列多时为 0
|
|
10973
|
+
* @type {?}
|
|
10974
|
+
*/
|
|
10975
|
+
HdTableHorizontalLayout.prototype.fluidExtra;
|
|
10976
|
+
/**
|
|
10977
|
+
* 实际渲染总宽 = 声明总宽 + fluidExtra
|
|
10978
|
+
* @type {?}
|
|
10979
|
+
*/
|
|
10980
|
+
HdTableHorizontalLayout.prototype.displayTotal;
|
|
10981
|
+
/**
|
|
10982
|
+
* 列少、靠补宽吃满容器,不需要真正横滚
|
|
10983
|
+
* @type {?}
|
|
10984
|
+
*/
|
|
10985
|
+
HdTableHorizontalLayout.prototype.isFluid;
|
|
10986
|
+
}
|
|
10987
|
+
/**
|
|
10988
|
+
* 列多(或量不到容器宽):scroll.x = 声明总宽,正常横滚
|
|
10989
|
+
* @param {?} declaredWidth
|
|
10990
|
+
* @return {?}
|
|
10991
|
+
*/
|
|
10992
|
+
function fixedLayout(declaredWidth) {
|
|
10993
|
+
return {
|
|
10994
|
+
scrollX: Math.ceil(declaredWidth) + "px",
|
|
10995
|
+
fluidExtra: 0,
|
|
10996
|
+
displayTotal: declaredWidth,
|
|
10997
|
+
isFluid: false,
|
|
10998
|
+
};
|
|
10999
|
+
}
|
|
11000
|
+
/**
|
|
11001
|
+
* 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列
|
|
11002
|
+
* @param {?} containerWidth
|
|
11003
|
+
* @param {?} declaredWidth
|
|
11004
|
+
* @return {?}
|
|
11005
|
+
*/
|
|
11006
|
+
function fluidLayout(containerWidth, declaredWidth) {
|
|
11007
|
+
/** @type {?} */
|
|
11008
|
+
var fluidExtra = Math.max(0, containerWidth - declaredWidth);
|
|
11009
|
+
return {
|
|
11010
|
+
scrollX: containerWidth + "px",
|
|
11011
|
+
fluidExtra: fluidExtra,
|
|
11012
|
+
displayTotal: declaredWidth + fluidExtra,
|
|
11013
|
+
isFluid: true,
|
|
11014
|
+
};
|
|
11015
|
+
}
|
|
10954
11016
|
var HdTableComponent = /** @class */ (function () {
|
|
10955
11017
|
function HdTableComponent(hostEl, cdr, commonSessionService) {
|
|
10956
11018
|
var _this = this;
|
|
@@ -11036,23 +11098,21 @@
|
|
|
11036
11098
|
*/
|
|
11037
11099
|
this.virtualScrollActive = null;
|
|
11038
11100
|
/**
|
|
11039
|
-
*
|
|
11101
|
+
* 实际渲染列宽合计(含勾选/序号 + 补宽),合计 footer 表宽用
|
|
11040
11102
|
*/
|
|
11041
11103
|
this.tableColWidthTotal = 0;
|
|
11042
11104
|
/**
|
|
11043
|
-
*
|
|
11044
|
-
* 并设 scroll.x = 容器宽,避免表宽 100% 均摊撑开勾选列;拖拽改宽仍写 col.width。
|
|
11105
|
+
* 待按比例分给各业务列的总补宽;只影响展示,不写回 col.width(列宽缓存、拖拽仍用声明宽)
|
|
11045
11106
|
*/
|
|
11046
11107
|
this.fluidExtraWidth = 0;
|
|
11047
11108
|
/**
|
|
11048
|
-
*
|
|
11049
|
-
* 用于关掉 ng-zorro fixed-header 带来的常驻 X 轴滚动条。
|
|
11109
|
+
* 列少、靠补宽吃满容器:模板据此加 hd-table--fluid-x,隐藏 fixed-header 常驻的横滚槽
|
|
11050
11110
|
*/
|
|
11051
11111
|
this.fluidHorizontal = false;
|
|
11052
11112
|
/**
|
|
11053
|
-
*
|
|
11113
|
+
* 各业务列分到的补宽(按列对象取,applyHorizontalLayout 时整表重建)
|
|
11054
11114
|
*/
|
|
11055
|
-
this.
|
|
11115
|
+
this.fluidExtraByCol = new Map();
|
|
11056
11116
|
/**
|
|
11057
11117
|
* 数据更新后待复位纵向滚动位置
|
|
11058
11118
|
*/
|
|
@@ -11274,10 +11334,8 @@
|
|
|
11274
11334
|
changes["tableData"]["currentValue"]["pageNumber"] !==
|
|
11275
11335
|
changes["tableData"]["previousValue"]["pageNumber"]) {
|
|
11276
11336
|
this.pendingResetScrollTop = true;
|
|
11277
|
-
// pageSize
|
|
11278
|
-
//
|
|
11279
|
-
// virtualScroll=false 时若这里跳过,空表初始化后的 fluid 不会补上,勾选列被撑开。
|
|
11280
|
-
// applyTableScrollMode(false) 在模式未变时只 dealScroll,不会强制重建清排序态。
|
|
11337
|
+
// 业务可能把 Page.pageSize 写成 content.length,换数据时就会走到这里,
|
|
11338
|
+
// 必须重算横向布局。滚动模式不变时不会重建,排序态不会被清掉。
|
|
11281
11339
|
this.applyTableScrollMode(false);
|
|
11282
11340
|
// 翻页/改 pageSize:主动多次复位,覆盖 CDK 异步渲染时序
|
|
11283
11341
|
this.scheduleResetTableBodyScrollTop();
|
|
@@ -11289,9 +11347,7 @@
|
|
|
11289
11347
|
}
|
|
11290
11348
|
if (changes["tableData"]) {
|
|
11291
11349
|
this.pendingResetScrollTop = true;
|
|
11292
|
-
//
|
|
11293
|
-
// 收款/付款编辑等页 [virtualScroll]=false + 异步灌数据:原先跳过会导致
|
|
11294
|
-
// 空表初始化后不再补宽,勾选列被均摊撑开。
|
|
11350
|
+
// 不论是否虚拟滚动,数据变化后都要重算横向布局
|
|
11295
11351
|
this.applyTableScrollMode(false);
|
|
11296
11352
|
// 数据更新后复位纵向滚动(含虚拟滚动场景)
|
|
11297
11353
|
this.scheduleResetTableBodyScrollTop();
|
|
@@ -11532,13 +11588,13 @@
|
|
|
11532
11588
|
return col.fixed === "left" ? (col.fixedWidth || 0) + "px" : null;
|
|
11533
11589
|
};
|
|
11534
11590
|
Object.defineProperty(HdTableComponent.prototype, "lineNumberLeft", {
|
|
11535
|
-
/** 开启合计时序号列的 left
|
|
11591
|
+
/** 开启合计时序号列的 left(跟在勾选列后面) */
|
|
11536
11592
|
get: /**
|
|
11537
|
-
* 开启合计时序号列的 left
|
|
11593
|
+
* 开启合计时序号列的 left(跟在勾选列后面)
|
|
11538
11594
|
* @return {?}
|
|
11539
11595
|
*/
|
|
11540
11596
|
function () {
|
|
11541
|
-
return this.showSelected ?
|
|
11597
|
+
return (this.showSelected ? SELECT_COL_WIDTH : 0) + "px";
|
|
11542
11598
|
},
|
|
11543
11599
|
enumerable: true,
|
|
11544
11600
|
configurable: true
|
|
@@ -11569,64 +11625,194 @@
|
|
|
11569
11625
|
enumerable: true,
|
|
11570
11626
|
configurable: true
|
|
11571
11627
|
});
|
|
11572
|
-
/** 展示用列宽:fluid 时最后一列业务列 = 声明宽 + fluidExtraWidth */
|
|
11573
11628
|
/**
|
|
11574
|
-
*
|
|
11629
|
+
* @private
|
|
11630
|
+
* @param {?} col
|
|
11631
|
+
* @return {?}
|
|
11632
|
+
*/
|
|
11633
|
+
HdTableComponent.prototype.isColVisible = /**
|
|
11634
|
+
* @private
|
|
11635
|
+
* @param {?} col
|
|
11636
|
+
* @return {?}
|
|
11637
|
+
*/
|
|
11638
|
+
function (col) {
|
|
11639
|
+
return !!col && col.isShow !== false;
|
|
11640
|
+
};
|
|
11641
|
+
/** 业务列声明宽:未配置时按 fixColWidth */
|
|
11642
|
+
/**
|
|
11643
|
+
* 业务列声明宽:未配置时按 fixColWidth
|
|
11644
|
+
* @private
|
|
11645
|
+
* @param {?} col
|
|
11646
|
+
* @return {?}
|
|
11647
|
+
*/
|
|
11648
|
+
HdTableComponent.prototype.getColDeclaredWidth = /**
|
|
11649
|
+
* 业务列声明宽:未配置时按 fixColWidth
|
|
11650
|
+
* @private
|
|
11651
|
+
* @param {?} col
|
|
11652
|
+
* @return {?}
|
|
11653
|
+
*/
|
|
11654
|
+
function (col) {
|
|
11655
|
+
return col && col.width > 0 ? col.width : ColWidth.fixColWidth;
|
|
11656
|
+
};
|
|
11657
|
+
/** 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽 */
|
|
11658
|
+
/**
|
|
11659
|
+
* 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽
|
|
11660
|
+
* @private
|
|
11661
|
+
* @return {?}
|
|
11662
|
+
*/
|
|
11663
|
+
HdTableComponent.prototype.getDeclaredColWidthTotal = /**
|
|
11664
|
+
* 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽
|
|
11665
|
+
* @private
|
|
11666
|
+
* @return {?}
|
|
11667
|
+
*/
|
|
11668
|
+
function () {
|
|
11669
|
+
var _this = this;
|
|
11670
|
+
/** @type {?} */
|
|
11671
|
+
var total = 0;
|
|
11672
|
+
if (this.showSelected) {
|
|
11673
|
+
total += SELECT_COL_WIDTH;
|
|
11674
|
+
}
|
|
11675
|
+
if (this.showTableTotal) {
|
|
11676
|
+
total += this.lineNumberColWidth;
|
|
11677
|
+
}
|
|
11678
|
+
(this.tableCols || []).forEach((/**
|
|
11679
|
+
* @param {?} col
|
|
11680
|
+
* @return {?}
|
|
11681
|
+
*/
|
|
11682
|
+
function (col) {
|
|
11683
|
+
if (_this.isColVisible(col)) {
|
|
11684
|
+
total += _this.getColDeclaredWidth(col);
|
|
11685
|
+
}
|
|
11686
|
+
}));
|
|
11687
|
+
return total;
|
|
11688
|
+
};
|
|
11689
|
+
/** 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽 */
|
|
11690
|
+
/**
|
|
11691
|
+
* 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽
|
|
11575
11692
|
* @param {?} col
|
|
11576
11693
|
* @return {?}
|
|
11577
11694
|
*/
|
|
11578
11695
|
HdTableComponent.prototype.getColDisplayWidth = /**
|
|
11579
|
-
*
|
|
11696
|
+
* 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽
|
|
11580
11697
|
* @param {?} col
|
|
11581
11698
|
* @return {?}
|
|
11582
11699
|
*/
|
|
11583
11700
|
function (col) {
|
|
11584
11701
|
/** @type {?} */
|
|
11585
|
-
var
|
|
11586
|
-
|
|
11587
|
-
|
|
11588
|
-
if (this.fluidExtraWidth <= 0 ||
|
|
11589
|
-
!col ||
|
|
11590
|
-
!this.fluidExtraTargetCol ||
|
|
11591
|
-
col !== this.fluidExtraTargetCol) {
|
|
11592
|
-
return base;
|
|
11702
|
+
var declared = this.getColDeclaredWidth(col);
|
|
11703
|
+
if (!col || this.fluidExtraWidth <= 0) {
|
|
11704
|
+
return declared;
|
|
11593
11705
|
}
|
|
11594
|
-
|
|
11706
|
+
/** @type {?} */
|
|
11707
|
+
var extra = this.fluidExtraByCol.get(col);
|
|
11708
|
+
return declared + (extra > 0 ? extra : 0);
|
|
11595
11709
|
};
|
|
11596
|
-
/** 按当前 layout 刷新 fluid 补宽目标列(仅 dealScroll / sync 时调用) */
|
|
11597
11710
|
/**
|
|
11598
|
-
*
|
|
11711
|
+
* 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
|
|
11712
|
+
* 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
|
|
11713
|
+
*/
|
|
11714
|
+
/**
|
|
11715
|
+
* 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
|
|
11716
|
+
* 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
|
|
11599
11717
|
* @private
|
|
11718
|
+
* @param {?} fluidExtra
|
|
11600
11719
|
* @return {?}
|
|
11601
11720
|
*/
|
|
11602
|
-
HdTableComponent.prototype.
|
|
11603
|
-
*
|
|
11721
|
+
HdTableComponent.prototype.rebuildFluidExtraByCol = /**
|
|
11722
|
+
* 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
|
|
11723
|
+
* 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
|
|
11604
11724
|
* @private
|
|
11725
|
+
* @param {?} fluidExtra
|
|
11605
11726
|
* @return {?}
|
|
11606
11727
|
*/
|
|
11607
|
-
function () {
|
|
11608
|
-
|
|
11609
|
-
|
|
11610
|
-
|
|
11611
|
-
!this.tableCols.length) {
|
|
11728
|
+
function (fluidExtra) {
|
|
11729
|
+
var _this = this;
|
|
11730
|
+
this.fluidExtraByCol = new Map();
|
|
11731
|
+
if (fluidExtra <= 0 || !this.tableCols || !this.tableCols.length) {
|
|
11612
11732
|
return;
|
|
11613
11733
|
}
|
|
11614
|
-
|
|
11615
|
-
|
|
11616
|
-
|
|
11617
|
-
|
|
11618
|
-
|
|
11734
|
+
/** @type {?} */
|
|
11735
|
+
var parts = [];
|
|
11736
|
+
/** @type {?} */
|
|
11737
|
+
var sumDeclared = 0;
|
|
11738
|
+
this.tableCols.forEach((/**
|
|
11739
|
+
* @param {?} col
|
|
11740
|
+
* @return {?}
|
|
11741
|
+
*/
|
|
11742
|
+
function (col) {
|
|
11743
|
+
if (!_this.isColVisible(col)) {
|
|
11619
11744
|
return;
|
|
11620
11745
|
}
|
|
11746
|
+
/** @type {?} */
|
|
11747
|
+
var declared = _this.getColDeclaredWidth(col);
|
|
11748
|
+
sumDeclared += declared;
|
|
11749
|
+
parts.push({ col: col, declared: declared, share: 0, frac: 0 });
|
|
11750
|
+
}));
|
|
11751
|
+
if (sumDeclared <= 0 || !parts.length) {
|
|
11752
|
+
return;
|
|
11621
11753
|
}
|
|
11622
|
-
|
|
11754
|
+
/** @type {?} */
|
|
11755
|
+
var assigned = 0;
|
|
11756
|
+
parts.forEach((/**
|
|
11757
|
+
* @param {?} part
|
|
11758
|
+
* @return {?}
|
|
11759
|
+
*/
|
|
11760
|
+
function (part) {
|
|
11623
11761
|
/** @type {?} */
|
|
11624
|
-
var
|
|
11625
|
-
|
|
11626
|
-
|
|
11762
|
+
var exact = (fluidExtra * part.declared) / sumDeclared;
|
|
11763
|
+
part.share = Math.floor(exact);
|
|
11764
|
+
part.frac = exact - part.share;
|
|
11765
|
+
assigned += part.share;
|
|
11766
|
+
}));
|
|
11767
|
+
/** @type {?} */
|
|
11768
|
+
var remain = fluidExtra - assigned;
|
|
11769
|
+
parts
|
|
11770
|
+
.slice()
|
|
11771
|
+
.sort((/**
|
|
11772
|
+
* @param {?} a
|
|
11773
|
+
* @param {?} b
|
|
11774
|
+
* @return {?}
|
|
11775
|
+
*/
|
|
11776
|
+
function (a, b) { return b.frac - a.frac; }))
|
|
11777
|
+
.forEach((/**
|
|
11778
|
+
* @param {?} part
|
|
11779
|
+
* @return {?}
|
|
11780
|
+
*/
|
|
11781
|
+
function (part) {
|
|
11782
|
+
if (remain <= 0) {
|
|
11627
11783
|
return;
|
|
11628
11784
|
}
|
|
11629
|
-
|
|
11785
|
+
part.share += 1;
|
|
11786
|
+
remain -= 1;
|
|
11787
|
+
}));
|
|
11788
|
+
parts.forEach((/**
|
|
11789
|
+
* @param {?} part
|
|
11790
|
+
* @return {?}
|
|
11791
|
+
*/
|
|
11792
|
+
function (part) {
|
|
11793
|
+
if (part.share > 0) {
|
|
11794
|
+
_this.fluidExtraByCol.set(part.col, part.share);
|
|
11795
|
+
}
|
|
11796
|
+
}));
|
|
11797
|
+
};
|
|
11798
|
+
/** 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用) */
|
|
11799
|
+
/**
|
|
11800
|
+
* 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用)
|
|
11801
|
+
* @private
|
|
11802
|
+
* @param {?} layout
|
|
11803
|
+
* @return {?}
|
|
11804
|
+
*/
|
|
11805
|
+
HdTableComponent.prototype.applyHorizontalLayout = /**
|
|
11806
|
+
* 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用)
|
|
11807
|
+
* @private
|
|
11808
|
+
* @param {?} layout
|
|
11809
|
+
* @return {?}
|
|
11810
|
+
*/
|
|
11811
|
+
function (layout) {
|
|
11812
|
+
this.fluidExtraWidth = layout.fluidExtra;
|
|
11813
|
+
this.fluidHorizontal = layout.isFluid;
|
|
11814
|
+
this.rebuildFluidExtraByCol(layout.fluidExtra);
|
|
11815
|
+
this.tableColWidthTotal = layout.displayTotal;
|
|
11630
11816
|
};
|
|
11631
11817
|
Object.defineProperty(HdTableComponent.prototype, "totalFooterTableWidth", {
|
|
11632
11818
|
/** fluid → 100%;固定 → scroll.x(与表体同一套横向宽度) */
|
|
@@ -11754,7 +11940,6 @@
|
|
|
11754
11940
|
* @return {?}
|
|
11755
11941
|
*/
|
|
11756
11942
|
function (forceRemount) {
|
|
11757
|
-
var _this = this;
|
|
11758
11943
|
if (forceRemount === void 0) { forceRemount = false; }
|
|
11759
11944
|
/** @type {?} */
|
|
11760
11945
|
var useVirtual = this.useVirtualScroll;
|
|
@@ -11767,23 +11952,7 @@
|
|
|
11767
11952
|
// ng-zorro 只在 AfterViewInit 绑一次 header/body 的 scroll 同步;
|
|
11768
11953
|
// 若先以 y=null 创建再改成有 y,表头监听会丢,表现为列头不跟着横滚。
|
|
11769
11954
|
this.presetScrollBeforeRemount(useVirtual);
|
|
11770
|
-
this.
|
|
11771
|
-
this.cdr.markForCheck();
|
|
11772
|
-
setTimeout((/**
|
|
11773
|
-
* @return {?}
|
|
11774
|
-
*/
|
|
11775
|
-
function () {
|
|
11776
|
-
_this.showTable = true;
|
|
11777
|
-
_this.cdr.markForCheck();
|
|
11778
|
-
setTimeout((/**
|
|
11779
|
-
* @return {?}
|
|
11780
|
-
*/
|
|
11781
|
-
function () {
|
|
11782
|
-
_this.dealScroll();
|
|
11783
|
-
_this.cdr.markForCheck();
|
|
11784
|
-
_this.afterTableRender(useVirtual);
|
|
11785
|
-
}));
|
|
11786
|
-
}));
|
|
11955
|
+
this.remountTable(useVirtual);
|
|
11787
11956
|
return;
|
|
11788
11957
|
}
|
|
11789
11958
|
/** @type {?} */
|
|
@@ -11795,32 +11964,48 @@
|
|
|
11795
11964
|
var nextHasX = !!(this.scroll && this.scroll.x);
|
|
11796
11965
|
/** @type {?} */
|
|
11797
11966
|
var nextHasY = !!(this.scroll && this.scroll.y);
|
|
11798
|
-
//
|
|
11799
|
-
// - y:ng-zorro 只在 AfterViewInit
|
|
11800
|
-
// - x
|
|
11801
|
-
// 不重建时勾选列仍按 auto 均摊撑开(收款编辑等异步灌数页)
|
|
11967
|
+
// scroll.x / scroll.y 从无到有(或反过来)时必须重建,原地改值不生效:
|
|
11968
|
+
// - y:ng-zorro 8 只在 AfterViewInit 绑一次表头/表体滚动同步,且决定表头是否拆成独立 table
|
|
11969
|
+
// - x:决定是否带 ant-table-fixed(table-layout: fixed),勾选列锁宽依赖它
|
|
11802
11970
|
if (prevHasY !== nextHasY || prevHasX !== nextHasX) {
|
|
11803
|
-
this.
|
|
11804
|
-
|
|
11971
|
+
this.remountTable(useVirtual);
|
|
11972
|
+
return;
|
|
11973
|
+
}
|
|
11974
|
+
this.cdr.markForCheck();
|
|
11975
|
+
this.afterTableRender(useVirtual);
|
|
11976
|
+
};
|
|
11977
|
+
/** 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局 */
|
|
11978
|
+
/**
|
|
11979
|
+
* 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局
|
|
11980
|
+
* @private
|
|
11981
|
+
* @param {?} useVirtual
|
|
11982
|
+
* @return {?}
|
|
11983
|
+
*/
|
|
11984
|
+
HdTableComponent.prototype.remountTable = /**
|
|
11985
|
+
* 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局
|
|
11986
|
+
* @private
|
|
11987
|
+
* @param {?} useVirtual
|
|
11988
|
+
* @return {?}
|
|
11989
|
+
*/
|
|
11990
|
+
function (useVirtual) {
|
|
11991
|
+
var _this = this;
|
|
11992
|
+
this.showTable = false;
|
|
11993
|
+
this.cdr.markForCheck();
|
|
11994
|
+
setTimeout((/**
|
|
11995
|
+
* @return {?}
|
|
11996
|
+
*/
|
|
11997
|
+
function () {
|
|
11998
|
+
_this.showTable = true;
|
|
11999
|
+
_this.cdr.markForCheck();
|
|
11805
12000
|
setTimeout((/**
|
|
11806
12001
|
* @return {?}
|
|
11807
12002
|
*/
|
|
11808
12003
|
function () {
|
|
11809
|
-
_this.
|
|
12004
|
+
_this.dealScroll();
|
|
11810
12005
|
_this.cdr.markForCheck();
|
|
11811
|
-
|
|
11812
|
-
* @return {?}
|
|
11813
|
-
*/
|
|
11814
|
-
function () {
|
|
11815
|
-
_this.dealScroll();
|
|
11816
|
-
_this.cdr.markForCheck();
|
|
11817
|
-
_this.afterTableRender(useVirtual);
|
|
11818
|
-
}));
|
|
12006
|
+
_this.afterTableRender(useVirtual);
|
|
11819
12007
|
}));
|
|
11820
|
-
|
|
11821
|
-
}
|
|
11822
|
-
this.cdr.markForCheck();
|
|
11823
|
-
this.afterTableRender(useVirtual);
|
|
12008
|
+
}));
|
|
11824
12009
|
};
|
|
11825
12010
|
/** 重建前预设 scroll,保证 AfterViewInit 时 header/body 结构已正确 */
|
|
11826
12011
|
/**
|
|
@@ -12685,48 +12870,62 @@
|
|
|
12685
12870
|
function (maxOffset) {
|
|
12686
12871
|
return "calc(100vh - " + maxOffset + "px)";
|
|
12687
12872
|
};
|
|
12688
|
-
|
|
12689
|
-
*
|
|
12690
|
-
*
|
|
12691
|
-
|
|
12692
|
-
|
|
12693
|
-
*
|
|
12694
|
-
*
|
|
12695
|
-
|
|
12696
|
-
|
|
12697
|
-
|
|
12698
|
-
|
|
12699
|
-
|
|
12700
|
-
|
|
12701
|
-
|
|
12702
|
-
*
|
|
12703
|
-
|
|
12704
|
-
|
|
12705
|
-
|
|
12706
|
-
|
|
12707
|
-
|
|
12708
|
-
|
|
12709
|
-
|
|
12710
|
-
|
|
12711
|
-
|
|
12712
|
-
|
|
12713
|
-
|
|
12873
|
+
/*
|
|
12874
|
+
* 横向布局(勾选列锁 40px 的关键)
|
|
12875
|
+
*
|
|
12876
|
+
* 勾选列只有在 table-layout: fixed 下才锁得住:ng-zorro 8 仅在 nzScroll.x 有值时
|
|
12877
|
+
* 给 table 加 ant-table-fixed;auto 布局下 table 宽 100%、每列都有 nzWidth,
|
|
12878
|
+
* 剩余空间会按比例摊到所有列(含勾选列),单元格上的 max-width 也不生效。
|
|
12879
|
+
* 所以只要有列(无论有没有数据)就一定设置 scroll.x:
|
|
12880
|
+
* - 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列(fluid,不出真横滚)
|
|
12881
|
+
* - 列多:scroll.x = 声明总宽,正常横滚
|
|
12882
|
+
* less 里勾选列的 40px 只是 fixed 布局下的兜底。
|
|
12883
|
+
*/
|
|
12884
|
+
/**
|
|
12885
|
+
* 按声明列宽合计 + 容器宽算出横向布局。
|
|
12886
|
+
* 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
|
|
12887
|
+
* 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
|
|
12888
|
+
*/
|
|
12889
|
+
/*
|
|
12890
|
+
* 横向布局(勾选列锁 40px 的关键)
|
|
12891
|
+
*
|
|
12892
|
+
* 勾选列只有在 table-layout: fixed 下才锁得住:ng-zorro 8 仅在 nzScroll.x 有值时
|
|
12893
|
+
* 给 table 加 ant-table-fixed;auto 布局下 table 宽 100%、每列都有 nzWidth,
|
|
12894
|
+
* 剩余空间会按比例摊到所有列(含勾选列),单元格上的 max-width 也不生效。
|
|
12895
|
+
* 所以只要有列(无论有没有数据)就一定设置 scroll.x:
|
|
12896
|
+
* - 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列(fluid,不出真横滚)
|
|
12897
|
+
* - 列多:scroll.x = 声明总宽,正常横滚
|
|
12898
|
+
* less 里勾选列的 40px 只是 fixed 布局下的兜底。
|
|
12899
|
+
*/
|
|
12900
|
+
/**
|
|
12901
|
+
* 按声明列宽合计 + 容器宽算出横向布局。
|
|
12902
|
+
* 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
|
|
12903
|
+
* 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
|
|
12714
12904
|
* @private
|
|
12715
12905
|
* @param {?} declaredColWidth
|
|
12716
12906
|
* @return {?}
|
|
12717
12907
|
*/
|
|
12718
|
-
HdTableComponent.prototype.resolveHorizontalLayout =
|
|
12719
|
-
|
|
12720
|
-
|
|
12721
|
-
|
|
12722
|
-
|
|
12723
|
-
|
|
12908
|
+
HdTableComponent.prototype.resolveHorizontalLayout = /*
|
|
12909
|
+
* 横向布局(勾选列锁 40px 的关键)
|
|
12910
|
+
*
|
|
12911
|
+
* 勾选列只有在 table-layout: fixed 下才锁得住:ng-zorro 8 仅在 nzScroll.x 有值时
|
|
12912
|
+
* 给 table 加 ant-table-fixed;auto 布局下 table 宽 100%、每列都有 nzWidth,
|
|
12913
|
+
* 剩余空间会按比例摊到所有列(含勾选列),单元格上的 max-width 也不生效。
|
|
12914
|
+
* 所以只要有列(无论有没有数据)就一定设置 scroll.x:
|
|
12915
|
+
* - 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列(fluid,不出真横滚)
|
|
12916
|
+
* - 列多:scroll.x = 声明总宽,正常横滚
|
|
12917
|
+
* less 里勾选列的 40px 只是 fixed 布局下的兜底。
|
|
12918
|
+
*/
|
|
12919
|
+
/**
|
|
12920
|
+
* 按声明列宽合计 + 容器宽算出横向布局。
|
|
12921
|
+
* 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
|
|
12922
|
+
* 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
|
|
12724
12923
|
* @private
|
|
12725
12924
|
* @param {?} declaredColWidth
|
|
12726
12925
|
* @return {?}
|
|
12727
12926
|
*/
|
|
12728
12927
|
function (declaredColWidth) {
|
|
12729
|
-
if (
|
|
12928
|
+
if (declaredColWidth <= 0) {
|
|
12730
12929
|
return {
|
|
12731
12930
|
scrollX: null,
|
|
12732
12931
|
fluidExtra: 0,
|
|
@@ -12735,115 +12934,64 @@
|
|
|
12735
12934
|
};
|
|
12736
12935
|
}
|
|
12737
12936
|
/** @type {?} */
|
|
12738
|
-
var
|
|
12937
|
+
var compareWidth = this.nzTableComponent
|
|
12739
12938
|
? getTableScrollXViewportWidth(this.nzTableComponent)
|
|
12740
12939
|
: 0;
|
|
12741
|
-
//
|
|
12742
|
-
if (
|
|
12743
|
-
/** @type {?} */
|
|
12744
|
-
var hostW = ((/** @type {?} */ (this.hostEl.nativeElement))).offsetWidth;
|
|
12745
|
-
if (hostW > 0) {
|
|
12746
|
-
viewportCompare = hostW;
|
|
12747
|
-
}
|
|
12940
|
+
// 表体还没渲染出来(刚重建 / 在 spin 里)时用宿主宽兜底
|
|
12941
|
+
if (compareWidth <= 0 && this.hostEl && this.hostEl.nativeElement) {
|
|
12942
|
+
compareWidth = ((/** @type {?} */ (this.hostEl.nativeElement))).offsetWidth;
|
|
12748
12943
|
}
|
|
12749
|
-
|
|
12750
|
-
|
|
12751
|
-
|
|
12752
|
-
scrollX: Math.ceil(declaredColWidth) + "px",
|
|
12753
|
-
fluidExtra: 0,
|
|
12754
|
-
displayTotal: declaredColWidth,
|
|
12755
|
-
isFluid: false,
|
|
12756
|
-
};
|
|
12757
|
-
}
|
|
12758
|
-
/** @type {?} */
|
|
12759
|
-
var fillWidth = this.nzTableComponent
|
|
12760
|
-
? getTableViewportWidth(this.nzTableComponent)
|
|
12761
|
-
: 0;
|
|
12762
|
-
/** @type {?} */
|
|
12763
|
-
var target = Math.floor(fillWidth > 0 ? fillWidth : viewportCompare);
|
|
12764
|
-
/** @type {?} */
|
|
12765
|
-
var fluidExtra = Math.max(0, target - declaredColWidth);
|
|
12766
|
-
return {
|
|
12767
|
-
scrollX: target + "px",
|
|
12768
|
-
fluidExtra: fluidExtra,
|
|
12769
|
-
displayTotal: declaredColWidth + fluidExtra,
|
|
12770
|
-
isFluid: true,
|
|
12771
|
-
};
|
|
12944
|
+
// 仍量不到(如宿主在 display:none 里):先按声明宽走 fixed,等 ResizeObserver 触发再转 fluid
|
|
12945
|
+
if (compareWidth <= 0) {
|
|
12946
|
+
return fixedLayout(declaredColWidth);
|
|
12772
12947
|
}
|
|
12773
|
-
//
|
|
12774
|
-
|
|
12775
|
-
|
|
12776
|
-
|
|
12777
|
-
|
|
12778
|
-
|
|
12779
|
-
|
|
12780
|
-
|
|
12948
|
+
// 1px 容差,避免亚像素误判
|
|
12949
|
+
if (declaredColWidth > compareWidth + 1) {
|
|
12950
|
+
return fixedLayout(declaredColWidth);
|
|
12951
|
+
}
|
|
12952
|
+
/** @type {?} */
|
|
12953
|
+
var fillWidth = this.nzTableComponent
|
|
12954
|
+
? getTableViewportWidth(this.nzTableComponent)
|
|
12955
|
+
: 0;
|
|
12956
|
+
/** @type {?} */
|
|
12957
|
+
var containerWidth = Math.floor(fillWidth > 0 ? fillWidth : compareWidth);
|
|
12958
|
+
return fluidLayout(containerWidth, declaredColWidth);
|
|
12781
12959
|
};
|
|
12782
|
-
/**
|
|
12960
|
+
/** 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变 */
|
|
12783
12961
|
/**
|
|
12784
|
-
*
|
|
12962
|
+
* 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变
|
|
12785
12963
|
* @private
|
|
12786
12964
|
* @return {?}
|
|
12787
12965
|
*/
|
|
12788
12966
|
HdTableComponent.prototype.syncHorizontalScroll = /**
|
|
12789
|
-
*
|
|
12967
|
+
* 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变
|
|
12790
12968
|
* @private
|
|
12791
12969
|
* @return {?}
|
|
12792
12970
|
*/
|
|
12793
12971
|
function () {
|
|
12794
12972
|
var _this = this;
|
|
12795
12973
|
/** @type {?} */
|
|
12796
|
-
var declared = 0;
|
|
12797
|
-
if (this.showSelected) {
|
|
12798
|
-
declared += 40;
|
|
12799
|
-
}
|
|
12800
|
-
if (this.showTableTotal) {
|
|
12801
|
-
declared += this.lineNumberColWidth;
|
|
12802
|
-
}
|
|
12803
|
-
if (this.tableCols) {
|
|
12804
|
-
this.tableCols.forEach((/**
|
|
12805
|
-
* @param {?} item
|
|
12806
|
-
* @return {?}
|
|
12807
|
-
*/
|
|
12808
|
-
function (item) {
|
|
12809
|
-
if (item && item.isShow !== false) {
|
|
12810
|
-
declared += item.width > 0 ? item.width : ColWidth.fixColWidth;
|
|
12811
|
-
}
|
|
12812
|
-
}));
|
|
12813
|
-
}
|
|
12814
|
-
/** @type {?} */
|
|
12815
12974
|
var prevHasX = !!(this.scroll && this.scroll.x);
|
|
12816
12975
|
/** @type {?} */
|
|
12817
|
-
var layout = this.resolveHorizontalLayout(
|
|
12818
|
-
/** @type {?} */
|
|
12819
|
-
var currentY = this.scroll ? this.scroll.y : null;
|
|
12820
|
-
/** @type {?} */
|
|
12821
|
-
var nextHasX = !!layout.scrollX;
|
|
12976
|
+
var layout = this.resolveHorizontalLayout(this.getDeclaredColWidthTotal());
|
|
12822
12977
|
/** @type {?} */
|
|
12823
|
-
var
|
|
12824
|
-
|
|
12825
|
-
|
|
12826
|
-
|
|
12827
|
-
|
|
12828
|
-
if (sameX &&
|
|
12829
|
-
sameExtra &&
|
|
12830
|
-
sameFluid &&
|
|
12831
|
-
this.scroll &&
|
|
12832
|
-
this.scroll.y === currentY) {
|
|
12978
|
+
var unchanged = this.scroll &&
|
|
12979
|
+
this.scroll.x === layout.scrollX &&
|
|
12980
|
+
this.fluidExtraWidth === layout.fluidExtra &&
|
|
12981
|
+
this.fluidHorizontal === layout.isFluid;
|
|
12982
|
+
if (unchanged) {
|
|
12833
12983
|
setTimeout((/**
|
|
12834
12984
|
* @return {?}
|
|
12835
12985
|
*/
|
|
12836
12986
|
function () { return _this.syncTotalFooterWithBody(); }));
|
|
12837
12987
|
return;
|
|
12838
12988
|
}
|
|
12839
|
-
this.
|
|
12840
|
-
this.
|
|
12841
|
-
this.
|
|
12842
|
-
this.tableColWidthTotal = layout.displayTotal;
|
|
12843
|
-
this.scroll = { x: layout.scrollX, y: currentY };
|
|
12989
|
+
this.applyHorizontalLayout(layout);
|
|
12990
|
+
this.refreshStickyOffsets();
|
|
12991
|
+
this.scroll = { x: layout.scrollX, y: this.scroll ? this.scroll.y : null };
|
|
12844
12992
|
this.cdr.markForCheck();
|
|
12845
|
-
//
|
|
12846
|
-
if (prevHasX !==
|
|
12993
|
+
// x 从无到有(或反过来)要重建才能切换 table-layout
|
|
12994
|
+
if (prevHasX !== !!layout.scrollX) {
|
|
12847
12995
|
this.applyTableScrollMode(true);
|
|
12848
12996
|
return;
|
|
12849
12997
|
}
|
|
@@ -13157,21 +13305,32 @@
|
|
|
13157
13305
|
}), 100);
|
|
13158
13306
|
};
|
|
13159
13307
|
/**
|
|
13308
|
+
* 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
|
|
13309
|
+
* 须在 applyHorizontalLayout 之后调用。
|
|
13310
|
+
*/
|
|
13311
|
+
/**
|
|
13312
|
+
* 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
|
|
13313
|
+
* 须在 applyHorizontalLayout 之后调用。
|
|
13314
|
+
* @private
|
|
13160
13315
|
* @return {?}
|
|
13161
13316
|
*/
|
|
13162
|
-
HdTableComponent.prototype.
|
|
13317
|
+
HdTableComponent.prototype.refreshStickyOffsets = /**
|
|
13318
|
+
* 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
|
|
13319
|
+
* 须在 applyHorizontalLayout 之后调用。
|
|
13320
|
+
* @private
|
|
13163
13321
|
* @return {?}
|
|
13164
13322
|
*/
|
|
13165
13323
|
function () {
|
|
13324
|
+
var _this = this;
|
|
13166
13325
|
/** @type {?} */
|
|
13167
|
-
var
|
|
13326
|
+
var leftOffset = 0;
|
|
13168
13327
|
if (this.showSelected) {
|
|
13169
|
-
|
|
13328
|
+
leftOffset += SELECT_COL_WIDTH;
|
|
13170
13329
|
}
|
|
13171
13330
|
if (this.showTableTotal) {
|
|
13172
|
-
|
|
13331
|
+
leftOffset += this.lineNumberColWidth;
|
|
13173
13332
|
}
|
|
13174
|
-
this.tableCols.forEach((/**
|
|
13333
|
+
(this.tableCols || []).forEach((/**
|
|
13175
13334
|
* @param {?} item
|
|
13176
13335
|
* @return {?}
|
|
13177
13336
|
*/
|
|
@@ -13179,34 +13338,48 @@
|
|
|
13179
13338
|
if (!item.width) {
|
|
13180
13339
|
item.width = ColWidth.fixColWidth;
|
|
13181
13340
|
}
|
|
13182
|
-
if (item
|
|
13183
|
-
item.fixedWidth =
|
|
13184
|
-
|
|
13341
|
+
if (_this.isColVisible(item)) {
|
|
13342
|
+
item.fixedWidth = leftOffset;
|
|
13343
|
+
leftOffset += _this.getColDisplayWidth(item);
|
|
13185
13344
|
}
|
|
13186
13345
|
}));
|
|
13187
|
-
// 右侧固定列:从右往左累计偏移,避免多列都 right:0 互相遮挡
|
|
13188
13346
|
/** @type {?} */
|
|
13189
13347
|
var rightOffset = 0;
|
|
13190
|
-
for (var i = this.tableCols.length - 1; i >= 0; i--) {
|
|
13348
|
+
for (var i = (this.tableCols || []).length - 1; i >= 0; i--) {
|
|
13191
13349
|
/** @type {?} */
|
|
13192
13350
|
var item = this.tableCols[i];
|
|
13193
|
-
if (item
|
|
13351
|
+
if (!this.isColVisible(item)) {
|
|
13194
13352
|
continue;
|
|
13195
13353
|
}
|
|
13196
13354
|
if (item.fixed === "right") {
|
|
13197
13355
|
item.fixedRightWidth = rightOffset;
|
|
13198
|
-
rightOffset += item
|
|
13356
|
+
rightOffset += this.getColDisplayWidth(item);
|
|
13199
13357
|
}
|
|
13200
13358
|
else {
|
|
13201
13359
|
item.fixedRightWidth = 0;
|
|
13202
13360
|
}
|
|
13203
13361
|
}
|
|
13362
|
+
};
|
|
13363
|
+
/**
|
|
13364
|
+
* @return {?}
|
|
13365
|
+
*/
|
|
13366
|
+
HdTableComponent.prototype.dealScroll = /**
|
|
13367
|
+
* @return {?}
|
|
13368
|
+
*/
|
|
13369
|
+
function () {
|
|
13370
|
+
(this.tableCols || []).forEach((/**
|
|
13371
|
+
* @param {?} item
|
|
13372
|
+
* @return {?}
|
|
13373
|
+
*/
|
|
13374
|
+
function (item) {
|
|
13375
|
+
if (!item.width) {
|
|
13376
|
+
item.width = ColWidth.fixColWidth;
|
|
13377
|
+
}
|
|
13378
|
+
}));
|
|
13204
13379
|
/** @type {?} */
|
|
13205
|
-
var layout = this.resolveHorizontalLayout(
|
|
13206
|
-
this.
|
|
13207
|
-
this.
|
|
13208
|
-
this.refreshFluidExtraTargetCol();
|
|
13209
|
-
this.tableColWidthTotal = layout.displayTotal;
|
|
13380
|
+
var layout = this.resolveHorizontalLayout(this.getDeclaredColWidthTotal());
|
|
13381
|
+
this.applyHorizontalLayout(layout);
|
|
13382
|
+
this.refreshStickyOffsets();
|
|
13210
13383
|
/** @type {?} */
|
|
13211
13384
|
var maxOffset = this.getScrollYMaxOffset();
|
|
13212
13385
|
/** @type {?} */
|
|
@@ -14443,7 +14616,7 @@
|
|
|
14443
14616
|
HdTableComponent.decorators = [
|
|
14444
14617
|
{ type: core.Component, args: [{
|
|
14445
14618
|
selector: "hd-table",
|
|
14446
|
-
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>",
|
|
14619
|
+
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>",
|
|
14447
14620
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
14448
14621
|
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}"]
|
|
14449
14622
|
}] }
|
|
@@ -14681,28 +14854,26 @@
|
|
|
14681
14854
|
*/
|
|
14682
14855
|
HdTableComponent.prototype.virtualScrollActive;
|
|
14683
14856
|
/**
|
|
14684
|
-
*
|
|
14857
|
+
* 实际渲染列宽合计(含勾选/序号 + 补宽),合计 footer 表宽用
|
|
14685
14858
|
* @type {?}
|
|
14686
14859
|
*/
|
|
14687
14860
|
HdTableComponent.prototype.tableColWidthTotal;
|
|
14688
14861
|
/**
|
|
14689
|
-
*
|
|
14690
|
-
* 并设 scroll.x = 容器宽,避免表宽 100% 均摊撑开勾选列;拖拽改宽仍写 col.width。
|
|
14862
|
+
* 待按比例分给各业务列的总补宽;只影响展示,不写回 col.width(列宽缓存、拖拽仍用声明宽)
|
|
14691
14863
|
* @type {?}
|
|
14692
14864
|
*/
|
|
14693
14865
|
HdTableComponent.prototype.fluidExtraWidth;
|
|
14694
14866
|
/**
|
|
14695
|
-
*
|
|
14696
|
-
* 用于关掉 ng-zorro fixed-header 带来的常驻 X 轴滚动条。
|
|
14867
|
+
* 列少、靠补宽吃满容器:模板据此加 hd-table--fluid-x,隐藏 fixed-header 常驻的横滚槽
|
|
14697
14868
|
* @type {?}
|
|
14698
14869
|
*/
|
|
14699
14870
|
HdTableComponent.prototype.fluidHorizontal;
|
|
14700
14871
|
/**
|
|
14701
|
-
*
|
|
14872
|
+
* 各业务列分到的补宽(按列对象取,applyHorizontalLayout 时整表重建)
|
|
14702
14873
|
* @type {?}
|
|
14703
14874
|
* @private
|
|
14704
14875
|
*/
|
|
14705
|
-
HdTableComponent.prototype.
|
|
14876
|
+
HdTableComponent.prototype.fluidExtraByCol;
|
|
14706
14877
|
/**
|
|
14707
14878
|
* 数据更新后待复位纵向滚动位置
|
|
14708
14879
|
* @type {?}
|