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
|
@@ -1126,7 +1126,8 @@ function getTableScrollXViewportWidth(nzTable, hostClass = "hd-table-container")
|
|
|
1126
1126
|
return getTableViewportWidth(nzTable, hostClass);
|
|
1127
1127
|
}
|
|
1128
1128
|
/**
|
|
1129
|
-
* 无数据或列宽未超出容器时不启用横向 scroll
|
|
1129
|
+
* 无数据或列宽未超出容器时不启用横向 scroll(表宽 100%、table-layout: auto)。
|
|
1130
|
+
* auto 布局下单元格 max-width 不生效,固定宽列会被均摊撑开;需要锁宽的场景见 hd-table 的横向布局。
|
|
1130
1131
|
* @param {?} nzTable
|
|
1131
1132
|
* @param {?} hasData
|
|
1132
1133
|
* @param {?=} colWidth
|
|
@@ -9124,6 +9125,67 @@ if (false) {
|
|
|
9124
9125
|
* @fileoverview added by tsickle
|
|
9125
9126
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
9126
9127
|
*/
|
|
9128
|
+
/**
|
|
9129
|
+
* 勾选列宽(px),与模板 nzWidth、less 兜底保持一致
|
|
9130
|
+
* @type {?}
|
|
9131
|
+
*/
|
|
9132
|
+
const SELECT_COL_WIDTH = 40;
|
|
9133
|
+
/**
|
|
9134
|
+
* 横向布局计算结果
|
|
9135
|
+
* @record
|
|
9136
|
+
*/
|
|
9137
|
+
function HdTableHorizontalLayout() { }
|
|
9138
|
+
if (false) {
|
|
9139
|
+
/**
|
|
9140
|
+
* 传给 nzScroll.x;只有列宽总和 <= 0 时为 null
|
|
9141
|
+
* @type {?}
|
|
9142
|
+
*/
|
|
9143
|
+
HdTableHorizontalLayout.prototype.scrollX;
|
|
9144
|
+
/**
|
|
9145
|
+
* 按声明宽比例分给各业务列的总补宽,列多时为 0
|
|
9146
|
+
* @type {?}
|
|
9147
|
+
*/
|
|
9148
|
+
HdTableHorizontalLayout.prototype.fluidExtra;
|
|
9149
|
+
/**
|
|
9150
|
+
* 实际渲染总宽 = 声明总宽 + fluidExtra
|
|
9151
|
+
* @type {?}
|
|
9152
|
+
*/
|
|
9153
|
+
HdTableHorizontalLayout.prototype.displayTotal;
|
|
9154
|
+
/**
|
|
9155
|
+
* 列少、靠补宽吃满容器,不需要真正横滚
|
|
9156
|
+
* @type {?}
|
|
9157
|
+
*/
|
|
9158
|
+
HdTableHorizontalLayout.prototype.isFluid;
|
|
9159
|
+
}
|
|
9160
|
+
/**
|
|
9161
|
+
* 列多(或量不到容器宽):scroll.x = 声明总宽,正常横滚
|
|
9162
|
+
* @param {?} declaredWidth
|
|
9163
|
+
* @return {?}
|
|
9164
|
+
*/
|
|
9165
|
+
function fixedLayout(declaredWidth) {
|
|
9166
|
+
return {
|
|
9167
|
+
scrollX: `${Math.ceil(declaredWidth)}px`,
|
|
9168
|
+
fluidExtra: 0,
|
|
9169
|
+
displayTotal: declaredWidth,
|
|
9170
|
+
isFluid: false,
|
|
9171
|
+
};
|
|
9172
|
+
}
|
|
9173
|
+
/**
|
|
9174
|
+
* 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列
|
|
9175
|
+
* @param {?} containerWidth
|
|
9176
|
+
* @param {?} declaredWidth
|
|
9177
|
+
* @return {?}
|
|
9178
|
+
*/
|
|
9179
|
+
function fluidLayout(containerWidth, declaredWidth) {
|
|
9180
|
+
/** @type {?} */
|
|
9181
|
+
const fluidExtra = Math.max(0, containerWidth - declaredWidth);
|
|
9182
|
+
return {
|
|
9183
|
+
scrollX: `${containerWidth}px`,
|
|
9184
|
+
fluidExtra,
|
|
9185
|
+
displayTotal: declaredWidth + fluidExtra,
|
|
9186
|
+
isFluid: true,
|
|
9187
|
+
};
|
|
9188
|
+
}
|
|
9127
9189
|
class HdTableComponent {
|
|
9128
9190
|
/**
|
|
9129
9191
|
* @param {?} hostEl
|
|
@@ -9213,23 +9275,21 @@ class HdTableComponent {
|
|
|
9213
9275
|
*/
|
|
9214
9276
|
this.virtualScrollActive = null;
|
|
9215
9277
|
/**
|
|
9216
|
-
*
|
|
9278
|
+
* 实际渲染列宽合计(含勾选/序号 + 补宽),合计 footer 表宽用
|
|
9217
9279
|
*/
|
|
9218
9280
|
this.tableColWidthTotal = 0;
|
|
9219
9281
|
/**
|
|
9220
|
-
*
|
|
9221
|
-
* 并设 scroll.x = 容器宽,避免表宽 100% 均摊撑开勾选列;拖拽改宽仍写 col.width。
|
|
9282
|
+
* 待按比例分给各业务列的总补宽;只影响展示,不写回 col.width(列宽缓存、拖拽仍用声明宽)
|
|
9222
9283
|
*/
|
|
9223
9284
|
this.fluidExtraWidth = 0;
|
|
9224
9285
|
/**
|
|
9225
|
-
*
|
|
9226
|
-
* 用于关掉 ng-zorro fixed-header 带来的常驻 X 轴滚动条。
|
|
9286
|
+
* 列少、靠补宽吃满容器:模板据此加 hd-table--fluid-x,隐藏 fixed-header 常驻的横滚槽
|
|
9227
9287
|
*/
|
|
9228
9288
|
this.fluidHorizontal = false;
|
|
9229
9289
|
/**
|
|
9230
|
-
*
|
|
9290
|
+
* 各业务列分到的补宽(按列对象取,applyHorizontalLayout 时整表重建)
|
|
9231
9291
|
*/
|
|
9232
|
-
this.
|
|
9292
|
+
this.fluidExtraByCol = new Map();
|
|
9233
9293
|
/**
|
|
9234
9294
|
* 数据更新后待复位纵向滚动位置
|
|
9235
9295
|
*/
|
|
@@ -9434,10 +9494,8 @@ class HdTableComponent {
|
|
|
9434
9494
|
changes["tableData"]["currentValue"]["pageNumber"] !==
|
|
9435
9495
|
changes["tableData"]["previousValue"]["pageNumber"]) {
|
|
9436
9496
|
this.pendingResetScrollTop = true;
|
|
9437
|
-
// pageSize
|
|
9438
|
-
//
|
|
9439
|
-
// virtualScroll=false 时若这里跳过,空表初始化后的 fluid 不会补上,勾选列被撑开。
|
|
9440
|
-
// applyTableScrollMode(false) 在模式未变时只 dealScroll,不会强制重建清排序态。
|
|
9497
|
+
// 业务可能把 Page.pageSize 写成 content.length,换数据时就会走到这里,
|
|
9498
|
+
// 必须重算横向布局。滚动模式不变时不会重建,排序态不会被清掉。
|
|
9441
9499
|
this.applyTableScrollMode(false);
|
|
9442
9500
|
// 翻页/改 pageSize:主动多次复位,覆盖 CDK 异步渲染时序
|
|
9443
9501
|
this.scheduleResetTableBodyScrollTop();
|
|
@@ -9449,9 +9507,7 @@ class HdTableComponent {
|
|
|
9449
9507
|
}
|
|
9450
9508
|
if (changes["tableData"]) {
|
|
9451
9509
|
this.pendingResetScrollTop = true;
|
|
9452
|
-
//
|
|
9453
|
-
// 收款/付款编辑等页 [virtualScroll]=false + 异步灌数据:原先跳过会导致
|
|
9454
|
-
// 空表初始化后不再补宽,勾选列被均摊撑开。
|
|
9510
|
+
// 不论是否虚拟滚动,数据变化后都要重算横向布局
|
|
9455
9511
|
this.applyTableScrollMode(false);
|
|
9456
9512
|
// 数据更新后复位纵向滚动(含虚拟滚动场景)
|
|
9457
9513
|
this.scheduleResetTableBodyScrollTop();
|
|
@@ -9631,11 +9687,11 @@ class HdTableComponent {
|
|
|
9631
9687
|
return col.fixed === "left" ? `${col.fixedWidth || 0}px` : null;
|
|
9632
9688
|
}
|
|
9633
9689
|
/**
|
|
9634
|
-
* 开启合计时序号列的 left
|
|
9690
|
+
* 开启合计时序号列的 left(跟在勾选列后面)
|
|
9635
9691
|
* @return {?}
|
|
9636
9692
|
*/
|
|
9637
9693
|
get lineNumberLeft() {
|
|
9638
|
-
return this.showSelected ?
|
|
9694
|
+
return (this.showSelected ? SELECT_COL_WIDTH : 0) + "px";
|
|
9639
9695
|
}
|
|
9640
9696
|
/**
|
|
9641
9697
|
* @return {?}
|
|
@@ -9652,51 +9708,149 @@ class HdTableComponent {
|
|
|
9652
9708
|
return !(this.scroll && this.scroll.x);
|
|
9653
9709
|
}
|
|
9654
9710
|
/**
|
|
9655
|
-
*
|
|
9711
|
+
* @private
|
|
9712
|
+
* @param {?} col
|
|
9713
|
+
* @return {?}
|
|
9714
|
+
*/
|
|
9715
|
+
isColVisible(col) {
|
|
9716
|
+
return !!col && col.isShow !== false;
|
|
9717
|
+
}
|
|
9718
|
+
/**
|
|
9719
|
+
* 业务列声明宽:未配置时按 fixColWidth
|
|
9720
|
+
* @private
|
|
9721
|
+
* @param {?} col
|
|
9722
|
+
* @return {?}
|
|
9723
|
+
*/
|
|
9724
|
+
getColDeclaredWidth(col) {
|
|
9725
|
+
return col && col.width > 0 ? col.width : ColWidth.fixColWidth;
|
|
9726
|
+
}
|
|
9727
|
+
/**
|
|
9728
|
+
* 声明列宽合计:勾选列 + 序号列 + 可见业务列,不含补宽
|
|
9729
|
+
* @private
|
|
9730
|
+
* @return {?}
|
|
9731
|
+
*/
|
|
9732
|
+
getDeclaredColWidthTotal() {
|
|
9733
|
+
/** @type {?} */
|
|
9734
|
+
let total = 0;
|
|
9735
|
+
if (this.showSelected) {
|
|
9736
|
+
total += SELECT_COL_WIDTH;
|
|
9737
|
+
}
|
|
9738
|
+
if (this.showTableTotal) {
|
|
9739
|
+
total += this.lineNumberColWidth;
|
|
9740
|
+
}
|
|
9741
|
+
(this.tableCols || []).forEach((/**
|
|
9742
|
+
* @param {?} col
|
|
9743
|
+
* @return {?}
|
|
9744
|
+
*/
|
|
9745
|
+
(col) => {
|
|
9746
|
+
if (this.isColVisible(col)) {
|
|
9747
|
+
total += this.getColDeclaredWidth(col);
|
|
9748
|
+
}
|
|
9749
|
+
}));
|
|
9750
|
+
return total;
|
|
9751
|
+
}
|
|
9752
|
+
/**
|
|
9753
|
+
* 模板里 th / td / 合计 col 用的列宽:声明宽 + 该列按比例分到的补宽
|
|
9656
9754
|
* @param {?} col
|
|
9657
9755
|
* @return {?}
|
|
9658
9756
|
*/
|
|
9659
9757
|
getColDisplayWidth(col) {
|
|
9660
9758
|
/** @type {?} */
|
|
9661
|
-
const
|
|
9662
|
-
|
|
9663
|
-
|
|
9664
|
-
if (this.fluidExtraWidth <= 0 ||
|
|
9665
|
-
!col ||
|
|
9666
|
-
!this.fluidExtraTargetCol ||
|
|
9667
|
-
col !== this.fluidExtraTargetCol) {
|
|
9668
|
-
return base;
|
|
9759
|
+
const declared = this.getColDeclaredWidth(col);
|
|
9760
|
+
if (!col || this.fluidExtraWidth <= 0) {
|
|
9761
|
+
return declared;
|
|
9669
9762
|
}
|
|
9670
|
-
|
|
9763
|
+
/** @type {?} */
|
|
9764
|
+
const extra = this.fluidExtraByCol.get(col);
|
|
9765
|
+
return declared + (extra > 0 ? extra : 0);
|
|
9671
9766
|
}
|
|
9672
9767
|
/**
|
|
9673
|
-
*
|
|
9768
|
+
* 把 fluidExtra 按各可见业务列声明宽比例分配(最大余数法),
|
|
9769
|
+
* 勾选列 / 序号列不参与;保证各列补宽之和等于 fluidExtra。
|
|
9674
9770
|
* @private
|
|
9771
|
+
* @param {?} fluidExtra
|
|
9675
9772
|
* @return {?}
|
|
9676
9773
|
*/
|
|
9677
|
-
|
|
9678
|
-
this.
|
|
9679
|
-
if (
|
|
9680
|
-
!this.tableCols ||
|
|
9681
|
-
!this.tableCols.length) {
|
|
9774
|
+
rebuildFluidExtraByCol(fluidExtra) {
|
|
9775
|
+
this.fluidExtraByCol = new Map();
|
|
9776
|
+
if (fluidExtra <= 0 || !this.tableCols || !this.tableCols.length) {
|
|
9682
9777
|
return;
|
|
9683
9778
|
}
|
|
9684
|
-
|
|
9685
|
-
|
|
9686
|
-
|
|
9687
|
-
|
|
9688
|
-
|
|
9779
|
+
/** @type {?} */
|
|
9780
|
+
const parts = [];
|
|
9781
|
+
/** @type {?} */
|
|
9782
|
+
let sumDeclared = 0;
|
|
9783
|
+
this.tableCols.forEach((/**
|
|
9784
|
+
* @param {?} col
|
|
9785
|
+
* @return {?}
|
|
9786
|
+
*/
|
|
9787
|
+
(col) => {
|
|
9788
|
+
if (!this.isColVisible(col)) {
|
|
9689
9789
|
return;
|
|
9690
9790
|
}
|
|
9791
|
+
/** @type {?} */
|
|
9792
|
+
const declared = this.getColDeclaredWidth(col);
|
|
9793
|
+
sumDeclared += declared;
|
|
9794
|
+
parts.push({ col, declared, share: 0, frac: 0 });
|
|
9795
|
+
}));
|
|
9796
|
+
if (sumDeclared <= 0 || !parts.length) {
|
|
9797
|
+
return;
|
|
9691
9798
|
}
|
|
9692
|
-
|
|
9799
|
+
/** @type {?} */
|
|
9800
|
+
let assigned = 0;
|
|
9801
|
+
parts.forEach((/**
|
|
9802
|
+
* @param {?} part
|
|
9803
|
+
* @return {?}
|
|
9804
|
+
*/
|
|
9805
|
+
(part) => {
|
|
9693
9806
|
/** @type {?} */
|
|
9694
|
-
const
|
|
9695
|
-
|
|
9696
|
-
|
|
9807
|
+
const exact = (fluidExtra * part.declared) / sumDeclared;
|
|
9808
|
+
part.share = Math.floor(exact);
|
|
9809
|
+
part.frac = exact - part.share;
|
|
9810
|
+
assigned += part.share;
|
|
9811
|
+
}));
|
|
9812
|
+
/** @type {?} */
|
|
9813
|
+
let remain = fluidExtra - assigned;
|
|
9814
|
+
parts
|
|
9815
|
+
.slice()
|
|
9816
|
+
.sort((/**
|
|
9817
|
+
* @param {?} a
|
|
9818
|
+
* @param {?} b
|
|
9819
|
+
* @return {?}
|
|
9820
|
+
*/
|
|
9821
|
+
(a, b) => b.frac - a.frac))
|
|
9822
|
+
.forEach((/**
|
|
9823
|
+
* @param {?} part
|
|
9824
|
+
* @return {?}
|
|
9825
|
+
*/
|
|
9826
|
+
(part) => {
|
|
9827
|
+
if (remain <= 0) {
|
|
9697
9828
|
return;
|
|
9698
9829
|
}
|
|
9699
|
-
|
|
9830
|
+
part.share += 1;
|
|
9831
|
+
remain -= 1;
|
|
9832
|
+
}));
|
|
9833
|
+
parts.forEach((/**
|
|
9834
|
+
* @param {?} part
|
|
9835
|
+
* @return {?}
|
|
9836
|
+
*/
|
|
9837
|
+
(part) => {
|
|
9838
|
+
if (part.share > 0) {
|
|
9839
|
+
this.fluidExtraByCol.set(part.col, part.share);
|
|
9840
|
+
}
|
|
9841
|
+
}));
|
|
9842
|
+
}
|
|
9843
|
+
/**
|
|
9844
|
+
* 把横向布局结果写回组件状态(dealScroll / syncHorizontalScroll 共用)
|
|
9845
|
+
* @private
|
|
9846
|
+
* @param {?} layout
|
|
9847
|
+
* @return {?}
|
|
9848
|
+
*/
|
|
9849
|
+
applyHorizontalLayout(layout) {
|
|
9850
|
+
this.fluidExtraWidth = layout.fluidExtra;
|
|
9851
|
+
this.fluidHorizontal = layout.isFluid;
|
|
9852
|
+
this.rebuildFluidExtraByCol(layout.fluidExtra);
|
|
9853
|
+
this.tableColWidthTotal = layout.displayTotal;
|
|
9700
9854
|
}
|
|
9701
9855
|
/**
|
|
9702
9856
|
* fluid → 100%;固定 → scroll.x(与表体同一套横向宽度)
|
|
@@ -9811,23 +9965,7 @@ class HdTableComponent {
|
|
|
9811
9965
|
// ng-zorro 只在 AfterViewInit 绑一次 header/body 的 scroll 同步;
|
|
9812
9966
|
// 若先以 y=null 创建再改成有 y,表头监听会丢,表现为列头不跟着横滚。
|
|
9813
9967
|
this.presetScrollBeforeRemount(useVirtual);
|
|
9814
|
-
this.
|
|
9815
|
-
this.cdr.markForCheck();
|
|
9816
|
-
setTimeout((/**
|
|
9817
|
-
* @return {?}
|
|
9818
|
-
*/
|
|
9819
|
-
() => {
|
|
9820
|
-
this.showTable = true;
|
|
9821
|
-
this.cdr.markForCheck();
|
|
9822
|
-
setTimeout((/**
|
|
9823
|
-
* @return {?}
|
|
9824
|
-
*/
|
|
9825
|
-
() => {
|
|
9826
|
-
this.dealScroll();
|
|
9827
|
-
this.cdr.markForCheck();
|
|
9828
|
-
this.afterTableRender(useVirtual);
|
|
9829
|
-
}));
|
|
9830
|
-
}));
|
|
9968
|
+
this.remountTable(useVirtual);
|
|
9831
9969
|
return;
|
|
9832
9970
|
}
|
|
9833
9971
|
/** @type {?} */
|
|
@@ -9839,32 +9977,40 @@ class HdTableComponent {
|
|
|
9839
9977
|
const nextHasX = !!(this.scroll && this.scroll.x);
|
|
9840
9978
|
/** @type {?} */
|
|
9841
9979
|
const nextHasY = !!(this.scroll && this.scroll.y);
|
|
9842
|
-
//
|
|
9843
|
-
// - y:ng-zorro 只在 AfterViewInit
|
|
9844
|
-
// - x
|
|
9845
|
-
// 不重建时勾选列仍按 auto 均摊撑开(收款编辑等异步灌数页)
|
|
9980
|
+
// scroll.x / scroll.y 从无到有(或反过来)时必须重建,原地改值不生效:
|
|
9981
|
+
// - y:ng-zorro 8 只在 AfterViewInit 绑一次表头/表体滚动同步,且决定表头是否拆成独立 table
|
|
9982
|
+
// - x:决定是否带 ant-table-fixed(table-layout: fixed),勾选列锁宽依赖它
|
|
9846
9983
|
if (prevHasY !== nextHasY || prevHasX !== nextHasX) {
|
|
9847
|
-
this.
|
|
9984
|
+
this.remountTable(useVirtual);
|
|
9985
|
+
return;
|
|
9986
|
+
}
|
|
9987
|
+
this.cdr.markForCheck();
|
|
9988
|
+
this.afterTableRender(useVirtual);
|
|
9989
|
+
}
|
|
9990
|
+
/**
|
|
9991
|
+
* 销毁并重建 nz-table:等 DOM 出来后再按真实容器宽重算一次横向布局
|
|
9992
|
+
* @private
|
|
9993
|
+
* @param {?} useVirtual
|
|
9994
|
+
* @return {?}
|
|
9995
|
+
*/
|
|
9996
|
+
remountTable(useVirtual) {
|
|
9997
|
+
this.showTable = false;
|
|
9998
|
+
this.cdr.markForCheck();
|
|
9999
|
+
setTimeout((/**
|
|
10000
|
+
* @return {?}
|
|
10001
|
+
*/
|
|
10002
|
+
() => {
|
|
10003
|
+
this.showTable = true;
|
|
9848
10004
|
this.cdr.markForCheck();
|
|
9849
10005
|
setTimeout((/**
|
|
9850
10006
|
* @return {?}
|
|
9851
10007
|
*/
|
|
9852
10008
|
() => {
|
|
9853
|
-
this.
|
|
10009
|
+
this.dealScroll();
|
|
9854
10010
|
this.cdr.markForCheck();
|
|
9855
|
-
|
|
9856
|
-
* @return {?}
|
|
9857
|
-
*/
|
|
9858
|
-
() => {
|
|
9859
|
-
this.dealScroll();
|
|
9860
|
-
this.cdr.markForCheck();
|
|
9861
|
-
this.afterTableRender(useVirtual);
|
|
9862
|
-
}));
|
|
10011
|
+
this.afterTableRender(useVirtual);
|
|
9863
10012
|
}));
|
|
9864
|
-
|
|
9865
|
-
}
|
|
9866
|
-
this.cdr.markForCheck();
|
|
9867
|
-
this.afterTableRender(useVirtual);
|
|
10013
|
+
}));
|
|
9868
10014
|
}
|
|
9869
10015
|
/**
|
|
9870
10016
|
* 重建前预设 scroll,保证 AfterViewInit 时 header/body 结构已正确
|
|
@@ -10582,27 +10728,27 @@ class HdTableComponent {
|
|
|
10582
10728
|
getVirtualScrollY(maxOffset) {
|
|
10583
10729
|
return `calc(100vh - ${maxOffset}px)`;
|
|
10584
10730
|
}
|
|
10585
|
-
|
|
10586
|
-
|
|
10587
|
-
|
|
10588
|
-
|
|
10589
|
-
|
|
10590
|
-
|
|
10591
|
-
|
|
10592
|
-
|
|
10593
|
-
|
|
10594
|
-
|
|
10595
|
-
|
|
10596
|
-
|
|
10597
|
-
*
|
|
10598
|
-
*
|
|
10599
|
-
* 补宽目标用 clientWidth
|
|
10731
|
+
/*
|
|
10732
|
+
* 横向布局(勾选列锁 40px 的关键)
|
|
10733
|
+
*
|
|
10734
|
+
* 勾选列只有在 table-layout: fixed 下才锁得住:ng-zorro 8 仅在 nzScroll.x 有值时
|
|
10735
|
+
* 给 table 加 ant-table-fixed;auto 布局下 table 宽 100%、每列都有 nzWidth,
|
|
10736
|
+
* 剩余空间会按比例摊到所有列(含勾选列),单元格上的 max-width 也不生效。
|
|
10737
|
+
* 所以只要有列(无论有没有数据)就一定设置 scroll.x:
|
|
10738
|
+
* - 列少:scroll.x = 容器宽,差额按声明宽比例分到各业务列(fluid,不出真横滚)
|
|
10739
|
+
* - 列多:scroll.x = 声明总宽,正常横滚
|
|
10740
|
+
* less 里勾选列的 40px 只是 fixed 布局下的兜底。
|
|
10741
|
+
*/
|
|
10742
|
+
/**
|
|
10743
|
+
* 按声明列宽合计 + 容器宽算出横向布局。
|
|
10744
|
+
* 判断「是否超宽」用 offsetWidth(含竖滚条槽),避免只因竖滚条就误开横滚;
|
|
10745
|
+
* 补宽目标用 clientWidth 并向下取整,避免表宽多 1px 逼出横滚条。
|
|
10600
10746
|
* @private
|
|
10601
10747
|
* @param {?} declaredColWidth
|
|
10602
10748
|
* @return {?}
|
|
10603
10749
|
*/
|
|
10604
10750
|
resolveHorizontalLayout(declaredColWidth) {
|
|
10605
|
-
if (
|
|
10751
|
+
if (declaredColWidth <= 0) {
|
|
10606
10752
|
return {
|
|
10607
10753
|
scrollX: null,
|
|
10608
10754
|
fluidExtra: 0,
|
|
@@ -10611,108 +10757,57 @@ class HdTableComponent {
|
|
|
10611
10757
|
};
|
|
10612
10758
|
}
|
|
10613
10759
|
/** @type {?} */
|
|
10614
|
-
let
|
|
10760
|
+
let compareWidth = this.nzTableComponent
|
|
10615
10761
|
? getTableScrollXViewportWidth(this.nzTableComponent)
|
|
10616
10762
|
: 0;
|
|
10617
|
-
//
|
|
10618
|
-
if (
|
|
10619
|
-
/** @type {?} */
|
|
10620
|
-
const hostW = ((/** @type {?} */ (this.hostEl.nativeElement))).offsetWidth;
|
|
10621
|
-
if (hostW > 0) {
|
|
10622
|
-
viewportCompare = hostW;
|
|
10623
|
-
}
|
|
10763
|
+
// 表体还没渲染出来(刚重建 / 在 spin 里)时用宿主宽兜底
|
|
10764
|
+
if (compareWidth <= 0 && this.hostEl && this.hostEl.nativeElement) {
|
|
10765
|
+
compareWidth = ((/** @type {?} */ (this.hostEl.nativeElement))).offsetWidth;
|
|
10624
10766
|
}
|
|
10625
|
-
|
|
10626
|
-
|
|
10627
|
-
|
|
10628
|
-
scrollX: `${Math.ceil(declaredColWidth)}px`,
|
|
10629
|
-
fluidExtra: 0,
|
|
10630
|
-
displayTotal: declaredColWidth,
|
|
10631
|
-
isFluid: false,
|
|
10632
|
-
};
|
|
10633
|
-
}
|
|
10634
|
-
/** @type {?} */
|
|
10635
|
-
const fillWidth = this.nzTableComponent
|
|
10636
|
-
? getTableViewportWidth(this.nzTableComponent)
|
|
10637
|
-
: 0;
|
|
10638
|
-
/** @type {?} */
|
|
10639
|
-
const target = Math.floor(fillWidth > 0 ? fillWidth : viewportCompare);
|
|
10640
|
-
/** @type {?} */
|
|
10641
|
-
const fluidExtra = Math.max(0, target - declaredColWidth);
|
|
10642
|
-
return {
|
|
10643
|
-
scrollX: `${target}px`,
|
|
10644
|
-
fluidExtra,
|
|
10645
|
-
displayTotal: declaredColWidth + fluidExtra,
|
|
10646
|
-
isFluid: true,
|
|
10647
|
-
};
|
|
10767
|
+
// 仍量不到(如宿主在 display:none 里):先按声明宽走 fixed,等 ResizeObserver 触发再转 fluid
|
|
10768
|
+
if (compareWidth <= 0) {
|
|
10769
|
+
return fixedLayout(declaredColWidth);
|
|
10648
10770
|
}
|
|
10649
|
-
//
|
|
10650
|
-
|
|
10651
|
-
|
|
10652
|
-
|
|
10653
|
-
|
|
10654
|
-
|
|
10655
|
-
|
|
10656
|
-
|
|
10771
|
+
// 1px 容差,避免亚像素误判
|
|
10772
|
+
if (declaredColWidth > compareWidth + 1) {
|
|
10773
|
+
return fixedLayout(declaredColWidth);
|
|
10774
|
+
}
|
|
10775
|
+
/** @type {?} */
|
|
10776
|
+
const fillWidth = this.nzTableComponent
|
|
10777
|
+
? getTableViewportWidth(this.nzTableComponent)
|
|
10778
|
+
: 0;
|
|
10779
|
+
/** @type {?} */
|
|
10780
|
+
const containerWidth = Math.floor(fillWidth > 0 ? fillWidth : compareWidth);
|
|
10781
|
+
return fluidLayout(containerWidth, declaredColWidth);
|
|
10657
10782
|
}
|
|
10658
10783
|
/**
|
|
10659
|
-
*
|
|
10784
|
+
* 表格渲染后按真实容器宽校正横向布局;只改 x,y 保持不变
|
|
10660
10785
|
* @private
|
|
10661
10786
|
* @return {?}
|
|
10662
10787
|
*/
|
|
10663
10788
|
syncHorizontalScroll() {
|
|
10664
|
-
/** @type {?} */
|
|
10665
|
-
let declared = 0;
|
|
10666
|
-
if (this.showSelected) {
|
|
10667
|
-
declared += 40;
|
|
10668
|
-
}
|
|
10669
|
-
if (this.showTableTotal) {
|
|
10670
|
-
declared += this.lineNumberColWidth;
|
|
10671
|
-
}
|
|
10672
|
-
if (this.tableCols) {
|
|
10673
|
-
this.tableCols.forEach((/**
|
|
10674
|
-
* @param {?} item
|
|
10675
|
-
* @return {?}
|
|
10676
|
-
*/
|
|
10677
|
-
(item) => {
|
|
10678
|
-
if (item && item.isShow !== false) {
|
|
10679
|
-
declared += item.width > 0 ? item.width : ColWidth.fixColWidth;
|
|
10680
|
-
}
|
|
10681
|
-
}));
|
|
10682
|
-
}
|
|
10683
10789
|
/** @type {?} */
|
|
10684
10790
|
const prevHasX = !!(this.scroll && this.scroll.x);
|
|
10685
10791
|
/** @type {?} */
|
|
10686
|
-
const layout = this.resolveHorizontalLayout(
|
|
10687
|
-
/** @type {?} */
|
|
10688
|
-
const currentY = this.scroll ? this.scroll.y : null;
|
|
10792
|
+
const layout = this.resolveHorizontalLayout(this.getDeclaredColWidthTotal());
|
|
10689
10793
|
/** @type {?} */
|
|
10690
|
-
const
|
|
10691
|
-
|
|
10692
|
-
|
|
10693
|
-
|
|
10694
|
-
|
|
10695
|
-
/** @type {?} */
|
|
10696
|
-
const sameFluid = this.fluidHorizontal === layout.isFluid;
|
|
10697
|
-
if (sameX &&
|
|
10698
|
-
sameExtra &&
|
|
10699
|
-
sameFluid &&
|
|
10700
|
-
this.scroll &&
|
|
10701
|
-
this.scroll.y === currentY) {
|
|
10794
|
+
const unchanged = this.scroll &&
|
|
10795
|
+
this.scroll.x === layout.scrollX &&
|
|
10796
|
+
this.fluidExtraWidth === layout.fluidExtra &&
|
|
10797
|
+
this.fluidHorizontal === layout.isFluid;
|
|
10798
|
+
if (unchanged) {
|
|
10702
10799
|
setTimeout((/**
|
|
10703
10800
|
* @return {?}
|
|
10704
10801
|
*/
|
|
10705
10802
|
() => this.syncTotalFooterWithBody()));
|
|
10706
10803
|
return;
|
|
10707
10804
|
}
|
|
10708
|
-
this.
|
|
10709
|
-
this.
|
|
10710
|
-
this.
|
|
10711
|
-
this.tableColWidthTotal = layout.displayTotal;
|
|
10712
|
-
this.scroll = { x: layout.scrollX, y: currentY };
|
|
10805
|
+
this.applyHorizontalLayout(layout);
|
|
10806
|
+
this.refreshStickyOffsets();
|
|
10807
|
+
this.scroll = { x: layout.scrollX, y: this.scroll ? this.scroll.y : null };
|
|
10713
10808
|
this.cdr.markForCheck();
|
|
10714
|
-
//
|
|
10715
|
-
if (prevHasX !==
|
|
10809
|
+
// x 从无到有(或反过来)要重建才能切换 table-layout
|
|
10810
|
+
if (prevHasX !== !!layout.scrollX) {
|
|
10716
10811
|
this.applyTableScrollMode(true);
|
|
10717
10812
|
return;
|
|
10718
10813
|
}
|
|
@@ -10953,18 +11048,21 @@ class HdTableComponent {
|
|
|
10953
11048
|
}), 100);
|
|
10954
11049
|
}
|
|
10955
11050
|
/**
|
|
11051
|
+
* 左/右冻结偏移按展示宽累计(fluid 比例补宽后各列变宽,不能再用声明宽)。
|
|
11052
|
+
* 须在 applyHorizontalLayout 之后调用。
|
|
11053
|
+
* @private
|
|
10956
11054
|
* @return {?}
|
|
10957
11055
|
*/
|
|
10958
|
-
|
|
11056
|
+
refreshStickyOffsets() {
|
|
10959
11057
|
/** @type {?} */
|
|
10960
|
-
let
|
|
11058
|
+
let leftOffset = 0;
|
|
10961
11059
|
if (this.showSelected) {
|
|
10962
|
-
|
|
11060
|
+
leftOffset += SELECT_COL_WIDTH;
|
|
10963
11061
|
}
|
|
10964
11062
|
if (this.showTableTotal) {
|
|
10965
|
-
|
|
11063
|
+
leftOffset += this.lineNumberColWidth;
|
|
10966
11064
|
}
|
|
10967
|
-
this.tableCols.forEach((/**
|
|
11065
|
+
(this.tableCols || []).forEach((/**
|
|
10968
11066
|
* @param {?} item
|
|
10969
11067
|
* @return {?}
|
|
10970
11068
|
*/
|
|
@@ -10972,34 +11070,45 @@ class HdTableComponent {
|
|
|
10972
11070
|
if (!item.width) {
|
|
10973
11071
|
item.width = ColWidth.fixColWidth;
|
|
10974
11072
|
}
|
|
10975
|
-
if (item
|
|
10976
|
-
item.fixedWidth =
|
|
10977
|
-
|
|
11073
|
+
if (this.isColVisible(item)) {
|
|
11074
|
+
item.fixedWidth = leftOffset;
|
|
11075
|
+
leftOffset += this.getColDisplayWidth(item);
|
|
10978
11076
|
}
|
|
10979
11077
|
}));
|
|
10980
|
-
// 右侧固定列:从右往左累计偏移,避免多列都 right:0 互相遮挡
|
|
10981
11078
|
/** @type {?} */
|
|
10982
11079
|
let rightOffset = 0;
|
|
10983
|
-
for (let i = this.tableCols.length - 1; i >= 0; i--) {
|
|
11080
|
+
for (let i = (this.tableCols || []).length - 1; i >= 0; i--) {
|
|
10984
11081
|
/** @type {?} */
|
|
10985
11082
|
const item = this.tableCols[i];
|
|
10986
|
-
if (item
|
|
11083
|
+
if (!this.isColVisible(item)) {
|
|
10987
11084
|
continue;
|
|
10988
11085
|
}
|
|
10989
11086
|
if (item.fixed === "right") {
|
|
10990
11087
|
item.fixedRightWidth = rightOffset;
|
|
10991
|
-
rightOffset += item
|
|
11088
|
+
rightOffset += this.getColDisplayWidth(item);
|
|
10992
11089
|
}
|
|
10993
11090
|
else {
|
|
10994
11091
|
item.fixedRightWidth = 0;
|
|
10995
11092
|
}
|
|
10996
11093
|
}
|
|
11094
|
+
}
|
|
11095
|
+
/**
|
|
11096
|
+
* @return {?}
|
|
11097
|
+
*/
|
|
11098
|
+
dealScroll() {
|
|
11099
|
+
(this.tableCols || []).forEach((/**
|
|
11100
|
+
* @param {?} item
|
|
11101
|
+
* @return {?}
|
|
11102
|
+
*/
|
|
11103
|
+
(item) => {
|
|
11104
|
+
if (!item.width) {
|
|
11105
|
+
item.width = ColWidth.fixColWidth;
|
|
11106
|
+
}
|
|
11107
|
+
}));
|
|
10997
11108
|
/** @type {?} */
|
|
10998
|
-
const layout = this.resolveHorizontalLayout(
|
|
10999
|
-
this.
|
|
11000
|
-
this.
|
|
11001
|
-
this.refreshFluidExtraTargetCol();
|
|
11002
|
-
this.tableColWidthTotal = layout.displayTotal;
|
|
11109
|
+
const layout = this.resolveHorizontalLayout(this.getDeclaredColWidthTotal());
|
|
11110
|
+
this.applyHorizontalLayout(layout);
|
|
11111
|
+
this.refreshStickyOffsets();
|
|
11003
11112
|
/** @type {?} */
|
|
11004
11113
|
const maxOffset = this.getScrollYMaxOffset();
|
|
11005
11114
|
/** @type {?} */
|
|
@@ -11965,7 +12074,7 @@ class HdTableComponent {
|
|
|
11965
12074
|
HdTableComponent.decorators = [
|
|
11966
12075
|
{ type: Component, args: [{
|
|
11967
12076
|
selector: "hd-table",
|
|
11968
|
-
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>",
|
|
12077
|
+
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>",
|
|
11969
12078
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11970
12079
|
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}"]
|
|
11971
12080
|
}] }
|
|
@@ -12201,28 +12310,26 @@ if (false) {
|
|
|
12201
12310
|
*/
|
|
12202
12311
|
HdTableComponent.prototype.virtualScrollActive;
|
|
12203
12312
|
/**
|
|
12204
|
-
*
|
|
12313
|
+
* 实际渲染列宽合计(含勾选/序号 + 补宽),合计 footer 表宽用
|
|
12205
12314
|
* @type {?}
|
|
12206
12315
|
*/
|
|
12207
12316
|
HdTableComponent.prototype.tableColWidthTotal;
|
|
12208
12317
|
/**
|
|
12209
|
-
*
|
|
12210
|
-
* 并设 scroll.x = 容器宽,避免表宽 100% 均摊撑开勾选列;拖拽改宽仍写 col.width。
|
|
12318
|
+
* 待按比例分给各业务列的总补宽;只影响展示,不写回 col.width(列宽缓存、拖拽仍用声明宽)
|
|
12211
12319
|
* @type {?}
|
|
12212
12320
|
*/
|
|
12213
12321
|
HdTableComponent.prototype.fluidExtraWidth;
|
|
12214
12322
|
/**
|
|
12215
|
-
*
|
|
12216
|
-
* 用于关掉 ng-zorro fixed-header 带来的常驻 X 轴滚动条。
|
|
12323
|
+
* 列少、靠补宽吃满容器:模板据此加 hd-table--fluid-x,隐藏 fixed-header 常驻的横滚槽
|
|
12217
12324
|
* @type {?}
|
|
12218
12325
|
*/
|
|
12219
12326
|
HdTableComponent.prototype.fluidHorizontal;
|
|
12220
12327
|
/**
|
|
12221
|
-
*
|
|
12328
|
+
* 各业务列分到的补宽(按列对象取,applyHorizontalLayout 时整表重建)
|
|
12222
12329
|
* @type {?}
|
|
12223
12330
|
* @private
|
|
12224
12331
|
*/
|
|
12225
|
-
HdTableComponent.prototype.
|
|
12332
|
+
HdTableComponent.prototype.fluidExtraByCol;
|
|
12226
12333
|
/**
|
|
12227
12334
|
* 数据更新后待复位纵向滚动位置
|
|
12228
12335
|
* @type {?}
|