fantasy-ngzorro 1.2.8 → 1.2.9

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,"sources":["../../../node_modules/tslib/tslib.es6.js","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.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-lines/hd-form-lines.service.ts","ng://fantasy-ngzorro/hd-form/hd-form.service.ts","ng://fantasy-ngzorro/utils.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","e","ar","push","error","__spread","concat","HdButtonGroupComponent","ngOnInit","Component","args","selector","template","ContentChild","static","HdButtonGroupModule","NgModule","imports","CommonModule","FormsModule","NgZorroAntdModule","declarations","exports","primary","dashed","danger","default","link","submit","reset","add","normal","small","HdButtonService","Injectable","providedIn","HdButtonComponent","type","ButtonType","size","ButtonSize","disabled","clickAction","EventEmitter","nzOnConfirm","loading","observers","ngOnChanges","changes","innerClickAction","option","emit","Input","Output","tslib_1.__decorate","InputBoolean","HdButtonModule","HdDetailFormComponent","formCols","Array","filter","item","hide","JSON","stringify","currentValue","previousValue","HdDetailFormModule","totalPages","totalElements","pageNumber","pageSize","hasContent","hasNext","content","HdOption","SelectOption","showLabelAndValue","hdDropdownMatchSelectWidth","hdServerSearch","hdShowItemCode","SelectOptionTableColumn","InputNumber","min","max","step","precision","HdDetailLinesComponent","showSelected","allowDrop","scroll","x","selectField","selectEvent","showTotal","totalOption","columnsNumber","hdFrontPagination","totalOptionList","tableData","Page","tableLoading","tablePageIndex","tablePageSize","isAllDisplayDataChecked","isIndeterminate","listOfDisplayData","listOfAllData","mapOfCheckedId","mapOfCheckList","countSelected","calculateTotal","_this","selectedField","lines","forEach","keys","round","drop","event","moveItemInArray","previousIndex","currentIndex","parse","Number","fill","insertIndex","insertValue","align","showDecimal","isHide","currentPageDataChange","$event","refreshStatus","resetStatus","data","every","some","values","checkAll","HdDetailLinesModule","NzTableModule","DragDropModule","schemas","NO_ERRORS_SCHEMA","statusToColor","#FAB13B","#9FA4A2","#F5222D","#3B77E3","#12A34F","#F05B24","HdDetailTipComponent","HdStatusService","tip","setStatusColor","indexOf","state","statusColor","HdDetailTipModule","HdFilterComponent","fb","searchEvent","isShowMore","filterListModular","init","checkList","filterList","formGroupList","index","name","control","show","validateFilterForm","group","triggerEvent","fn","selectOption","computeOffset","list","nameList","tslib_1.__spread","Set","submitForm","getRawValue","resetForm","showMore","inputClean","patchObject","patchValue","FormBuilder","HdFilterModule","ReactiveFormsModule","Style","HdSpaceService","HdSpaceComponent","SpaceType","background","style","HdSpaceModule","HdFormLinesComponent","ngZone","showSearch","operateButtons","changeEvent","showDeleteConfirm","paginationPageIndex","paginationPageSize","showForm","storeFormLinesData","filterStoreFormLinesData","filterIndexStore","isFilterData","formValid","textWidthCache","formLinesData","validateHdFormLines","get","getValid","innerGetValid","tmpValidateHdFormLines","array","formLinesDataItem","formGroupObj","formLines","require","Validators","required","label","lineIndex","controls","formGroupTmp","onChangeEvent","valueChanges","subscribe","insert","valid","getLines","allLines","searchLines","filterStr","setStoreData","filterValue","trim","toLowerCase","filteredData","_b","tslib_1.__values","_c","canSearch","toString","includes","getStyle","line","formItem","width","styleObj","min-width","colorOption","color","isEdit","createForm","addFormLineWithData","addFormLine","onHdFormValueChanged","newLine","newLineItem","linesFormArray","isHdFormLineSearchAdd","formGroupSubmit","calculateLineNumber","setValue","emitEvent","deleteFormLine","removeAt","pageIndexChange","pageSizeChange","lines_1","getNowLines","addIndex","splice","deletedIndex_1","count","filterIndex_1","pop","selectOptionCheckList","onSearchEvent","innerItem","selectValue","id","document","querySelector","select","isTextOverflow","text","maxWidth","cachedWidth","undefined","span","createElement","visibility","position","whiteSpace","fontSize","display","innerText","body","appendChild","isOverflow","offsetWidth","removeChild","judgeColEmpty","str","NgZone","HdFormLinesModule","HdFormComponent","formList","dealRow","_a","split","map","year","month","day","newDateStr","Date","toLocaleDateString","replace","validator","formItemDate","validateHdForm","formListLength","totalWidth","isRowFirst","j","columnItems","space","markAsDirty","updateValueAndValidity","HdFormModule","HdCurrentTableComponent","showTableTotal","tableSearchEvent","tablePageIndexChange","tablePageSizeChange","tableTotalOptionList","search","selectedList","HdCurrentTableModule","HdLogComponent","HdLogService","modalService","showLogs","logs","create","nzTitle","nzContent","nzComponentParams","nzFooter","nzWidth","NzModalService","HdLogModule","entryComponents","providers","HdPopconfirmComponent","confirmOption","cancelOption","cancel","confirm","HdPopconfirmModule","bootstrap","HdStatusComponent","status","HdStatusModule","CommonSessionService","putSession","session_key","session","window","sessionStorage","setItem","removeItem","getSession","getItem","removeSession","ColWidth","tableImageColWidth","billNumberColWidth","nameColWidth","codeColWidth","codeNameColWidth","enumColWidth","dateColWidth","dateTimeColWidth","dateRangeWidth","operateColWidth","numberColWidth","remarkColwidth","fixColWidth","maxColWidth","fixed","btnList","isShow","canSort","canWarp","OperateBtn","showConfirm","isRepeat","HdTableTotalOption","TableCacheOption","title","checked","selectable","isLeaf","expanded","HdTableComponent","cdr","commonSessionService","tableCols","showOperateColWarpButton","sortEvent","tableCacheOption","tableColsCache","showTable","selectColListNodes","selectColListNodesCache","showListNodes","isDropdownVisible","nowListNodes","hideListNodes","cancelNowListNodes","cancelHideListNodes","showDetail","localforage","localtionTmp","beforeDrop","arg","node","origin","dragNode","pos","of","TreeGrid","dragNodeIndex","findIndex","nodeIndex","pipe","delay","localforage.createInstance","driver","localforage.INDEXEDDB","version","storeName","console","log","location","pathname","userSession","userCode","deleteHideItem","ready","then","getInitLocalforage","catch","sort","uuid","colWidths","Map","initTable","err","judgeRepeatCols","dealCols","setCols","dealScroll","dealOperateBtn","cancelDropdown","confirmDropdown","submitGrids","cols","saveTableCacheOption","reduce","notIncols","incols","a","b","element","col","has","setTimeout","moveElementNearby","arr","elementToMoveTitle","targetElementTitle","tmpArray","targetIndex","elementIndex","newIndex","removedElement","checkAction","find","title_1","temporaryNodeList","slice","temporaryNodeList_1","getHideListNodes","nodeItem","minWidth","leftFixedCols","rightFixedCols","normalCols","resultCols","onResize","tempWidth","set","operateCol","textStr_1","btn","colWidth","fixedWidth","tableTotal","y","ChangeDetectorRef","HdTableModule","NzToolTipModule","NzPopconfirmModule","NzResizableModule","NzDropDownModule","NzTreeModule","NzIconModule","HdTipComponent","showIcon","HdTipModule","HdComponentModule","FantasyNgzorroModule","HdDetailFormService","TotalOption","showTime","Select","DateRange","MultipleSelect","HdFilterService","inputNumber","ColorOption","ExplainOption","TextArea","ViewDom","Switch","Time","HdFormLinesService","ValidatorKey","HdFormService","Utils","fillSelectOption","options","returnData","selectList","fillArrayFormItem","obj","arrayToSelectOptionList","labelTip","valueTip","returnItem"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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","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}\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}\n\nexport class SelectOptionTableColumn {\n width: number;\n label: string; // 这里对应的是列名\n name: string; // 对应selectList里面的name值, 如果有render字段 则去render函数渲染\n pictureName?: string; // 对应的图片名字\n render?: (value: any) => string;\n}\n\nexport class InputNumber {\n min?: number = 0;\n max?: number = 99999999;\n step?: number = 1;\n precision?: number = 4;\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'],\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'],\n // 橙色\n '#F05B24': ['picking', 'partialReceived', 'partDelete', 'tender']\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdStatusService {\n constructor() { }\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, FormControl, FormGroup } from '@angular/forms';\nimport { Filter, FilterListType } 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\n validateFilterForm: FormGroup;\n isShowMore: boolean = true;\n // 对filterList取模运算\n filterListModular: number = 0;\n\n constructor(private fb: FormBuilder) { }\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 this.searchEvent.emit(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 { Component, EventEmitter, Input, NgZone, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { round } from 'lodash';\nimport { InputBoolean } from 'ng-zorro-antd';\nimport { TotalOption } from '../hd-detail-lines/hd-detail-lines.service';\nimport { FormLine } from './hd-form-lines.service';\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 @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\n constructor(private fb: FormBuilder,\n private ngZone: NgZone) { }\n\n ngOnInit() {\n // 缓存一下总的表单数据\n this.storeFormLinesData = this.formLinesData;\n this.init();\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 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({ value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null), disabled: item.disabled }, 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 formGroupTmp.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value, formGroupTmp));\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();\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 /**\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({ value: item.value, disabled: item.disabled } || 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) => {\n if (item.onChangeEvent) {\n if (item.onChangeEvent) {\n formGroupSubmit.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value, formGroupSubmit));\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) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({ value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null), disabled: item.disabled }, 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) => {\n if (item.onChangeEvent) {\n formGroupTmp.get(item.name).valueChanges.subscribe(value => {\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) {\n this.linesFormArray.insert(index || this.linesFormArray.controls.length, this.newLineItem());\n this.calculateLineNumber();\n }\n\n deleteFormLine(index: any) {\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 }\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 public pageIndexChange(event: number): void {\n this.paginationPageIndex = event;\n }\n\n public pageSizeChange(event: number): void {\n this.paginationPageSize = event;\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): void {\n const inputDom: any = document.querySelector(id);\n inputDom.select();\n }\n\n private textWidthCache: { [key: string]: number; } = {};\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 { 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 constructor(private fb: FormBuilder) { }\n\n ngOnInit() {\n if (!this.formList || this.formList.length === 0) {\n return;\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 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 this.validateHdForm.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value));\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) > 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 // 二阶段 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 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: logs },\n nzFooter: null,\n nzWidth: 800\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 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// 表格行\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 { ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChange, TemplateRef } 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 console.log('local', location);\n console.log('window', window);\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 } from '../model/common-type';\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}\n\n// 控件类型\nexport enum FilterListType {\n Input, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n MultipleSelect // 多选\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFilterService {\n\n constructor() { }\n\n}\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}\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, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n TextArea, // 块级输入框\n InputNumber, // 数字输入\n MultipleSelect, // 多选\n ViewDom, // 单纯的显示控件\n Switch, // 开关\n Time // 时间选择器\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormLinesService {\n constructor() { }\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { InputNumber, SelectOption } from '../model/common-type';\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}\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}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormService {\n constructor() { }\n}\n","import { FormItem } from \"./hd-form/hd-form.service\";\n\n// 工具类\nexport const Utils = {\n /**\n * 填充select控件选项\n * @param formList 入参数组 Array<any>\n * @param name 需要填充options的属性名称\n * @param options 选项列表\n */\n fillSelectOption: function (formList: Array<any>, name: string, options: Array<any>) {\n let 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: function (list: Array<FormItem>, obj: Object) {\n let 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: function (list: Array<any>, option?: { value: string, label: string, valueTip?: string, labelTip?: string }) {\n let returnData = [];\n if (!list || !list.length) {\n return returnData;\n }\n if (option) {\n if (option.labelTip && option.valueTip) {\n list.forEach((item) => {\n let 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 let 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 let returnItem: any = {};\n returnItem.label = item;\n returnItem.value = item;\n returnData.push(returnItem);\n })\n }\n return returnData;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","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.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-lines/hd-form-lines.service.ts","ng://fantasy-ngzorro/hd-form/hd-form.service.ts","ng://fantasy-ngzorro/utils.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","e","ar","push","error","__spread","concat","HdButtonGroupComponent","ngOnInit","Component","args","selector","template","ContentChild","static","HdButtonGroupModule","NgModule","imports","CommonModule","FormsModule","NgZorroAntdModule","declarations","exports","primary","dashed","danger","default","link","submit","reset","add","normal","small","HdButtonService","Injectable","providedIn","HdButtonComponent","type","ButtonType","size","ButtonSize","disabled","clickAction","EventEmitter","nzOnConfirm","loading","observers","ngOnChanges","changes","innerClickAction","option","emit","Input","Output","tslib_1.__decorate","InputBoolean","HdButtonModule","HdDetailFormComponent","formCols","Array","filter","item","hide","JSON","stringify","currentValue","previousValue","HdDetailFormModule","totalPages","totalElements","pageNumber","pageSize","hasContent","hasNext","content","HdOption","SelectOption","showLabelAndValue","hdDropdownMatchSelectWidth","hdServerSearch","hdShowItemCode","SelectOptionTableColumn","SelectOptionTableColumnIcon","InputNumber","min","max","step","precision","HdDetailLinesComponent","showSelected","allowDrop","scroll","x","selectField","selectEvent","showTotal","totalOption","columnsNumber","hdFrontPagination","totalOptionList","tableData","Page","tableLoading","tablePageIndex","tablePageSize","isAllDisplayDataChecked","isIndeterminate","listOfDisplayData","listOfAllData","mapOfCheckedId","mapOfCheckList","countSelected","calculateTotal","_this","selectedField","lines","forEach","keys","round","drop","event","moveItemInArray","previousIndex","currentIndex","parse","Number","fill","insertIndex","insertValue","align","showDecimal","isHide","currentPageDataChange","$event","refreshStatus","resetStatus","data","every","some","values","checkAll","HdDetailLinesModule","NzTableModule","DragDropModule","schemas","NO_ERRORS_SCHEMA","statusToColor","#FAB13B","#9FA4A2","#F5222D","#3B77E3","#12A34F","#F05B24","HdDetailTipComponent","HdStatusService","tip","setStatusColor","indexOf","state","statusColor","HdDetailTipModule","HdFilterComponent","fb","searchEvent","isShowMore","filterListModular","init","checkList","filterList","formGroupList","index","name","control","show","validateFilterForm","group","triggerEvent","fn","selectOption","computeOffset","list","nameList","tslib_1.__spread","Set","submitForm","getRawValue","resetForm","showMore","inputClean","patchObject","patchValue","FormBuilder","HdFilterModule","ReactiveFormsModule","Style","HdSpaceService","HdSpaceComponent","SpaceType","background","style","HdSpaceModule","HdFormLinesComponent","ngZone","showSearch","operateButtons","changeEvent","showDeleteConfirm","paginationPageIndex","paginationPageSize","showForm","storeFormLinesData","filterStoreFormLinesData","filterIndexStore","isFilterData","formValid","textWidthCache","formLinesData","validateHdFormLines","get","getValid","innerGetValid","tmpValidateHdFormLines","array","formLinesDataItem","formGroupObj","formLines","require","Validators","required","label","lineIndex","controls","formGroupTmp","onChangeEvent","valueChanges","subscribe","insert","valid","getLines","allLines","searchLines","filterStr","setStoreData","filterValue","trim","toLowerCase","filteredData","_b","tslib_1.__values","_c","canSearch","toString","includes","getStyle","line","formItem","width","styleObj","min-width","colorOption","color","isEdit","createForm","addFormLineWithData","addFormLine","onHdFormValueChanged","newLine","newLineItem","linesFormArray","isHdFormLineSearchAdd","formGroupSubmit","calculateLineNumber","setValue","emitEvent","deleteFormLine","removeAt","pageIndexChange","pageSizeChange","lines_1","getNowLines","addIndex","splice","deletedIndex_1","count","filterIndex_1","pop","selectOptionCheckList","onSearchEvent","innerItem","selectValue","id","document","querySelector","select","isTextOverflow","text","maxWidth","cachedWidth","undefined","span","createElement","visibility","position","whiteSpace","fontSize","display","innerText","body","appendChild","isOverflow","offsetWidth","removeChild","judgeColEmpty","str","NgZone","HdFormLinesModule","HdFormComponent","formList","dealRow","_a","split","map","year","month","day","newDateStr","Date","toLocaleDateString","replace","validator","formItemDate","validateHdForm","formListLength","totalWidth","isRowFirst","j","columnItems","space","markAsDirty","updateValueAndValidity","HdFormModule","HdCurrentTableComponent","showTableTotal","tableSearchEvent","tablePageIndexChange","tablePageSizeChange","tableTotalOptionList","search","selectedList","HdCurrentTableModule","HdLogComponent","HdLogService","modalService","showLogs","logs","create","nzTitle","nzContent","nzComponentParams","nzFooter","nzWidth","NzModalService","HdLogModule","entryComponents","providers","HdPopconfirmComponent","confirmOption","cancelOption","cancel","confirm","HdPopconfirmModule","bootstrap","HdStatusComponent","status","HdStatusModule","CommonSessionService","putSession","session_key","session","window","sessionStorage","setItem","removeItem","getSession","getItem","removeSession","ColWidth","tableImageColWidth","billNumberColWidth","nameColWidth","codeColWidth","codeNameColWidth","enumColWidth","dateColWidth","dateTimeColWidth","dateRangeWidth","operateColWidth","numberColWidth","remarkColwidth","fixColWidth","maxColWidth","fixed","btnList","isShow","canSort","canWarp","OperateBtn","showConfirm","isRepeat","HdTableTotalOption","TableCacheOption","title","checked","selectable","isLeaf","expanded","HdTableComponent","cdr","commonSessionService","tableCols","showOperateColWarpButton","sortEvent","tableCacheOption","tableColsCache","showTable","selectColListNodes","selectColListNodesCache","showListNodes","isDropdownVisible","nowListNodes","hideListNodes","cancelNowListNodes","cancelHideListNodes","showDetail","localforage","localtionTmp","beforeDrop","arg","node","origin","dragNode","pos","of","TreeGrid","dragNodeIndex","findIndex","nodeIndex","pipe","delay","localforage.createInstance","driver","localforage.INDEXEDDB","version","storeName","console","log","location","pathname","userSession","userCode","deleteHideItem","ready","then","getInitLocalforage","catch","sort","uuid","colWidths","Map","initTable","err","judgeRepeatCols","dealCols","setCols","dealScroll","dealOperateBtn","cancelDropdown","confirmDropdown","submitGrids","cols","saveTableCacheOption","reduce","notIncols","incols","a","b","element","col","has","setTimeout","moveElementNearby","arr","elementToMoveTitle","targetElementTitle","tmpArray","targetIndex","elementIndex","newIndex","removedElement","checkAction","find","title_1","temporaryNodeList","slice","temporaryNodeList_1","getHideListNodes","nodeItem","minWidth","leftFixedCols","rightFixedCols","normalCols","resultCols","onResize","tempWidth","set","operateCol","textStr_1","btn","colWidth","fixedWidth","tableTotal","y","ChangeDetectorRef","HdTableModule","NzToolTipModule","NzPopconfirmModule","NzResizableModule","NzDropDownModule","NzTreeModule","NzIconModule","HdTipComponent","showIcon","HdTipModule","HdComponentModule","FantasyNgzorroModule","HdDetailFormService","TotalOption","showTime","Select","DateRange","MultipleSelect","HdFilterService","inputNumber","ColorOption","ExplainOption","TextArea","ViewDom","Switch","Time","HdFormLinesService","ValidatorKey","HdFormService","Utils","fillSelectOption","options","returnData","selectList","fillArrayFormItem","obj","arrayToSelectOptionList","labelTip","valueTip","returnItem"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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","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}\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}\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","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'],\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'],\n // 橙色\n '#F05B24': ['picking', 'partialReceived', 'partDelete', 'tender']\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdStatusService {\n constructor() { }\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, FormControl, FormGroup } from '@angular/forms';\nimport { Filter, FilterListType } 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\n validateFilterForm: FormGroup;\n isShowMore: boolean = true;\n // 对filterList取模运算\n filterListModular: number = 0;\n\n constructor(private fb: FormBuilder) { }\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 this.searchEvent.emit(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 { Component, EventEmitter, Input, NgZone, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { round } from 'lodash';\nimport { InputBoolean } from 'ng-zorro-antd';\nimport { TotalOption } from '../hd-detail-lines/hd-detail-lines.service';\nimport { FormLine } from './hd-form-lines.service';\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 @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\n constructor(private fb: FormBuilder,\n private ngZone: NgZone) { }\n\n ngOnInit() {\n // 缓存一下总的表单数据\n this.storeFormLinesData = this.formLinesData;\n this.init();\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 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({ value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null), disabled: item.disabled }, 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 formGroupTmp.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value, formGroupTmp));\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();\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 /**\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({ value: item.value, disabled: item.disabled } || 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) => {\n if (item.onChangeEvent) {\n if (item.onChangeEvent) {\n formGroupSubmit.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value, formGroupSubmit));\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) => {\n let formGroupObj: any = {};\n this.formLines.forEach((item) => {\n // 新增行 初始数据都为null\n formGroupObj[item.name] = this.fb.control({ value: formLinesDataItem[item.name] === 0 ? 0 : (formLinesDataItem[item.name] || item.value || null), disabled: item.disabled }, 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) => {\n if (item.onChangeEvent) {\n formGroupTmp.get(item.name).valueChanges.subscribe(value => {\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) {\n this.linesFormArray.insert(index || this.linesFormArray.controls.length, this.newLineItem());\n this.calculateLineNumber();\n }\n\n deleteFormLine(index: any) {\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 }\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 public pageIndexChange(event: number): void {\n this.paginationPageIndex = event;\n }\n\n public pageSizeChange(event: number): void {\n this.paginationPageSize = event;\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): void {\n const inputDom: any = document.querySelector(id);\n inputDom.select();\n }\n\n private textWidthCache: { [key: string]: number; } = {};\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 { 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 constructor(private fb: FormBuilder) { }\n\n ngOnInit() {\n if (!this.formList || this.formList.length === 0) {\n return;\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 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 this.validateHdForm.get(item.name).valueChanges.subscribe(value => this.triggerEvent(item.onChangeEvent, value));\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) > 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 // 二阶段 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 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: logs },\n nzFooter: null,\n nzWidth: 800\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 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// 表格行\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 { ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChange, TemplateRef } 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 console.log('local', location);\n console.log('window', window);\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 } from '../model/common-type';\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}\n\n// 控件类型\nexport enum FilterListType {\n Input, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n MultipleSelect // 多选\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFilterService {\n\n constructor() { }\n\n}\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}\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, // 输入框\n Select, // 单项选择器\n Date, // 单个日期选择\n DateRange, // 日期范围选择\n TextArea, // 块级输入框\n InputNumber, // 数字输入\n MultipleSelect, // 多选\n ViewDom, // 单纯的显示控件\n Switch, // 开关\n Time // 时间选择器\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormLinesService {\n constructor() { }\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { InputNumber, SelectOption } from '../model/common-type';\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}\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}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HdFormService {\n constructor() { }\n}\n","import { FormItem } from \"./hd-form/hd-form.service\";\n\n// 工具类\nexport const Utils = {\n /**\n * 填充select控件选项\n * @param formList 入参数组 Array<any>\n * @param name 需要填充options的属性名称\n * @param options 选项列表\n */\n fillSelectOption: function (formList: Array<any>, name: string, options: Array<any>) {\n let 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: function (list: Array<FormItem>, obj: Object) {\n let 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: function (list: Array<any>, option?: { value: string, label: string, valueTip?: string, labelTip?: string }) {\n let returnData = [];\n if (!list || !list.length) {\n return returnData;\n }\n if (option) {\n if (option.labelTip && option.valueTip) {\n list.forEach((item) => {\n let 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 let 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 let returnItem: any = {};\n returnItem.label = item;\n returnItem.value = item;\n returnData.push(returnItem);\n })\n }\n return returnData;\n }\n}\n"]}