fantasy-ngzorro 1.0.49 → 1.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/fantasy-ngzorro.umd.js +70 -32
- package/bundles/fantasy-ngzorro.umd.js.map +1 -1
- package/bundles/fantasy-ngzorro.umd.min.js +2 -2
- package/bundles/fantasy-ngzorro.umd.min.js.map +1 -1
- package/esm2015/hd-form-lines/hd-form-lines.component.js +72 -34
- package/esm5/hd-form-lines/hd-form-lines.component.js +71 -33
- package/fantasy-ngzorro.metadata.json +1 -1
- package/fesm2015/fantasy-ngzorro.js +71 -33
- package/fesm2015/fantasy-ngzorro.js.map +1 -1
- package/fesm5/fantasy-ngzorro.js +70 -32
- package/fesm5/fantasy-ngzorro.js.map +1 -1
- package/hd-form-lines/hd-form-lines.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","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-button-group/hd-button-group.component.ts","ng://fantasy-ngzorro/hd-button-group/hd-button-group.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-form/hd-form.component.ts","ng://fantasy-ngzorro/hd-form/hd-form.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-status/hd-status.component.ts","ng://fantasy-ngzorro/hd-status/hd-status.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-tip/hd-tip.component.ts","ng://fantasy-ngzorro/hd-tip/hd-tip.module.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.component.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.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-component.module.ts","ng://fantasy-ngzorro/fantasy-ngzorro.module.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.service.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.service.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.service.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.service.ts","ng://fantasy-ngzorro/hd-form/hd-form.service.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.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","primary","dashed","danger","default","link","submit","reset","add","HdButtonService","Injectable","args","providedIn","HdButtonComponent","type","ButtonType","disabled","clickAction","EventEmitter","nzOnConfirm","ngOnInit","loading","observers","ngOnChanges","changes","innerClickAction","option","emit","Component","selector","template","Input","Output","tslib_1.__decorate","InputBoolean","HdButtonModule","NgModule","imports","CommonModule","FormsModule","NgZorroAntdModule","declarations","exports","HdButtonGroupComponent","ContentChild","static","HdButtonGroupModule","HdDetailFormComponent","formCols","Array","HdDetailFormModule","totalPages","totalElements","pageNumber","pageSize","hasContent","hasNext","content","HdOption","SelectOption","showLabelAndValue","hdDropdownMatchSelectWidth","hdServerSearch","hdShowItemCode","InputNumber","min","max","step","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","item","keys","round","drop","event","moveItemInArray","previousIndex","currentIndex","JSON","parse","stringify","Number","fill","insertIndex","insertValue","align","showDecimal","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","filter","patchObject","patchValue","FormBuilder","HdFilterModule","ReactiveFormsModule","HdFormComponent","changeEvent","dealRow","formList","_a","toString","split","map","year","month","day","newDateStr","Date","toLocaleDateString","replace","require","hide","Validators","required","formItemDate","validateHdForm","onChangeEvent","get","valueChanges","subscribe","onHdFormValueChanged","formListLength","totalWidth","width","isRowFirst","j","columnItems","space","controls","markAsDirty","updateValueAndValidity","HdFormModule","Style","HdSpaceService","HdSpaceComponent","SpaceType","background","style","size","HdSpaceModule","HdFormLinesComponent","ngZone","showSearch","operateButtons","showDeleteConfirm","paginationPageIndex","paginationPageSize","showForm","storeFormLinesData","filterStoreFormLinesData","filterIndexStore","formLinesData","validateHdFormLines","getValid","tmpValidateHdFormLines","array","formLinesDataItem","formGroupObj","formLines","label","lineIndex","formGroupTmp","insert","valid","getLines","allLines","searchLines","filterValue","filterStr","trim","toLowerCase","console","log","filteredData","_b","tslib_1.__values","_c","includes","setTimeout","setStoreData","getStyle","line","formItem","styleObj","min-width","colorOption","color","currentValue","previousValue","isEdit","createForm","addFormLineWithData","addFormLine","newLine","newLineItem","linesFormArray","formGroupSubmit","calculateLineNumber","setValue","emitEvent","deleteFormLine","removeAt","pageIndexChange","pageSizeChange","lines_1","selectOptionCheckList","onSearchEvent","innerItem","selectValue","id","document","querySelector","select","NgZone","HdFormLinesModule","HdStatusComponent","status","HdStatusModule","providers","bootstrap","HdCurrentTableComponent","showTableTotal","tableSearchEvent","tablePageIndexChange","tablePageSizeChange","tableTotalOptionList","search","selectedList","HdCurrentTableModule","HdTipComponent","showIcon","HdTipModule","HdPopconfirmComponent","confirmOption","cancelOption","cancel","confirm","HdPopconfirmModule","HdLogComponent","HdLogService","modalService","showLogs","logs","create","nzTitle","nzContent","nzComponentParams","nzFooter","nzWidth","NzModalService","HdLogModule","entryComponents","HdComponentModule","FantasyNgzorroModule","HdDetailFormService","TotalOption","showTime","Select","DateRange","MultipleSelect","HdFilterService","inputNumber","TextArea","ViewDom","Switch","Time","HdFormService","ColorOption","ExplainOption","HdFormLinesService","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 { 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\n@Injectable({\n providedIn: 'root'\n})\nexport class HdButtonService {\n\nconstructor() { }\n\n}\n","import { Component, Input, OnInit, Output, EventEmitter, SimpleChange } from '@angular/core';\nimport { InputBoolean } from 'ng-zorro-antd';\nimport { 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() @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, 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 { Component, OnInit, Input } 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 }\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}\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}\n\n\nexport class InputNumber {\n min?: number = 0;\n max?: number = 99999999;\n step?: number = 1;\n}\n","import { Page } from '../model/common-type';\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChange, TemplateRef } from '@angular/core';\nimport { InputBoolean } from 'ng-zorro-antd/core';\nimport { TotalOption } from './hd-detail-lines.service';\nimport { round } from 'lodash';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\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 }\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'],\n // 灰色\n '#9FA4A2': ['initial', 'uncommitted'],\n // 红色\n '#F5222D': ['delete', 'deleted', 'aborted'],\n // 蓝色\n '#3B77E3': ['audited', 'finished', 'adjusted', 'invoiced', 'audit'],\n // 绿色\n '#12A34F': ['shipped', 'received', 'checked', 'using', 'reverse', 'valid'],\n // 橙色\n '#F05B24': ['picking', 'partialReceived', 'partDelete']\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 { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { FormItem, FormListType } 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 this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.dealRow();\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 formGroupList[item.name] = this.fb.control({ value: new Date(newDateStr), disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\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 formGroupList[item.name] = this.fb.control({ value: formItemDate, disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n } else {\n throw 'form组件中DateRange控件value值格式不规范,正确示例[\\'2020-01-22\\', \\'2020-01-23\\']';\n }\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 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 { 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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdSpaceComponent } from './hd-space.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: [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\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\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 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 this.tableLoading = true;\n const filterValue = this.filterStr.trim().toLowerCase();\n // 如果没有输入搜索字符串,则显示缓存内的所有数据\n if (!filterValue) {\n this.setStoreData();\n return;\n }\n\n this.filterIndexStore = [];\n console.log('filterValue', filterValue);\n console.log('storeFormLinesData', this.storeFormLinesData);\n console.log('formLines', this.formLines);\n\n // 根据搜索字符串过滤数据\n const filteredData = this.storeFormLinesData.filter((data: any, index: number) => {\n for (const item of this.formLines) {\n const value = data[item.name] ? data[item.name].toString().toLowerCase() : '';\n console.log('value', value);\n if (value.includes(filterValue)) {\n this.filterIndexStore.push(index);\n return true;\n }\n }\n return false;\n });\n console.log('==========searchLines方法==========');\n console.log('filteredData', filteredData);\n console.log('filterStoreFormLinesData', this.filterStoreFormLinesData);\n console.log('formLinesData', this.formLinesData);\n console.log('==========searchLines方法==========');\n // 缓存一下筛选后的表单数据\n this.filterStoreFormLinesData = filteredData;\n // 处理筛选好的数据 然后重新渲染\n this.formLinesData = filteredData;\n this.init(true);\n setTimeout(() => {\n this.tableLoading = false;\n }, 0);\n }\n\n setStoreData() {\n this.formLinesData = this.storeFormLinesData;\n this.init(true);\n setTimeout(() => {\n this.tableLoading = false;\n }, 0);\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.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 // 异常捕获\n if (!this.checkList(this.formLines)) {\n return;\n }\n this.createForm();\n // 如果没有formLinesData,则认为是新增\n if (!isEdit && (!this.formLinesData || (this.formLinesData && this.formLinesData.length === 0))) {\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 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, []);\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 this.linesFormArray.insert(this.linesFormArray.controls.length, formGroupTmp);\n })\n\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.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 (data && data.lines && data.lines.length > 0) {\n const lines = data.lines;\n if (lines.length === this.storeFormLinesData.length) {\n lines.forEach((item, index) => {\n this.storeFormLinesData[index] = { ...this.storeFormLinesData[index], ...item };\n })\n } else {\n this.filterIndexStore.forEach((item, index) => {\n this.storeFormLinesData[item] = { ...this.filterStoreFormLinesData[index], ...lines[index] };\n })\n }\n }\n console.log('==========onHdFormValueChanged方法==========');\n console.log('data', data);\n console.log('filterIndexStore', this.filterIndexStore);\n console.log('storeFormLinesData', this.storeFormLinesData);\n console.log('filterStoreFormLinesData', this.filterStoreFormLinesData);\n console.log('==========onHdFormValueChanged方法==========');\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","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, 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 { 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-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 { 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, 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 { HdButtonModule } from './hd-button/hd-button.module';\nimport { HdButtonGroupModule } from './hd-button-group/hd-button-group.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 { HdFormModule } from './hd-form/hd-form.module';\nimport { HdFormLinesModule } from './hd-form-lines/hd-form-lines.module';\n\nimport { HdSpaceModule } from './hd-space/hd-space.module';\nimport { HdStatusModule } from './hd-status/hd-status.module';\nimport { HdCurrentTableModule } from './hd-current-table/hd-current-table.module';\nimport { HdTipModule } from './hd-tip/hd-tip.module';\nimport { NgModule } from '@angular/core';\nimport { HdPopconfirmModule } from './hd-popconfirm/hd-popconfirm.module';\nimport { HdLogModule } from './hd-log/hd-log.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 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}\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 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}\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 { 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}\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 { 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/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-button-group/hd-button-group.component.ts","ng://fantasy-ngzorro/hd-button-group/hd-button-group.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-form/hd-form.component.ts","ng://fantasy-ngzorro/hd-form/hd-form.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-status/hd-status.component.ts","ng://fantasy-ngzorro/hd-status/hd-status.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-tip/hd-tip.component.ts","ng://fantasy-ngzorro/hd-tip/hd-tip.module.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.component.ts","ng://fantasy-ngzorro/hd-popconfirm/hd-popconfirm.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-component.module.ts","ng://fantasy-ngzorro/fantasy-ngzorro.module.ts","ng://fantasy-ngzorro/hd-current-table/hd-current-table.service.ts","ng://fantasy-ngzorro/hd-detail-form/hd-detail-form.service.ts","ng://fantasy-ngzorro/hd-detail-lines/hd-detail-lines.service.ts","ng://fantasy-ngzorro/hd-filter/hd-filter.service.ts","ng://fantasy-ngzorro/hd-form/hd-form.service.ts","ng://fantasy-ngzorro/hd-form-lines/hd-form-lines.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","primary","dashed","danger","default","link","submit","reset","add","HdButtonService","Injectable","args","providedIn","HdButtonComponent","type","ButtonType","disabled","clickAction","EventEmitter","nzOnConfirm","ngOnInit","loading","observers","ngOnChanges","changes","innerClickAction","option","emit","Component","selector","template","Input","Output","tslib_1.__decorate","InputBoolean","HdButtonModule","NgModule","imports","CommonModule","FormsModule","NgZorroAntdModule","declarations","exports","HdButtonGroupComponent","ContentChild","static","HdButtonGroupModule","HdDetailFormComponent","formCols","Array","HdDetailFormModule","totalPages","totalElements","pageNumber","pageSize","hasContent","hasNext","content","HdOption","SelectOption","showLabelAndValue","hdDropdownMatchSelectWidth","hdServerSearch","hdShowItemCode","InputNumber","min","max","step","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","item","keys","round","drop","event","moveItemInArray","previousIndex","currentIndex","JSON","parse","stringify","Number","fill","insertIndex","insertValue","align","showDecimal","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","filter","patchObject","patchValue","FormBuilder","HdFilterModule","ReactiveFormsModule","HdFormComponent","changeEvent","dealRow","formList","_a","toString","split","map","year","month","day","newDateStr","Date","toLocaleDateString","replace","require","hide","Validators","required","formItemDate","validateHdForm","onChangeEvent","get","valueChanges","subscribe","onHdFormValueChanged","formListLength","totalWidth","width","isRowFirst","j","columnItems","space","controls","markAsDirty","updateValueAndValidity","HdFormModule","Style","HdSpaceService","HdSpaceComponent","SpaceType","background","style","size","HdSpaceModule","HdFormLinesComponent","ngZone","showSearch","operateButtons","showDeleteConfirm","paginationPageIndex","paginationPageSize","showForm","storeFormLinesData","filterStoreFormLinesData","filterIndexStore","isFilterData","formLinesData","validateHdFormLines","getValid","tmpValidateHdFormLines","array","formLinesDataItem","formGroupObj","formLines","label","lineIndex","formGroupTmp","insert","valid","getLines","allLines","searchLines","filterStr","setStoreData","filterValue","trim","toLowerCase","filteredData","_b","tslib_1.__values","_c","includes","setTimeout","getStyle","line","formItem","styleObj","min-width","colorOption","color","currentValue","previousValue","isEdit","createForm","addFormLineWithData","addFormLine","newLine","newLineItem","linesFormArray","isHdFormLineSearchAdd","formGroupSubmit","calculateLineNumber","setValue","emitEvent","deleteFormLine","removeAt","pageIndexChange","pageSizeChange","lines_1","getNowLines","addIndex","splice","deletedIndex_1","count","selectOptionCheckList","onSearchEvent","innerItem","selectValue","id","document","querySelector","select","NgZone","HdFormLinesModule","HdStatusComponent","status","HdStatusModule","providers","bootstrap","HdCurrentTableComponent","showTableTotal","tableSearchEvent","tablePageIndexChange","tablePageSizeChange","tableTotalOptionList","search","selectedList","HdCurrentTableModule","HdTipComponent","showIcon","HdTipModule","HdPopconfirmComponent","confirmOption","cancelOption","cancel","confirm","HdPopconfirmModule","HdLogComponent","HdLogService","modalService","showLogs","logs","create","nzTitle","nzContent","nzComponentParams","nzFooter","nzWidth","NzModalService","HdLogModule","entryComponents","HdComponentModule","FantasyNgzorroModule","HdDetailFormService","TotalOption","showTime","Select","DateRange","MultipleSelect","HdFilterService","inputNumber","TextArea","ViewDom","Switch","Time","HdFormService","ColorOption","ExplainOption","HdFormLinesService","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 { 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\n@Injectable({\n providedIn: 'root'\n})\nexport class HdButtonService {\n\nconstructor() { }\n\n}\n","import { Component, Input, OnInit, Output, EventEmitter, SimpleChange } from '@angular/core';\nimport { InputBoolean } from 'ng-zorro-antd';\nimport { 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() @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, 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 { Component, OnInit, Input } 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 }\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}\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}\n\n\nexport class InputNumber {\n min?: number = 0;\n max?: number = 99999999;\n step?: number = 1;\n}\n","import { Page } from '../model/common-type';\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChange, TemplateRef } from '@angular/core';\nimport { InputBoolean } from 'ng-zorro-antd/core';\nimport { TotalOption } from './hd-detail-lines.service';\nimport { round } from 'lodash';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\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 }\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'],\n // 灰色\n '#9FA4A2': ['initial', 'uncommitted'],\n // 红色\n '#F5222D': ['delete', 'deleted', 'aborted'],\n // 蓝色\n '#3B77E3': ['audited', 'finished', 'adjusted', 'invoiced', 'audit'],\n // 绿色\n '#12A34F': ['shipped', 'received', 'checked', 'using', 'reverse', 'valid'],\n // 橙色\n '#F05B24': ['picking', 'partialReceived', 'partDelete']\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 { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { FormItem, FormListType } 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 this.init();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.dealRow();\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 formGroupList[item.name] = this.fb.control({ value: new Date(newDateStr), disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\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 formGroupList[item.name] = this.fb.control({ value: formItemDate, disabled: item.disabled }, item.require && !item.hide ? [Validators.required] : []);\n } else {\n throw 'form组件中DateRange控件value值格式不规范,正确示例[\\'2020-01-22\\', \\'2020-01-23\\']';\n }\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 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 { 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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HdSpaceComponent } from './hd-space.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: [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\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\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 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 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\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 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 return false;\n });\n // 缓存一下筛选后的表单数据\n this.filterStoreFormLinesData = filteredData;\n // 处理筛选好的数据 然后重新渲染\n this.formLinesData = filteredData;\n this.init(true);\n setTimeout(() => {\n this.tableLoading = false;\n }, 0);\n }\n\n setStoreData() {\n this.formLinesData = this.storeFormLinesData;\n this.init(true);\n setTimeout(() => {\n this.tableLoading = false;\n }, 0);\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.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 return;\n }\n this.createForm();\n // 如果没有formLinesData,则认为是新增\n if (!isEdit && (!this.formLinesData || (this.formLinesData && this.formLinesData.length === 0))) {\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, []);\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 this.linesFormArray.insert(this.linesFormArray.controls.length, formGroupTmp);\n })\n\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 (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 } 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 }\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","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, 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 { 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-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 { 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, 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 { HdButtonModule } from './hd-button/hd-button.module';\nimport { HdButtonGroupModule } from './hd-button-group/hd-button-group.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 { HdFormModule } from './hd-form/hd-form.module';\nimport { HdFormLinesModule } from './hd-form-lines/hd-form-lines.module';\n\nimport { HdSpaceModule } from './hd-space/hd-space.module';\nimport { HdStatusModule } from './hd-status/hd-status.module';\nimport { HdCurrentTableModule } from './hd-current-table/hd-current-table.module';\nimport { HdTipModule } from './hd-tip/hd-tip.module';\nimport { NgModule } from '@angular/core';\nimport { HdPopconfirmModule } from './hd-popconfirm/hd-popconfirm.module';\nimport { HdLogModule } from './hd-log/hd-log.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 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}\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 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}\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 { 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}\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 { 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"]}
|