fantasy-ngzorro 2.1.4 → 2.1.6
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/bundles/fantasy-ngzorro.umd.js +782 -67
- package/bundles/fantasy-ngzorro.umd.js.map +1 -1
- package/bundles/fantasy-ngzorro.umd.min.js +2 -2
- package/bundles/fantasy-ngzorro.umd.min.js.map +1 -1
- package/esm2015/fantasy-ngzorro.js +2 -2
- package/esm2015/fantasy-ngzorro.module.js +11 -1
- package/esm2015/hd-component.module.js +11 -1
- package/esm2015/hd-form-lines/hd-form-lines.component.js +512 -62
- package/esm2015/index.js +2 -2
- package/esm2015/public-api.js +2 -1
- package/esm2015/service/hd-overlay-cleanup.service.js +95 -0
- package/esm5/fantasy-ngzorro.js +2 -2
- package/esm5/fantasy-ngzorro.module.js +8 -2
- package/esm5/hd-component.module.js +8 -2
- package/esm5/hd-form-lines/hd-form-lines.component.js +667 -62
- package/esm5/index.js +2 -2
- package/esm5/public-api.js +2 -1
- package/esm5/service/hd-overlay-cleanup.service.js +105 -0
- package/fantasy-ngzorro.metadata.json +1 -1
- package/fantasy-ngzorro.module.d.ts +2 -0
- package/fesm2015/fantasy-ngzorro.js +623 -64
- package/fesm2015/fantasy-ngzorro.js.map +1 -1
- package/fesm5/fantasy-ngzorro.js +781 -66
- package/fesm5/fantasy-ngzorro.js.map +1 -1
- package/hd-component.module.d.ts +2 -0
- package/hd-form-lines/hd-form-lines.component.d.ts +65 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/service/hd-overlay-cleanup.service.d.ts +16 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('ng-zorro-antd'), require('@angular/cdk/drag-drop'), require('ng-zorro-antd/table'), require('lodash'), require('ng-zorro-antd/core'), require('rxjs'), require('rxjs/operators'), require('ng-zorro-antd/modal'), require('ng-zorro-antd/dropdown'), require('ng-zorro-antd/icon'), require('ng-zorro-antd/popconfirm'), require('ng-zorro-antd/resizable'), require('ng-zorro-antd/tooltip'), require('ng-zorro-antd/tree'), require('localforage')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('fantasy-ngzorro', ['exports', '@angular/core', '@angular/common', '@angular/forms', 'ng-zorro-antd', '@angular/cdk/drag-drop', 'ng-zorro-antd/table', 'lodash', 'ng-zorro-antd/core', 'rxjs', 'rxjs/operators', 'ng-zorro-antd/modal', 'ng-zorro-antd/dropdown', 'ng-zorro-antd/icon', 'ng-zorro-antd/popconfirm', 'ng-zorro-antd/resizable', 'ng-zorro-antd/tooltip', 'ng-zorro-antd/tree', 'localforage'], factory) :
|
|
4
|
-
(global = global || self, factory(global['fantasy-ngzorro'] = {}, global.ng.core, global.ng.common, global.ng.forms, global.ngZorroAntd, global.ng.cdk['drag-drop'], global.table, global.lodash, global.core$1, global.rxjs, global.rxjs.operators, global.modal, global.dropdown, global.icon, global.popconfirm, global.resizable, global.tooltip, global.tree, global.localforage));
|
|
5
|
-
}(this, (function (exports, core, common, forms, ngZorroAntd, dragDrop, table, lodash, core$1, rxjs, operators, modal, dropdown, icon, popconfirm, resizable, tooltip, tree, localforage) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('ng-zorro-antd'), require('@angular/cdk/drag-drop'), require('ng-zorro-antd/table'), require('lodash'), require('ng-zorro-antd/core'), require('rxjs'), require('rxjs/operators'), require('ng-zorro-antd/modal'), require('ng-zorro-antd/dropdown'), require('ng-zorro-antd/icon'), require('ng-zorro-antd/popconfirm'), require('ng-zorro-antd/resizable'), require('ng-zorro-antd/tooltip'), require('ng-zorro-antd/tree'), require('localforage'), require('@angular/router')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('fantasy-ngzorro', ['exports', '@angular/core', '@angular/common', '@angular/forms', 'ng-zorro-antd', '@angular/cdk/drag-drop', 'ng-zorro-antd/table', 'lodash', 'ng-zorro-antd/core', 'rxjs', 'rxjs/operators', 'ng-zorro-antd/modal', 'ng-zorro-antd/dropdown', 'ng-zorro-antd/icon', 'ng-zorro-antd/popconfirm', 'ng-zorro-antd/resizable', 'ng-zorro-antd/tooltip', 'ng-zorro-antd/tree', 'localforage', '@angular/router'], factory) :
|
|
4
|
+
(global = global || self, factory(global['fantasy-ngzorro'] = {}, global.ng.core, global.ng.common, global.ng.forms, global.ngZorroAntd, global.ng.cdk['drag-drop'], global.table, global.lodash, global.core$1, global.rxjs, global.rxjs.operators, global.modal, global.dropdown, global.icon, global.popconfirm, global.resizable, global.tooltip, global.tree, global.localforage, global.ng.router));
|
|
5
|
+
}(this, (function (exports, core, common, forms, ngZorroAntd, dragDrop, table, lodash, core$1, rxjs, operators, modal, dropdown, icon, popconfirm, resizable, tooltip, tree, localforage, router) { 'use strict';
|
|
6
6
|
|
|
7
7
|
/*! *****************************************************************************
|
|
8
8
|
Copyright (c) Microsoft Corporation.
|
|
@@ -2461,9 +2461,18 @@
|
|
|
2461
2461
|
this.showKeyboardOperateTip = false;
|
|
2462
2462
|
this.tableLoading = false;
|
|
2463
2463
|
this.showSearch = false;
|
|
2464
|
-
|
|
2464
|
+
/**
|
|
2465
|
+
* 是否展示行勾选列,用于外部批量操作勾选行
|
|
2466
|
+
*/
|
|
2467
|
+
this.showCheckbox = false;
|
|
2468
|
+
this.operateButtons = ["add", "delete"]; // 操作列按钮:add / delete / copy
|
|
2469
|
+
// 操作列按钮:add / delete / copy
|
|
2465
2470
|
this.scroll = { x: "1px" };
|
|
2466
2471
|
this.changeEvent = new core.EventEmitter();
|
|
2472
|
+
/**
|
|
2473
|
+
* 勾选变化时抛出当前勾选行 FormGroup 列表
|
|
2474
|
+
*/
|
|
2475
|
+
this.selectionChange = new core.EventEmitter();
|
|
2467
2476
|
this.showDeleteConfirm = false;
|
|
2468
2477
|
this.paginationPageIndex = 1;
|
|
2469
2478
|
this.paginationPageSize = 10;
|
|
@@ -2483,6 +2492,10 @@
|
|
|
2483
2492
|
// 是否是已经筛选过的数据
|
|
2484
2493
|
this.formValid = false; // 表单当前的状态
|
|
2485
2494
|
// 表单当前的状态
|
|
2495
|
+
/**
|
|
2496
|
+
* 勾选的行 id(跨页、搜索重建后仍保留)
|
|
2497
|
+
*/
|
|
2498
|
+
this.selectedRowIds = new Set();
|
|
2486
2499
|
this.searchSubject = new rxjs.Subject();
|
|
2487
2500
|
this.debounceTimeout = 0; // 默认防抖时间
|
|
2488
2501
|
this.openChangeSubject = new rxjs.Subject();
|
|
@@ -2573,6 +2586,510 @@
|
|
|
2573
2586
|
enumerable: true,
|
|
2574
2587
|
configurable: true
|
|
2575
2588
|
});
|
|
2589
|
+
Object.defineProperty(HdFormLinesComponent.prototype, "operateColWidth", {
|
|
2590
|
+
get: /**
|
|
2591
|
+
* @return {?}
|
|
2592
|
+
*/
|
|
2593
|
+
function () {
|
|
2594
|
+
/** @type {?} */
|
|
2595
|
+
var count = (this.operateButtons || []).filter((/**
|
|
2596
|
+
* @param {?} btn
|
|
2597
|
+
* @return {?}
|
|
2598
|
+
*/
|
|
2599
|
+
function (btn) {
|
|
2600
|
+
return ["add", "copy", "delete"].includes(btn);
|
|
2601
|
+
})).length;
|
|
2602
|
+
return Math.max(count * 40, 80);
|
|
2603
|
+
},
|
|
2604
|
+
enumerable: true,
|
|
2605
|
+
configurable: true
|
|
2606
|
+
});
|
|
2607
|
+
Object.defineProperty(HdFormLinesComponent.prototype, "lineNumberLeft", {
|
|
2608
|
+
/** 勾选列固定时,序号列的 left 偏移 */
|
|
2609
|
+
get: /**
|
|
2610
|
+
* 勾选列固定时,序号列的 left 偏移
|
|
2611
|
+
* @return {?}
|
|
2612
|
+
*/
|
|
2613
|
+
function () {
|
|
2614
|
+
return this.showCheckbox ? "40px" : "0px";
|
|
2615
|
+
},
|
|
2616
|
+
enumerable: true,
|
|
2617
|
+
configurable: true
|
|
2618
|
+
});
|
|
2619
|
+
/**
|
|
2620
|
+
* @private
|
|
2621
|
+
* @return {?}
|
|
2622
|
+
*/
|
|
2623
|
+
HdFormLinesComponent.prototype.generateRowId = /**
|
|
2624
|
+
* @private
|
|
2625
|
+
* @return {?}
|
|
2626
|
+
*/
|
|
2627
|
+
function () {
|
|
2628
|
+
return "hd_row_" + Date.now() + "_" + Math.random().toString(36).slice(2, 9);
|
|
2629
|
+
};
|
|
2630
|
+
/**
|
|
2631
|
+
* @private
|
|
2632
|
+
* @param {?} line
|
|
2633
|
+
* @return {?}
|
|
2634
|
+
*/
|
|
2635
|
+
HdFormLinesComponent.prototype.getRowId = /**
|
|
2636
|
+
* @private
|
|
2637
|
+
* @param {?} line
|
|
2638
|
+
* @return {?}
|
|
2639
|
+
*/
|
|
2640
|
+
function (line) {
|
|
2641
|
+
if (!line || !line.get("_hdRowId")) {
|
|
2642
|
+
return null;
|
|
2643
|
+
}
|
|
2644
|
+
return line.get("_hdRowId").value;
|
|
2645
|
+
};
|
|
2646
|
+
/** 当前页的行(用于表头全选,仅作用于当前页,跨页勾选仍保留) */
|
|
2647
|
+
/**
|
|
2648
|
+
* 当前页的行(用于表头全选,仅作用于当前页,跨页勾选仍保留)
|
|
2649
|
+
* @private
|
|
2650
|
+
* @return {?}
|
|
2651
|
+
*/
|
|
2652
|
+
HdFormLinesComponent.prototype.getCurrentPageLines = /**
|
|
2653
|
+
* 当前页的行(用于表头全选,仅作用于当前页,跨页勾选仍保留)
|
|
2654
|
+
* @private
|
|
2655
|
+
* @return {?}
|
|
2656
|
+
*/
|
|
2657
|
+
function () {
|
|
2658
|
+
/** @type {?} */
|
|
2659
|
+
var start = (this.paginationPageIndex - 1) * this.paginationPageSize;
|
|
2660
|
+
/** @type {?} */
|
|
2661
|
+
var end = start + this.paginationPageSize;
|
|
2662
|
+
return ((/** @type {?} */ (this.linesFormArray.controls))).slice(start, end);
|
|
2663
|
+
};
|
|
2664
|
+
/**
|
|
2665
|
+
* @param {?} line
|
|
2666
|
+
* @return {?}
|
|
2667
|
+
*/
|
|
2668
|
+
HdFormLinesComponent.prototype.isLineChecked = /**
|
|
2669
|
+
* @param {?} line
|
|
2670
|
+
* @return {?}
|
|
2671
|
+
*/
|
|
2672
|
+
function (line) {
|
|
2673
|
+
/** @type {?} */
|
|
2674
|
+
var id = this.getRowId(line);
|
|
2675
|
+
return !!id && this.selectedRowIds.has(id);
|
|
2676
|
+
};
|
|
2677
|
+
/**
|
|
2678
|
+
* @return {?}
|
|
2679
|
+
*/
|
|
2680
|
+
HdFormLinesComponent.prototype.isAllChecked = /**
|
|
2681
|
+
* @return {?}
|
|
2682
|
+
*/
|
|
2683
|
+
function () {
|
|
2684
|
+
var _this = this;
|
|
2685
|
+
/** @type {?} */
|
|
2686
|
+
var pageLines = this.getCurrentPageLines();
|
|
2687
|
+
return pageLines.length > 0 && pageLines.every((/**
|
|
2688
|
+
* @param {?} line
|
|
2689
|
+
* @return {?}
|
|
2690
|
+
*/
|
|
2691
|
+
function (line) { return _this.isLineChecked(line); }));
|
|
2692
|
+
};
|
|
2693
|
+
/**
|
|
2694
|
+
* @return {?}
|
|
2695
|
+
*/
|
|
2696
|
+
HdFormLinesComponent.prototype.isIndeterminate = /**
|
|
2697
|
+
* @return {?}
|
|
2698
|
+
*/
|
|
2699
|
+
function () {
|
|
2700
|
+
var _this = this;
|
|
2701
|
+
/** @type {?} */
|
|
2702
|
+
var pageLines = this.getCurrentPageLines();
|
|
2703
|
+
/** @type {?} */
|
|
2704
|
+
var checkedCount = pageLines.filter((/**
|
|
2705
|
+
* @param {?} line
|
|
2706
|
+
* @return {?}
|
|
2707
|
+
*/
|
|
2708
|
+
function (line) { return _this.isLineChecked(line); })).length;
|
|
2709
|
+
return checkedCount > 0 && checkedCount < pageLines.length;
|
|
2710
|
+
};
|
|
2711
|
+
/**
|
|
2712
|
+
* @param {?} checked
|
|
2713
|
+
* @return {?}
|
|
2714
|
+
*/
|
|
2715
|
+
HdFormLinesComponent.prototype.onAllChecked = /**
|
|
2716
|
+
* @param {?} checked
|
|
2717
|
+
* @return {?}
|
|
2718
|
+
*/
|
|
2719
|
+
function (checked) {
|
|
2720
|
+
var _this = this;
|
|
2721
|
+
this.getCurrentPageLines().forEach((/**
|
|
2722
|
+
* @param {?} line
|
|
2723
|
+
* @return {?}
|
|
2724
|
+
*/
|
|
2725
|
+
function (line) {
|
|
2726
|
+
/** @type {?} */
|
|
2727
|
+
var id = _this.getRowId(line);
|
|
2728
|
+
if (!id) {
|
|
2729
|
+
return;
|
|
2730
|
+
}
|
|
2731
|
+
if (checked) {
|
|
2732
|
+
_this.selectedRowIds.add(id);
|
|
2733
|
+
}
|
|
2734
|
+
else {
|
|
2735
|
+
_this.selectedRowIds.delete(id);
|
|
2736
|
+
}
|
|
2737
|
+
}));
|
|
2738
|
+
this.emitSelectionChange();
|
|
2739
|
+
};
|
|
2740
|
+
/**
|
|
2741
|
+
* @param {?} line
|
|
2742
|
+
* @param {?} checked
|
|
2743
|
+
* @return {?}
|
|
2744
|
+
*/
|
|
2745
|
+
HdFormLinesComponent.prototype.onLineCheckedChange = /**
|
|
2746
|
+
* @param {?} line
|
|
2747
|
+
* @param {?} checked
|
|
2748
|
+
* @return {?}
|
|
2749
|
+
*/
|
|
2750
|
+
function (line, checked) {
|
|
2751
|
+
/** @type {?} */
|
|
2752
|
+
var id = this.getRowId(line);
|
|
2753
|
+
if (!id) {
|
|
2754
|
+
return;
|
|
2755
|
+
}
|
|
2756
|
+
if (checked) {
|
|
2757
|
+
this.selectedRowIds.add(id);
|
|
2758
|
+
}
|
|
2759
|
+
else {
|
|
2760
|
+
this.selectedRowIds.delete(id);
|
|
2761
|
+
}
|
|
2762
|
+
this.emitSelectionChange();
|
|
2763
|
+
};
|
|
2764
|
+
/**
|
|
2765
|
+
* @private
|
|
2766
|
+
* @return {?}
|
|
2767
|
+
*/
|
|
2768
|
+
HdFormLinesComponent.prototype.emitSelectionChange = /**
|
|
2769
|
+
* @private
|
|
2770
|
+
* @return {?}
|
|
2771
|
+
*/
|
|
2772
|
+
function () {
|
|
2773
|
+
this.selectionChange.emit(this.getSelectedLines());
|
|
2774
|
+
this.cdr.markForCheck();
|
|
2775
|
+
};
|
|
2776
|
+
/**
|
|
2777
|
+
* @private
|
|
2778
|
+
* @param {?} line
|
|
2779
|
+
* @return {?}
|
|
2780
|
+
*/
|
|
2781
|
+
HdFormLinesComponent.prototype.removeLineFromSelection = /**
|
|
2782
|
+
* @private
|
|
2783
|
+
* @param {?} line
|
|
2784
|
+
* @return {?}
|
|
2785
|
+
*/
|
|
2786
|
+
function (line) {
|
|
2787
|
+
/** @type {?} */
|
|
2788
|
+
var id = this.getRowId(line);
|
|
2789
|
+
if (id && this.selectedRowIds.has(id)) {
|
|
2790
|
+
this.selectedRowIds.delete(id);
|
|
2791
|
+
this.emitSelectionChange();
|
|
2792
|
+
}
|
|
2793
|
+
};
|
|
2794
|
+
/**
|
|
2795
|
+
* @private
|
|
2796
|
+
* @param {?} line
|
|
2797
|
+
* @param {?} values
|
|
2798
|
+
* @param {?} emitEvent
|
|
2799
|
+
* @return {?}
|
|
2800
|
+
*/
|
|
2801
|
+
HdFormLinesComponent.prototype.applyValuesToLine = /**
|
|
2802
|
+
* @private
|
|
2803
|
+
* @param {?} line
|
|
2804
|
+
* @param {?} values
|
|
2805
|
+
* @param {?} emitEvent
|
|
2806
|
+
* @return {?}
|
|
2807
|
+
*/
|
|
2808
|
+
function (line, values, emitEvent) {
|
|
2809
|
+
var _this = this;
|
|
2810
|
+
Object.keys(values).forEach((/**
|
|
2811
|
+
* @param {?} key
|
|
2812
|
+
* @return {?}
|
|
2813
|
+
*/
|
|
2814
|
+
function (key) {
|
|
2815
|
+
/** @type {?} */
|
|
2816
|
+
var control = line.get(key);
|
|
2817
|
+
if (!control) {
|
|
2818
|
+
line.addControl(key, _this.fb.control(values[key]));
|
|
2819
|
+
control = line.get(key);
|
|
2820
|
+
}
|
|
2821
|
+
// 静默赋值,避免 valueChanges / DOM maxlength 回写把校验态打乱
|
|
2822
|
+
control.setValue(values[key], { emitEvent: false });
|
|
2823
|
+
control.markAsPristine({ onlySelf: true });
|
|
2824
|
+
control.markAsUntouched({ onlySelf: true });
|
|
2825
|
+
control.updateValueAndValidity({ emitEvent: false });
|
|
2826
|
+
if (emitEvent) {
|
|
2827
|
+
/** @type {?} */
|
|
2828
|
+
var formItem = _this.formLines.find((/**
|
|
2829
|
+
* @param {?} item
|
|
2830
|
+
* @return {?}
|
|
2831
|
+
*/
|
|
2832
|
+
function (item) { return item.name === key; }));
|
|
2833
|
+
if (formItem && formItem.onChangeEvent) {
|
|
2834
|
+
_this.triggerEvent(formItem.onChangeEvent, values[key], line);
|
|
2835
|
+
}
|
|
2836
|
+
}
|
|
2837
|
+
}));
|
|
2838
|
+
this.cdr.detectChanges();
|
|
2839
|
+
};
|
|
2840
|
+
/**
|
|
2841
|
+
* 仅在用户交互后、且当前值确实为空的 required 错误时展示红框,
|
|
2842
|
+
* 避免批量赋值时 ng-zorro 残留「不能为空」提示
|
|
2843
|
+
*/
|
|
2844
|
+
/**
|
|
2845
|
+
* 仅在用户交互后、且当前值确实为空的 required 错误时展示红框,
|
|
2846
|
+
* 避免批量赋值时 ng-zorro 残留「不能为空」提示
|
|
2847
|
+
* @param {?} line
|
|
2848
|
+
* @param {?} formItem
|
|
2849
|
+
* @return {?}
|
|
2850
|
+
*/
|
|
2851
|
+
HdFormLinesComponent.prototype.getControlValidateStatus = /**
|
|
2852
|
+
* 仅在用户交互后、且当前值确实为空的 required 错误时展示红框,
|
|
2853
|
+
* 避免批量赋值时 ng-zorro 残留「不能为空」提示
|
|
2854
|
+
* @param {?} line
|
|
2855
|
+
* @param {?} formItem
|
|
2856
|
+
* @return {?}
|
|
2857
|
+
*/
|
|
2858
|
+
function (line, formItem) {
|
|
2859
|
+
/** @type {?} */
|
|
2860
|
+
var control = line.get(formItem.name);
|
|
2861
|
+
if (!control || control.disabled) {
|
|
2862
|
+
return "";
|
|
2863
|
+
}
|
|
2864
|
+
/** @type {?} */
|
|
2865
|
+
var empty = control.value === null ||
|
|
2866
|
+
control.value === undefined ||
|
|
2867
|
+
control.value === "";
|
|
2868
|
+
if ((control.dirty || control.touched) && empty && control.hasError("required")) {
|
|
2869
|
+
return "error";
|
|
2870
|
+
}
|
|
2871
|
+
return "";
|
|
2872
|
+
};
|
|
2873
|
+
/** 用户输入时按 maxLength 截断(不使用原生 maxlength,避免干扰程序化赋值) */
|
|
2874
|
+
/**
|
|
2875
|
+
* 用户输入时按 maxLength 截断(不使用原生 maxlength,避免干扰程序化赋值)
|
|
2876
|
+
* @param {?} event
|
|
2877
|
+
* @param {?} line
|
|
2878
|
+
* @param {?} formItem
|
|
2879
|
+
* @return {?}
|
|
2880
|
+
*/
|
|
2881
|
+
HdFormLinesComponent.prototype.limitInputLength = /**
|
|
2882
|
+
* 用户输入时按 maxLength 截断(不使用原生 maxlength,避免干扰程序化赋值)
|
|
2883
|
+
* @param {?} event
|
|
2884
|
+
* @param {?} line
|
|
2885
|
+
* @param {?} formItem
|
|
2886
|
+
* @return {?}
|
|
2887
|
+
*/
|
|
2888
|
+
function (event, line, formItem) {
|
|
2889
|
+
if (!formItem || !formItem.maxLength) {
|
|
2890
|
+
return;
|
|
2891
|
+
}
|
|
2892
|
+
/** @type {?} */
|
|
2893
|
+
var input = (/** @type {?} */ (event.target));
|
|
2894
|
+
if (input && input.value && input.value.length > formItem.maxLength) {
|
|
2895
|
+
/** @type {?} */
|
|
2896
|
+
var next = input.value.slice(0, formItem.maxLength);
|
|
2897
|
+
input.value = next;
|
|
2898
|
+
/** @type {?} */
|
|
2899
|
+
var control = line.get(formItem.name);
|
|
2900
|
+
if (control) {
|
|
2901
|
+
control.setValue(next);
|
|
2902
|
+
}
|
|
2903
|
+
}
|
|
2904
|
+
};
|
|
2905
|
+
/** 获取当前勾选且已挂载的行 FormGroup(当前筛选结果内) */
|
|
2906
|
+
/**
|
|
2907
|
+
* 获取当前勾选且已挂载的行 FormGroup(当前筛选结果内)
|
|
2908
|
+
* @return {?}
|
|
2909
|
+
*/
|
|
2910
|
+
HdFormLinesComponent.prototype.getSelectedLines = /**
|
|
2911
|
+
* 获取当前勾选且已挂载的行 FormGroup(当前筛选结果内)
|
|
2912
|
+
* @return {?}
|
|
2913
|
+
*/
|
|
2914
|
+
function () {
|
|
2915
|
+
var _this = this;
|
|
2916
|
+
return ((/** @type {?} */ (this.linesFormArray.controls))).filter((/**
|
|
2917
|
+
* @param {?} line
|
|
2918
|
+
* @return {?}
|
|
2919
|
+
*/
|
|
2920
|
+
function (line) {
|
|
2921
|
+
return _this.isLineChecked(line);
|
|
2922
|
+
}));
|
|
2923
|
+
};
|
|
2924
|
+
/**
|
|
2925
|
+
* 获取全部勾选行数据(含跨页、搜索后未展示但仍勾选的行)
|
|
2926
|
+
*/
|
|
2927
|
+
/**
|
|
2928
|
+
* 获取全部勾选行数据(含跨页、搜索后未展示但仍勾选的行)
|
|
2929
|
+
* @return {?}
|
|
2930
|
+
*/
|
|
2931
|
+
HdFormLinesComponent.prototype.getSelectedLinesData = /**
|
|
2932
|
+
* 获取全部勾选行数据(含跨页、搜索后未展示但仍勾选的行)
|
|
2933
|
+
* @return {?}
|
|
2934
|
+
*/
|
|
2935
|
+
function () {
|
|
2936
|
+
var _this = this;
|
|
2937
|
+
/** @type {?} */
|
|
2938
|
+
var result = [];
|
|
2939
|
+
/** @type {?} */
|
|
2940
|
+
var mountedById = new Map();
|
|
2941
|
+
((/** @type {?} */ (this.linesFormArray.controls))).forEach((/**
|
|
2942
|
+
* @param {?} line
|
|
2943
|
+
* @return {?}
|
|
2944
|
+
*/
|
|
2945
|
+
function (line) {
|
|
2946
|
+
/** @type {?} */
|
|
2947
|
+
var id = _this.getRowId(line);
|
|
2948
|
+
if (id && _this.selectedRowIds.has(id)) {
|
|
2949
|
+
mountedById.set(id, line.getRawValue());
|
|
2950
|
+
}
|
|
2951
|
+
}));
|
|
2952
|
+
(this.storeFormLinesData || []).forEach((/**
|
|
2953
|
+
* @param {?} data
|
|
2954
|
+
* @return {?}
|
|
2955
|
+
*/
|
|
2956
|
+
function (data) {
|
|
2957
|
+
/** @type {?} */
|
|
2958
|
+
var id = data && data._hdRowId;
|
|
2959
|
+
if (id && _this.selectedRowIds.has(id)) {
|
|
2960
|
+
result.push(mountedById.has(id) ? mountedById.get(id) : __assign({}, data));
|
|
2961
|
+
}
|
|
2962
|
+
}));
|
|
2963
|
+
// 兜底:刚新增、尚未进 store 的勾选行
|
|
2964
|
+
this.selectedRowIds.forEach((/**
|
|
2965
|
+
* @param {?} id
|
|
2966
|
+
* @return {?}
|
|
2967
|
+
*/
|
|
2968
|
+
function (id) {
|
|
2969
|
+
if (!result.some((/**
|
|
2970
|
+
* @param {?} item
|
|
2971
|
+
* @return {?}
|
|
2972
|
+
*/
|
|
2973
|
+
function (item) { return item && item._hdRowId === id; })) && mountedById.has(id)) {
|
|
2974
|
+
result.push(mountedById.get(id));
|
|
2975
|
+
}
|
|
2976
|
+
}));
|
|
2977
|
+
return result;
|
|
2978
|
+
};
|
|
2979
|
+
/**
|
|
2980
|
+
* 批量填充勾选行字段(支持跨页、搜索后未展示但仍勾选的行)
|
|
2981
|
+
* @param values 要写入的字段,如 { remark: '批量备注', price: 10 }
|
|
2982
|
+
* @param emitEvent 是否触发 valueChanges / onChangeEvent,默认 true
|
|
2983
|
+
* @returns 实际填充的行数
|
|
2984
|
+
*/
|
|
2985
|
+
/**
|
|
2986
|
+
* 批量填充勾选行字段(支持跨页、搜索后未展示但仍勾选的行)
|
|
2987
|
+
* @param {?} values 要写入的字段,如 { remark: '批量备注', price: 10 }
|
|
2988
|
+
* @param {?=} emitEvent 是否触发 valueChanges / onChangeEvent,默认 true
|
|
2989
|
+
* @return {?} 实际填充的行数
|
|
2990
|
+
*/
|
|
2991
|
+
HdFormLinesComponent.prototype.batchFillSelected = /**
|
|
2992
|
+
* 批量填充勾选行字段(支持跨页、搜索后未展示但仍勾选的行)
|
|
2993
|
+
* @param {?} values 要写入的字段,如 { remark: '批量备注', price: 10 }
|
|
2994
|
+
* @param {?=} emitEvent 是否触发 valueChanges / onChangeEvent,默认 true
|
|
2995
|
+
* @return {?} 实际填充的行数
|
|
2996
|
+
*/
|
|
2997
|
+
function (values, emitEvent) {
|
|
2998
|
+
var _this = this;
|
|
2999
|
+
if (emitEvent === void 0) { emitEvent = true; }
|
|
3000
|
+
if (!values || this.selectedRowIds.size === 0) {
|
|
3001
|
+
return 0;
|
|
3002
|
+
}
|
|
3003
|
+
/** @type {?} */
|
|
3004
|
+
var mountedById = new Map();
|
|
3005
|
+
((/** @type {?} */ (this.linesFormArray.controls))).forEach((/**
|
|
3006
|
+
* @param {?} line
|
|
3007
|
+
* @return {?}
|
|
3008
|
+
*/
|
|
3009
|
+
function (line) {
|
|
3010
|
+
/** @type {?} */
|
|
3011
|
+
var id = _this.getRowId(line);
|
|
3012
|
+
if (id) {
|
|
3013
|
+
mountedById.set(id, line);
|
|
3014
|
+
}
|
|
3015
|
+
}));
|
|
3016
|
+
/** @type {?} */
|
|
3017
|
+
var count = 0;
|
|
3018
|
+
this.selectedRowIds.forEach((/**
|
|
3019
|
+
* @param {?} id
|
|
3020
|
+
* @return {?}
|
|
3021
|
+
*/
|
|
3022
|
+
function (id) {
|
|
3023
|
+
/** @type {?} */
|
|
3024
|
+
var line = mountedById.get(id);
|
|
3025
|
+
if (line) {
|
|
3026
|
+
_this.applyValuesToLine(line, values, emitEvent);
|
|
3027
|
+
count++;
|
|
3028
|
+
return;
|
|
3029
|
+
}
|
|
3030
|
+
// 当前筛选/页面未挂载:直接改总数据,退出搜索后可见
|
|
3031
|
+
/** @type {?} */
|
|
3032
|
+
var storeItem = (_this.storeFormLinesData || []).find((/**
|
|
3033
|
+
* @param {?} data
|
|
3034
|
+
* @return {?}
|
|
3035
|
+
*/
|
|
3036
|
+
function (data) { return data && data._hdRowId === id; }));
|
|
3037
|
+
if (storeItem) {
|
|
3038
|
+
Object.keys(values).forEach((/**
|
|
3039
|
+
* @param {?} key
|
|
3040
|
+
* @return {?}
|
|
3041
|
+
*/
|
|
3042
|
+
function (key) {
|
|
3043
|
+
storeItem[key] = values[key];
|
|
3044
|
+
}));
|
|
3045
|
+
count++;
|
|
3046
|
+
}
|
|
3047
|
+
}));
|
|
3048
|
+
return count;
|
|
3049
|
+
};
|
|
3050
|
+
/** 清空勾选 */
|
|
3051
|
+
/**
|
|
3052
|
+
* 清空勾选
|
|
3053
|
+
* @return {?}
|
|
3054
|
+
*/
|
|
3055
|
+
HdFormLinesComponent.prototype.clearSelection = /**
|
|
3056
|
+
* 清空勾选
|
|
3057
|
+
* @return {?}
|
|
3058
|
+
*/
|
|
3059
|
+
function () {
|
|
3060
|
+
if (this.selectedRowIds.size === 0) {
|
|
3061
|
+
return;
|
|
3062
|
+
}
|
|
3063
|
+
this.selectedRowIds.clear();
|
|
3064
|
+
this.emitSelectionChange();
|
|
3065
|
+
};
|
|
3066
|
+
/** 当前勾选数量(含跨页、搜索保留) */
|
|
3067
|
+
/**
|
|
3068
|
+
* 当前勾选数量(含跨页、搜索保留)
|
|
3069
|
+
* @return {?}
|
|
3070
|
+
*/
|
|
3071
|
+
HdFormLinesComponent.prototype.getSelectedCount = /**
|
|
3072
|
+
* 当前勾选数量(含跨页、搜索保留)
|
|
3073
|
+
* @return {?}
|
|
3074
|
+
*/
|
|
3075
|
+
function () {
|
|
3076
|
+
return this.selectedRowIds.size;
|
|
3077
|
+
};
|
|
3078
|
+
Object.defineProperty(HdFormLinesComponent.prototype, "showToolbar", {
|
|
3079
|
+
/** 是否展示顶部工具栏 */
|
|
3080
|
+
get: /**
|
|
3081
|
+
* 是否展示顶部工具栏
|
|
3082
|
+
* @return {?}
|
|
3083
|
+
*/
|
|
3084
|
+
function () {
|
|
3085
|
+
return (!!this.showSearch ||
|
|
3086
|
+
!!this.showCheckbox ||
|
|
3087
|
+
!!this.formLinesLeftButton ||
|
|
3088
|
+
!!this.formLinesRightButton);
|
|
3089
|
+
},
|
|
3090
|
+
enumerable: true,
|
|
3091
|
+
configurable: true
|
|
3092
|
+
});
|
|
2576
3093
|
/**
|
|
2577
3094
|
* @param {?} value
|
|
2578
3095
|
* @return {?}
|
|
@@ -3455,7 +3972,7 @@
|
|
|
3455
3972
|
formGroupObj[item.selectOption.label] = _this.fb.control(formLinesDataItem[item.selectOption.label] || null, []);
|
|
3456
3973
|
}
|
|
3457
3974
|
}));
|
|
3458
|
-
formGroupObj.lineIndex = _this.fb.control(((/** @type {?} */ (tmpValidateHdFormLines.get("lines")))).controls.length, []);
|
|
3975
|
+
formGroupObj.lineIndex = _this.fb.control(((/** @type {?} */ (tmpValidateHdFormLines.get("lines")))).controls.length + 1, []);
|
|
3459
3976
|
/** @type {?} */
|
|
3460
3977
|
var formGroupTmp = _this.fb.group(formGroupObj);
|
|
3461
3978
|
_this.formLines.forEach((/**
|
|
@@ -3759,7 +4276,34 @@
|
|
|
3759
4276
|
* @return {?}
|
|
3760
4277
|
*/
|
|
3761
4278
|
function () {
|
|
4279
|
+
return this.createLineFromValues(null, true);
|
|
4280
|
+
};
|
|
4281
|
+
/**
|
|
4282
|
+
* 根据行数据创建 FormGroup(含隐藏字段、select 的 label 等附属字段)
|
|
4283
|
+
* @param formLinesDataItem 行数据,空行传 null
|
|
4284
|
+
* @param isEmptyLine 是否空行(影响必填校验规则,与历史逻辑保持一致)
|
|
4285
|
+
* @param regenerateRowId 是否强制生成新行 id(复制行时使用)
|
|
4286
|
+
*/
|
|
4287
|
+
/**
|
|
4288
|
+
* 根据行数据创建 FormGroup(含隐藏字段、select 的 label 等附属字段)
|
|
4289
|
+
* @private
|
|
4290
|
+
* @param {?} formLinesDataItem 行数据,空行传 null
|
|
4291
|
+
* @param {?=} isEmptyLine 是否空行(影响必填校验规则,与历史逻辑保持一致)
|
|
4292
|
+
* @param {?=} regenerateRowId 是否强制生成新行 id(复制行时使用)
|
|
4293
|
+
* @return {?}
|
|
4294
|
+
*/
|
|
4295
|
+
HdFormLinesComponent.prototype.createLineFromValues = /**
|
|
4296
|
+
* 根据行数据创建 FormGroup(含隐藏字段、select 的 label 等附属字段)
|
|
4297
|
+
* @private
|
|
4298
|
+
* @param {?} formLinesDataItem 行数据,空行传 null
|
|
4299
|
+
* @param {?=} isEmptyLine 是否空行(影响必填校验规则,与历史逻辑保持一致)
|
|
4300
|
+
* @param {?=} regenerateRowId 是否强制生成新行 id(复制行时使用)
|
|
4301
|
+
* @return {?}
|
|
4302
|
+
*/
|
|
4303
|
+
function (formLinesDataItem, isEmptyLine, regenerateRowId) {
|
|
3762
4304
|
var _this = this;
|
|
4305
|
+
if (isEmptyLine === void 0) { isEmptyLine = false; }
|
|
4306
|
+
if (regenerateRowId === void 0) { regenerateRowId = false; }
|
|
3763
4307
|
/** @type {?} */
|
|
3764
4308
|
var formGroupObj = {};
|
|
3765
4309
|
this.formLines.forEach((/**
|
|
@@ -3767,25 +4311,56 @@
|
|
|
3767
4311
|
* @return {?}
|
|
3768
4312
|
*/
|
|
3769
4313
|
function (item) {
|
|
3770
|
-
// 新增行 初始数据都为null
|
|
3771
4314
|
formGroupObj[item.name] = _this.fb.control({
|
|
3772
|
-
value:
|
|
4315
|
+
value: formLinesDataItem != null
|
|
4316
|
+
? formLinesDataItem[item.name]
|
|
4317
|
+
: item.value,
|
|
3773
4318
|
disabled: item.disabled,
|
|
3774
|
-
}
|
|
4319
|
+
}, isEmptyLine
|
|
4320
|
+
? (item.require && !item.hide ? [forms.Validators.required] : [])
|
|
4321
|
+
: (item.require ? [forms.Validators.required] : []));
|
|
4322
|
+
if (item.selectOption && item.selectOption.label) {
|
|
4323
|
+
formGroupObj[item.selectOption.label] = _this.fb.control(formLinesDataItem != null
|
|
4324
|
+
? (formLinesDataItem[item.selectOption.label] || null)
|
|
4325
|
+
: null, []);
|
|
4326
|
+
}
|
|
3775
4327
|
}));
|
|
3776
|
-
|
|
3777
|
-
|
|
4328
|
+
// 稳定行 id:搜索重建表单后用于保留勾选
|
|
4329
|
+
/** @type {?} */
|
|
4330
|
+
var rowId = !regenerateRowId && formLinesDataItem && formLinesDataItem._hdRowId
|
|
4331
|
+
? formLinesDataItem._hdRowId
|
|
4332
|
+
: this.generateRowId();
|
|
4333
|
+
formGroupObj._hdRowId = this.fb.control(rowId);
|
|
4334
|
+
if (formLinesDataItem && !formLinesDataItem._hdRowId) {
|
|
4335
|
+
formLinesDataItem._hdRowId = rowId;
|
|
4336
|
+
}
|
|
4337
|
+
// 复制源行上多余的字段(隐藏附属字段、selectListName 等)
|
|
4338
|
+
if (formLinesDataItem) {
|
|
4339
|
+
Object.keys(formLinesDataItem).forEach((/**
|
|
4340
|
+
* @param {?} key
|
|
4341
|
+
* @return {?}
|
|
4342
|
+
*/
|
|
4343
|
+
function (key) {
|
|
4344
|
+
if (key === "lineIndex" ||
|
|
4345
|
+
key === "isHdFormLineSearchAdd" ||
|
|
4346
|
+
key === "_hdRowId") {
|
|
4347
|
+
return;
|
|
4348
|
+
}
|
|
4349
|
+
if (!formGroupObj[key]) {
|
|
4350
|
+
formGroupObj[key] = _this.fb.control(formLinesDataItem[key]);
|
|
4351
|
+
}
|
|
4352
|
+
}));
|
|
4353
|
+
}
|
|
4354
|
+
formGroupObj.lineIndex = this.fb.control(this.linesFormArray.controls.length + 1, []);
|
|
3778
4355
|
formGroupObj.isHdFormLineSearchAdd = this.fb.control(this.isFilterData, []);
|
|
3779
4356
|
/** @type {?} */
|
|
3780
4357
|
var formGroupSubmit = this.fb.group(formGroupObj);
|
|
3781
4358
|
this.formLines.forEach((/**
|
|
3782
4359
|
* @param {?} item
|
|
3783
|
-
* @param {?} innerIndex
|
|
3784
4360
|
* @return {?}
|
|
3785
4361
|
*/
|
|
3786
|
-
function (item
|
|
4362
|
+
function (item) {
|
|
3787
4363
|
if (item.onChangeEvent) {
|
|
3788
|
-
// 父组件未配置时默认 500ms 防抖
|
|
3789
4364
|
/** @type {?} */
|
|
3790
4365
|
var debounceMs = item.onChangeEventDebounceTime != null ? item.onChangeEventDebounceTime : 500;
|
|
3791
4366
|
formGroupSubmit
|
|
@@ -3838,58 +4413,12 @@
|
|
|
3838
4413
|
var _this = this;
|
|
3839
4414
|
this.formLinesData.forEach((/**
|
|
3840
4415
|
* @param {?} formLinesDataItem
|
|
3841
|
-
* @param {?} index
|
|
3842
4416
|
* @return {?}
|
|
3843
4417
|
*/
|
|
3844
|
-
function (formLinesDataItem
|
|
3845
|
-
|
|
3846
|
-
var formGroupObj = {};
|
|
3847
|
-
_this.formLines.forEach((/**
|
|
3848
|
-
* @param {?} item
|
|
3849
|
-
* @return {?}
|
|
3850
|
-
*/
|
|
3851
|
-
function (item) {
|
|
3852
|
-
// 新增行 初始数据都为null
|
|
3853
|
-
formGroupObj[item.name] = _this.fb.control({
|
|
3854
|
-
value: _this.judgeValueIsNotEmpty(formLinesDataItem[item.name])
|
|
3855
|
-
? formLinesDataItem[item.name]
|
|
3856
|
-
: item.value || null,
|
|
3857
|
-
disabled: item.disabled,
|
|
3858
|
-
}, item.require ? [forms.Validators.required] : []);
|
|
3859
|
-
if (item.selectOption && item.selectOption.label) {
|
|
3860
|
-
formGroupObj[item.selectOption.label] = _this.fb.control(formLinesDataItem[item.selectOption.label] || null, []);
|
|
3861
|
-
}
|
|
3862
|
-
}));
|
|
3863
|
-
formGroupObj.lineIndex = _this.fb.control(_this.linesFormArray.controls.length + 1, []);
|
|
3864
|
-
/** @type {?} */
|
|
3865
|
-
var formGroupTmp = _this.fb.group(formGroupObj);
|
|
3866
|
-
_this.formLines.forEach((/**
|
|
3867
|
-
* @param {?} item
|
|
3868
|
-
* @param {?} innerIndex
|
|
3869
|
-
* @return {?}
|
|
3870
|
-
*/
|
|
3871
|
-
function (item, innerIndex) {
|
|
3872
|
-
if (item.onChangeEvent) {
|
|
3873
|
-
// 父组件未配置时默认 500ms 防抖
|
|
3874
|
-
/** @type {?} */
|
|
3875
|
-
var debounceMs = item.onChangeEventDebounceTime != null ? item.onChangeEventDebounceTime : 500;
|
|
3876
|
-
formGroupTmp
|
|
3877
|
-
.get(item.name)
|
|
3878
|
-
.valueChanges.pipe(operators.debounceTime(debounceMs))
|
|
3879
|
-
.subscribe((/**
|
|
3880
|
-
* @param {?} value
|
|
3881
|
-
* @return {?}
|
|
3882
|
-
*/
|
|
3883
|
-
function (value) {
|
|
3884
|
-
if (item.type === FormLineType.Select && value !== null) {
|
|
3885
|
-
_this.delayJumpToNextInput();
|
|
3886
|
-
}
|
|
3887
|
-
_this.triggerEvent(item.onChangeEvent, value, formGroupTmp);
|
|
3888
|
-
}));
|
|
3889
|
-
}
|
|
3890
|
-
}));
|
|
3891
|
-
_this.linesFormArray.insert(_this.linesFormArray.controls.length, formGroupTmp);
|
|
4418
|
+
function (formLinesDataItem) {
|
|
4419
|
+
_this.linesFormArray.insert(_this.linesFormArray.controls.length, _this.createLineFromValues(formLinesDataItem));
|
|
3892
4420
|
}));
|
|
4421
|
+
this.calculateLineNumber();
|
|
3893
4422
|
this.tableLoading = false;
|
|
3894
4423
|
this.showForm = true;
|
|
3895
4424
|
};
|
|
@@ -3926,6 +4455,44 @@
|
|
|
3926
4455
|
}
|
|
3927
4456
|
}), 0);
|
|
3928
4457
|
};
|
|
4458
|
+
/**
|
|
4459
|
+
* 复制当前行:在当前行下方新增一行,复制所有字段值(含隐藏字段)
|
|
4460
|
+
* @param index 当前行 lineIndex(从 1 开始)
|
|
4461
|
+
*/
|
|
4462
|
+
/**
|
|
4463
|
+
* 复制当前行:在当前行下方新增一行,复制所有字段值(含隐藏字段)
|
|
4464
|
+
* @param {?} index 当前行 lineIndex(从 1 开始)
|
|
4465
|
+
* @return {?}
|
|
4466
|
+
*/
|
|
4467
|
+
HdFormLinesComponent.prototype.copyFormLine = /**
|
|
4468
|
+
* 复制当前行:在当前行下方新增一行,复制所有字段值(含隐藏字段)
|
|
4469
|
+
* @param {?} index 当前行 lineIndex(从 1 开始)
|
|
4470
|
+
* @return {?}
|
|
4471
|
+
*/
|
|
4472
|
+
function (index) {
|
|
4473
|
+
var _this = this;
|
|
4474
|
+
/** @type {?} */
|
|
4475
|
+
var sourceIndex = index - 1;
|
|
4476
|
+
/** @type {?} */
|
|
4477
|
+
var sourceLine = (/** @type {?} */ (this.linesFormArray.at(sourceIndex)));
|
|
4478
|
+
if (!sourceLine) {
|
|
4479
|
+
return;
|
|
4480
|
+
}
|
|
4481
|
+
// getRawValue 包含 disabled 字段;复制行使用新的 _hdRowId
|
|
4482
|
+
/** @type {?} */
|
|
4483
|
+
var sourceValues = sourceLine.getRawValue();
|
|
4484
|
+
this.linesFormArray.insert(index, this.createLineFromValues(sourceValues, false, true));
|
|
4485
|
+
this.calculateLineNumber();
|
|
4486
|
+
setTimeout((/**
|
|
4487
|
+
* @return {?}
|
|
4488
|
+
*/
|
|
4489
|
+
function () {
|
|
4490
|
+
_this.collectDomData();
|
|
4491
|
+
_this.activeDomX = index;
|
|
4492
|
+
_this.activeDomY = 0;
|
|
4493
|
+
_this.focusDom(_this.activeDomX, _this.activeDomY);
|
|
4494
|
+
}), 0);
|
|
4495
|
+
};
|
|
3929
4496
|
/**
|
|
3930
4497
|
* @param {?} index
|
|
3931
4498
|
* @return {?}
|
|
@@ -3944,7 +4511,10 @@
|
|
|
3944
4511
|
}
|
|
3945
4512
|
return;
|
|
3946
4513
|
}
|
|
4514
|
+
/** @type {?} */
|
|
4515
|
+
var removedLine = (/** @type {?} */ (this.linesFormArray.at(index - 1)));
|
|
3947
4516
|
this.linesFormArray.removeAt(index - 1);
|
|
4517
|
+
this.removeLineFromSelection(removedLine);
|
|
3948
4518
|
if (!this.isFilterData &&
|
|
3949
4519
|
this.linesFormArray.controls &&
|
|
3950
4520
|
this.linesFormArray.controls.length === 0) {
|
|
@@ -4200,6 +4770,7 @@
|
|
|
4200
4770
|
*/
|
|
4201
4771
|
function () {
|
|
4202
4772
|
// 删除
|
|
4773
|
+
this.clearSelection();
|
|
4203
4774
|
for (var i = this.linesFormArray.controls.length; i >= 0; i--) {
|
|
4204
4775
|
this.deleteFormLine(i);
|
|
4205
4776
|
}
|
|
@@ -4303,8 +4874,8 @@
|
|
|
4303
4874
|
HdFormLinesComponent.decorators = [
|
|
4304
4875
|
{ type: core.Component, args: [{
|
|
4305
4876
|
selector: "hd-form-lines",
|
|
4306
|
-
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\n<!-- <hd-button type=\"primary\" (clickAction)=\"focusDom(0, 0)\">\u805A\u7126\u7B2C\u4E00\u4E2A</hd-button> -->\n\n<hd-space *ngIf=\"showForm && showSearch\" background=\"transparent\" type=\"row\" size=\"16\"></hd-space>\n\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 [nzPageSizeOptions]=\"[ 10, 50, 100, 200 ]\">\n <thead>\n <tr>\n <th nzWidth=\"58px\" nzLeft=\"0px\" *ngIf=\"showLineNumber\">\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\" *ngIf=\"showLineNumber\">\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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\">\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 (focusin)=\"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 (nzOpenChange)=\"onOpenChangeEvent(formItem.onOpenChangeEvent || null, $event, line, formItem.onOpenChangeEventDebounceTime)\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\"\n [ngStyle]=\"getStyle(line, formItem, '200px')\">\n <div class=\"hd-select-empty\"\n *ngIf=\"!(formItem.selectOption?.selectList?.length > 0 || line.get(formItem.selectOption.selectListName)?.value?.length > 0)\">\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\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]=\"getSelectTableColumnStyle(selectOptionTableColumn)\">\n <ng-container *ngIf=\"selectOptionTableColumn.icons;else notPictureTemplate\">\n <div class=\"hd-option-icons\">\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 <span *ngIf=\"icon.iconName === 'hd-select-close' && selectItem[icon.fieldName]\"\n class=\"hd-select-close\">\n \u7981\u7528\n </span>\n <span *ngIf=\"icon.iconName === 'hd-select-purchase' && selectItem[icon.fieldName]\"\n class=\"hd-select-purchase\">\n \u534F\n </span>\n </ng-container>\n </div>\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>{{\n judgeColEmpty(selectOptionTableColumn.render ?\n selectOptionTableColumn.render(selectItem) :\n selectItem[selectOptionTableColumn.name])\n }}\n </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])\n }}\n </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 (focusin)=\"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 (nzOpenChange)=\"onOpenChangeEvent(formItem.onOpenChangeEvent || null, $event, line, formItem.onOpenChangeEventDebounceTime)\"\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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\" *ngIf=\"formItem.showTime\"\n [ngStyle]=\"getStyle(line, formItem, '150px')\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzShowToday]=\"formItem.hdShowToday !== false\" 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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzShowToday]=\"formItem.hdShowToday !== false\">\n </nz-date-picker>\n <div *ngIf=\"formItem?.explainOptionRight?.show\"\n [style.color]=\"formItem?.explainOptionRight?.color ? formItem.explainOptionRight.color : null\">\n {{ line.get(formItem.explainOptionRight.name).value }}\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'DateRange'\">\n <nz-range-picker #formInputDom [ngStyle]=\"getStyle(line, formItem, '200px')\"\n (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [nzDisabledDate]=\"formItem.hdDisabledDate\" [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 (focusin)=\"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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\">\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 != null ? 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 {{ line.get(formItem.explainOptionRight.name).value }}\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'MultipleSelect'\">\n <nz-select #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\" nzMode=\"multiple\"\n [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 (nzOpenChange)=\"onOpenChangeEvent(formItem.onOpenChangeEvent || null, $event, line, formItem.onOpenChangeEventDebounceTime)\"\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 <span *ngIf=\"!formItem?.hideViewDomValue\">\n {{\n (formItem.preserveNumber && line.get(formItem.name).value) ?\n LodashRound(line.get(formItem.name).value,\n formItem.preserveNumber).toFixed(formItem.preserveNumber)\n : line.get(formItem.name).value\n }}\n </span>\n <ng-container\n *ngTemplateOutlet=\"ViewDomRightTemplate;context:{formItem: formItem, formLine: line}\"></ng-container>\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 (focusin)=\"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 }}\n </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'\">{{\n (totalOption.value || totalOption.value ===\n 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal) ? totalOption.value :\n LodashRound(totalOption.value, 2).toFixed(2)) : ''\n }}\n </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 <div class=\"hd-formLines-pagination\">\n <div class=\"hd-formLines-pagination-left\">\n <div *ngIf=\"showKeyboardOperateTip\">\u652F\u6301\u952E\u76D8\u64CD\u4F5C\uFF0C\u4F7F\u7528\n <i nz-icon nzType=\"up-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <i nz-icon nzType=\"down-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <i nz-icon nzType=\"left-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <i nz-icon nzType=\"right-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <span style=\"font-size: 14px;margin-left: 4px;font-weight: bolder;\">Enter</span>\n \u952E\u5207\u6362\u8868\u5355\u9879\n </div>\n </div>\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 </div>\n\n </ng-container>\n</form>\n",
|
|
4307
|
-
styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}: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-time-picker{width:100%}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.hd-formLines-container ::ng-deep td{padding:4px 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 ::ng-deep .ant-form-item{margin-bottom:0}.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}::ng-deep .hd-option-header{display:flex;align-items:center;color:rgba(0,0,0,.85);background:#f5f8f6}::ng-deep .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}.hd-formLines-pagination{display:flex;align-items:center;justify-content:space-between}.hd-formLines-pagination .hd-formLines-pagination-left{margin-left:10px;display:flex;align-items:center}.hd-option-icons{display:flex;align-items:center}.hd-select-close{display:block;height:16px;line-height:14px;text-align:center;padding:0 4px;border:1px solid #f5222d;color:#f5222d;font-size:14px}.hd-select-purchase{display:block;height:16px;line-height:14px;text-align:center;padding:0 4px;border:1px solid #20bd62;color:#20bd62;font-size:14px}"]
|
|
4877
|
+
template: "<ng-container *ngIf=\"showForm && showToolbar\">\n <hd-button-group class=\"hd-formLines-toolbar\">\n <ng-template #buttonGroupLeft>\n <!-- \u6709\u5168\u5C40\u641C\u7D22\uFF1A\u5DE6\u4FA7\u653E\u641C\u7D22\u6846 -->\n <ng-container *ngIf=\"showSearch\">\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-container>\n <!-- \u65E0\u5168\u5C40\u641C\u7D22\uFF1A\u5DE6\u4FA7\u653E\u81EA\u5B9A\u4E49\u6309\u94AE -->\n <ng-container *ngIf=\"!showSearch\">\n <ng-container *ngTemplateOutlet=\"formLinesLeftButton\"></ng-container>\n </ng-container>\n </ng-template>\n <ng-template #buttonGroupRight>\n <!-- \u6709\u5168\u5C40\u641C\u7D22\uFF1A\u53F3\u4FA7\u8303\u56F4\u518D\u5DE6\u53F3\u5206\u5F00 -->\n <div class=\"hd-formLines-toolbar-right\" *ngIf=\"showSearch\">\n <div class=\"hd-formLines-toolbar-right-left\">\n <ng-container *ngTemplateOutlet=\"formLinesLeftButton\"></ng-container>\n </div>\n <div class=\"hd-formLines-toolbar-right-right\">\n <ng-container *ngTemplateOutlet=\"formLinesRightButton\"></ng-container>\n </div>\n </div>\n <!-- \u65E0\u5168\u5C40\u641C\u7D22\uFF1A\u53F3\u4FA7\u53EA\u653E\u81EA\u5B9A\u4E49\u53F3\u4FA7\u6309\u94AE -->\n <ng-container *ngIf=\"!showSearch\">\n <ng-container *ngTemplateOutlet=\"formLinesRightButton\"></ng-container>\n </ng-container>\n </ng-template>\n </hd-button-group>\n <hd-space background=\"transparent\" type=\"row\" size=\"12\"></hd-space>\n</ng-container>\n\n<!-- \u52FE\u9009\u63D0\u793A\uFF1A\u5355\u72EC\u4E00\u884C\uFF0C\u653E\u5728\u8868\u5355\u4E0A\u65B9 -->\n<ng-container *ngIf=\"showForm && showCheckbox && getSelectedCount() > 0\">\n <nz-alert nzType=\"info\" [nzMessage]=\"selectionAlertTemplate\" nzShowIcon></nz-alert>\n <hd-space background=\"transparent\" type=\"row\" size=\"12\"></hd-space>\n</ng-container>\n<ng-template #selectionAlertTemplate>\n <span>\u5DF2\u9009\u62E9{{ getSelectedCount() }}\u6761\u6570\u636E</span> \n <span class=\"common-btn-group\">\n <a (click)=\"clearSelection()\">\u6E05\u7A7A</a>\n </span>\n</ng-template>\n\n<!-- <hd-button type=\"primary\" (clickAction)=\"focusDom(0, 0)\">\u805A\u7126\u7B2C\u4E00\u4E2A</hd-button> -->\n\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 [nzPageSizeOptions]=\"[ 10, 50, 100, 200 ]\">\n <thead>\n <tr>\n <th nzWidth=\"40px\" nzLeft=\"0px\" *ngIf=\"showCheckbox\">\n <label nz-checkbox\n [ngModel]=\"isAllChecked()\"\n [nzIndeterminate]=\"isIndeterminate()\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onAllChecked($event)\"></label>\n </th>\n <th nzWidth=\"58px\" [nzLeft]=\"lineNumberLeft\" *ngIf=\"showLineNumber\">\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.px]=\"operateColWidth\" 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=\"40px\" nzLeft=\"0px\" *ngIf=\"showCheckbox\">\n <label nz-checkbox\n [ngModel]=\"isLineChecked(line)\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onLineCheckedChange(line, $event)\"></label>\n </td>\n <td nzWidth=\"58px\" [nzLeft]=\"lineNumberLeft\" *ngIf=\"showLineNumber\">\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\n [nzValidateStatus]=\"getControlValidateStatus(line, formItem)\"\n [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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\">\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 (input)=\"limitInputLength($event, line, formItem)\"\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 (focusin)=\"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 (nzOpenChange)=\"onOpenChangeEvent(formItem.onOpenChangeEvent || null, $event, line, formItem.onOpenChangeEventDebounceTime)\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, line, formItem.onSearchEventEventDebounceTime)\"\n [ngStyle]=\"getStyle(line, formItem, '200px')\">\n <div class=\"hd-select-empty\"\n *ngIf=\"!(formItem.selectOption?.selectList?.length > 0 || line.get(formItem.selectOption.selectListName)?.value?.length > 0)\">\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\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]=\"getSelectTableColumnStyle(selectOptionTableColumn)\">\n <ng-container *ngIf=\"selectOptionTableColumn.icons;else notPictureTemplate\">\n <div class=\"hd-option-icons\">\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 <span *ngIf=\"icon.iconName === 'hd-select-close' && selectItem[icon.fieldName]\"\n class=\"hd-select-close\">\n \u7981\u7528\n </span>\n <span *ngIf=\"icon.iconName === 'hd-select-purchase' && selectItem[icon.fieldName]\"\n class=\"hd-select-purchase\">\n \u534F\n </span>\n </ng-container>\n </div>\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>{{\n judgeColEmpty(selectOptionTableColumn.render ?\n selectOptionTableColumn.render(selectItem) :\n selectItem[selectOptionTableColumn.name])\n }}\n </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])\n }}\n </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 (focusin)=\"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 (nzOpenChange)=\"onOpenChangeEvent(formItem.onOpenChangeEvent || null, $event, line, formItem.onOpenChangeEventDebounceTime)\"\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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\" *ngIf=\"formItem.showTime\"\n [ngStyle]=\"getStyle(line, formItem, '150px')\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzShowToday]=\"formItem.hdShowToday !== false\" 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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzShowToday]=\"formItem.hdShowToday !== false\">\n </nz-date-picker>\n <div *ngIf=\"formItem?.explainOptionRight?.show\"\n [style.color]=\"formItem?.explainOptionRight?.color ? formItem.explainOptionRight.color : null\">\n {{ line.get(formItem.explainOptionRight.name).value }}\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'DateRange'\">\n <nz-range-picker #formInputDom [ngStyle]=\"getStyle(line, formItem, '200px')\"\n (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n [nzDisabledDate]=\"formItem.hdDisabledDate\" [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 (focusin)=\"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 (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\">\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 != null ? 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 {{ line.get(formItem.explainOptionRight.name).value }}\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'MultipleSelect'\">\n <nz-select #formInputDom (click)=\"setActiveDomInFormLines(dataIndex , innerIndex)\"\n (focusin)=\"setActiveDomInFormLines(dataIndex , innerIndex)\" nzMode=\"multiple\"\n [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 (nzOpenChange)=\"onOpenChangeEvent(formItem.onOpenChangeEvent || null, $event, line, formItem.onOpenChangeEventDebounceTime)\"\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 <span *ngIf=\"!formItem?.hideViewDomValue\">\n {{\n (formItem.preserveNumber && line.get(formItem.name).value) ?\n LodashRound(line.get(formItem.name).value,\n formItem.preserveNumber).toFixed(formItem.preserveNumber)\n : line.get(formItem.name).value\n }}\n </span>\n <ng-container\n *ngTemplateOutlet=\"ViewDomRightTemplate;context:{formItem: formItem, formLine: line}\"></ng-container>\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 (focusin)=\"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 }}\n </div>\n </td>\n </ng-container>\n <td [style.width.px]=\"operateColWidth\" 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 *ngIf=\"operateButtons.includes('copy')\" (click)=\"copyFormLine(line.get('lineIndex').value)\">\u590D\u5236</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 *ngIf=\"showCheckbox\"></td>\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let totalOption of totalOptionList\">\n <td [nzAlign]=\"totalOption.align ? totalOption.align : 'left'\">{{\n (totalOption.value || totalOption.value ===\n 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal) ? totalOption.value :\n LodashRound(totalOption.value, 2).toFixed(2)) : ''\n }}\n </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 <div class=\"hd-formLines-pagination\">\n <div class=\"hd-formLines-pagination-left\">\n <div *ngIf=\"showKeyboardOperateTip\">\u652F\u6301\u952E\u76D8\u64CD\u4F5C\uFF0C\u4F7F\u7528\n <i nz-icon nzType=\"up-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <i nz-icon nzType=\"down-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <i nz-icon nzType=\"left-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <i nz-icon nzType=\"right-circle\" nzTheme=\"outline\" style=\"font-size: 16px;margin-left: 4px;\"></i>\n <span style=\"font-size: 14px;margin-left: 4px;font-weight: bolder;\">Enter</span>\n \u952E\u5207\u6362\u8868\u5355\u9879\n </div>\n </div>\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 </div>\n\n </ng-container>\n</form>\n",
|
|
4878
|
+
styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}: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-time-picker{width:100%}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.hd-formLines-toolbar{display:block}.hd-formLines-toolbar ::ng-deep .hd-button-group-right{flex:1;min-width:0;display:flex;justify-content:flex-end}.hd-formLines-toolbar-right{display:flex;align-items:center;justify-content:space-between;width:100%;margin-left:16px}.hd-formLines-toolbar-right-left,.hd-formLines-toolbar-right-right{display:flex;align-items:center}.hd-formLines-container ::ng-deep td{padding:4px 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 ::ng-deep .ant-form-item{margin-bottom:0}.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}::ng-deep .hd-option-header{display:flex;align-items:center;color:rgba(0,0,0,.85);background:#f5f8f6}::ng-deep .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}.hd-formLines-pagination{display:flex;align-items:center;justify-content:space-between}.hd-formLines-pagination .hd-formLines-pagination-left{margin-left:10px;display:flex;align-items:center}.hd-option-icons{display:flex;align-items:center}.hd-select-close{display:block;height:16px;line-height:14px;text-align:center;padding:0 4px;border:1px solid #f5222d;color:#f5222d;font-size:14px}.hd-select-purchase{display:block;height:16px;line-height:14px;text-align:center;padding:0 4px;border:1px solid #20bd62;color:#20bd62;font-size:14px}"]
|
|
4308
4879
|
}] }
|
|
4309
4880
|
];
|
|
4310
4881
|
/** @nocollapse */
|
|
@@ -4320,16 +4891,20 @@
|
|
|
4320
4891
|
showKeyboardOperateTip: [{ type: core.Input }],
|
|
4321
4892
|
tableLoading: [{ type: core.Input }],
|
|
4322
4893
|
showSearch: [{ type: core.Input }],
|
|
4894
|
+
showCheckbox: [{ type: core.Input }],
|
|
4323
4895
|
formLines: [{ type: core.Input }],
|
|
4324
4896
|
formLinesData: [{ type: core.Input }],
|
|
4325
4897
|
operateButtons: [{ type: core.Input }],
|
|
4326
4898
|
scroll: [{ type: core.Input }],
|
|
4327
4899
|
changeEvent: [{ type: core.Output }],
|
|
4900
|
+
selectionChange: [{ type: core.Output }],
|
|
4328
4901
|
showDeleteConfirm: [{ type: core.Input }],
|
|
4329
4902
|
showTotal: [{ type: core.Input }],
|
|
4330
4903
|
totalOption: [{ type: core.Input }],
|
|
4331
4904
|
columnsNumber: [{ type: core.Input }],
|
|
4332
4905
|
ViewDomRightTemplate: [{ type: core.ContentChild, args: ["ViewDomRightTemplate", { static: false },] }],
|
|
4906
|
+
formLinesLeftButton: [{ type: core.ContentChild, args: ["formLinesLeftButton", { static: false },] }],
|
|
4907
|
+
formLinesRightButton: [{ type: core.ContentChild, args: ["formLinesRightButton", { static: false },] }],
|
|
4333
4908
|
deleteLineEvent: [{ type: core.Output }]
|
|
4334
4909
|
};
|
|
4335
4910
|
__decorate([
|
|
@@ -4352,6 +4927,10 @@
|
|
|
4352
4927
|
ngZorroAntd.InputBoolean(),
|
|
4353
4928
|
__metadata("design:type", Boolean)
|
|
4354
4929
|
], HdFormLinesComponent.prototype, "showSearch", void 0);
|
|
4930
|
+
__decorate([
|
|
4931
|
+
ngZorroAntd.InputBoolean(),
|
|
4932
|
+
__metadata("design:type", Boolean)
|
|
4933
|
+
], HdFormLinesComponent.prototype, "showCheckbox", void 0);
|
|
4355
4934
|
__decorate([
|
|
4356
4935
|
ngZorroAntd.InputBoolean(),
|
|
4357
4936
|
__metadata("design:type", Boolean)
|
|
@@ -4377,6 +4956,11 @@
|
|
|
4377
4956
|
HdFormLinesComponent.prototype.tableLoading;
|
|
4378
4957
|
/** @type {?} */
|
|
4379
4958
|
HdFormLinesComponent.prototype.showSearch;
|
|
4959
|
+
/**
|
|
4960
|
+
* 是否展示行勾选列,用于外部批量操作勾选行
|
|
4961
|
+
* @type {?}
|
|
4962
|
+
*/
|
|
4963
|
+
HdFormLinesComponent.prototype.showCheckbox;
|
|
4380
4964
|
/** @type {?} */
|
|
4381
4965
|
HdFormLinesComponent.prototype.formLines;
|
|
4382
4966
|
/** @type {?} */
|
|
@@ -4387,6 +4971,11 @@
|
|
|
4387
4971
|
HdFormLinesComponent.prototype.scroll;
|
|
4388
4972
|
/** @type {?} */
|
|
4389
4973
|
HdFormLinesComponent.prototype.changeEvent;
|
|
4974
|
+
/**
|
|
4975
|
+
* 勾选变化时抛出当前勾选行 FormGroup 列表
|
|
4976
|
+
* @type {?}
|
|
4977
|
+
*/
|
|
4978
|
+
HdFormLinesComponent.prototype.selectionChange;
|
|
4390
4979
|
/** @type {?} */
|
|
4391
4980
|
HdFormLinesComponent.prototype.showDeleteConfirm;
|
|
4392
4981
|
/** @type {?} */
|
|
@@ -4421,6 +5010,12 @@
|
|
|
4421
5010
|
HdFormLinesComponent.prototype.isFilterData;
|
|
4422
5011
|
/** @type {?} */
|
|
4423
5012
|
HdFormLinesComponent.prototype.formValid;
|
|
5013
|
+
/**
|
|
5014
|
+
* 勾选的行 id(跨页、搜索重建后仍保留)
|
|
5015
|
+
* @type {?}
|
|
5016
|
+
* @private
|
|
5017
|
+
*/
|
|
5018
|
+
HdFormLinesComponent.prototype.selectedRowIds;
|
|
4424
5019
|
/**
|
|
4425
5020
|
* @type {?}
|
|
4426
5021
|
* @private
|
|
@@ -4468,6 +5063,16 @@
|
|
|
4468
5063
|
HdFormLinesComponent.prototype.activeSelectedComponentOpen;
|
|
4469
5064
|
/** @type {?} */
|
|
4470
5065
|
HdFormLinesComponent.prototype.ViewDomRightTemplate;
|
|
5066
|
+
/**
|
|
5067
|
+
* 工具栏左侧自定义按钮,用法同 hd-table 的 tableLeftButton
|
|
5068
|
+
* @type {?}
|
|
5069
|
+
*/
|
|
5070
|
+
HdFormLinesComponent.prototype.formLinesLeftButton;
|
|
5071
|
+
/**
|
|
5072
|
+
* 工具栏右侧自定义按钮,用法同 hd-table 的 tableRightButton
|
|
5073
|
+
* @type {?}
|
|
5074
|
+
*/
|
|
5075
|
+
HdFormLinesComponent.prototype.formLinesRightButton;
|
|
4471
5076
|
/** @type {?} */
|
|
4472
5077
|
HdFormLinesComponent.prototype.deleteLineEvent;
|
|
4473
5078
|
/**
|
|
@@ -7373,12 +7978,112 @@
|
|
|
7373
7978
|
return HdTipModule;
|
|
7374
7979
|
}());
|
|
7375
7980
|
|
|
7981
|
+
/**
|
|
7982
|
+
* @fileoverview added by tsickle
|
|
7983
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
7984
|
+
*/
|
|
7985
|
+
/**
|
|
7986
|
+
* 全局清理 ng-zorro tooltip 残留 overlay。
|
|
7987
|
+
* 典型场景:hover 出 tooltip 后立刻点击跳转/打开详情,CDK overlay 未销毁,飘到下一页。
|
|
7988
|
+
*
|
|
7989
|
+
* 引入 FantasyNgzorroModule 后自动生效,也可手动注入调用 clearStuckTooltips()。
|
|
7990
|
+
*/
|
|
7991
|
+
var HdOverlayCleanupService = /** @class */ (function () {
|
|
7992
|
+
function HdOverlayCleanupService(router) {
|
|
7993
|
+
this.router = router;
|
|
7994
|
+
this.started = false;
|
|
7995
|
+
this.start();
|
|
7996
|
+
}
|
|
7997
|
+
/** 启动全局监听(幂等) */
|
|
7998
|
+
/**
|
|
7999
|
+
* 启动全局监听(幂等)
|
|
8000
|
+
* @return {?}
|
|
8001
|
+
*/
|
|
8002
|
+
HdOverlayCleanupService.prototype.start = /**
|
|
8003
|
+
* 启动全局监听(幂等)
|
|
8004
|
+
* @return {?}
|
|
8005
|
+
*/
|
|
8006
|
+
function () {
|
|
8007
|
+
var _this = this;
|
|
8008
|
+
if (this.started || typeof document === "undefined") {
|
|
8009
|
+
return;
|
|
8010
|
+
}
|
|
8011
|
+
this.started = true;
|
|
8012
|
+
// 任意按下即清:覆盖跳路由、开抽屉/弹窗等不走 Navigation 的场景
|
|
8013
|
+
document.addEventListener("mousedown", (/**
|
|
8014
|
+
* @return {?}
|
|
8015
|
+
*/
|
|
8016
|
+
function () { return _this.clearStuckTooltips(); }), true);
|
|
8017
|
+
if (this.router) {
|
|
8018
|
+
this.router.events
|
|
8019
|
+
.pipe(operators.filter((/**
|
|
8020
|
+
* @param {?} e
|
|
8021
|
+
* @return {?}
|
|
8022
|
+
*/
|
|
8023
|
+
function (e) { return e instanceof router.NavigationStart; })))
|
|
8024
|
+
.subscribe((/**
|
|
8025
|
+
* @return {?}
|
|
8026
|
+
*/
|
|
8027
|
+
function () { return _this.clearStuckTooltips(); }));
|
|
8028
|
+
}
|
|
8029
|
+
};
|
|
8030
|
+
/** 清理残留在 body 上的 ant-tooltip overlay */
|
|
8031
|
+
/**
|
|
8032
|
+
* 清理残留在 body 上的 ant-tooltip overlay
|
|
8033
|
+
* @return {?}
|
|
8034
|
+
*/
|
|
8035
|
+
HdOverlayCleanupService.prototype.clearStuckTooltips = /**
|
|
8036
|
+
* 清理残留在 body 上的 ant-tooltip overlay
|
|
8037
|
+
* @return {?}
|
|
8038
|
+
*/
|
|
8039
|
+
function () {
|
|
8040
|
+
if (typeof document === "undefined") {
|
|
8041
|
+
return;
|
|
8042
|
+
}
|
|
8043
|
+
/** @type {?} */
|
|
8044
|
+
var tooltips = document.querySelectorAll(".cdk-overlay-container .ant-tooltip");
|
|
8045
|
+
tooltips.forEach((/**
|
|
8046
|
+
* @param {?} el
|
|
8047
|
+
* @return {?}
|
|
8048
|
+
*/
|
|
8049
|
+
function (el) {
|
|
8050
|
+
/** @type {?} */
|
|
8051
|
+
var pane = (/** @type {?} */ (el.closest(".cdk-overlay-pane")));
|
|
8052
|
+
if (pane && pane.parentNode) {
|
|
8053
|
+
pane.parentNode.removeChild(pane);
|
|
8054
|
+
}
|
|
8055
|
+
}));
|
|
8056
|
+
};
|
|
8057
|
+
HdOverlayCleanupService.decorators = [
|
|
8058
|
+
{ type: core.Injectable, args: [{ providedIn: "root" },] }
|
|
8059
|
+
];
|
|
8060
|
+
/** @nocollapse */
|
|
8061
|
+
HdOverlayCleanupService.ctorParameters = function () { return [
|
|
8062
|
+
{ type: router.Router, decorators: [{ type: core.Optional }] }
|
|
8063
|
+
]; };
|
|
8064
|
+
/** @nocollapse */ HdOverlayCleanupService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function HdOverlayCleanupService_Factory() { return new HdOverlayCleanupService(core.ɵɵinject(router.Router, 8)); }, token: HdOverlayCleanupService, providedIn: "root" });
|
|
8065
|
+
return HdOverlayCleanupService;
|
|
8066
|
+
}());
|
|
8067
|
+
if (false) {
|
|
8068
|
+
/**
|
|
8069
|
+
* @type {?}
|
|
8070
|
+
* @private
|
|
8071
|
+
*/
|
|
8072
|
+
HdOverlayCleanupService.prototype.started;
|
|
8073
|
+
/**
|
|
8074
|
+
* @type {?}
|
|
8075
|
+
* @private
|
|
8076
|
+
*/
|
|
8077
|
+
HdOverlayCleanupService.prototype.router;
|
|
8078
|
+
}
|
|
8079
|
+
|
|
7376
8080
|
/**
|
|
7377
8081
|
* @fileoverview added by tsickle
|
|
7378
8082
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
7379
8083
|
*/
|
|
7380
8084
|
var HdComponentModule = /** @class */ (function () {
|
|
7381
|
-
|
|
8085
|
+
// 单独引入 HdComponentModule 时也启动全局 tooltip 清理
|
|
8086
|
+
function HdComponentModule(_overlayCleanup) {
|
|
7382
8087
|
}
|
|
7383
8088
|
HdComponentModule.decorators = [
|
|
7384
8089
|
{ type: core.NgModule, args: [{
|
|
@@ -7402,6 +8107,10 @@
|
|
|
7402
8107
|
]
|
|
7403
8108
|
},] }
|
|
7404
8109
|
];
|
|
8110
|
+
/** @nocollapse */
|
|
8111
|
+
HdComponentModule.ctorParameters = function () { return [
|
|
8112
|
+
{ type: HdOverlayCleanupService }
|
|
8113
|
+
]; };
|
|
7405
8114
|
return HdComponentModule;
|
|
7406
8115
|
}());
|
|
7407
8116
|
|
|
@@ -7410,7 +8119,8 @@
|
|
|
7410
8119
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
7411
8120
|
*/
|
|
7412
8121
|
var FantasyNgzorroModule = /** @class */ (function () {
|
|
7413
|
-
|
|
8122
|
+
// 注入以启动全局 tooltip overlay 清理(providedIn: root,幂等)
|
|
8123
|
+
function FantasyNgzorroModule(_overlayCleanup) {
|
|
7414
8124
|
}
|
|
7415
8125
|
FantasyNgzorroModule.decorators = [
|
|
7416
8126
|
{ type: core.NgModule, args: [{
|
|
@@ -7420,6 +8130,10 @@
|
|
|
7420
8130
|
entryComponents: [HdLogComponent]
|
|
7421
8131
|
},] }
|
|
7422
8132
|
];
|
|
8133
|
+
/** @nocollapse */
|
|
8134
|
+
FantasyNgzorroModule.ctorParameters = function () { return [
|
|
8135
|
+
{ type: HdOverlayCleanupService }
|
|
8136
|
+
]; };
|
|
7423
8137
|
return FantasyNgzorroModule;
|
|
7424
8138
|
}());
|
|
7425
8139
|
|
|
@@ -7932,6 +8646,7 @@
|
|
|
7932
8646
|
exports.HdLogComponent = HdLogComponent;
|
|
7933
8647
|
exports.HdLogService = HdLogService;
|
|
7934
8648
|
exports.HdOption = HdOption;
|
|
8649
|
+
exports.HdOverlayCleanupService = HdOverlayCleanupService;
|
|
7935
8650
|
exports.HdTableColumn = HdTableColumn;
|
|
7936
8651
|
exports.HdTableTotalOption = HdTableTotalOption;
|
|
7937
8652
|
exports.InputNumber = InputNumber;
|