fantasy-ngzorro 1.2.20 → 1.3.0

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.
@@ -1,7 +1,7 @@
1
- import { Component, ContentChild, NgModule, Injectable, ɵɵdefineInjectable, EventEmitter, Input, Output, NO_ERRORS_SCHEMA, ɵɵinject, ChangeDetectorRef } from '@angular/core';
1
+ import { Component, ContentChild, NgModule, Injectable, ɵɵdefineInjectable, EventEmitter, Input, Output, NO_ERRORS_SCHEMA, ElementRef, ChangeDetectorRef, ViewChildren, ɵɵinject } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormsModule, FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
4
- import { NgZorroAntdModule, InputBoolean, NzModalService } from 'ng-zorro-antd';
4
+ import { NgZorroAntdModule, InputBoolean, NzInputNumberComponent, NzSelectComponent, NzDatePickerComponent, NzRangePickerComponent, NzTimePickerComponent, NzModalService } from 'ng-zorro-antd';
5
5
  import { __decorate, __metadata, __spread, __values, __assign, __read } from 'tslib';
6
6
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
7
7
  import { round } from 'lodash';
@@ -1281,14 +1281,144 @@ var HdSpaceModule = /** @class */ (function () {
1281
1281
  return HdSpaceModule;
1282
1282
  }());
1283
1283
 
1284
+ /**
1285
+ * @fileoverview added by tsickle
1286
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1287
+ */
1288
+ // 控件列表
1289
+ var
1290
+ // 控件列表
1291
+ FormLine = /** @class */ (function () {
1292
+ function FormLine() {
1293
+ // 输入框的提示文件
1294
+ this.require = false; // 是否必填
1295
+ // 是否必填
1296
+ this.hide = false; // 是否为隐藏字段,仅用于填充表单的字段,不显示在页面上
1297
+ // 列对齐方式
1298
+ this.value = null; // 值 不传默认为null
1299
+ // 需要保留小数的列的位数
1300
+ this.inputNumber = new InputNumber(); // number组件的min、max、step
1301
+ // 不可输入状态
1302
+ this.showTime = false; // 日期选择器是否包含时间
1303
+ this.canSearch = false; // 指明hide 情况下的控件是否可以被搜索,默认false
1304
+ }
1305
+ return FormLine;
1306
+ }());
1307
+ if (false) {
1308
+ /** @type {?} */
1309
+ FormLine.prototype.type;
1310
+ /** @type {?} */
1311
+ FormLine.prototype.label;
1312
+ /** @type {?} */
1313
+ FormLine.prototype.name;
1314
+ /** @type {?} */
1315
+ FormLine.prototype.placeholder;
1316
+ /** @type {?} */
1317
+ FormLine.prototype.require;
1318
+ /** @type {?} */
1319
+ FormLine.prototype.hide;
1320
+ /** @type {?} */
1321
+ FormLine.prototype.align;
1322
+ /** @type {?} */
1323
+ FormLine.prototype.value;
1324
+ /** @type {?} */
1325
+ FormLine.prototype.isSelect;
1326
+ /** @type {?} */
1327
+ FormLine.prototype.selectOption;
1328
+ /** @type {?} */
1329
+ FormLine.prototype.explainOptionRight;
1330
+ /** @type {?} */
1331
+ FormLine.prototype.explainOption;
1332
+ /** @type {?} */
1333
+ FormLine.prototype.colorOption;
1334
+ /** @type {?} */
1335
+ FormLine.prototype.maxLength;
1336
+ /** @type {?} */
1337
+ FormLine.prototype.preserveNumber;
1338
+ /** @type {?} */
1339
+ FormLine.prototype.inputNumber;
1340
+ /** @type {?} */
1341
+ FormLine.prototype.onChangeEvent;
1342
+ /** @type {?} */
1343
+ FormLine.prototype.onSearchEvent;
1344
+ /** @type {?} */
1345
+ FormLine.prototype.defaultLabel;
1346
+ /** @type {?} */
1347
+ FormLine.prototype.hdDisabledDate;
1348
+ /** @type {?} */
1349
+ FormLine.prototype.disabled;
1350
+ /** @type {?} */
1351
+ FormLine.prototype.showTime;
1352
+ /** @type {?} */
1353
+ FormLine.prototype.style;
1354
+ /** @type {?} */
1355
+ FormLine.prototype.canSearch;
1356
+ /** @type {?} */
1357
+ FormLine.prototype.onChangeEventDebounceTime;
1358
+ /** @type {?} */
1359
+ FormLine.prototype.onSearchEventEventDebounceTime;
1360
+ }
1361
+ var ColorOption = /** @class */ (function () {
1362
+ function ColorOption() {
1363
+ }
1364
+ return ColorOption;
1365
+ }());
1366
+ if (false) {
1367
+ /** @type {?} */
1368
+ ColorOption.prototype.name;
1369
+ /** @type {?} */
1370
+ ColorOption.prototype.color;
1371
+ }
1372
+ var ExplainOption = /** @class */ (function () {
1373
+ function ExplainOption() {
1374
+ }
1375
+ return ExplainOption;
1376
+ }());
1377
+ if (false) {
1378
+ /** @type {?} */
1379
+ ExplainOption.prototype.show;
1380
+ /** @type {?} */
1381
+ ExplainOption.prototype.name;
1382
+ /** @type {?} */
1383
+ ExplainOption.prototype.color;
1384
+ }
1385
+ /** @enum {string} */
1386
+ var FormLineType = {
1387
+ Input: 'Input',
1388
+ Select: 'Select',
1389
+ Date: 'Date',
1390
+ DateRange: 'DateRange',
1391
+ TextArea: 'TextArea',
1392
+ InputNumber: 'InputNumber',
1393
+ MultipleSelect: 'MultipleSelect',
1394
+ ViewDom: 'ViewDom',
1395
+ Switch: 'Switch',
1396
+ Time: 'Time' // 时间选择器
1397
+ ,
1398
+ };
1399
+ var HdFormLinesService = /** @class */ (function () {
1400
+ function HdFormLinesService() {
1401
+ }
1402
+ HdFormLinesService.decorators = [
1403
+ { type: Injectable, args: [{
1404
+ providedIn: 'root'
1405
+ },] }
1406
+ ];
1407
+ /** @nocollapse */
1408
+ HdFormLinesService.ctorParameters = function () { return []; };
1409
+ /** @nocollapse */ HdFormLinesService.ngInjectableDef = ɵɵdefineInjectable({ factory: function HdFormLinesService_Factory() { return new HdFormLinesService(); }, token: HdFormLinesService, providedIn: "root" });
1410
+ return HdFormLinesService;
1411
+ }());
1412
+
1284
1413
  /**
1285
1414
  * @fileoverview added by tsickle
1286
1415
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1287
1416
  */
1288
1417
  var HdFormLinesComponent = /** @class */ (function () {
1289
- function HdFormLinesComponent(fb) {
1418
+ function HdFormLinesComponent(fb, cdr) {
1290
1419
  var _this = this;
1291
1420
  this.fb = fb;
1421
+ this.cdr = cdr;
1292
1422
  this.tableLoading = false;
1293
1423
  this.showSearch = false;
1294
1424
  this.operateButtons = ['add', 'delete'];
@@ -1296,7 +1426,8 @@ var HdFormLinesComponent = /** @class */ (function () {
1296
1426
  this.changeEvent = new EventEmitter();
1297
1427
  this.showDeleteConfirm = false;
1298
1428
  this.paginationPageIndex = 1;
1299
- this.paginationPageSize = 10;
1429
+ // TODO:这里暂时变成2条去处理,做完之后需要改成10
1430
+ this.paginationPageSize = 3;
1300
1431
  // 合计区域
1301
1432
  this.showTotal = false;
1302
1433
  this.totalOption = [];
@@ -1315,6 +1446,13 @@ var HdFormLinesComponent = /** @class */ (function () {
1315
1446
  // 表单当前的状态
1316
1447
  this.searchSubject = new Subject();
1317
1448
  this.debounceTimeout = 0; // 默认防抖时间
1449
+ // 当前页的dom二维数组
1450
+ this.collectDomList = [];
1451
+ // 当前聚焦的dom元素坐标
1452
+ this.activeDomX = null;
1453
+ this.activeDomY = null;
1454
+ this.activeDom = null;
1455
+ this.activeSelectedComponentOpen = false;
1318
1456
  this.textWidthCache = {};
1319
1457
  this.searchSubscription = this.searchSubject.pipe(debounceTime(this.debounceTimeout)).subscribe((/**
1320
1458
  * @param {?} __0
@@ -1328,13 +1466,533 @@ var HdFormLinesComponent = /** @class */ (function () {
1328
1466
  /**
1329
1467
  * @return {?}
1330
1468
  */
1331
- HdFormLinesComponent.prototype.ngOnInit = /**
1469
+ HdFormLinesComponent.prototype.ngOnInit = /**
1470
+ * @return {?}
1471
+ */
1472
+ function () {
1473
+ // 缓存一下总的表单数据
1474
+ this.storeFormLinesData = this.formLinesData;
1475
+ this.init();
1476
+ };
1477
+ /**
1478
+ * @return {?}
1479
+ */
1480
+ HdFormLinesComponent.prototype.ngAfterViewInit = /**
1481
+ * @return {?}
1482
+ */
1483
+ function () {
1484
+ this.collectDomData();
1485
+ };
1486
+ Object.defineProperty(HdFormLinesComponent.prototype, "formLinesLength", {
1487
+ get: /**
1488
+ * @return {?}
1489
+ */
1490
+ function () {
1491
+ return this.linesFormArray.controls.length;
1492
+ },
1493
+ enumerable: true,
1494
+ configurable: true
1495
+ });
1496
+ /**
1497
+ * @return {?}
1498
+ */
1499
+ HdFormLinesComponent.prototype.collectDomData = /**
1500
+ * @return {?}
1501
+ */
1502
+ function () {
1503
+ this.collectDomList = [];
1504
+ /** @type {?} */
1505
+ var pageDomList = this.formInputDomList.toArray();
1506
+ // Step 1: 获取当前页的数据量
1507
+ /** @type {?} */
1508
+ var startIndex = (this.paginationPageIndex - 1) * this.paginationPageSize;
1509
+ /** @type {?} */
1510
+ var endIndex = this.paginationPageIndex * this.paginationPageSize;
1511
+ /** @type {?} */
1512
+ var adjustedEndIndex = endIndex > this.formLinesLength ? this.formLinesLength : endIndex;
1513
+ /** @type {?} */
1514
+ var pageLinesLength = adjustedEndIndex - startIndex;
1515
+ /** @type {?} */
1516
+ var interval = pageDomList.length / pageLinesLength;
1517
+ // Step 2: 拆分formInputDomList
1518
+ for (var i = 0; i < pageLinesLength; i++) {
1519
+ this.collectDomList.push(pageDomList.splice(0, interval));
1520
+ }
1521
+ // 关闭所有NzInputNumberComponent的键盘上下箭头触发+-的功能
1522
+ for (var i = 0; i < this.collectDomList.length; i++) {
1523
+ for (var j = 0; j < this.collectDomList[i].length; j++) {
1524
+ /** @type {?} */
1525
+ var dom = this.collectDomList[i][j];
1526
+ if (dom instanceof NzInputNumberComponent) {
1527
+ dom.down = (/**
1528
+ * @return {?}
1529
+ */
1530
+ function () { });
1531
+ dom.up = (/**
1532
+ * @return {?}
1533
+ */
1534
+ function () { });
1535
+ }
1536
+ }
1537
+ }
1538
+ };
1539
+ // 聚焦下一个dom
1540
+ // 聚焦下一个dom
1541
+ /**
1542
+ * @param {?} x
1543
+ * @param {?} y
1544
+ * @return {?}
1545
+ */
1546
+ HdFormLinesComponent.prototype.jumpToNextInput =
1547
+ // 聚焦下一个dom
1548
+ /**
1549
+ * @param {?} x
1550
+ * @param {?} y
1551
+ * @return {?}
1552
+ */
1553
+ function (x, y) {
1554
+ if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {
1555
+ return;
1556
+ }
1557
+ // 如果是最后一个可输入元素,新增行
1558
+ if (x === this.collectDomList.length - 1 && y === this.collectDomList[0].length - 1) {
1559
+ this.addNewLineAndFocus();
1560
+ }
1561
+ else {
1562
+ if (y === this.collectDomList[0].length - 1) {
1563
+ // 如果是最后一列,则跳转到下一行第一个输入框
1564
+ this.focusDom(x + 1, 0, 'right');
1565
+ }
1566
+ else {
1567
+ // 如果不是最后一列,则跳转到当前行下一个输入框
1568
+ this.focusDom(x, y + 1, 'right');
1569
+ }
1570
+ }
1571
+ };
1572
+ /**
1573
+ * 增加新行并且聚焦到第一个元素,
1574
+ * 这里要注意,如果存在翻页情况,需要处理
1575
+ */
1576
+ /**
1577
+ * 增加新行并且聚焦到第一个元素,
1578
+ * 这里要注意,如果存在翻页情况,需要处理
1579
+ * @return {?}
1580
+ */
1581
+ HdFormLinesComponent.prototype.addNewLineAndFocus = /**
1582
+ * 增加新行并且聚焦到第一个元素,
1583
+ * 这里要注意,如果存在翻页情况,需要处理
1584
+ * @return {?}
1585
+ */
1586
+ function () {
1587
+ var _this = this;
1588
+ // 当前行为当前页最后一行的时候,判断下一页是否有数据
1589
+ // 1、如果有:翻页+聚焦第一行第一个元素
1590
+ // 2、如果没有:新增行+翻页+聚焦第一行第一个元素
1591
+ if (this.activeDomX === this.paginationPageSize - 1) {
1592
+ // 判断下一页是否有数据
1593
+ if (this.paginationPageIndex < Math.ceil(this.formLinesLength / this.paginationPageSize)) {
1594
+ // 翻页+聚焦第一行第一个元素
1595
+ this.paginationPageIndex++;
1596
+ setTimeout((/**
1597
+ * @return {?}
1598
+ */
1599
+ function () {
1600
+ _this.collectDomData();
1601
+ _this.focusDom(0, 0, 'right');
1602
+ }), 0);
1603
+ }
1604
+ else {
1605
+ // 新增行+翻页+聚焦第一行第一个元素
1606
+ this.addFormLine();
1607
+ this.paginationPageIndex++;
1608
+ setTimeout((/**
1609
+ * @return {?}
1610
+ */
1611
+ function () {
1612
+ _this.collectDomData();
1613
+ _this.focusDom(0, 0);
1614
+ }), 0);
1615
+ }
1616
+ }
1617
+ else {
1618
+ this.addFormLine();
1619
+ }
1620
+ };
1621
+ // 聚焦到上一个dom
1622
+ // 聚焦到上一个dom
1623
+ /**
1624
+ * @param {?} x
1625
+ * @param {?} y
1626
+ * @return {?}
1627
+ */
1628
+ HdFormLinesComponent.prototype.jumpToPrevInput =
1629
+ // 聚焦到上一个dom
1630
+ /**
1631
+ * @param {?} x
1632
+ * @param {?} y
1633
+ * @return {?}
1634
+ */
1635
+ function (x, y) {
1636
+ var _this = this;
1637
+ if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {
1638
+ return;
1639
+ }
1640
+ if (x === 0 && y === 0) {
1641
+ // 如果是第一个可输入元素, 判断是否有上一页, 如果有,则翻页+聚焦到上一页最后一个元素
1642
+ if (this.paginationPageIndex > 1) {
1643
+ // 翻页+聚焦到上一页最后一个元素
1644
+ this.paginationPageIndex--;
1645
+ setTimeout((/**
1646
+ * @return {?}
1647
+ */
1648
+ function () {
1649
+ _this.collectDomData();
1650
+ _this.focusDom(_this.collectDomList.length - 1, _this.collectDomList[0].length - 1);
1651
+ }), 0);
1652
+ }
1653
+ return;
1654
+ }
1655
+ else {
1656
+ if (y === 0) {
1657
+ // 如果是第一列,则跳转到上一行最后一个输入框
1658
+ this.focusDom(x - 1, this.collectDomList[0].length - 1, 'left');
1659
+ }
1660
+ else {
1661
+ // 如果不是第一列,则跳转到当前行上一个输入框
1662
+ this.focusDom(x, y - 1, 'left');
1663
+ }
1664
+ }
1665
+ };
1666
+ /**
1667
+ * 聚焦到某个dom
1668
+ * @param x 坐标x
1669
+ * @param y 坐标y
1670
+ * @param jumpDirection 跳转方向
1671
+ */
1672
+ /**
1673
+ * 聚焦到某个dom
1674
+ * @param {?} x 坐标x
1675
+ * @param {?} y 坐标y
1676
+ * @param {?=} jumpDirection 跳转方向
1677
+ * @return {?}
1678
+ */
1679
+ HdFormLinesComponent.prototype.focusDom = /**
1680
+ * 聚焦到某个dom
1681
+ * @param {?} x 坐标x
1682
+ * @param {?} y 坐标y
1683
+ * @param {?=} jumpDirection 跳转方向
1684
+ * @return {?}
1685
+ */
1686
+ function (x, y, jumpDirection) {
1687
+ if (jumpDirection === void 0) { jumpDirection = 'right'; }
1688
+ if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {
1689
+ return;
1690
+ }
1691
+ // 先清除一下当前的焦点
1692
+ this.cleanFocusDom(this.activeDomX, this.activeDomY);
1693
+ if (this.collectDomList[x] && this.collectDomList[x][y]) {
1694
+ /** @type {?} */
1695
+ var dom_1 = this.collectDomList[x][y];
1696
+ // 需要判断下一个focus的dom是否是禁用状态,如果是禁用状态需要跳过
1697
+ if (dom_1 instanceof NzSelectComponent) {
1698
+ if (dom_1.nzDisabled) {
1699
+ if (jumpDirection === 'right') {
1700
+ this.jumpToNextInput(x, y);
1701
+ }
1702
+ else if (jumpDirection === 'left') {
1703
+ this.jumpToPrevInput(x, y);
1704
+ }
1705
+ return;
1706
+ }
1707
+ dom_1.nzSelectTopControlComponent.inputElement.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });
1708
+ // 这里多选框需要额外处理下,因为向下的时候会触发内部Input的聚焦,把下一个dom的focus放到宏任务中,延迟处理。
1709
+ if (dom_1.nzSelectService.mode === 'multiple') {
1710
+ setTimeout((/**
1711
+ * @return {?}
1712
+ */
1713
+ function () {
1714
+ dom_1.focus();
1715
+ }), 0);
1716
+ }
1717
+ else {
1718
+ dom_1.focus();
1719
+ }
1720
+ }
1721
+ else if (dom_1 instanceof NzInputNumberComponent) {
1722
+ if (dom_1.nzDisabled) {
1723
+ if (jumpDirection === 'right') {
1724
+ this.jumpToNextInput(x, y);
1725
+ }
1726
+ else if (jumpDirection === 'left') {
1727
+ this.jumpToPrevInput(x, y);
1728
+ }
1729
+ return;
1730
+ }
1731
+ /** @type {?} */
1732
+ var inputDom_1 = document.getElementById(dom_1.nzId);
1733
+ inputDom_1.focus();
1734
+ inputDom_1.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });
1735
+ setTimeout((/**
1736
+ * @return {?}
1737
+ */
1738
+ function () {
1739
+ inputDom_1.select();
1740
+ }), 0);
1741
+ }
1742
+ else if (dom_1 instanceof ElementRef) {
1743
+ if (dom_1.nativeElement.disabled) {
1744
+ if (jumpDirection === 'right') {
1745
+ this.jumpToNextInput(x, y);
1746
+ }
1747
+ else if (jumpDirection === 'left') {
1748
+ this.jumpToPrevInput(x, y);
1749
+ }
1750
+ return;
1751
+ }
1752
+ dom_1.nativeElement.focus();
1753
+ dom_1.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });
1754
+ setTimeout((/**
1755
+ * @return {?}
1756
+ */
1757
+ function () {
1758
+ dom_1.nativeElement.select();
1759
+ }), 0);
1760
+ }
1761
+ else if (dom_1 instanceof NzDatePickerComponent || dom_1 instanceof NzRangePickerComponent || dom_1 instanceof NzTimePickerComponent) {
1762
+ // TODO:在ngzorro8.5.x版本,时间相关的选择器没有暴露出open方法,暂时先不处理。(10.x及以上版本提供了open方法)
1763
+ if (jumpDirection === 'right') {
1764
+ this.jumpToNextInput(x, y);
1765
+ }
1766
+ else if (jumpDirection === 'left') {
1767
+ this.jumpToPrevInput(x, y);
1768
+ }
1769
+ return;
1770
+ }
1771
+ this.setActiveDom(x, y);
1772
+ }
1773
+ else {
1774
+ // 没有dom的场景下,需要判断是左还是右,
1775
+ }
1776
+ };
1777
+ /**
1778
+ * @param {?} x
1779
+ * @param {?} y
1780
+ * @return {?}
1781
+ */
1782
+ HdFormLinesComponent.prototype.cleanFocusDom = /**
1783
+ * @param {?} x
1784
+ * @param {?} y
1785
+ * @return {?}
1786
+ */
1787
+ function (x, y) {
1788
+ if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {
1789
+ return;
1790
+ }
1791
+ if (this.collectDomList[x] && this.collectDomList[x][y]) {
1792
+ /** @type {?} */
1793
+ var dom = this.collectDomList[x][y];
1794
+ if (dom instanceof NzSelectComponent) {
1795
+ dom.blur();
1796
+ dom.nzOpen = false;
1797
+ }
1798
+ else if (dom instanceof NzInputNumberComponent) {
1799
+ dom.nzOpen = false;
1800
+ dom.blur();
1801
+ }
1802
+ else if (dom instanceof ElementRef) {
1803
+ dom.nativeElement.blur();
1804
+ }
1805
+ else { }
1806
+ }
1807
+ };
1808
+ /**
1809
+ * @param {?} x
1810
+ * @param {?} y
1811
+ * @return {?}
1812
+ */
1813
+ HdFormLinesComponent.prototype.setActiveDom = /**
1814
+ * @param {?} x
1815
+ * @param {?} y
1816
+ * @return {?}
1817
+ */
1818
+ function (x, y) {
1819
+ this.activeDomX = x;
1820
+ this.activeDomY = y;
1821
+ this.activeDom = this.collectDomList[this.activeDomX][this.activeDomY];
1822
+ if (this.activeDom instanceof NzSelectComponent) {
1823
+ this.activeSelectedComponentOpen = this.activeDom.open;
1824
+ }
1825
+ };
1826
+ /**
1827
+ * 根据行号和列号名称获取当前聚焦的dom位置
1828
+ * @param rowNumber 行号
1829
+ * @param colNumber 列号
1830
+ */
1831
+ /**
1832
+ * 根据行号和列号名称获取当前聚焦的dom位置
1833
+ * @param {?} rowNumber 行号
1834
+ * @param {?} colNumber 列号
1835
+ * @return {?}
1836
+ */
1837
+ HdFormLinesComponent.prototype.setActiveDomInFormLines = /**
1838
+ * 根据行号和列号名称获取当前聚焦的dom位置
1839
+ * @param {?} rowNumber 行号
1840
+ * @param {?} colNumber 列号
1841
+ * @return {?}
1842
+ */
1843
+ function (rowNumber, colNumber) {
1844
+ this.activeDomX = rowNumber;
1845
+ this.activeDomY = this.getDomIndex(colNumber, this.formLines);
1846
+ this.setActiveDom(this.activeDomX, this.activeDomY);
1847
+ };
1848
+ /**
1849
+ * 键盘点击事件
1850
+ * @param event 键盘事件
1851
+ * @returns
1852
+ */
1853
+ /**
1854
+ * 键盘点击事件
1855
+ * @param {?} event 键盘事件
1856
+ * @return {?}
1857
+ */
1858
+ HdFormLinesComponent.prototype.onKeyDown = /**
1859
+ * 键盘点击事件
1860
+ * @param {?} event 键盘事件
1861
+ * @return {?}
1862
+ */
1863
+ function (event) {
1864
+ var _this = this;
1865
+ if (this.activeDomX === null || this.activeDomY === null) {
1866
+ return;
1867
+ }
1868
+ switch (event.key) {
1869
+ case 'ArrowUp':
1870
+ if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen) {
1871
+ return;
1872
+ }
1873
+ if (this.activeDomX !== 0) {
1874
+ this.focusDom(this.activeDomX - 1, this.activeDomY);
1875
+ }
1876
+ break;
1877
+ case 'ArrowDown':
1878
+ // 判断是否在最后一行,如果在最后一行,直接+行翻页
1879
+ if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen) {
1880
+ return;
1881
+ }
1882
+ if (this.activeDomX !== this.collectDomList.length - 1) {
1883
+ this.focusDom(this.activeDomX + 1, this.activeDomY);
1884
+ }
1885
+ break;
1886
+ case 'ArrowLeft':
1887
+ this.jumpToPrevInput(this.activeDomX, this.activeDomY);
1888
+ break;
1889
+ case 'ArrowRight':
1890
+ this.jumpToNextInput(this.activeDomX, this.activeDomY);
1891
+ break;
1892
+ case 'Enter':
1893
+ if (this.activeDom instanceof NzSelectComponent) {
1894
+ this.activeSelectedComponentOpen = this.activeDom.open;
1895
+ if (this.activeSelectedComponentOpen === false) {
1896
+ this.focusDom(this.activeDomX, this.activeDomY);
1897
+ }
1898
+ break;
1899
+ }
1900
+ if (this.activeDomX === this.collectDomList.length - 1) {
1901
+ this.addNewLineAndFocus();
1902
+ }
1903
+ break;
1904
+ case 'Escape':
1905
+ if (this.activeDom instanceof NzSelectComponent) {
1906
+ /** @type {?} */
1907
+ var nowActiveDom_1 = (/** @type {?} */ (this.activeDom));
1908
+ setTimeout((/**
1909
+ * @return {?}
1910
+ */
1911
+ function () {
1912
+ _this.activeSelectedComponentOpen = nowActiveDom_1.open;
1913
+ if (_this.activeSelectedComponentOpen === false) {
1914
+ if (nowActiveDom_1.nzSelectService.mode === 'multiple') {
1915
+ setTimeout((/**
1916
+ * @return {?}
1917
+ */
1918
+ function () {
1919
+ _this.focusDom(_this.activeDomX, _this.activeDomY);
1920
+ }), 0);
1921
+ }
1922
+ else {
1923
+ _this.focusDom(_this.activeDomX, _this.activeDomY);
1924
+ }
1925
+ }
1926
+ }), 0);
1927
+ }
1928
+ break;
1929
+ default:
1930
+ // 如果当前聚焦的是选择框,且键入0-9a-zA-Z,则弹出
1931
+ if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen === false && /^[0-9a-zA-Z]$/.test(event.key)) {
1932
+ /** @type {?} */
1933
+ var dom = this.activeDom;
1934
+ dom.nzOpen = true;
1935
+ this.activeSelectedComponentOpen = true;
1936
+ // // TODO:这里暂时注释,不能直接带入键入值,这样会导致输入中文的时候带入英文字符,不符合预期
1937
+ // dom.nzSelectTopControlComponent.inputValue = event.key;
1938
+ // // 获取 input 元素
1939
+ // const inputElement = dom.nzSelectTopControlComponent.inputElement.nativeElement;
1940
+ // setTimeout(() => {
1941
+ // // 触发输入事件,以确保 Angular 检测到值的变化
1942
+ // const eventInput = new Event('input', { bubbles: true });
1943
+ // inputElement.dispatchEvent(eventInput);
1944
+ // }, 0);
1945
+ }
1946
+ break;
1947
+ }
1948
+ };
1949
+ /**
1950
+ * 根据在初始dom下标和数据集 获取在collectDomList中的下标
1951
+ * @param index 初始下标
1952
+ * @param list 数据集
1953
+ * @returns
1954
+ */
1955
+ /**
1956
+ * 根据在初始dom下标和数据集 获取在collectDomList中的下标
1957
+ * @private
1958
+ * @param {?} index 初始下标
1959
+ * @param {?} list 数据集
1960
+ * @return {?}
1961
+ */
1962
+ HdFormLinesComponent.prototype.getDomIndex = /**
1963
+ * 根据在初始dom下标和数据集 获取在collectDomList中的下标
1964
+ * @private
1965
+ * @param {?} index 初始下标
1966
+ * @param {?} list 数据集
1967
+ * @return {?}
1968
+ */
1969
+ function (index, list) {
1970
+ /** @type {?} */
1971
+ var typeList = ['Input', 'Select', 'Date', 'DateRange', 'TextArea', 'InputNumber', 'MultipleSelect'];
1972
+ /** @type {?} */
1973
+ var filterList = [];
1974
+ for (var i = 0; i < list.length; i++) {
1975
+ if (i === index) {
1976
+ return filterList.length;
1977
+ }
1978
+ if (typeList.includes(list[i].type)) {
1979
+ filterList.push(list[i]);
1980
+ }
1981
+ }
1982
+ return null;
1983
+ };
1984
+ // TODO:待删
1985
+ // TODO:待删
1986
+ /**
1987
+ * @return {?}
1988
+ */
1989
+ HdFormLinesComponent.prototype.testPage =
1990
+ // TODO:待删
1991
+ /**
1332
1992
  * @return {?}
1333
1993
  */
1334
1994
  function () {
1335
- // 缓存一下总的表单数据
1336
- this.storeFormLinesData = this.formLinesData;
1337
- this.init();
1995
+ this.paginationPageIndex++;
1338
1996
  };
1339
1997
  Object.defineProperty(HdFormLinesComponent.prototype, "linesFormArray", {
1340
1998
  get: /**
@@ -1477,14 +2135,18 @@ var HdFormLinesComponent = /** @class */ (function () {
1477
2135
  * @param {?} value
1478
2136
  * @return {?}
1479
2137
  */
1480
- function (value) { return _this.triggerEvent(item.onChangeEvent, value, formGroupTmp); }));
2138
+ function (value) {
2139
+ _this.triggerEvent(item.onChangeEvent, value, formGroupTmp);
2140
+ }));
1481
2141
  }
1482
2142
  else {
1483
2143
  formGroupTmp.get(item.name).valueChanges.subscribe((/**
1484
2144
  * @param {?} value
1485
2145
  * @return {?}
1486
2146
  */
1487
- function (value) { return _this.triggerEvent(item.onChangeEvent, value, formGroupTmp); }));
2147
+ function (value) {
2148
+ _this.triggerEvent(item.onChangeEvent, value, formGroupTmp);
2149
+ }));
1488
2150
  }
1489
2151
  }
1490
2152
  }));
@@ -1757,9 +2419,10 @@ var HdFormLinesComponent = /** @class */ (function () {
1757
2419
  var formGroupSubmit = this.fb.group(formGroupObj);
1758
2420
  this.formLines.forEach((/**
1759
2421
  * @param {?} item
2422
+ * @param {?} innerIndex
1760
2423
  * @return {?}
1761
2424
  */
1762
- function (item) {
2425
+ function (item, innerIndex) {
1763
2426
  if (item.onChangeEvent) {
1764
2427
  if (item.onChangeEvent) {
1765
2428
  if (item.onChangeEventDebounceTime) {
@@ -1767,14 +2430,24 @@ var HdFormLinesComponent = /** @class */ (function () {
1767
2430
  * @param {?} value
1768
2431
  * @return {?}
1769
2432
  */
1770
- function (value) { return _this.triggerEvent(item.onChangeEvent, value, formGroupSubmit); }));
2433
+ function (value) {
2434
+ if (item.type === FormLineType.Select && value !== null) {
2435
+ _this.jumpToNextInput(_this.activeDomX, _this.activeDomY);
2436
+ }
2437
+ _this.triggerEvent(item.onChangeEvent, value, formGroupSubmit);
2438
+ }));
1771
2439
  }
1772
2440
  else {
1773
2441
  formGroupSubmit.get(item.name).valueChanges.subscribe((/**
1774
2442
  * @param {?} value
1775
2443
  * @return {?}
1776
2444
  */
1777
- function (value) { return _this.triggerEvent(item.onChangeEvent, value, formGroupSubmit); }));
2445
+ function (value) {
2446
+ if (item.type === FormLineType.Select && value !== null) {
2447
+ _this.jumpToNextInput(_this.activeDomX, _this.activeDomY);
2448
+ }
2449
+ _this.triggerEvent(item.onChangeEvent, value, formGroupSubmit);
2450
+ }));
1778
2451
  }
1779
2452
  }
1780
2453
  }
@@ -1814,9 +2487,10 @@ var HdFormLinesComponent = /** @class */ (function () {
1814
2487
  var _this = this;
1815
2488
  this.formLinesData.forEach((/**
1816
2489
  * @param {?} formLinesDataItem
2490
+ * @param {?} index
1817
2491
  * @return {?}
1818
2492
  */
1819
- function (formLinesDataItem) {
2493
+ function (formLinesDataItem, index) {
1820
2494
  /** @type {?} */
1821
2495
  var formGroupObj = {};
1822
2496
  _this.formLines.forEach((/**
@@ -1835,9 +2509,10 @@ var HdFormLinesComponent = /** @class */ (function () {
1835
2509
  var formGroupTmp = _this.fb.group(formGroupObj);
1836
2510
  _this.formLines.forEach((/**
1837
2511
  * @param {?} item
2512
+ * @param {?} innerIndex
1838
2513
  * @return {?}
1839
2514
  */
1840
- function (item) {
2515
+ function (item, innerIndex) {
1841
2516
  if (item.onChangeEvent) {
1842
2517
  if (item.onChangeEventDebounceTime) {
1843
2518
  formGroupTmp.get(item.name).valueChanges.pipe(debounceTime(item.onChangeEventDebounceTime)).subscribe((/**
@@ -1845,6 +2520,9 @@ var HdFormLinesComponent = /** @class */ (function () {
1845
2520
  * @return {?}
1846
2521
  */
1847
2522
  function (value) {
2523
+ if (item.type === FormLineType.Select && value !== null) {
2524
+ _this.jumpToNextInput(_this.activeDomX, _this.activeDomY);
2525
+ }
1848
2526
  _this.triggerEvent(item.onChangeEvent, value, formGroupTmp);
1849
2527
  }));
1850
2528
  }
@@ -1854,6 +2532,9 @@ var HdFormLinesComponent = /** @class */ (function () {
1854
2532
  * @return {?}
1855
2533
  */
1856
2534
  function (value) {
2535
+ if (item.type === FormLineType.Select && value !== null) {
2536
+ _this.jumpToNextInput(_this.activeDomX, _this.activeDomY);
2537
+ }
1857
2538
  _this.triggerEvent(item.onChangeEvent, value, formGroupTmp);
1858
2539
  }));
1859
2540
  }
@@ -1873,8 +2554,23 @@ var HdFormLinesComponent = /** @class */ (function () {
1873
2554
  * @return {?}
1874
2555
  */
1875
2556
  function (index) {
2557
+ var _this = this;
1876
2558
  this.linesFormArray.insert(index || this.linesFormArray.controls.length, this.newLineItem());
1877
2559
  this.calculateLineNumber();
2560
+ setTimeout((/**
2561
+ * @return {?}
2562
+ */
2563
+ function () {
2564
+ _this.collectDomData();
2565
+ if (index !== null && index !== undefined) {
2566
+ _this.activeDomX = index;
2567
+ }
2568
+ else {
2569
+ _this.activeDomX = _this.collectDomList.length - 1;
2570
+ }
2571
+ _this.activeDomY = 0;
2572
+ _this.focusDom(_this.activeDomX, _this.activeDomY);
2573
+ }), 0);
1878
2574
  };
1879
2575
  /**
1880
2576
  * @param {?} index
@@ -1885,6 +2581,7 @@ var HdFormLinesComponent = /** @class */ (function () {
1885
2581
  * @return {?}
1886
2582
  */
1887
2583
  function (index) {
2584
+ var _this = this;
1888
2585
  this.linesFormArray.removeAt(index - 1);
1889
2586
  if (!this.isFilterData && this.linesFormArray.controls && this.linesFormArray.controls.length === 0) {
1890
2587
  this.addFormLine();
@@ -1896,6 +2593,12 @@ var HdFormLinesComponent = /** @class */ (function () {
1896
2593
  }
1897
2594
  this.calculateLineNumber();
1898
2595
  }
2596
+ setTimeout((/**
2597
+ * @return {?}
2598
+ */
2599
+ function () {
2600
+ _this.collectDomData();
2601
+ }), 0);
1899
2602
  };
1900
2603
  /**
1901
2604
  * @param {?} event
@@ -1906,7 +2609,14 @@ var HdFormLinesComponent = /** @class */ (function () {
1906
2609
  * @return {?}
1907
2610
  */
1908
2611
  function (event) {
2612
+ var _this = this;
1909
2613
  this.paginationPageIndex = event;
2614
+ setTimeout((/**
2615
+ * @return {?}
2616
+ */
2617
+ function () {
2618
+ _this.collectDomData();
2619
+ }), 0);
1910
2620
  };
1911
2621
  /**
1912
2622
  * @param {?} event
@@ -1917,7 +2627,14 @@ var HdFormLinesComponent = /** @class */ (function () {
1917
2627
  * @return {?}
1918
2628
  */
1919
2629
  function (event) {
2630
+ var _this = this;
1920
2631
  this.paginationPageSize = event;
2632
+ setTimeout((/**
2633
+ * @return {?}
2634
+ */
2635
+ function () {
2636
+ _this.collectDomData();
2637
+ }), 0);
1921
2638
  };
1922
2639
  /**
1923
2640
  * @private
@@ -2137,16 +2854,21 @@ var HdFormLinesComponent = /** @class */ (function () {
2137
2854
  };
2138
2855
  /**
2139
2856
  * @param {?} id
2857
+ * @param {?} rowNumber
2858
+ * @param {?} colNumber
2140
2859
  * @return {?}
2141
2860
  */
2142
2861
  HdFormLinesComponent.prototype.selectValue = /**
2143
2862
  * @param {?} id
2863
+ * @param {?} rowNumber
2864
+ * @param {?} colNumber
2144
2865
  * @return {?}
2145
2866
  */
2146
- function (id) {
2867
+ function (id, rowNumber, colNumber) {
2147
2868
  /** @type {?} */
2148
2869
  var inputDom = document.querySelector(id);
2149
2870
  inputDom.select();
2871
+ this.setActiveDomInFormLines(rowNumber, colNumber);
2150
2872
  };
2151
2873
  /**
2152
2874
  * @param {?} text
@@ -2199,15 +2921,17 @@ var HdFormLinesComponent = /** @class */ (function () {
2199
2921
  HdFormLinesComponent.decorators = [
2200
2922
  { type: Component, args: [{
2201
2923
  selector: 'hd-form-lines',
2202
- template: "<hd-button-group *ngIf=\"showForm && showSearch\">\n <ng-template #buttonGroupLeft>\n <nz-input-group [nzSuffix]=\"suffixIconSearch\">\n <input type=\"text\" nz-input (keyup.enter)=\"searchLines()\" placeholder=\"\u8BF7\u8F93\u5165\u5185\u5BB9\u641C\u7D22\" style=\"width: 300px;\"\n [(ngModel)]=\"filterStr\" />\n </nz-input-group>\n <ng-template #suffixIconSearch>\n <i nz-icon nzType=\"search\" (click)=\"searchLines()\"></i>\n </ng-template>\n </ng-template>\n</hd-button-group>\n<hd-space background=\"transparent\" type=\"row\" size=\"16\"></hd-space>\n<form *ngIf=\"showForm\" nz-form [formGroup]=\"validateHdFormLines\"\n class=\"ant-advanced-search-form hd-formLines-container\">\n <nz-table nzTemplateMode [nzFrontPagination]=\"false\" [nzLoading]=\"tableLoading\" [nzScroll]=\"scroll\">\n <thead>\n <tr>\n <th nzWidth=\"58px\" nzLeft=\"0px\">\u5E8F\u53F7</th>\n <ng-container *ngFor=\"let item of formLines\">\n <th *ngIf=\"!item.hide\" [nzAlign]=\"item.align ? item.align : 'left'\">\n <span *ngIf=\"item.require\" style=\"color: red;\">*</span>{{item.label}}\n </th>\n </ng-container>\n <th style=\"width: 80px\" nzRight=\"0\">\u64CD\u4F5C</th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let line of linesFormArray.controls.slice((paginationPageIndex - 1) * paginationPageSize, (paginationPageIndex - 1) * paginationPageSize + paginationPageSize);index as dataIndex\"\n formArrayName=\"lines\">\n <tr [formGroup]=\"line\">\n <td nzWidth=\"58px\" nzLeft=\"0px\">\n {{line.get('lineIndex').value}}\n </td>\n <ng-container *ngFor=\"let formItem of formLines\">\n <td *ngIf=\"!formItem.hide\" [nzAlign]=\"formItem.align ? formItem.align : 'left'\">\n <nz-form-item>\n <nz-form-control [nzErrorTip]=\"formItem.label + '\u4E0D\u80FD\u4E3A\u7A7A'\">\n <ng-container [ngSwitch]=\"formItem.type\">\n <ng-container *ngSwitchCase=\"0\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input [ngStyle]=\"getStyle(line, formItem, '100px')\" nz-input\n [ngStyle]=\"{'color': formItem?.colorOption?.name ? line.get(formItem.colorOption.name ).value : null}\"\n [id]=\"'input-' + formItem.name + line.get('lineIndex').value\"\n (click)=\"formItem.isSelect ? selectValue('#input-' + formItem.name + line.get('lineIndex').value) : null\"\n [maxlength]=\"formItem.maxLength || null\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [formControlName]=\"formItem.name\" />\n </nz-input-group>\n <ng-template #inputCleanTemplate>\n <i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\" nzType=\"close-circle\"\n *ngIf=\"line.get(formItem.name).value && !line.get(formItem.name).disabled\"\n (click)=\"inputClean(formItem ,line)\"></i>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <nz-select nzDropdownClassName=\"hd-select-table\"\n *ngIf=\"formItem.selectOption.tableColumns;else nomarlSelectTemplate\"\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\"\n [ngStyle]=\"getStyle(line, formItem, '200px')\">\n <nz-option nzCustomContent nzDisabled>\n <div class=\"hd-option-header\"\n *ngIf=\"(formItem.selectOption?.selectList?.length > 0 || line.get(formItem.selectOption.selectListName)?.value?.length > 0);else emptyTemplate\">\n <div class=\"hd-option-header-column\"\n *ngFor=\"let selectOptionTableColumn of formItem.selectOption.tableColumns;index as index \"\n [ngStyle]=\"{'width': selectOptionTableColumn?.width ? (selectOptionTableColumn.width + ((index === 0 && !selectOptionTableColumn.label) ? 12 : 0) + 'px') : 'unset'}\">\n {{selectOptionTableColumn.label}}\n </div>\n </div>\n <ng-template #emptyTemplate>\n <div class=\"hd-select-empty\">\n <img\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjRweCIgaGVpZ2h0PSI0MXB4IiB2aWV3Qm94PSIwIDAgNjQgNDEiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDUyLjUgKDY3NDY5KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDxnIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00NzIuMDAwMDAwLCAtMTMzNS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY0LjAwMDAwMCwgMTExNC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MC4wMDAwMDAsIDc4LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjguMDAwMDAwLCAxNDQuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlICBmaWxsPSIjRjVGNUY1IiBjeD0iMzIiIGN5PSIzMyIgcng9IjMyIiByeT0iNyI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5LjAwMDAwMCwgMC4wMDAwMDApIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0iI0Q5RDlEOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQ2LDEyLjc2MDU2MDQgTDM1Ljg1NDMwNDcsMS4yNTczOTYzMyBDMzUuMzY3NDQxNCwwLjQ3MzgyNjYwNSAzNC42NTU4Nzg5LDAgMzMuOTA2NzYxNywwIEwxMi4wOTMyMzgzLDAgQzExLjM0NDEyMTEsMCAxMC42MzI1NTg2LDAuNDczOTUwMjU1IDEwLjE0NTY5NTMsMS4yNTczOTYzMyBMMi42MTQ3OTcyN2UtMTIsMTIuNzYwNTYwNCBMMCwyMiBMNDYsMjIgTDQ2LDEyLjc2MDU2MDQgWiIgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTMyLjYxMzI4MTMsMTUuOTMxNSBDMzIuNjEzMjgxMywxNC4zMjU4NTExIDMzLjYwNjk1MzEsMTMuMDAwMjM0IDM0LjgzOTY5OTIsMTMgTDQ2LDEzIEw0NiwzMS4xMzcxMjc3IEM0NiwzMy4yNTg5NTc0IDQ0LjY3OTM4NjcsMzUgNDMuMDUwNDI5NywzNSBMMi45NDk1NzAzMSwzNSBDMS4zMjA1MjM0NCwzNSAwLDMzLjI1ODg0MDQgMCwzMS4xMzcxMjc3IEwwLDEzIEwxMS4xNjAzMDA4LDEzIEMxMi4zOTMwNDY5LDEzIDEzLjM4NjcxODgsMTQuMzIyODA4NSAxMy4zODY3MTg4LDE1LjkyODQ1NzQgTDEzLjM4NjcxODgsMTUuOTQ5NjM4MyBDMTMuMzg2NzE4OCwxNy41NTUyODcyIDE0LjM5MTcxMDksMTguODUxMTgwOSAxNS42MjQ0NTcsMTguODUxMTgwOSBMMzAuMzc1NTQzLDE4Ljg1MTE4MDkgQzMxLjYwODI4OTEsMTguODUxMTgwOSAzMi42MTMyODEzLDE3LjU0MzM1MTEgMzIuNjEzMjgxMywxNS45Mzc3MDIxIEwzMi42MTMyODEzLDE1LjkzMTUgWiIgIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"\n alt=\"empty\">\n <p class=\"ant-empty-description\">\u6682\u65E0\u6570\u636E</p>\n </div>\n </ng-template>\n </nz-option>\n\n <nz-option nzCustomContent\n *ngFor=\"let selectItem of (formItem.selectOption.selectList || line.get(formItem.selectOption.selectListName).value)\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\">\n <div class=\"hd-option-line\">\n <div *ngFor=\"let selectOptionTableColumn of formItem.selectOption.tableColumns\"\n [ngStyle]=\"{'width': selectOptionTableColumn?.width ? selectOptionTableColumn.width + 'px' : 'unset'}\">\n <ng-container *ngIf=\"selectOptionTableColumn.icons;else notPictureTemplate\">\n <ng-container *ngFor=\"let icon of selectOptionTableColumn.icons\">\n <img *ngIf=\"icon.iconName === 'hd-recommend-star' && selectItem[icon.fieldName]\"\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAVpJREFUOE+l07FLQkEcB/Dv7713Zg1GQ0SgW9AmTYVp1BRUokZBEI1u/QVBUBD1D0Rt0dQaPYmotXza1tKQzQ1Fk0iDHr5vPEOTUpO88e77+9zvjjtBh8HTOb8e0hu0eN8Xzz22ikonoGzHdgXcAVB16S75U/mbn/m2AK+mglqbBUAGvCIRuVCJ7HLXQCUTPQOxXi8Q4FolnYWuAH0+HaEpjrdxAyC3VSq33xKgPTWiYYUai8IjUCabw4Zw1XWNF2+OZrXoi+cLImBth4odfQAw0elCW6zdKvU2/wVkYs8ggzBlRqrcI/DrrK1wQ7DWAIToV8lsqGxHDwTY6qYbA1jpCVAux3oBSirhDPYCOL6kE/s/QB77UrnNJoDDVkCN6pI+BJH+6xINQdpKOCf1d/AEYBxgUUQC5PcLbPMDXy1lhGXx7r0G6ExklpBwI0xh2w7ID+UzL71iL/MJdzuZdDL/kXcAAAAASUVORK5CYII=\"\n style=\"width: 16px;height: 16px;\">\n <img *ngIf=\"icon.iconName === 'hd-img-star' && selectItem[icon.fieldName]\"\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAyhJREFUWEe1ll1o1XYYxp8nPUmUihdCV3bAirvYzUC80Xpy3KwTZNR2CdOhDkTBwe6G32XzwqpjE3Qt4pUKZQqDyQZNTp1uY8yCJG0F2d2+LlWOOkShovQkaV45lcJpTdOTHJubBPI+z/Pj//H+/0TGR66uf8sPoz8A/Kstkp38YORxFitmEVU1vm1cBPlp9ZuQXtX0jmfxygQgvxSWBRWlDECvhgrwQFuqLufG4TAtRCaAwCl+IcDXtWEi2KFb7pUFBxCBEpSMMsDWGWEiNzXLe2/BASp2cTuJH+KCRMJ3dGvsrzQQqafAtw0XpBEfIhc00/tswQD8QWM1FP45d4A8V9XJN9k5Nl4vRKoR8G3jMshdyebRPs0cOftaAaRUbAsRrRRRhuczFsF/lPATNQrL3Hr7/nz1lGvvtkwGUSEC8gLkWfMGkAfQMp9J0n8ByhS5J+QDVr+BshBlUu6q3d5v9G3jIcg3GgnJqp2C853iCIB1WU0a1F2iOO2tPnK3CLQ1aJZKLpCfddPrmtoF8uuqZn9iyfcEzVQumYtlQDO9vS8PsprHd4xvAR7I7FuHUIBvdNP9crr0lT7g24U+UNlfh1f6Esrn2ofeuVphbCPyneJuAN+lT0jokZCduum9cobM2Qn9krEGEa6+hi36jEC3aro34vASW3FoG9si8sdGRoKCY6rlnpjLIxGgYhunSPY0AiAiP+mW93EmAN8ujoJobwgAuKOb7orUAHKjY1EwHjwFkGsEoKpVJ6WVH3n/p1oDwVBhk0TK742GV/UKYOZMt5QKoGIbX5E8mgwg4wCbADQn1c1uPvP2gWqB7xjDADck7OwBVan0QFFyQaj2A9wxV60A13XT7Uw1Ar5TlDiBQP6hRHs0a3Ss9n8wuK4jYtN5Em/H6B5ppht7r4jvhEOFtYiUGQEAnhDoV033ZNJwB45xRAS9IBfX1qnhRD7uhhQLENiFQ0Ll9LSBCM7olnu43gUpTjEfiPSB3D6tUQRbcpZ7bbZHLEBYKnRFogxV505rmjzIrtG/6w2fMS0l430RHAVoULBZtdybdQFkCcuqSXUtzxqSpHsBfmUdgJhaiDQAAAAASUVORK5CYII=\"\n style=\"width: 16px;height: 16px;\">\n </ng-container>\n </ng-container>\n <ng-template #notPictureTemplate>\n <ng-container\n *ngIf=\"!isTextOverflow(selectOptionTableColumn.render ? selectOptionTableColumn.render(selectItem) : selectItem[selectOptionTableColumn.name], selectOptionTableColumn.width);else overflowTemplate\">\n <div>{{ judgeColEmpty(selectOptionTableColumn.render ?\n selectOptionTableColumn.render(selectItem) :\n selectItem[selectOptionTableColumn.name])}}</div>\n </ng-container>\n <ng-template #overflowTemplate>\n <div class=\"hd-option-overflow\" nz-tooltip\n [nzTooltipTitle]=\"selectOptionTableColumn.render ? selectOptionTableColumn.render(selectItem) : selectItem[selectOptionTableColumn.name]\">\n {{\n judgeColEmpty(selectOptionTableColumn.render ?\n selectOptionTableColumn.render(selectItem) :\n selectItem[selectOptionTableColumn.name])}}</div>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </nz-option>\n <nz-option\n *ngIf=\"formItem.selectOption.label && line.get(formItem.name) && line.get(formItem.selectOption.label)?.value && line.get(formItem.selectOption.value)?.value\"\n [nzLabel]=\"(formItem.selectOption.value === 'code' || formItem.selectOption.value === 'productCode' || formItem.selectOption.hdShowItemCode) ? ('['+ line.get(formItem.selectOption.value).value + ']' + line.get(formItem.selectOption.label).value) : line.get(formItem.selectOption.label).value\"\n [nzValue]=\"line.get(formItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n <ng-template #nomarlSelectTemplate>\n <nz-select\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\"\n [ngStyle]=\"getStyle(line, formItem, '200px')\">\n <nz-option\n *ngFor=\"let selectItem of (formItem.selectOption.selectList || line.get(formItem.selectOption.selectListName).value)\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\">\n </nz-option>\n <nz-option\n *ngIf=\"formItem.selectOption.label && line.get(formItem.name) && line.get(formItem.selectOption.label)?.value && line.get(formItem.selectOption.value)?.value\"\n [nzLabel]=\"(formItem.selectOption.value === 'code' || formItem.selectOption.value === 'productCode' || formItem.selectOption.hdShowItemCode) ? ('['+ line.get(formItem.selectOption.value).value + ']' + line.get(formItem.selectOption.label).value) : line.get(formItem.selectOption.label).value\"\n [nzValue]=\"line.get(formItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n </ng-template>\n\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <nz-date-picker *ngIf=\"formItem.showTime\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\" nzShowTime\n nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n <nz-date-picker *ngIf=\"!formItem.showTime\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"3\">\n <nz-range-picker [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\" [formControlName]=\"formItem.name\">\n </nz-range-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"4\">\n <textarea\n [ngStyle]=\"{'color': formItem?.colorOption?.name ? line.get(formItem.colorOption.name).value : null}\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [maxlength]=\"formItem.maxLength || null\" rows=\"4\" nz-input\n [maxlength]=\"formItem.maxLength || null\" [formControlName]=\"formItem.name\"></textarea>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <div style=\"display: flex;align-items: center;\">\n <nz-input-number [ngStyle]=\"getStyle(line, formItem, '100px')\"\n [maxlength]=\"formItem.maxLength || null\" [formControlName]=\"formItem.name\"\n [nzMin]=\"formItem?.inputNumber?.min || 0\" [nzMax]=\"formItem?.inputNumber?.max || 99999999\"\n [nzStep]=\"formItem?.inputNumber?.step || 1\"\n [nzPrecision]=\"formItem?.inputNumber?.precision || 2\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [nzId]=\"'inputNumber-' + formItem.name + line.get('lineIndex').value\"\n (click)=\"formItem.isSelect ? selectValue('#inputNumber-' + formItem.name + line.get('lineIndex').value) : null\">\n </nz-input-number>\n <div *ngIf=\"formItem?.explainOptionRight?.show\"\n [style.color]=\"formItem?.explainOptionRight?.color ? formItem.explainOptionRight.color : null\">\n &nbsp;&nbsp;{{line.get(formItem.explainOptionRight.name).value}}</div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"6\">\n <nz-select nzMode=\"multiple\" [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [ngStyle]=\"getStyle(line, formItem, '200px')\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of formItem.selectOption.selectList\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\"></nz-option>\n <ng-container\n *ngIf=\"formItem.selectOption.label && line.get(formItem.name) && line.get(formItem.selectOption.label)?.value && line.get(formItem.selectOption.value)?.value\">\n <nz-option *ngFor=\"let option of line.get(formItem.selectOption.value).value;index as i\"\n [nzLabel]=\"line.get(formItem.selectOption.label).value[i]\" [nzValue]=\"option\" nzHide>\n </nz-option>\n </ng-container>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"7\">\n {{(formItem.preserveNumber && line.get(formItem.name).value) ?\n LodashRound(line.get(formItem.name).value,formItem.preserveNumber).toFixed(formItem.preserveNumber)\n : line.get(formItem.name).value}}\n </ng-container>\n <ng-container *ngSwitchCase=\"8\">\n <nz-switch [formControlName]=\"formItem.name\"></nz-switch>\n </ng-container>\n <ng-container *ngSwitchCase=\"9\">\n <nz-time-picker [formControlName]=\"formItem.name\"></nz-time-picker>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n <div *ngIf=\"formItem?.explainOption?.show\"\n [style.color]=\"formItem?.explainOption?.color ? formItem.explainOption.color : null\">\n {{line.get(formItem.explainOption.name).value}}</div>\n </td>\n </ng-container>\n <td style=\"width: 80px\" nzRight=\"0\">\n <span class=\"common-btn-group\">\n <a *ngIf=\"operateButtons.includes('add')\" (click)=\"addFormLine(line.get('lineIndex').value)\">\u6DFB\u52A0</a>\n <a class=\"common-danger-btn\" *ngIf=\"operateButtons.includes('delete') && !showDeleteConfirm\"\n (click)=\"deleteFormLine(line.get('lineIndex').value)\">\u5220\u9664</a>\n <a class=\"common-danger-btn\" *ngIf=\"operateButtons.includes('delete') && showDeleteConfirm\" nz-popconfirm\n nzPopconfirmTitle=\"\u786E\u8BA4\u8981\u5220\u9664\u8BE5\u884C\u5417?\" nzPopconfirmPlacement=\"bottom\"\n (nzOnConfirm)=\"deleteFormLine(line.get('lineIndex').value)\">\u5220\u9664</a>\n </span>\n </td>\n </tr>\n </ng-container>\n <!-- \u5408\u8BA1\u533A\u57DF -->\n <tr *ngIf=\"showTotal\" class=\"hd-table-total\">\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let totalOption of totalOptionList\">\n <td [nzAlign]=\"totalOption.align ? totalOption.align : 'left'\">{{ (totalOption.value || totalOption.value ===\n 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal ) ? totalOption.value :\n LodashRound(totalOption.value,2).toFixed(2)) : '' }} </td>\n </ng-container>\n </tr>\n </tbody>\n </nz-table>\n <nz-list\n *ngIf=\"linesFormArray.controls.slice((paginationPageIndex - 1) * paginationPageSize, (paginationPageIndex - 1) * paginationPageSize + paginationPageSize).length === 0\"\n [nzDataSource]=\"[]\"></nz-list>\n <ng-container>\n <hd-space background=\"transparent\" type=\"row\" size=\"16\"></hd-space>\n <nz-pagination [nzSize]=\"'small'\" style=\"text-align: right;\" [nzPageIndex]=\"paginationPageIndex\"\n [nzPageSize]=\"paginationPageSize\" [nzPageSizeOptions]=\"[10, 20, 30, 40, 50]\"\n [nzTotal]=\"linesFormArray.controls.length\" nzShowSizeChanger (nzPageIndexChange)=\"pageIndexChange($event)\"\n (nzPageSizeChange)=\"pageSizeChange($event)\" [nzShowTotal]=\"totalTemplate\"></nz-pagination>\n <ng-template #totalTemplate let-total>\u5171 {{linesFormArray.controls.length}} \u6761\u6570\u636E</ng-template>\n </ng-container>\n</form>",
2924
+ template: "<hd-button-group *ngIf=\"showForm && showSearch\">\n <ng-template #buttonGroupLeft>\n <nz-input-group [nzSuffix]=\"suffixIconSearch\">\n <input type=\"text\" nz-input (keyup.enter)=\"searchLines()\" placeholder=\"\u8BF7\u8F93\u5165\u5185\u5BB9\u641C\u7D22\" style=\"width: 300px;\"\n [(ngModel)]=\"filterStr\" />\n </nz-input-group>\n <ng-template #suffixIconSearch>\n <i nz-icon nzType=\"search\" (click)=\"searchLines()\"></i>\n </ng-template>\n </ng-template>\n</hd-button-group>\n<!-- TODO: \u6D4B\u8BD5\u6309\u94AE\u7EC4 -->\n<hd-button-group>\n <ng-template #buttonGroupLeft>\n <hd-button type=\"primary\" (clickAction)=\"testPage()\">\u6D4B\u8BD5\u7FFB\u9875\u6309\u94AE</hd-button>\n <hd-button type=\"primary\" (clickAction)=\"focusDom(0, 0)\">\u6D4B\u8BD5\u805A\u7126\u9009\u62E9\u6846</hd-button>\n <hd-button type=\"primary\" (clickAction)=\"focusDom(0, 2)\">\u6D4B\u8BD5\u805A\u7126\u666E\u901A\u9009\u62E9\u6846</hd-button>\n <hd-button type=\"primary\" (clickAction)=\"focusDom(0, 3)\">\u6D4B\u8BD5\u805A\u7126\u591A\u9879\u9009\u62E9\u6846</hd-button>\n <hd-button type=\"primary\" (clickAction)=\"focusDom(0, 4)\">\u6D4B\u8BD5\u805A\u7126\u7981\u7528\u8F93\u5165\u6846</hd-button>\n <hd-button type=\"primary\" (clickAction)=\"focusDom(0, 7)\">\u6D4B\u8BD5\u805A\u7126\u6570\u5B57\u8F93\u5165\u6846</hd-button>\n <hd-button type=\"primary\" (clickAction)=\"jumpToNextInput(0, 1)\">\u6D4B\u8BD5\u805A\u7126\u4E0B\u4E00\u4E2A</hd-button>\n </ng-template>\n</hd-button-group>\n\n<hd-space background=\"transparent\" type=\"row\" size=\"16\"></hd-space>\n<form *ngIf=\"showForm\" nz-form [formGroup]=\"validateHdFormLines\" class=\"ant-advanced-search-form hd-formLines-container\"\n (keydown)=\"onKeyDown($event)\">\n <nz-table nzTemplateMode [nzFrontPagination]=\"false\" [nzLoading]=\"tableLoading\" [nzScroll]=\"scroll\">\n <thead>\n <tr>\n <th nzWidth=\"58px\" nzLeft=\"0px\">\u5E8F\u53F7</th>\n <ng-container *ngFor=\"let item of formLines\">\n <th *ngIf=\"!item.hide\" [nzAlign]=\"item.align ? item.align : 'left'\">\n <span *ngIf=\"item.require\" style=\"color: red;\">*</span>{{item.label}}\n </th>\n </ng-container>\n <th style=\"width: 80px\" nzRight=\"0\">\u64CD\u4F5C</th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let line of linesFormArray.controls.slice((paginationPageIndex - 1) * paginationPageSize, (paginationPageIndex - 1) * paginationPageSize + paginationPageSize);index as dataIndex\"\n formArrayName=\"lines\">\n <tr [formGroup]=\"line\">\n <td nzWidth=\"58px\" nzLeft=\"0px\">\n {{line.get('lineIndex').value}}\n </td>\n <ng-container *ngFor=\"let formItem of formLines; index as innerIndex\">\n <td *ngIf=\"!formItem.hide\" [nzAlign]=\"formItem.align ? formItem.align : 'left'\">\n <nz-form-item>\n <nz-form-control [nzErrorTip]=\"formItem.label + '\u4E0D\u80FD\u4E3A\u7A7A'\">\n <ng-container [ngSwitch]=\"formItem.type\">\n <ng-container *ngSwitchCase=\"'Input'\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [ngStyle]=\"getStyle(line, formItem, '100px')\" nz-input\n [ngStyle]=\"{'color': formItem?.colorOption?.name ? line.get(formItem.colorOption.name ).value : null}\"\n [id]=\"'input-' + formItem.name + line.get('lineIndex').value\"\n (click)=\"formItem.isSelect ? selectValue('#input-' + formItem.name + line.get('lineIndex').value, dataIndex , innerIndex) : null\"\n [maxlength]=\"formItem.maxLength || null\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [formControlName]=\"formItem.name\" />\n </nz-input-group>\n <ng-template #inputCleanTemplate>\n <i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\" nzType=\"close-circle\"\n *ngIf=\"line.get(formItem.name).value && !line.get(formItem.name).disabled\"\n (click)=\"inputClean(formItem ,line)\"></i>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Select'\">\n <nz-select #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n nzDropdownClassName=\"hd-select-table\"\n *ngIf=\"formItem.selectOption.tableColumns;else nomarlSelectTemplate\"\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\"\n [ngStyle]=\"getStyle(line, formItem, '200px')\">\n <nz-option nzCustomContent nzDisabled>\n <div class=\"hd-option-header\"\n *ngIf=\"(formItem.selectOption?.selectList?.length > 0 || line.get(formItem.selectOption.selectListName)?.value?.length > 0);else emptyTemplate\">\n <div class=\"hd-option-header-column\"\n *ngFor=\"let selectOptionTableColumn of formItem.selectOption.tableColumns;index as index \"\n [ngStyle]=\"{'width': selectOptionTableColumn?.width ? (selectOptionTableColumn.width + ((index === 0 && !selectOptionTableColumn.label) ? 12 : 0) + 'px') : 'unset'}\">\n {{selectOptionTableColumn.label}}\n </div>\n </div>\n <ng-template #emptyTemplate>\n <div class=\"hd-select-empty\">\n <img\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjRweCIgaGVpZ2h0PSI0MXB4IiB2aWV3Qm94PSIwIDAgNjQgNDEiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDUyLjUgKDY3NDY5KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDxnIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00NzIuMDAwMDAwLCAtMTMzNS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY0LjAwMDAwMCwgMTExNC4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MC4wMDAwMDAsIDc4LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjguMDAwMDAwLCAxNDQuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlICBmaWxsPSIjRjVGNUY1IiBjeD0iMzIiIGN5PSIzMyIgcng9IjMyIiByeT0iNyI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5LjAwMDAwMCwgMC4wMDAwMDApIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0iI0Q5RDlEOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQ2LDEyLjc2MDU2MDQgTDM1Ljg1NDMwNDcsMS4yNTczOTYzMyBDMzUuMzY3NDQxNCwwLjQ3MzgyNjYwNSAzNC42NTU4Nzg5LDAgMzMuOTA2NzYxNywwIEwxMi4wOTMyMzgzLDAgQzExLjM0NDEyMTEsMCAxMC42MzI1NTg2LDAuNDczOTUwMjU1IDEwLjE0NTY5NTMsMS4yNTczOTYzMyBMMi42MTQ3OTcyN2UtMTIsMTIuNzYwNTYwNCBMMCwyMiBMNDYsMjIgTDQ2LDEyLjc2MDU2MDQgWiIgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTMyLjYxMzI4MTMsMTUuOTMxNSBDMzIuNjEzMjgxMywxNC4zMjU4NTExIDMzLjYwNjk1MzEsMTMuMDAwMjM0IDM0LjgzOTY5OTIsMTMgTDQ2LDEzIEw0NiwzMS4xMzcxMjc3IEM0NiwzMy4yNTg5NTc0IDQ0LjY3OTM4NjcsMzUgNDMuMDUwNDI5NywzNSBMMi45NDk1NzAzMSwzNSBDMS4zMjA1MjM0NCwzNSAwLDMzLjI1ODg0MDQgMCwzMS4xMzcxMjc3IEwwLDEzIEwxMS4xNjAzMDA4LDEzIEMxMi4zOTMwNDY5LDEzIDEzLjM4NjcxODgsMTQuMzIyODA4NSAxMy4zODY3MTg4LDE1LjkyODQ1NzQgTDEzLjM4NjcxODgsMTUuOTQ5NjM4MyBDMTMuMzg2NzE4OCwxNy41NTUyODcyIDE0LjM5MTcxMDksMTguODUxMTgwOSAxNS42MjQ0NTcsMTguODUxMTgwOSBMMzAuMzc1NTQzLDE4Ljg1MTE4MDkgQzMxLjYwODI4OTEsMTguODUxMTgwOSAzMi42MTMyODEzLDE3LjU0MzM1MTEgMzIuNjEzMjgxMywxNS45Mzc3MDIxIEwzMi42MTMyODEzLDE1LjkzMTUgWiIgIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"\n alt=\"empty\">\n <p class=\"ant-empty-description\">\u6682\u65E0\u6570\u636E</p>\n </div>\n </ng-template>\n </nz-option>\n\n <nz-option nzCustomContent\n *ngFor=\"let selectItem of (formItem.selectOption.selectList || line.get(formItem.selectOption.selectListName).value)\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\">\n <div class=\"hd-option-line\">\n <div *ngFor=\"let selectOptionTableColumn of formItem.selectOption.tableColumns\"\n [ngStyle]=\"{'width': selectOptionTableColumn?.width ? selectOptionTableColumn.width + 'px' : 'unset'}\">\n <ng-container *ngIf=\"selectOptionTableColumn.icons;else notPictureTemplate\">\n <ng-container *ngFor=\"let icon of selectOptionTableColumn.icons\">\n <img *ngIf=\"icon.iconName === 'hd-recommend-star' && selectItem[icon.fieldName]\"\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAVpJREFUOE+l07FLQkEcB/Dv7713Zg1GQ0SgW9AmTYVp1BRUokZBEI1u/QVBUBD1D0Rt0dQaPYmotXza1tKQzQ1Fk0iDHr5vPEOTUpO88e77+9zvjjtBh8HTOb8e0hu0eN8Xzz22ikonoGzHdgXcAVB16S75U/mbn/m2AK+mglqbBUAGvCIRuVCJ7HLXQCUTPQOxXi8Q4FolnYWuAH0+HaEpjrdxAyC3VSq33xKgPTWiYYUai8IjUCabw4Zw1XWNF2+OZrXoi+cLImBth4odfQAw0elCW6zdKvU2/wVkYs8ggzBlRqrcI/DrrK1wQ7DWAIToV8lsqGxHDwTY6qYbA1jpCVAux3oBSirhDPYCOL6kE/s/QB77UrnNJoDDVkCN6pI+BJH+6xINQdpKOCf1d/AEYBxgUUQC5PcLbPMDXy1lhGXx7r0G6ExklpBwI0xh2w7ID+UzL71iL/MJdzuZdDL/kXcAAAAASUVORK5CYII=\"\n style=\"width: 16px;height: 16px;\">\n <img *ngIf=\"icon.iconName === 'hd-img-star' && selectItem[icon.fieldName]\"\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAyhJREFUWEe1ll1o1XYYxp8nPUmUihdCV3bAirvYzUC80Xpy3KwTZNR2CdOhDkTBwe6G32XzwqpjE3Qt4pUKZQqDyQZNTp1uY8yCJG0F2d2+LlWOOkShovQkaV45lcJpTdOTHJubBPI+z/Pj//H+/0TGR66uf8sPoz8A/Kstkp38YORxFitmEVU1vm1cBPlp9ZuQXtX0jmfxygQgvxSWBRWlDECvhgrwQFuqLufG4TAtRCaAwCl+IcDXtWEi2KFb7pUFBxCBEpSMMsDWGWEiNzXLe2/BASp2cTuJH+KCRMJ3dGvsrzQQqafAtw0XpBEfIhc00/tswQD8QWM1FP45d4A8V9XJN9k5Nl4vRKoR8G3jMshdyebRPs0cOftaAaRUbAsRrRRRhuczFsF/lPATNQrL3Hr7/nz1lGvvtkwGUSEC8gLkWfMGkAfQMp9J0n8ByhS5J+QDVr+BshBlUu6q3d5v9G3jIcg3GgnJqp2C853iCIB1WU0a1F2iOO2tPnK3CLQ1aJZKLpCfddPrmtoF8uuqZn9iyfcEzVQumYtlQDO9vS8PsprHd4xvAR7I7FuHUIBvdNP9crr0lT7g24U+UNlfh1f6Esrn2ofeuVphbCPyneJuAN+lT0jokZCduum9cobM2Qn9krEGEa6+hi36jEC3aro34vASW3FoG9si8sdGRoKCY6rlnpjLIxGgYhunSPY0AiAiP+mW93EmAN8ujoJobwgAuKOb7orUAHKjY1EwHjwFkGsEoKpVJ6WVH3n/p1oDwVBhk0TK742GV/UKYOZMt5QKoGIbX5E8mgwg4wCbADQn1c1uPvP2gWqB7xjDADck7OwBVan0QFFyQaj2A9wxV60A13XT7Uw1Ar5TlDiBQP6hRHs0a3Ss9n8wuK4jYtN5Em/H6B5ppht7r4jvhEOFtYiUGQEAnhDoV033ZNJwB45xRAS9IBfX1qnhRD7uhhQLENiFQ0Ll9LSBCM7olnu43gUpTjEfiPSB3D6tUQRbcpZ7bbZHLEBYKnRFogxV505rmjzIrtG/6w2fMS0l430RHAVoULBZtdybdQFkCcuqSXUtzxqSpHsBfmUdgJhaiDQAAAAASUVORK5CYII=\"\n style=\"width: 16px;height: 16px;\">\n </ng-container>\n </ng-container>\n <ng-template #notPictureTemplate>\n <ng-container\n *ngIf=\"!isTextOverflow(selectOptionTableColumn.render ? selectOptionTableColumn.render(selectItem) : selectItem[selectOptionTableColumn.name], selectOptionTableColumn.width);else overflowTemplate\">\n <div>{{ judgeColEmpty(selectOptionTableColumn.render ?\n selectOptionTableColumn.render(selectItem) :\n selectItem[selectOptionTableColumn.name])}}</div>\n </ng-container>\n <ng-template #overflowTemplate>\n <div class=\"hd-option-overflow\" nz-tooltip\n [nzTooltipTitle]=\"selectOptionTableColumn.render ? selectOptionTableColumn.render(selectItem) : selectItem[selectOptionTableColumn.name]\">\n {{\n judgeColEmpty(selectOptionTableColumn.render ?\n selectOptionTableColumn.render(selectItem) :\n selectItem[selectOptionTableColumn.name])}}</div>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </nz-option>\n <nz-option\n *ngIf=\"formItem.selectOption.label && line.get(formItem.name) && line.get(formItem.selectOption.label)?.value && line.get(formItem.selectOption.value)?.value\"\n [nzLabel]=\"(formItem.selectOption.value === 'code' || formItem.selectOption.value === 'productCode' || formItem.selectOption.hdShowItemCode) ? ('['+ line.get(formItem.selectOption.value).value + ']' + line.get(formItem.selectOption.label).value) : line.get(formItem.selectOption.label).value\"\n [nzValue]=\"line.get(formItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n <ng-template #nomarlSelectTemplate>\n <nz-select #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\"\n [ngStyle]=\"getStyle(line, formItem, '200px')\">\n <nz-option\n *ngFor=\"let selectItem of (formItem.selectOption.selectList || line.get(formItem.selectOption.selectListName).value)\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\">\n </nz-option>\n <nz-option\n *ngIf=\"formItem.selectOption.label && line.get(formItem.name) && line.get(formItem.selectOption.label)?.value && line.get(formItem.selectOption.value)?.value\"\n [nzLabel]=\"(formItem.selectOption.value === 'code' || formItem.selectOption.value === 'productCode' || formItem.selectOption.hdShowItemCode) ? ('['+ line.get(formItem.selectOption.value).value + ']' + line.get(formItem.selectOption.label).value) : line.get(formItem.selectOption.label).value\"\n [nzValue]=\"line.get(formItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n </ng-template>\n\n </ng-container>\n <ng-container *ngSwitchCase=\"'Date'\">\n <nz-date-picker #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n *ngIf=\"formItem.showTime\" [ngStyle]=\"getStyle(line, formItem, '150px')\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\" nzShowTime\n nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n <nz-date-picker #formInputDom *ngIf=\"!formItem.showTime\"\n [ngStyle]=\"getStyle(line, formItem, '150px')\"\n (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"'DateRange'\">\n <nz-range-picker #formInputDom [ngStyle]=\"getStyle(line, formItem, '200px')\"\n (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\" [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\"\n [formControlName]=\"formItem.name\">\n </nz-range-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"'TextArea'\">\n <textarea #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [ngStyle]=\"{'color': formItem?.colorOption?.name ? line.get(formItem.colorOption.name).value : null}\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [maxlength]=\"formItem.maxLength || null\" rows=\"4\" nz-input\n [maxlength]=\"formItem.maxLength || null\" [formControlName]=\"formItem.name\"></textarea>\n </ng-container>\n <ng-container *ngSwitchCase=\"'InputNumber'\">\n <div style=\"display: flex;align-items: center;\">\n <nz-input-number #formInputDom [ngStyle]=\"getStyle(line, formItem, '100px')\"\n [maxlength]=\"formItem.maxLength || null\" [formControlName]=\"formItem.name\"\n [nzMin]=\"formItem?.inputNumber?.min || 0\" [nzMax]=\"formItem?.inputNumber?.max || 99999999\"\n [nzStep]=\"formItem?.inputNumber?.step || 1\"\n [nzPrecision]=\"formItem?.inputNumber?.precision || 2\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [nzId]=\"'inputNumber-' + formItem.name + line.get('lineIndex').value\"\n (click)=\"formItem.isSelect ? selectValue('#inputNumber-' + formItem.name + line.get('lineIndex').value, dataIndex , innerIndex) : setActiveDomInFormLines(dataIndex , innerIndex)\">\n </nz-input-number>\n <div *ngIf=\"formItem?.explainOptionRight?.show\"\n [style.color]=\"formItem?.explainOptionRight?.color ? formItem.explainOptionRight.color : null\">\n &nbsp;&nbsp;{{line.get(formItem.explainOptionRight.name).value}}</div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'MultipleSelect'\">\n <nz-select #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n nzMode=\"multiple\" [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [ngStyle]=\"getStyle(line, formItem, '200px')\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of formItem.selectOption.selectList\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\"></nz-option>\n <ng-container\n *ngIf=\"formItem.selectOption.label && line.get(formItem.name) && line.get(formItem.selectOption.label)?.value && line.get(formItem.selectOption.value)?.value\">\n <nz-option *ngFor=\"let option of line.get(formItem.selectOption.value).value;index as i\"\n [nzLabel]=\"line.get(formItem.selectOption.label).value[i]\" [nzValue]=\"option\" nzHide>\n </nz-option>\n </ng-container>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'ViewDom'\">\n {{(formItem.preserveNumber && line.get(formItem.name).value) ?\n LodashRound(line.get(formItem.name).value,formItem.preserveNumber).toFixed(formItem.preserveNumber)\n : line.get(formItem.name).value}}\n </ng-container>\n <ng-container *ngSwitchCase=\"'Switch'\">\n <nz-switch (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [formControlName]=\"formItem.name\"></nz-switch>\n </ng-container>\n <ng-container *ngSwitchCase=\"'Time' \">\n <nz-time-picker #formInputDom [ngStyle]=\"getStyle(line, formItem, '200px')\"\n (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [formControlName]=\"formItem.name\"></nz-time-picker>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n <div *ngIf=\"formItem?.explainOption?.show\"\n [style.color]=\"formItem?.explainOption?.color ? formItem.explainOption.color : null\">\n {{line.get(formItem.explainOption.name).value}}</div>\n </td>\n </ng-container>\n <td style=\"width: 80px\" nzRight=\"0\">\n <span class=\"common-btn-group\">\n <a *ngIf=\"operateButtons.includes('add')\" (click)=\"addFormLine(line.get('lineIndex').value)\">\u6DFB\u52A0</a>\n <a class=\"common-danger-btn\" *ngIf=\"operateButtons.includes('delete') && !showDeleteConfirm\"\n (click)=\"deleteFormLine(line.get('lineIndex').value)\">\u5220\u9664</a>\n <a class=\"common-danger-btn\" *ngIf=\"operateButtons.includes('delete') && showDeleteConfirm\" nz-popconfirm\n nzPopconfirmTitle=\"\u786E\u8BA4\u8981\u5220\u9664\u8BE5\u884C\u5417?\" nzPopconfirmPlacement=\"bottom\"\n (nzOnConfirm)=\"deleteFormLine(line.get('lineIndex').value)\">\u5220\u9664</a>\n </span>\n </td>\n </tr>\n </ng-container>\n <!-- \u5408\u8BA1\u533A\u57DF -->\n <tr *ngIf=\"showTotal\" class=\"hd-table-total\">\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let totalOption of totalOptionList\">\n <td [nzAlign]=\"totalOption.align ? totalOption.align : 'left'\">{{ (totalOption.value || totalOption.value ===\n 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal ) ? totalOption.value :\n LodashRound(totalOption.value,2).toFixed(2)) : '' }} </td>\n </ng-container>\n </tr>\n </tbody>\n </nz-table>\n <nz-list\n *ngIf=\"linesFormArray.controls.slice((paginationPageIndex - 1) * paginationPageSize, (paginationPageIndex - 1) * paginationPageSize + paginationPageSize).length === 0\"\n [nzDataSource]=\"[]\"></nz-list>\n <ng-container>\n <hd-space background=\"transparent\" type=\"row\" size=\"16\"></hd-space>\n <nz-pagination [nzSize]=\"'small'\" style=\"text-align: right;\" [nzPageIndex]=\"paginationPageIndex\"\n [nzPageSize]=\"paginationPageSize\" [nzPageSizeOptions]=\"[2, 10, 20, 30, 40, 50]\"\n [nzTotal]=\"linesFormArray.controls.length\" nzShowSizeChanger (nzPageIndexChange)=\"pageIndexChange($event)\"\n (nzPageSizeChange)=\"pageSizeChange($event)\" [nzShowTotal]=\"totalTemplate\"></nz-pagination>\n <ng-template #totalTemplate let-total>\u5171 {{linesFormArray.controls.length}} \u6761\u6570\u636E</ng-template>\n </ng-container>\n</form>",
2203
2925
  styles: ["::ng-deep .common-btn-group>a{font-size:12px;font-weight:400;color:#12a34f!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e}::ng-deep .ant-input-number-input{height:28px}::ng-deep .ant-input-number{height:28px}textarea.ant-input{height:auto;min-height:28px}::ng-deep .ant-select-selection--multiple{min-height:28px}::ng-deep .ant-select-selection__rendered>ul>li{height:22px!important;margin-top:3px!important;line-height:22px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:28px!important}::ng-deep .ant-input{height:28px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:28px!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}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:12px;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:12px;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-time-picker{width:100%}.hd-formLines-container ::ng-deep td{padding:1.5px 8px!important}.hd-formLines-container .ant-table-tbody>tr>td,.hd-formLines-container ::ng-deep .ant-table-thead>tr>th{padding:16px 8px}.hd-formLines-container ::ng-deep .hd-table-total>td{border:0!important}.hd-formLines-container .ant-input-number{width:100%}::ng-deep .hd-select-table .ant-select-dropdown-menu-item-disabled{background:#f5f8f6!important;border-bottom:1px solid #e8e8e8;position:-webkit-sticky;position:sticky;top:0;z-index:10;padding:0}::ng-deep .hd-select-table .ant-select-dropdown-menu-item-disabled:hover{background:#f5f8f6!important}.hd-option-header{display:flex;align-items:center;color:rgba(0,0,0,.85);background:#f5f8f6}.hd-option-header-column{padding:5px 0}.hd-option-line{display:flex;align-items:center}.hd-option-overflow{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.hd-select-empty{display:flex;align-items:center;flex-direction:column;padding:20px 0;background:#fff}::ng-deep .ant-empty-small{background:#fff!important;padding:8px 0;margin:0}"]
2204
2926
  }] }
2205
2927
  ];
2206
2928
  /** @nocollapse */
2207
2929
  HdFormLinesComponent.ctorParameters = function () { return [
2208
- { type: FormBuilder }
2930
+ { type: FormBuilder },
2931
+ { type: ChangeDetectorRef }
2209
2932
  ]; };
2210
2933
  HdFormLinesComponent.propDecorators = {
2934
+ formInputDomList: [{ type: ViewChildren, args: ['formInputDom',] }],
2211
2935
  tableLoading: [{ type: Input }],
2212
2936
  showSearch: [{ type: Input }],
2213
2937
  formLines: [{ type: Input }],
@@ -2239,6 +2963,8 @@ var HdFormLinesComponent = /** @class */ (function () {
2239
2963
  return HdFormLinesComponent;
2240
2964
  }());
2241
2965
  if (false) {
2966
+ /** @type {?} */
2967
+ HdFormLinesComponent.prototype.formInputDomList;
2242
2968
  /** @type {?} */
2243
2969
  HdFormLinesComponent.prototype.tableLoading;
2244
2970
  /** @type {?} */
@@ -2302,6 +3028,16 @@ if (false) {
2302
3028
  * @private
2303
3029
  */
2304
3030
  HdFormLinesComponent.prototype.searchSubscription;
3031
+ /** @type {?} */
3032
+ HdFormLinesComponent.prototype.collectDomList;
3033
+ /** @type {?} */
3034
+ HdFormLinesComponent.prototype.activeDomX;
3035
+ /** @type {?} */
3036
+ HdFormLinesComponent.prototype.activeDomY;
3037
+ /** @type {?} */
3038
+ HdFormLinesComponent.prototype.activeDom;
3039
+ /** @type {?} */
3040
+ HdFormLinesComponent.prototype.activeSelectedComponentOpen;
2305
3041
  /**
2306
3042
  * @type {?}
2307
3043
  * @private
@@ -2312,6 +3048,11 @@ if (false) {
2312
3048
  * @private
2313
3049
  */
2314
3050
  HdFormLinesComponent.prototype.fb;
3051
+ /**
3052
+ * @type {?}
3053
+ * @private
3054
+ */
3055
+ HdFormLinesComponent.prototype.cdr;
2315
3056
  }
2316
3057
 
2317
3058
  /**
@@ -3662,8 +4403,6 @@ var HdTableComponent = /** @class */ (function () {
3662
4403
  */
3663
4404
  function () {
3664
4405
  var _this = this;
3665
- console.log('local', location);
3666
- console.log('window', window);
3667
4406
  this.localtionTmp = location.pathname;
3668
4407
  if (this.localtionTmp) {
3669
4408
  this.localtionTmp = this.localtionTmp.replace(/\//g, "_");
@@ -4944,145 +5683,6 @@ var HdFilterService = /** @class */ (function () {
4944
5683
  return HdFilterService;
4945
5684
  }());
4946
5685
 
4947
- /**
4948
- * @fileoverview added by tsickle
4949
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4950
- */
4951
- // 控件列表
4952
- var
4953
- // 控件列表
4954
- FormLine = /** @class */ (function () {
4955
- function FormLine() {
4956
- // 输入框的提示文件
4957
- this.require = false; // 是否必填
4958
- // 是否必填
4959
- this.hide = false; // 是否为隐藏字段,仅用于填充表单的字段,不显示在页面上
4960
- // 列对齐方式
4961
- this.value = null; // 值 不传默认为null
4962
- // 需要保留小数的列的位数
4963
- this.inputNumber = new InputNumber(); // number组件的min、max、step
4964
- // 不可输入状态
4965
- this.showTime = false; // 日期选择器是否包含时间
4966
- this.canSearch = false; // 指明hide 情况下的控件是否可以被搜索,默认false
4967
- }
4968
- return FormLine;
4969
- }());
4970
- if (false) {
4971
- /** @type {?} */
4972
- FormLine.prototype.type;
4973
- /** @type {?} */
4974
- FormLine.prototype.label;
4975
- /** @type {?} */
4976
- FormLine.prototype.name;
4977
- /** @type {?} */
4978
- FormLine.prototype.placeholder;
4979
- /** @type {?} */
4980
- FormLine.prototype.require;
4981
- /** @type {?} */
4982
- FormLine.prototype.hide;
4983
- /** @type {?} */
4984
- FormLine.prototype.align;
4985
- /** @type {?} */
4986
- FormLine.prototype.value;
4987
- /** @type {?} */
4988
- FormLine.prototype.isSelect;
4989
- /** @type {?} */
4990
- FormLine.prototype.selectOption;
4991
- /** @type {?} */
4992
- FormLine.prototype.explainOptionRight;
4993
- /** @type {?} */
4994
- FormLine.prototype.explainOption;
4995
- /** @type {?} */
4996
- FormLine.prototype.colorOption;
4997
- /** @type {?} */
4998
- FormLine.prototype.maxLength;
4999
- /** @type {?} */
5000
- FormLine.prototype.preserveNumber;
5001
- /** @type {?} */
5002
- FormLine.prototype.inputNumber;
5003
- /** @type {?} */
5004
- FormLine.prototype.onChangeEvent;
5005
- /** @type {?} */
5006
- FormLine.prototype.onSearchEvent;
5007
- /** @type {?} */
5008
- FormLine.prototype.defaultLabel;
5009
- /** @type {?} */
5010
- FormLine.prototype.hdDisabledDate;
5011
- /** @type {?} */
5012
- FormLine.prototype.disabled;
5013
- /** @type {?} */
5014
- FormLine.prototype.showTime;
5015
- /** @type {?} */
5016
- FormLine.prototype.style;
5017
- /** @type {?} */
5018
- FormLine.prototype.canSearch;
5019
- /** @type {?} */
5020
- FormLine.prototype.onChangeEventDebounceTime;
5021
- /** @type {?} */
5022
- FormLine.prototype.onSearchEventEventDebounceTime;
5023
- }
5024
- var ColorOption = /** @class */ (function () {
5025
- function ColorOption() {
5026
- }
5027
- return ColorOption;
5028
- }());
5029
- if (false) {
5030
- /** @type {?} */
5031
- ColorOption.prototype.name;
5032
- /** @type {?} */
5033
- ColorOption.prototype.color;
5034
- }
5035
- var ExplainOption = /** @class */ (function () {
5036
- function ExplainOption() {
5037
- }
5038
- return ExplainOption;
5039
- }());
5040
- if (false) {
5041
- /** @type {?} */
5042
- ExplainOption.prototype.show;
5043
- /** @type {?} */
5044
- ExplainOption.prototype.name;
5045
- /** @type {?} */
5046
- ExplainOption.prototype.color;
5047
- }
5048
- /** @enum {number} */
5049
- var FormLineType = {
5050
- Input: 0,
5051
- Select: 1,
5052
- Date: 2,
5053
- DateRange: 3,
5054
- TextArea: 4,
5055
- InputNumber: 5,
5056
- MultipleSelect: 6,
5057
- ViewDom: 7,
5058
- Switch: 8,
5059
- Time: 9 // 时间选择器
5060
- ,
5061
- };
5062
- FormLineType[FormLineType.Input] = 'Input';
5063
- FormLineType[FormLineType.Select] = 'Select';
5064
- FormLineType[FormLineType.Date] = 'Date';
5065
- FormLineType[FormLineType.DateRange] = 'DateRange';
5066
- FormLineType[FormLineType.TextArea] = 'TextArea';
5067
- FormLineType[FormLineType.InputNumber] = 'InputNumber';
5068
- FormLineType[FormLineType.MultipleSelect] = 'MultipleSelect';
5069
- FormLineType[FormLineType.ViewDom] = 'ViewDom';
5070
- FormLineType[FormLineType.Switch] = 'Switch';
5071
- FormLineType[FormLineType.Time] = 'Time';
5072
- var HdFormLinesService = /** @class */ (function () {
5073
- function HdFormLinesService() {
5074
- }
5075
- HdFormLinesService.decorators = [
5076
- { type: Injectable, args: [{
5077
- providedIn: 'root'
5078
- },] }
5079
- ];
5080
- /** @nocollapse */
5081
- HdFormLinesService.ctorParameters = function () { return []; };
5082
- /** @nocollapse */ HdFormLinesService.ngInjectableDef = ɵɵdefineInjectable({ factory: function HdFormLinesService_Factory() { return new HdFormLinesService(); }, token: HdFormLinesService, providedIn: "root" });
5083
- return HdFormLinesService;
5084
- }());
5085
-
5086
5686
  /**
5087
5687
  * @fileoverview added by tsickle
5088
5688
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc