nsc-react-component 2.14.29 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,478 @@
1
+ const _excluded = ["data"];
2
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
5
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
+ import React, { PureComponent } from "react";
11
+ import Form from "../../base/form";
12
+ import { getNode } from "../../utils";
13
+ import message from "../../base/message";
14
+ import Col from "../../base/grid/Col";
15
+ import Row from "../../base/grid/Row";
16
+ import { isEmptyObj } from "@bj-nsc/functions";
17
+ import "./index.module.less";
18
+ import lodash from "lodash";
19
+ import Button from "../../base/button";
20
+ import Upload from '../../base/upload';
21
+ import cls from 'classnames';
22
+ import moment from "moment";
23
+ class FormPage extends PureComponent {
24
+ constructor() {
25
+ super(...arguments);
26
+ _defineProperty(this, "formRef", /*#__PURE__*/React.createRef());
27
+ _defineProperty(this, "state", {
28
+ loading: false,
29
+ label: "",
30
+ editorFlag: true,
31
+ value: {},
32
+ dictNames: {},
33
+ fileList: {}
34
+ });
35
+ _defineProperty(this, "valid", []);
36
+ _defineProperty(this, "dateValueFormat", {});
37
+ _defineProperty(this, "dateFormat", {});
38
+ _defineProperty(this, "fileFormat", []);
39
+ _defineProperty(this, "submitFlag", true);
40
+ }
41
+ //表单显示
42
+ show(orgValue) {
43
+ let editorflag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "add";
44
+ let label = "新增";
45
+ if (orgValue && editorflag == "editor") {
46
+ label = "编辑";
47
+ } else if (orgValue && editorflag == "detail") {
48
+ label = "查看";
49
+ }
50
+ if (orgValue) {
51
+ this.setState({
52
+ label: label,
53
+ value: orgValue
54
+ }, () => {
55
+ var _this$formRef$current;
56
+ let value = this.convertValue(orgValue, label);
57
+ //处理文件数据
58
+ (_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 || _this$formRef$current.showForm(value);
59
+ });
60
+ } else {
61
+ this.setState({
62
+ label: label
63
+ }, () => {
64
+ var _this$formRef$current2;
65
+ (_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 || _this$formRef$current2.showForm(this.props.defaultValue);
66
+ });
67
+ }
68
+ }
69
+ hide() {
70
+ var _this$formRef$current3;
71
+ let hide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
72
+ const {
73
+ onHideForm
74
+ } = this.props;
75
+ if (onHideForm) {
76
+ onHideForm && onHideForm();
77
+ return;
78
+ }
79
+ this.setState({
80
+ loading: false,
81
+ fileList: {}
82
+ });
83
+ hide && ((_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.hideForm());
84
+ }
85
+ hideForm() {
86
+ var _this$formRef$current4;
87
+ this.setState({
88
+ loading: false,
89
+ fileList: {}
90
+ });
91
+ (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 || _this$formRef$current4.hideForm();
92
+ }
93
+ setLoading(loading) {
94
+ this.setState({
95
+ loading: loading
96
+ });
97
+ }
98
+ getFormValue() {
99
+ var _this$formRef$current5;
100
+ const {
101
+ label,
102
+ value,
103
+ dictNames,
104
+ fileList
105
+ } = this.state;
106
+ const formValue = (_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 ? void 0 : _this$formRef$current5.getFieldsValue();
107
+ let data = _objectSpread(_objectSpread({}, formValue), dictNames);
108
+ if (this.fileFormat.length > 0) {
109
+ let newFileList = {};
110
+ this.fileFormat.map(item => {
111
+ newFileList[item] = this.getFileList(fileList[item] || []);
112
+ });
113
+ data = _objectSpread(_objectSpread({}, data), newFileList);
114
+ }
115
+ if (!this.submitFlag) {
116
+ message.error('请等待所有文件上传完成!');
117
+ return;
118
+ }
119
+ if (!isEmptyObj(this.dateValueFormat)) {
120
+ for (let key in this.dateValueFormat) {
121
+ let olddata = data[key];
122
+ if (olddata) {
123
+ if (Array.isArray(olddata)) {
124
+ data[key] = [moment(olddata[0]).format(this.dateValueFormat[key]), moment(olddata[1]).format(this.dateValueFormat[key])];
125
+ } else {
126
+ data[key] = moment(olddata).format(this.dateValueFormat[key]);
127
+ }
128
+ }
129
+ }
130
+ }
131
+ if (label == "编辑") {
132
+ data = _objectSpread(_objectSpread({}, data), {}, {
133
+ id: value === null || value === void 0 ? void 0 : value.id
134
+ });
135
+ }
136
+ return data;
137
+ }
138
+ convertValue(value, type) {
139
+ let values = lodash.cloneDeep(value);
140
+ if (this.fileFormat.length > 0) {
141
+ let fileList = {};
142
+ this.fileFormat.map(item => {
143
+ let olddata = value[item];
144
+ fileList[item] = this.getFileList(olddata || [], type);
145
+ });
146
+ this.setState({
147
+ fileList: fileList
148
+ });
149
+ }
150
+ //处理日期格式数据
151
+ if (!isEmptyObj(this.dateFormat)) {
152
+ for (let key in this.dateFormat) {
153
+ let olddata = value[key];
154
+ if (olddata) {
155
+ if (Array.isArray(olddata)) {
156
+ value[key] = [moment(olddata[0], this.dateFormat[key]), moment(olddata[1], this.dateFormat[key])];
157
+ } else {
158
+ value[key] = moment(olddata, this.dateFormat[key]);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ return values;
164
+ }
165
+ setFormValue(value, type) {
166
+ var _this$formRef$current6;
167
+ const newValue = this.convertValue(value, type);
168
+ (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 || _this$formRef$current6.setFieldsValue(newValue);
169
+ }
170
+ doSubmit(formdata, label) {
171
+ var _this$formRef$current7;
172
+ const {
173
+ submitUrl,
174
+ submitParams = {},
175
+ callBack
176
+ } = this.props;
177
+ if (!submitUrl) {
178
+ console.error("submitUrl不能为空!");
179
+ return;
180
+ }
181
+ const {
182
+ data = {}
183
+ } = submitParams,
184
+ otherParams = _objectWithoutProperties(submitParams, _excluded);
185
+ (_this$formRef$current7 = this.formRef.current) === null || _this$formRef$current7 === void 0 || _this$formRef$current7.onSubmit(submitUrl, _objectSpread({
186
+ data: _objectSpread(_objectSpread({}, formdata), data),
187
+ noUndefined: label == "编辑"
188
+ }, otherParams), res => {
189
+ const {
190
+ code
191
+ } = res;
192
+ this.setState({
193
+ loading: false
194
+ });
195
+ if (code === 200) {
196
+ message.success(label + "成功");
197
+ this.hide(true);
198
+ callBack && callBack();
199
+ return;
200
+ }
201
+ this.hide(false);
202
+ });
203
+ }
204
+ getFileList(data) {
205
+ let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '新增';
206
+ this.submitFlag = true;
207
+ let fileList = [];
208
+ if (data && data.length > 0) {
209
+ data.map(item => {
210
+ let obj = {
211
+ fileId: item.fileId,
212
+ fileName: item.fileName
213
+ };
214
+ if (label == '查看') {
215
+ obj.status = 'done';
216
+ }
217
+ if (label !== '查看' && item.status !== 'done') {
218
+ this.submitFlag = false;
219
+ }
220
+ fileList.push(obj);
221
+ });
222
+ }
223
+ return fileList;
224
+ }
225
+ onSubmit() {
226
+ var _this$formRef$current8, _this$formRef$current9;
227
+ const {
228
+ onSubmit
229
+ } = this.props;
230
+ const {
231
+ label,
232
+ value,
233
+ dictNames,
234
+ fileList
235
+ } = this.state;
236
+ const formValue = (_this$formRef$current8 = this.formRef.current) === null || _this$formRef$current8 === void 0 ? void 0 : _this$formRef$current8.getFieldsValue();
237
+ let valid = this.valid;
238
+ (_this$formRef$current9 = this.formRef.current) === null || _this$formRef$current9 === void 0 || _this$formRef$current9.validateFields(valid).then(() => {
239
+ let data = this.getFormValue();
240
+ if (!this.submitFlag) {
241
+ message.error('请等待所有文件上传完成!');
242
+ return;
243
+ }
244
+ this.setState({
245
+ loading: true
246
+ });
247
+ if (onSubmit) {
248
+ onSubmit && onSubmit(data, label);
249
+ return;
250
+ }
251
+ this.doSubmit(data, label);
252
+ }).catch(errorInfo => {});
253
+ }
254
+ valueChange(_ref, props, value, valueOption, data) {
255
+ let {
256
+ type,
257
+ dictName
258
+ } = _ref;
259
+ if (valueOption) {
260
+ if (dictName) {
261
+ const {
262
+ dictNames
263
+ } = this.state;
264
+ const newNames = _objectSpread({}, dictNames);
265
+ newNames[dictName] = valueOption.label;
266
+ this.setState({
267
+ dictNames: newNames
268
+ });
269
+ }
270
+ }
271
+ if (props.onChange) {
272
+ props.onChange(value, valueOption, data);
273
+ }
274
+ }
275
+ renderForm(forms, label) {
276
+ const newValid = [];
277
+ return /*#__PURE__*/React.createElement(Row, {
278
+ gutter: 24
279
+ }, forms.map((item, index) => {
280
+ var _item$props;
281
+ const itemProps = item.props || {};
282
+ if (itemProps.format || itemProps.valueFormat) {
283
+ this.dateValueFormat[item.name] = itemProps.format || itemProps.valueFormat;
284
+ }
285
+ if (itemProps.format) {
286
+ this.dateFormat[item.name] = itemProps.format;
287
+ }
288
+ let allowChars = ((_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.allowChars) || false;
289
+ let props = _objectSpread(_objectSpread({
290
+ placeholder: "\u8BF7\u8F93\u5165".concat(item.label)
291
+ }, item.props), {}, {
292
+ onChange: this.valueChange.bind(this, {
293
+ type: item.type,
294
+ dictName: item.dictName
295
+ }, _objectSpread({}, item.props))
296
+ });
297
+ if (!item.type || item.type == "Input") {
298
+ props.allowChars = true;
299
+ props.showCount = true;
300
+ }
301
+ delete props.valueFormat;
302
+ delete props.format;
303
+ if (label == "查看") {
304
+ props.disabled = true;
305
+ props.placeholder = '';
306
+ }
307
+ if (item.rules && item.rules.length > 0) {
308
+ newValid.push(item.name);
309
+ }
310
+ if (index + 1 === forms.length) {
311
+ this.valid = newValid;
312
+ }
313
+ if (item.type !== 'Upload') {
314
+ return /*#__PURE__*/React.createElement(Col, {
315
+ span: item.span || 12,
316
+ key: index
317
+ }, /*#__PURE__*/React.createElement(Form.Item, {
318
+ label: item.label,
319
+ name: item.name,
320
+ rules: item.rules,
321
+ allowChars: allowChars,
322
+ componentName: item.type ? item.type : "Input"
323
+ }, getNode(item.type, _objectSpread({}, props))));
324
+ } else {
325
+ this.fileFormat.push(item.name);
326
+ return /*#__PURE__*/React.createElement(Col, {
327
+ span: item.span || 12,
328
+ key: index
329
+ }, /*#__PURE__*/React.createElement(Form.Item, {
330
+ label: item.label,
331
+ name: item.name,
332
+ rules: item.rules,
333
+ allowChars: allowChars
334
+ }, /*#__PURE__*/React.createElement(Upload, _extends({
335
+ fileList: this.state.fileList[item.name] || [],
336
+ onListChange: list => {
337
+ const {
338
+ fileList
339
+ } = this.state;
340
+ this.setState({
341
+ fileList: _objectSpread(_objectSpread({}, fileList), {}, {
342
+ [item.name]: list
343
+ })
344
+ });
345
+ },
346
+ showUploadList: {
347
+ showDownloadIcon: true,
348
+ showRemoveIcon: label !== '查看'
349
+ }
350
+ }, props), label !== '查看' && /*#__PURE__*/React.createElement(Button, null, "\u4E0A\u4F20\u6587\u4EF6"))));
351
+ }
352
+ }));
353
+ }
354
+ render() {
355
+ const {
356
+ forms = [],
357
+ otherProps = {},
358
+ footer = true,
359
+ children
360
+ } = this.props;
361
+ const {
362
+ loading,
363
+ label
364
+ } = this.state;
365
+ let modalProps = {
366
+ title: label,
367
+ onOk: this.onSubmit.bind(this),
368
+ onCancel: this.hide.bind(this),
369
+ okButtonProps: {
370
+ loading: loading
371
+ },
372
+ centered: true,
373
+ width: "50vw"
374
+ };
375
+ let drawerProps = {
376
+ title: label,
377
+ onOk: this.onSubmit.bind(this),
378
+ onClose: this.hide.bind(this),
379
+ width: "50vw"
380
+ };
381
+ if (label == "查看") {
382
+ modalProps.footer = null;
383
+ drawerProps.footer = null;
384
+ }
385
+ this.dateValueFormat = {};
386
+ this.dateFormat = {};
387
+ this.fileFormat = [];
388
+ let newFormsObj = {};
389
+ let formGroups = [];
390
+ let otherGrups = [];
391
+ //处理表单数据
392
+ forms.map(item => {
393
+ if (item.groupName && formGroups.indexOf(item.groupName) < 0) {
394
+ formGroups.push(item.groupName);
395
+ } else if (!item.groupName) {
396
+ otherGrups.push(item);
397
+ }
398
+ });
399
+ if (formGroups.length > 0) {
400
+ formGroups.map(item => {
401
+ let groupForms = [];
402
+ forms.map(form => {
403
+ if (form.groupName == item) {
404
+ groupForms.push(form);
405
+ }
406
+ });
407
+ newFormsObj[item] = groupForms;
408
+ });
409
+ newFormsObj['noGroupName'] = otherGrups;
410
+ }
411
+ //自定义按钮
412
+ let selfButtons = [];
413
+ if (Array.isArray(children)) {
414
+ children.map(item => {
415
+ typeof item == 'object' && selfButtons.push(item);
416
+ });
417
+ } else if (children) {
418
+ typeof children == 'object' && selfButtons.push(children);
419
+ }
420
+ return /*#__PURE__*/React.createElement(Form, _extends({
421
+ ref: this.formRef,
422
+ showModel: this.props.formType,
423
+ modalProps: _objectSpread({}, modalProps),
424
+ drawerProps: _objectSpread({}, drawerProps),
425
+ labelCol: {
426
+ flex: "100px"
427
+ },
428
+ wrapperCol: {
429
+ flex: "15vw"
430
+ },
431
+ onValuesChange: (changedValues, allValues) => {
432
+ const {
433
+ onFormChange
434
+ } = this.props;
435
+ onFormChange && onFormChange(changedValues, allValues);
436
+ },
437
+ changeValid: this.props.changeValid
438
+ }, otherProps), /*#__PURE__*/React.createElement("div", {
439
+ className: "nsc-form-page"
440
+ }, formGroups.length == 0 ? this.renderForm(forms, label) : Object.keys(newFormsObj).map(key => {
441
+ return /*#__PURE__*/React.createElement("div", {
442
+ key: key,
443
+ className: "nsc-form-pane"
444
+ }, key != "noGroupName" && /*#__PURE__*/React.createElement("div", {
445
+ className: "nsc-form-title"
446
+ }, key), /*#__PURE__*/React.createElement("div", {
447
+ className: "nsc-form-content"
448
+ }, this.renderForm(newFormsObj[key], label)));
449
+ }), !this.props.formType && footer == true && /*#__PURE__*/React.createElement("div", {
450
+ className: cls('nsc-form-page-footer', this.props.footerClassName)
451
+ }, /*#__PURE__*/React.createElement(Button, _extends({}, this.props.cancelButtonProps, {
452
+ onClick: () => {
453
+ if (this.props.onCancel) {
454
+ this.props.onCancel();
455
+ return;
456
+ }
457
+ this.setState({
458
+ loading: false
459
+ });
460
+ }
461
+ }), "\u53D6\u6D88"), /*#__PURE__*/React.createElement(Button, _extends({
462
+ type: "primary"
463
+ }, this.props.okButtonProps, {
464
+ onClick: () => {
465
+ this.onSubmit();
466
+ },
467
+ loading: this.state.loading,
468
+ className: 'nsc-form-page-footer-btn'
469
+ }), "\u4FDD\u5B58"), selfButtons.map((item, index) => {
470
+ return /*#__PURE__*/React.createElement("div", {
471
+ className: 'nsc-form-page-footer-btn',
472
+ key: index
473
+ }, item);
474
+ })), !this.props.formType && footer !== true && this.props.footer));
475
+ }
476
+ }
477
+ export default FormPage;
478
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwibW9tZW50IiwiRm9ybVBhZ2UiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImxvYWRpbmciLCJsYWJlbCIsImVkaXRvckZsYWciLCJ2YWx1ZSIsImRpY3ROYW1lcyIsImZpbGVMaXN0Iiwic2hvdyIsIm9yZ1ZhbHVlIiwiZWRpdG9yZmxhZyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNldFN0YXRlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50IiwiY29udmVydFZhbHVlIiwiZm9ybVJlZiIsImN1cnJlbnQiLCJzaG93Rm9ybSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidHlwZSIsInZhbHVlcyIsImNsb25lRGVlcCIsImRhdGVGb3JtYXQiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwiY2FsbEJhY2siLCJjb25zb2xlIiwib3RoZXJQYXJhbXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJvblN1Ym1pdCIsIm5vVW5kZWZpbmVkIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJvYmoiLCJmaWxlSWQiLCJmaWxlTmFtZSIsInN0YXR1cyIsInB1c2giLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ4IiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OSIsInZhbGlkIiwidmFsaWRhdGVGaWVsZHMiLCJ0aGVuIiwiY2F0Y2giLCJlcnJvckluZm8iLCJ2YWx1ZUNoYW5nZSIsIl9yZWYiLCJ2YWx1ZU9wdGlvbiIsImRpY3ROYW1lIiwibmV3TmFtZXMiLCJvbkNoYW5nZSIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwic2hvd0NvdW50IiwiZGlzYWJsZWQiLCJydWxlcyIsInNwYW4iLCJJdGVtIiwiY29tcG9uZW50TmFtZSIsIl9leHRlbmRzIiwib25MaXN0Q2hhbmdlIiwibGlzdCIsInNob3dVcGxvYWRMaXN0Iiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dSZW1vdmVJY29uIiwicmVuZGVyIiwib3RoZXJQcm9wcyIsImZvb3RlciIsImNoaWxkcmVuIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib25PayIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2VsZkJ1dHRvbnMiLCJyZWYiLCJzaG93TW9kZWwiLCJmb3JtVHlwZSIsImxhYmVsQ29sIiwiZmxleCIsIndyYXBwZXJDb2wiLCJvblZhbHVlc0NoYW5nZSIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImtleXMiLCJmb290ZXJDbGFzc05hbWUiLCJjYW5jZWxCdXR0b25Qcm9wcyIsIm9uQ2xpY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Zvcm1QYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSAnLi4vLi4vYmFzZS91cGxvYWQnXHJcbmltcG9ydCBjbHMgZnJvbSAnY2xhc3NuYW1lcydcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSwgYWxsVmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgc3VibWl0UGFyYW1zPzogYW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55XHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZmlsZUZvcm1hdCA9IFtdIGFzIGFueTtcclxuICBzdWJtaXRGbGFnID0gdHJ1ZVxyXG4gIC8v6KGo5Y2V5pi+56S6XHJcbiAgc2hvdyhvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIGdldEZvcm1WYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbmV3RmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICB9KVxyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCAuLi5uZXdGaWxlTGlzdCB9O1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlVmFsdWVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IGRhdGFba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gW1xyXG4gICAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IG1vbWVudChvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcbiAgY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBsZXQgdmFsdWVzID0gbG9kYXNoLmNsb25lRGVlcCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZVtpdGVtXTtcclxuICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSlcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gW1xyXG4gICAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzBdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlW2tleV0gPSBtb21lbnQob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXNcclxuICB9XHJcbiAgc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGZvcm1kYXRhLCBsYWJlbCkge1xyXG4gICAgY29uc3QgeyBzdWJtaXRVcmwsIHN1Ym1pdFBhcmFtcyA9IHt9LCBjYWxsQmFjayB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghc3VibWl0VXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJzdWJtaXRVcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gc3VibWl0UGFyYW1zXHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHN1Ym1pdFVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSAn5paw5aKeJykge1xyXG4gICAgdGhpcy5zdWJtaXRGbGFnID0gdHJ1ZVxyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gJ+afpeeciycpIHtcclxuICAgICAgICAgIG9iai5zdGF0dXMgPSAnZG9uZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gJ+afpeeciycgJiYgaXRlbS5zdGF0dXMgIT09ICdkb25lJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVMaXN0LnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsZUxpc3Q7XHJcbiAgfTtcclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKHZhbGlkKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldEZvcm1WYWx1ZSgpXHJcbiAgICAgICAgaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4geyB9KTtcclxuICB9XHJcbiAgdmFsdWVDaGFuZ2UoeyB0eXBlLCBkaWN0TmFtZSB9LCBwcm9wcywgdmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKSB7XHJcbiAgICBpZiAodmFsdWVPcHRpb24pIHtcclxuICAgICAgaWYgKGRpY3ROYW1lKSB7XHJcbiAgICAgICAgY29uc3QgeyBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZXMgPSB7IC4uLmRpY3ROYW1lcyB9IGFzIGFueTtcclxuICAgICAgICBuZXdOYW1lc1tkaWN0TmFtZV0gPSB2YWx1ZU9wdGlvbi5sYWJlbDtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRpY3ROYW1lczogbmV3TmFtZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xyXG4gICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIDxSb3cgZ3V0dGVyPXsyNH0+XHJcbiAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbS5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG5cclxuICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgIGRpY3ROYW1lOiBpdGVtLmRpY3ROYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlO1xyXG4gICAgICAgICAgcHJvcHMuc2hvd0NvdW50ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgIHByb3BzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gJydcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSAhPT0gJ1VwbG9hZCcpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxDb2wgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7Z2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpXHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFVwbG9hZFxyXG4gICAgICAgICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdFtpdGVtLm5hbWVdIHx8IFtdfVxyXG4gICAgICAgICAgICAgICAgICBvbkxpc3RDaGFuZ2U9eyhsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q6IHsgLi4uZmlsZUxpc3QsIFtpdGVtLm5hbWVdOiBsaXN0IH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17eyBzaG93RG93bmxvYWRJY29uOiB0cnVlLCBzaG93UmVtb3ZlSWNvbjogbGFiZWwgIT09ICfmn6XnnIsnIH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc30+XHJcbiAgICAgICAgICAgICAgICAgIHtsYWJlbCAhPT0gJ+afpeeciycgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICA8L1VwbG9hZD5cclxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSl9XHJcbiAgICA8L1Jvdz5cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBmb3JtcyA9IFtdLCBvdGhlclByb3BzID0ge30sIGZvb3RlciA9IHRydWUsIGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgIH0gYXMgYW55O1xyXG5cclxuXHJcbiAgICBsZXQgZHJhd2VyUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICBtb2RhbFByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICAgIGRyYXdlclByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdCA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmZpbGVGb3JtYXQgPSBbXVxyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnlcclxuICAgIGxldCBvdGhlckdydXBzID0gW10gYXMgYW55XHJcbiAgICAvL+WkhOeQhuihqOWNleaVsOaNrlxyXG4gICAgZm9ybXMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0uZ3JvdXBOYW1lICYmIGZvcm1Hcm91cHMuaW5kZXhPZihpdGVtLmdyb3VwTmFtZSkgPCAwKSB7XHJcbiAgICAgICAgZm9ybUdyb3Vwcy5wdXNoKGl0ZW0uZ3JvdXBOYW1lKTtcclxuICAgICAgfSBlbHNlIGlmICghaXRlbS5ncm91cE5hbWUpIHtcclxuICAgICAgICBvdGhlckdydXBzLnB1c2goaXRlbSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmIChmb3JtR3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9ybUdyb3Vwcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBncm91cEZvcm1zID0gW10gYXMgYW55XHJcbiAgICAgICAgZm9ybXMubWFwKChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmb3JtLmdyb3VwTmFtZSA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGdyb3VwRm9ybXMucHVzaChmb3JtKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbmV3Rm9ybXNPYmpbaXRlbV0gPSBncm91cEZvcm1zXHJcbiAgICAgIH0pXHJcbiAgICAgIG5ld0Zvcm1zT2JqWydub0dyb3VwTmFtZSddID0gb3RoZXJHcnVwc1xyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIGxldCBzZWxmQnV0dG9ucyA9IFtdIGFzIGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHR5cGVvZiBpdGVtID09ICdvYmplY3QnICYmIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0eXBlb2YgY2hpbGRyZW4gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Rm9ybVxyXG4gICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgIHNob3dNb2RlbD17dGhpcy5wcm9wcy5mb3JtVHlwZX1cclxuICAgICAgICBtb2RhbFByb3BzPXt7IC4uLm1vZGFsUHJvcHMgfX1cclxuICAgICAgICBkcmF3ZXJQcm9wcz17eyAuLi5kcmF3ZXJQcm9wcyB9fVxyXG4gICAgICAgIGxhYmVsQ29sPXt7IGZsZXg6IFwiMTAwcHhcIiB9fVxyXG4gICAgICAgIHdyYXBwZXJDb2w9e3sgZmxleDogXCIxNXZ3XCIgfX1cclxuICAgICAgICBvblZhbHVlc0NoYW5nZT17KGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcykgPT4ge1xyXG4gICAgICAgICAgY29uc3QgeyBvbkZvcm1DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICBvbkZvcm1DaGFuZ2UgJiYgb25Gb3JtQ2hhbmdlKGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcyk7XHJcbiAgICAgICAgfX1cclxuICAgICAgICBjaGFuZ2VWYWxpZD17dGhpcy5wcm9wcy5jaGFuZ2VWYWxpZH1cclxuICAgICAgICB7Li4ub3RoZXJQcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyB0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKSA6IE9iamVjdC5rZXlzKG5ld0Zvcm1zT2JqKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgIHtrZXkgIT0gXCJub0dyb3VwTmFtZVwiICYmIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2Pn1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tY29udGVudFwiPnt0aGlzLnJlbmRlckZvcm0obmV3Rm9ybXNPYmpba2V5XSwgbGFiZWwpfTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9KX1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgPT0gdHJ1ZSAmJlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKCduc2MtZm9ybS1wYWdlLWZvb3RlcicsIHRoaXMucHJvcHMuZm9vdGVyQ2xhc3NOYW1lKX0+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvbiB7Li4udGhpcy5wcm9wcy5jYW5jZWxCdXR0b25Qcm9wc30gb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICB9fT7lj5bmtog8L0J1dHRvbj5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgey4uLnRoaXMucHJvcHMub2tCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5sb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ31cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICB7c2VsZkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17J25zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0bid9IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PlxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","lodash","Button","Upload","cls","moment","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","show","orgValue","editorflag","length","undefined","setState","_this$formRef$current","convertValue","formRef","current","showForm","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","data","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","id","type","values","cloneDeep","dateFormat","setFormValue","_this$formRef$current6","newValue","setFieldsValue","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","callBack","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","res","code","success","obj","fileId","fileName","status","push","_this$formRef$current8","_this$formRef$current9","valid","validateFields","then","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","allowChars","placeholder","concat","bind","showCount","disabled","rules","span","Item","componentName","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","render","otherProps","footer","children","modalProps","title","onOk","onCancel","okButtonProps","centered","width","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","selfButtons","ref","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from '../../base/upload'\r\nimport cls from 'classnames'\r\nimport moment from \"moment\";\r\ninterface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n submitFlag = true\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\") {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && editorflag == \"detail\") {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value);\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue);\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n })\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n moment(olddata[0]).format(this.dateValueFormat[key]),\r\n moment(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n } else {\r\n data[key] = moment(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = value[item];\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n })\r\n this.setState({ fileList: fileList })\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = value[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n value[key] = [\r\n moment(olddata[0], this.dateFormat[key]),\r\n moment(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n value[key] = moment(olddata, this.dateFormat[key]);\r\n }\r\n\r\n }\r\n }\r\n }\r\n return values\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const { submitUrl, submitParams = {}, callBack } = this.props;\r\n if (!submitUrl) {\r\n console.error(\"submitUrl不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = submitParams\r\n this.formRef.current?.onSubmit(\r\n submitUrl,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = '新增') {\r\n this.submitFlag = true\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == '查看') {\r\n obj.status = 'done';\r\n }\r\n if (label !== '查看' && item.status !== 'done') {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n };\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields(valid)\r\n .then(() => {\r\n let data = this.getFormValue()\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => { });\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n props.onChange(value, valueOption, data);\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n props.showCount = true;\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = ''\r\n }\r\n\r\n if (item.rules && item.rules.length > 0) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n if (item.type !== 'Upload') {\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n >\r\n {getNode(item.type, {\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name)\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list }\r\n })\r\n }}\r\n showUploadList={{ showDownloadIcon: true, showRemoveIcon: label !== '查看' }}\r\n {...props}>\r\n {label !== '查看' && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n }\r\n render() {\r\n const { forms = [], otherProps = {}, footer = true, children } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = []\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any\r\n let otherGrups = [] as any\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item)\r\n }\r\n })\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form)\r\n }\r\n })\r\n newFormsObj[item] = groupForms\r\n })\r\n newFormsObj['noGroupName'] = otherGrups\r\n }\r\n //自定义按钮\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == 'object' && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == 'object' && selfButtons.push(children);\r\n }\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...otherProps}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? this.renderForm(forms, label) : Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && <div className=\"nsc-form-title\">{key}</div>}\r\n <div className=\"nsc-form-content\">{this.renderForm(newFormsObj[key], label)}</div>\r\n </div>\r\n )\r\n })}\r\n {!this.props.formType && footer == true &&\r\n <div className={cls('nsc-form-page-footer', this.props.footerClassName)}>\r\n <Button {...this.props.cancelButtonProps} onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return\r\n }\r\n this.setState({ loading: false });\r\n }}>取消</Button>\r\n <Button type=\"primary\" {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit()\r\n }}\r\n loading={this.state.loading}\r\n className={'nsc-form-page-footer-btn'}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return <div className={'nsc-form-page-footer-btn'} key={index}>{item}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n {!this.props.formType && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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","ignoreList":[]}