dlt-for-react 1.0.3 → 1.0.5

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.
Files changed (66) hide show
  1. package/README.md +4 -1
  2. package/assets/components/KyCheckButton/index.less +23 -0
  3. package/assets/components/KyCollapse/index.less +15 -0
  4. package/assets/components/KyContainerFrame/index.less +21 -0
  5. package/assets/components/KyEditableTable/index.less +116 -0
  6. package/assets/components/KyEmpty/index.less +8 -0
  7. package/assets/components/KyIcon/index.less +6 -0
  8. package/assets/components/KyMore/index.less +9 -0
  9. package/assets/components/KyTable/checkbuttons.less +23 -0
  10. package/assets/components/KyTable/highSearchForm.less +16 -0
  11. package/assets/components/KyTable/index.less +558 -0
  12. package/assets/components/KyTitle/index.less +39 -0
  13. package/assets/images/noData.png +0 -0
  14. package/lib/components/KyBtnBox/index.js +137 -0
  15. package/lib/components/KyCheckBox/index.js +361 -0
  16. package/lib/components/KyCheckButton/index.js +256 -0
  17. package/lib/components/KyCollapse/index.js +144 -0
  18. package/lib/components/KyContainerFrame/index.js +239 -0
  19. package/lib/components/KyEditableTable/component.js +216 -0
  20. package/lib/components/KyEditableTable/index.js +1537 -0
  21. package/lib/components/KyEmpty/index.js +102 -0
  22. package/lib/components/KyExcel/ExcelForm.js +111 -0
  23. package/lib/components/KyExcel/index.js +601 -0
  24. package/lib/components/KyIcon/index.js +51 -0
  25. package/lib/components/KyModal/buildTitle.js +1 -0
  26. package/lib/components/KyModal/dragM.js +1 -0
  27. package/lib/components/KyMore/index.js +74 -0
  28. package/lib/components/KyPreview/index.js +1 -0
  29. package/lib/components/KyTable/AddFieldsModal.js +360 -0
  30. package/lib/components/KyTable/action.js +222 -0
  31. package/lib/components/KyTable/checkButtons.js +244 -0
  32. package/lib/components/KyTable/data.js +726 -0
  33. package/lib/components/KyTable/expexcel.js +269 -0
  34. package/lib/components/KyTable/highSearchForm.js +749 -0
  35. package/lib/components/KyTable/highSelect.js +313 -0
  36. package/lib/components/KyTable/index.js +2075 -0
  37. package/lib/components/KyTable/marqueenText.js +142 -0
  38. package/lib/components/KyTable/overflowColumn.js +113 -0
  39. package/lib/components/KyTable/text.js +96 -0
  40. package/lib/components/KyTable/textGroup.js +108 -0
  41. package/lib/components/KyTitle/index.js +127 -0
  42. package/lib/components/KyUpload/index.js +1 -0
  43. package/lib/index.js +240 -59
  44. package/lib/layouts/Exception/403/index.js +1 -0
  45. package/lib/layouts/Exception/403.js +1 -0
  46. package/lib/layouts/Exception/404.js +1 -0
  47. package/lib/layouts/Exception/500.js +1 -0
  48. package/lib/layouts/LeftMenu/index.js +1 -0
  49. package/lib/layouts/Login/lyPassword.js +1 -0
  50. package/lib/layouts/NavigationBar/index.js +1 -0
  51. package/lib/layouts/Top/index.js +1 -0
  52. package/lib/layouts/TopMenu/index.js +1 -0
  53. package/lib/layouts/layout/index.js +1 -0
  54. package/lib/layouts/mixTop/index.js +1 -0
  55. package/lib/layouts/settingDrawer/colorChange.js +1 -0
  56. package/lib/layouts/settingDrawer/colorPicker.js +1 -0
  57. package/lib/utils/MD5.js +256 -0
  58. package/lib/utils/NHCore.js +273 -0
  59. package/lib/utils/NHFetch.js +451 -0
  60. package/lib/utils/common.js +516 -0
  61. package/lib/utils/createUuid.js +37 -0
  62. package/lib/utils/equalsObj.js +59 -0
  63. package/lib/utils/getLoginUser.js +10 -0
  64. package/lib/utils/getSize.js +27 -0
  65. package/lib/utils/index.js +804 -0
  66. package/package.json +2 -2
@@ -0,0 +1,1537 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _table = require('antd/lib/table');
8
+
9
+ var _table2 = _interopRequireDefault(_table);
10
+
11
+ var _dropdown = require('antd/lib/dropdown');
12
+
13
+ var _dropdown2 = _interopRequireDefault(_dropdown);
14
+
15
+ var _button = require('antd/lib/button');
16
+
17
+ var _button2 = _interopRequireDefault(_button);
18
+
19
+ var _tooltip = require('antd/lib/tooltip');
20
+
21
+ var _tooltip2 = _interopRequireDefault(_tooltip);
22
+
23
+ var _icon = require('antd/lib/icon');
24
+
25
+ var _icon2 = _interopRequireDefault(_icon);
26
+
27
+ var _NHConfirm2 = require('xgui-for-react/lib/components/NHConfirm');
28
+
29
+ var _NHConfirm3 = _interopRequireDefault(_NHConfirm2);
30
+
31
+ var _menu = require('antd/lib/menu');
32
+
33
+ var _menu2 = _interopRequireDefault(_menu);
34
+
35
+ var _NHCheckBox2 = require('xgui-for-react/lib/components/NHCheckBox');
36
+
37
+ var _NHCheckBox3 = _interopRequireDefault(_NHCheckBox2);
38
+
39
+ var _set = require('babel-runtime/core-js/set');
40
+
41
+ var _set2 = _interopRequireDefault(_set);
42
+
43
+ var _modal = require('antd/lib/modal');
44
+
45
+ var _modal2 = _interopRequireDefault(_modal);
46
+
47
+ var _values = require('babel-runtime/core-js/object/values');
48
+
49
+ var _values2 = _interopRequireDefault(_values);
50
+
51
+ var _message2 = require('antd/lib/message');
52
+
53
+ var _message3 = _interopRequireDefault(_message2);
54
+
55
+ var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
56
+
57
+ var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
58
+
59
+ var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
60
+
61
+ var _defineProperty3 = _interopRequireDefault(_defineProperty2);
62
+
63
+ var _spin = require('antd/lib/spin');
64
+
65
+ var _spin2 = _interopRequireDefault(_spin);
66
+
67
+ var _popconfirm = require('antd/lib/popconfirm');
68
+
69
+ var _popconfirm2 = _interopRequireDefault(_popconfirm);
70
+
71
+ var _divider = require('antd/lib/divider');
72
+
73
+ var _divider2 = _interopRequireDefault(_divider);
74
+
75
+ var _regenerator = require('babel-runtime/regenerator');
76
+
77
+ var _regenerator2 = _interopRequireDefault(_regenerator);
78
+
79
+ var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
80
+
81
+ var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
82
+
83
+ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
84
+
85
+ var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
86
+
87
+ var _form = require('antd/lib/form');
88
+
89
+ var _form2 = _interopRequireDefault(_form);
90
+
91
+ var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
92
+
93
+ var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
94
+
95
+ var _extends2 = require('babel-runtime/helpers/extends');
96
+
97
+ var _extends3 = _interopRequireDefault(_extends2);
98
+
99
+ var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
100
+
101
+ var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
102
+
103
+ var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
104
+
105
+ var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
106
+
107
+ var _createClass2 = require('babel-runtime/helpers/createClass');
108
+
109
+ var _createClass3 = _interopRequireDefault(_createClass2);
110
+
111
+ var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
112
+
113
+ var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
114
+
115
+ var _inherits2 = require('babel-runtime/helpers/inherits');
116
+
117
+ var _inherits3 = _interopRequireDefault(_inherits2);
118
+
119
+ require('antd/lib/table/style');
120
+
121
+ require('antd/lib/dropdown/style');
122
+
123
+ require('antd/lib/button/style');
124
+
125
+ require('antd/lib/tooltip/style');
126
+
127
+ require('antd/lib/icon/style');
128
+
129
+ require('antd/lib/menu/style');
130
+
131
+ require('antd/lib/modal/style');
132
+
133
+ require('antd/lib/message/style');
134
+
135
+ require('antd/lib/spin/style');
136
+
137
+ require('antd/lib/popconfirm/style');
138
+
139
+ require('antd/lib/divider/style');
140
+
141
+ require('antd/lib/form/style');
142
+
143
+ require('../../../assets/components/KyEditableTable/index.less');
144
+
145
+ var _react = require('react');
146
+
147
+ var _react2 = _interopRequireDefault(_react);
148
+
149
+ var _utils = require('../../utils');
150
+
151
+ var _common = require('../../utils/common');
152
+
153
+ var _component = require('./component');
154
+
155
+ var _propTypes = require('prop-types');
156
+
157
+ var _propTypes2 = _interopRequireDefault(_propTypes);
158
+
159
+ var _moment = require('moment');
160
+
161
+ var _moment2 = _interopRequireDefault(_moment);
162
+
163
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
164
+
165
+ var EditableContext = _react2.default.createContext();
166
+
167
+ /**
168
+ * columns:
169
+ {
170
+ title: string,
171
+ dataIndex: string,
172
+ required: boolean,
173
+ render: (value,record) => Element,
174
+ edit: (record,disabled) => Element,
175
+ editType?: 'text' | 'select' | 'switch' | '',
176
+ config:{列配置:样式,pattern正则(只校验验展示)}
177
+ validator: [函数、正则表达式、正则字符串]==>表单校验
178
+ }
179
+
180
+ tableProps:
181
+ columns 表头配置 []
182
+ dataSource 数据 []
183
+ init 是否需要初始化 false
184
+ initCallback 初始化后的回调
185
+ loading 加载中 false
186
+ onRowSave 操作行的回调
187
+ pagination 分页配置
188
+ refreshRow 是否初始化行
189
+ refreshRowCallback 初始化行的回调
190
+ rowKey 数据唯一id
191
+ title 表格标题
192
+ *
193
+ *
194
+ */
195
+
196
+ /**
197
+ * 单元格
198
+ */
199
+ /*
200
+ * @Description:KyEditableTable-可编辑table
201
+ */
202
+
203
+ var EditableCell = function (_Component) {
204
+ (0, _inherits3.default)(EditableCell, _Component);
205
+
206
+ function EditableCell() {
207
+ var _ref;
208
+
209
+ var _temp, _this, _ret;
210
+
211
+ (0, _classCallCheck3.default)(this, EditableCell);
212
+
213
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
214
+ args[_key] = arguments[_key];
215
+ }
216
+
217
+ return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = EditableCell.__proto__ || (0, _getPrototypeOf2.default)(EditableCell)).call.apply(_ref, [this].concat(args))), _this), _this.judgeDisabled = function (params) {
218
+ var _this$props = _this.props,
219
+ dataIndex = _this$props.dataIndex,
220
+ record = _this$props.record;
221
+ var func = params.func,
222
+ specialFunc = params.specialFunc;
223
+
224
+ var flag = false;
225
+ var specialFlag = false;
226
+ if (func) {
227
+ flag = func(dataIndex, record);
228
+ }
229
+ if (specialFunc) {
230
+ specialFlag = specialFunc(dataIndex, record);
231
+ }
232
+ return flag || specialFlag;
233
+ }, _this.getComponent = function (form) {
234
+ var _this$props2 = _this.props,
235
+ dataIndex = _this$props2.dataIndex,
236
+ editing = _this$props2.editing,
237
+ editType = _this$props2.editType,
238
+ edit = _this$props2.edit,
239
+ record = _this$props2.record,
240
+ defaultRender = _this$props2.defaultRender,
241
+ config = _this$props2.config,
242
+ func = _this$props2.func,
243
+ params = _this$props2.params,
244
+ selectOptions = _this$props2.selectOptions;
245
+
246
+ var disabled = !editing;
247
+ if (params) {
248
+ // 自定义列限制
249
+ disabled = _this.judgeDisabled(params) || disabled;
250
+ }
251
+ // 内置组件
252
+ if (editing) {
253
+ // 编辑
254
+ if (edit) return edit(record, disabled);
255
+ if (editType) {
256
+ return (0, _component.SwitchComponents)(editType, dataIndex, form, record, func, (0, _extends3.default)({ disabled: disabled }, config), selectOptions);
257
+ }
258
+ } else {
259
+ // 显示
260
+ if (defaultRender) return false;
261
+ if (editType) return (0, _component.SwitchComponents)(editType, dataIndex, form, record, func, (0, _extends3.default)({ disabled: disabled }, config), selectOptions);
262
+ if (edit) return edit(record, disabled);
263
+ return _this.props.children;
264
+ }
265
+ }, _this.renderCell = function (form) {
266
+ _this.form = form;
267
+ var getFieldDecorator = form.getFieldDecorator;
268
+ var _this$props3 = _this.props,
269
+ editing = _this$props3.editing,
270
+ dataIndex = _this$props3.dataIndex,
271
+ title = _this$props3.title,
272
+ _this$props3$record = _this$props3.record,
273
+ record = _this$props3$record === undefined ? {} : _this$props3$record,
274
+ children = _this$props3.children,
275
+ required = _this$props3.required,
276
+ editType = _this$props3.editType,
277
+ edit = _this$props3.edit,
278
+ defaultRender = _this$props3.defaultRender,
279
+ parent = _this$props3.parent,
280
+ config = _this$props3.config,
281
+ restProps = (0, _objectWithoutProperties3.default)(_this$props3, ['editing', 'dataIndex', 'title', 'record', 'children', 'required', 'editType', 'edit', 'defaultRender', 'parent', 'config']);
282
+ // 编辑状态:有edit显示edit的内容。否则显示editType的内容,否则显示文字
283
+
284
+ if (!edit && !editType) {
285
+ return _react2.default.createElement(
286
+ 'td',
287
+ restProps,
288
+ children
289
+ );
290
+ }
291
+ // 显示状态:有render显示render,否则显示edit/editType的disabled,否则显示文字
292
+
293
+ if (!editing && defaultRender && editType) {
294
+ return _react2.default.createElement(
295
+ 'td',
296
+ restProps,
297
+ children
298
+ );
299
+ }
300
+
301
+ if (dataIndex && parent) {
302
+ var dom = _this.getComponent(form);
303
+ if (!dom) {
304
+ return _react2.default.createElement(
305
+ 'td',
306
+ restProps,
307
+ defaultRender(record[dataIndex], record, !editing)
308
+ );
309
+ }
310
+ var initialValue = editType === 'date' ? record[dataIndex] ? (0, _moment2.default)(record[dataIndex]) : null : record[dataIndex];
311
+ var rules = [{
312
+ required: required,
313
+ message: '\u8BF7\u8F93\u5165' + title + '!'
314
+ }];
315
+ if (config.pattern) rules.push(config.pattern);
316
+ var params = {
317
+ rules: rules,
318
+ initialValue: initialValue,
319
+ valuePropName: editType === 'switch' ? 'checked' : 'value'
320
+ };
321
+ return _react2.default.createElement(
322
+ 'td',
323
+ restProps,
324
+ (children || edit || editType) && _react2.default.createElement(
325
+ _form2.default.Item,
326
+ { style: { margin: 0 } },
327
+ getFieldDecorator(record[parent] + '.' + dataIndex, params)(dom)
328
+ )
329
+ );
330
+ }
331
+
332
+ return children;
333
+ }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
334
+ }
335
+
336
+ (0, _createClass3.default)(EditableCell, [{
337
+ key: 'render',
338
+ value: function render() {
339
+ return _react2.default.createElement(
340
+ EditableContext.Consumer,
341
+ null,
342
+ this.renderCell
343
+ );
344
+ }
345
+ }]);
346
+ return EditableCell;
347
+ }(_react.Component);
348
+
349
+ /**
350
+ * 行
351
+ */
352
+
353
+
354
+ var EditableRow = function EditableRow(_ref2) {
355
+ var form = _ref2.form,
356
+ refresh = _ref2.refresh,
357
+ callback = _ref2.callback,
358
+ props = (0, _objectWithoutProperties3.default)(_ref2, ['form', 'refresh', 'callback']);
359
+
360
+ (0, _react.useEffect)(function () {
361
+ if (refresh) {
362
+ form.resetFields();
363
+ if (callback) callback();
364
+ }
365
+ }, [refresh]);
366
+ return _react2.default.createElement(
367
+ EditableContext.Provider,
368
+ { value: form },
369
+ _react2.default.createElement('tr', props)
370
+ );
371
+ };
372
+ var EditableFormRow = _form2.default.create()(EditableRow);
373
+
374
+ /**
375
+ * 操作列
376
+ */
377
+ var OperationColumn = function OperationColumn(props) {
378
+ var onOK = props.onOK,
379
+ onCancel = props.onCancel,
380
+ onDel = props.onDel,
381
+ onEdit = props.onEdit,
382
+ record = props.record,
383
+ disabledDelete = props.disabledDelete,
384
+ hideSaveBtn = props.hideSaveBtn,
385
+ hideDeleteBtn = props.hideDeleteBtn,
386
+ hideEditBtn = props.hideEditBtn,
387
+ hideResetBtn = props.hideResetBtn,
388
+ editable = props.editable,
389
+ disableSingleLineSaving = props.disableSingleLineSaving;
390
+
391
+ var _useState = (0, _react.useState)(false),
392
+ _useState2 = (0, _slicedToArray3.default)(_useState, 2),
393
+ loading = _useState2[0],
394
+ setLoading = _useState2[1];
395
+ // 关闭loading
396
+
397
+
398
+ var onLoad = function onLoad() {
399
+ setLoading(false);
400
+ };
401
+ // 提交
402
+ var onSubmit = function () {
403
+ var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
404
+ return _regenerator2.default.wrap(function _callee$(_context) {
405
+ while (1) {
406
+ switch (_context.prev = _context.next) {
407
+ case 0:
408
+ setLoading(true);
409
+
410
+ if (!onOK) {
411
+ _context.next = 4;
412
+ break;
413
+ }
414
+
415
+ _context.next = 4;
416
+ return onOK(function () {
417
+ return onLoad();
418
+ });
419
+
420
+ case 4:
421
+ onLoad();
422
+
423
+ case 5:
424
+ case 'end':
425
+ return _context.stop();
426
+ }
427
+ }
428
+ }, _callee, undefined);
429
+ }));
430
+
431
+ return function onSubmit() {
432
+ return _ref3.apply(this, arguments);
433
+ };
434
+ }();
435
+ // 删除
436
+ var onDelete = function onDelete() {
437
+ setLoading(true);
438
+ if (onDel) onDel(function () {
439
+ return onLoad();
440
+ });
441
+ onLoad();
442
+ };
443
+ return _react2.default.createElement(
444
+ _spin2.default,
445
+ { spinning: loading },
446
+ !disableSingleLineSaving && !record.nonEditableOperationFlag && !editable && !hideEditBtn && _react2.default.createElement(
447
+ _react2.default.Fragment,
448
+ null,
449
+ _react2.default.createElement(
450
+ 'a',
451
+ { onClick: onEdit },
452
+ '\u7F16\u8F91'
453
+ ),
454
+ _react2.default.createElement(_divider2.default, { type: 'vertical' })
455
+ ),
456
+ !disableSingleLineSaving && editable && !hideSaveBtn && _react2.default.createElement(
457
+ _react2.default.Fragment,
458
+ null,
459
+ _react2.default.createElement(
460
+ 'a',
461
+ { onClick: onSubmit, type: 'link' },
462
+ '\u4FDD\u5B58'
463
+ ),
464
+ _react2.default.createElement(_divider2.default, { type: 'vertical' })
465
+ ),
466
+ !disableSingleLineSaving && editable && !hideResetBtn && _react2.default.createElement(
467
+ _react2.default.Fragment,
468
+ null,
469
+ _react2.default.createElement(
470
+ _popconfirm2.default,
471
+ { cancelText: '\u5426', okText: '\u662F', onConfirm: onCancel, title: '\u662F\u5426\u53D6\u6D88\u7F16\u8F91?' },
472
+ _react2.default.createElement(
473
+ 'a',
474
+ null,
475
+ '\u53D6\u6D88'
476
+ )
477
+ ),
478
+ _react2.default.createElement(_divider2.default, { type: 'vertical' })
479
+ ),
480
+ !disabledDelete && !hideDeleteBtn && _react2.default.createElement(
481
+ _react2.default.Fragment,
482
+ null,
483
+ _react2.default.createElement(
484
+ _popconfirm2.default,
485
+ { cancelText: '\u5426', okText: '\u662F', onConfirm: onDelete, title: '\u662F\u5426\u5220\u9664\u5F53\u524D\u884C\u6570\u636E?' },
486
+ _react2.default.createElement(
487
+ 'a',
488
+ null,
489
+ '\u5220\u9664'
490
+ )
491
+ )
492
+ )
493
+ );
494
+ };
495
+
496
+ /**
497
+ * 表
498
+ */
499
+
500
+ var KyEditableTable = function (_Component2) {
501
+ (0, _inherits3.default)(KyEditableTable, _Component2);
502
+
503
+ function KyEditableTable(props) {
504
+ var _this3 = this;
505
+
506
+ (0, _classCallCheck3.default)(this, KyEditableTable);
507
+
508
+ var _this2 = (0, _possibleConstructorReturn3.default)(this, (KyEditableTable.__proto__ || (0, _getPrototypeOf2.default)(KyEditableTable)).call(this, props));
509
+
510
+ _this2.initData = function (dataSource, tableModel, rowColumn) {
511
+ if (dataSource && dataSource.length > 0) {
512
+ (0, _common.setRowId)(dataSource, rowColumn ? rowColumn.dataIndex : 'rowId'); //设置序号列
513
+ var showBtnFlag = 'edit';
514
+ var editingKeys = [];
515
+ // 是否全部数据可编辑
516
+ if (tableModel === 'edit') {
517
+ showBtnFlag = 'save';
518
+ editingKeys = _this2.deepTreeEditing(dataSource, []);
519
+ }
520
+ _this2.setState({ editingKeys: editingKeys, data: dataSource, showBtnFlag: showBtnFlag });
521
+ }
522
+ };
523
+
524
+ _this2.deepTreeEditing = function (tree, arr) {
525
+ var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'readOnly';
526
+ var id = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'id';
527
+ var children = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'children';
528
+
529
+ tree && tree.length > 0 && tree.map(function (x) {
530
+ if (!x[key]) {
531
+ arr.push(x[id]);
532
+ }
533
+ if (x && x[children]) {
534
+ (0, _common.deepTree)(x[children], arr, key, children);
535
+ }
536
+ return x;
537
+ });
538
+ return arr;
539
+ };
540
+
541
+ _this2.update = function (key, value) {
542
+ _this2.setState((0, _defineProperty3.default)({}, key, value));
543
+ };
544
+
545
+ _this2.isEditing = function (record) {
546
+ var editingKeys = _this2.state.editingKeys;
547
+
548
+ return _this2.props.hideEditBtn || editingKeys.includes(record[_this2.props.rowKey || 'key']);
549
+ };
550
+
551
+ _this2.isDisabledDelete = function (record) {
552
+ var disabledDeleteKeys = _this2.props.disabledDeleteKeys;
553
+
554
+ if (disabledDeleteKeys.length == 0) {
555
+ return false;
556
+ }
557
+ return disabledDeleteKeys.includes(record[_this2.props.rowKey || 'key']);
558
+ };
559
+
560
+ _this2.add = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
561
+ var data, columns, rowKey, dataSourceName, dataIndexList, obj, key, temp;
562
+ return _regenerator2.default.wrap(function _callee2$(_context2) {
563
+ while (1) {
564
+ switch (_context2.prev = _context2.next) {
565
+ case 0:
566
+ if (!_this2.props.handleAdd) {
567
+ _context2.next = 3;
568
+ break;
569
+ }
570
+
571
+ _this2.props.handleAdd();
572
+ return _context2.abrupt('return');
573
+
574
+ case 3:
575
+ data = _this2.state.data;
576
+ columns = _this2.props.columns;
577
+ rowKey = _this2.props.rowKey;
578
+ dataSourceName = _this2.props.dataSourceName;
579
+ dataIndexList = columns && columns.length > 0 ? columns.map(function (item) {
580
+ return item.dataIndex;
581
+ }) : [];
582
+
583
+ if (!(dataIndexList && dataIndexList.length > 0)) {
584
+ _context2.next = 19;
585
+ break;
586
+ }
587
+
588
+ obj = { readOnly: false }; //新增-默认可编辑
589
+
590
+ dataIndexList.map(function (item) {
591
+ return obj[item] = undefined;
592
+ });
593
+ key = (0, _utils.createUuid)();
594
+
595
+ obj[rowKey] = key;
596
+ temp = [].concat((0, _toConsumableArray3.default)(data), [obj]);
597
+
598
+ _this2.setState({
599
+ data: temp
600
+ });
601
+ _this2.addEditingKey(key);
602
+
603
+ if (!_this2.props.setPropsState) {
604
+ _context2.next = 19;
605
+ break;
606
+ }
607
+
608
+ _context2.next = 19;
609
+ return _this2.props.setPropsState(dataSourceName ? dataSourceName : 'dataSource', temp);
610
+
611
+ case 19:
612
+ case 'end':
613
+ return _context2.stop();
614
+ }
615
+ }
616
+ }, _callee2, _this3);
617
+ }));
618
+
619
+ _this2.save = function (form, record) {
620
+ var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
621
+
622
+ var key = record[_this2.props.rowKey || 'key'];
623
+ form.validateFields(function () {
624
+ var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(error, row) {
625
+ var _Object$values, _Object$values2, rowData, newData, index, item, dataSourceName;
626
+
627
+ return _regenerator2.default.wrap(function _callee3$(_context3) {
628
+ while (1) {
629
+ switch (_context3.prev = _context3.next) {
630
+ case 0:
631
+ if (!error) {
632
+ _context3.next = 5;
633
+ break;
634
+ }
635
+
636
+ _message3.default.warning('请完善表单信息!');
637
+ delete record.loading;
638
+ if (callback) callback();
639
+ return _context3.abrupt('return');
640
+
641
+ case 5:
642
+ _Object$values = (0, _values2.default)(row), _Object$values2 = (0, _slicedToArray3.default)(_Object$values, 1), rowData = _Object$values2[0];
643
+ newData = [].concat((0, _toConsumableArray3.default)(_this2.state.data));
644
+ index = newData.findIndex(function (item) {
645
+ return key === item[_this2.props.rowKey || 'key'];
646
+ });
647
+
648
+ if (!~index) {
649
+ _context3.next = 20;
650
+ break;
651
+ }
652
+
653
+ item = newData[index];
654
+
655
+ rowData.readOnly = true;
656
+ newData[index] = (0, _extends3.default)({}, item, rowData);
657
+
658
+ if (!_this2.props.onRowSave) {
659
+ _context3.next = 15;
660
+ break;
661
+ }
662
+
663
+ _context3.next = 15;
664
+ return _this2.props.onRowSave((0, _extends3.default)({}, record, newData[index]), index);
665
+
666
+ case 15:
667
+ if (_this2.props.setPropsState) {
668
+ dataSourceName = _this2.props.dataSourceName;
669
+
670
+ _this2.props.setPropsState(dataSourceName || 'dataSource', newData);
671
+ }
672
+ _this2.setState({ data: newData });
673
+ _this2.removeEditingKey(key);
674
+ delete record.loading;
675
+ if (callback) callback();
676
+
677
+ case 20:
678
+ case 'end':
679
+ return _context3.stop();
680
+ }
681
+ }
682
+ }, _callee3, _this3);
683
+ }));
684
+
685
+ return function (_x5, _x6) {
686
+ return _ref5.apply(this, arguments);
687
+ };
688
+ }());
689
+ };
690
+
691
+ _this2.handleSave = function () {
692
+ var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(rowData) {
693
+ var key, newData, index, item, dataSourceName;
694
+ return _regenerator2.default.wrap(function _callee4$(_context4) {
695
+ while (1) {
696
+ switch (_context4.prev = _context4.next) {
697
+ case 0:
698
+ key = rowData[_this2.props.rowKey || 'key'];
699
+ newData = [].concat((0, _toConsumableArray3.default)(_this2.state.data));
700
+ index = newData.findIndex(function (item) {
701
+ return key === item[_this2.props.rowKey || 'key'];
702
+ });
703
+
704
+ if (!~index) {
705
+ _context4.next = 11;
706
+ break;
707
+ }
708
+
709
+ item = newData[index];
710
+
711
+ newData[index] = (0, _extends3.default)({}, item, rowData);
712
+
713
+ if (!_this2.props.onRowSave) {
714
+ _context4.next = 9;
715
+ break;
716
+ }
717
+
718
+ _context4.next = 9;
719
+ return _this2.props.onRowSave(newData[index], index);
720
+
721
+ case 9:
722
+ if (_this2.props.setPropsState) {
723
+ dataSourceName = _this2.props.dataSourceName;
724
+
725
+ _this2.props.setPropsState(dataSourceName || 'dataSource', newData);
726
+ }
727
+ _this2.setState({ data: newData });
728
+
729
+ case 11:
730
+ case 'end':
731
+ return _context4.stop();
732
+ }
733
+ }
734
+ }, _callee4, _this3);
735
+ }));
736
+
737
+ return function (_x7) {
738
+ return _ref6.apply(this, arguments);
739
+ };
740
+ }();
741
+
742
+ _this2.del = function () {
743
+ var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(form, record, callback) {
744
+ var key, newData, index;
745
+ return _regenerator2.default.wrap(function _callee5$(_context5) {
746
+ while (1) {
747
+ switch (_context5.prev = _context5.next) {
748
+ case 0:
749
+ key = record[_this2.props.rowKey || 'key'];
750
+
751
+ if (!key) {
752
+ _context5.next = 12;
753
+ break;
754
+ }
755
+
756
+ newData = [].concat((0, _toConsumableArray3.default)(_this2.state.data));
757
+ index = newData.findIndex(function (item) {
758
+ return key === item[_this2.props.rowKey || 'key'];
759
+ });
760
+
761
+ if (~index) {
762
+ newData.splice(index, 1);
763
+ }
764
+
765
+ if (!_this2.props.onBathDel) {
766
+ _context5.next = 8;
767
+ break;
768
+ }
769
+
770
+ _context5.next = 8;
771
+ return _this2.props.onBathDel([key]);
772
+
773
+ case 8:
774
+ _this2.setState({ data: newData });
775
+ _this2.removeEditingKey(key);
776
+ delete record.loading;
777
+ if (callback) callback();
778
+
779
+ case 12:
780
+ case 'end':
781
+ return _context5.stop();
782
+ }
783
+ }
784
+ }, _callee5, _this3);
785
+ }));
786
+
787
+ return function (_x8, _x9, _x10) {
788
+ return _ref7.apply(this, arguments);
789
+ };
790
+ }();
791
+
792
+ _this2.edit = function () {
793
+ var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(key) {
794
+ var newData, index, item;
795
+ return _regenerator2.default.wrap(function _callee6$(_context6) {
796
+ while (1) {
797
+ switch (_context6.prev = _context6.next) {
798
+ case 0:
799
+ newData = [].concat((0, _toConsumableArray3.default)(_this2.state.data));
800
+ index = newData.findIndex(function (item) {
801
+ return key === item[_this2.props.rowKey || 'key'];
802
+ });
803
+
804
+ if (~index) {
805
+ item = newData[index];
806
+
807
+ if (_this2.props.onRowSave) {
808
+ _this2.props.onRowSave((0, _extends3.default)({}, item, { readOnly: false }), index);
809
+ }
810
+ _this2.addEditingKey(key);
811
+ }
812
+
813
+ case 3:
814
+ case 'end':
815
+ return _context6.stop();
816
+ }
817
+ }
818
+ }, _callee6, _this3);
819
+ }));
820
+
821
+ return function (_x11) {
822
+ return _ref8.apply(this, arguments);
823
+ };
824
+ }();
825
+
826
+ _this2.cancel = function (form, key) {
827
+ form.validateFields(function () {
828
+ var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(error, row) {
829
+ var newData, index, item;
830
+ return _regenerator2.default.wrap(function _callee7$(_context7) {
831
+ while (1) {
832
+ switch (_context7.prev = _context7.next) {
833
+ case 0:
834
+ if (!error) {
835
+ _context7.next = 3;
836
+ break;
837
+ }
838
+
839
+ _message3.default.info('请填写表单信息!');
840
+ return _context7.abrupt('return');
841
+
842
+ case 3:
843
+ form.resetFields(key);
844
+ newData = [].concat((0, _toConsumableArray3.default)(_this2.state.data));
845
+ index = newData.findIndex(function (item) {
846
+ return key === item[_this2.props.rowKey || 'key'];
847
+ });
848
+
849
+ if (!~index) {
850
+ _context7.next = 12;
851
+ break;
852
+ }
853
+
854
+ item = newData[index];
855
+
856
+ if (!_this2.props.onRowSave) {
857
+ _context7.next = 11;
858
+ break;
859
+ }
860
+
861
+ _context7.next = 11;
862
+ return _this2.props.onRowSave((0, _extends3.default)({}, item, { readOnly: true }), index);
863
+
864
+ case 11:
865
+ _this2.removeEditingKey(key);
866
+
867
+ case 12:
868
+ case 'end':
869
+ return _context7.stop();
870
+ }
871
+ }
872
+ }, _callee7, _this3);
873
+ }));
874
+
875
+ return function (_x12, _x13) {
876
+ return _ref9.apply(this, arguments);
877
+ };
878
+ }());
879
+ };
880
+
881
+ _this2.addEditingKey = function (key) {
882
+ var editingKeys = [].concat((0, _toConsumableArray3.default)(_this2.state.editingKeys));
883
+ if (!editingKeys.includes(key)) {
884
+ _this2.setState({ editingKeys: [].concat((0, _toConsumableArray3.default)(editingKeys), [key]) });
885
+ }
886
+ };
887
+
888
+ _this2.removeEditingKey = function (key) {
889
+ var editingKeys = [].concat((0, _toConsumableArray3.default)(_this2.state.editingKeys));
890
+ var index = editingKeys.indexOf(key);
891
+ if (~index) {
892
+ editingKeys.splice(index, 1);
893
+ _this2.setState({ editingKeys: editingKeys });
894
+ }
895
+ };
896
+
897
+ _this2.verifyDataSource = function (dataSource, callback) {
898
+ if (callback) {
899
+ callback(_this2.verifyData(dataSource));
900
+ } else {
901
+ return _this2.verifyData(dataSource);
902
+ }
903
+ };
904
+
905
+ _this2.verifyData = function (dataSource) {
906
+ var newColumns = [].concat((0, _toConsumableArray3.default)(_this2.columns));
907
+ var fieldList = newColumns.map(function (column) {
908
+ var title = column.title;
909
+ var dataIndex = column.dataIndex;
910
+ var required = column.required;
911
+ var validator = column.validator;
912
+ return {
913
+ title: title,
914
+ dataIndex: dataIndex,
915
+ required: required,
916
+ validator: validator
917
+ };
918
+ });
919
+ // 校验数据、是否必填校验、方法校验、校验字段名称
920
+
921
+ var _this2$validateFields = _this2.validateFields(dataSource, fieldList),
922
+ requiredErrorMsg = _this2$validateFields.requiredErrorMsg,
923
+ validatorErrorMsg = _this2$validateFields.validatorErrorMsg,
924
+ customErrorMsg = _this2$validateFields.customErrorMsg;
925
+
926
+ var requiredFlag = requiredErrorMsg.length > 0;
927
+ var validatorFlag = validatorErrorMsg.length > 0;
928
+ var customFlag = customErrorMsg.length > 0;
929
+ var status = requiredFlag || validatorFlag || customFlag;
930
+ var requiredMsg = requiredFlag ? _this2.join(requiredErrorMsg) + '不能为空!' : '';
931
+ var validatorMsg = validatorFlag ? _this2.join(validatorErrorMsg) + '格式不符合!' : '';
932
+ var customMsg = customFlag ? _this2.join(customErrorMsg) : '';
933
+ if (status) {
934
+ _modal2.default.warning({
935
+ content: _react2.default.createElement(
936
+ 'div',
937
+ null,
938
+ requiredMsg && _react2.default.createElement(
939
+ 'p',
940
+ null,
941
+ requiredMsg
942
+ ),
943
+ validatorMsg && _react2.default.createElement(
944
+ 'p',
945
+ null,
946
+ validatorMsg
947
+ ),
948
+ customMsg && _react2.default.createElement(
949
+ 'p',
950
+ null,
951
+ customMsg
952
+ )
953
+ )
954
+ });
955
+ }
956
+ return !status;
957
+ };
958
+
959
+ _this2.validateFields = function (treeList, fieldList) {
960
+ var requiredErrorMsg = [];
961
+ var validatorErrorMsg = [];
962
+ var customErrorMsg = [];
963
+ var loops = function loops(array, field) {
964
+ //validatorParent:父级节点是否需要校验标识
965
+ var title = field.title,
966
+ dataIndex = field.dataIndex,
967
+ required = field.required,
968
+ validator = field.validator,
969
+ validatorParent = field.validatorParent;
970
+
971
+ array.some(function (item) {
972
+ if ((0, _common.isEmpty)(item[dataIndex]) && required && (!(item.children && item.children.length > 0) || item.children && item.children.length > 0 && validatorParent)) {
973
+ /**
974
+ * 必填项---且数据为空
975
+ * 最后节点 或者 在父级节点中---且父级要求校验
976
+ */
977
+ requiredErrorMsg.push(title);
978
+ return true;
979
+ } else if (validator && (!(item.children && item.children.length > 0) || item.children && item.children.length > 0 && validatorParent)) {
980
+ /**
981
+ * 存在校验方法
982
+ * 最后节点 或者 在父级节点中---且父级要求校验
983
+ */
984
+ switch (validator.constructor) {
985
+ case Function:
986
+ //函数
987
+ if (typeof validator(item[dataIndex]) === 'boolean') {
988
+ !validator(item[dataIndex]) && validatorErrorMsg.push(title);
989
+ } else {
990
+ validator(item[dataIndex]) && customErrorMsg.push(validator(item[dataIndex]));
991
+ }
992
+ break;
993
+ case RegExp:
994
+ //正则表达式
995
+ !validator.test(item[dataIndex]) && validatorErrorMsg.push(title);
996
+ break;
997
+ case String:
998
+ //正则字符串
999
+ !new RegExp(validator).test(item[dataIndex]) && validatorErrorMsg.push(title);
1000
+ break;
1001
+ default:
1002
+ break;
1003
+ }
1004
+ if (validatorErrorMsg.length > 0) return true;
1005
+ } else if (item.children && item.childrens.length > 0) {
1006
+ loops(item.children, field);
1007
+ }
1008
+ });
1009
+ };
1010
+ fieldList.forEach(function (field) {
1011
+ loops(treeList, field);
1012
+ });
1013
+ return {
1014
+ requiredErrorMsg: requiredErrorMsg,
1015
+ validatorErrorMsg: validatorErrorMsg,
1016
+ customErrorMsg: customErrorMsg
1017
+ };
1018
+ };
1019
+
1020
+ _this2.join = function (arr) {
1021
+ var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '、';
1022
+
1023
+ return [].concat((0, _toConsumableArray3.default)(new _set2.default(arr))).join(separator);
1024
+ };
1025
+
1026
+ _this2.getMenuData = function (data) {
1027
+ var plainOptions = data && data.length > 0 && data.filter(function (r) {
1028
+ return r.checked === undefined || r.checked !== 'unchecked';
1029
+ }).map(function (item, index) {
1030
+ return { label: item.title, value: item.dataIndex };
1031
+ });
1032
+ return _react2.default.createElement(
1033
+ _menu2.default,
1034
+ { selectable: true },
1035
+ _react2.default.createElement(
1036
+ 'div',
1037
+ { className: 'NHCheckBoxStyle' },
1038
+ plainOptions && plainOptions.length > 0 && _react2.default.createElement(_NHCheckBox3.default, {
1039
+ gridLayout: true,
1040
+ columnsNum: 1,
1041
+ value: _this2.state.checkedColumns || [],
1042
+ dataSource: plainOptions,
1043
+ onChange: _this2.handleColumn
1044
+ })
1045
+ )
1046
+ );
1047
+ };
1048
+
1049
+ _this2.handleColumn = function (checkedColumns) {
1050
+ _this2.setState({ tableFlag: false });
1051
+ _this2.columns = _this2.columns.map(function (col) {
1052
+ if (!col.dataIndex || col.dataIndex === 'operation') {
1053
+ return col;
1054
+ }
1055
+ if (col.dataIndex && checkedColumns.includes(col.dataIndex)) {
1056
+ col.checked = true;
1057
+ } else {
1058
+ col.checked = false;
1059
+ }
1060
+ return col;
1061
+ });
1062
+ _this2.setState({ checkedColumns: checkedColumns, tableFlag: true });
1063
+ };
1064
+
1065
+ _this2.onSelectChange = function (selectedRowKeys) {
1066
+ // console.log('selectedRowKeys changed: ', selectedRowKeys);
1067
+ _this2.setState({
1068
+ selectedRowKeys: selectedRowKeys,
1069
+ showDeleteBtn: !!selectedRowKeys && selectedRowKeys.length > 0
1070
+ });
1071
+ };
1072
+
1073
+ _this2.deleteBtnClick = function () {
1074
+ var selectedRowKeys = _this2.state.selectedRowKeys;
1075
+ var _this2$props = _this2.props,
1076
+ disabledDeleteKeys = _this2$props.disabledDeleteKeys,
1077
+ onBathDel = _this2$props.onBathDel;
1078
+
1079
+ if (selectedRowKeys && selectedRowKeys.length > 0) {
1080
+ if (disabledDeleteKeys && disabledDeleteKeys.length > 0) {
1081
+ if (selectedRowKeys.find(function (item) {
1082
+ return disabledDeleteKeys.includes(item);
1083
+ })) {
1084
+ _message3.default.info('存在不能删除的数据!');
1085
+ return false;
1086
+ }
1087
+ }
1088
+ (0, _NHConfirm3.default)('是否确定删除所选中的数据?', (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8() {
1089
+ return _regenerator2.default.wrap(function _callee8$(_context8) {
1090
+ while (1) {
1091
+ switch (_context8.prev = _context8.next) {
1092
+ case 0:
1093
+ _this2.update('loading', true);
1094
+
1095
+ if (!onBathDel) {
1096
+ _context8.next = 4;
1097
+ break;
1098
+ }
1099
+
1100
+ _context8.next = 4;
1101
+ return onBathDel(selectedRowKeys);
1102
+
1103
+ case 4:
1104
+ _this2.setState({ selectedRowKeys: [], showDeleteBtn: false, loading: false });
1105
+
1106
+ case 5:
1107
+ case 'end':
1108
+ return _context8.stop();
1109
+ }
1110
+ }
1111
+ }, _callee8, _this3);
1112
+ })), 'warn');
1113
+ }
1114
+ };
1115
+
1116
+ _this2.state = {
1117
+ editTableFlag: true,
1118
+ showBtnFlag: 'edit',
1119
+ tableLoading: false,
1120
+ data: [],
1121
+ editingKeys: [],
1122
+ showDeleteBtn: false,
1123
+ selectedRowKeys: [],
1124
+ checkedColumns: props.columns.filter(function (r) {
1125
+ return r.checked === undefined || r.checked === true;
1126
+ }).map(function (item) {
1127
+ return item.dataIndex;
1128
+ }) || []
1129
+ };
1130
+ _this2.columns = [{
1131
+ title: _this2.props.rowColumn.title,
1132
+ dataIndex: _this2.props.rowColumn.dataIndex,
1133
+ width: _this2.props.rowColumn.width || 80,
1134
+ checked: 'unchecked',
1135
+ // fixed: 'left',
1136
+ render: function render(text) {
1137
+ return text;
1138
+ }
1139
+ }].concat((0, _toConsumableArray3.default)(_this2.props.columns), [{
1140
+ title: '操作',
1141
+ dataIndex: 'operation',
1142
+ key: 'operation',
1143
+ width: 250,
1144
+ checked: 'unchecked',
1145
+ // fixed: "right",
1146
+ render: function render(_, record) {
1147
+ var editable = _this2.isEditing(record);
1148
+ var disabledDelete = _this2.isDisabledDelete(record);
1149
+ var prop = {
1150
+ hideSaveBtn: !Boolean(props.onRowSave),
1151
+ hideResetBtn: props.hideResetBtn,
1152
+ hideDeleteBtn: !Boolean(props.onBathDel),
1153
+ hideEditBtn: props.hideEditBtn,
1154
+ disableSingleLineSaving: props.disableSingleLineSaving,
1155
+ editable: editable
1156
+ };
1157
+ return _react2.default.createElement(
1158
+ EditableContext.Consumer,
1159
+ null,
1160
+ function (form) {
1161
+ return _react2.default.createElement(OperationColumn, (0, _extends3.default)({
1162
+ onEdit: function onEdit() {
1163
+ _this2.edit(record[_this2.props.rowKey || 'key']);
1164
+ },
1165
+ onCancel: function onCancel() {
1166
+ _this2.cancel(form, record[_this2.props.rowKey || 'key']);
1167
+ },
1168
+ onOK: function onOK(callback) {
1169
+ record.loading = true;
1170
+ _this2.save(form, record, callback);
1171
+ },
1172
+ onDel: function onDel(callback) {
1173
+ record.loading = true;
1174
+ _this2.del(form, record, callback);
1175
+ },
1176
+ record: record,
1177
+ disabledDelete: disabledDelete
1178
+ }, prop));
1179
+ }
1180
+ );
1181
+ }
1182
+ }]);
1183
+ return _this2;
1184
+ }
1185
+
1186
+ (0, _createClass3.default)(KyEditableTable, [{
1187
+ key: 'componentDidMount',
1188
+ value: function componentDidMount() {
1189
+ var _props = this.props,
1190
+ dataSource = _props.dataSource,
1191
+ tableModel = _props.tableModel,
1192
+ rowColumn = _props.rowColumn;
1193
+
1194
+ this.initData(dataSource, tableModel, rowColumn);
1195
+ }
1196
+ }, {
1197
+ key: 'componentWillReceiveProps',
1198
+ value: function componentWillReceiveProps(nextProps) {
1199
+ var dataSource = nextProps.dataSource,
1200
+ tableModel = nextProps.tableModel,
1201
+ rowColumn = nextProps.rowColumn;
1202
+
1203
+ if (dataSource === this.props.dataSource) return;
1204
+ this.initData(dataSource, tableModel, rowColumn);
1205
+ }
1206
+
1207
+ /**
1208
+ * 初始化可编辑行com
1209
+ * 递归遍历数据对象中readOnly:true不可编辑
1210
+ */
1211
+
1212
+
1213
+ // 替身函数
1214
+
1215
+
1216
+ // 是否编辑状态
1217
+
1218
+
1219
+ // 行新增
1220
+
1221
+
1222
+ // 行保存
1223
+
1224
+
1225
+ // 保存
1226
+
1227
+
1228
+ // 行删除
1229
+
1230
+
1231
+ // 行编辑
1232
+
1233
+
1234
+ // 行取消
1235
+ /* 除非深克隆一份数据对象,不然取消没有什么意义---摆烂吧 */
1236
+
1237
+
1238
+ // 添加编辑key
1239
+
1240
+
1241
+ // 移除编辑key
1242
+
1243
+
1244
+ //可编辑表格-KyEditableTable数据校验
1245
+
1246
+
1247
+ /*******
1248
+ * @description: 验证数据
1249
+ * @author: 琴时
1250
+ * @param {*} treeList [校验的数组对象]
1251
+ * @param {*} fieldList [校验指定的字段-数组形式]
1252
+ * @return {bool} [true:表单验证通过;false:验证不通过]
1253
+ */
1254
+
1255
+
1256
+ /*******
1257
+ * @description: 校验表单数据
1258
+ * @author: 琴时
1259
+ * @param {*} treeList [校验的数组对象]
1260
+ * @param {*} fieldList [校验指定的字段-数组形式]
1261
+ * @return {*} {requiredErrorMsg,validatorErrorMsg}
1262
+ */
1263
+
1264
+ // 展开列数据下拉菜单
1265
+
1266
+
1267
+ // saveBtnClick = () => {
1268
+ // this.update("loading", true);
1269
+ // if (this.props.onBathSave) {
1270
+ // this.props.onBathSave(this.state.data);
1271
+ // }
1272
+ // this.setState({ editingKeys: [], showBtnFlag: "edit", loading: false, });
1273
+ // }
1274
+
1275
+ // editBtnClick = () => {
1276
+ // this.update("loading", true);
1277
+ // let editingKeys = [];
1278
+ // editingKeys = deepTree(this.state.data, editingKeys);
1279
+ // this.setState({ editingKeys, showBtnFlag: "save", loading: false, });
1280
+ // }
1281
+
1282
+ }, {
1283
+ key: 'render',
1284
+ value: function render() {
1285
+ var _this4 = this;
1286
+
1287
+ var _state = this.state,
1288
+ editTableFlag = _state.editTableFlag,
1289
+ data = _state.data,
1290
+ showBtnFlag = _state.showBtnFlag,
1291
+ showDeleteBtn = _state.showDeleteBtn,
1292
+ tableLoading = _state.tableLoading,
1293
+ selectedRowKeys = _state.selectedRowKeys,
1294
+ _props2 = this.props,
1295
+ dataSource = _props2.dataSource,
1296
+ init = _props2.init,
1297
+ initCallback = _props2.initCallback,
1298
+ rowId = _props2.rowId,
1299
+ rowKey = _props2.rowKey,
1300
+ addBtnName = _props2.addBtnName,
1301
+ topBtnGroup = _props2.topBtnGroup,
1302
+ reveal = _props2.reveal,
1303
+ operationColumnHidden = _props2.operationColumnHidden,
1304
+ bordered = _props2.bordered,
1305
+ defaultExpandAllRows = _props2.defaultExpandAllRows,
1306
+ refreshRow = _props2.refreshRow,
1307
+ refreshRowCallback = _props2.refreshRowCallback,
1308
+ pagination = _props2.pagination,
1309
+ scroll = _props2.scroll,
1310
+ specialParams = _props2.specialParams,
1311
+ checkbox = _props2.checkbox,
1312
+ enAdd = _props2.enAdd,
1313
+ tableModel = _props2.tableModel;
1314
+
1315
+ var readOnly = tableModel === 'view';
1316
+ var components = {
1317
+ body: {
1318
+ row: EditableFormRow,
1319
+ cell: EditableCell
1320
+ }
1321
+ };
1322
+ var temp = [].concat((0, _toConsumableArray3.default)(this.columns));
1323
+ if (!rowId) {
1324
+ temp.shift();
1325
+ }
1326
+ var columns = temp.map(function (col) {
1327
+ if (col.dataIndex === 'operation' && (readOnly || operationColumnHidden)) {
1328
+ return;
1329
+ }
1330
+ if (!col.dataIndex || col.dataIndex === 'operation') {
1331
+ return col;
1332
+ }
1333
+ if (col.checked === false) {
1334
+ return;
1335
+ }
1336
+
1337
+ var tip = '';
1338
+ if (col.tip) {
1339
+ tip = _react2.default.createElement(
1340
+ 'span',
1341
+ { style: { marginLeft: 4 } },
1342
+ _react2.default.createElement(
1343
+ _tooltip2.default,
1344
+ { title: col.tip },
1345
+ _react2.default.createElement(_icon2.default, { type: 'question-circle-o' })
1346
+ )
1347
+ );
1348
+ }
1349
+
1350
+ return (0, _extends3.default)({}, col, {
1351
+ title: col.required ? _react2.default.createElement(
1352
+ _react2.default.Fragment,
1353
+ null,
1354
+ _react2.default.createElement(
1355
+ 'font',
1356
+ { className: 'editableTable-item-required' },
1357
+ col.title
1358
+ ),
1359
+ tip
1360
+ ) : _react2.default.createElement(
1361
+ _react2.default.Fragment,
1362
+ null,
1363
+ col.title,
1364
+ tip
1365
+ ),
1366
+ onCell: function onCell(record) {
1367
+ return {
1368
+ record: record,
1369
+ editType: col.editType || '',
1370
+ dataIndex: col.dataIndex,
1371
+ title: col.title,
1372
+ editing: _this4.isEditing(record),
1373
+ required: col.required,
1374
+ edit: col.edit,
1375
+ parent: rowKey,
1376
+ defaultRender: col.render,
1377
+ config: col.config || {},
1378
+ func: _this4.handleSave,
1379
+ params: specialParams,
1380
+ selectOptions: col.selectOptions || []
1381
+ };
1382
+ }
1383
+ });
1384
+ }).filter(function (item) {
1385
+ return item;
1386
+ });
1387
+ var rowSelection = {
1388
+ selectedRowKeys: selectedRowKeys,
1389
+ onChange: this.onSelectChange
1390
+ };
1391
+ var title = function title() {
1392
+ return _react2.default.createElement(
1393
+ 'div',
1394
+ { className: 'self-table-title' },
1395
+ showBtnFlag === 'save' && _react2.default.createElement(
1396
+ _button2.default,
1397
+ { type: 'primary', onClick: _this4.saveBtnClick },
1398
+ '\u4E00\u952E\u4FDD\u5B58'
1399
+ ),
1400
+ showBtnFlag === 'edit' && _react2.default.createElement(
1401
+ _button2.default,
1402
+ { type: 'primary', onClick: _this4.editBtnClick },
1403
+ '\u7EF4\u62A4\u6570\u636E'
1404
+ ),
1405
+ titleBtnGroup,
1406
+ showDeleteBtn && _react2.default.createElement(
1407
+ _button2.default,
1408
+ { type: 'danger', ghost: true, style: { marginLeft: 8 }, onClick: _this4.deleteBtnClick },
1409
+ '\u5220\u9664'
1410
+ ),
1411
+ reveal && _react2.default.createElement(
1412
+ _dropdown2.default,
1413
+ {
1414
+ overlay: function overlay() {
1415
+ return _this4.getMenuData(_this4.columns);
1416
+ },
1417
+ placement: 'bottomLeft',
1418
+ trigger: 'click',
1419
+ overlayStyle: { minWidth: 150 }
1420
+ },
1421
+ _react2.default.createElement(
1422
+ _button2.default,
1423
+ { type: 'link', style: { float: 'right' } },
1424
+ '\u5217\u5C55\u793A'
1425
+ )
1426
+ )
1427
+ );
1428
+ };
1429
+ return _react2.default.createElement(
1430
+ 'div',
1431
+ null,
1432
+ !readOnly && _react2.default.createElement(
1433
+ 'div',
1434
+ { layout: 'inline', className: 'operation' },
1435
+ topBtnGroup,
1436
+ showDeleteBtn && _react2.default.createElement(
1437
+ _button2.default,
1438
+ { type: 'danger', ghost: true, style: { marginRight: 8 }, onClick: this.deleteBtnClick },
1439
+ '\u5220\u9664'
1440
+ )
1441
+ ),
1442
+ _react2.default.createElement(_table2.default, {
1443
+ size: 'small',
1444
+ rowKey: rowKey,
1445
+ className: 'self-editable-table',
1446
+ rowClassName: 'self-editable-row',
1447
+ bordered: bordered,
1448
+ columns: columns,
1449
+ components: components,
1450
+ rowSelection: checkbox && !readOnly ? rowSelection : null,
1451
+ dataSource: data,
1452
+ loading: tableLoading,
1453
+ key: data,
1454
+ defaultExpandAllRows: defaultExpandAllRows,
1455
+ onRow: function onRow() {
1456
+ return {
1457
+ refresh: refreshRow,
1458
+ callback: refreshRowCallback
1459
+ };
1460
+ },
1461
+ pagination: pagination,
1462
+ scroll: scroll
1463
+ }),
1464
+ _react2.default.createElement(
1465
+ _button2.default,
1466
+ {
1467
+ type: 'dashed',
1468
+ block: true,
1469
+ style: {
1470
+ margin: '16px 0 0 0',
1471
+ display: tableLoading || readOnly || enAdd ? 'none' : 'block'
1472
+ },
1473
+ onClick: this.add
1474
+ },
1475
+ '+ \u65B0\u589E',
1476
+ addBtnName ? addBtnName : ''
1477
+ )
1478
+ );
1479
+ }
1480
+ }]);
1481
+ return KyEditableTable;
1482
+ }(_react.Component);
1483
+
1484
+ // 属性默认值
1485
+
1486
+
1487
+ KyEditableTable.defaultProps = {
1488
+ rowId: true, //启用序号列
1489
+ rowKey: 'id',
1490
+ tableModel: 'edit', //表格类型:edit<可编辑>,view<只读>
1491
+ rowColumn: { title: '序号', dataIndex: 'rowId' },
1492
+ disabledDeleteKeys: [],
1493
+ tableLoading: false,
1494
+ reveal: false,
1495
+ defaultExpandAllRows: false,
1496
+ pagination: false,
1497
+ topBtnGroup: undefined,
1498
+ scroll: { x: 1500, y: 400 },
1499
+ operationColumnHidden: false, //隐藏操作列
1500
+ dataSourceName: 'dataSource',
1501
+ checkbox: true, //显示复选框列
1502
+ hideEditBtn: false, //隐藏编辑按钮
1503
+ hideResetBtn: false, //隐藏取消按钮
1504
+ enAdd: false, //不允许添加
1505
+ disableSingleLineSaving: false
1506
+ };
1507
+
1508
+ // 属性检查
1509
+ KyEditableTable.propTypes = {
1510
+ rowId: _propTypes2.default.bool,
1511
+ rowKey: _propTypes2.default.string,
1512
+ rowColumn: _propTypes2.default.shape({
1513
+ title: _propTypes2.default.string,
1514
+ dataIndex: _propTypes2.default.string
1515
+ }),
1516
+ disabledDeleteKeys: _propTypes2.default.array,
1517
+ dataSource: _propTypes2.default.array,
1518
+ columns: _propTypes2.default.array,
1519
+ tableLoading: _propTypes2.default.bool,
1520
+ tableModel: _propTypes2.default.string,
1521
+ // onBathSave: PropTypes.func,
1522
+ onBathDel: _propTypes2.default.func,
1523
+ onRowSave: _propTypes2.default.func,
1524
+ setPropsState: _propTypes2.default.func,
1525
+ defaultExpandAllRows: _propTypes2.default.bool,
1526
+ reveal: _propTypes2.default.bool,
1527
+ topBtnGroup: _propTypes2.default.element,
1528
+ scroll: _propTypes2.default.object,
1529
+ specialParams: _propTypes2.default.object,
1530
+ operationColumnHidden: _propTypes2.default.bool,
1531
+ checkbox: _propTypes2.default.bool,
1532
+ dataSourceName: _propTypes2.default.string,
1533
+ // 禁用单行保存 编辑 取消按钮,默认不禁用
1534
+ disableSingleLineSaving: _propTypes2.default.bool
1535
+ };
1536
+
1537
+ exports.default = KyEditableTable;