easy3wui 1.5.54 → 1.5.55-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/lib/Easy3wEditBigTable/Easy3wEditBigTableForm.js +272 -0
- package/lib/Easy3wEditBigTable/Editors/EditorNumber.js +92 -0
- package/lib/Easy3wEditBigTable/Editors/EditorsDatePicker.js +168 -0
- package/lib/Easy3wEditBigTable/Editors/EditorsInputNumber.js +141 -0
- package/lib/Easy3wEditBigTable/index.js +766 -0
- package/lib/index.js +9 -0
- package/package.json +5 -2
|
@@ -0,0 +1,766 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _modal = require('antd/lib/modal');
|
|
6
|
+
|
|
7
|
+
var _modal2 = _interopRequireDefault(_modal);
|
|
8
|
+
|
|
9
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
10
|
+
|
|
11
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
12
|
+
|
|
13
|
+
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
|
14
|
+
|
|
15
|
+
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
|
16
|
+
|
|
17
|
+
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
|
18
|
+
|
|
19
|
+
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
|
20
|
+
|
|
21
|
+
var _inherits2 = require('babel-runtime/helpers/inherits');
|
|
22
|
+
|
|
23
|
+
var _inherits3 = _interopRequireDefault(_inherits2);
|
|
24
|
+
|
|
25
|
+
require('antd/lib/modal/style');
|
|
26
|
+
|
|
27
|
+
var _react = require('react');
|
|
28
|
+
|
|
29
|
+
var _react2 = _interopRequireDefault(_react);
|
|
30
|
+
|
|
31
|
+
var _antd = require('antd');
|
|
32
|
+
|
|
33
|
+
var _reactDataGrid = require('react-data-grid');
|
|
34
|
+
|
|
35
|
+
var _reactDataGrid2 = _interopRequireDefault(_reactDataGrid);
|
|
36
|
+
|
|
37
|
+
var _reactDataGridAddons = require('react-data-grid-addons');
|
|
38
|
+
|
|
39
|
+
var _xlsx = require('xlsx');
|
|
40
|
+
|
|
41
|
+
var _xlsx2 = _interopRequireDefault(_xlsx);
|
|
42
|
+
|
|
43
|
+
var _numeral = require('numeral');
|
|
44
|
+
|
|
45
|
+
var _numeral2 = _interopRequireDefault(_numeral);
|
|
46
|
+
|
|
47
|
+
var _Easy3wEditBigTableForm = require('./Easy3wEditBigTableForm');
|
|
48
|
+
|
|
49
|
+
var _Easy3wEditBigTableForm2 = _interopRequireDefault(_Easy3wEditBigTableForm);
|
|
50
|
+
|
|
51
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
52
|
+
|
|
53
|
+
var Selectors = _reactDataGridAddons.Data.Selectors; /* eslint-disable no-alert */
|
|
54
|
+
|
|
55
|
+
var Easy3wEditBigTable = function (_Component) {
|
|
56
|
+
(0, _inherits3['default'])(Easy3wEditBigTable, _Component);
|
|
57
|
+
|
|
58
|
+
function Easy3wEditBigTable(props) {
|
|
59
|
+
(0, _classCallCheck3['default'])(this, Easy3wEditBigTable);
|
|
60
|
+
|
|
61
|
+
var _this = (0, _possibleConstructorReturn3['default'])(this, _Component.call(this, props));
|
|
62
|
+
|
|
63
|
+
_this.bidPureComponent = function (pureComponentName, that) {
|
|
64
|
+
_this[pureComponentName] = that;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
_this.ReactDataGridRef = function (ref) {
|
|
68
|
+
if (ref) {
|
|
69
|
+
_this.ReactDataGridRef = ref;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
_this.onGridRowsUpdated = function (objUpdated) {
|
|
74
|
+
var fromRow = objUpdated.fromRow,
|
|
75
|
+
fromRowData = objUpdated.fromRowData;
|
|
76
|
+
var updated = objUpdated.updated;
|
|
77
|
+
var _this$props = _this.props,
|
|
78
|
+
touchAutoCompute = _this$props.touchAutoCompute,
|
|
79
|
+
onGridRowsUpdated = _this$props.onGridRowsUpdated,
|
|
80
|
+
dataList = _this$props.dataList;
|
|
81
|
+
|
|
82
|
+
if (touchAutoCompute && typeof touchAutoCompute === 'function') {
|
|
83
|
+
// 数据变更-自动计算行数据
|
|
84
|
+
updated = touchAutoCompute(objUpdated);
|
|
85
|
+
}
|
|
86
|
+
console.log('onGridRowsUpdated', objUpdated, updated);
|
|
87
|
+
var autoAddNumberIdxEdit = fromRowData.autoAddNumber_idx_edit;
|
|
88
|
+
|
|
89
|
+
dataList[autoAddNumberIdxEdit] = (0, _extends3['default'])({}, fromRowData, updated);
|
|
90
|
+
if (onGridRowsUpdated && typeof onGridRowsUpdated === 'function') {
|
|
91
|
+
// 数据变更-回调函数
|
|
92
|
+
onGridRowsUpdated('onGridRowsUpdated', dataList);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
_this.onGridSort = function (sortColumn, sortDirection) {
|
|
97
|
+
_this.setState({ sortColumn: sortColumn, sortDirection: sortDirection });
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
_this.onRowsSelected = function (rows) {
|
|
101
|
+
_this.setState({
|
|
102
|
+
arrSelectedIndexes: _this.state.arrSelectedIndexes.concat(rows.map(function (r) {
|
|
103
|
+
return r.rowIdx;
|
|
104
|
+
})) // 表格选择行索引
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
_this.onRowsDeselected = function (rows) {
|
|
109
|
+
var rowIndexes = rows.map(function (r) {
|
|
110
|
+
return r.rowIdx;
|
|
111
|
+
});
|
|
112
|
+
_this.setState({
|
|
113
|
+
arrSelectedIndexes: _this.state.arrSelectedIndexes.filter(function (i) {
|
|
114
|
+
return rowIndexes.indexOf(i) === -1;
|
|
115
|
+
}) // 表格选择行索引
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
_this.touchAddRow = function () {
|
|
120
|
+
var _this$props2 = _this.props,
|
|
121
|
+
onGridRowsUpdated = _this$props2.onGridRowsUpdated,
|
|
122
|
+
dataList = _this$props2.dataList;
|
|
123
|
+
|
|
124
|
+
var dataListNew = [].concat(dataList, [{}]);
|
|
125
|
+
if (onGridRowsUpdated && typeof onGridRowsUpdated === 'function') {
|
|
126
|
+
// 数据变更-回调函数
|
|
127
|
+
onGridRowsUpdated('touchAddRow', dataListNew);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
_this.touchCopyRow = function () {
|
|
132
|
+
var _this$props3 = _this.props,
|
|
133
|
+
onGridRowsUpdated = _this$props3.onGridRowsUpdated,
|
|
134
|
+
dataList = _this$props3.dataList;
|
|
135
|
+
var arrSelectedIndexes = _this.state.arrSelectedIndexes;
|
|
136
|
+
|
|
137
|
+
if (arrSelectedIndexes.length) {
|
|
138
|
+
var newArr = []; // 复制的新数组
|
|
139
|
+
arrSelectedIndexes.forEach(function (rowIdx) {
|
|
140
|
+
var newRow = (0, _extends3['default'])({}, dataList[rowIdx]);
|
|
141
|
+
newArr.push(newRow);
|
|
142
|
+
return rowIdx;
|
|
143
|
+
});
|
|
144
|
+
var dataListNew = [].concat(dataList, newArr);
|
|
145
|
+
if (onGridRowsUpdated && typeof onGridRowsUpdated === 'function') {
|
|
146
|
+
// 数据变更-回调函数
|
|
147
|
+
onGridRowsUpdated('touchCopyRow', dataListNew);
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
_modal2['default'].error({
|
|
151
|
+
title: '错误',
|
|
152
|
+
content: '请选择要复制的行'
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
_this.deleteRow = function () {
|
|
158
|
+
var _this$props4 = _this.props,
|
|
159
|
+
dataList = _this$props4.dataList,
|
|
160
|
+
onGridRowsUpdated = _this$props4.onGridRowsUpdated;
|
|
161
|
+
var arrSelectedIndexes = _this.state.arrSelectedIndexes;
|
|
162
|
+
|
|
163
|
+
if (arrSelectedIndexes.length) {
|
|
164
|
+
var dataListNew = []; // 复制的新数组
|
|
165
|
+
dataList.forEach(function (row, index) {
|
|
166
|
+
if (arrSelectedIndexes.indexOf(index) === -1) {
|
|
167
|
+
dataListNew.push(row);
|
|
168
|
+
}
|
|
169
|
+
return index;
|
|
170
|
+
});
|
|
171
|
+
if (onGridRowsUpdated && typeof onGridRowsUpdated === 'function') {
|
|
172
|
+
// 数据变更-回调函数
|
|
173
|
+
onGridRowsUpdated('deleteRow', dataListNew);
|
|
174
|
+
}
|
|
175
|
+
} else {
|
|
176
|
+
_modal2['default'].error({
|
|
177
|
+
title: '错误',
|
|
178
|
+
content: '请选择要删除的行'
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
_this.touchImport = function () {
|
|
184
|
+
var input = document.getElementById('touchImportExcel');
|
|
185
|
+
// input.type = 'file';
|
|
186
|
+
input.onchange = function (e) {
|
|
187
|
+
var file = e.target.files[0];
|
|
188
|
+
var reader = new FileReader();
|
|
189
|
+
reader.onload = function (event) {
|
|
190
|
+
var onGridRowsUpdated = _this.props.onGridRowsUpdated;
|
|
191
|
+
|
|
192
|
+
var _this$getHearder = _this.getHearder(),
|
|
193
|
+
arrColumnsKey = _this$getHearder.arrColumnsKey;
|
|
194
|
+
|
|
195
|
+
var data = event.target.result;
|
|
196
|
+
var workbook = _xlsx2['default'].read(data, { type: 'binary' });
|
|
197
|
+
var firstSheetName = workbook.SheetNames[0];
|
|
198
|
+
var worksheet = workbook.Sheets[firstSheetName];
|
|
199
|
+
var rows = _xlsx2['default'].utils.sheet_to_json(worksheet, { header: arrColumnsKey });
|
|
200
|
+
rows.shift();
|
|
201
|
+
if (onGridRowsUpdated && typeof onGridRowsUpdated === 'function') {
|
|
202
|
+
// 数据变更-回调函数
|
|
203
|
+
onGridRowsUpdated('touchImport', rows);
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
reader.readAsBinaryString(file);
|
|
207
|
+
};
|
|
208
|
+
input.click();
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
_this.touchExport = function () {
|
|
212
|
+
var _this$getHearder2 = _this.getHearder(),
|
|
213
|
+
objSheet = _this$getHearder2.objSheet,
|
|
214
|
+
arrColInfo = _this$getHearder2.arrColInfo;
|
|
215
|
+
|
|
216
|
+
var filterDataList = _this.getRows();
|
|
217
|
+
// 计算 filterDataList 中所有对象字段最多的长度
|
|
218
|
+
var maxFieldsLength = 0;
|
|
219
|
+
filterDataList.forEach(function (item) {
|
|
220
|
+
var fieldsLength = Object.keys(item).length;
|
|
221
|
+
if (fieldsLength > maxFieldsLength) {
|
|
222
|
+
maxFieldsLength = fieldsLength;
|
|
223
|
+
}
|
|
224
|
+
return item;
|
|
225
|
+
});
|
|
226
|
+
if (maxFieldsLength > arrColInfo.length) {
|
|
227
|
+
for (var i = arrColInfo.length; i < maxFieldsLength;) {
|
|
228
|
+
arrColInfo.push({ hidden: true });
|
|
229
|
+
i += 1;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// 创建工作簿和工作表
|
|
233
|
+
var worksheet = _xlsx2['default'].utils.json_to_sheet([objSheet].concat(filterDataList), { skipHeader: true });
|
|
234
|
+
worksheet['!cols'] = arrColInfo;
|
|
235
|
+
var workbook = _xlsx2['default'].utils.book_new();
|
|
236
|
+
_xlsx2['default'].utils.book_append_sheet(workbook, worksheet, 'Sheet1');
|
|
237
|
+
|
|
238
|
+
// 生成Excel文件并触发下载
|
|
239
|
+
_xlsx2['default'].writeFile(workbook, 'exported_data.xlsx');
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
_this.showModalBatchEditBigTable = function () {
|
|
243
|
+
_this.setState({
|
|
244
|
+
visible: true // 显示批量录入Modal
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
_this.hideModalBatchEditBigTable = function () {
|
|
249
|
+
_this.setState({
|
|
250
|
+
visible: false // 隐藏批量录入Modal
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
_this.confirmCallbackBatchEditBigTable = function (objFormData, objColumn) {
|
|
255
|
+
var _this$props5 = _this.props,
|
|
256
|
+
touchAutoCompute = _this$props5.touchAutoCompute,
|
|
257
|
+
onGridRowsUpdated = _this$props5.onGridRowsUpdated,
|
|
258
|
+
dataList = _this$props5.dataList;
|
|
259
|
+
// if (touchAutoCompute && typeof touchAutoCompute === 'function') { // 数据变更-自动计算行数据
|
|
260
|
+
// updated = touchAutoCompute(objUpdated);
|
|
261
|
+
// }
|
|
262
|
+
|
|
263
|
+
var rows = _this.getRows();
|
|
264
|
+
rows.map(function (row) {
|
|
265
|
+
var autoAddNumberIdxEdit = row.autoAddNumber_idx_edit,
|
|
266
|
+
autoAddNumberIdxView = row.autoAddNumber_idx_view;
|
|
267
|
+
|
|
268
|
+
var updated = (0, _extends3['default'])({}, objFormData);
|
|
269
|
+
if (touchAutoCompute && typeof touchAutoCompute === 'function') {
|
|
270
|
+
// 数据变更-自动计算行数据
|
|
271
|
+
// action 改变的动作类型,'CELL_UPDATE' 单元格更新,'CELL_BATCH_CHANGE' 单元格批量更新
|
|
272
|
+
// cellKey 改变的单元格的key
|
|
273
|
+
// fromRow 改变的单元格的原来行序号
|
|
274
|
+
// fromRowData 改变的单元格的原来行数据
|
|
275
|
+
// fromRowId 改变的单元格的原来行id(行唯一标识)
|
|
276
|
+
// rowIds 所有被选中的行id
|
|
277
|
+
// toRow 改变的单元格的新行序号
|
|
278
|
+
// toRowId 改变的单元格的新行id
|
|
279
|
+
// updated 改变的单元格的新值
|
|
280
|
+
var rowKey = _this.ReactDataGridRef.props.rowKey;
|
|
281
|
+
|
|
282
|
+
updated = touchAutoCompute({ cellKey: objColumn.key, fromRow: autoAddNumberIdxView, toRow: autoAddNumberIdxView, fromRowId: row[rowKey], toRowId: row[rowKey], rowIds: [row[rowKey]], updated: updated, action: 'CELL_BATCH_CHANGE', fromRowData: row });
|
|
283
|
+
}
|
|
284
|
+
dataList[autoAddNumberIdxEdit] = (0, _extends3['default'])({}, row, updated);
|
|
285
|
+
return row;
|
|
286
|
+
});
|
|
287
|
+
if (onGridRowsUpdated && typeof onGridRowsUpdated === 'function') {
|
|
288
|
+
// 数据变更-回调函数
|
|
289
|
+
onGridRowsUpdated('confirmCallbackBatchEditBigTable', dataList);
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
_this.getRows = function () {
|
|
294
|
+
var _this$state = _this.state,
|
|
295
|
+
filters = _this$state.filters,
|
|
296
|
+
sortColumn = _this$state.sortColumn,
|
|
297
|
+
sortDirection = _this$state.sortDirection;
|
|
298
|
+
var _this$props6 = _this.props,
|
|
299
|
+
dataList = _this$props6.dataList,
|
|
300
|
+
enableCellSelect = _this$props6.enableCellSelect;
|
|
301
|
+
|
|
302
|
+
var rows = dataList;
|
|
303
|
+
if (enableCellSelect) {
|
|
304
|
+
rows = _this.touchLoopDataBefore();
|
|
305
|
+
}
|
|
306
|
+
return Selectors.getRows({ rows: rows, filters: filters, sortColumn: sortColumn, sortDirection: sortDirection });
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
_this.getSize = function () {
|
|
310
|
+
return _this.getRows().length;
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
_this.rowGetter = function (rowIdx) {
|
|
314
|
+
var rows = _this.getRows();
|
|
315
|
+
// autoAddNumber_idx_view 自动添加序号 序号列使用
|
|
316
|
+
return (0, _extends3['default'])({}, rows[rowIdx], { autoAddNumber_idx_view: rowIdx + 1 });
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
_this.touchLoopDataBefore = function () {
|
|
320
|
+
var dataList = _this.props.dataList;
|
|
321
|
+
|
|
322
|
+
var rows = dataList.map(function (row, index) {
|
|
323
|
+
// autoAddNumber_idx_edit 自动添加序号 数据更新时使用确定当前更新的行
|
|
324
|
+
return (0, _extends3['default'])({}, row, { autoAddNumber_idx_edit: index });
|
|
325
|
+
});
|
|
326
|
+
return rows;
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
_this.touchLoopData = function () {
|
|
330
|
+
var rows = _this.getRows();
|
|
331
|
+
var objTotal = {}; // 总计对象
|
|
332
|
+
rows.map(function (row, index) {
|
|
333
|
+
_this.columns.map(function (item, idx) {
|
|
334
|
+
var name = item.name,
|
|
335
|
+
key = item.key,
|
|
336
|
+
totalFlag = item.totalFlag,
|
|
337
|
+
numberFormat = item.numberFormat;
|
|
338
|
+
|
|
339
|
+
if (totalFlag && typeof totalFlag === 'boolean') {
|
|
340
|
+
if (index === 0) {
|
|
341
|
+
objTotal[key] = {}; // 初始值
|
|
342
|
+
objTotal[key].name = name; // 初始值
|
|
343
|
+
objTotal[key].value = 0; // 初始值
|
|
344
|
+
objTotal[key].numberFormat = numberFormat; // 格式化
|
|
345
|
+
}
|
|
346
|
+
var intData = Number(row[key]) || 0;
|
|
347
|
+
objTotal[key].value = (objTotal[key].value || 0) + intData;
|
|
348
|
+
}
|
|
349
|
+
return idx;
|
|
350
|
+
});
|
|
351
|
+
return index;
|
|
352
|
+
});
|
|
353
|
+
return objTotal;
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
_this.getHearder = function () {
|
|
357
|
+
var columns = _this.props.columns;
|
|
358
|
+
var _this$props7 = _this.props,
|
|
359
|
+
arrColumnsKey = _this$props7.arrColumnsKey,
|
|
360
|
+
objSheet = _this$props7.objSheet,
|
|
361
|
+
arrColInfo = _this$props7.arrColInfo;
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
var arrColumnsKeyNew = ['id'];
|
|
365
|
+
var objSheetNew = { id: 'id' };
|
|
366
|
+
// 定义列信息,隐藏第一列(A列)
|
|
367
|
+
var arrColInfoNew = [{ hidden: true }];
|
|
368
|
+
columns.forEach(function (column) {
|
|
369
|
+
var key = column.key,
|
|
370
|
+
name = column.name,
|
|
371
|
+
hiddeKeys = column.hiddeKeys;
|
|
372
|
+
|
|
373
|
+
objSheetNew[key] = name;
|
|
374
|
+
arrColumnsKeyNew.push(key);
|
|
375
|
+
arrColInfoNew.push({});
|
|
376
|
+
if (hiddeKeys) {
|
|
377
|
+
var arrHiddenKeys = hiddeKeys.split(',');
|
|
378
|
+
arrHiddenKeys.map(function (item) {
|
|
379
|
+
if (item === key) {
|
|
380
|
+
// 隐藏列与显示列相同,则不添加入表头
|
|
381
|
+
} else {
|
|
382
|
+
objSheetNew[item] = item;
|
|
383
|
+
arrColumnsKeyNew.push(item);
|
|
384
|
+
arrColInfoNew.push({
|
|
385
|
+
hidden: true
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
return item;
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
return { arrColumnsKey: arrColumnsKey || arrColumnsKeyNew, objSheet: objSheet || objSheetNew, arrColInfo: arrColInfo || arrColInfoNew };
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
_this.handleFilterChange = function (filter) {
|
|
397
|
+
var newFilters = (0, _extends3['default'])({}, _this.state.filters);
|
|
398
|
+
if (filter.filterTerm) {
|
|
399
|
+
newFilters[filter.column.key] = filter;
|
|
400
|
+
} else {
|
|
401
|
+
delete newFilters[filter.column.key];
|
|
402
|
+
}
|
|
403
|
+
_this.setState({ filters: newFilters });
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
_this.onClearFilters = function () {
|
|
407
|
+
// all filters removed
|
|
408
|
+
_this.setState({ filters: {} });
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
_this.getToolbar = function () {
|
|
412
|
+
var objToolbarProps = _this.props.objToolbarProps;
|
|
413
|
+
var addRowFlag = objToolbarProps.addRowFlag,
|
|
414
|
+
addRowButtonText = objToolbarProps.addRowButtonText,
|
|
415
|
+
touchAddRow = objToolbarProps.touchAddRow,
|
|
416
|
+
enableFilter = objToolbarProps.enableFilter,
|
|
417
|
+
filterRowsButtonText = objToolbarProps.filterRowsButtonText,
|
|
418
|
+
arrBtn = objToolbarProps.arrBtn,
|
|
419
|
+
batchFlag = objToolbarProps.batchFlag,
|
|
420
|
+
batchButtonText = objToolbarProps.batchButtonText,
|
|
421
|
+
showModalBatchEditBigTable = objToolbarProps.showModalBatchEditBigTable,
|
|
422
|
+
saveFlag = objToolbarProps.saveFlag,
|
|
423
|
+
saveButtonText = objToolbarProps.saveButtonText,
|
|
424
|
+
saveEditBigTable = objToolbarProps.saveEditBigTable,
|
|
425
|
+
deleteFlag = objToolbarProps.deleteFlag,
|
|
426
|
+
deleteButtonText = objToolbarProps.deleteButtonText,
|
|
427
|
+
deleteRow = objToolbarProps.deleteRow,
|
|
428
|
+
importFlag = objToolbarProps.importFlag,
|
|
429
|
+
importButtonText = objToolbarProps.importButtonText,
|
|
430
|
+
touchImport = objToolbarProps.touchImport,
|
|
431
|
+
exportFlag = objToolbarProps.exportFlag,
|
|
432
|
+
exportButtonText = objToolbarProps.exportButtonText,
|
|
433
|
+
touchExport = objToolbarProps.touchExport;
|
|
434
|
+
|
|
435
|
+
var toolbarProps = {};
|
|
436
|
+
if (addRowFlag) {
|
|
437
|
+
// 新增按钮
|
|
438
|
+
toolbarProps.onAddRow = touchAddRow || _this.touchAddRow;
|
|
439
|
+
toolbarProps.addRowButtonText = addRowButtonText || '新增';
|
|
440
|
+
} else if (enableFilter) {
|
|
441
|
+
// 筛选按钮
|
|
442
|
+
toolbarProps.enableFilter = enableFilter;
|
|
443
|
+
toolbarProps.filterRowsButtonText = filterRowsButtonText || '筛选';
|
|
444
|
+
}
|
|
445
|
+
var toolbar = _react2['default'].createElement(
|
|
446
|
+
_reactDataGridAddons.Toolbar,
|
|
447
|
+
(0, _extends3['default'])({}, toolbarProps, {
|
|
448
|
+
// 行数
|
|
449
|
+
numberOfRows: _this.getSize()
|
|
450
|
+
}),
|
|
451
|
+
arrBtn && arrBtn.map(function (btn) {
|
|
452
|
+
return _react2['default'].createElement(
|
|
453
|
+
'button',
|
|
454
|
+
{ type: 'button', className: 'btn', onClick: btn.onClick },
|
|
455
|
+
btn.text
|
|
456
|
+
);
|
|
457
|
+
}),
|
|
458
|
+
batchFlag ? _react2['default'].createElement(
|
|
459
|
+
'button',
|
|
460
|
+
{ type: 'button', className: 'btn', onClick: showModalBatchEditBigTable || _this.showModalBatchEditBigTable },
|
|
461
|
+
batchButtonText || '批量录入'
|
|
462
|
+
) : '',
|
|
463
|
+
saveFlag ? _react2['default'].createElement(
|
|
464
|
+
'button',
|
|
465
|
+
{ type: 'button', className: 'btn', onClick: saveEditBigTable },
|
|
466
|
+
saveButtonText || '保存'
|
|
467
|
+
) : '',
|
|
468
|
+
deleteFlag ? _react2['default'].createElement(
|
|
469
|
+
'button',
|
|
470
|
+
{ type: 'button', className: 'btn', onClick: deleteRow || _this.deleteRow },
|
|
471
|
+
deleteButtonText || '删除'
|
|
472
|
+
) : '',
|
|
473
|
+
importFlag ? _react2['default'].createElement(
|
|
474
|
+
'button',
|
|
475
|
+
{ type: 'button', className: 'btn', onClick: touchImport || _this.touchImport },
|
|
476
|
+
_react2['default'].createElement('input', { type: 'file', id: 'touchImportExcel', accept: '.xlsx, .xls', style: { display: 'none' } }),
|
|
477
|
+
importButtonText || '导入'
|
|
478
|
+
) : '',
|
|
479
|
+
exportFlag ? _react2['default'].createElement(
|
|
480
|
+
'button',
|
|
481
|
+
{ type: 'button', className: 'btn', onClick: touchExport || _this.touchExport },
|
|
482
|
+
exportButtonText || '导出'
|
|
483
|
+
) : ''
|
|
484
|
+
);
|
|
485
|
+
return toolbar;
|
|
486
|
+
};
|
|
487
|
+
|
|
488
|
+
_this.getReactDataGridProps = function () {
|
|
489
|
+
var _this$props8 = _this.props,
|
|
490
|
+
enableCellSelect = _this$props8.enableCellSelect,
|
|
491
|
+
objToolbarProps = _this$props8.objToolbarProps,
|
|
492
|
+
rowSelection = _this$props8.rowSelection;
|
|
493
|
+
|
|
494
|
+
var objReactDataGridProps = {}; // ReactDataGrid属性对象
|
|
495
|
+
// toolbar属性
|
|
496
|
+
if (objToolbarProps) {
|
|
497
|
+
var enableFilter = objToolbarProps.enableFilter;
|
|
498
|
+
|
|
499
|
+
objReactDataGridProps.toolbar = _this.getToolbar();
|
|
500
|
+
if (enableFilter) {
|
|
501
|
+
objReactDataGridProps.onAddFilter = _this.handleFilterChange;
|
|
502
|
+
objReactDataGridProps.onClearFilters = _this.onClearFilters;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
// 单元格选择
|
|
506
|
+
if (enableCellSelect && typeof enableCellSelect === 'boolean') {
|
|
507
|
+
objReactDataGridProps.enableCellSelect = enableCellSelect;
|
|
508
|
+
objReactDataGridProps.onGridRowsUpdated = _this.onGridRowsUpdated; // 表格编辑
|
|
509
|
+
}
|
|
510
|
+
// 表格行选择
|
|
511
|
+
if (rowSelection && typeof rowSelection === 'boolean') {
|
|
512
|
+
objReactDataGridProps.rowSelection = { // 表格选择
|
|
513
|
+
showCheckbox: true,
|
|
514
|
+
enableShiftSelect: true,
|
|
515
|
+
onRowsSelected: _this.onRowsSelected,
|
|
516
|
+
onRowsDeselected: _this.onRowsDeselected,
|
|
517
|
+
selectBy: {
|
|
518
|
+
rowKey: 'id',
|
|
519
|
+
indexes: _this.state.arrSelectedIndexes
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
} else if (rowSelection) {
|
|
523
|
+
objReactDataGridProps.rowSelection = rowSelection;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
return objReactDataGridProps;
|
|
527
|
+
};
|
|
528
|
+
|
|
529
|
+
_this.createColumns = function () {
|
|
530
|
+
var _this$props9 = _this.props,
|
|
531
|
+
autoAddNumber = _this$props9.autoAddNumber,
|
|
532
|
+
columns = _this$props9.columns;
|
|
533
|
+
// 自动添加序号
|
|
534
|
+
|
|
535
|
+
var columnsNew = [].concat(columns);
|
|
536
|
+
if (autoAddNumber && typeof autoAddNumber === 'boolean') {
|
|
537
|
+
columnsNew = [{ name: '序号', key: 'autoAddNumber_idx_view', resizable: true, width: 50 }].concat(columnsNew);
|
|
538
|
+
}
|
|
539
|
+
_this.columns = columnsNew;
|
|
540
|
+
return columnsNew;
|
|
541
|
+
};
|
|
542
|
+
|
|
543
|
+
_this.checkReactDataGridData = function () {
|
|
544
|
+
var clearFiltersFlag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
545
|
+
|
|
546
|
+
if (clearFiltersFlag) {
|
|
547
|
+
_this.onClearFilters(); // 清空筛选条件
|
|
548
|
+
}
|
|
549
|
+
_this.checkData(); // 校验数据
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
_this.checkData = function () {
|
|
553
|
+
var _this$props10 = _this.props,
|
|
554
|
+
columns = _this$props10.columns,
|
|
555
|
+
dataList = _this$props10.dataList;
|
|
556
|
+
|
|
557
|
+
var strCheckFailRows = ''; // 校验失败的行号
|
|
558
|
+
var arrRequiredMessage = []; // 必填提示信息
|
|
559
|
+
dataList.forEach(function (row, index) {
|
|
560
|
+
var boolcheckFailFlag = false; // 校验失败标识
|
|
561
|
+
columns.forEach(function (item) {
|
|
562
|
+
var key = item.key,
|
|
563
|
+
required = item.required,
|
|
564
|
+
strName = item.strName,
|
|
565
|
+
name = item.name;
|
|
566
|
+
// key 字段
|
|
567
|
+
// required 必填
|
|
568
|
+
// strName 字串名称
|
|
569
|
+
// name 字段名称
|
|
570
|
+
|
|
571
|
+
if (required && !row[key]) {
|
|
572
|
+
boolcheckFailFlag = true;
|
|
573
|
+
var strRequiredMessage = '\u8BF7\u5F55\u5165\u7B2C' + (index + 1) + '\u884C\u7684' + (strName || name) + ';';
|
|
574
|
+
arrRequiredMessage.push(strRequiredMessage);
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
if (boolcheckFailFlag) {
|
|
578
|
+
if (strCheckFailRows) {
|
|
579
|
+
strCheckFailRows += ',' + (index + 1);
|
|
580
|
+
} else {
|
|
581
|
+
strCheckFailRows = '' + (index + 1);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
});
|
|
585
|
+
_modal2['default'].error({
|
|
586
|
+
title: '校验失败',
|
|
587
|
+
content: _react2['default'].createElement(
|
|
588
|
+
'div',
|
|
589
|
+
null,
|
|
590
|
+
arrRequiredMessage.map(function (item, index) {
|
|
591
|
+
return index === 0 ? _react2['default'].createElement(
|
|
592
|
+
'span',
|
|
593
|
+
null,
|
|
594
|
+
item
|
|
595
|
+
) : _react2['default'].createElement(
|
|
596
|
+
'span',
|
|
597
|
+
null,
|
|
598
|
+
_react2['default'].createElement('br', null),
|
|
599
|
+
item
|
|
600
|
+
);
|
|
601
|
+
})
|
|
602
|
+
)
|
|
603
|
+
});
|
|
604
|
+
console.error(arrRequiredMessage, strCheckFailRows);
|
|
605
|
+
return { arrRequiredMessage: arrRequiredMessage, strCheckFailRows: strCheckFailRows };
|
|
606
|
+
};
|
|
607
|
+
|
|
608
|
+
_this.touchFormatNum = function (num) {
|
|
609
|
+
return !isNaN(num) && isFinite(num) ? (0, _numeral2['default'])(num).format('0,0.00') : num || '';
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
var bidPureComponent = _this.props.bidPureComponent;
|
|
613
|
+
|
|
614
|
+
if (bidPureComponent && typeof bidPureComponent === 'function') {
|
|
615
|
+
bidPureComponent(_this);
|
|
616
|
+
}
|
|
617
|
+
_this.state = {
|
|
618
|
+
// 表格选择
|
|
619
|
+
arrSelectedIndexes: [], // 表格选择行索引
|
|
620
|
+
// 查询条件
|
|
621
|
+
filters: {},
|
|
622
|
+
// 排序--sort
|
|
623
|
+
sortColumn: null, // 排序列
|
|
624
|
+
sortDirection: null, // 排序方向
|
|
625
|
+
// 批量录入
|
|
626
|
+
visible: false // 隐藏批量录入Modal
|
|
627
|
+
};
|
|
628
|
+
return _this;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
Easy3wEditBigTable.prototype.componentDidMount = function componentDidMount() {};
|
|
632
|
+
|
|
633
|
+
Easy3wEditBigTable.prototype.componentWillUnmount = function componentWillUnmount() {};
|
|
634
|
+
// 绑定组件
|
|
635
|
+
|
|
636
|
+
// 获取列表
|
|
637
|
+
|
|
638
|
+
// 表格编辑
|
|
639
|
+
|
|
640
|
+
// 表头排序
|
|
641
|
+
|
|
642
|
+
// #region 表格选择
|
|
643
|
+
// 表格选择---选择
|
|
644
|
+
|
|
645
|
+
// 表格选择---取消选择
|
|
646
|
+
|
|
647
|
+
// #endregion 表格选择
|
|
648
|
+
// #region 右上角按钮处理--toolbar
|
|
649
|
+
// 新增
|
|
650
|
+
|
|
651
|
+
// 复制
|
|
652
|
+
|
|
653
|
+
// 删除
|
|
654
|
+
|
|
655
|
+
// 导入
|
|
656
|
+
|
|
657
|
+
// 导出--数据
|
|
658
|
+
|
|
659
|
+
// 批量录入--显示批量录入Modal
|
|
660
|
+
|
|
661
|
+
// 批量录入--隐藏批量录入Modal
|
|
662
|
+
|
|
663
|
+
// 批量录入--确认回调
|
|
664
|
+
|
|
665
|
+
// #endregion 右上角按钮处理--toolbar
|
|
666
|
+
// #region 数据处理
|
|
667
|
+
|
|
668
|
+
// 数据长度
|
|
669
|
+
|
|
670
|
+
// 表格数据函数
|
|
671
|
+
|
|
672
|
+
// 数据循环--处理前的数据
|
|
673
|
+
|
|
674
|
+
// 数据循环--处理后的数据
|
|
675
|
+
|
|
676
|
+
// 导入导出表头
|
|
677
|
+
|
|
678
|
+
// #endregion 数据处理
|
|
679
|
+
// #region 查询条件
|
|
680
|
+
// 筛选条件变更
|
|
681
|
+
|
|
682
|
+
// 清空筛选条件
|
|
683
|
+
|
|
684
|
+
// #endregion 查询条件
|
|
685
|
+
|
|
686
|
+
// #region toolbar处理
|
|
687
|
+
|
|
688
|
+
// #endregion toolbar处理
|
|
689
|
+
// #region 设置ReactDataGrid属性
|
|
690
|
+
|
|
691
|
+
// 创建columns
|
|
692
|
+
|
|
693
|
+
// #endregion 设置ReactDataGrid属性
|
|
694
|
+
// #region 校验数据
|
|
695
|
+
// 校验处理
|
|
696
|
+
|
|
697
|
+
// 校验数据
|
|
698
|
+
|
|
699
|
+
// #endregion 校验数据
|
|
700
|
+
// 转换数字
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
Easy3wEditBigTable.prototype.render = function render() {
|
|
704
|
+
var _this2 = this;
|
|
705
|
+
|
|
706
|
+
var visible = this.state.visible;
|
|
707
|
+
var _props = this.props,
|
|
708
|
+
totalFlag = _props.totalFlag,
|
|
709
|
+
objOtherProps = _props.objOtherProps,
|
|
710
|
+
objToolbarProps = _props.objToolbarProps;
|
|
711
|
+
|
|
712
|
+
var objReactDataGridProps = this.getReactDataGridProps();
|
|
713
|
+
var columns = this.createColumns(); // 表头
|
|
714
|
+
var objTotal = totalFlag ? this.touchLoopData() : {}; // 循环数据获取
|
|
715
|
+
return _react2['default'].createElement(
|
|
716
|
+
'div',
|
|
717
|
+
{ style: { backgroundColor: '#fff' } },
|
|
718
|
+
_react2['default'].createElement(_reactDataGrid2['default'], (0, _extends3['default'])({
|
|
719
|
+
ref: this.ReactDataGridRef,
|
|
720
|
+
columns: columns // 表头
|
|
721
|
+
// rows={rows}
|
|
722
|
+
, rowGetter: this.rowGetter // 获取行数据
|
|
723
|
+
, rowsCount: this.getSize() // 行数
|
|
724
|
+
, onGridSort: this.onGridSort
|
|
725
|
+
}, objReactDataGridProps, objOtherProps)),
|
|
726
|
+
totalFlag ? _react2['default'].createElement(
|
|
727
|
+
'div',
|
|
728
|
+
null,
|
|
729
|
+
objTotal && Object.keys(objTotal).map(function (key, index) {
|
|
730
|
+
return _react2['default'].createElement(
|
|
731
|
+
'span',
|
|
732
|
+
{ key: key },
|
|
733
|
+
index === 0 ? '' : ';',
|
|
734
|
+
_react2['default'].createElement(
|
|
735
|
+
'span',
|
|
736
|
+
null,
|
|
737
|
+
objTotal[key].name,
|
|
738
|
+
'\uFF1A'
|
|
739
|
+
),
|
|
740
|
+
_react2['default'].createElement(
|
|
741
|
+
'span',
|
|
742
|
+
null,
|
|
743
|
+
objTotal[key].numberFormat ? _this2.touchFormatNum(objTotal[key].value) : objTotal[key].value
|
|
744
|
+
)
|
|
745
|
+
);
|
|
746
|
+
})
|
|
747
|
+
) : '',
|
|
748
|
+
visible ? _react2['default'].createElement(_Easy3wEditBigTableForm2['default'] // 批量录入Modal
|
|
749
|
+
, { visible: visible // 是否显示
|
|
750
|
+
, objOtherParameters: (0, _extends3['default'])({}, objToolbarProps, { // 工具栏属性
|
|
751
|
+
columns: columns // 表头
|
|
752
|
+
}) // 其他参数
|
|
753
|
+
, bidPureComponent: function bidPureComponent(that) {
|
|
754
|
+
return _this2.bidPureComponent('Easy3wEditBigTableForm', that);
|
|
755
|
+
} // 绑定组件
|
|
756
|
+
, confirmCallback: this.confirmCallbackBatchEditBigTable,
|
|
757
|
+
hideModal: this.hideModalBatchEditBigTable
|
|
758
|
+
}) : ''
|
|
759
|
+
);
|
|
760
|
+
};
|
|
761
|
+
|
|
762
|
+
return Easy3wEditBigTable;
|
|
763
|
+
}(_react.Component);
|
|
764
|
+
|
|
765
|
+
exports['default'] = Easy3wEditBigTable;
|
|
766
|
+
module.exports = exports['default'];
|