fantasy-ngzorro 1.3.40 → 1.3.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"fantasy-ngzorro.js","sources":["ng://fantasy-ngzorro/hd-button-group/hd-button-group.component.ts","ng://fantasy-ngzorro/hd-button-group/hd-button-group.module.ts","ng://fantasy-ngzorro/hd-button/hd-button.service.ts","ng://fantasy-ngzorro/hd-button/hd-button.component.ts","ng://fantasy-ngzorro/hd-button/hd-button.module.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.component.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.module.ts","ng://fantasy-ngzorro/model/common-type.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.component.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.module.ts","ng://fantasy-ngzorro/hd-status/hd-status.service.ts","ng://fantasy-ngzorro/hd-detail-tip/hd-detail-tip.component.ts","ng://fantasy-ngzorro/hd-detail-tip/hd-detail-tip.module.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.component.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.module.ts","ng://fantasy-ngzorro/hd-space/hd-space.service.ts","ng://fantasy-ngzorro/hd-space/hd-space.component.ts","ng://fantasy-ngzorro/hd-space/hd-space.module.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.service.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.component.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.module.ts","ng://fantasy-ngzorro/hd-form/hd-form.component.ts","ng://fantasy-ngzorro/hd-form/hd-form.module.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.component.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.module.ts","ng://fantasy-ngzorro/hd-log/hd-log.component.ts","ng://fantasy-ngzorro/hd-log/hd-log.service.ts","ng://fantasy-ngzorro/hd-log/hd-log.module.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.component.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.module.ts","ng://fantasy-ngzorro/hd-status/hd-status.component.ts","ng://fantasy-ngzorro/hd-status/hd-status.module.ts","ng://fantasy-ngzorro/service/common-session.service.ts","ng://fantasy-ngzorro/model/colWidth.ts","ng://fantasy-ngzorro/hd-table/hd-table.service.ts","ng://fantasy-ngzorro/hd-table/hd-table.component.ts","ng://fantasy-ngzorro/hd-table/hd-table.module.ts","ng://fantasy-ngzorro/hd-tip/hd-tip.component.ts","ng://fantasy-ngzorro/hd-tip/hd-tip.module.ts","ng://fantasy-ngzorro/hd-component.module.ts","ng://fantasy-ngzorro/fantasy-ngzorro.module.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.service.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.service.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.service.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.service.ts","ng://fantasy-ngzorro/hd-form/hd-form.service.ts","ng://fantasy-ngzorro/model/staticConst.ts","ng://fantasy-ngzorro/utils.ts"],"sourcesContent":["import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'hd-button-group',\n templateUrl: './hd-button-group.component.html',\n styleUrls: ['./hd-button-group.component.less']\n})\nexport class HdButtonGroupComponent implements OnInit {\n @ContentChild(\"buttonGroupLeft\", { static: false }) buttonGroupLeft: TemplateRef<any>;\n @ContentChild(\"buttonGroupRight\", { static: false }) buttonGroupRight: TemplateRef<any>;\n\n constructor() { }\n\n ngOnInit() {\n\n }\n}\n","import { HdButtonGroupComponent } from './hd-button-group.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdButtonGroupComponent],\n exports: [HdButtonGroupComponent]\n})\nexport class HdButtonGroupModule { }\n","import { Injectable } from '@angular/core';\n\nexport enum ButtonType {\n primary = 'primary',\n dashed = 'dashed',\n danger = 'danger',\n default = 'default',\n link = 'link',\n submit = 'submit',\n // 增加类型\n reset = 'reset',\n add = 'add'\n}\n\nexport enum ButtonSize {\n normal = 'normal',\n small = 'small'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdButtonService {\n\n constructor() { }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChange } from '@angular/core';\nimport { InputBoolean } from 'ng-zorro-antd';\nimport { ButtonSize, ButtonType } from './hd-button.service';\n@Component({\n selector: 'hd-button',\n templateUrl: './hd-button.component.html',\n styleUrls: ['./hd-button.component.less']\n})\nexport class HdButtonComponent implements OnInit {\n\n // 默认default\n @Input() type: ButtonType = ButtonType.default;\n @Input() size: ButtonSize = ButtonSize.normal;\n @Input() @InputBoolean() loading: boolean;\n @Input() @InputBoolean() disabled: boolean = false;\n @Output() clickAction = new EventEmitter<any>();\n @Output() nzOnConfirm = new EventEmitter<any>();\n constructor() { }\n\n ngOnInit() {\n if ((this.loading === false || this.loading === true) && this.clickAction.observers.length === 0 && this.nzOnConfirm.observers.length === 0) {\n throw '存在loading效果的hd-button组件禁止使用click绑定点击事件,请使用clickAction绑定!';\n }\n if (this.type === 'submit') {\n throw '禁止使用submit类型的按钮,请使用普通按钮+click事件触发表单提交!';\n }\n }\n\n ngOnChanges(changes: SimpleChange) {\n if (changes && changes['loading']) {\n if ((changes['loading']['currentValue'] === true && changes['loading']['previousValue'] === false)\n || (changes['loading']['currentValue'] === false && changes['loading']['previousValue'] === true)) {\n this.disabled = !this.disabled;\n }\n }\n }\n\n innerClickAction(option: any) {\n // loading 状态下,不允许触发点击事件\n if (this.loading) {\n return;\n }\n this.clickAction.emit(option);\n }\n}\n","import { HdButtonComponent } from './hd-button.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdButtonComponent],\n exports: [HdButtonComponent]\n})\nexport class HdButtonModule { }\n","import { Component, Input, OnInit, SimpleChange } from '@angular/core';\nimport { HdOption } from '../model/common-type';\n\n@Component({\n selector: 'hd-detail-form',\n templateUrl: './hd-detail-form.component.html',\n styleUrls: ['./hd-detail-form.component.less']\n})\nexport class HdDetailFormComponent implements OnInit {\n @Input() formCols: Array<HdOption> = new Array();\n\n constructor() { }\n\n ngOnInit() {\n if (this.formCols && this.formCols.length > 0) {\n // 剔除掉formCols里面不需要显示的内容\n this.formCols = this.formCols.filter(item => !item.hide);\n }\n }\n\n ngOnChanges(changes: SimpleChange) {\n if (changes['formCols'] && JSON.stringify(changes['formCols'].currentValue) !== JSON.stringify(changes['formCols'].previousValue)) {\n if (this.formCols && this.formCols.length > 0) {\n // 剔除掉formCols里面不需要显示的内容\n this.formCols = this.formCols.filter(item => !item.hide);\n }\n }\n }\n\n triggerEvent(fn: any) {\n if (fn) {\n fn(event);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdDetailFormComponent } from './hd-detail-form.component';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n NgZorroAntdModule\n ],\n exports: [HdDetailFormComponent],\n declarations: [HdDetailFormComponent]\n})\nexport class HdDetailFormModule { }\n","export class Page<T> {\n totalPages = 0;\n totalElements = 0;\n pageNumber = 0;\n pageSize = 10;\n hasContent = false;\n hasNext = false;\n content: Array<T> = [];\n}\n\nexport class HdOption {\n label: string;\n value: any;\n color?: string;\n hide?: boolean;\n click?: (value: any) => void;\n}\n\nexport class SelectOption {\n label: string;\n value: string;\n selectList?: Array<any>;\n selectListName?: string;\n showLabelAndValue?: boolean = false;\n hdDropdownMatchSelectWidth?: boolean = false;\n hdServerSearch?: boolean = false;\n hdShowItemCode?: boolean = false; // 是否用[value]label显示选项列表\n tableColumns?: Array<SelectOptionTableColumn>;\n hdShowSearch?: boolean = true;\n hdAllowClear?: boolean = true;\n}\n\nexport class SelectOptionTableColumn {\n width: number;\n label: string; // 这里对应的是列名\n name: string; // 对应selectList里面的name值, 如果有render字段 则去render函数渲染\n icons?: Array<SelectOptionTableColumnIcon>; // 对应的图片名字\n render?: (value: any) => string;\n}\n\nexport class SelectOptionTableColumnIcon {\n iconName: string;\n fieldName: string;\n}\n\nexport class InputNumber {\n min?: number = 0;\n max?: number = 99999999;\n step?: number = 1;\n precision?: number = 4;\n}\n\nexport class CascaderOption {\n options: Array<any>;\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { round } from 'lodash';\nimport { InputBoolean } from 'ng-zorro-antd/core';\nimport { Page } from '../model/common-type';\nimport { TotalOption } from './hd-detail-lines.service';\n\n@Component({\n selector: 'hd-detail-lines',\n templateUrl: './hd-detail-lines.component.html',\n styleUrls: ['./hd-detail-lines.component.less']\n})\nexport class HdDetailLinesComponent implements OnInit {\n @Input() lines: Array<any>;\n @Input() @InputBoolean() showSelected: boolean = false;\n @Input() @InputBoolean() allowDrop: boolean = false;\n @Input() scroll: { [key: string]: string } = { x: '1px' };\n @Input() selectField: string = 'billNumber';\n @Input() selectedField: string;\n @Output() selectEvent = new EventEmitter();\n @ContentChild(\"detailLineHead\", { static: false }) detailLineHead: TemplateRef<any>;\n @ContentChild(\"detailLineBody\", { static: false }) detailLineBody: TemplateRef<any>;\n // 合计区域\n @Input() @InputBoolean() showTotal: boolean = false;\n @Input() totalOption: Array<TotalOption> = [];\n @Input() columnsNumber: number | string = 0;\n @Input() hdFrontPagination: boolean = false;\n totalOptionList = [];\n\n tableData: Page<any> = new Page();\n tableLoading: boolean = false;\n // 表格分页参数\n tablePageIndex: number = 1;\n tablePageSize: number = 10;\n // 表格勾选参数\n isAllDisplayDataChecked = false;\n isIndeterminate = false;\n listOfDisplayData = [];\n listOfAllData = [];\n listOfSelection: Array<any> | TemplateRef<void>;\n mapOfCheckedId: { [key: string]: boolean } = {};\n mapOfCheckList: { [key: string]: any } = {};\n\n constructor() { }\n\n ngOnInit(): void {\n this.countSelected();\n this.calculateTotal();\n }\n\n ngOnChanges(): void {\n this.countSelected();\n this.calculateTotal();\n }\n\n private countSelected(): void {\n if (this.showSelected && this.selectedField && this.lines && this.lines.length) {\n this.lines.forEach((item) => {\n if (item[this.selectedField] === true) {\n this.mapOfCheckedId[item[this.selectField]] = true;\n this.mapOfCheckList[item[this.selectField]] = item;\n }\n });\n if (this.lines.length === Object.keys(this.mapOfCheckList).length) {\n this.isAllDisplayDataChecked = true;\n this.isIndeterminate = true;\n }\n }\n }\n\n get LodashRound() {\n return round;\n }\n\n drop(event: CdkDragDrop<string[]>): void {\n moveItemInArray(this.lines, event.previousIndex, event.currentIndex);\n // 这里深拷贝去触发数据变化\n this.lines = JSON.parse(JSON.stringify(this.lines));\n }\n\n calculateTotal() {\n // 这里处理合计数据\n if (this.showTotal && this.lines && this.lines.length) {\n this.totalOptionList = new Array(Number(this.columnsNumber) - 1).fill('');\n this.totalOption.forEach(item => {\n if (item.insertIndex && (item.insertValue || item.insertValue === 0)) {\n this.totalOptionList[item.insertIndex - 1] = {\n value: item.insertValue,\n align: item.align || 'right',\n showDecimal: item.showDecimal || false,\n isHide: item.isHide || false\n }\n }\n })\n }\n }\n\n // 表格勾选逻辑\n currentPageDataChange($event: any): void {\n this.listOfDisplayData = $event;\n this.refreshStatus();\n }\n\n resetStatus() {\n this.isAllDisplayDataChecked = false;\n this.isIndeterminate = false;\n this.mapOfCheckedId = {};\n this.mapOfCheckList = {};\n this.selectEvent.emit([]);\n }\n\n refreshStatus(event: boolean = false, data: any = null): void {\n if (event && data) {\n !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);\n } else if (!event && data) {\n this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];\n }\n this.isAllDisplayDataChecked = this.listOfDisplayData.every(item => this.mapOfCheckedId[item[this.selectField]]);\n this.isIndeterminate =\n this.listOfDisplayData.some(item => this.mapOfCheckedId[item[this.selectField]]) && !this.isAllDisplayDataChecked;\n // 触发select事件\n if (this.selectEvent) {\n this.selectEvent.emit(Object.values(this.mapOfCheckList));\n }\n }\n\n checkAll(value: boolean): void {\n this.listOfDisplayData.forEach(item => {\n if (value) {\n !this.mapOfCheckList[item[this.selectField]] && (this.mapOfCheckList[item[this.selectField]] = item);\n } else {\n this.mapOfCheckList[item[this.selectField]] && delete this.mapOfCheckList[item[this.selectField]];\n }\n this.mapOfCheckedId[item[this.selectField]] = value\n });\n this.refreshStatus();\n }\n}\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdDetailLinesComponent } from './hd-detail-lines.component';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\n@NgModule({\n imports: [\n CommonModule,\n NzTableModule,\n DragDropModule\n ],\n declarations: [HdDetailLinesComponent],\n exports: [HdDetailLinesComponent],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class HdDetailLinesModule { }\n","import { Injectable } from '@angular/core';\n\nexport const statusToColor = {\n // 黄色\n '#FAB13B': ['partshipped', 'committed', 'partValid', 'confirm'],\n // 灰色\n '#9FA4A2': ['initial', 'uncommitted', 'OFF_LINE', 'UN_PRINTED'],\n // 红色\n '#F5222D': ['delete', 'deleted', 'aborted', 'rejected', '停用', '禁用'],\n // 蓝色\n '#3B77E3': ['audited', 'adjusted', 'invoiced', 'audit', 'submitted'],\n // 绿色\n '#12A34F': ['shipped', 'received', 'checked', 'using', 'reverse', 'valid', 'approved', 'ON_LINE', 'finished', 'opened', 'PRINTED', '启用', 'picked'],\n // 橙色\n '#F05B24': ['picking', 'partialReceived', 'partDelete', 'tender', 'MODIFIED_AFTER_PRINTED']\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdStatusService {\n constructor() {\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport {statusToColor} from \"../hd-status/hd-status.service\";\n\n@Component({\n selector: 'hd-detail-tip',\n templateUrl: './hd-detail-tip.component.html',\n styleUrls: ['./hd-detail-tip.component.less']\n})\nexport class HdDetailTipComponent implements OnInit {\n\n constructor() { }\n @Input() state: string;\n @Input() stateText: string;\n @Input() billNumber: string;\n @Input() tip: string = '详情';\n statusColor: string;\n\n\n ngOnInit() {\n this.setStatusColor();\n }\n\n ngOnChanges(){\n this.setStatusColor();\n }\n\n setStatusColor(){\n for(let key in statusToColor){\n if(statusToColor[key].indexOf(this.state)!== -1){\n this.statusColor = key;\n break;\n }\n }\n }\n}\n","import { HdDetailTipComponent } from './hd-detail-tip.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdDetailTipComponent],\n exports: [HdDetailTipComponent]\n})\nexport class HdDetailTipModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Filter } from './hd-filter.service';\n\n@Component({\n selector: 'hd-filter',\n templateUrl: './hd-filter.component.html',\n styleUrls: ['./hd-filter.component.less']\n})\nexport class HdFilterComponent implements OnInit {\n\n @Input() filterList: Array<Filter>;\n @Output() searchEvent = new EventEmitter();\n @Output() resetEvent = new EventEmitter();\n\n validateFilterForm: FormGroup;\n isShowMore: boolean = true;\n // 对filterList取模运算\n filterListModular: number = 0;\n\n constructor(private fb: FormBuilder) {\n }\n\n ngOnInit() {\n this.init();\n }\n\n ngOnChanges() {\n this.init();\n }\n\n private init(): void {\n this.isShowMore = true;\n // 异常捕获\n if (!this.checkList(this.filterList)) {\n throw 'filter组件数据格式不规范';\n }\n this.filterListModular = this.filterList.length % 4;\n // 首先根据定义的组件数组 去初始化表单\n let formGroupList = {};\n this.filterList.forEach((item, index) => {\n formGroupList[item.name] = this.fb.control(item.value, []);\n // 初始化控件显影\n item.show = index < 7;\n });\n this.validateFilterForm = this.fb.group(formGroupList);\n }\n\n triggerEvent(fn: any, event: any, selectOption?: any) {\n if (fn && selectOption) {\n fn(event, selectOption);\n } else if (fn) {\n fn(event);\n } else {\n return;\n }\n }\n\n computeOffset() {\n // 特殊处理下等于4个选项的情况\n if (this.filterList.length === 4) {\n return 18;\n }\n return this.isShowMore ? ((this.filterListModular === 0 || this.filterList.length > 7) ? 0 : (3 - this.filterListModular) * 6) : (this.filterListModular === 0 ? 18 : (3 - this.filterListModular) * 6);\n }\n\n private checkList(list: Array<Filter>): boolean {\n if (!list || (list && list.length === 0)) {\n return true;\n }\n let nameList = [];\n list.forEach((item) => {\n // 校验单项选择器\n // if (item.type === FilterListType.Select && (!item.selectOption.selectList || (item.selectOption.selectList && item.selectOption.selectList.length === 0))) {\n // throw 'filter组件数据格式不规范,存在单项选择器没有传入选项!'\n // }\n nameList.push(item.name);\n });\n // 校验name是否重复\n if ([...new Set(nameList)].length !== list.length) {\n throw 'filter组件数据格式不规范,存在重复name值!';\n }\n // ...more check\n return true;\n }\n\n public submitForm(): void {\n this.searchEvent.emit(this.validateFilterForm.getRawValue());\n }\n\n public resetForm(): void {\n this.validateFilterForm.reset();\n if (this.resetEvent.observers.length > 0) {\n // 如果有父组件绑定了 resetEvent 的处理器\n this.resetEvent.emit(this.validateFilterForm.getRawValue());\n } else {\n // 如果没有绑定处理器,则触发 searchEvent\n this.searchEvent.emit(this.validateFilterForm.getRawValue());\n }\n }\n\n public getFilterData() {\n return this.validateFilterForm.getRawValue();\n }\n\n public showMore(): void {\n this.isShowMore = !this.isShowMore;\n this.filterList.forEach((item, index) => {\n item.show = this.isShowMore ? index < 7 : true;\n });\n }\n\n public inputClean(filter: Filter): void {\n const patchObject = {};\n patchObject[filter.name] = null;\n\n this.validateFilterForm.patchValue(patchObject);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdFilterComponent } from './hd-filter.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule,\n HdButtonModule\n ],\n declarations: [HdFilterComponent],\n exports: [HdFilterComponent]\n})\nexport class HdFilterModule { }\n","import { Injectable } from '@angular/core';\n\nexport enum SpaceType {\n row = 'row',\n column = 'column'\n}\n\nexport class Style {\n background: string\n width: string\n height: string\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdSpaceService {\n\n constructor() { }\n\n}\n","import { Component, Input, OnInit, Output } from '@angular/core';\nimport { Style, SpaceType } from \"./hd-space.service\"; \n\n@Component({\n selector: 'hd-space',\n templateUrl: './hd-space.component.html',\n styleUrls: ['./hd-space.component.less']\n})\nexport class HdSpaceComponent implements OnInit {\n @Input() type: SpaceType = SpaceType.row; \n @Input() size: number; \n @Input() background: string = 'inherit'; \n\n style: Style = new Style();\n\n constructor() { }\n\n ngOnInit() {\n this.style['background'] = this.background;\n if(this.type === SpaceType.row){\n this.style['width'] = '100%';\n this.style['height'] = this.size + 'px';\n }else{\n this.style['height'] = '100%';\n this.style['width'] = this.size + 'px';\n }\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdSpaceComponent } from './hd-space.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdSpaceComponent],\n exports: [HdSpaceComponent]\n})\nexport class HdSpaceModule { }\n","import { Injectable } from '@angular/core';\nimport { InputNumber, SelectOption } from '../model/common-type';\n// 控件列表\nexport class FormLine {\n type: FormLineType; // 控件类型\n label: string; // 文本\n name: string; // 字段名称\n placeholder?: string; // 输入框的提示文件\n require?: boolean = false; // 是否必填\n hide?: boolean = false; // 是否为隐藏字段,仅用于填充表单的字段,不显示在页面上\n align?: 'left' | 'right' | 'center'; // 列对齐方式\n value?: string | boolean | number | Date | Array<string | Date> | null = null; // 值 不传默认为null\n isSelect?: boolean; // 输入框等是否允许点击之后全选内容\n selectOption?: SelectOption; // 控件为Select时,选项列表\n explainOptionRight?: ExplainOption; // 明细字段的说明(右侧)\n explainOption?: ExplainOption; // 明细字段的说明\n colorOption?: ColorOption; // 颜色字段的说明\n // 组件内部成员\n maxLength?: number; // input控件的输入长度\n preserveNumber?: number; // 需要保留小数的列的位数\n inputNumber?: InputNumber = new InputNumber(); // number组件的min、max、step\n onChangeEvent?: Function; // 控件的值改变事件 可用于控件间联动\n onSearchEvent?: Function; // select选择器搜索事件 可用于更新备选集合\n defaultLabel?: any; // select选择器不初始化的时候可以使用defaultLabel搭配value,设置默认值\n hdDisabledDate?: Function; // date-picker组件不可选择的日期\n disabled?: boolean; // 不可输入状态\n showTime?: boolean = false; // 日期选择器是否包含时间\n style?: object;\n canSearch?: boolean = false; // 指明hide 情况下的控件是否可以被搜索,默认false\n onChangeEventDebounceTime?: number; // change事件防抖\n onSearchEventEventDebounceTime?: number; // search事件防抖\n}\n\nexport class ColorOption {\n name: string;\n color?: string;\n}\n\nexport class ExplainOption {\n show: boolean;\n name: string;\n color?: string;\n}\n\n\n// 控件类型\nexport enum FormLineType {\n Input = 'Input', // 输入框\n Select = 'Select', // 单项选择器\n Date = 'Date', // 单个日期选择\n DateRange = 'DateRange', // 日期范围选择\n TextArea = 'TextArea', // 块级输入框\n InputNumber = 'InputNumber',// 数字输入\n MultipleSelect = 'MultipleSelect', // 多选\n ViewDom = 'ViewDom', // 单纯的显示控件\n Switch = 'Switch', // 开关\n Time = 'Time' // 时间选择器\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormLinesService {\n constructor() { }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChildren\n} from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { round } from 'lodash';\nimport {\n InputBoolean,\n NzDatePickerComponent,\n NzInputNumberComponent,\n NzRangePickerComponent,\n NzSelectComponent,\n NzTimePickerComponent\n} from 'ng-zorro-antd';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { TotalOption } from '../hd-detail-lines/hd-detail-lines.service';\nimport { FormLine, FormLineType } from './hd-form-lines.service';\n\n@Component({\n selector: 'hd-form-lines',\n templateUrl: './hd-form-lines.component.html',\n styleUrls: ['./hd-form-lines.component.less']\n})\nexport class HdFormLinesComponent implements OnInit {\n @ViewChildren('formInputDom') formInputDomList!: QueryList<ElementRef>;\n\n @Input() @InputBoolean() showLineNumber: boolean = true;\n @Input() @InputBoolean() allowEmpty: boolean = true;\n @Output() deleteLastLineEvent = new EventEmitter();\n @Input() @InputBoolean() showKeyboardOperateTip: boolean = false;\n @Input() @InputBoolean() tableLoading: boolean = false;\n @Input() @InputBoolean() showSearch: boolean = false;\n @Input() formLines: Array<FormLine>;\n // 针对formLines里面所有的name,\n @Input() formLinesData: any;\n @Input() operateButtons: Array<string> = ['add', 'delete'];\n @Input() scroll: { [key: string]: string; } = {x: '1px'};\n @Output() changeEvent = new EventEmitter();\n @Input() @InputBoolean() showDeleteConfirm: boolean = false;\n paginationPageIndex: number = 1;\n paginationPageSize: number = 10;\n validateHdFormLines: FormGroup;\n newLine: any;\n inputValue: string;\n\n // 合计区域\n @Input() @InputBoolean() showTotal: boolean = false;\n @Input() totalOption: Array<TotalOption> = [];\n @Input() columnsNumber: number | string = 0;\n totalOptionList = [];\n\n showForm: boolean = false;\n filterStr: string;\n storeFormLinesData: any = []; // 缓存的总的表单数据\n filterStoreFormLinesData: any = []; // 筛选出来的数据列表\n filterIndexStore: Array<number> = []; // 筛选出来的数据在原始列表中的下标\n isFilterData: boolean = false; // 是否是已经筛选过的数据\n formValid: boolean = false; // 表单当前的状态\n private searchSubject = new Subject<{ fn: any, event: any, line: any; }>();\n private debounceTimeout: number = 0; // 默认防抖时间\n\n private searchSubscription: Subscription | undefined;\n\n // 当前页的dom二维数组\n collectDomList: Array<Array<ElementRef | NzSelectComponent | NzInputNumberComponent | NzDatePickerComponent | NzRangePickerComponent | NzTimePickerComponent>> = [];\n // 当前聚焦的dom元素坐标\n activeDomX: number = null;\n activeDomY: number = null;\n activeDom: ElementRef | NzSelectComponent | NzInputNumberComponent | NzDatePickerComponent | NzRangePickerComponent | NzTimePickerComponent = null;\n activeSelectedComponentOpen: boolean = false;\n @ContentChild('ViewDomRightTemplate', {static: false}) ViewDomRightTemplate: TemplateRef<any>;\n\n constructor(private fb: FormBuilder, private cdr: ChangeDetectorRef) {\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({fn, event, line}) => this.triggerEvent(fn, event, line));\n }\n\n ngOnInit() {\n // 缓存一下总的表单数据\n this.storeFormLinesData = this.formLinesData;\n this.init();\n }\n\n ngAfterViewInit() {\n this.collectDomData();\n }\n\n get formLinesLength() {\n return this.linesFormArray.controls.length;\n }\n\n setActiveSelectedComponentOpen(value: boolean) {\n this.activeSelectedComponentOpen = value;\n if (value === true && document.querySelectorAll('.hd-option-header').length === 0) {\n setTimeout(() => {\n const domList = document.querySelectorAll('.ant-select-dropdown.hd-select-table');\n if (domList.length > 0) {\n const dom = domList[0];\n const oldIndex = this.getOldDomIndex(this.activeDomY, this.formLines);\n dom.insertBefore(this.createDOMStructure(this.formLines[oldIndex], this.linesFormArray.controls.slice((this.paginationPageIndex - 1) * this.paginationPageSize, (this.paginationPageIndex - 1) * this.paginationPageSize + this.paginationPageSize)[this.activeDomX]), dom.firstChild);\n }\n }, 0);\n }\n }\n\n createDOMStructure(formItem, line) {\n // 创建外部 div\n const hdOptionHeader = document.createElement('div');\n hdOptionHeader.className = 'hd-option-header';\n\n // 检查条件,确定是否要创建子元素\n // const selectListLength = (formItem && formItem.selectOption && formItem.selectOption.selectList && formItem.selectOption.selectList.length) || 0;\n // if\n // const lineValueLength = (line.get(formItem.selectOption.selectListName) && line.get(formItem.selectOption.selectListName).value && line.get(formItem.selectOption.selectListName).value.length) || 0;\n\n // if (selectListLength > 0 || lineValueLength > 0) {\n // 遍历 tableColumns 创建内部列 div\n formItem.selectOption.tableColumns.forEach((selectOptionTableColumn, index) => {\n const columnDiv = document.createElement('div');\n columnDiv.className = 'hd-option-header-column';\n\n // 设置宽度样式\n const width = (selectOptionTableColumn && selectOptionTableColumn.width) ?\n (selectOptionTableColumn && selectOptionTableColumn.width) + ((index === 0 && !(selectOptionTableColumn && selectOptionTableColumn.label)) ? 12 : 0) + 'px'\n : 'unset';\n columnDiv.style.width = width;\n\n // 添加列标签内容\n if (selectOptionTableColumn.label) {\n const labelText = document.createTextNode(selectOptionTableColumn.label);\n columnDiv.appendChild(labelText);\n }\n\n // 添加列 div 到外部 div\n hdOptionHeader.appendChild(columnDiv);\n });\n // }\n\n return hdOptionHeader;\n }\n\n\n collectDomData() {\n this.collectDomList = [];\n const pageDomList = this.formInputDomList.toArray();\n // Step 1: 获取当前页的数据量\n const startIndex = (this.paginationPageIndex - 1) * this.paginationPageSize;\n const endIndex = this.paginationPageIndex * this.paginationPageSize;\n const adjustedEndIndex = endIndex > this.formLinesLength ? this.formLinesLength : endIndex;\n const pageLinesLength = adjustedEndIndex - startIndex;\n\n const interval = pageDomList.length / pageLinesLength;\n // Step 2: 拆分formInputDomList\n for (let i = 0; i < pageLinesLength; i++) {\n this.collectDomList.push(pageDomList.splice(0, interval));\n }\n // 关闭所有NzInputNumberComponent的键盘上下箭头触发+-的功能\n for (let i = 0; i < this.collectDomList.length; i++) {\n for (let j = 0; j < this.collectDomList[i].length; j++) {\n const dom = this.collectDomList[i][j];\n if (dom instanceof NzInputNumberComponent) {\n dom.down = () => {\n };\n dom.up = () => {\n };\n }\n }\n }\n }\n\n // 聚焦下一个dom\n jumpToNextInput(x: number, y: number) {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n // 如果是最后一个可输入元素,新增行\n if (!(this.activeDom instanceof NzSelectComponent) && x === this.collectDomList.length - 1 && y === this.collectDomList[0].length - 1) {\n this.addNewLineAndFocus();\n } else {\n if (y === this.collectDomList[0].length - 1) {\n console.log('执行过程1');\n // 如果是最后一列,则跳转到下一行第一个输入框\n this.focusDom(x + 1, 0, 'right');\n } else {\n console.log('执行过程2');\n // 如果不是最后一列,则跳转到当前行下一个输入框\n this.focusDom(x, y + 1, 'right');\n }\n }\n }\n\n /**\n * 增加新行并且聚焦到第一个元素,\n * 这里要注意,如果存在翻页情况,需要处理\n */\n addNewLineAndFocus() {\n // 当前行为当前页最后一行的时候,判断下一页是否有数据\n // 1、如果有:翻页+聚焦第一行第一个元素\n // 2、如果没有:新增行+翻页+聚焦第一行第一个元素\n if (this.activeDomX === this.paginationPageSize - 1) {\n // 判断下一页是否有数据\n if (this.paginationPageIndex < Math.ceil(this.formLinesLength / this.paginationPageSize)) {\n // 翻页+聚焦第一行第一个元素\n this.paginationPageIndex++;\n setTimeout(() => {\n this.collectDomData();\n console.log('执行过程3');\n this.focusDom(0, 0, 'right');\n }, 0);\n } else {\n // 新增行+翻页+聚焦第一行第一个元素\n this.addFormLine();\n this.paginationPageIndex++;\n setTimeout(() => {\n this.collectDomData();\n console.log('执行过程4');\n this.focusDom(0, 0);\n }, 0);\n }\n } else {\n this.addFormLine();\n }\n }\n\n // 聚焦到上一个dom\n jumpToPrevInput(x: number, y: number) {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n if (x === 0 && y === 0) {\n // 如果是第一个可输入元素, 判断是否有上一页, 如果有,则翻页+聚焦到上一页最后一个元素\n if (this.paginationPageIndex > 1) {\n // 翻页+聚焦到上一页最后一个元素\n this.paginationPageIndex--;\n setTimeout(() => {\n this.collectDomData();\n console.log('执行过程5');\n this.focusDom(this.collectDomList.length - 1, this.collectDomList[0].length - 1);\n }, 0);\n }\n return;\n } else {\n if (y === 0) {\n console.log('执行过程6');\n // 如果是第一列,则跳转到上一行最后一个输入框\n this.focusDom(x - 1, this.collectDomList[0].length - 1, 'left');\n } else {\n console.log('执行过程7');\n // 如果不是第一列,则跳转到当前行上一个输入框\n this.focusDom(x, y - 1, 'left');\n }\n }\n }\n\n /**\n * 聚焦到某个dom\n * @param x 坐标x\n * @param y 坐标y\n * @param jumpDirection 跳转方向\n */\n focusDom(x: number, y: number, jumpDirection: string = 'right') {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n // 先清除一下当前的焦点\n this.cleanFocusDom(this.activeDomX, this.activeDomY);\n if (this.collectDomList[x] && this.collectDomList[x][y]) {\n const dom = this.collectDomList[x][y];\n // 需要判断下一个focus的dom是否是禁用状态,如果是禁用状态需要跳过\n if (dom instanceof NzSelectComponent) {\n if (dom.nzDisabled) {\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n dom.nzSelectTopControlComponent.inputElement.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});\n // 这里多选框需要额外处理下,因为向下的时候会触发内部Input的聚焦,把下一个dom的focus放到宏任务中,延迟处理。\n if (dom.nzSelectService.mode === 'multiple') {\n setTimeout(() => {\n dom.focus();\n }, 0);\n } else {\n dom.focus();\n }\n } else if (dom instanceof NzInputNumberComponent) {\n if (dom.nzDisabled) {\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n const inputDom: any = document.getElementById(dom.nzId);\n inputDom.focus();\n inputDom.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});\n setTimeout(() => {\n inputDom.select();\n }, 0);\n } else if (dom instanceof ElementRef) {\n if (dom.nativeElement.disabled) {\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n dom.nativeElement.focus();\n dom.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});\n setTimeout(() => {\n dom.nativeElement.select();\n }, 0);\n } else if (dom instanceof NzDatePickerComponent || dom instanceof NzRangePickerComponent || dom instanceof NzTimePickerComponent) {\n // TODO:在ngzorro8.5.x版本,时间相关的选择器没有暴露出open方法,暂时先不处理。(10.x及以上版本提供了open方法)\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n this.setActiveDom(x, y);\n } else {\n // 没有dom的场景下,需要判断是左还是右,\n }\n }\n\n cleanFocusDom(x: number, y: number) {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n if (this.collectDomList[x] && this.collectDomList[x][y]) {\n const dom = this.collectDomList[x][y];\n if (dom instanceof NzSelectComponent) {\n dom.blur();\n dom.nzOpen = false;\n } else if (dom instanceof NzInputNumberComponent) {\n dom.blur();\n } else if (dom instanceof ElementRef) {\n dom.nativeElement.blur();\n } else {\n }\n }\n }\n\n setActiveDom(x: number, y: number) {\n this.activeDomX = x;\n this.activeDomY = y;\n this.activeDom = this.collectDomList[this.activeDomX][this.activeDomY];\n if (this.activeDom instanceof NzSelectComponent) {\n this.setActiveSelectedComponentOpen(this.activeDom.open);\n }\n }\n\n /**\n * 根据行号和列号名称获取当前聚焦的dom位置\n * @param rowNumber 行号\n * @param colNumber 列号\n */\n setActiveDomInFormLines(rowNumber: number, colNumber: number) {\n this.activeDomX = rowNumber;\n this.activeDomY = this.getDomIndex(colNumber, this.formLines);\n this.setActiveDom(this.activeDomX, this.activeDomY);\n }\n\n /**\n * 键盘点击事件\n * @param event 键盘事件\n * @returns\n */\n onKeyDown(event: KeyboardEvent) {\n if (this.activeDomX === null || this.activeDomY === null) {\n return;\n }\n switch (event.key) {\n case 'ArrowUp':\n if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen) {\n return;\n }\n if (this.activeDomX !== 0) {\n this.focusDom(this.activeDomX - 1, this.activeDomY);\n }\n break;\n case 'ArrowDown':\n if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen) {\n return;\n }\n // 判断是否在最后一行,加行\n if (this.activeDomX === this.collectDomList.length - 1) {\n this.cleanFocusDom(this.activeDomX, this.activeDomY);\n this.addNewLineAndFocus();\n break;\n } else {\n this.focusDom(this.activeDomX + 1, this.activeDomY);\n }\n break;\n case 'ArrowLeft':\n this.jumpToPrevInput(this.activeDomX, this.activeDomY);\n break;\n case 'ArrowRight':\n this.jumpToNextInput(this.activeDomX, this.activeDomY);\n break;\n case 'Enter':\n if (this.activeDom instanceof NzSelectComponent) {\n this.setActiveSelectedComponentOpen(this.activeDom.open);\n if (this.activeSelectedComponentOpen === false) {\n this.focusDom(this.activeDomX, this.activeDomY);\n }\n } else if (this.activeDomX === this.collectDomList.length - 1) {\n this.addNewLineAndFocus();\n }\n break;\n case 'Escape':\n if (this.activeDom instanceof NzSelectComponent) {\n const nowActiveDom = this.activeDom as NzSelectComponent;\n setTimeout(() => {\n this.setActiveSelectedComponentOpen(nowActiveDom.open);\n if (this.activeSelectedComponentOpen === false) {\n if (nowActiveDom.nzSelectService.mode === 'multiple') {\n setTimeout(() => {\n this.focusDom(this.activeDomX, this.activeDomY);\n }, 0);\n } else {\n this.focusDom(this.activeDomX, this.activeDomY);\n }\n }\n }, 0);\n }\n break;\n default:\n // 如果当前聚焦的是选择框,且键入0-9a-zA-Z,则弹出\n if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen === false && /^[0-9a-zA-Z]$/.test(event.key)) {\n const dom = this.activeDom;\n dom.nzOpen = true;\n this.setActiveSelectedComponentOpen(true);\n // // TODO:这里暂时注释,不能直接带入键入值,这样会导致输入中文的时候带入英文字符,不符合预期\n // dom.nzSelectTopControlComponent.inputValue = event.key;\n // // 获取 input 元素\n // const inputElement = dom.nzSelectTopControlComponent.inputElement.nativeElement;\n // setTimeout(() => {\n // // 触发输入事件,以确保 Angular 检测到值的变化\n // const eventInput = new Event('input', { bubbles: true });\n // inputElement.dispatchEvent(eventInput);\n // }, 0);\n }\n break;\n }\n }\n\n /**\n * 根据在初始dom下标和数据集 获取在collectDomList中的下标\n * @param index 初始下标\n * @param list 老数据集\n * @returns\n */\n private getDomIndex(index: number, list: Array<FormLine>): number {\n const typeList = ['Input', 'Select', 'Date', 'DateRange', 'TextArea', 'InputNumber', 'MultipleSelect'];\n let filterList = [];\n for (let i = 0; i < list.length; i++) {\n if (i === index) {\n return filterList.length;\n }\n if (typeList.includes(list[i].type)) {\n filterList.push(list[i]);\n }\n }\n return null;\n }\n\n /**\n * 根据在collectDomList中的下标和数据集 获取初始dom下标\n * @param index 新下标\n * @param list 老数据集\n * @returns\n */\n private getOldDomIndex(index: number, list: Array<FormLine>): number {\n console.log('index', index);\n console.log('list', list);\n const typeList = ['Input', 'Select', 'Date', 'DateRange', 'TextArea', 'InputNumber', 'MultipleSelect'];\n let filterList = [];\n for (let i = 0; i < list.length; i++) {\n if (typeList.includes(list[i].type)) {\n filterList.push(list[i]);\n if (filterList.length === index + 1) {\n return i;\n }\n }\n }\n return null;\n }\n\n get linesFormArray(): any {\n return this.validateHdFormLines.get('lines') as FormArray;\n }\n\n get LodashRound() {\n return round;\n }\n\n // 暴露的方法,用于获取所有数据的valid状态\n public getValid() {\n return this.formValid;\n }\n\n onSearchEvent(fn: any, event: any, line: any, onSearchEventDebounceTime: any) {\n if (onSearchEventDebounceTime) {\n // 更新防抖时间\n this.debounceTimeout = onSearchEventDebounceTime;\n\n // 取消之前的订阅\n if (this.searchSubscription) {\n this.searchSubscription.unsubscribe();\n }\n\n // 创建新的订阅\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({fn, event, line}) => this.triggerEvent(fn, event, line));\n\n // 发送事件\n this.searchSubject.next({fn, event, line});\n } else {\n this.triggerEvent(fn, event, line);\n }\n setTimeout(() => {\n this.setActiveSelectedComponentOpen(true);\n }, 0);\n }\n\n /**\n *\n * @param fn 父组件函数\n * @param event 事件值\n * @param line 触发的行\n */\n triggerEvent(fn: any, event: any, line: any) {\n if (fn) {\n fn(event, line);\n }\n }\n\n innerGetValid() {\n let tmpValidateHdFormLines = this.fb.group({\n 'lines': this.fb.array([])\n });\n this.storeFormLinesData.forEach((formLinesDataItem) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({\n value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null),\n disabled: item.disabled\n }, item.require ? [Validators.required] : []);\n if (item.selectOption && item.selectOption.label) {\n formGroupObj[item.selectOption.label] = this.fb.control(formLinesDataItem[item.selectOption.label] || null, []);\n }\n });\n formGroupObj.lineIndex = this.fb.control((tmpValidateHdFormLines.get('lines') as FormArray).controls.length, []);\n let formGroupTmp = this.fb.group(formGroupObj);\n this.formLines.forEach((item) => {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n formGroupTmp.get(item.name).valueChanges.pipe(\n debounceTime(item.onChangeEventDebounceTime)\n ).subscribe(value => {\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n } else {\n formGroupTmp.get(item.name).valueChanges.subscribe(value => {\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n }\n }\n });\n (tmpValidateHdFormLines.get('lines') as FormArray).insert((tmpValidateHdFormLines.get('lines') as FormArray).controls.length, formGroupTmp);\n });\n return tmpValidateHdFormLines.valid;\n }\n\n // 暴露的方法,用于获取所有数据\n public getLines() {\n let allLines = [];\n this.storeFormLinesData.forEach((formLinesDataItem) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = formLinesDataItem[item.name];\n });\n formGroupObj.lineIndex = formLinesDataItem.lineIndex;\n allLines.push(formGroupObj);\n });\n return allLines;\n }\n\n // 全局性的搜索(涵盖页面上所有的可视文字)\n searchLines() {\n if (this.storeFormLinesData.length < 1) {\n return;\n }\n this.tableLoading = true;\n // 如果没有输入搜索字符串,则显示缓存内的所有数据\n if (!this.filterStr) {\n this.isFilterData = false;\n this.setStoreData();\n return;\n }\n const filterValue = this.filterStr.trim().toLowerCase();\n this.isFilterData = true;\n this.filterIndexStore = [];\n\n // 根据搜索字符串过滤数据\n const filteredData = this.storeFormLinesData.filter((data: any, index: number) => {\n for (const item of this.formLines) {\n if ((item.hide && item.canSearch) || (!item.hide && item.name !== 'uuid')) {\n const value = data[item.name] ? data[item.name].toString().toLowerCase() : '';\n if (value.includes(filterValue)) {\n this.filterIndexStore.push(index);\n return true;\n }\n }\n }\n return false;\n });\n // 缓存一下筛选后的表单数据\n this.filterStoreFormLinesData = filteredData;\n // 处理筛选好的数据 然后重新渲染\n this.formLinesData = filteredData;\n this.init(true);\n }\n\n setStoreData() {\n this.formLinesData = this.storeFormLinesData;\n this.init(true);\n }\n\n getStyle(line: FormGroup, formItem: any, width: string) {\n let styleObj = {\n 'min-width': width\n };\n if (formItem.style) {\n styleObj = {...styleObj, ...formItem.style};\n }\n if (formItem.colorOption && formItem.colorOption.name && line.get(formItem.colorOption.name).value) {\n styleObj = {...styleObj, ...{'color': line.get(formItem.colorOption.name).value}};\n }\n return styleObj;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['formLinesData'] && JSON.stringify(changes['formLinesData'].currentValue) !== JSON.stringify(changes['formLinesData'].previousValue)) {\n if (this.storeFormLinesData && this.storeFormLinesData.length === 0) {\n this.storeFormLinesData = this.formLinesData;\n }\n this.init();\n }\n if (changes['totalOption'] && JSON.stringify(changes['totalOption'].currentValue) !== JSON.stringify(changes['totalOption'].previousValue)) {\n this.calculateTotal();\n }\n }\n\n calculateTotal() {\n // 这里处理合计数据\n if (this.showTotal) {\n this.totalOptionList = new Array(Number(this.columnsNumber) - 1).fill('');\n this.totalOption.forEach(item => {\n if (item.insertIndex && (item.insertValue || item.insertValue === 0)) {\n this.totalOptionList[item.insertIndex - 1] = {\n value: item.insertValue,\n align: item.align || 'left',\n showDecimal: item.showDecimal || false\n };\n }\n });\n }\n }\n\n private init(isEdit: boolean = false): void {\n this.paginationPageIndex = 1;\n // 异常捕获\n if (!this.checkList(this.formLines)) {\n this.tableLoading = false;\n return;\n }\n this.createForm();\n // 如果没有formLinesData,则认为是新增\n if (!isEdit && (!this.formLinesData || (this.formLinesData && this.formLinesData.length === 0))) {\n this.tableLoading = false;\n this.addFormLine(0, false);\n this.showForm = true;\n } else {\n // 编辑逻辑\n this.addFormLineWithData();\n }\n this.validateHdFormLines.valueChanges.subscribe(data => this.onHdFormValueChanged(data));\n this.onHdFormValueChanged();\n }\n\n\n /**\n * 创建表单\n */\n private createForm() {\n this.validateHdFormLines = this.fb.group({\n 'lines': this.fb.array([])\n });\n this.newLine = this.newLineItem();\n }\n\n delayJumpToNextInput() {\n setTimeout(() => {\n this.jumpToNextInput(this.activeDomX, this.activeDomY);\n }, 0);\n }\n\n /**\n * 定义空的newLineItem 结构\n */\n private newLineItem(): FormGroup {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({\n value: item.value,\n disabled: item.disabled\n } || null, item.require && !item.hide ? [Validators.required] : []);\n });\n formGroupObj.lineIndex = this.fb.control(this.linesFormArray.controls.length, []);\n // 用来标识是否是搜索状态下新增的行\n formGroupObj.isHdFormLineSearchAdd = this.fb.control(this.isFilterData, []);\n let formGroupSubmit = this.fb.group(formGroupObj);\n this.formLines.forEach((item, innerIndex) => {\n if (item.onChangeEvent) {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n formGroupSubmit.get(item.name).valueChanges.pipe(\n debounceTime(item.onChangeEventDebounceTime)\n ).subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupSubmit);\n });\n } else {\n formGroupSubmit.get(item.name).valueChanges.subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupSubmit);\n });\n }\n }\n }\n });\n return formGroupSubmit;\n }\n\n private calculateLineNumber() {\n this.linesFormArray.controls.forEach((item, index) => {\n item.get('lineIndex').setValue(index + 1, {emitEvent: false});\n });\n }\n\n /**\n * 编辑的时候数据处理\n */\n addFormLineWithData() {\n this.formLinesData.forEach((formLinesDataItem, index) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({\n value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null),\n disabled: item.disabled\n }, item.require ? [Validators.required] : []);\n if (item.selectOption && item.selectOption.label) {\n formGroupObj[item.selectOption.label] = this.fb.control(formLinesDataItem[item.selectOption.label] || null, []);\n }\n });\n formGroupObj.lineIndex = this.fb.control(this.linesFormArray.controls.length + 1, []);\n let formGroupTmp = this.fb.group(formGroupObj);\n this.formLines.forEach((item, innerIndex) => {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n formGroupTmp.get(item.name).valueChanges.pipe(\n debounceTime(item.onChangeEventDebounceTime)\n ).subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n } else {\n formGroupTmp.get(item.name).valueChanges.subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n }\n }\n });\n this.linesFormArray.insert(this.linesFormArray.controls.length, formGroupTmp);\n });\n this.tableLoading = false;\n this.showForm = true;\n }\n\n addFormLine(index?: any, isFocus: boolean = true) {\n this.linesFormArray.insert(index || this.linesFormArray.controls.length, this.newLineItem());\n this.calculateLineNumber();\n setTimeout(() => {\n this.collectDomData();\n if (isFocus) {\n if (index !== null && index !== undefined) {\n this.activeDomX = index;\n } else {\n this.activeDomX = this.collectDomList.length - 1;\n }\n this.activeDomY = 0;\n console.log('执行过程13');\n this.focusDom(this.activeDomX, this.activeDomY);\n }\n }, 0);\n }\n\n @Output() deleteLineEvent = new EventEmitter();\n\n deleteFormLine(index: any) {\n console.log('index', index);\n // 最后一条数据的时候要判断一下\n if (this.linesFormArray.controls.length === 1 && !this.allowEmpty) {\n if (this.deleteLastLineEvent) {\n this.deleteLastLineEvent.emit();\n }\n return;\n }\n this.linesFormArray.removeAt(index - 1);\n if (!this.isFilterData && this.linesFormArray.controls && this.linesFormArray.controls.length === 0) {\n this.addFormLine();\n } else {\n // 删除尾页的最后一个元素动作\n if (this.paginationPageIndex * this.paginationPageSize === (this.linesFormArray.controls.length + this.paginationPageSize)) {\n this.paginationPageIndex--;\n }\n this.calculateLineNumber();\n }\n setTimeout(() => {\n this.collectDomData();\n }, 0);\n }\n\n public pageIndexChange(event: number): void {\n this.paginationPageIndex = event;\n setTimeout(() => {\n this.collectDomData();\n }, 0);\n }\n\n public pageSizeChange(event: number): void {\n this.paginationPageSize = event;\n setTimeout(() => {\n this.collectDomData();\n }, 0);\n }\n\n private onHdFormValueChanged(data?: any) {\n if (this.isFilterData) {\n if (data && data.lines && this.filterIndexStore.length !== 0) {\n const lines = data.lines;\n if (lines.length === this.filterIndexStore.length) {\n this.filterIndexStore.forEach((item, index) => {\n this.storeFormLinesData[item] = {...this.filterStoreFormLinesData[index], ...lines[index]};\n });\n } else if (lines.length > this.filterIndexStore.length) {\n // 有新增数据的情况\n // step 1: 先找新增的index下标\n const getNowLines = this.validateHdFormLines.getRawValue().lines;\n let addIndex = -1;\n for (let i = 0; i < getNowLines.length; i++) {\n if (getNowLines[i].isHdFormLineSearchAdd) {\n addIndex = i;\n break;\n }\n }\n if (addIndex !== -1) {\n this.storeFormLinesData.splice(this.filterIndexStore[addIndex - 1] + 1, 0, getNowLines[addIndex]);\n }\n this.filterIndexStore.push(this.filterIndexStore[addIndex - 1] + 1);\n } else {\n // 有删除数据的情况\n // step 1:先找到删除的index下标\n let deletedIndex = -1;\n let count = 0;\n if (lines.length === 0) {\n deletedIndex = 0;\n } else {\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].lineIndex - count > 1) {\n deletedIndex = i;\n break;\n }\n count++;\n }\n }\n if (deletedIndex !== -1) {\n // step 2: 删除总数据中的对应数据, 把下标数组和lines长度对齐,同时把下标数组在deletedIndex后面的值全都-1\n this.storeFormLinesData = this.storeFormLinesData.filter((item, index) => {\n return index !== this.filterIndexStore[deletedIndex];\n });\n this.filterIndexStore.splice(deletedIndex, 1);\n for (let i = 0; i < this.filterIndexStore.length; i++) {\n if (i >= deletedIndex) {\n this.filterIndexStore[i]--;\n }\n }\n } else {\n // step 2: 没有找到deletedIndex说明删除操作在最后一行\n const filterIndex = this.filterIndexStore[this.filterIndexStore.length - 1];\n this.storeFormLinesData = this.storeFormLinesData.filter((item, index) => {\n return index !== filterIndex;\n });\n this.filterIndexStore.pop();\n }\n }\n } else {\n if (data && data.lines) {\n this.storeFormLinesData = data.lines;\n }\n }\n } else {\n if (data && data.lines) {\n this.storeFormLinesData = data.lines;\n }\n }\n\n // 总表单\n if (!this.isFilterData) {\n this.formValid = this.validateHdFormLines.valid;\n } else {\n if (this.formValid) {\n // 如果整体表单是true,不管子表单是什么,都变成子表单的状态\n this.formValid = this.validateHdFormLines.valid;\n } else {\n // 如果整体表单是false:1、子表单为true,需要重算;2、子表单为false,用子表单状态\n if (this.validateHdFormLines.valid) {\n this.formValid = this.innerGetValid();\n } else {\n this.formValid = this.validateHdFormLines.valid;\n }\n }\n }\n // this.calculateLineNumber();\n this.changeEvent.emit(this.validateHdFormLines);\n }\n\n private checkList(list: Array<FormLine>): boolean {\n if (!list || (list && list.length === 0)) {\n return false;\n }\n let nameList = [];\n let selectOptionCheckList = [];\n list.forEach((item) => {\n // 校验单项选择器\n // if (item.type === FormLineType.Select && (!item.selectList || (item.selectList && item.selectList.length === 0))) {\n // throw 'formLines组件数据格式不规范,存在单项选择器没有传入选项!'\n // }\n nameList.push(item.name);\n\n // 校验有onSearch的字段的selectOption的value、label是否在formLine里面都定义了\n if (item.onSearchEvent && item.selectOption) {\n selectOptionCheckList = [];\n list.forEach(innerItem => {\n if (innerItem.name === item.selectOption.value || innerItem.name === item.selectOption.label) {\n selectOptionCheckList.push(innerItem.name);\n }\n });\n if (selectOptionCheckList.length < 2) {\n throw `formLines组件数据格式不规范,字段${item.name}的selectOption的value、label字段未能在formLines中找到对应字段!`;\n }\n }\n });\n // 校验name是否重复\n if ([...new Set(nameList)].length !== list.length) {\n throw 'formLines组件数据格式不规范,存在重复name值!';\n }\n // ...more check\n return true;\n }\n\n public submitForm(): void {\n this.changeEvent.emit(this.validateHdFormLines.getRawValue());\n }\n\n public resetForm(): void {\n // 删除\n for (let i = this.linesFormArray.controls.length; i >= 0; i--) {\n this.deleteFormLine(i);\n }\n this.paginationPageIndex = 1;\n }\n\n public inputClean(formItem: any, line: any): void {\n line.get(formItem.name).setValue(null);\n }\n\n public selectValue(id: string, rowNumber: number, colNumber: number): void {\n const inputDom: any = document.querySelector(id);\n inputDom.select();\n this.setActiveDomInFormLines(rowNumber, colNumber);\n }\n\n private textWidthCache: { [key: string]: number; } = {};\n\n isTextOverflow(text: string, maxWidth: number): boolean {\n const cachedWidth = this.textWidthCache[text];\n if (cachedWidth !== undefined) {\n return cachedWidth + 15 >= maxWidth;\n }\n\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = text;\n document.body.appendChild(span);\n const isOverflow = span.offsetWidth + 15 >= maxWidth;\n this.textWidthCache[text] = span.offsetWidth;\n span.style.display = 'none';\n document.body.removeChild(span);\n return isOverflow;\n }\n\n judgeColEmpty(str: any) {\n if (str || str === 0) {\n return str;\n } else {\n return '<空>';\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdButtonGroupModule } from '../hd-button-group/hd-button-group.module';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\nimport { HdSpaceModule } from '../hd-space/hd-space.module';\nimport { HdFormLinesComponent } from './hd-form-lines.component';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule,\n HdButtonModule,\n HdSpaceModule,\n HdButtonGroupModule\n ],\n declarations: [HdFormLinesComponent],\n exports: [HdFormLinesComponent]\n})\nexport class HdFormLinesModule { }\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { FormItem } from './hd-form.service';\n// import * as moment from 'moment';\n@Component({\n selector: 'hd-form',\n templateUrl: './hd-form.component.html',\n styleUrls: ['./hd-form.component.less']\n})\nexport class HdFormComponent implements OnInit {\n\n @Input() formList: Array<FormItem>;\n @Output() changeEvent = new EventEmitter();\n validateHdForm: FormGroup;\n inputValue: string;\n\n private searchSubject = new Subject<{ fn: any, event: any; }>();\n private debounceTimeout: number = 0; // 默认防抖时间\n\n private searchSubscription: Subscription | undefined;\n constructor(private fb: FormBuilder) {\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({ fn, event }) => this.triggerEvent(fn, event));\n }\n\n ngOnInit() {\n if (!this.formList || this.formList.length === 0) {\n return;\n }\n\n this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['formList'] && JSON.stringify(changes['formList'].currentValue) !== JSON.stringify(changes['formList'].previousValue)) {\n if (!this.formList || this.formList.length === 0) {\n return;\n }\n this.init();\n }\n }\n\n onSearchEvent(fn: any, event: any, onSearchEventDebounceTime: any) {\n if (onSearchEventDebounceTime) {\n // 更新防抖时间\n this.debounceTimeout = onSearchEventDebounceTime;\n\n // 取消之前的订阅\n if (this.searchSubscription) {\n this.searchSubscription.unsubscribe();\n }\n\n // 创建新的订阅\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({ fn, event }) => this.triggerEvent(fn, event));\n\n // 发送事件\n this.searchSubject.next({ fn, event });\n } else {\n this.triggerEvent(fn, event);\n }\n }\n\n triggerEvent(fn: any, event: any) {\n if (fn) {\n fn(event);\n }\n }\n\n private init(): void {\n // 异常捕获\n if (!this.checkList(this.formList)) {\n throw 'form组件数据格式不规范';\n }\n // 对表单数据做初始化,用row隔离每行数据item\n this.dealRow();\n // 首先根据定义的组件数组 去初始化表单\n let formGroupList = {};\n this.formList.forEach((item, index) => {\n // 日期相关的控件做特殊处理\n if (item.type === 2 && item.value) {\n const [year, month, day] = item.value.toString().split('-').map(str => parseInt(str));\n const newDateStr = new Date(year, month - 1, day)\n .toLocaleDateString('zh-Hans-CN', { year: 'numeric', month: '2-digit', day: '2-digit' })\n .replace(/\\//g, '-');\n if (item.validator) {\n formGroupList[item.name] = this.fb.control({ value: new Date(newDateStr), disabled: item.disabled }, item.require && !item.hide ? [Validators.required, item.validator] : []);\n } else {\n formGroupList[item.name] = this.fb.control({ value: new Date(newDateStr), disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n }\n } else if (item.type === 3 && item.value) {\n let formItemDate = JSON.parse(JSON.stringify(item.value));\n if (formItemDate && formItemDate instanceof Array) {\n formItemDate = formItemDate.map((item) => {\n const [year, month, day] = item.split('-').map(str => parseInt(str));\n const newDateStr = new Date(year, month - 1, day)\n .toLocaleDateString('zh-Hans-CN', { year: 'numeric', month: '2-digit', day: '2-digit' })\n .replace(/\\//g, '-');\n item = new Date(newDateStr);\n });\n if (item.validator) {\n formGroupList[item.name] = this.fb.control({ value: formItemDate, disabled: item.disabled }, item.require && !item.hide ? [Validators.required, item.validator] : []);\n } else {\n formGroupList[item.name] = this.fb.control({ value: formItemDate, disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n }\n } else {\n throw 'form组件中DateRange控件value值格式不规范,正确示例[\\'2020-01-22\\', \\'2020-01-23\\']';\n }\n } else {\n if (item.validator) {\n formGroupList[item.name] = this.fb.control({ value: item.value, disabled: item.disabled }, item.require && !item.hide ? [Validators.required, item.validator] : []);\n } else {\n formGroupList[item.name] = this.fb.control({ value: item.value, disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n }\n }\n });\n\n this.validateHdForm = this.fb.group(formGroupList);\n\n this.formList.forEach((item) => {\n if (item.onChangeEvent) {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n this.validateHdForm.get(item.name).valueChanges\n .pipe(\n debounceTime(item.onChangeEventDebounceTime)\n )\n .subscribe(value => this.triggerEvent(item.onChangeEvent, value));\n } else {\n this.validateHdForm.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value));\n }\n }\n }\n });\n this.validateHdForm.valueChanges.subscribe(data => this.onHdFormValueChanged(data));\n this.onHdFormValueChanged();\n }\n\n private dealRow() {\n // 一阶段 遍历数据计算相关数据\n const formListLength = this.formList.length;\n let step = 0;\n for (let i = 0; i < formListLength; i++) {\n if (!this.formList[i].hide) {\n if (i === 0) {\n this.formList[i].totalWidth = this.formList[i].width || 1;\n this.formList[i].isRowFirst = 1;\n step = step + 4;\n } else {\n // 去找到前一个非hide的控件\n for (let j = i - 1; j >= 0; j--) {\n if (this.formList[j].totalWidth) {\n this.formList[i].totalWidth = this.formList[j].totalWidth + (this.formList[i].width || 1);\n if ((this.formList[j].totalWidth + (this.formList[i].width || 1)) > step && this.formList[j].totalWidth <= step) {\n step = step + 4;\n this.formList[i].isRowFirst = 1;\n } else {\n this.formList[i].isRowFirst = 0;\n }\n break;\n }\n }\n }\n }\n }\n\n // 二阶段 isRowFirst的数组项增加子节点\n for (let m = 0; m < formListLength; m++) {\n if (this.formList[m].isRowFirst === 1) {\n this.formList[m].columnItems = [];\n let space = 0;\n for (let n = 1; n < formListLength - m; n++) {\n if (space === 4 || this.formList[m + n].isRowFirst === 1) {\n break;\n }\n if (!this.formList[m + n].hide && this.formList[m + n] && this.formList[m + n].isRowFirst === 0) {\n this.formList[m].columnItems.push(this.formList[m + n]);\n space++;\n }\n }\n }\n }\n }\n\n private onHdFormValueChanged(data?: any) {\n this.changeEvent.emit(this.validateHdForm);\n }\n\n private checkList(list: Array<FormItem>): boolean {\n if (!list || (list && list.length === 0)) {\n return false;\n }\n let nameList = [];\n list.forEach((item) => {\n // 校验单项选择器\n // if (item.type === FormListType.Select && (!item.selectOption.selectList || (item.selectOption.selectList && item.selectOption.selectList.length === 0))) {\n // throw 'form组件数据格式不规范,存在单项选择器没有传入选项!'\n // }\n nameList.push(item.name);\n });\n // 校验name是否重复\n if ([...new Set(nameList)].length !== list.length) {\n throw 'form组件数据格式不规范,存在重复name值!';\n }\n // ...more check\n return true;\n }\n\n public submitForm(): void {\n Object.values(this.validateHdForm.controls).forEach(control => {\n control.markAsDirty();\n control.updateValueAndValidity();\n });\n this.changeEvent.emit(this.validateHdForm.getRawValue());\n }\n\n public resetForm(): void {\n this.validateHdForm.reset();\n Object.values(this.validateHdForm.controls).forEach(control => {\n control.markAsDirty();\n control.updateValueAndValidity();\n });\n this.changeEvent.emit(this.validateHdForm.getRawValue());\n }\n\n public inputClean(filter: FormItem): void {\n const patchObject = {};\n patchObject[filter.name] = null;\n this.validateHdForm.patchValue(patchObject);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdFormComponent } from './hd-form.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule,\n HdButtonModule\n ],\n declarations: [HdFormComponent],\n exports: [HdFormComponent]\n})\nexport class HdFormModule { }\n","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChange, SimpleChanges, TemplateRef } from '@angular/core';\nimport { TableTotalOption } from './hd-current-table.service';\nimport { InputBoolean } from 'ng-zorro-antd/core';\nimport { Page } from '../model/common-type';\n\n@Component({\n selector: 'hd-current-table',\n templateUrl: './hd-current-table.component.html',\n styleUrls: ['./hd-current-table.component.less']\n})\nexport class HdCurrentTableComponent implements OnInit {\n @Input() tableData: Page<any>;\n @Input() scroll: { [key: string]: string } = { x: '1px' };\n @Input() @InputBoolean() showSelected: boolean = false;\n @Input() selectField: string = 'billNumber';\n // 合计区域\n @Input() @InputBoolean() showTableTotal: boolean = false;\n @Input() tableTotalOption: Array<TableTotalOption>;\n @Output() selectEvent = new EventEmitter();\n @Output() tableSearchEvent = new EventEmitter();\n @ContentChild(\"tableHead\", { static: false }) tableHead: TemplateRef<any>;\n @ContentChild(\"tableBody\", { static: false }) tableBody: TemplateRef<any>;\n @ContentChild(\"tableTotal\", { static: false }) tableTotal: TemplateRef<any>;\n\n @Input() tableLoading: boolean = false;\n // 表格分页参数\n @Input() tablePageIndex: number = 1;\n @Input() tablePageSize: number = 10;\n @Output() tablePageIndexChange = new EventEmitter<any>();\n @Output() tablePageSizeChange = new EventEmitter<any>();\n // 表格勾选参数\n isAllDisplayDataChecked = false;\n isIndeterminate = false;\n listOfDisplayData = [];\n listOfAllData = [];\n listOfSelection: Array<any> | TemplateRef<void>;\n mapOfCheckedId: { [key: string]: boolean } = {};\n mapOfCheckList: { [key: string]: any } = {};\n\n tableTotalOptionList = [];\n\n constructor() { }\n\n ngOnInit(): void { }\n\n ngOnChanges(changes: SimpleChange) {\n // 数据改变时,重置勾选状态\n if (changes && changes['tableData'] && changes['tableData']['currentValue'] && changes['tableData']['previousValue']) {\n if(changes['tableData']['currentValue']['pageSize'] !== changes['tableData']['previousValue']['pageSize']\n || changes['tableData']['currentValue']['pageNumber'] !== changes['tableData']['previousValue']['pageNumber']){\n return;\n }\n this.resetStatus();\n }\n }\n\n // 表格勾选逻辑\n currentPageDataChange($event: any): void {\n this.listOfDisplayData = $event;\n this.refreshStatus();\n this.resetStatus();\n }\n\n search(reset: boolean) {\n if(reset){\n this.tablePageSizeChange.emit(this.tablePageSize);\n }else{\n this.tablePageIndexChange.emit(this.tablePageIndex);\n }\n // 触发父组件查询事件\n this.tableSearchEvent.emit(reset);\n }\n\n resetStatus() {\n this.isAllDisplayDataChecked = false;\n this.isIndeterminate = false;\n this.mapOfCheckedId = {};\n this.mapOfCheckList = {};\n this.selectEvent.emit([]);\n }\n\n refreshStatus(event: boolean = false, data: any = null): void {\n if (event && data) {\n !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);\n } else if (!event && data) {\n this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];\n }\n this.isAllDisplayDataChecked = this.listOfDisplayData.every(item => this.mapOfCheckedId[item[this.selectField]]);\n this.isIndeterminate =\n this.listOfDisplayData.some(item => this.mapOfCheckedId[item[this.selectField]]) && !this.isAllDisplayDataChecked;\n // 触发select事件\n if (this.selectEvent) {\n const selectedList: Array<any> = Object.values(this.mapOfCheckList);\n this.selectEvent.emit(selectedList);\n }\n // 如果数据为空,则清空勾选标识\n if (this.tableData.content.length === 0) {\n this.isAllDisplayDataChecked = false;\n }\n }\n\n checkAll(value: boolean): void {\n this.listOfDisplayData.forEach(item => {\n if (value) {\n !this.mapOfCheckList[item[this.selectField]] && (this.mapOfCheckList[item[this.selectField]] = item);\n } else {\n this.mapOfCheckList[item[this.selectField]] && delete this.mapOfCheckList[item[this.selectField]];\n }\n\n this.mapOfCheckedId[item[this.selectField]] = value\n });\n this.refreshStatus();\n }\n}\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdCurrentTableComponent } from './hd-current-table.component';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { HdSpaceModule } from '../hd-space/hd-space.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NzTableModule,\n HdSpaceModule\n ],\n declarations: [HdCurrentTableComponent],\n exports: [HdCurrentTableComponent],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class HdCurrentTableModule { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'hd-log',\n templateUrl: './hd-log.component.html',\n styleUrls: ['./hd-log.component.less']\n})\nexport class HdLogComponent implements OnInit {\n @Input() logs: any[];\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { Injectable, NgModule } from '@angular/core';\nimport { NzModalService } from 'ng-zorro-antd';\nimport { HdLogComponent } from './hd-log.component';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class HdLogService {\n\n constructor(private modalService: NzModalService) { }\n\n showLogs(logs: any[]) {\n this.modalService.create({\n nzTitle: '操作日志',\n nzContent: HdLogComponent,\n nzComponentParams: { logs },\n nzFooter: null,\n nzWidth: 1000\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdLogComponent } from './hd-log.component';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdDetailLinesModule } from '../hd-detail-lines/hd-detail-lines.module';\nimport { HdLogService } from './hd-log.service';\n@NgModule({\n imports: [\n CommonModule,\n NgZorroAntdModule,\n HdDetailLinesModule\n ],\n entryComponents: [HdLogComponent],\n declarations: [HdLogComponent],\n exports: [HdLogComponent],\n providers: [HdLogService]\n})\nexport class HdLogModule { }\n","import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'hd-popconfirm',\n templateUrl: './hd-popconfirm.component.html',\n styleUrls: ['./hd-popconfirm.component.scss']\n})\nexport class HdPopconfirmComponent implements OnInit {\n @Input() message: string;\n @Output() confirmOption = new EventEmitter<any>();\n @Output() cancelOption = new EventEmitter<any>();\n\n constructor() { }\n\n ngOnInit() {\n }\n\n\n cancel(e: any): void{\n this.cancelOption.emit();\n }\n\n confirm(e: any): void{\n this.confirmOption.emit();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdPopconfirmComponent } from \"./hd-popconfirm.component\";\n\n@NgModule({\n declarations: [\n HdPopconfirmComponent\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n NgZorroAntdModule,\n ],\n exports: [HdPopconfirmComponent],\n providers: [],\n bootstrap: [HdPopconfirmComponent]\n})\nexport class HdPopconfirmModule {\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { statusToColor } from \"./hd-status.service\";\n\n@Component({\n selector: 'hd-status',\n templateUrl: './hd-status.component.html',\n styleUrls: ['./hd-status.component.less']\n})\nexport class HdStatusComponent implements OnInit {\n @Input() status: string;\n statusColor: string;\n\n constructor() { }\n\n ngOnInit() {\n this.setStatusColor();\n }\n\n ngOnChanges(){\n this.setStatusColor();\n }\n\n setStatusColor(){\n for(let key in statusToColor){\n if(statusToColor[key].indexOf(this.status)!== -1){\n this.statusColor = key;\n break;\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdStatusComponent } from \"./hd-status.component\";\n\n@NgModule({\n declarations: [\n HdStatusComponent,\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n NgZorroAntdModule,\n ],\n exports: [HdStatusComponent],\n providers: [],\n bootstrap: [HdStatusComponent]\n})\nexport class HdStatusModule {\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CommonSessionService {\n putSession(session_key: string, session: any) {\n if (session) {\n window.sessionStorage.setItem(session_key, JSON.stringify(session));\n } else {\n window.sessionStorage.removeItem(session_key);\n }\n }\n\n getSession(session_key: string): any {\n return JSON.parse(window.sessionStorage.getItem(session_key));\n }\n\n removeSession(session_key: string) {\n window.sessionStorage.removeItem(session_key);\n }\n}\n","export const ColWidth = {\n tableImageColWidth: 25, // 表格小图标宽度\n tableTwoImageColWidth: 40, // 表格小图标宽度\n billNumberColWidth: 150, // 单据单号列宽度\n nameColWidth: 150, // 基本资料名称列宽度\n codeColWidth: 100, // 基本资料代码列宽度\n codeNameColWidth: 200, // 用于门店、货主、供应商以“[code]name“格式展示时固定宽度\n enumColWidth: 100, // 枚举列宽度\n dateColWidth: 100, // 单个日期\n dateTimeColWidth: 150, // 单个日期带时间\n dateRangeWidth: 200, // 日期范围\n operateColWidth: 150, // 操作列宽度\n numberColWidth: 100, // 数字列\n remarkColWidth: 250, // 备注列\n fixColWidth: 150, // 不属于以上内容的列统一使用该宽度,增加超长省略\n maxColWidth: 350 // 用于展示订单内容,需要缩略、展开显示的列\n};\n","\n// 表格行\nexport class HdTableColumn {\n title: string; // 列名\n name: string | Function = null; // 字段名\n render?: (value: any) => string; // 渲染函数\n width?: number; // 列宽\n color?: string; // 颜色\n align?: 'right' | 'left' | 'center' = 'left';\n click?: (value: any) => void;\n fixed?: 'left' | 'right' = null;\n fixedWidth?: number; // 固定列宽度\n btnList?: Array<OperateBtn> = [];\n isShow?: boolean = true;\n canSort?: boolean = false; // 是否可以排序\n canWarp?: boolean = false; // 用于某一列需要个性化的场景,当为true时,且表格选项showOperateColWarpButton为true时,通过按钮控制对应的列是否换行\n minWidth?: number; // 最小宽度,保证列名能正常显示\n}\n\nexport class OperateBtn {\n name: string;\n showConfirm?: boolean = false;\n isRepeat?: boolean = false; // 是否和别的按钮有显示冲突,譬如:开启,关闭需要再关闭按钮加一个这个属性\n click?: (value: any) => void;\n permission?: (value: any) => boolean;\n}\n\nexport class HdTableTotalOption {\n columnNumber: number; // 总列数\n insertIndex: number; // 插入下标\n insertName: string; // 插入字段\n}\n\nexport class TableCacheOption {\n pageSize: number;\n colWidths: Map<string, number>; // name -> width\n cols: Array<string>; // ['title']\n}\n\n// 设置列 树组件对象\nexport class TreeGrid {\n title: string = '';\n key: string = '';\n disabled?: boolean = false;\n checked?: boolean = false;\n selectable?: boolean = false;\n isLeaf?: boolean = true;\n expanded?: boolean = false;\n}","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\n TemplateRef\n} from '@angular/core';\nimport * as localforage from 'localforage';\nimport { InputBoolean, NzFormatBeforeDropEvent, NzFormatEmitEvent } from 'ng-zorro-antd/core';\nimport { NzResizeEvent } from 'ng-zorro-antd/resizable';\nimport { Observable, of } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { ColWidth } from '../model/colWidth';\nimport { Page } from '../model/common-type';\nimport { CommonSessionService } from '../service/common-session.service';\nimport { HdTableColumn, HdTableTotalOption, TableCacheOption, TreeGrid } from './hd-table.service';\n@Component({\n selector: 'hd-table',\n templateUrl: './hd-table.component.html',\n styleUrls: ['./hd-table.component.less']\n})\nexport class HdTableComponent implements OnInit {\n @Input() uuid: string;\n @Input() tableCols: Array<HdTableColumn> = [];\n @Input() tableData: Page<any>;\n @Input() @InputBoolean() showSelected: boolean = false;\n @Input() @InputBoolean() showOperateColWarpButton: boolean = false;\n @Input() selectField: string = 'billNumber';\n // 合计区域\n @Input() @InputBoolean() showTableTotal: boolean = false;\n @Input() tableTotalOption: Array<HdTableTotalOption>;\n @Output() sortEvent = new EventEmitter();\n @Output() selectEvent = new EventEmitter();\n @Output() tableSearchEvent = new EventEmitter();\n @Input() tableLoading: boolean = false;\n // 表格分页参数\n @Input() tablePageIndex: number = 1;\n @Input() tablePageSize: number;\n @Output() tablePageIndexChange = new EventEmitter<any>();\n @Output() tablePageSizeChange = new EventEmitter<any>();\n @ContentChild(\"tableTotal\", { static: false }) tableTotal: TemplateRef<any>;\n @ContentChild(\"tableLeftButton\", { static: false }) tableLeftButton: TemplateRef<any>;\n @ContentChild(\"tableRightButton\", { static: false }) tableRightButton: TemplateRef<any>;\n scroll = null;\n\n // 表格勾选参数\n isAllDisplayDataChecked = false;\n isIndeterminate = false;\n listOfDisplayData = [];\n listOfAllData = [];\n listOfSelection: Array<any> | TemplateRef<void>;\n mapOfCheckedId: { [key: string]: boolean; } = {};\n mapOfCheckList: { [key: string]: any; } = {};\n // 合计参数\n tableTotalOptionList = [];\n private textWidthCache: { [key: string]: number; } = {};\n // 缓存信息\n tableCacheOption: TableCacheOption = new TableCacheOption();\n userSession: any;\n\n tableColsCache: Array<HdTableColumn> = [];\n showTable: boolean = false;\n selectColListNodes: Array<TreeGrid> = [];\n selectColListNodesCache: Array<TreeGrid> = [];\n showListNodes: boolean = false;\n\n isDropdownVisible: boolean = false;\n // 设置列的可见操作数组\n nowListNodes: Array<TreeGrid> = [];\n // 设置列的不可见操作数组\n hideListNodes: Array<TreeGrid> = [];\n\n // 点击时需要有临时数组存放两个tree,用于取消时候恢复调整前的状态\n cancelNowListNodes: Array<TreeGrid> = [];\n cancelHideListNodes: Array<TreeGrid> = [];\n showDetail: boolean = false;\n localforage: any = null;\n localtionTmp: string = '';\n\n constructor(\n private cdr: ChangeDetectorRef,\n private commonSessionService: CommonSessionService\n ) {\n this.localforage = localforage.createInstance({\n driver: localforage.INDEXEDDB,\n name: 'hd-fscm', // 设置存储库的名称\n version: 1.0, // 设置存储库的版本\n storeName: 'hd-fscm-store', // 设置存储库的存储空间名称\n });\n }\n\n ngOnInit(): void {\n this.localtionTmp = location.pathname;\n if (this.localtionTmp) {\n this.localtionTmp = this.localtionTmp.replace(/\\//g, \"_\");\n }\n this.userSession = this.commonSessionService.getSession('__jy_authorization_session__');\n // 用于开发环境调试\n if (!this.userSession) {\n this.userSession = {\n userCode: 'dev'\n };\n }\n\n this.deleteHideItem();\n if (!this.tableCols || this.tableCols.length === 0) {\n return;\n }\n\n this.localforage.ready().then(() => {\n this.getInitLocalforage();\n }).catch(function (e) {\n console.log('localforage加载异常step1', e);\n throw 'localforage加载异常';\n });\n }\n\n ngOnChanges(changes: SimpleChange) {\n // 数据改变时,重置勾选状态\n if (changes && changes['tableData'] && changes['tableData']['currentValue'] && changes['tableData']['previousValue']) {\n if (changes['tableData']['currentValue']['pageSize'] !== changes['tableData']['previousValue']['pageSize']\n || changes['tableData']['currentValue']['pageNumber'] !== changes['tableData']['previousValue']['pageNumber']) {\n return;\n }\n this.resetStatus();\n }\n\n if (changes['tableCols'] && JSON.stringify(changes['tableCols'].currentValue) !== JSON.stringify(changes['tableCols'].previousValue)) {\n this.deleteHideItem();\n if (!this.tableCols || this.tableCols.length === 0) {\n return;\n }\n this.localforage.ready().then(() => {\n this.getInitLocalforage();\n }).catch(function (e) {\n console.log('localforage加载异常step2', e);\n throw 'localforage加载异常';\n });\n }\n }\n\n deleteHideItem() {\n // 首先把isShow为false数据剔除掉\n this.tableCols = this.tableCols.filter(item => {\n // 如果对象没有 isShow 属性,则默认为 true,保留该对象\n if (!item.hasOwnProperty('isShow')) {\n return true;\n }\n // 如果对象有 isShow 属性,则检查其值是否为 true\n return item.isShow === true;\n });\n }\n\n sort(sort: { key: string; value: string; }) {\n this.sortEvent.emit(sort);\n }\n\n getInitLocalforage() {\n // 首先获取当前hd-table存储的数据 如果没有,则初始化下当前的数据\n this.localforage.getItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid).then((value: TableCacheOption) => {\n this.tableCacheOption = value;\n if (this.tableCacheOption.pageSize && this.tableCacheOption.pageSize > 10) {\n this.tablePageSize = this.tableCacheOption.pageSize;\n } else {\n this.tablePageSize = this.tableCacheOption.pageSize || 10;\n }\n if (!this.tableCacheOption.colWidths) {\n this.tableCacheOption.colWidths = new Map<string, number>();\n }\n this.tablePageSizeChange.emit(this.tablePageSize);\n this.initTable();\n }).catch((err) => {\n this.tableCacheOption = new TableCacheOption();\n this.tablePageSize = 10;\n this.tableCacheOption.pageSize = 10;\n this.tableCacheOption.colWidths = new Map<string, number>();\n this.tablePageSizeChange.emit(this.tablePageSize);\n this.initTable();\n });\n }\n\n initTable() {\n this.showTable = false;\n if (!this.uuid) {\n throw 'hd-table缺失uuid参数,请使用编辑器插件生成并给hd-table赋予uuid属性';\n }\n if (this.judgeRepeatCols()) {\n this.dealCols();\n this.setCols();\n this.dealScroll();\n this.dealOperateBtn();\n this.showTable = true;\n }\n }\n\n // 设置列点击取消\n cancelDropdown(): void {\n this.isDropdownVisible = false;\n this.hideListNodes = JSON.parse(JSON.stringify(this.cancelHideListNodes));\n this.nowListNodes = JSON.parse(JSON.stringify(this.cancelNowListNodes));\n }\n\n // 点击触发设置列\n confirmDropdown(): void {\n // 临时存放下,取消的时候恢复原来的状态 深拷贝下对象数组\n this.cancelHideListNodes = JSON.parse(JSON.stringify(this.hideListNodes));\n this.cancelNowListNodes = JSON.parse(JSON.stringify(this.nowListNodes));\n this.isDropdownVisible = true;\n }\n\n submitGrids() {\n this.tableCacheOption.cols = [];\n this.nowListNodes.forEach(item => {\n this.tableCacheOption.cols.push(item.title);\n });\n this.saveTableCacheOption();\n this.initTable();\n this.isDropdownVisible = false;\n }\n\n // 从缓存设置列\n setCols() {\n this.showListNodes = false;\n this.nowListNodes = [];\n this.hideListNodes = [];\n if (this.tableCacheOption.cols) {\n let { notIncols, incols } = this.tableColsCache.reduce((acc, item) => {\n if (this.tableCacheOption.cols.includes(item.title)) {\n acc.incols.push(item);\n } else {\n acc.notIncols.push(item);\n }\n return acc;\n }, { notIncols: [], incols: [] });\n incols.sort((a, b) => {\n return this.tableCacheOption.cols.indexOf(a.title) - this.tableCacheOption.cols.indexOf(b.title);\n });\n this.tableCols = incols.concat(notIncols);\n }\n\n this.tableCols.forEach((element, index) => {\n if (this.tableCacheOption.cols) {\n element.isShow = this.tableCacheOption.cols.includes(element.title) ? true : false;\n if (element.isShow) {\n this.nowListNodes.push({\n title: element.title,\n key: element.title,\n disabled: element.fixed ? true : false,\n // selectable: false,\n checked: this.tableCacheOption.cols.includes(element.title) ? true : false\n });\n } else {\n this.hideListNodes.push({\n title: element.title,\n key: element.title,\n disabled: element.fixed ? true : false,\n // selectable: false,\n checked: this.tableCacheOption.cols.includes(element.title) ? true : false\n });\n }\n } else {\n element.isShow = true;\n this.nowListNodes.push({\n title: element.title,\n key: element.title,\n checked: true,\n // selectable: false,\n disabled: element.fixed ? true : false\n });\n }\n });\n\n // 调整列宽为缓存宽度\n if (this.tableCacheOption && this.tableCacheOption.colWidths && this.tableCacheOption.colWidths.size !== 0) {\n this.tableCols.forEach((col) => {\n if (this.tableCacheOption.colWidths.has(col.title)) {\n col.width = this.tableCacheOption.colWidths.get(col.title);\n }\n });\n }\n\n this.dealCols();\n setTimeout(() => {\n this.showListNodes = true;\n }, 0);\n }\n\n // 拖拽操作\n beforeDrop = (arg: NzFormatBeforeDropEvent): Observable<boolean> => {\n if (arg.node.origin.disabled || !arg.dragNode.origin.checked || arg.pos === 0) {\n return of(false);\n } else {\n let node: TreeGrid = new TreeGrid();\n node.checked = arg.dragNode.origin.checked;\n node.disabled = arg.dragNode.origin.disabled;\n node.expanded = arg.dragNode.origin.expanded;\n node.isLeaf = arg.dragNode.origin.isLeaf;\n node.key = arg.dragNode.origin.key;\n node.selectable = arg.dragNode.origin.selectable;\n node.title = arg.dragNode.origin.title;\n // 拖拽元素下标\n let dragNodeIndex = this.nowListNodes.findIndex(item => { return item.title == arg.dragNode.origin.title; });\n // 目标位置的下标\n let nodeIndex = this.nowListNodes.findIndex(item => { return item.title == arg.node.origin.title; }) + (arg.pos === -1 ? 0 : arg.pos);\n this.nowListNodes.splice(nodeIndex, 0, node);\n this.nowListNodes.splice(nodeIndex >= dragNodeIndex ? dragNodeIndex : dragNodeIndex + 1, 1);\n return of(true).pipe(delay(100));\n }\n };\n\n moveElementNearby(arr, elementToMoveTitle, targetElementTitle, pos) {\n const tmpArray = JSON.parse(JSON.stringify(arr));\n const targetIndex = tmpArray.findIndex(item => item.title === targetElementTitle);\n const elementIndex = tmpArray.findIndex(item => item.title === elementToMoveTitle);\n const newIndex = pos < 0 ? (targetIndex + pos) : targetIndex;\n // 移除目标元素,并插入到新的位置\n const removedElement = tmpArray.splice(elementIndex, 1);\n tmpArray.splice(newIndex + 1, 0, removedElement[0]);\n return tmpArray;\n }\n\n // 勾选操作\n checkAction(event: NzFormatEmitEvent): void {\n // 勾选只有在hideListNodes,取消勾选只有在nowListNodes\n if (event.node.origin.checked) {\n let node: TreeGrid = new TreeGrid();\n node = this.hideListNodes.find((item) => {\n return item.title === event.node.origin.title;\n });\n node.checked = true;\n // 找到第一个fixed属性为right的title,找到插入元素的位置\n let title = null;\n for (let i = this.tableColsCache.length - 1; i >= 0; i--) {\n if (this.tableColsCache[i].fixed === 'right') {\n title = this.tableColsCache[i].title;\n break;\n }\n }\n let temporaryNodeList = this.nowListNodes.slice(0);\n if (!title) {\n temporaryNodeList.push(node);\n } else {\n const index = this.nowListNodes.findIndex(node => node.title === title);\n temporaryNodeList.splice(index, 0, node);\n }\n this.nowListNodes = temporaryNodeList;\n this.hideListNodes = this.hideListNodes.filter((item) => {\n return item.title !== event.node.origin.title;\n });\n } else {\n // if (this.hideListNodes.length === 0 && this.tableCacheOption && this.tableCacheOption.cols) {\n // this.hideListNodes = this.getHideListNodes();\n // }\n let temporaryNodeList = this.hideListNodes.slice(0);\n this.nowListNodes.forEach(item => {\n if (item.title === event.node.origin.title) {\n const innerItem = JSON.parse(JSON.stringify(item));\n innerItem.checked = false;\n temporaryNodeList.push(innerItem);\n }\n });\n this.hideListNodes = temporaryNodeList;\n\n // 为了防止未选择的数组顺序因为push方法而改变,通过初始数据获取显示的字段列表\n this.nowListNodes = this.nowListNodes.filter((item) => {\n return item.title !== event.node.origin.title;\n });\n }\n }\n\n // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表\n getHideListNodes(): Array<TreeGrid> {\n let temporaryNodeList: Array<TreeGrid> = [];\n // 从tableColsCache里面找没有在storage里面出现的字段,组成hideList\n this.tableColsCache.forEach((item) => {\n if (!this.tableCacheOption.cols.includes(item.title)) {\n let nodeItem: TreeGrid = new TreeGrid();\n nodeItem.title = item.title;\n nodeItem.key = item.title;\n nodeItem.disabled = item.fixed ? true : false;\n nodeItem.checked = false;\n temporaryNodeList.push(nodeItem);\n }\n });\n return temporaryNodeList;\n }\n\n dealCols() {\n if (!this.tableCols[0].minWidth) {\n this.tableCols.forEach(item => {\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = item.title;\n document.body.appendChild(span);\n item.minWidth = span.offsetWidth + 16;\n span.style.display = 'none';\n document.body.removeChild(span);\n });\n }\n // 处理左右吸附的数据在数组中的位置\n const leftFixedCols = this.tableCols.filter(col => col.fixed === 'left');\n const rightFixedCols = this.tableCols.filter(col => col.fixed === 'right');\n const normalCols = this.tableCols.filter(col => !col.fixed);\n const resultCols = leftFixedCols.concat(normalCols).concat(rightFixedCols);\n this.tableCols = resultCols;\n if (!this.tableColsCache || this.tableColsCache.length === 0) {\n // 缓存一下表格的数据\n this.tableColsCache = [...this.tableCols];\n }\n }\n\n saveTableCacheOption() {\n this.localforage.setItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid, this.tableCacheOption);\n }\n\n judgeRepeatCols() {\n for (let i = 0; i < this.tableCols.length; i++) {\n for (let j = i + 1; j < this.tableCols.length; j++) {\n if (this.tableCols[i].title === this.tableCols[j].title) {\n throw `hd-table组件中列名 ${this.tableCols[i].title} 重复`;\n }\n }\n }\n return true;\n }\n\n onResize({ width }: NzResizeEvent, col: HdTableColumn): void {\n let tempWidth = 0;\n if (width > col.minWidth) {\n tempWidth = width;\n } else {\n tempWidth = col.minWidth;\n }\n this.tableCacheOption.colWidths.set(col.title, tempWidth);\n this.saveTableCacheOption();\n this.tableCols = this.tableCols.map(e => (e.title === col.title ? { ...e, width: tempWidth } : e));\n this.dealScroll();\n }\n\n dealOperateBtn() {\n let operateCol = this.tableCols.find(col => col.title === '操作') || null;\n if (operateCol) {\n let textStr = '';\n operateCol.btnList.forEach(btn => {\n if (!btn.isRepeat) {\n textStr += btn.name;\n }\n });\n\n const span = document.createElement('a');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = textStr;\n document.body.appendChild(span);\n operateCol.width = span.offsetWidth + (operateCol.btnList.filter(item => !item.isRepeat).length - 1) * 4 + 16;\n span.style.display = 'none';\n document.body.removeChild(span);\n }\n }\n\n triggerEvent(fn: any, event: any) {\n if (fn) {\n fn(event);\n }\n }\n\n dealScroll() {\n let colWidth = 0;\n if (this.showSelected) {\n colWidth += 40;\n }\n this.tableCols.forEach(item => {\n if (!item.width) {\n item.width = ColWidth.fixColWidth;\n }\n if (item.isShow) {\n item.fixedWidth = colWidth;\n colWidth += item.width;\n }\n });\n\n if (this.tableTotal) {\n this.scroll = {\n x: '1px',\n y: 'calc(100vh - 180px)'\n };\n } else {\n this.scroll = {\n x: '1px',\n y: 'calc(100vh - 140px)'\n };\n }\n }\n\n isTextOverflow(text: string, maxWidth: number): boolean {\n const cachedWidth = this.textWidthCache[text];\n if (cachedWidth !== undefined) {\n return cachedWidth + 15 >= maxWidth;\n }\n\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = text;\n document.body.appendChild(span);\n const isOverflow = span.offsetWidth + 15 >= maxWidth;\n this.textWidthCache[text] = span.offsetWidth;\n span.style.display = 'none';\n document.body.removeChild(span);\n return isOverflow;\n }\n\n // 表格勾选逻辑\n currentPageDataChange($event: any): void {\n this.listOfDisplayData = $event;\n this.refreshStatus();\n this.resetStatus();\n }\n\n search(reset: boolean) {\n this.tableCacheOption.pageSize = this.tablePageSize;\n this.saveTableCacheOption();\n if (reset) {\n this.tablePageSizeChange.emit(this.tablePageSize);\n } else {\n this.tablePageIndexChange.emit(this.tablePageIndex);\n // 触发父组件查询事件\n this.tableSearchEvent.emit(reset);\n }\n }\n\n resetStatus() {\n this.isAllDisplayDataChecked = false;\n this.isIndeterminate = false;\n this.mapOfCheckedId = {};\n this.mapOfCheckList = {};\n this.selectEvent.emit([]);\n }\n\n refreshStatus(event: boolean = false, data: any = null): void {\n if (event && data) {\n !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);\n } else if (!event && data) {\n this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];\n }\n this.isAllDisplayDataChecked = this.listOfDisplayData.every(item => this.mapOfCheckedId[item[this.selectField]]);\n this.isIndeterminate =\n this.listOfDisplayData.some(item => this.mapOfCheckedId[item[this.selectField]]) && !this.isAllDisplayDataChecked;\n // 触发select事件\n if (this.selectEvent) {\n const selectedList: Array<any> = Object.values(this.mapOfCheckList);\n this.selectEvent.emit(selectedList);\n }\n // 如果数据为空,则清空勾选标识\n if (this.tableData.content.length === 0) {\n this.isAllDisplayDataChecked = false;\n }\n }\n\n checkAll(value: boolean): void {\n this.listOfDisplayData.forEach(item => {\n if (value) {\n !this.mapOfCheckList[item[this.selectField]] && (this.mapOfCheckList[item[this.selectField]] = item);\n } else {\n this.mapOfCheckList[item[this.selectField]] && delete this.mapOfCheckList[item[this.selectField]];\n }\n\n this.mapOfCheckedId[item[this.selectField]] = value;\n });\n this.refreshStatus();\n }\n\n judgeColEmpty(str: any) {\n if (str || str === 0) {\n return str;\n } else {\n return '<空>';\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';\nimport { NzResizableModule } from 'ng-zorro-antd/resizable';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { HdButtonGroupModule } from '../hd-button-group/hd-button-group.module';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\nimport { HdSpaceModule } from '../hd-space/hd-space.module';\nimport { HdStatusModule } from '../hd-status/hd-status.module';\nimport { CommonSessionService } from '../service/common-session.service';\nimport { HdTableComponent } from './hd-table.component';\n@NgModule({\n imports: [\n CommonModule,\n NzTableModule,\n HdSpaceModule,\n HdStatusModule,\n HdButtonModule,\n HdButtonGroupModule,\n NzToolTipModule,\n NzPopconfirmModule,\n NzResizableModule,\n NzDropDownModule,\n NzTreeModule,\n NzIconModule\n ],\n declarations: [HdTableComponent],\n providers: [CommonSessionService],\n exports: [HdTableComponent],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class HdTableModule { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'hd-tip',\n templateUrl: './hd-tip.component.html',\n styleUrls: ['./hd-tip.component.less']\n})\nexport class HdTipComponent implements OnInit {\n @Input() showIcon: boolean = true;\n @Input() fontSize: number;\n @Input() title: string;\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdTipComponent } from './hd-tip.component';\nimport {NgZorroAntdModule} from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n NgZorroAntdModule\n ],\n exports: [HdTipComponent],\n declarations: [HdTipComponent]\n})\nexport class HdTipModule { }\n","import { HdButtonGroupModule } from './hd-button-group/hd-button-group.module';\nimport { HdButtonModule } from './hd-button/hd-button.module';\n\nimport { HdDetailFormModule } from './hd-detail-form/hd-detail-form.module';\nimport { HdDetailLinesModule } from './hd-detail-lines/hd-detail-lines.module';\nimport { HdDetailTipModule } from './hd-detail-tip/hd-detail-tip.module';\n\nimport { HdFilterModule } from './hd-filter/hd-filter.module';\nimport { HdFormLinesModule } from './hd-form-lines/hd-form-lines.module';\nimport { HdFormModule } from './hd-form/hd-form.module';\n\nimport { NgModule } from '@angular/core';\nimport { HdCurrentTableModule } from './hd-current-table/hd-current-table.module';\nimport { HdLogModule } from './hd-log/hd-log.module';\nimport { HdPopconfirmModule } from './hd-popconfirm/hd-popconfirm.module';\nimport { HdSpaceModule } from './hd-space/hd-space.module';\nimport { HdStatusModule } from './hd-status/hd-status.module';\nimport { HdTableModule } from './hd-table/hd-table.module';\nimport { HdTipModule } from './hd-tip/hd-tip.module';\n@NgModule({\n exports: [\n HdButtonModule,\n HdButtonGroupModule,\n\n HdDetailFormModule,\n HdDetailLinesModule,\n HdDetailTipModule,\n\n HdFilterModule,\n HdFormModule,\n HdFormLinesModule,\n\n HdSpaceModule,\n HdStatusModule,\n HdCurrentTableModule,\n HdTableModule,\n HdTipModule,\n HdPopconfirmModule,\n HdLogModule\n ]\n})\n\nexport class HdComponentModule {\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdComponentModule } from \"./hd-component.module\";\nimport { HdLogComponent } from './hd-log/hd-log.component';\n@NgModule({\n imports: [CommonModule],\n exports: [HdComponentModule],\n providers: [],\n entryComponents: [HdLogComponent]\n})\nexport class FantasyNgzorroModule { }\n","import { HdOption } from \"../model/common-type\";\n\n// 表格行\nexport class TableColumn {\n label: string; // 文本\n name: string; // 字段名称\n value?: string | boolean | Array<string | Date> | null = null; // 值 不传默认为null\n selectList?: Array<HdOption>; // 控件为Select时,选项列表\n // 组件内部成员\n show?: boolean;\n}\n\n//\nexport class TableTotalOption {\n columnNumber: number; // 总列数\n insertIndex: number; // 插入下标\n insertName: string; // 插入字段\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdDetailFormService {\n\n constructor() { }\n\n}\n","export class TotalOption {\n insertIndex: number; // 插入下标\n insertValue: any; // 插入值\n align?: string; // 靠左还是靠右\n showDecimal?: boolean; // 是否显示小数位\n isHide?: boolean; // 是否隐藏, 这里只针对列会同步消失的场景\n}\n","import { Injectable } from '@angular/core';\nimport { SelectOption, CascaderOption } from '../model/common-type';\n\n// 控件列表\nexport class Filter {\n type: FilterListType;\n label: string; // 文本\n name: string; // 字段名称\n placeholder?: string; // 输入框提示文案\n value?: string | boolean | number | Array<string | Date> | null = null; // 值 不传默认为null\n // 组件内部成员\n show?: boolean;\n selectOption?: SelectOption; // 控件为Select时,选项列表\n onSearchEvent?: Function; // select选择器搜索事件 可用于更新备选集合\n onChangeEvent?: Function; // 控件的值改变事件 可用于控件间联动\n hdDisabledDate?: Function; // date-picker组件不可选择的日期\n showTime?: boolean = false; // 日期选择器是否包含时间\n require?: boolean = false; // 是否必填\n cascaderOption?: CascaderOption; // 级联选择器配置\n}\n\n\n// 控件类型\nexport enum FilterListType {\n Input, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n MultipleSelect, // 多选\n Cascader, // 级联选择\n Month // 月份选择\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFilterService {\n\n constructor() {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { CascaderOption, InputNumber, SelectOption } from '../model/common-type';\n\n// 控件列表\nexport class FormItem {\n type: FormListType;\n label: string; // 文本\n name: string; // 字段名称\n require?: boolean = false; // 是否必填\n placeholder?: string; // 输入框提示文案\n width?: number = 1; // 占据的列数。默认1\n hide?: boolean = false; // 是否为隐藏字段,仅用于填充表单的字段,不显示在页面上\n totalWidth?: number = 0;\n isRowFirst?: number = 0; // 是否是一行的第一个元素\n columnItems?: Array<any>; // 当前行的所有列的items\n value?: string | boolean | number | Date | Array<string | Date> | null = null; // 值 不传默认为null\n disabled?: boolean;\n color?: string;\n // 组件内部成员\n maxLength?: number; // input控件的输入长度\n selectOption?: SelectOption; // 控件为Select时,选项列表\n inputNumber?: InputNumber = new InputNumber(); // number组件的min、max、step\n onChangeEvent?: Function; // 控件的值改变事件 可用于控件间联动\n onSearchEvent?: Function; // select选择器搜索事件 可用于更新备选集合\n defaultLabel?: string | Array<string>; // select选择器不初始化的时候可以使用defaultLabel搭配value,设置默认值\n hdDisabledDate?: Function; // date-picker组件不可选择的日期\n explain?: string; // label底部的介绍\n textAreaRows?: number; // textArea的行数\n showTime?: boolean = false; // 日期选择器是否包含时间\n labelColor?: string; // label的文字的颜色\n validatorKeys?: Array<ValidatorKey>;\n validator?: ValidatorFn;\n onChangeEventDebounceTime?: number; // change事件防抖\n onSearchEventEventDebounceTime?: number; // search事件防抖\n cascaderOption?: CascaderOption; // 级联选择器配置\n format?: string; // 时间的格式化规则\n}\n\nexport class ValidatorKey {\n key: string;\n label: string;\n}\n\n// 控件类型\nexport enum FormListType {\n Input, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n TextArea, // 块级输入框\n InputNumber, // 数字输入\n MultipleSelect, // 多选\n ViewDom, // 单纯的显示控件\n Switch, // 开关\n Time, // 时间选择器\n Cascader // 级联选择器\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormService {\n constructor() {\n }\n}\n","export const StaticConst = {\n MaxPageSize: 99999999\n};\n","import { FormItem } from './hd-form/hd-form.service';\nimport { round } from 'lodash';\n// 工具类\nexport const Utils = {\n /**\n * 填充select控件选项\n * @param formList 入参数组 Array<any>\n * @param name 需要填充options的属性名称\n * @param options 选项列表\n */\n fillSelectOption(formList: Array<any>, name: string, options: Array<any>) {\n const returnData = formList;\n if (!returnData || !returnData.length) {\n return returnData;\n }\n const length = formList.length;\n for (let i = 0; i < length; i++) {\n if (returnData[i].name === name) {\n returnData[i].selectOption.selectList = options;\n }\n }\n return returnData;\n },\n\n /**\n * 填充FormItem数组:针对入参list的每一个FormItem,判断obj中是否有对应的name字段,如果有,则填充value。\n * @param list 入参数组 Array<FormItem>\n * @param obj 需要填充到list的属性\n */\n fillArrayFormItem(list: Array<FormItem>, obj: Object) {\n const returnData = [];\n if (!list || !list.length) {\n return returnData;\n }\n const length = list.length;\n for (let i = 0; i < length; i++) {\n if (obj[list[i].name]) {\n list[i].value = obj[list[i].name];\n }\n }\n return list;\n },\n\n /**\n * 数组转换成选择器的选项数组\n * @param list 入参数组 字符串数组或对象数组\n * @param option 转换选项\n * 注:list为字符串数组,option不需要传,按照标准的label、value转换\n */\n arrayToSelectOptionList(list: Array<any>, option?: {\n value: string,\n label: string,\n valueTip?: string,\n labelTip?: string\n }) {\n const returnData = [];\n if (!list || !list.length) {\n return returnData;\n }\n if (option) {\n if (option.labelTip && option.valueTip) {\n list.forEach((item) => {\n const returnItem: any = item;\n returnItem.label = item[option.label];\n returnItem.value = item[option.value];\n if (option.valueTip) {\n returnItem[option.valueTip] = item[option.value];\n }\n if (option.labelTip) {\n returnItem[option.labelTip] = item[option.label];\n }\n returnData.push(returnItem);\n });\n } else {\n list.forEach((item) => {\n const returnItem: any = item;\n returnItem.label = item[option.label];\n returnItem.value = item[option.value];\n returnData.push(returnItem);\n });\n }\n } else {\n list.forEach((item) => {\n const returnItem: any = {};\n returnItem.label = item;\n returnItem.value = item;\n returnData.push(returnItem);\n });\n }\n return returnData;\n },\n\n /**\n * 求和\n * @param nums 数组\n * @param precision 精度\n */\n add(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n let result = 0;\n for (const num of nums) {\n result += num;\n }\n return round(result, precision);\n },\n\n /**\n * 减法\n * @param nums 数组\n * @param precision 精度\n */\n subtract(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n if (nums.length < 2) {\n throw new Error('减法入参数量至少要2个!');\n }\n let result = nums.shift();\n for (const num of nums) {\n result -= num;\n }\n return round(result, precision);\n },\n\n /**\n * 乘法\n * @param nums 数组\n * @param precision 精度\n */\n multiply(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n let result = 1;\n for (const num of nums) {\n result = result * num;\n }\n return round(result, precision);\n },\n\n /**\n * 除法\n * @param nums 数组\n * @param precision 精度\n */\n divide(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n if (nums.length < 2) {\n throw new Error('除法入参数量至少要2个!');\n }\n let result = nums.shift();\n for (const num of nums) {\n if (num === 0) {\n throw new Error('除数不能为0!');\n }\n result = result / num;\n }\n return round(result, precision);\n }\n};\n"],"names":["tslib_1.__decorate","InputBoolean","localforage.createInstance","localforage.INDEXEDDB"],"mappings":"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"}
1
+ {"version":3,"file":"fantasy-ngzorro.js","sources":["ng://fantasy-ngzorro/hd-button-group/hd-button-group.component.ts","ng://fantasy-ngzorro/hd-button-group/hd-button-group.module.ts","ng://fantasy-ngzorro/hd-button/hd-button.service.ts","ng://fantasy-ngzorro/hd-button/hd-button.component.ts","ng://fantasy-ngzorro/hd-button/hd-button.module.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.component.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.module.ts","ng://fantasy-ngzorro/model/common-type.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.component.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.module.ts","ng://fantasy-ngzorro/hd-status/hd-status.service.ts","ng://fantasy-ngzorro/hd-detail-tip/hd-detail-tip.component.ts","ng://fantasy-ngzorro/hd-detail-tip/hd-detail-tip.module.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.component.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.module.ts","ng://fantasy-ngzorro/hd-space/hd-space.service.ts","ng://fantasy-ngzorro/hd-space/hd-space.component.ts","ng://fantasy-ngzorro/hd-space/hd-space.module.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.service.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.component.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.module.ts","ng://fantasy-ngzorro/hd-form/hd-form.component.ts","ng://fantasy-ngzorro/hd-form/hd-form.module.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.component.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.module.ts","ng://fantasy-ngzorro/hd-log/hd-log.component.ts","ng://fantasy-ngzorro/hd-log/hd-log.service.ts","ng://fantasy-ngzorro/hd-log/hd-log.module.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.component.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.module.ts","ng://fantasy-ngzorro/hd-status/hd-status.component.ts","ng://fantasy-ngzorro/hd-status/hd-status.module.ts","ng://fantasy-ngzorro/service/common-session.service.ts","ng://fantasy-ngzorro/model/colWidth.ts","ng://fantasy-ngzorro/hd-table/hd-table.service.ts","ng://fantasy-ngzorro/hd-table/hd-table.component.ts","ng://fantasy-ngzorro/hd-table/hd-table.module.ts","ng://fantasy-ngzorro/hd-tip/hd-tip.component.ts","ng://fantasy-ngzorro/hd-tip/hd-tip.module.ts","ng://fantasy-ngzorro/hd-component.module.ts","ng://fantasy-ngzorro/fantasy-ngzorro.module.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.service.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.service.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.service.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.service.ts","ng://fantasy-ngzorro/hd-form/hd-form.service.ts","ng://fantasy-ngzorro/model/staticConst.ts","ng://fantasy-ngzorro/utils.ts"],"sourcesContent":["import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'hd-button-group',\n templateUrl: './hd-button-group.component.html',\n styleUrls: ['./hd-button-group.component.less']\n})\nexport class HdButtonGroupComponent implements OnInit {\n @ContentChild(\"buttonGroupLeft\", { static: false }) buttonGroupLeft: TemplateRef<any>;\n @ContentChild(\"buttonGroupRight\", { static: false }) buttonGroupRight: TemplateRef<any>;\n\n constructor() { }\n\n ngOnInit() {\n\n }\n}\n","import { HdButtonGroupComponent } from './hd-button-group.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdButtonGroupComponent],\n exports: [HdButtonGroupComponent]\n})\nexport class HdButtonGroupModule { }\n","import { Injectable } from '@angular/core';\n\nexport enum ButtonType {\n primary = 'primary',\n dashed = 'dashed',\n danger = 'danger',\n default = 'default',\n link = 'link',\n submit = 'submit',\n // 增加类型\n reset = 'reset',\n add = 'add'\n}\n\nexport enum ButtonSize {\n normal = 'normal',\n small = 'small'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdButtonService {\n\n constructor() { }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChange } from '@angular/core';\nimport { InputBoolean } from 'ng-zorro-antd';\nimport { ButtonSize, ButtonType } from './hd-button.service';\n@Component({\n selector: 'hd-button',\n templateUrl: './hd-button.component.html',\n styleUrls: ['./hd-button.component.less']\n})\nexport class HdButtonComponent implements OnInit {\n\n // 默认default\n @Input() type: ButtonType = ButtonType.default;\n @Input() size: ButtonSize = ButtonSize.normal;\n @Input() @InputBoolean() loading: boolean;\n @Input() @InputBoolean() disabled: boolean = false;\n @Output() clickAction = new EventEmitter<any>();\n @Output() nzOnConfirm = new EventEmitter<any>();\n constructor() { }\n\n ngOnInit() {\n if ((this.loading === false || this.loading === true) && this.clickAction.observers.length === 0 && this.nzOnConfirm.observers.length === 0) {\n throw '存在loading效果的hd-button组件禁止使用click绑定点击事件,请使用clickAction绑定!';\n }\n if (this.type === 'submit') {\n throw '禁止使用submit类型的按钮,请使用普通按钮+click事件触发表单提交!';\n }\n }\n\n ngOnChanges(changes: SimpleChange) {\n if (changes && changes['loading']) {\n if ((changes['loading']['currentValue'] === true && changes['loading']['previousValue'] === false)\n || (changes['loading']['currentValue'] === false && changes['loading']['previousValue'] === true)) {\n this.disabled = !this.disabled;\n }\n }\n }\n\n innerClickAction(option: any) {\n // loading 状态下,不允许触发点击事件\n if (this.loading) {\n return;\n }\n this.clickAction.emit(option);\n }\n}\n","import { HdButtonComponent } from './hd-button.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdButtonComponent],\n exports: [HdButtonComponent]\n})\nexport class HdButtonModule { }\n","import { Component, Input, OnInit, SimpleChange } from '@angular/core';\nimport { HdOption } from '../model/common-type';\n\n@Component({\n selector: 'hd-detail-form',\n templateUrl: './hd-detail-form.component.html',\n styleUrls: ['./hd-detail-form.component.less']\n})\nexport class HdDetailFormComponent implements OnInit {\n @Input() formCols: Array<HdOption> = new Array();\n\n constructor() { }\n\n ngOnInit() {\n if (this.formCols && this.formCols.length > 0) {\n // 剔除掉formCols里面不需要显示的内容\n this.formCols = this.formCols.filter(item => !item.hide);\n }\n }\n\n ngOnChanges(changes: SimpleChange) {\n if (changes['formCols'] && JSON.stringify(changes['formCols'].currentValue) !== JSON.stringify(changes['formCols'].previousValue)) {\n if (this.formCols && this.formCols.length > 0) {\n // 剔除掉formCols里面不需要显示的内容\n this.formCols = this.formCols.filter(item => !item.hide);\n }\n }\n }\n\n triggerEvent(fn: any) {\n if (fn) {\n fn(event);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdDetailFormComponent } from './hd-detail-form.component';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n NgZorroAntdModule\n ],\n exports: [HdDetailFormComponent],\n declarations: [HdDetailFormComponent]\n})\nexport class HdDetailFormModule { }\n","export class Page<T> {\n totalPages = 0;\n totalElements = 0;\n pageNumber = 0;\n pageSize = 10;\n hasContent = false;\n hasNext = false;\n content: Array<T> = [];\n}\n\nexport class HdOption {\n label: string;\n value: any;\n color?: string;\n hide?: boolean;\n click?: (value: any) => void;\n}\n\nexport class SelectOption {\n label: string;\n value: string;\n selectList?: Array<any>;\n selectListName?: string;\n showLabelAndValue?: boolean = false;\n hdDropdownMatchSelectWidth?: boolean = false;\n hdServerSearch?: boolean = false;\n hdShowItemCode?: boolean = false; // 是否用[value]label显示选项列表\n tableColumns?: Array<SelectOptionTableColumn>;\n hdShowSearch?: boolean = true;\n hdAllowClear?: boolean = true;\n}\n\nexport class SelectOptionTableColumn {\n width: number;\n label: string; // 这里对应的是列名\n name: string; // 对应selectList里面的name值, 如果有render字段 则去render函数渲染\n icons?: Array<SelectOptionTableColumnIcon>; // 对应的图片名字\n render?: (value: any) => string;\n}\n\nexport class SelectOptionTableColumnIcon {\n iconName: string;\n fieldName: string;\n}\n\nexport class InputNumber {\n min?: number = 0;\n max?: number = 99999999;\n step?: number = 1;\n precision?: number = 4;\n}\n\nexport class CascaderOption {\n options: Array<any>;\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { round } from 'lodash';\nimport { InputBoolean } from 'ng-zorro-antd/core';\nimport { Page } from '../model/common-type';\nimport { TotalOption } from './hd-detail-lines.service';\n\n@Component({\n selector: 'hd-detail-lines',\n templateUrl: './hd-detail-lines.component.html',\n styleUrls: ['./hd-detail-lines.component.less']\n})\nexport class HdDetailLinesComponent implements OnInit {\n @Input() lines: Array<any>;\n @Input() @InputBoolean() showSelected: boolean = false;\n @Input() @InputBoolean() allowDrop: boolean = false;\n @Input() scroll: { [key: string]: string } = { x: '1px' };\n @Input() selectField: string = 'billNumber';\n @Input() selectedField: string;\n @Output() selectEvent = new EventEmitter();\n @ContentChild(\"detailLineHead\", { static: false }) detailLineHead: TemplateRef<any>;\n @ContentChild(\"detailLineBody\", { static: false }) detailLineBody: TemplateRef<any>;\n // 合计区域\n @Input() @InputBoolean() showTotal: boolean = false;\n @Input() totalOption: Array<TotalOption> = [];\n @Input() columnsNumber: number | string = 0;\n @Input() hdFrontPagination: boolean = false;\n totalOptionList = [];\n\n tableData: Page<any> = new Page();\n tableLoading: boolean = false;\n // 表格分页参数\n tablePageIndex: number = 1;\n tablePageSize: number = 10;\n // 表格勾选参数\n isAllDisplayDataChecked = false;\n isIndeterminate = false;\n listOfDisplayData = [];\n listOfAllData = [];\n listOfSelection: Array<any> | TemplateRef<void>;\n mapOfCheckedId: { [key: string]: boolean } = {};\n mapOfCheckList: { [key: string]: any } = {};\n\n constructor() { }\n\n ngOnInit(): void {\n this.countSelected();\n this.calculateTotal();\n }\n\n ngOnChanges(): void {\n this.countSelected();\n this.calculateTotal();\n }\n\n private countSelected(): void {\n if (this.showSelected && this.selectedField && this.lines && this.lines.length) {\n this.lines.forEach((item) => {\n if (item[this.selectedField] === true) {\n this.mapOfCheckedId[item[this.selectField]] = true;\n this.mapOfCheckList[item[this.selectField]] = item;\n }\n });\n if (this.lines.length === Object.keys(this.mapOfCheckList).length) {\n this.isAllDisplayDataChecked = true;\n this.isIndeterminate = true;\n }\n }\n }\n\n get LodashRound() {\n return round;\n }\n\n drop(event: CdkDragDrop<string[]>): void {\n moveItemInArray(this.lines, event.previousIndex, event.currentIndex);\n // 这里深拷贝去触发数据变化\n this.lines = JSON.parse(JSON.stringify(this.lines));\n }\n\n calculateTotal() {\n // 这里处理合计数据\n if (this.showTotal && this.lines && this.lines.length) {\n this.totalOptionList = new Array(Number(this.columnsNumber) - 1).fill('');\n this.totalOption.forEach(item => {\n if (item.insertIndex && (item.insertValue || item.insertValue === 0)) {\n this.totalOptionList[item.insertIndex - 1] = {\n value: item.insertValue,\n align: item.align || 'right',\n showDecimal: item.showDecimal || false,\n isHide: item.isHide || false\n }\n }\n })\n }\n }\n\n // 表格勾选逻辑\n currentPageDataChange($event: any): void {\n this.listOfDisplayData = $event;\n this.refreshStatus();\n }\n\n resetStatus() {\n this.isAllDisplayDataChecked = false;\n this.isIndeterminate = false;\n this.mapOfCheckedId = {};\n this.mapOfCheckList = {};\n this.selectEvent.emit([]);\n }\n\n refreshStatus(event: boolean = false, data: any = null): void {\n if (event && data) {\n !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);\n } else if (!event && data) {\n this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];\n }\n this.isAllDisplayDataChecked = this.listOfDisplayData.every(item => this.mapOfCheckedId[item[this.selectField]]);\n this.isIndeterminate =\n this.listOfDisplayData.some(item => this.mapOfCheckedId[item[this.selectField]]) && !this.isAllDisplayDataChecked;\n // 触发select事件\n if (this.selectEvent) {\n this.selectEvent.emit(Object.values(this.mapOfCheckList));\n }\n }\n\n checkAll(value: boolean): void {\n this.listOfDisplayData.forEach(item => {\n if (value) {\n !this.mapOfCheckList[item[this.selectField]] && (this.mapOfCheckList[item[this.selectField]] = item);\n } else {\n this.mapOfCheckList[item[this.selectField]] && delete this.mapOfCheckList[item[this.selectField]];\n }\n this.mapOfCheckedId[item[this.selectField]] = value\n });\n this.refreshStatus();\n }\n}\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdDetailLinesComponent } from './hd-detail-lines.component';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\n@NgModule({\n imports: [\n CommonModule,\n NzTableModule,\n DragDropModule\n ],\n declarations: [HdDetailLinesComponent],\n exports: [HdDetailLinesComponent],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class HdDetailLinesModule { }\n","import { Injectable } from '@angular/core';\n\nexport const statusToColor = {\n // 黄色\n '#FAB13B': ['partshipped', 'committed', 'partValid', 'confirm', 'picking'],\n // 灰色\n '#9FA4A2': ['initial', 'uncommitted', 'OFF_LINE', 'UN_PRINTED'],\n // 红色\n '#F5222D': ['delete', 'deleted', 'aborted', 'rejected', '停用', '禁用', 'unpicked'],\n // 蓝色\n '#3B77E3': ['audited', 'adjusted', 'invoiced', 'audit', 'submitted'],\n // 绿色\n '#12A34F': ['shipped', 'received', 'checked', 'using', 'reverse', 'valid', 'approved', 'ON_LINE', 'finished', 'opened', 'PRINTED', '启用', 'picked'],\n // 橙色\n '#F05B24': ['partialReceived', 'partDelete', 'tender', 'MODIFIED_AFTER_PRINTED']\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdStatusService {\n constructor() {\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport {statusToColor} from \"../hd-status/hd-status.service\";\n\n@Component({\n selector: 'hd-detail-tip',\n templateUrl: './hd-detail-tip.component.html',\n styleUrls: ['./hd-detail-tip.component.less']\n})\nexport class HdDetailTipComponent implements OnInit {\n\n constructor() { }\n @Input() state: string;\n @Input() stateText: string;\n @Input() billNumber: string;\n @Input() tip: string = '详情';\n statusColor: string;\n\n\n ngOnInit() {\n this.setStatusColor();\n }\n\n ngOnChanges(){\n this.setStatusColor();\n }\n\n setStatusColor(){\n for(let key in statusToColor){\n if(statusToColor[key].indexOf(this.state)!== -1){\n this.statusColor = key;\n break;\n }\n }\n }\n}\n","import { HdDetailTipComponent } from './hd-detail-tip.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdDetailTipComponent],\n exports: [HdDetailTipComponent]\n})\nexport class HdDetailTipModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Filter } from './hd-filter.service';\n\n@Component({\n selector: 'hd-filter',\n templateUrl: './hd-filter.component.html',\n styleUrls: ['./hd-filter.component.less']\n})\nexport class HdFilterComponent implements OnInit {\n\n @Input() filterList: Array<Filter>;\n @Output() searchEvent = new EventEmitter();\n @Output() resetEvent = new EventEmitter();\n\n validateFilterForm: FormGroup;\n isShowMore: boolean = true;\n // 对filterList取模运算\n filterListModular: number = 0;\n\n constructor(private fb: FormBuilder) {\n }\n\n ngOnInit() {\n this.init();\n }\n\n ngOnChanges() {\n this.init();\n }\n\n private init(): void {\n this.isShowMore = true;\n // 异常捕获\n if (!this.checkList(this.filterList)) {\n throw 'filter组件数据格式不规范';\n }\n this.filterListModular = this.filterList.length % 4;\n // 首先根据定义的组件数组 去初始化表单\n let formGroupList = {};\n this.filterList.forEach((item, index) => {\n formGroupList[item.name] = this.fb.control(item.value, []);\n // 初始化控件显影\n item.show = index < 7;\n });\n this.validateFilterForm = this.fb.group(formGroupList);\n }\n\n triggerEvent(fn: any, event: any, selectOption?: any) {\n if (fn && selectOption) {\n fn(event, selectOption);\n } else if (fn) {\n fn(event);\n } else {\n return;\n }\n }\n\n computeOffset() {\n // 特殊处理下等于4个选项的情况\n if (this.filterList.length === 4) {\n return 18;\n }\n return this.isShowMore ? ((this.filterListModular === 0 || this.filterList.length > 7) ? 0 : (3 - this.filterListModular) * 6) : (this.filterListModular === 0 ? 18 : (3 - this.filterListModular) * 6);\n }\n\n private checkList(list: Array<Filter>): boolean {\n if (!list || (list && list.length === 0)) {\n return true;\n }\n let nameList = [];\n list.forEach((item) => {\n // 校验单项选择器\n // if (item.type === FilterListType.Select && (!item.selectOption.selectList || (item.selectOption.selectList && item.selectOption.selectList.length === 0))) {\n // throw 'filter组件数据格式不规范,存在单项选择器没有传入选项!'\n // }\n nameList.push(item.name);\n });\n // 校验name是否重复\n if ([...new Set(nameList)].length !== list.length) {\n throw 'filter组件数据格式不规范,存在重复name值!';\n }\n // ...more check\n return true;\n }\n\n public submitForm(): void {\n this.searchEvent.emit(this.validateFilterForm.getRawValue());\n }\n\n public resetForm(): void {\n this.validateFilterForm.reset();\n if (this.resetEvent.observers.length > 0) {\n // 如果有父组件绑定了 resetEvent 的处理器\n this.resetEvent.emit(this.validateFilterForm.getRawValue());\n } else {\n // 如果没有绑定处理器,则触发 searchEvent\n this.searchEvent.emit(this.validateFilterForm.getRawValue());\n }\n }\n\n public getFilterData() {\n return this.validateFilterForm.getRawValue();\n }\n\n public showMore(): void {\n this.isShowMore = !this.isShowMore;\n this.filterList.forEach((item, index) => {\n item.show = this.isShowMore ? index < 7 : true;\n });\n }\n\n public inputClean(filter: Filter): void {\n const patchObject = {};\n patchObject[filter.name] = null;\n\n this.validateFilterForm.patchValue(patchObject);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdFilterComponent } from './hd-filter.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule,\n HdButtonModule\n ],\n declarations: [HdFilterComponent],\n exports: [HdFilterComponent]\n})\nexport class HdFilterModule { }\n","import { Injectable } from '@angular/core';\n\nexport enum SpaceType {\n row = 'row',\n column = 'column'\n}\n\nexport class Style {\n background: string\n width: string\n height: string\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdSpaceService {\n\n constructor() { }\n\n}\n","import { Component, Input, OnInit, Output } from '@angular/core';\nimport { Style, SpaceType } from \"./hd-space.service\"; \n\n@Component({\n selector: 'hd-space',\n templateUrl: './hd-space.component.html',\n styleUrls: ['./hd-space.component.less']\n})\nexport class HdSpaceComponent implements OnInit {\n @Input() type: SpaceType = SpaceType.row; \n @Input() size: number; \n @Input() background: string = 'inherit'; \n\n style: Style = new Style();\n\n constructor() { }\n\n ngOnInit() {\n this.style['background'] = this.background;\n if(this.type === SpaceType.row){\n this.style['width'] = '100%';\n this.style['height'] = this.size + 'px';\n }else{\n this.style['height'] = '100%';\n this.style['width'] = this.size + 'px';\n }\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdSpaceComponent } from './hd-space.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule\n ],\n declarations: [HdSpaceComponent],\n exports: [HdSpaceComponent]\n})\nexport class HdSpaceModule { }\n","import { Injectable } from '@angular/core';\nimport { InputNumber, SelectOption } from '../model/common-type';\n// 控件列表\nexport class FormLine {\n type: FormLineType; // 控件类型\n label: string; // 文本\n name: string; // 字段名称\n placeholder?: string; // 输入框的提示文件\n require?: boolean = false; // 是否必填\n hide?: boolean = false; // 是否为隐藏字段,仅用于填充表单的字段,不显示在页面上\n align?: 'left' | 'right' | 'center'; // 列对齐方式\n value?: string | boolean | number | Date | Array<string | Date> | null = null; // 值 不传默认为null\n isSelect?: boolean; // 输入框等是否允许点击之后全选内容\n selectOption?: SelectOption; // 控件为Select时,选项列表\n explainOptionRight?: ExplainOption; // 明细字段的说明(右侧)\n explainOption?: ExplainOption; // 明细字段的说明\n colorOption?: ColorOption; // 颜色字段的说明\n // 组件内部成员\n maxLength?: number; // input控件的输入长度\n preserveNumber?: number; // 需要保留小数的列的位数\n inputNumber?: InputNumber = new InputNumber(); // number组件的min、max、step\n onChangeEvent?: Function; // 控件的值改变事件 可用于控件间联动\n onSearchEvent?: Function; // select选择器搜索事件 可用于更新备选集合\n defaultLabel?: any; // select选择器不初始化的时候可以使用defaultLabel搭配value,设置默认值\n hdDisabledDate?: Function; // date-picker组件不可选择的日期\n disabled?: boolean; // 不可输入状态\n showTime?: boolean = false; // 日期选择器是否包含时间\n style?: object;\n canSearch?: boolean = false; // 指明hide 情况下的控件是否可以被搜索,默认false\n onChangeEventDebounceTime?: number; // change事件防抖\n onSearchEventEventDebounceTime?: number; // search事件防抖\n}\n\nexport class ColorOption {\n name: string;\n color?: string;\n}\n\nexport class ExplainOption {\n show: boolean;\n name: string;\n color?: string;\n}\n\n\n// 控件类型\nexport enum FormLineType {\n Input = 'Input', // 输入框\n Select = 'Select', // 单项选择器\n Date = 'Date', // 单个日期选择\n DateRange = 'DateRange', // 日期范围选择\n TextArea = 'TextArea', // 块级输入框\n InputNumber = 'InputNumber',// 数字输入\n MultipleSelect = 'MultipleSelect', // 多选\n ViewDom = 'ViewDom', // 单纯的显示控件\n Switch = 'Switch', // 开关\n Time = 'Time' // 时间选择器\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormLinesService {\n constructor() { }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChildren\n} from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { round } from 'lodash';\nimport {\n InputBoolean,\n NzDatePickerComponent,\n NzInputNumberComponent,\n NzRangePickerComponent,\n NzSelectComponent,\n NzTimePickerComponent\n} from 'ng-zorro-antd';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { TotalOption } from '../hd-detail-lines/hd-detail-lines.service';\nimport { FormLine, FormLineType } from './hd-form-lines.service';\n\n@Component({\n selector: 'hd-form-lines',\n templateUrl: './hd-form-lines.component.html',\n styleUrls: ['./hd-form-lines.component.less']\n})\nexport class HdFormLinesComponent implements OnInit {\n @ViewChildren('formInputDom') formInputDomList!: QueryList<ElementRef>;\n\n @Input() @InputBoolean() showLineNumber: boolean = true;\n @Input() @InputBoolean() allowEmpty: boolean = true;\n @Output() deleteLastLineEvent = new EventEmitter();\n @Input() @InputBoolean() showKeyboardOperateTip: boolean = false;\n @Input() @InputBoolean() tableLoading: boolean = false;\n @Input() @InputBoolean() showSearch: boolean = false;\n @Input() formLines: Array<FormLine>;\n // 针对formLines里面所有的name,\n @Input() formLinesData: any;\n @Input() operateButtons: Array<string> = ['add', 'delete'];\n @Input() scroll: { [key: string]: string; } = {x: '1px'};\n @Output() changeEvent = new EventEmitter();\n @Input() @InputBoolean() showDeleteConfirm: boolean = false;\n paginationPageIndex: number = 1;\n paginationPageSize: number = 10;\n validateHdFormLines: FormGroup;\n newLine: any;\n inputValue: string;\n\n // 合计区域\n @Input() @InputBoolean() showTotal: boolean = false;\n @Input() totalOption: Array<TotalOption> = [];\n @Input() columnsNumber: number | string = 0;\n totalOptionList = [];\n\n showForm: boolean = false;\n filterStr: string;\n storeFormLinesData: any = []; // 缓存的总的表单数据\n filterStoreFormLinesData: any = []; // 筛选出来的数据列表\n filterIndexStore: Array<number> = []; // 筛选出来的数据在原始列表中的下标\n isFilterData: boolean = false; // 是否是已经筛选过的数据\n formValid: boolean = false; // 表单当前的状态\n private searchSubject = new Subject<{ fn: any, event: any, line: any; }>();\n private debounceTimeout: number = 0; // 默认防抖时间\n\n private searchSubscription: Subscription | undefined;\n\n // 当前页的dom二维数组\n collectDomList: Array<Array<ElementRef | NzSelectComponent | NzInputNumberComponent | NzDatePickerComponent | NzRangePickerComponent | NzTimePickerComponent>> = [];\n // 当前聚焦的dom元素坐标\n activeDomX: number = null;\n activeDomY: number = null;\n activeDom: ElementRef | NzSelectComponent | NzInputNumberComponent | NzDatePickerComponent | NzRangePickerComponent | NzTimePickerComponent = null;\n activeSelectedComponentOpen: boolean = false;\n @ContentChild('ViewDomRightTemplate', {static: false}) ViewDomRightTemplate: TemplateRef<any>;\n\n constructor(private fb: FormBuilder, private cdr: ChangeDetectorRef) {\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({fn, event, line}) => this.triggerEvent(fn, event, line));\n }\n\n ngOnInit() {\n // 缓存一下总的表单数据\n this.storeFormLinesData = this.formLinesData;\n this.init();\n }\n\n ngAfterViewInit() {\n this.collectDomData();\n }\n\n get formLinesLength() {\n return this.linesFormArray.controls.length;\n }\n\n setActiveSelectedComponentOpen(value: boolean) {\n this.activeSelectedComponentOpen = value;\n if (value === true && document.querySelectorAll('.hd-option-header').length === 0) {\n setTimeout(() => {\n const domList = document.querySelectorAll('.ant-select-dropdown.hd-select-table');\n if (domList.length > 0) {\n const dom = domList[0];\n const oldIndex = this.getOldDomIndex(this.activeDomY, this.formLines);\n dom.insertBefore(this.createDOMStructure(this.formLines[oldIndex], this.linesFormArray.controls.slice((this.paginationPageIndex - 1) * this.paginationPageSize, (this.paginationPageIndex - 1) * this.paginationPageSize + this.paginationPageSize)[this.activeDomX]), dom.firstChild);\n }\n }, 0);\n }\n }\n\n createDOMStructure(formItem, line) {\n // 创建外部 div\n const hdOptionHeader = document.createElement('div');\n hdOptionHeader.className = 'hd-option-header';\n\n // 检查条件,确定是否要创建子元素\n // const selectListLength = (formItem && formItem.selectOption && formItem.selectOption.selectList && formItem.selectOption.selectList.length) || 0;\n // if\n // const lineValueLength = (line.get(formItem.selectOption.selectListName) && line.get(formItem.selectOption.selectListName).value && line.get(formItem.selectOption.selectListName).value.length) || 0;\n\n // if (selectListLength > 0 || lineValueLength > 0) {\n // 遍历 tableColumns 创建内部列 div\n formItem.selectOption.tableColumns.forEach((selectOptionTableColumn, index) => {\n const columnDiv = document.createElement('div');\n columnDiv.className = 'hd-option-header-column';\n\n // 设置宽度样式\n const width = (selectOptionTableColumn && selectOptionTableColumn.width) ?\n (selectOptionTableColumn && selectOptionTableColumn.width) + ((index === 0 && !(selectOptionTableColumn && selectOptionTableColumn.label)) ? 12 : 0) + 'px'\n : 'unset';\n columnDiv.style.width = width;\n\n // 添加列标签内容\n if (selectOptionTableColumn.label) {\n const labelText = document.createTextNode(selectOptionTableColumn.label);\n columnDiv.appendChild(labelText);\n }\n\n // 添加列 div 到外部 div\n hdOptionHeader.appendChild(columnDiv);\n });\n // }\n\n return hdOptionHeader;\n }\n\n\n collectDomData() {\n this.collectDomList = [];\n const pageDomList = this.formInputDomList.toArray();\n // Step 1: 获取当前页的数据量\n const startIndex = (this.paginationPageIndex - 1) * this.paginationPageSize;\n const endIndex = this.paginationPageIndex * this.paginationPageSize;\n const adjustedEndIndex = endIndex > this.formLinesLength ? this.formLinesLength : endIndex;\n const pageLinesLength = adjustedEndIndex - startIndex;\n\n const interval = pageDomList.length / pageLinesLength;\n // Step 2: 拆分formInputDomList\n for (let i = 0; i < pageLinesLength; i++) {\n this.collectDomList.push(pageDomList.splice(0, interval));\n }\n // 关闭所有NzInputNumberComponent的键盘上下箭头触发+-的功能\n for (let i = 0; i < this.collectDomList.length; i++) {\n for (let j = 0; j < this.collectDomList[i].length; j++) {\n const dom = this.collectDomList[i][j];\n if (dom instanceof NzInputNumberComponent) {\n dom.down = () => {\n };\n dom.up = () => {\n };\n }\n }\n }\n }\n\n // 聚焦下一个dom\n jumpToNextInput(x: number, y: number) {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n // 如果是最后一个可输入元素,新增行\n if (!(this.activeDom instanceof NzSelectComponent) && x === this.collectDomList.length - 1 && y === this.collectDomList[0].length - 1) {\n this.addNewLineAndFocus();\n } else {\n if (y === this.collectDomList[0].length - 1) {\n console.log('执行过程1');\n // 如果是最后一列,则跳转到下一行第一个输入框\n this.focusDom(x + 1, 0, 'right');\n } else {\n console.log('执行过程2');\n // 如果不是最后一列,则跳转到当前行下一个输入框\n this.focusDom(x, y + 1, 'right');\n }\n }\n }\n\n /**\n * 增加新行并且聚焦到第一个元素,\n * 这里要注意,如果存在翻页情况,需要处理\n */\n addNewLineAndFocus() {\n // 当前行为当前页最后一行的时候,判断下一页是否有数据\n // 1、如果有:翻页+聚焦第一行第一个元素\n // 2、如果没有:新增行+翻页+聚焦第一行第一个元素\n if (this.activeDomX === this.paginationPageSize - 1) {\n // 判断下一页是否有数据\n if (this.paginationPageIndex < Math.ceil(this.formLinesLength / this.paginationPageSize)) {\n // 翻页+聚焦第一行第一个元素\n this.paginationPageIndex++;\n setTimeout(() => {\n this.collectDomData();\n console.log('执行过程3');\n this.focusDom(0, 0, 'right');\n }, 0);\n } else {\n // 新增行+翻页+聚焦第一行第一个元素\n this.addFormLine();\n this.paginationPageIndex++;\n setTimeout(() => {\n this.collectDomData();\n console.log('执行过程4');\n this.focusDom(0, 0);\n }, 0);\n }\n } else {\n this.addFormLine();\n }\n }\n\n // 聚焦到上一个dom\n jumpToPrevInput(x: number, y: number) {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n if (x === 0 && y === 0) {\n // 如果是第一个可输入元素, 判断是否有上一页, 如果有,则翻页+聚焦到上一页最后一个元素\n if (this.paginationPageIndex > 1) {\n // 翻页+聚焦到上一页最后一个元素\n this.paginationPageIndex--;\n setTimeout(() => {\n this.collectDomData();\n console.log('执行过程5');\n this.focusDom(this.collectDomList.length - 1, this.collectDomList[0].length - 1);\n }, 0);\n }\n return;\n } else {\n if (y === 0) {\n console.log('执行过程6');\n // 如果是第一列,则跳转到上一行最后一个输入框\n this.focusDom(x - 1, this.collectDomList[0].length - 1, 'left');\n } else {\n console.log('执行过程7');\n // 如果不是第一列,则跳转到当前行上一个输入框\n this.focusDom(x, y - 1, 'left');\n }\n }\n }\n\n /**\n * 聚焦到某个dom\n * @param x 坐标x\n * @param y 坐标y\n * @param jumpDirection 跳转方向\n */\n focusDom(x: number, y: number, jumpDirection: string = 'right') {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n // 先清除一下当前的焦点\n this.cleanFocusDom(this.activeDomX, this.activeDomY);\n if (this.collectDomList[x] && this.collectDomList[x][y]) {\n const dom = this.collectDomList[x][y];\n // 需要判断下一个focus的dom是否是禁用状态,如果是禁用状态需要跳过\n if (dom instanceof NzSelectComponent) {\n if (dom.nzDisabled) {\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n dom.nzSelectTopControlComponent.inputElement.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});\n // 这里多选框需要额外处理下,因为向下的时候会触发内部Input的聚焦,把下一个dom的focus放到宏任务中,延迟处理。\n if (dom.nzSelectService.mode === 'multiple') {\n setTimeout(() => {\n dom.focus();\n }, 0);\n } else {\n dom.focus();\n }\n } else if (dom instanceof NzInputNumberComponent) {\n if (dom.nzDisabled) {\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n const inputDom: any = document.getElementById(dom.nzId);\n inputDom.focus();\n inputDom.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});\n setTimeout(() => {\n inputDom.select();\n }, 0);\n } else if (dom instanceof ElementRef) {\n if (dom.nativeElement.disabled) {\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n dom.nativeElement.focus();\n dom.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});\n setTimeout(() => {\n dom.nativeElement.select();\n }, 0);\n } else if (dom instanceof NzDatePickerComponent || dom instanceof NzRangePickerComponent || dom instanceof NzTimePickerComponent) {\n // TODO:在ngzorro8.5.x版本,时间相关的选择器没有暴露出open方法,暂时先不处理。(10.x及以上版本提供了open方法)\n if (jumpDirection === 'right') {\n this.jumpToNextInput(x, y);\n } else if (jumpDirection === 'left') {\n this.jumpToPrevInput(x, y);\n }\n return;\n }\n this.setActiveDom(x, y);\n } else {\n // 没有dom的场景下,需要判断是左还是右,\n }\n }\n\n cleanFocusDom(x: number, y: number) {\n if (x === null || y === null || !this.collectDomList || this.collectDomList.length === 0) {\n return;\n }\n if (this.collectDomList[x] && this.collectDomList[x][y]) {\n const dom = this.collectDomList[x][y];\n if (dom instanceof NzSelectComponent) {\n dom.blur();\n dom.nzOpen = false;\n } else if (dom instanceof NzInputNumberComponent) {\n dom.blur();\n } else if (dom instanceof ElementRef) {\n dom.nativeElement.blur();\n } else {\n }\n }\n }\n\n setActiveDom(x: number, y: number) {\n this.activeDomX = x;\n this.activeDomY = y;\n this.activeDom = this.collectDomList[this.activeDomX][this.activeDomY];\n if (this.activeDom instanceof NzSelectComponent) {\n this.setActiveSelectedComponentOpen(this.activeDom.open);\n }\n }\n\n /**\n * 根据行号和列号名称获取当前聚焦的dom位置\n * @param rowNumber 行号\n * @param colNumber 列号\n */\n setActiveDomInFormLines(rowNumber: number, colNumber: number) {\n this.activeDomX = rowNumber;\n this.activeDomY = this.getDomIndex(colNumber, this.formLines);\n this.setActiveDom(this.activeDomX, this.activeDomY);\n }\n\n /**\n * 键盘点击事件\n * @param event 键盘事件\n * @returns\n */\n onKeyDown(event: KeyboardEvent) {\n if (this.activeDomX === null || this.activeDomY === null) {\n return;\n }\n switch (event.key) {\n case 'ArrowUp':\n if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen) {\n return;\n }\n if (this.activeDomX !== 0) {\n this.focusDom(this.activeDomX - 1, this.activeDomY);\n }\n break;\n case 'ArrowDown':\n if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen) {\n return;\n }\n // 判断是否在最后一行,加行\n if (this.activeDomX === this.collectDomList.length - 1) {\n this.cleanFocusDom(this.activeDomX, this.activeDomY);\n this.addNewLineAndFocus();\n break;\n } else {\n this.focusDom(this.activeDomX + 1, this.activeDomY);\n }\n break;\n case 'ArrowLeft':\n this.jumpToPrevInput(this.activeDomX, this.activeDomY);\n break;\n case 'ArrowRight':\n this.jumpToNextInput(this.activeDomX, this.activeDomY);\n break;\n case 'Enter':\n if (this.activeDom instanceof NzSelectComponent) {\n this.setActiveSelectedComponentOpen(this.activeDom.open);\n if (this.activeSelectedComponentOpen === false) {\n this.focusDom(this.activeDomX, this.activeDomY);\n }\n } else if (this.activeDomX === this.collectDomList.length - 1) {\n this.addNewLineAndFocus();\n }\n break;\n case 'Escape':\n if (this.activeDom instanceof NzSelectComponent) {\n const nowActiveDom = this.activeDom as NzSelectComponent;\n setTimeout(() => {\n this.setActiveSelectedComponentOpen(nowActiveDom.open);\n if (this.activeSelectedComponentOpen === false) {\n if (nowActiveDom.nzSelectService.mode === 'multiple') {\n setTimeout(() => {\n this.focusDom(this.activeDomX, this.activeDomY);\n }, 0);\n } else {\n this.focusDom(this.activeDomX, this.activeDomY);\n }\n }\n }, 0);\n }\n break;\n default:\n // 如果当前聚焦的是选择框,且键入0-9a-zA-Z,则弹出\n if (this.activeDom instanceof NzSelectComponent && this.activeSelectedComponentOpen === false && /^[0-9a-zA-Z]$/.test(event.key)) {\n const dom = this.activeDom;\n dom.nzOpen = true;\n this.setActiveSelectedComponentOpen(true);\n // // TODO:这里暂时注释,不能直接带入键入值,这样会导致输入中文的时候带入英文字符,不符合预期\n // dom.nzSelectTopControlComponent.inputValue = event.key;\n // // 获取 input 元素\n // const inputElement = dom.nzSelectTopControlComponent.inputElement.nativeElement;\n // setTimeout(() => {\n // // 触发输入事件,以确保 Angular 检测到值的变化\n // const eventInput = new Event('input', { bubbles: true });\n // inputElement.dispatchEvent(eventInput);\n // }, 0);\n }\n break;\n }\n }\n\n /**\n * 根据在初始dom下标和数据集 获取在collectDomList中的下标\n * @param index 初始下标\n * @param list 老数据集\n * @returns\n */\n private getDomIndex(index: number, list: Array<FormLine>): number {\n const typeList = ['Input', 'Select', 'Date', 'DateRange', 'TextArea', 'InputNumber', 'MultipleSelect'];\n let filterList = [];\n for (let i = 0; i < list.length; i++) {\n if (i === index) {\n return filterList.length;\n }\n if (typeList.includes(list[i].type)) {\n filterList.push(list[i]);\n }\n }\n return null;\n }\n\n /**\n * 根据在collectDomList中的下标和数据集 获取初始dom下标\n * @param index 新下标\n * @param list 老数据集\n * @returns\n */\n private getOldDomIndex(index: number, list: Array<FormLine>): number {\n console.log('index', index);\n console.log('list', list);\n const typeList = ['Input', 'Select', 'Date', 'DateRange', 'TextArea', 'InputNumber', 'MultipleSelect'];\n let filterList = [];\n for (let i = 0; i < list.length; i++) {\n if (typeList.includes(list[i].type)) {\n filterList.push(list[i]);\n if (filterList.length === index + 1) {\n return i;\n }\n }\n }\n return null;\n }\n\n get linesFormArray(): any {\n return this.validateHdFormLines.get('lines') as FormArray;\n }\n\n get LodashRound() {\n return round;\n }\n\n // 暴露的方法,用于获取所有数据的valid状态\n public getValid() {\n return this.formValid;\n }\n\n onSearchEvent(fn: any, event: any, line: any, onSearchEventDebounceTime: any) {\n if (onSearchEventDebounceTime) {\n // 更新防抖时间\n this.debounceTimeout = onSearchEventDebounceTime;\n\n // 取消之前的订阅\n if (this.searchSubscription) {\n this.searchSubscription.unsubscribe();\n }\n\n // 创建新的订阅\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({fn, event, line}) => this.triggerEvent(fn, event, line));\n\n // 发送事件\n this.searchSubject.next({fn, event, line});\n } else {\n this.triggerEvent(fn, event, line);\n }\n setTimeout(() => {\n this.setActiveSelectedComponentOpen(true);\n }, 0);\n }\n\n /**\n *\n * @param fn 父组件函数\n * @param event 事件值\n * @param line 触发的行\n */\n triggerEvent(fn: any, event: any, line: any) {\n if (fn) {\n fn(event, line);\n }\n }\n\n innerGetValid() {\n let tmpValidateHdFormLines = this.fb.group({\n 'lines': this.fb.array([])\n });\n this.storeFormLinesData.forEach((formLinesDataItem) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({\n value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null),\n disabled: item.disabled\n }, item.require ? [Validators.required] : []);\n if (item.selectOption && item.selectOption.label) {\n formGroupObj[item.selectOption.label] = this.fb.control(formLinesDataItem[item.selectOption.label] || null, []);\n }\n });\n formGroupObj.lineIndex = this.fb.control((tmpValidateHdFormLines.get('lines') as FormArray).controls.length, []);\n let formGroupTmp = this.fb.group(formGroupObj);\n this.formLines.forEach((item) => {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n formGroupTmp.get(item.name).valueChanges.pipe(\n debounceTime(item.onChangeEventDebounceTime)\n ).subscribe(value => {\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n } else {\n formGroupTmp.get(item.name).valueChanges.subscribe(value => {\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n }\n }\n });\n (tmpValidateHdFormLines.get('lines') as FormArray).insert((tmpValidateHdFormLines.get('lines') as FormArray).controls.length, formGroupTmp);\n });\n return tmpValidateHdFormLines.valid;\n }\n\n // 暴露的方法,用于获取所有数据\n public getLines() {\n let allLines = [];\n this.storeFormLinesData.forEach((formLinesDataItem) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = formLinesDataItem[item.name];\n });\n formGroupObj.lineIndex = formLinesDataItem.lineIndex;\n allLines.push(formGroupObj);\n });\n return allLines;\n }\n\n // 全局性的搜索(涵盖页面上所有的可视文字)\n searchLines() {\n if (this.storeFormLinesData.length < 1) {\n return;\n }\n this.tableLoading = true;\n // 如果没有输入搜索字符串,则显示缓存内的所有数据\n if (!this.filterStr) {\n this.isFilterData = false;\n this.setStoreData();\n return;\n }\n const filterValue = this.filterStr.trim().toLowerCase();\n this.isFilterData = true;\n this.filterIndexStore = [];\n\n // 根据搜索字符串过滤数据\n const filteredData = this.storeFormLinesData.filter((data: any, index: number) => {\n for (const item of this.formLines) {\n if ((item.hide && item.canSearch) || (!item.hide && item.name !== 'uuid')) {\n const value = data[item.name] ? data[item.name].toString().toLowerCase() : '';\n if (value.includes(filterValue)) {\n this.filterIndexStore.push(index);\n return true;\n }\n }\n }\n return false;\n });\n // 缓存一下筛选后的表单数据\n this.filterStoreFormLinesData = filteredData;\n // 处理筛选好的数据 然后重新渲染\n this.formLinesData = filteredData;\n this.init(true);\n }\n\n setStoreData() {\n this.formLinesData = this.storeFormLinesData;\n this.init(true);\n }\n\n getStyle(line: FormGroup, formItem: any, width: string) {\n let styleObj = {\n 'min-width': width\n };\n if (formItem.style) {\n styleObj = {...styleObj, ...formItem.style};\n }\n if (formItem.colorOption && formItem.colorOption.name && line.get(formItem.colorOption.name).value) {\n styleObj = {...styleObj, ...{'color': line.get(formItem.colorOption.name).value}};\n }\n return styleObj;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['formLinesData'] && JSON.stringify(changes['formLinesData'].currentValue) !== JSON.stringify(changes['formLinesData'].previousValue)) {\n if (this.storeFormLinesData && this.storeFormLinesData.length === 0) {\n this.storeFormLinesData = this.formLinesData;\n }\n this.init();\n }\n if (changes['totalOption'] && JSON.stringify(changes['totalOption'].currentValue) !== JSON.stringify(changes['totalOption'].previousValue)) {\n this.calculateTotal();\n }\n }\n\n calculateTotal() {\n // 这里处理合计数据\n if (this.showTotal) {\n this.totalOptionList = new Array(Number(this.columnsNumber) - 1).fill('');\n this.totalOption.forEach(item => {\n if (item.insertIndex && (item.insertValue || item.insertValue === 0)) {\n this.totalOptionList[item.insertIndex - 1] = {\n value: item.insertValue,\n align: item.align || 'left',\n showDecimal: item.showDecimal || false\n };\n }\n });\n }\n }\n\n private init(isEdit: boolean = false): void {\n this.paginationPageIndex = 1;\n // 异常捕获\n if (!this.checkList(this.formLines)) {\n this.tableLoading = false;\n return;\n }\n this.createForm();\n // 如果没有formLinesData,则认为是新增\n if (!isEdit && (!this.formLinesData || (this.formLinesData && this.formLinesData.length === 0))) {\n this.tableLoading = false;\n this.addFormLine(0, false);\n this.showForm = true;\n } else {\n // 编辑逻辑\n this.addFormLineWithData();\n }\n this.validateHdFormLines.valueChanges.subscribe(data => this.onHdFormValueChanged(data));\n this.onHdFormValueChanged();\n }\n\n\n /**\n * 创建表单\n */\n private createForm() {\n this.validateHdFormLines = this.fb.group({\n 'lines': this.fb.array([])\n });\n this.newLine = this.newLineItem();\n }\n\n delayJumpToNextInput() {\n setTimeout(() => {\n this.jumpToNextInput(this.activeDomX, this.activeDomY);\n }, 0);\n }\n\n /**\n * 定义空的newLineItem 结构\n */\n private newLineItem(): FormGroup {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({\n value: item.value,\n disabled: item.disabled\n } || null, item.require && !item.hide ? [Validators.required] : []);\n });\n formGroupObj.lineIndex = this.fb.control(this.linesFormArray.controls.length, []);\n // 用来标识是否是搜索状态下新增的行\n formGroupObj.isHdFormLineSearchAdd = this.fb.control(this.isFilterData, []);\n let formGroupSubmit = this.fb.group(formGroupObj);\n this.formLines.forEach((item, innerIndex) => {\n if (item.onChangeEvent) {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n formGroupSubmit.get(item.name).valueChanges.pipe(\n debounceTime(item.onChangeEventDebounceTime)\n ).subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupSubmit);\n });\n } else {\n formGroupSubmit.get(item.name).valueChanges.subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupSubmit);\n });\n }\n }\n }\n });\n return formGroupSubmit;\n }\n\n private calculateLineNumber() {\n this.linesFormArray.controls.forEach((item, index) => {\n item.get('lineIndex').setValue(index + 1, {emitEvent: false});\n });\n }\n\n /**\n * 编辑的时候数据处理\n */\n addFormLineWithData() {\n this.formLinesData.forEach((formLinesDataItem, index) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({\n value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null),\n disabled: item.disabled\n }, item.require ? [Validators.required] : []);\n if (item.selectOption && item.selectOption.label) {\n formGroupObj[item.selectOption.label] = this.fb.control(formLinesDataItem[item.selectOption.label] || null, []);\n }\n });\n formGroupObj.lineIndex = this.fb.control(this.linesFormArray.controls.length + 1, []);\n let formGroupTmp = this.fb.group(formGroupObj);\n this.formLines.forEach((item, innerIndex) => {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n formGroupTmp.get(item.name).valueChanges.pipe(\n debounceTime(item.onChangeEventDebounceTime)\n ).subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n } else {\n formGroupTmp.get(item.name).valueChanges.subscribe(value => {\n if (item.type === FormLineType.Select && value !== null) {\n this.delayJumpToNextInput();\n }\n this.triggerEvent(item.onChangeEvent, value, formGroupTmp);\n });\n }\n }\n });\n this.linesFormArray.insert(this.linesFormArray.controls.length, formGroupTmp);\n });\n this.tableLoading = false;\n this.showForm = true;\n }\n\n addFormLine(index?: any, isFocus: boolean = true) {\n this.linesFormArray.insert(index || this.linesFormArray.controls.length, this.newLineItem());\n this.calculateLineNumber();\n setTimeout(() => {\n this.collectDomData();\n if (isFocus) {\n if (index !== null && index !== undefined) {\n this.activeDomX = index;\n } else {\n this.activeDomX = this.collectDomList.length - 1;\n }\n this.activeDomY = 0;\n console.log('执行过程13');\n this.focusDom(this.activeDomX, this.activeDomY);\n }\n }, 0);\n }\n\n @Output() deleteLineEvent = new EventEmitter();\n\n deleteFormLine(index: any) {\n console.log('index', index);\n // 最后一条数据的时候要判断一下\n if (this.linesFormArray.controls.length === 1 && !this.allowEmpty) {\n if (this.deleteLastLineEvent) {\n this.deleteLastLineEvent.emit();\n }\n return;\n }\n this.linesFormArray.removeAt(index - 1);\n if (!this.isFilterData && this.linesFormArray.controls && this.linesFormArray.controls.length === 0) {\n this.addFormLine();\n } else {\n // 删除尾页的最后一个元素动作\n if (this.paginationPageIndex * this.paginationPageSize === (this.linesFormArray.controls.length + this.paginationPageSize)) {\n this.paginationPageIndex--;\n }\n this.calculateLineNumber();\n }\n setTimeout(() => {\n this.collectDomData();\n }, 0);\n }\n\n public pageIndexChange(event: number): void {\n this.paginationPageIndex = event;\n setTimeout(() => {\n this.collectDomData();\n }, 0);\n }\n\n public pageSizeChange(event: number): void {\n this.paginationPageSize = event;\n setTimeout(() => {\n this.collectDomData();\n }, 0);\n }\n\n private onHdFormValueChanged(data?: any) {\n if (this.isFilterData) {\n if (data && data.lines && this.filterIndexStore.length !== 0) {\n const lines = data.lines;\n if (lines.length === this.filterIndexStore.length) {\n this.filterIndexStore.forEach((item, index) => {\n this.storeFormLinesData[item] = {...this.filterStoreFormLinesData[index], ...lines[index]};\n });\n } else if (lines.length > this.filterIndexStore.length) {\n // 有新增数据的情况\n // step 1: 先找新增的index下标\n const getNowLines = this.validateHdFormLines.getRawValue().lines;\n let addIndex = -1;\n for (let i = 0; i < getNowLines.length; i++) {\n if (getNowLines[i].isHdFormLineSearchAdd) {\n addIndex = i;\n break;\n }\n }\n if (addIndex !== -1) {\n this.storeFormLinesData.splice(this.filterIndexStore[addIndex - 1] + 1, 0, getNowLines[addIndex]);\n }\n this.filterIndexStore.push(this.filterIndexStore[addIndex - 1] + 1);\n } else {\n // 有删除数据的情况\n // step 1:先找到删除的index下标\n let deletedIndex = -1;\n let count = 0;\n if (lines.length === 0) {\n deletedIndex = 0;\n } else {\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].lineIndex - count > 1) {\n deletedIndex = i;\n break;\n }\n count++;\n }\n }\n if (deletedIndex !== -1) {\n // step 2: 删除总数据中的对应数据, 把下标数组和lines长度对齐,同时把下标数组在deletedIndex后面的值全都-1\n this.storeFormLinesData = this.storeFormLinesData.filter((item, index) => {\n return index !== this.filterIndexStore[deletedIndex];\n });\n this.filterIndexStore.splice(deletedIndex, 1);\n for (let i = 0; i < this.filterIndexStore.length; i++) {\n if (i >= deletedIndex) {\n this.filterIndexStore[i]--;\n }\n }\n } else {\n // step 2: 没有找到deletedIndex说明删除操作在最后一行\n const filterIndex = this.filterIndexStore[this.filterIndexStore.length - 1];\n this.storeFormLinesData = this.storeFormLinesData.filter((item, index) => {\n return index !== filterIndex;\n });\n this.filterIndexStore.pop();\n }\n }\n } else {\n if (data && data.lines) {\n this.storeFormLinesData = data.lines;\n }\n }\n } else {\n if (data && data.lines) {\n this.storeFormLinesData = data.lines;\n }\n }\n\n // 总表单\n if (!this.isFilterData) {\n this.formValid = this.validateHdFormLines.valid;\n } else {\n if (this.formValid) {\n // 如果整体表单是true,不管子表单是什么,都变成子表单的状态\n this.formValid = this.validateHdFormLines.valid;\n } else {\n // 如果整体表单是false:1、子表单为true,需要重算;2、子表单为false,用子表单状态\n if (this.validateHdFormLines.valid) {\n this.formValid = this.innerGetValid();\n } else {\n this.formValid = this.validateHdFormLines.valid;\n }\n }\n }\n // this.calculateLineNumber();\n this.changeEvent.emit(this.validateHdFormLines);\n }\n\n private checkList(list: Array<FormLine>): boolean {\n if (!list || (list && list.length === 0)) {\n return false;\n }\n let nameList = [];\n let selectOptionCheckList = [];\n list.forEach((item) => {\n // 校验单项选择器\n // if (item.type === FormLineType.Select && (!item.selectList || (item.selectList && item.selectList.length === 0))) {\n // throw 'formLines组件数据格式不规范,存在单项选择器没有传入选项!'\n // }\n nameList.push(item.name);\n\n // 校验有onSearch的字段的selectOption的value、label是否在formLine里面都定义了\n if (item.onSearchEvent && item.selectOption) {\n selectOptionCheckList = [];\n list.forEach(innerItem => {\n if (innerItem.name === item.selectOption.value || innerItem.name === item.selectOption.label) {\n selectOptionCheckList.push(innerItem.name);\n }\n });\n if (selectOptionCheckList.length < 2) {\n throw `formLines组件数据格式不规范,字段${item.name}的selectOption的value、label字段未能在formLines中找到对应字段!`;\n }\n }\n });\n // 校验name是否重复\n if ([...new Set(nameList)].length !== list.length) {\n throw 'formLines组件数据格式不规范,存在重复name值!';\n }\n // ...more check\n return true;\n }\n\n public submitForm(): void {\n this.changeEvent.emit(this.validateHdFormLines.getRawValue());\n }\n\n public resetForm(): void {\n // 删除\n for (let i = this.linesFormArray.controls.length; i >= 0; i--) {\n this.deleteFormLine(i);\n }\n this.paginationPageIndex = 1;\n }\n\n public inputClean(formItem: any, line: any): void {\n line.get(formItem.name).setValue(null);\n }\n\n public selectValue(id: string, rowNumber: number, colNumber: number): void {\n const inputDom: any = document.querySelector(id);\n inputDom.select();\n this.setActiveDomInFormLines(rowNumber, colNumber);\n }\n\n private textWidthCache: { [key: string]: number; } = {};\n\n isTextOverflow(text: string, maxWidth: number): boolean {\n const cachedWidth = this.textWidthCache[text];\n if (cachedWidth !== undefined) {\n return cachedWidth + 15 >= maxWidth;\n }\n\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = text;\n document.body.appendChild(span);\n const isOverflow = span.offsetWidth + 15 >= maxWidth;\n this.textWidthCache[text] = span.offsetWidth;\n span.style.display = 'none';\n document.body.removeChild(span);\n return isOverflow;\n }\n\n judgeColEmpty(str: any) {\n if (str || str === 0) {\n return str;\n } else {\n return '<空>';\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdButtonGroupModule } from '../hd-button-group/hd-button-group.module';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\nimport { HdSpaceModule } from '../hd-space/hd-space.module';\nimport { HdFormLinesComponent } from './hd-form-lines.component';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule,\n HdButtonModule,\n HdSpaceModule,\n HdButtonGroupModule\n ],\n declarations: [HdFormLinesComponent],\n exports: [HdFormLinesComponent]\n})\nexport class HdFormLinesModule { }\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { FormItem } from './hd-form.service';\n// import * as moment from 'moment';\n@Component({\n selector: 'hd-form',\n templateUrl: './hd-form.component.html',\n styleUrls: ['./hd-form.component.less']\n})\nexport class HdFormComponent implements OnInit {\n\n @Input() formList: Array<FormItem>;\n @Output() changeEvent = new EventEmitter();\n validateHdForm: FormGroup;\n inputValue: string;\n\n private searchSubject = new Subject<{ fn: any, event: any; }>();\n private debounceTimeout: number = 0; // 默认防抖时间\n\n private searchSubscription: Subscription | undefined;\n constructor(private fb: FormBuilder) {\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({ fn, event }) => this.triggerEvent(fn, event));\n }\n\n ngOnInit() {\n if (!this.formList || this.formList.length === 0) {\n return;\n }\n\n this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['formList'] && JSON.stringify(changes['formList'].currentValue) !== JSON.stringify(changes['formList'].previousValue)) {\n if (!this.formList || this.formList.length === 0) {\n return;\n }\n this.init();\n }\n }\n\n onSearchEvent(fn: any, event: any, onSearchEventDebounceTime: any) {\n if (onSearchEventDebounceTime) {\n // 更新防抖时间\n this.debounceTimeout = onSearchEventDebounceTime;\n\n // 取消之前的订阅\n if (this.searchSubscription) {\n this.searchSubscription.unsubscribe();\n }\n\n // 创建新的订阅\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTimeout)\n ).subscribe(({ fn, event }) => this.triggerEvent(fn, event));\n\n // 发送事件\n this.searchSubject.next({ fn, event });\n } else {\n this.triggerEvent(fn, event);\n }\n }\n\n triggerEvent(fn: any, event: any) {\n if (fn) {\n fn(event);\n }\n }\n\n private init(): void {\n // 异常捕获\n if (!this.checkList(this.formList)) {\n throw 'form组件数据格式不规范';\n }\n // 对表单数据做初始化,用row隔离每行数据item\n this.dealRow();\n // 首先根据定义的组件数组 去初始化表单\n let formGroupList = {};\n this.formList.forEach((item, index) => {\n // 日期相关的控件做特殊处理\n if (item.type === 2 && item.value) {\n const [year, month, day] = item.value.toString().split('-').map(str => parseInt(str));\n const newDateStr = new Date(year, month - 1, day)\n .toLocaleDateString('zh-Hans-CN', { year: 'numeric', month: '2-digit', day: '2-digit' })\n .replace(/\\//g, '-');\n if (item.validator) {\n formGroupList[item.name] = this.fb.control({ value: new Date(newDateStr), disabled: item.disabled }, item.require && !item.hide ? [Validators.required, item.validator] : []);\n } else {\n formGroupList[item.name] = this.fb.control({ value: new Date(newDateStr), disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n }\n } else if (item.type === 3 && item.value) {\n let formItemDate = JSON.parse(JSON.stringify(item.value));\n if (formItemDate && formItemDate instanceof Array) {\n formItemDate = formItemDate.map((item) => {\n const [year, month, day] = item.split('-').map(str => parseInt(str));\n const newDateStr = new Date(year, month - 1, day)\n .toLocaleDateString('zh-Hans-CN', { year: 'numeric', month: '2-digit', day: '2-digit' })\n .replace(/\\//g, '-');\n item = new Date(newDateStr);\n });\n if (item.validator) {\n formGroupList[item.name] = this.fb.control({ value: formItemDate, disabled: item.disabled }, item.require && !item.hide ? [Validators.required, item.validator] : []);\n } else {\n formGroupList[item.name] = this.fb.control({ value: formItemDate, disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n }\n } else {\n throw 'form组件中DateRange控件value值格式不规范,正确示例[\\'2020-01-22\\', \\'2020-01-23\\']';\n }\n } else {\n if (item.validator) {\n formGroupList[item.name] = this.fb.control({ value: item.value, disabled: item.disabled }, item.require && !item.hide ? [Validators.required, item.validator] : []);\n } else {\n formGroupList[item.name] = this.fb.control({ value: item.value, disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n }\n }\n });\n\n this.validateHdForm = this.fb.group(formGroupList);\n\n this.formList.forEach((item) => {\n if (item.onChangeEvent) {\n if (item.onChangeEvent) {\n if (item.onChangeEventDebounceTime) {\n this.validateHdForm.get(item.name).valueChanges\n .pipe(\n debounceTime(item.onChangeEventDebounceTime)\n )\n .subscribe(value => this.triggerEvent(item.onChangeEvent, value));\n } else {\n this.validateHdForm.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value));\n }\n }\n }\n });\n this.validateHdForm.valueChanges.subscribe(data => this.onHdFormValueChanged(data));\n this.onHdFormValueChanged();\n }\n\n private dealRow() {\n // 一阶段 遍历数据计算相关数据\n const formListLength = this.formList.length;\n let step = 0;\n for (let i = 0; i < formListLength; i++) {\n if (!this.formList[i].hide) {\n if (i === 0) {\n this.formList[i].totalWidth = this.formList[i].width || 1;\n this.formList[i].isRowFirst = 1;\n step = step + 4;\n } else {\n // 去找到前一个非hide的控件\n for (let j = i - 1; j >= 0; j--) {\n if (this.formList[j].totalWidth) {\n this.formList[i].totalWidth = this.formList[j].totalWidth + (this.formList[i].width || 1);\n if ((this.formList[j].totalWidth + (this.formList[i].width || 1)) > step && this.formList[j].totalWidth <= step) {\n step = step + 4;\n this.formList[i].isRowFirst = 1;\n } else {\n this.formList[i].isRowFirst = 0;\n }\n break;\n }\n }\n }\n }\n }\n\n // 二阶段 isRowFirst的数组项增加子节点\n for (let m = 0; m < formListLength; m++) {\n if (this.formList[m].isRowFirst === 1) {\n this.formList[m].columnItems = [];\n let space = 0;\n for (let n = 1; n < formListLength - m; n++) {\n if (space === 4 || this.formList[m + n].isRowFirst === 1) {\n break;\n }\n if (!this.formList[m + n].hide && this.formList[m + n] && this.formList[m + n].isRowFirst === 0) {\n this.formList[m].columnItems.push(this.formList[m + n]);\n space++;\n }\n }\n }\n }\n }\n\n private onHdFormValueChanged(data?: any) {\n this.changeEvent.emit(this.validateHdForm);\n }\n\n private checkList(list: Array<FormItem>): boolean {\n if (!list || (list && list.length === 0)) {\n return false;\n }\n let nameList = [];\n list.forEach((item) => {\n // 校验单项选择器\n // if (item.type === FormListType.Select && (!item.selectOption.selectList || (item.selectOption.selectList && item.selectOption.selectList.length === 0))) {\n // throw 'form组件数据格式不规范,存在单项选择器没有传入选项!'\n // }\n nameList.push(item.name);\n });\n // 校验name是否重复\n if ([...new Set(nameList)].length !== list.length) {\n throw 'form组件数据格式不规范,存在重复name值!';\n }\n // ...more check\n return true;\n }\n\n public submitForm(): void {\n Object.values(this.validateHdForm.controls).forEach(control => {\n control.markAsDirty();\n control.updateValueAndValidity();\n });\n this.changeEvent.emit(this.validateHdForm.getRawValue());\n }\n\n public resetForm(): void {\n this.validateHdForm.reset();\n Object.values(this.validateHdForm.controls).forEach(control => {\n control.markAsDirty();\n control.updateValueAndValidity();\n });\n this.changeEvent.emit(this.validateHdForm.getRawValue());\n }\n\n public inputClean(filter: FormItem): void {\n const patchObject = {};\n patchObject[filter.name] = null;\n this.validateHdForm.patchValue(patchObject);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdFormComponent } from './hd-form.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgZorroAntdModule,\n HdButtonModule\n ],\n declarations: [HdFormComponent],\n exports: [HdFormComponent]\n})\nexport class HdFormModule { }\n","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChange, SimpleChanges, TemplateRef } from '@angular/core';\nimport { TableTotalOption } from './hd-current-table.service';\nimport { InputBoolean } from 'ng-zorro-antd/core';\nimport { Page } from '../model/common-type';\n\n@Component({\n selector: 'hd-current-table',\n templateUrl: './hd-current-table.component.html',\n styleUrls: ['./hd-current-table.component.less']\n})\nexport class HdCurrentTableComponent implements OnInit {\n @Input() tableData: Page<any>;\n @Input() scroll: { [key: string]: string } = { x: '1px' };\n @Input() @InputBoolean() showSelected: boolean = false;\n @Input() selectField: string = 'billNumber';\n // 合计区域\n @Input() @InputBoolean() showTableTotal: boolean = false;\n @Input() tableTotalOption: Array<TableTotalOption>;\n @Output() selectEvent = new EventEmitter();\n @Output() tableSearchEvent = new EventEmitter();\n @ContentChild(\"tableHead\", { static: false }) tableHead: TemplateRef<any>;\n @ContentChild(\"tableBody\", { static: false }) tableBody: TemplateRef<any>;\n @ContentChild(\"tableTotal\", { static: false }) tableTotal: TemplateRef<any>;\n\n @Input() tableLoading: boolean = false;\n // 表格分页参数\n @Input() tablePageIndex: number = 1;\n @Input() tablePageSize: number = 10;\n @Output() tablePageIndexChange = new EventEmitter<any>();\n @Output() tablePageSizeChange = new EventEmitter<any>();\n // 表格勾选参数\n isAllDisplayDataChecked = false;\n isIndeterminate = false;\n listOfDisplayData = [];\n listOfAllData = [];\n listOfSelection: Array<any> | TemplateRef<void>;\n mapOfCheckedId: { [key: string]: boolean } = {};\n mapOfCheckList: { [key: string]: any } = {};\n\n tableTotalOptionList = [];\n\n constructor() { }\n\n ngOnInit(): void { }\n\n ngOnChanges(changes: SimpleChange) {\n // 数据改变时,重置勾选状态\n if (changes && changes['tableData'] && changes['tableData']['currentValue'] && changes['tableData']['previousValue']) {\n if(changes['tableData']['currentValue']['pageSize'] !== changes['tableData']['previousValue']['pageSize']\n || changes['tableData']['currentValue']['pageNumber'] !== changes['tableData']['previousValue']['pageNumber']){\n return;\n }\n this.resetStatus();\n }\n }\n\n // 表格勾选逻辑\n currentPageDataChange($event: any): void {\n this.listOfDisplayData = $event;\n this.refreshStatus();\n this.resetStatus();\n }\n\n search(reset: boolean) {\n if(reset){\n this.tablePageSizeChange.emit(this.tablePageSize);\n }else{\n this.tablePageIndexChange.emit(this.tablePageIndex);\n }\n // 触发父组件查询事件\n this.tableSearchEvent.emit(reset);\n }\n\n resetStatus() {\n this.isAllDisplayDataChecked = false;\n this.isIndeterminate = false;\n this.mapOfCheckedId = {};\n this.mapOfCheckList = {};\n this.selectEvent.emit([]);\n }\n\n refreshStatus(event: boolean = false, data: any = null): void {\n if (event && data) {\n !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);\n } else if (!event && data) {\n this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];\n }\n this.isAllDisplayDataChecked = this.listOfDisplayData.every(item => this.mapOfCheckedId[item[this.selectField]]);\n this.isIndeterminate =\n this.listOfDisplayData.some(item => this.mapOfCheckedId[item[this.selectField]]) && !this.isAllDisplayDataChecked;\n // 触发select事件\n if (this.selectEvent) {\n const selectedList: Array<any> = Object.values(this.mapOfCheckList);\n this.selectEvent.emit(selectedList);\n }\n // 如果数据为空,则清空勾选标识\n if (this.tableData.content.length === 0) {\n this.isAllDisplayDataChecked = false;\n }\n }\n\n checkAll(value: boolean): void {\n this.listOfDisplayData.forEach(item => {\n if (value) {\n !this.mapOfCheckList[item[this.selectField]] && (this.mapOfCheckList[item[this.selectField]] = item);\n } else {\n this.mapOfCheckList[item[this.selectField]] && delete this.mapOfCheckList[item[this.selectField]];\n }\n\n this.mapOfCheckedId[item[this.selectField]] = value\n });\n this.refreshStatus();\n }\n}\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdCurrentTableComponent } from './hd-current-table.component';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { HdSpaceModule } from '../hd-space/hd-space.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NzTableModule,\n HdSpaceModule\n ],\n declarations: [HdCurrentTableComponent],\n exports: [HdCurrentTableComponent],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class HdCurrentTableModule { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'hd-log',\n templateUrl: './hd-log.component.html',\n styleUrls: ['./hd-log.component.less']\n})\nexport class HdLogComponent implements OnInit {\n @Input() logs: any[];\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { Injectable, NgModule } from '@angular/core';\nimport { NzModalService } from 'ng-zorro-antd';\nimport { HdLogComponent } from './hd-log.component';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class HdLogService {\n\n constructor(private modalService: NzModalService) { }\n\n showLogs(logs: any[]) {\n this.modalService.create({\n nzTitle: '操作日志',\n nzContent: HdLogComponent,\n nzComponentParams: { logs },\n nzFooter: null,\n nzWidth: 1000\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdLogComponent } from './hd-log.component';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdDetailLinesModule } from '../hd-detail-lines/hd-detail-lines.module';\nimport { HdLogService } from './hd-log.service';\n@NgModule({\n imports: [\n CommonModule,\n NgZorroAntdModule,\n HdDetailLinesModule\n ],\n entryComponents: [HdLogComponent],\n declarations: [HdLogComponent],\n exports: [HdLogComponent],\n providers: [HdLogService]\n})\nexport class HdLogModule { }\n","import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'hd-popconfirm',\n templateUrl: './hd-popconfirm.component.html',\n styleUrls: ['./hd-popconfirm.component.scss']\n})\nexport class HdPopconfirmComponent implements OnInit {\n @Input() message: string;\n @Output() confirmOption = new EventEmitter<any>();\n @Output() cancelOption = new EventEmitter<any>();\n\n constructor() { }\n\n ngOnInit() {\n }\n\n\n cancel(e: any): void{\n this.cancelOption.emit();\n }\n\n confirm(e: any): void{\n this.confirmOption.emit();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdPopconfirmComponent } from \"./hd-popconfirm.component\";\n\n@NgModule({\n declarations: [\n HdPopconfirmComponent\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n NgZorroAntdModule,\n ],\n exports: [HdPopconfirmComponent],\n providers: [],\n bootstrap: [HdPopconfirmComponent]\n})\nexport class HdPopconfirmModule {\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { statusToColor } from \"./hd-status.service\";\n\n@Component({\n selector: 'hd-status',\n templateUrl: './hd-status.component.html',\n styleUrls: ['./hd-status.component.less']\n})\nexport class HdStatusComponent implements OnInit {\n @Input() status: string;\n statusColor: string;\n\n constructor() { }\n\n ngOnInit() {\n this.setStatusColor();\n }\n\n ngOnChanges(){\n this.setStatusColor();\n }\n\n setStatusColor(){\n for(let key in statusToColor){\n if(statusToColor[key].indexOf(this.status)!== -1){\n this.statusColor = key;\n break;\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgZorroAntdModule } from 'ng-zorro-antd';\nimport { HdStatusComponent } from \"./hd-status.component\";\n\n@NgModule({\n declarations: [\n HdStatusComponent,\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n NgZorroAntdModule,\n ],\n exports: [HdStatusComponent],\n providers: [],\n bootstrap: [HdStatusComponent]\n})\nexport class HdStatusModule {\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CommonSessionService {\n putSession(session_key: string, session: any) {\n if (session) {\n window.sessionStorage.setItem(session_key, JSON.stringify(session));\n } else {\n window.sessionStorage.removeItem(session_key);\n }\n }\n\n getSession(session_key: string): any {\n return JSON.parse(window.sessionStorage.getItem(session_key));\n }\n\n removeSession(session_key: string) {\n window.sessionStorage.removeItem(session_key);\n }\n}\n","export const ColWidth = {\n tableImageColWidth: 25, // 表格小图标宽度\n tableTwoImageColWidth: 40, // 表格小图标宽度\n billNumberColWidth: 150, // 单据单号列宽度\n nameColWidth: 150, // 基本资料名称列宽度\n codeColWidth: 100, // 基本资料代码列宽度\n codeNameColWidth: 200, // 用于门店、货主、供应商以“[code]name“格式展示时固定宽度\n enumColWidth: 100, // 枚举列宽度\n dateColWidth: 100, // 单个日期\n dateTimeColWidth: 150, // 单个日期带时间\n dateRangeWidth: 200, // 日期范围\n operateColWidth: 150, // 操作列宽度\n numberColWidth: 100, // 数字列\n remarkColWidth: 250, // 备注列\n fixColWidth: 150, // 不属于以上内容的列统一使用该宽度,增加超长省略\n maxColWidth: 350 // 用于展示订单内容,需要缩略、展开显示的列\n};\n","\n// 表格行\nexport class HdTableColumn {\n title: string; // 列名\n name: string | Function = null; // 字段名\n render?: (value: any) => string; // 渲染函数\n width?: number; // 列宽\n color?: string; // 颜色\n align?: 'right' | 'left' | 'center' = 'left';\n click?: (value: any) => void;\n fixed?: 'left' | 'right' = null;\n fixedWidth?: number; // 固定列宽度\n btnList?: Array<OperateBtn> = [];\n isShow?: boolean = true;\n canSort?: boolean = false; // 是否可以排序\n canWarp?: boolean = false; // 用于某一列需要个性化的场景,当为true时,且表格选项showOperateColWarpButton为true时,通过按钮控制对应的列是否换行\n minWidth?: number; // 最小宽度,保证列名能正常显示\n}\n\nexport class OperateBtn {\n name: string;\n showConfirm?: boolean = false;\n isRepeat?: boolean = false; // 是否和别的按钮有显示冲突,譬如:开启,关闭需要再关闭按钮加一个这个属性\n click?: (value: any) => void;\n permission?: (value: any) => boolean;\n}\n\nexport class HdTableTotalOption {\n columnNumber: number; // 总列数\n insertIndex: number; // 插入下标\n insertName: string; // 插入字段\n}\n\nexport class TableCacheOption {\n pageSize: number;\n colWidths: Map<string, number>; // name -> width\n cols: Array<string>; // ['title']\n}\n\n// 设置列 树组件对象\nexport class TreeGrid {\n title: string = '';\n key: string = '';\n disabled?: boolean = false;\n checked?: boolean = false;\n selectable?: boolean = false;\n isLeaf?: boolean = true;\n expanded?: boolean = false;\n}","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\n TemplateRef\n} from '@angular/core';\nimport * as localforage from 'localforage';\nimport { InputBoolean, NzFormatBeforeDropEvent, NzFormatEmitEvent } from 'ng-zorro-antd/core';\nimport { NzResizeEvent } from 'ng-zorro-antd/resizable';\nimport { Observable, of } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { ColWidth } from '../model/colWidth';\nimport { Page } from '../model/common-type';\nimport { CommonSessionService } from '../service/common-session.service';\nimport { HdTableColumn, HdTableTotalOption, TableCacheOption, TreeGrid } from './hd-table.service';\n@Component({\n selector: 'hd-table',\n templateUrl: './hd-table.component.html',\n styleUrls: ['./hd-table.component.less']\n})\nexport class HdTableComponent implements OnInit {\n @Input() uuid: string;\n @Input() tableCols: Array<HdTableColumn> = [];\n @Input() tableData: Page<any>;\n @Input() @InputBoolean() showSelected: boolean = false;\n @Input() @InputBoolean() showOperateColWarpButton: boolean = false;\n @Input() selectField: string = 'billNumber';\n // 合计区域\n @Input() @InputBoolean() showTableTotal: boolean = false;\n @Input() tableTotalOption: Array<HdTableTotalOption>;\n @Output() sortEvent = new EventEmitter();\n @Output() selectEvent = new EventEmitter();\n @Output() tableSearchEvent = new EventEmitter();\n @Input() tableLoading: boolean = false;\n // 表格分页参数\n @Input() tablePageIndex: number = 1;\n @Input() tablePageSize: number;\n @Output() tablePageIndexChange = new EventEmitter<any>();\n @Output() tablePageSizeChange = new EventEmitter<any>();\n @ContentChild(\"tableTotal\", { static: false }) tableTotal: TemplateRef<any>;\n @ContentChild(\"tableLeftButton\", { static: false }) tableLeftButton: TemplateRef<any>;\n @ContentChild(\"tableRightButton\", { static: false }) tableRightButton: TemplateRef<any>;\n scroll = null;\n\n // 表格勾选参数\n isAllDisplayDataChecked = false;\n isIndeterminate = false;\n listOfDisplayData = [];\n listOfAllData = [];\n listOfSelection: Array<any> | TemplateRef<void>;\n mapOfCheckedId: { [key: string]: boolean; } = {};\n mapOfCheckList: { [key: string]: any; } = {};\n // 合计参数\n tableTotalOptionList = [];\n private textWidthCache: { [key: string]: number; } = {};\n // 缓存信息\n tableCacheOption: TableCacheOption = new TableCacheOption();\n userSession: any;\n\n tableColsCache: Array<HdTableColumn> = [];\n showTable: boolean = false;\n selectColListNodes: Array<TreeGrid> = [];\n selectColListNodesCache: Array<TreeGrid> = [];\n showListNodes: boolean = false;\n\n isDropdownVisible: boolean = false;\n // 设置列的可见操作数组\n nowListNodes: Array<TreeGrid> = [];\n // 设置列的不可见操作数组\n hideListNodes: Array<TreeGrid> = [];\n\n // 点击时需要有临时数组存放两个tree,用于取消时候恢复调整前的状态\n cancelNowListNodes: Array<TreeGrid> = [];\n cancelHideListNodes: Array<TreeGrid> = [];\n showDetail: boolean = false;\n localforage: any = null;\n localtionTmp: string = '';\n\n constructor(\n private cdr: ChangeDetectorRef,\n private commonSessionService: CommonSessionService\n ) {\n this.localforage = localforage.createInstance({\n driver: localforage.INDEXEDDB,\n name: 'hd-fscm', // 设置存储库的名称\n version: 1.0, // 设置存储库的版本\n storeName: 'hd-fscm-store', // 设置存储库的存储空间名称\n });\n }\n\n ngOnInit(): void {\n this.localtionTmp = location.pathname;\n if (this.localtionTmp) {\n this.localtionTmp = this.localtionTmp.replace(/\\//g, \"_\");\n }\n this.userSession = this.commonSessionService.getSession('__jy_authorization_session__');\n // 用于开发环境调试\n if (!this.userSession) {\n this.userSession = {\n userCode: 'dev'\n };\n }\n\n this.deleteHideItem();\n if (!this.tableCols || this.tableCols.length === 0) {\n return;\n }\n\n this.localforage.ready().then(() => {\n this.getInitLocalforage();\n }).catch(function (e) {\n console.log('localforage加载异常step1', e);\n throw 'localforage加载异常';\n });\n }\n\n ngOnChanges(changes: SimpleChange) {\n // 数据改变时,重置勾选状态\n if (changes && changes['tableData'] && changes['tableData']['currentValue'] && changes['tableData']['previousValue']) {\n if (changes['tableData']['currentValue']['pageSize'] !== changes['tableData']['previousValue']['pageSize']\n || changes['tableData']['currentValue']['pageNumber'] !== changes['tableData']['previousValue']['pageNumber']) {\n return;\n }\n this.resetStatus();\n }\n\n if (changes['tableCols'] && JSON.stringify(changes['tableCols'].currentValue) !== JSON.stringify(changes['tableCols'].previousValue)) {\n this.deleteHideItem();\n if (!this.tableCols || this.tableCols.length === 0) {\n return;\n }\n this.localforage.ready().then(() => {\n this.getInitLocalforage();\n }).catch(function (e) {\n console.log('localforage加载异常step2', e);\n throw 'localforage加载异常';\n });\n }\n }\n\n deleteHideItem() {\n // 首先把isShow为false数据剔除掉\n this.tableCols = this.tableCols.filter(item => {\n // 如果对象没有 isShow 属性,则默认为 true,保留该对象\n if (!item.hasOwnProperty('isShow')) {\n return true;\n }\n // 如果对象有 isShow 属性,则检查其值是否为 true\n return item.isShow === true;\n });\n }\n\n sort(sort: { key: string; value: string; }) {\n this.sortEvent.emit(sort);\n }\n\n getInitLocalforage() {\n // 首先获取当前hd-table存储的数据 如果没有,则初始化下当前的数据\n this.localforage.getItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid).then((value: TableCacheOption) => {\n this.tableCacheOption = value;\n if (this.tableCacheOption.pageSize && this.tableCacheOption.pageSize > 10) {\n this.tablePageSize = this.tableCacheOption.pageSize;\n } else {\n this.tablePageSize = this.tableCacheOption.pageSize || 10;\n }\n if (!this.tableCacheOption.colWidths) {\n this.tableCacheOption.colWidths = new Map<string, number>();\n }\n this.tablePageSizeChange.emit(this.tablePageSize);\n this.initTable();\n }).catch((err) => {\n this.tableCacheOption = new TableCacheOption();\n this.tablePageSize = 10;\n this.tableCacheOption.pageSize = 10;\n this.tableCacheOption.colWidths = new Map<string, number>();\n this.tablePageSizeChange.emit(this.tablePageSize);\n this.initTable();\n });\n }\n\n initTable() {\n this.showTable = false;\n if (!this.uuid) {\n throw 'hd-table缺失uuid参数,请使用编辑器插件生成并给hd-table赋予uuid属性';\n }\n if (this.judgeRepeatCols()) {\n this.dealCols();\n this.setCols();\n this.dealScroll();\n this.dealOperateBtn();\n this.showTable = true;\n }\n }\n\n // 设置列点击取消\n cancelDropdown(): void {\n this.isDropdownVisible = false;\n this.hideListNodes = JSON.parse(JSON.stringify(this.cancelHideListNodes));\n this.nowListNodes = JSON.parse(JSON.stringify(this.cancelNowListNodes));\n }\n\n // 点击触发设置列\n confirmDropdown(): void {\n // 临时存放下,取消的时候恢复原来的状态 深拷贝下对象数组\n this.cancelHideListNodes = JSON.parse(JSON.stringify(this.hideListNodes));\n this.cancelNowListNodes = JSON.parse(JSON.stringify(this.nowListNodes));\n this.isDropdownVisible = true;\n }\n\n submitGrids() {\n this.tableCacheOption.cols = [];\n this.nowListNodes.forEach(item => {\n this.tableCacheOption.cols.push(item.title);\n });\n this.saveTableCacheOption();\n this.initTable();\n this.isDropdownVisible = false;\n }\n\n // 从缓存设置列\n setCols() {\n this.showListNodes = false;\n this.nowListNodes = [];\n this.hideListNodes = [];\n if (this.tableCacheOption.cols) {\n let { notIncols, incols } = this.tableColsCache.reduce((acc, item) => {\n if (this.tableCacheOption.cols.includes(item.title)) {\n acc.incols.push(item);\n } else {\n acc.notIncols.push(item);\n }\n return acc;\n }, { notIncols: [], incols: [] });\n incols.sort((a, b) => {\n return this.tableCacheOption.cols.indexOf(a.title) - this.tableCacheOption.cols.indexOf(b.title);\n });\n this.tableCols = incols.concat(notIncols);\n }\n\n this.tableCols.forEach((element, index) => {\n if (this.tableCacheOption.cols) {\n element.isShow = this.tableCacheOption.cols.includes(element.title) ? true : false;\n if (element.isShow) {\n this.nowListNodes.push({\n title: element.title,\n key: element.title,\n disabled: element.fixed ? true : false,\n // selectable: false,\n checked: this.tableCacheOption.cols.includes(element.title) ? true : false\n });\n } else {\n this.hideListNodes.push({\n title: element.title,\n key: element.title,\n disabled: element.fixed ? true : false,\n // selectable: false,\n checked: this.tableCacheOption.cols.includes(element.title) ? true : false\n });\n }\n } else {\n element.isShow = true;\n this.nowListNodes.push({\n title: element.title,\n key: element.title,\n checked: true,\n // selectable: false,\n disabled: element.fixed ? true : false\n });\n }\n });\n\n // 调整列宽为缓存宽度\n if (this.tableCacheOption && this.tableCacheOption.colWidths && this.tableCacheOption.colWidths.size !== 0) {\n this.tableCols.forEach((col) => {\n if (this.tableCacheOption.colWidths.has(col.title)) {\n col.width = this.tableCacheOption.colWidths.get(col.title);\n }\n });\n }\n\n this.dealCols();\n setTimeout(() => {\n this.showListNodes = true;\n }, 0);\n }\n\n // 拖拽操作\n beforeDrop = (arg: NzFormatBeforeDropEvent): Observable<boolean> => {\n if (arg.node.origin.disabled || !arg.dragNode.origin.checked || arg.pos === 0) {\n return of(false);\n } else {\n let node: TreeGrid = new TreeGrid();\n node.checked = arg.dragNode.origin.checked;\n node.disabled = arg.dragNode.origin.disabled;\n node.expanded = arg.dragNode.origin.expanded;\n node.isLeaf = arg.dragNode.origin.isLeaf;\n node.key = arg.dragNode.origin.key;\n node.selectable = arg.dragNode.origin.selectable;\n node.title = arg.dragNode.origin.title;\n // 拖拽元素下标\n let dragNodeIndex = this.nowListNodes.findIndex(item => { return item.title == arg.dragNode.origin.title; });\n // 目标位置的下标\n let nodeIndex = this.nowListNodes.findIndex(item => { return item.title == arg.node.origin.title; }) + (arg.pos === -1 ? 0 : arg.pos);\n this.nowListNodes.splice(nodeIndex, 0, node);\n this.nowListNodes.splice(nodeIndex >= dragNodeIndex ? dragNodeIndex : dragNodeIndex + 1, 1);\n return of(true).pipe(delay(100));\n }\n };\n\n moveElementNearby(arr, elementToMoveTitle, targetElementTitle, pos) {\n const tmpArray = JSON.parse(JSON.stringify(arr));\n const targetIndex = tmpArray.findIndex(item => item.title === targetElementTitle);\n const elementIndex = tmpArray.findIndex(item => item.title === elementToMoveTitle);\n const newIndex = pos < 0 ? (targetIndex + pos) : targetIndex;\n // 移除目标元素,并插入到新的位置\n const removedElement = tmpArray.splice(elementIndex, 1);\n tmpArray.splice(newIndex + 1, 0, removedElement[0]);\n return tmpArray;\n }\n\n // 勾选操作\n checkAction(event: NzFormatEmitEvent): void {\n // 勾选只有在hideListNodes,取消勾选只有在nowListNodes\n if (event.node.origin.checked) {\n let node: TreeGrid = new TreeGrid();\n node = this.hideListNodes.find((item) => {\n return item.title === event.node.origin.title;\n });\n node.checked = true;\n // 找到第一个fixed属性为right的title,找到插入元素的位置\n let title = null;\n for (let i = this.tableColsCache.length - 1; i >= 0; i--) {\n if (this.tableColsCache[i].fixed === 'right') {\n title = this.tableColsCache[i].title;\n break;\n }\n }\n let temporaryNodeList = this.nowListNodes.slice(0);\n if (!title) {\n temporaryNodeList.push(node);\n } else {\n const index = this.nowListNodes.findIndex(node => node.title === title);\n temporaryNodeList.splice(index, 0, node);\n }\n this.nowListNodes = temporaryNodeList;\n this.hideListNodes = this.hideListNodes.filter((item) => {\n return item.title !== event.node.origin.title;\n });\n } else {\n // if (this.hideListNodes.length === 0 && this.tableCacheOption && this.tableCacheOption.cols) {\n // this.hideListNodes = this.getHideListNodes();\n // }\n let temporaryNodeList = this.hideListNodes.slice(0);\n this.nowListNodes.forEach(item => {\n if (item.title === event.node.origin.title) {\n const innerItem = JSON.parse(JSON.stringify(item));\n innerItem.checked = false;\n temporaryNodeList.push(innerItem);\n }\n });\n this.hideListNodes = temporaryNodeList;\n\n // 为了防止未选择的数组顺序因为push方法而改变,通过初始数据获取显示的字段列表\n this.nowListNodes = this.nowListNodes.filter((item) => {\n return item.title !== event.node.origin.title;\n });\n }\n }\n\n // 防止未选择的数组顺序因为push方法而改变,从初始数据获取隐藏未显示的字段列表\n getHideListNodes(): Array<TreeGrid> {\n let temporaryNodeList: Array<TreeGrid> = [];\n // 从tableColsCache里面找没有在storage里面出现的字段,组成hideList\n this.tableColsCache.forEach((item) => {\n if (!this.tableCacheOption.cols.includes(item.title)) {\n let nodeItem: TreeGrid = new TreeGrid();\n nodeItem.title = item.title;\n nodeItem.key = item.title;\n nodeItem.disabled = item.fixed ? true : false;\n nodeItem.checked = false;\n temporaryNodeList.push(nodeItem);\n }\n });\n return temporaryNodeList;\n }\n\n dealCols() {\n if (!this.tableCols[0].minWidth) {\n this.tableCols.forEach(item => {\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = item.title;\n document.body.appendChild(span);\n item.minWidth = span.offsetWidth + 16;\n span.style.display = 'none';\n document.body.removeChild(span);\n });\n }\n // 处理左右吸附的数据在数组中的位置\n const leftFixedCols = this.tableCols.filter(col => col.fixed === 'left');\n const rightFixedCols = this.tableCols.filter(col => col.fixed === 'right');\n const normalCols = this.tableCols.filter(col => !col.fixed);\n const resultCols = leftFixedCols.concat(normalCols).concat(rightFixedCols);\n this.tableCols = resultCols;\n if (!this.tableColsCache || this.tableColsCache.length === 0) {\n // 缓存一下表格的数据\n this.tableColsCache = [...this.tableCols];\n }\n }\n\n saveTableCacheOption() {\n this.localforage.setItem('hd-table_' + this.userSession.userCode + '_' + this.localtionTmp + '_' + this.uuid, this.tableCacheOption);\n }\n\n judgeRepeatCols() {\n for (let i = 0; i < this.tableCols.length; i++) {\n for (let j = i + 1; j < this.tableCols.length; j++) {\n if (this.tableCols[i].title === this.tableCols[j].title) {\n throw `hd-table组件中列名 ${this.tableCols[i].title} 重复`;\n }\n }\n }\n return true;\n }\n\n onResize({ width }: NzResizeEvent, col: HdTableColumn): void {\n let tempWidth = 0;\n if (width > col.minWidth) {\n tempWidth = width;\n } else {\n tempWidth = col.minWidth;\n }\n this.tableCacheOption.colWidths.set(col.title, tempWidth);\n this.saveTableCacheOption();\n this.tableCols = this.tableCols.map(e => (e.title === col.title ? { ...e, width: tempWidth } : e));\n this.dealScroll();\n }\n\n dealOperateBtn() {\n let operateCol = this.tableCols.find(col => col.title === '操作') || null;\n if (operateCol) {\n let textStr = '';\n operateCol.btnList.forEach(btn => {\n if (!btn.isRepeat) {\n textStr += btn.name;\n }\n });\n\n const span = document.createElement('a');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = textStr;\n document.body.appendChild(span);\n operateCol.width = span.offsetWidth + (operateCol.btnList.filter(item => !item.isRepeat).length - 1) * 4 + 16;\n span.style.display = 'none';\n document.body.removeChild(span);\n }\n }\n\n triggerEvent(fn: any, event: any) {\n if (fn) {\n fn(event);\n }\n }\n\n dealScroll() {\n let colWidth = 0;\n if (this.showSelected) {\n colWidth += 40;\n }\n this.tableCols.forEach(item => {\n if (!item.width) {\n item.width = ColWidth.fixColWidth;\n }\n if (item.isShow) {\n item.fixedWidth = colWidth;\n colWidth += item.width;\n }\n });\n\n if (this.tableTotal) {\n this.scroll = {\n x: '1px',\n y: 'calc(100vh - 180px)'\n };\n } else {\n this.scroll = {\n x: '1px',\n y: 'calc(100vh - 140px)'\n };\n }\n }\n\n isTextOverflow(text: string, maxWidth: number): boolean {\n const cachedWidth = this.textWidthCache[text];\n if (cachedWidth !== undefined) {\n return cachedWidth + 15 >= maxWidth;\n }\n\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '12px';\n span.style.display = 'inline-block'; // 将样式修改为 inline-block\n span.innerText = text;\n document.body.appendChild(span);\n const isOverflow = span.offsetWidth + 15 >= maxWidth;\n this.textWidthCache[text] = span.offsetWidth;\n span.style.display = 'none';\n document.body.removeChild(span);\n return isOverflow;\n }\n\n // 表格勾选逻辑\n currentPageDataChange($event: any): void {\n this.listOfDisplayData = $event;\n this.refreshStatus();\n this.resetStatus();\n }\n\n search(reset: boolean) {\n this.tableCacheOption.pageSize = this.tablePageSize;\n this.saveTableCacheOption();\n if (reset) {\n this.tablePageSizeChange.emit(this.tablePageSize);\n } else {\n this.tablePageIndexChange.emit(this.tablePageIndex);\n // 触发父组件查询事件\n this.tableSearchEvent.emit(reset);\n }\n }\n\n resetStatus() {\n this.isAllDisplayDataChecked = false;\n this.isIndeterminate = false;\n this.mapOfCheckedId = {};\n this.mapOfCheckList = {};\n this.selectEvent.emit([]);\n }\n\n refreshStatus(event: boolean = false, data: any = null): void {\n if (event && data) {\n !this.mapOfCheckList[data[this.selectField]] && (this.mapOfCheckList[data[this.selectField]] = data);\n } else if (!event && data) {\n this.mapOfCheckList[data[this.selectField]] && delete this.mapOfCheckList[data[this.selectField]];\n }\n this.isAllDisplayDataChecked = this.listOfDisplayData.every(item => this.mapOfCheckedId[item[this.selectField]]);\n this.isIndeterminate =\n this.listOfDisplayData.some(item => this.mapOfCheckedId[item[this.selectField]]) && !this.isAllDisplayDataChecked;\n // 触发select事件\n if (this.selectEvent) {\n const selectedList: Array<any> = Object.values(this.mapOfCheckList);\n this.selectEvent.emit(selectedList);\n }\n // 如果数据为空,则清空勾选标识\n if (this.tableData.content.length === 0) {\n this.isAllDisplayDataChecked = false;\n }\n }\n\n checkAll(value: boolean): void {\n this.listOfDisplayData.forEach(item => {\n if (value) {\n !this.mapOfCheckList[item[this.selectField]] && (this.mapOfCheckList[item[this.selectField]] = item);\n } else {\n this.mapOfCheckList[item[this.selectField]] && delete this.mapOfCheckList[item[this.selectField]];\n }\n\n this.mapOfCheckedId[item[this.selectField]] = value;\n });\n this.refreshStatus();\n }\n\n judgeColEmpty(str: any) {\n if (str || str === 0) {\n return str;\n } else {\n return '<空>';\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';\nimport { NzResizableModule } from 'ng-zorro-antd/resizable';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { HdButtonGroupModule } from '../hd-button-group/hd-button-group.module';\nimport { HdButtonModule } from '../hd-button/hd-button.module';\nimport { HdSpaceModule } from '../hd-space/hd-space.module';\nimport { HdStatusModule } from '../hd-status/hd-status.module';\nimport { CommonSessionService } from '../service/common-session.service';\nimport { HdTableComponent } from './hd-table.component';\n@NgModule({\n imports: [\n CommonModule,\n NzTableModule,\n HdSpaceModule,\n HdStatusModule,\n HdButtonModule,\n HdButtonGroupModule,\n NzToolTipModule,\n NzPopconfirmModule,\n NzResizableModule,\n NzDropDownModule,\n NzTreeModule,\n NzIconModule\n ],\n declarations: [HdTableComponent],\n providers: [CommonSessionService],\n exports: [HdTableComponent],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class HdTableModule { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'hd-tip',\n templateUrl: './hd-tip.component.html',\n styleUrls: ['./hd-tip.component.less']\n})\nexport class HdTipComponent implements OnInit {\n @Input() showIcon: boolean = true;\n @Input() fontSize: number;\n @Input() title: string;\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdTipComponent } from './hd-tip.component';\nimport {NgZorroAntdModule} from 'ng-zorro-antd';\n\n@NgModule({\n imports: [\n CommonModule,\n NgZorroAntdModule\n ],\n exports: [HdTipComponent],\n declarations: [HdTipComponent]\n})\nexport class HdTipModule { }\n","import { HdButtonGroupModule } from './hd-button-group/hd-button-group.module';\nimport { HdButtonModule } from './hd-button/hd-button.module';\n\nimport { HdDetailFormModule } from './hd-detail-form/hd-detail-form.module';\nimport { HdDetailLinesModule } from './hd-detail-lines/hd-detail-lines.module';\nimport { HdDetailTipModule } from './hd-detail-tip/hd-detail-tip.module';\n\nimport { HdFilterModule } from './hd-filter/hd-filter.module';\nimport { HdFormLinesModule } from './hd-form-lines/hd-form-lines.module';\nimport { HdFormModule } from './hd-form/hd-form.module';\n\nimport { NgModule } from '@angular/core';\nimport { HdCurrentTableModule } from './hd-current-table/hd-current-table.module';\nimport { HdLogModule } from './hd-log/hd-log.module';\nimport { HdPopconfirmModule } from './hd-popconfirm/hd-popconfirm.module';\nimport { HdSpaceModule } from './hd-space/hd-space.module';\nimport { HdStatusModule } from './hd-status/hd-status.module';\nimport { HdTableModule } from './hd-table/hd-table.module';\nimport { HdTipModule } from './hd-tip/hd-tip.module';\n@NgModule({\n exports: [\n HdButtonModule,\n HdButtonGroupModule,\n\n HdDetailFormModule,\n HdDetailLinesModule,\n HdDetailTipModule,\n\n HdFilterModule,\n HdFormModule,\n HdFormLinesModule,\n\n HdSpaceModule,\n HdStatusModule,\n HdCurrentTableModule,\n HdTableModule,\n HdTipModule,\n HdPopconfirmModule,\n HdLogModule\n ]\n})\n\nexport class HdComponentModule {\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdComponentModule } from \"./hd-component.module\";\nimport { HdLogComponent } from './hd-log/hd-log.component';\n@NgModule({\n imports: [CommonModule],\n exports: [HdComponentModule],\n providers: [],\n entryComponents: [HdLogComponent]\n})\nexport class FantasyNgzorroModule { }\n","import { HdOption } from \"../model/common-type\";\n\n// 表格行\nexport class TableColumn {\n label: string; // 文本\n name: string; // 字段名称\n value?: string | boolean | Array<string | Date> | null = null; // 值 不传默认为null\n selectList?: Array<HdOption>; // 控件为Select时,选项列表\n // 组件内部成员\n show?: boolean;\n}\n\n//\nexport class TableTotalOption {\n columnNumber: number; // 总列数\n insertIndex: number; // 插入下标\n insertName: string; // 插入字段\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdDetailFormService {\n\n constructor() { }\n\n}\n","export class TotalOption {\n insertIndex: number; // 插入下标\n insertValue: any; // 插入值\n align?: string; // 靠左还是靠右\n showDecimal?: boolean; // 是否显示小数位\n isHide?: boolean; // 是否隐藏, 这里只针对列会同步消失的场景\n}\n","import { Injectable } from '@angular/core';\nimport { SelectOption, CascaderOption } from '../model/common-type';\n\n// 控件列表\nexport class Filter {\n type: FilterListType;\n label: string; // 文本\n name: string; // 字段名称\n placeholder?: string; // 输入框提示文案\n value?: string | boolean | number | Array<string | Date> | null = null; // 值 不传默认为null\n // 组件内部成员\n show?: boolean;\n selectOption?: SelectOption; // 控件为Select时,选项列表\n onSearchEvent?: Function; // select选择器搜索事件 可用于更新备选集合\n onChangeEvent?: Function; // 控件的值改变事件 可用于控件间联动\n hdDisabledDate?: Function; // date-picker组件不可选择的日期\n showTime?: boolean = false; // 日期选择器是否包含时间\n require?: boolean = false; // 是否必填\n cascaderOption?: CascaderOption; // 级联选择器配置\n}\n\n\n// 控件类型\nexport enum FilterListType {\n Input, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n MultipleSelect, // 多选\n Cascader, // 级联选择\n Month // 月份选择\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFilterService {\n\n constructor() {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { CascaderOption, InputNumber, SelectOption } from '../model/common-type';\n\n// 控件列表\nexport class FormItem {\n type: FormListType;\n label: string; // 文本\n name: string; // 字段名称\n require?: boolean = false; // 是否必填\n placeholder?: string; // 输入框提示文案\n width?: number = 1; // 占据的列数。默认1\n hide?: boolean = false; // 是否为隐藏字段,仅用于填充表单的字段,不显示在页面上\n totalWidth?: number = 0;\n isRowFirst?: number = 0; // 是否是一行的第一个元素\n columnItems?: Array<any>; // 当前行的所有列的items\n value?: string | boolean | number | Date | Array<string | Date> | null = null; // 值 不传默认为null\n disabled?: boolean;\n color?: string;\n // 组件内部成员\n maxLength?: number; // input控件的输入长度\n selectOption?: SelectOption; // 控件为Select时,选项列表\n inputNumber?: InputNumber = new InputNumber(); // number组件的min、max、step\n onChangeEvent?: Function; // 控件的值改变事件 可用于控件间联动\n onSearchEvent?: Function; // select选择器搜索事件 可用于更新备选集合\n defaultLabel?: string | Array<string>; // select选择器不初始化的时候可以使用defaultLabel搭配value,设置默认值\n hdDisabledDate?: Function; // date-picker组件不可选择的日期\n explain?: string; // label底部的介绍\n textAreaRows?: number; // textArea的行数\n showTime?: boolean = false; // 日期选择器是否包含时间\n labelColor?: string; // label的文字的颜色\n validatorKeys?: Array<ValidatorKey>;\n validator?: ValidatorFn;\n onChangeEventDebounceTime?: number; // change事件防抖\n onSearchEventEventDebounceTime?: number; // search事件防抖\n cascaderOption?: CascaderOption; // 级联选择器配置\n format?: string; // 时间的格式化规则\n}\n\nexport class ValidatorKey {\n key: string;\n label: string;\n}\n\n// 控件类型\nexport enum FormListType {\n Input, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n TextArea, // 块级输入框\n InputNumber, // 数字输入\n MultipleSelect, // 多选\n ViewDom, // 单纯的显示控件\n Switch, // 开关\n Time, // 时间选择器\n Cascader // 级联选择器\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormService {\n constructor() {\n }\n}\n","export const StaticConst = {\n MaxPageSize: 99999999\n};\n","import { FormItem } from './hd-form/hd-form.service';\nimport { round } from 'lodash';\n// 工具类\nexport const Utils = {\n /**\n * 填充select控件选项\n * @param formList 入参数组 Array<any>\n * @param name 需要填充options的属性名称\n * @param options 选项列表\n */\n fillSelectOption(formList: Array<any>, name: string, options: Array<any>) {\n const returnData = formList;\n if (!returnData || !returnData.length) {\n return returnData;\n }\n const length = formList.length;\n for (let i = 0; i < length; i++) {\n if (returnData[i].name === name) {\n returnData[i].selectOption.selectList = options;\n }\n }\n return returnData;\n },\n\n /**\n * 填充FormItem数组:针对入参list的每一个FormItem,判断obj中是否有对应的name字段,如果有,则填充value。\n * @param list 入参数组 Array<FormItem>\n * @param obj 需要填充到list的属性\n */\n fillArrayFormItem(list: Array<FormItem>, obj: Object) {\n const returnData = [];\n if (!list || !list.length) {\n return returnData;\n }\n const length = list.length;\n for (let i = 0; i < length; i++) {\n if (obj[list[i].name]) {\n list[i].value = obj[list[i].name];\n }\n }\n return list;\n },\n\n /**\n * 数组转换成选择器的选项数组\n * @param list 入参数组 字符串数组或对象数组\n * @param option 转换选项\n * 注:list为字符串数组,option不需要传,按照标准的label、value转换\n */\n arrayToSelectOptionList(list: Array<any>, option?: {\n value: string,\n label: string,\n valueTip?: string,\n labelTip?: string\n }) {\n const returnData = [];\n if (!list || !list.length) {\n return returnData;\n }\n if (option) {\n if (option.labelTip && option.valueTip) {\n list.forEach((item) => {\n const returnItem: any = item;\n returnItem.label = item[option.label];\n returnItem.value = item[option.value];\n if (option.valueTip) {\n returnItem[option.valueTip] = item[option.value];\n }\n if (option.labelTip) {\n returnItem[option.labelTip] = item[option.label];\n }\n returnData.push(returnItem);\n });\n } else {\n list.forEach((item) => {\n const returnItem: any = item;\n returnItem.label = item[option.label];\n returnItem.value = item[option.value];\n returnData.push(returnItem);\n });\n }\n } else {\n list.forEach((item) => {\n const returnItem: any = {};\n returnItem.label = item;\n returnItem.value = item;\n returnData.push(returnItem);\n });\n }\n return returnData;\n },\n\n /**\n * 求和\n * @param nums 数组\n * @param precision 精度\n */\n add(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n let result = 0;\n for (const num of nums) {\n result += num;\n }\n return round(result, precision);\n },\n\n /**\n * 减法\n * @param nums 数组\n * @param precision 精度\n */\n subtract(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n if (nums.length < 2) {\n throw new Error('减法入参数量至少要2个!');\n }\n let result = nums.shift();\n for (const num of nums) {\n result -= num;\n }\n return round(result, precision);\n },\n\n /**\n * 乘法\n * @param nums 数组\n * @param precision 精度\n */\n multiply(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n let result = 1;\n for (const num of nums) {\n result = result * num;\n }\n return round(result, precision);\n },\n\n /**\n * 除法\n * @param nums 数组\n * @param precision 精度\n */\n divide(nums: number[], precision: number = 2) {\n if (!Array.isArray(nums)) {\n throw new Error('参数必须是数组');\n }\n if (nums.some(num => typeof num !== 'number')) {\n throw new Error('数组元素必须是数字');\n }\n if (nums.length < 2) {\n throw new Error('除法入参数量至少要2个!');\n }\n let result = nums.shift();\n for (const num of nums) {\n if (num === 0) {\n throw new Error('除数不能为0!');\n }\n result = result / num;\n }\n return round(result, precision);\n }\n};\n"],"names":["tslib_1.__decorate","InputBoolean","localforage.createInstance","localforage.INDEXEDDB"],"mappings":"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"}