easy3wui 1.5.63 → 1.5.64-beta.2
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/assets/editBigTable copy.css +17 -0
- package/assets/editBigTable.css +42 -13
- package/assets/index.css +40 -11
- package/lib/Easy3wDownLoad/Easy3wRCView.js +28 -65
- package/lib/Easy3wEditBigTable/Easy3wEditBigTableForm.js +17 -15
- package/lib/Easy3wEditBigTable/index.js +591 -1013
- package/lib/Easy3wEditBigTable copy/Easy3wEditBigTableForm.js +196 -0
- package/lib/Easy3wEditBigTable copy/Editors/EditorNumber.js +45 -0
- package/lib/Easy3wEditBigTable copy/Editors/EditorsDatePicker.js +86 -0
- package/lib/Easy3wEditBigTable copy/Editors/EditorsInputNumber.js +73 -0
- package/lib/Easy3wEditBigTable copy/index.js +920 -0
- package/package.json +4 -4
- package/lib/Easy3wEditBigTable/Editors/EditorNumber.js +0 -92
- package/lib/Easy3wEditBigTable/Editors/EditorsDatePicker.js +0 -168
- package/lib/Easy3wEditBigTable/Editors/EditorsInputNumber.js +0 -141
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
-
var _extends2 = require('babel-runtime/helpers/extends');
|
|
6
|
-
|
|
7
|
-
var _extends3 = _interopRequireDefault(_extends2);
|
|
8
|
-
|
|
9
5
|
var _modal = require('antd/lib/modal');
|
|
10
6
|
|
|
11
7
|
var _modal2 = _interopRequireDefault(_modal);
|
|
12
8
|
|
|
9
|
+
var _extends4 = require('babel-runtime/helpers/extends');
|
|
10
|
+
|
|
11
|
+
var _extends5 = _interopRequireDefault(_extends4);
|
|
12
|
+
|
|
13
13
|
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
|
14
14
|
|
|
15
15
|
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
|
@@ -65,57 +65,540 @@ var Easy3wEditBigTable = function (_Component) {
|
|
|
65
65
|
|
|
66
66
|
var _this = (0, _possibleConstructorReturn3['default'])(this, _Component.call(this, props));
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
_this.bidPureComponent = function (pureComponentName, that) {
|
|
69
|
+
_this[pureComponentName] = that;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
_this.touchDP = function () {
|
|
73
|
+
var rows = _this.props.rows;
|
|
74
|
+
|
|
75
|
+
var arrOriginalRows = [].concat(rows); // 原始数据
|
|
76
|
+
var _this$state = _this.state,
|
|
77
|
+
objFilters = _this$state.objFilters,
|
|
78
|
+
sortColumns = _this$state.sortColumns;
|
|
79
|
+
|
|
80
|
+
var arrRows = [].concat(arrOriginalRows);
|
|
81
|
+
if (objFilters.enabled) {
|
|
82
|
+
// 启用筛选条件
|
|
83
|
+
arrRows = _this.touchFilter(objFilters, arrOriginalRows);
|
|
84
|
+
}
|
|
85
|
+
if (sortColumns.length > 0) {
|
|
86
|
+
// 有排序字段
|
|
87
|
+
arrRows = _this.touchSort(sortColumns[0], arrOriginalRows);
|
|
88
|
+
}
|
|
89
|
+
return arrRows;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
_this.touchFilter = function (objFilters, arrRows) {
|
|
93
|
+
var objFiltersNew = (0, _extends5['default'])({}, objFilters);
|
|
94
|
+
delete objFiltersNew.enabled;
|
|
95
|
+
var arrFilterKeys = Object.keys(objFiltersNew);
|
|
96
|
+
return arrRows.filter(function (r) {
|
|
97
|
+
var filterFlag = true;
|
|
98
|
+
arrFilterKeys.map(function (key) {
|
|
99
|
+
filterFlag = filterFlag && (objFilters[key] || objFilters[key] === 0 ? r[key] && r[key].includes(objFilters[key]) : true);
|
|
100
|
+
return key;
|
|
101
|
+
});
|
|
102
|
+
return filterFlag;
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
_this.touchSort = function (objSortColumns, arrRows) {
|
|
107
|
+
var columnKey = objSortColumns.columnKey,
|
|
108
|
+
direction = objSortColumns.direction;
|
|
109
|
+
|
|
110
|
+
var dataType = 'number'; // 默认数据类型
|
|
111
|
+
_this.props.columns.map(function (column) {
|
|
112
|
+
if (column.key === columnKey) {
|
|
113
|
+
dataType = column.dataType || dataType; // 获取数据类型
|
|
114
|
+
}
|
|
115
|
+
return true;
|
|
116
|
+
});
|
|
117
|
+
return arrRows.sort(function (a, b) {
|
|
118
|
+
// const comparator = getComparator(objSortColumns.columnKey);
|
|
119
|
+
var compResult = 0; // 比较结果
|
|
120
|
+
switch (dataType) {
|
|
121
|
+
case 'string':
|
|
122
|
+
// 字符串排序
|
|
123
|
+
// #region 特殊值处理
|
|
124
|
+
if (a[columnKey] === null && b[columnKey] === null) {
|
|
125
|
+
compResult = 0;
|
|
126
|
+
} else if (a[columnKey] === null) {
|
|
127
|
+
compResult = 1;
|
|
128
|
+
} else if (b[columnKey] === null) {
|
|
129
|
+
compResult = -1;
|
|
130
|
+
} else if (a[columnKey] === undefined && b[columnKey] === undefined) {
|
|
131
|
+
compResult = 0;
|
|
132
|
+
} else if (a[columnKey] === undefined) {
|
|
133
|
+
compResult = 1;
|
|
134
|
+
} else if (b[columnKey] === undefined) {
|
|
135
|
+
compResult = -1;
|
|
136
|
+
// #endregion 特殊值处理
|
|
137
|
+
} else {
|
|
138
|
+
compResult = a[columnKey].localeCompare(b[columnKey]); // 字符串排序
|
|
139
|
+
}
|
|
140
|
+
break;
|
|
141
|
+
case 'boolean':
|
|
142
|
+
// 布尔值排序
|
|
143
|
+
compResult = a[columnKey] === b[columnKey] ? 0 : a[columnKey] ? 1 : -1; // 布尔值排序
|
|
144
|
+
break;
|
|
145
|
+
case 'date':
|
|
146
|
+
// 日期排序
|
|
147
|
+
compResult = new Date(a[columnKey]).getTime() - new Date(b[columnKey]).getTime(); // 日期排序
|
|
148
|
+
break;
|
|
149
|
+
case 'number':
|
|
150
|
+
// 数字排序
|
|
151
|
+
compResult = a[columnKey] - b[columnKey]; // 数字排序
|
|
152
|
+
break;
|
|
153
|
+
default:
|
|
154
|
+
// throw new Error(`unsupported sortColumn: "${columnKey}"`);
|
|
155
|
+
// 没有找到对应字段,返回0,参数位置不变
|
|
156
|
+
compResult = 0;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
if (compResult !== 0) {
|
|
160
|
+
return direction === 'ASC' ? compResult : -compResult;
|
|
161
|
+
} else {
|
|
162
|
+
return compResult;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
_this.touchcountTotal = function () {
|
|
168
|
+
var rowsView = [].concat(_this.arrRows);
|
|
169
|
+
var objTotal = {}; // 总计对象
|
|
170
|
+
rowsView.map(function (row, index) {
|
|
171
|
+
_this.props.columns.map(function (item, idx) {
|
|
172
|
+
var key = item.key,
|
|
173
|
+
totalFlag = item.totalFlag;
|
|
174
|
+
|
|
175
|
+
if (totalFlag && typeof totalFlag === 'boolean') {
|
|
176
|
+
if (index === 0) {
|
|
177
|
+
objTotal[key] = 0;
|
|
178
|
+
}
|
|
179
|
+
var intData = Number(row[key]) || 0;
|
|
180
|
+
objTotal[key] += intData;
|
|
181
|
+
}
|
|
182
|
+
return idx;
|
|
183
|
+
});
|
|
184
|
+
return index;
|
|
185
|
+
});
|
|
186
|
+
return objTotal;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
_this.touchFilters = function () {
|
|
190
|
+
var objFilters = _this.state.objFilters;
|
|
191
|
+
|
|
192
|
+
_this.setState({
|
|
193
|
+
objFilters: (0, _extends5['default'])({}, objFilters, {
|
|
194
|
+
enabled: !objFilters.enabled
|
|
195
|
+
})
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
_this.touchFiltersChange = function (fieldId, value) {
|
|
200
|
+
var _extends2;
|
|
201
|
+
|
|
202
|
+
var objFilters = _this.state.objFilters;
|
|
203
|
+
|
|
204
|
+
_this.setState({
|
|
205
|
+
objFilters: (0, _extends5['default'])({}, objFilters, (_extends2 = {}, _extends2[fieldId] = value, _extends2))
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
_this.touchClearFilters = function () {
|
|
210
|
+
var objFilters = _this.state.objFilters;
|
|
211
|
+
|
|
212
|
+
_this.setState({
|
|
213
|
+
objFilters: {
|
|
214
|
+
enabled: objFilters.enabled
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
_this.touchSortColumnsChange = function (sort) {
|
|
220
|
+
_this.setState({
|
|
221
|
+
sortColumns: sort
|
|
222
|
+
});
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
_this.getToolbar = function () {
|
|
226
|
+
var objToolbarProps = _this.props.objToolbarProps;
|
|
227
|
+
var addRowFlag = objToolbarProps.addRowFlag,
|
|
228
|
+
addRowButtonText = objToolbarProps.addRowButtonText,
|
|
229
|
+
touchAddRow = objToolbarProps.touchAddRow,
|
|
230
|
+
enableFilter = objToolbarProps.enableFilter,
|
|
231
|
+
filterRowsButtonText = objToolbarProps.filterRowsButtonText,
|
|
232
|
+
filterRowsClearButtonText = objToolbarProps.filterRowsClearButtonText,
|
|
233
|
+
arrBtn = objToolbarProps.arrBtn,
|
|
234
|
+
batchFlag = objToolbarProps.batchFlag,
|
|
235
|
+
batchButtonText = objToolbarProps.batchButtonText,
|
|
236
|
+
showModalBatchEditBigTable = objToolbarProps.showModalBatchEditBigTable,
|
|
237
|
+
saveFlag = objToolbarProps.saveFlag,
|
|
238
|
+
saveButtonText = objToolbarProps.saveButtonText,
|
|
239
|
+
deleteFlag = objToolbarProps.deleteFlag,
|
|
240
|
+
deleteButtonText = objToolbarProps.deleteButtonText,
|
|
241
|
+
deleteRow = objToolbarProps.deleteRow,
|
|
242
|
+
importFlag = objToolbarProps.importFlag,
|
|
243
|
+
importButtonText = objToolbarProps.importButtonText,
|
|
244
|
+
touchImport = objToolbarProps.touchImport,
|
|
245
|
+
exportFlag = objToolbarProps.exportFlag,
|
|
246
|
+
exportButtonText = objToolbarProps.exportButtonText,
|
|
247
|
+
touchExport = objToolbarProps.touchExport;
|
|
248
|
+
|
|
249
|
+
var toolbar = _react2['default'].createElement(
|
|
250
|
+
'div',
|
|
251
|
+
{ className: 'reactGridToolbar' },
|
|
252
|
+
addRowFlag ? _react2['default'].createElement(
|
|
253
|
+
'button',
|
|
254
|
+
{ type: 'button', className: 'btn', onClick: touchAddRow || _this.touchAddRow },
|
|
255
|
+
addRowButtonText || '新增'
|
|
256
|
+
) : '',
|
|
257
|
+
enableFilter ? _react2['default'].createElement(
|
|
258
|
+
'span',
|
|
259
|
+
null,
|
|
260
|
+
_react2['default'].createElement(
|
|
261
|
+
'button',
|
|
262
|
+
{ type: 'button', className: 'btn', onClick: _this.touchFilters },
|
|
263
|
+
filterRowsButtonText || '筛选'
|
|
264
|
+
),
|
|
265
|
+
_react2['default'].createElement(
|
|
266
|
+
'button',
|
|
267
|
+
{ type: 'button', className: 'btn', onClick: _this.touchClearFilters },
|
|
268
|
+
filterRowsClearButtonText || '清空筛选条件'
|
|
269
|
+
)
|
|
270
|
+
) : '',
|
|
271
|
+
arrBtn && arrBtn.map(function (btn) {
|
|
272
|
+
return _react2['default'].createElement(
|
|
273
|
+
'button',
|
|
274
|
+
{ type: 'button', className: 'btn', onClick: btn.onClick },
|
|
275
|
+
btn.text
|
|
276
|
+
);
|
|
277
|
+
}),
|
|
278
|
+
batchFlag ? _react2['default'].createElement(
|
|
279
|
+
'button',
|
|
280
|
+
{ type: 'button', className: 'btn', onClick: showModalBatchEditBigTable || _this.showModalBatchEditBigTable },
|
|
281
|
+
batchButtonText || '批量录入'
|
|
282
|
+
) : '',
|
|
283
|
+
saveFlag ? _react2['default'].createElement(
|
|
284
|
+
'button',
|
|
285
|
+
{ type: 'button', className: 'btn', onClick: _this.saveEditBigTableZJ },
|
|
286
|
+
saveButtonText || '保存'
|
|
287
|
+
) : '',
|
|
288
|
+
deleteFlag ? _react2['default'].createElement(
|
|
289
|
+
'button',
|
|
290
|
+
{ type: 'button', className: 'btn', onClick: deleteRow || _this.deleteRow },
|
|
291
|
+
deleteButtonText || '删除'
|
|
292
|
+
) : '',
|
|
293
|
+
importFlag ? _react2['default'].createElement(
|
|
294
|
+
'button',
|
|
295
|
+
{ type: 'button', className: 'btn', onClick: touchImport || _this.touchImport },
|
|
296
|
+
_react2['default'].createElement('input', { type: 'file', id: 'touchImportExcel', accept: '.xlsx, .xls', style: { display: 'none' } }),
|
|
297
|
+
importButtonText || '导入'
|
|
298
|
+
) : '',
|
|
299
|
+
exportFlag ? _react2['default'].createElement(
|
|
300
|
+
'button',
|
|
301
|
+
{ type: 'button', className: 'btn', onClick: touchExport || _this.touchExport },
|
|
302
|
+
exportButtonText || '导出'
|
|
303
|
+
) : ''
|
|
304
|
+
);
|
|
305
|
+
return toolbar;
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
_this.touchAddRow = function () {
|
|
309
|
+
var _ref;
|
|
310
|
+
|
|
311
|
+
var rowKey = _this.props.rowKey;
|
|
312
|
+
var rows = _this.props.rows;
|
|
313
|
+
|
|
314
|
+
_this.saveEditBigTableModelZJ('touchAddRow', [].concat(rows, [(_ref = {}, _ref[rowKey] = 'add_' + (rows.length - 1) + '_' + new Date().getTime(), _ref)]));
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
_this.touchCopyRow = function () {
|
|
318
|
+
var _this$props = _this.props,
|
|
319
|
+
rows = _this$props.rows,
|
|
320
|
+
rowKey = _this$props.rowKey;
|
|
321
|
+
var arrValuesInfo = _this.state.arrValuesInfo;
|
|
322
|
+
|
|
323
|
+
if (arrValuesInfo.length) {
|
|
324
|
+
var arrNew = []; // 复制的新数组
|
|
325
|
+
arrValuesInfo.forEach(function (item, index) {
|
|
326
|
+
var _extends3;
|
|
327
|
+
|
|
328
|
+
var newRow = (0, _extends5['default'])({}, item, (_extends3 = {}, _extends3[rowKey] = item[rowKey] + '_copy_' + index + '_' + new Date().getTime(), _extends3));
|
|
329
|
+
arrNew.push(newRow);
|
|
330
|
+
return item;
|
|
331
|
+
});
|
|
332
|
+
_this.saveEditBigTableModelZJ('touchCopyRow', [].concat(rows, arrNew));
|
|
333
|
+
} else {
|
|
334
|
+
_modal2['default'].error({
|
|
335
|
+
title: '错误',
|
|
336
|
+
content: '请选择要复制的行'
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
_this.deleteRow = function () {
|
|
342
|
+
var rows = _this.props.rows;
|
|
343
|
+
var _this$state2 = _this.state,
|
|
344
|
+
arrValues = _this$state2.arrValues,
|
|
345
|
+
arrValuesInfo = _this$state2.arrValuesInfo;
|
|
346
|
+
var _this$props2 = _this.props,
|
|
347
|
+
objToolbarProps = _this$props2.objToolbarProps,
|
|
348
|
+
rowKey = _this$props2.rowKey;
|
|
349
|
+
var deleteRowInterface = objToolbarProps.deleteRowInterface;
|
|
350
|
+
|
|
351
|
+
if (arrValues.length) {
|
|
352
|
+
var arrRows = []; // 删除数据后的新数组
|
|
353
|
+
rows.map(function (row) {
|
|
354
|
+
var flag = true;
|
|
355
|
+
arrValues.map(function (key) {
|
|
356
|
+
if (key === row[rowKey]) {
|
|
357
|
+
// 删除选择的行
|
|
358
|
+
flag = false;
|
|
359
|
+
}
|
|
360
|
+
return key;
|
|
361
|
+
});
|
|
362
|
+
if (flag) {
|
|
363
|
+
arrRows.push((0, _extends5['default'])({}, row));
|
|
364
|
+
}
|
|
365
|
+
return flag;
|
|
366
|
+
});
|
|
367
|
+
if (deleteRowInterface && typeof deleteRowInterface === 'function') {
|
|
368
|
+
// 删除行接口
|
|
369
|
+
deleteRowInterface(arrValuesInfo, arrValues);
|
|
370
|
+
} else {
|
|
371
|
+
_this.saveEditBigTableModelZJ('deleteRow', arrRows);
|
|
372
|
+
}
|
|
373
|
+
_this.onSelectedRowsChange([], []); // 选择行清空
|
|
374
|
+
} else {
|
|
375
|
+
_modal2['default'].error({
|
|
376
|
+
title: '错误',
|
|
377
|
+
content: '请选择要删除的行'
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
_this.getHearder = function () {
|
|
383
|
+
var _this$props3 = _this.props,
|
|
384
|
+
columns = _this$props3.columns,
|
|
385
|
+
arrColumnsKey = _this$props3.arrColumnsKey,
|
|
386
|
+
objSheet = _this$props3.objSheet,
|
|
387
|
+
arrColInfo = _this$props3.arrColInfo;
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
var arrColumnsKeyNew = ['id'];
|
|
391
|
+
var objSheetNew = { id: 'id' };
|
|
392
|
+
// 定义列信息,隐藏第一列(A列)
|
|
393
|
+
var arrColInfoNew = [{ hidden: true }];
|
|
394
|
+
columns.forEach(function (column) {
|
|
395
|
+
var key = column.key,
|
|
396
|
+
name = column.name,
|
|
397
|
+
hiddeKeys = column.hiddeKeys;
|
|
398
|
+
|
|
399
|
+
objSheetNew[key] = name;
|
|
400
|
+
arrColumnsKeyNew.push(key);
|
|
401
|
+
arrColInfoNew.push({});
|
|
402
|
+
if (hiddeKeys) {
|
|
403
|
+
var arrHiddenKeys = hiddeKeys.split(',');
|
|
404
|
+
arrHiddenKeys.map(function (item) {
|
|
405
|
+
if (item === key) {
|
|
406
|
+
// 隐藏列与显示列相同,则不添加入表头
|
|
407
|
+
} else {
|
|
408
|
+
objSheetNew[item] = item;
|
|
409
|
+
arrColumnsKeyNew.push(item);
|
|
410
|
+
arrColInfoNew.push({
|
|
411
|
+
hidden: true
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
return item;
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
return { arrColumnsKey: arrColumnsKey || arrColumnsKeyNew, objSheet: objSheet || objSheetNew, arrColInfo: arrColInfo || arrColInfoNew };
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
_this.touchImport = function () {
|
|
423
|
+
var input = document.getElementById('touchImportExcel');
|
|
424
|
+
input.onchange = function (e) {
|
|
425
|
+
var file = e.target.files[0];
|
|
426
|
+
var reader = new FileReader();
|
|
427
|
+
reader.onload = function (event) {
|
|
428
|
+
var _this$getHearder = _this.getHearder(),
|
|
429
|
+
arrColumnsKey = _this$getHearder.arrColumnsKey;
|
|
430
|
+
|
|
431
|
+
var data = event.target.result;
|
|
432
|
+
var workbook = _xlsx2['default'].read(data, { type: 'binary' });
|
|
433
|
+
var firstSheetName = workbook.SheetNames[0];
|
|
434
|
+
var worksheet = workbook.Sheets[firstSheetName];
|
|
435
|
+
var rows = _xlsx2['default'].utils.sheet_to_json(worksheet, { header: arrColumnsKey });
|
|
436
|
+
rows.shift(); // 去掉表头
|
|
437
|
+
// const rowsView = this.getRows(rows); // 表格显示数据
|
|
438
|
+
_this.saveEditBigTableModelZJ('touchImport', rows);
|
|
439
|
+
};
|
|
440
|
+
reader.readAsBinaryString(file);
|
|
441
|
+
};
|
|
442
|
+
input.click();
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
_this.touchExport = function () {
|
|
446
|
+
var _this$getHearder2 = _this.getHearder(),
|
|
447
|
+
objSheet = _this$getHearder2.objSheet,
|
|
448
|
+
arrColInfo = _this$getHearder2.arrColInfo;
|
|
449
|
+
|
|
450
|
+
var rowsView = [].concat(_this.arrRows);
|
|
451
|
+
// 计算 rowsView 中所有对象字段最多的长度
|
|
452
|
+
var maxFieldsLength = 0;
|
|
453
|
+
rowsView.forEach(function (item) {
|
|
454
|
+
var fieldsLength = Object.keys(item).length;
|
|
455
|
+
if (fieldsLength > maxFieldsLength) {
|
|
456
|
+
maxFieldsLength = fieldsLength;
|
|
457
|
+
}
|
|
458
|
+
return item;
|
|
459
|
+
});
|
|
460
|
+
if (maxFieldsLength > arrColInfo.length) {
|
|
461
|
+
for (var i = arrColInfo.length; i < maxFieldsLength;) {
|
|
462
|
+
arrColInfo.push({ hidden: true });
|
|
463
|
+
i += 1;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
// 创建工作簿和工作表
|
|
467
|
+
var worksheet = _xlsx2['default'].utils.json_to_sheet([objSheet].concat(rowsView), { skipHeader: true });
|
|
468
|
+
worksheet['!cols'] = arrColInfo;
|
|
469
|
+
var workbook = _xlsx2['default'].utils.book_new();
|
|
470
|
+
_xlsx2['default'].utils.book_append_sheet(workbook, worksheet, 'Sheet1');
|
|
471
|
+
|
|
472
|
+
// 生成Excel文件并触发下载
|
|
473
|
+
_xlsx2['default'].writeFile(workbook, 'exported_data.xlsx');
|
|
474
|
+
};
|
|
475
|
+
|
|
476
|
+
_this.showModalBatchEditBigTable = function () {
|
|
477
|
+
_this.setState({
|
|
478
|
+
visible: true // 显示批量录入Modal
|
|
479
|
+
});
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
_this.hideModalBatchEditBigTable = function () {
|
|
483
|
+
_this.setState({
|
|
484
|
+
visible: false // 隐藏批量录入Modal
|
|
485
|
+
});
|
|
486
|
+
};
|
|
487
|
+
|
|
488
|
+
_this.confirmCallbackBatchEditBigTable = function (objFormData, objColumn) {
|
|
489
|
+
var _this$props4 = _this.props,
|
|
490
|
+
rows = _this$props4.rows,
|
|
491
|
+
touchAutoCompute = _this$props4.touchAutoCompute,
|
|
492
|
+
rowKey = _this$props4.rowKey;
|
|
493
|
+
|
|
494
|
+
var rowsView = [].concat(_this.arrRows);
|
|
495
|
+
rowsView.map(function (row, index) {
|
|
496
|
+
var rowId = row[rowKey];
|
|
497
|
+
// const { [rowKey]: } = row;
|
|
498
|
+
var updated = (0, _extends5['default'])({}, objFormData);
|
|
499
|
+
if (touchAutoCompute && typeof touchAutoCompute === 'function') {
|
|
500
|
+
// 数据变更-自动计算行数据
|
|
501
|
+
// action 改变的动作类型,'CELL_UPDATE' 单元格更新,'CELL_BATCH_CHANGE' 单元格批量更新 CELL_UPDATE, COLUMN_FILL, COPY_PASTE, CELL_DRAG
|
|
502
|
+
// cellKey 改变的单元格的key
|
|
503
|
+
// fromRow 改变的单元格的原来行序号
|
|
504
|
+
// fromRowData 改变的单元格的原来行数据
|
|
505
|
+
// fromRowId 改变的单元格的原来行id(行唯一标识)
|
|
506
|
+
// rowIds 所有被选中的行id
|
|
507
|
+
// toRow 改变的单元格的新行序号
|
|
508
|
+
// toRowId 改变的单元格的新行id
|
|
509
|
+
// updated 改变的单元格的新值
|
|
510
|
+
updated = touchAutoCompute({
|
|
511
|
+
cellKey: objColumn.key,
|
|
512
|
+
fromRow: index,
|
|
513
|
+
toRow: index,
|
|
514
|
+
fromRowId: row[rowKey],
|
|
515
|
+
toRowId: row[rowKey],
|
|
516
|
+
rowIds: [row[rowKey]],
|
|
517
|
+
updated: updated,
|
|
518
|
+
action: 'CELL_BATCH_CHANGE',
|
|
519
|
+
fromRowData: row,
|
|
520
|
+
toRowData: row
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
rows[rowId] = (0, _extends5['default'])({}, rows[rowId], updated);
|
|
524
|
+
rowsView[index] = (0, _extends5['default'])({}, rowsView[index], updated);
|
|
525
|
+
return row;
|
|
526
|
+
});
|
|
527
|
+
_this.saveEditBigTableModelZJ('confirmCallbackBatchEditBigTable', rows);
|
|
528
|
+
};
|
|
529
|
+
|
|
530
|
+
_this.saveEditBigTableModelZJ = function (operationType, rows) {
|
|
531
|
+
var saveEditBigTableModel = _this.props.saveEditBigTableModel;
|
|
532
|
+
|
|
533
|
+
if (saveEditBigTableModel && typeof saveEditBigTableModel === 'function') {
|
|
534
|
+
// 数据变更-回调函数
|
|
535
|
+
saveEditBigTableModel(operationType, rows);
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
_this.saveEditBigTableZJ = function () {
|
|
540
|
+
var objToolbarProps = _this.props.objToolbarProps;
|
|
541
|
+
|
|
542
|
+
var _ref2 = objToolbarProps || {},
|
|
543
|
+
saveEditBigTable = _ref2.saveEditBigTable;
|
|
544
|
+
|
|
545
|
+
if (saveEditBigTable && typeof saveEditBigTable === 'function') {
|
|
546
|
+
// 数据变更-回调函数
|
|
547
|
+
saveEditBigTable('saveEditBigTableZJ', function () {
|
|
548
|
+
return _this.touchSetState({ saveFlag: true });
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
|
|
553
|
+
_this.touchSetSaveFlag = function (saveFlag) {
|
|
554
|
+
_this.setState({
|
|
555
|
+
saveFlag: saveFlag // 保存标识 true 已保存 false 未保存
|
|
556
|
+
});
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
_this.touchSelectedRowsChange = function (selectedRows) {
|
|
560
|
+
var rowKey = _this.props.rowKey;
|
|
561
|
+
|
|
562
|
+
var arrValuesInfo = Array.from(selectedRows);
|
|
563
|
+
var arrValues = [];
|
|
564
|
+
arrValuesInfo.map(function (item) {
|
|
565
|
+
arrValues.push(item[rowKey]);
|
|
566
|
+
return item;
|
|
567
|
+
});
|
|
568
|
+
_this.setState({
|
|
569
|
+
// 表格选择
|
|
570
|
+
selectedRows: selectedRows, // 选中的行
|
|
571
|
+
arrValues: arrValues, // 表格选择行索引
|
|
572
|
+
arrValuesInfo: arrValuesInfo // 表格选择行数据
|
|
573
|
+
});
|
|
574
|
+
};
|
|
69
575
|
|
|
70
576
|
var bidPureComponent = _this.props.bidPureComponent;
|
|
71
577
|
|
|
72
578
|
if (bidPureComponent && typeof bidPureComponent === 'function') {
|
|
73
579
|
bidPureComponent(_this);
|
|
74
580
|
}
|
|
75
|
-
var dataList = _this.props.dataList;
|
|
76
|
-
|
|
77
|
-
var rows = _this.touchLoopDataNum(dataList); // 表格数据
|
|
78
|
-
// const rowsView = this.getRows(rows); // 表格显示数据
|
|
79
581
|
_this.state = {
|
|
582
|
+
sortColumns: [], // 排序字段
|
|
583
|
+
objFilters: {
|
|
584
|
+
enabled: false // 是否启用筛选条件
|
|
585
|
+
}, // 筛选条件
|
|
80
586
|
// 表格选择
|
|
587
|
+
selectedRows: new Set(), // 选中的行
|
|
81
588
|
arrValues: [], // 表格选择行索引
|
|
82
|
-
arrValuesInfo: []
|
|
83
|
-
// 表格数据
|
|
84
|
-
rows: rows, // 表格数据 原始数据
|
|
85
|
-
rowsView: rows, // 表格数据 显示数据
|
|
86
|
-
// 表格列
|
|
87
|
-
// 查询条件
|
|
88
|
-
filters: {},
|
|
89
|
-
// 排序--sort
|
|
90
|
-
sortColumn: null, // 排序列
|
|
91
|
-
sortDirection: null, // 排序方向
|
|
92
|
-
// 批量录入
|
|
93
|
-
visible: false, // 隐藏批量录入Modal
|
|
94
|
-
// 保存标识
|
|
95
|
-
saveFlag: true // 保存标识 true 已保存 false 未保存
|
|
589
|
+
arrValuesInfo: [] // 表格选择行数据
|
|
96
590
|
};
|
|
97
591
|
return _this;
|
|
98
592
|
}
|
|
99
593
|
|
|
100
594
|
Easy3wEditBigTable.prototype.componentDidMount = function componentDidMount() {};
|
|
101
595
|
|
|
102
|
-
Easy3wEditBigTable.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
|
103
|
-
var dataUpdateTime = this.props.dataUpdateTime;
|
|
104
|
-
|
|
105
|
-
if (dataUpdateTime !== nextProps.dataUpdateTime) {
|
|
106
|
-
// const rows = this.getRows(); // 显示行数据
|
|
107
|
-
var rows = this.touchLoopDataNum(nextProps.dataList); // 表格数据
|
|
108
|
-
var rowsView = this.getRows(rows); // 表格显示数据
|
|
109
|
-
this.touchSetState({ rows: rows, rowsView: rowsView });
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
|
|
113
596
|
Easy3wEditBigTable.prototype.componentWillUnmount = function componentWillUnmount() {
|
|
114
597
|
var objToolbarProps = this.props.objToolbarProps;
|
|
115
598
|
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
unloadSaveFlag =
|
|
599
|
+
var _ref3 = objToolbarProps || {},
|
|
600
|
+
_ref3$unloadSaveFlag = _ref3.unloadSaveFlag,
|
|
601
|
+
unloadSaveFlag = _ref3$unloadSaveFlag === undefined ? true : _ref3$unloadSaveFlag;
|
|
119
602
|
// unloadSaveFlag 是否在卸载后保存 true 需要保存 false 不需要保存
|
|
120
603
|
|
|
121
604
|
|
|
@@ -143,154 +626,124 @@ var Easy3wEditBigTable = function (_Component) {
|
|
|
143
626
|
};
|
|
144
627
|
// 绑定组件
|
|
145
628
|
|
|
146
|
-
// 获取列表
|
|
147
|
-
|
|
148
|
-
// 表格编辑
|
|
149
629
|
|
|
150
|
-
// #region
|
|
151
|
-
//
|
|
630
|
+
// #region 数据处理
|
|
631
|
+
// 数据处理
|
|
152
632
|
|
|
153
|
-
//
|
|
633
|
+
// 筛选
|
|
154
634
|
|
|
155
|
-
//
|
|
635
|
+
// 排序
|
|
156
636
|
|
|
157
|
-
//
|
|
158
|
-
// #region 右上角按钮处理--toolbar
|
|
159
|
-
// 新增
|
|
637
|
+
// 计算总计数据
|
|
160
638
|
|
|
161
|
-
//
|
|
639
|
+
// #endregion 数据处理
|
|
162
640
|
|
|
163
|
-
//
|
|
641
|
+
// #region 筛选
|
|
642
|
+
// 切换筛选
|
|
164
643
|
|
|
165
|
-
//
|
|
644
|
+
// 筛选条件变更
|
|
166
645
|
|
|
167
|
-
//
|
|
646
|
+
// 清空筛选条件
|
|
168
647
|
|
|
169
|
-
//
|
|
648
|
+
// #endregion 筛选
|
|
170
649
|
|
|
171
|
-
//
|
|
650
|
+
// #region 排序字段变化时触发
|
|
172
651
|
|
|
173
|
-
//
|
|
652
|
+
// #endregion 排序字段变化时触发
|
|
174
653
|
|
|
175
|
-
// #
|
|
176
|
-
// #region 数据处理
|
|
177
|
-
// 表格视图数据
|
|
178
|
-
|
|
179
|
-
// 数据长度
|
|
654
|
+
// #region toolbar处理
|
|
180
655
|
|
|
181
|
-
//
|
|
656
|
+
// #endregion toolbar处理
|
|
182
657
|
|
|
183
|
-
//
|
|
658
|
+
// #region 右上角按钮处理--toolbar
|
|
659
|
+
// 新增
|
|
184
660
|
|
|
185
|
-
//
|
|
661
|
+
// 复制
|
|
186
662
|
|
|
187
|
-
//
|
|
663
|
+
// 删除
|
|
188
664
|
|
|
189
665
|
// 导入导出表头
|
|
190
666
|
|
|
191
|
-
//
|
|
192
|
-
|
|
193
|
-
// #region 查询条件
|
|
194
|
-
// 表头排序
|
|
195
|
-
|
|
196
|
-
// 获取查询内容
|
|
667
|
+
// 导入--数据
|
|
197
668
|
|
|
198
|
-
//
|
|
199
|
-
|
|
200
|
-
// 清空筛选条件
|
|
201
|
-
|
|
202
|
-
// #endregion 查询条件
|
|
669
|
+
// 导出--数据
|
|
203
670
|
|
|
204
|
-
//
|
|
671
|
+
// 批量录入--显示批量录入Modal
|
|
205
672
|
|
|
206
|
-
//
|
|
207
|
-
// #region 设置ReactDataGrid属性
|
|
208
|
-
// 在单元格设置为活动状态之前调用,返回一个布尔值以确定单元格是否可编辑
|
|
673
|
+
// 批量录入--隐藏批量录入Modal
|
|
209
674
|
|
|
210
|
-
//
|
|
675
|
+
// 批量录入--确认回调 ---待完善
|
|
211
676
|
|
|
212
|
-
//
|
|
677
|
+
// #endregion 右上角按钮处理--toolbar
|
|
213
678
|
|
|
214
|
-
// #endregion 设置ReactDataGrid属性
|
|
215
679
|
// #region 保存
|
|
216
|
-
//
|
|
680
|
+
// 保存表格数据-存model onGridRowsUpdated --> saveEditBigTableModel
|
|
217
681
|
|
|
218
|
-
//
|
|
682
|
+
// 保存表格数据-存后端
|
|
219
683
|
|
|
220
684
|
// 设置保存标识
|
|
221
685
|
|
|
222
686
|
// #endregion 保存
|
|
223
|
-
// #region 校验数据
|
|
224
|
-
// 校验处理
|
|
225
687
|
|
|
226
|
-
//
|
|
688
|
+
// #region 行选择
|
|
227
689
|
|
|
228
|
-
// #endregion 校验数据
|
|
229
|
-
// 转换数字
|
|
230
690
|
|
|
231
|
-
//
|
|
691
|
+
// #endregion 行选择
|
|
232
692
|
|
|
693
|
+
//
|
|
233
694
|
|
|
234
695
|
Easy3wEditBigTable.prototype.render = function render() {
|
|
235
696
|
var _this2 = this;
|
|
236
697
|
|
|
237
|
-
var
|
|
698
|
+
var _state = this.state,
|
|
699
|
+
visible = _state.visible,
|
|
700
|
+
objFilters = _state.objFilters,
|
|
701
|
+
sortColumns = _state.sortColumns,
|
|
702
|
+
selectedRows = _state.selectedRows;
|
|
238
703
|
var _props = this.props,
|
|
239
|
-
|
|
240
|
-
|
|
704
|
+
columns = _props.columns,
|
|
705
|
+
rows = _props.rows,
|
|
241
706
|
objToolbarProps = _props.objToolbarProps,
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
707
|
+
rowKey = _props.rowKey,
|
|
708
|
+
topTotalFlag = _props.topTotalFlag,
|
|
709
|
+
bottomTotalFlag = _props.bottomTotalFlag;
|
|
710
|
+
// #region 表格数据处理,排序(sort)、筛选(filter)
|
|
711
|
+
|
|
712
|
+
this.arrRows = this.touchDP();
|
|
713
|
+
var objPrps = {};
|
|
714
|
+
// #region 总计行
|
|
715
|
+
if (topTotalFlag) {
|
|
716
|
+
var arrTotalRows = [this.touchcountTotal()];
|
|
717
|
+
objPrps.topSummaryRows = arrTotalRows;
|
|
718
|
+
}
|
|
719
|
+
if (bottomTotalFlag) {
|
|
720
|
+
var _arrTotalRows = [this.touchcountTotal()];
|
|
721
|
+
objPrps.bottomSummaryRows = _arrTotalRows;
|
|
722
|
+
}
|
|
723
|
+
// #endregion 总计行
|
|
248
724
|
return _react2['default'].createElement(
|
|
249
725
|
'div',
|
|
250
726
|
{ className: (0, _classnames2['default'])(['Easy3wEditBigTable']) },
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
null,
|
|
254
|
-
strReactDataGridStyle || (strAddReactDataGridStyle || '') + '\n .custom-edit-cell { \n background-color: #f6ffed;\n }\n '
|
|
255
|
-
),
|
|
256
|
-
_react2['default'].createElement(_reactDataGrid2['default'], (0, _extends3['default'])({}, this.props, {
|
|
257
|
-
ref: this.ReactDataGridRef,
|
|
727
|
+
objToolbarProps ? this.getToolbar() : '',
|
|
728
|
+
_react2['default'].createElement(_reactDataGrid2['default'], (0, _extends5['default'])({}, objPrps, {
|
|
258
729
|
columns: columns // 表头
|
|
259
|
-
//
|
|
260
|
-
,
|
|
261
|
-
|
|
262
|
-
,
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
index === 0 ? '' : ';',
|
|
272
|
-
_react2['default'].createElement(
|
|
273
|
-
'span',
|
|
274
|
-
null,
|
|
275
|
-
objTotal[key].name,
|
|
276
|
-
'\uFF1A'
|
|
277
|
-
),
|
|
278
|
-
_react2['default'].createElement(
|
|
279
|
-
'span',
|
|
280
|
-
null,
|
|
281
|
-
' ',
|
|
282
|
-
objTotal[key].numberFormat ? _this2.touchFormatNum(objTotal[key].value) : objTotal[key].value,
|
|
283
|
-
' ',
|
|
284
|
-
objTotal[key].unit || ''
|
|
285
|
-
)
|
|
286
|
-
);
|
|
287
|
-
})
|
|
288
|
-
) : '',
|
|
730
|
+
, rows: this.arrRows // 行数据
|
|
731
|
+
, headerRowHeight: objFilters.enabled ? 70 : undefined // 表头高度
|
|
732
|
+
// 排序
|
|
733
|
+
, sortColumns: sortColumns // 排序字段
|
|
734
|
+
, onSortColumnsChange: this.touchSortColumnsChange // 排序字段变化时触发
|
|
735
|
+
// 行选择
|
|
736
|
+
, rowKeyGetter: function rowKeyGetter(row) {
|
|
737
|
+
return row[rowKey];
|
|
738
|
+
},
|
|
739
|
+
selectedRows: selectedRows,
|
|
740
|
+
onSelectedRowsChange: this.touchSelectedRowsChange
|
|
741
|
+
})),
|
|
289
742
|
visible ? _react2['default'].createElement(_Easy3wEditBigTableForm2['default'] // 批量录入Modal
|
|
290
743
|
, { visible: visible // 是否显示
|
|
291
|
-
, objOtherParameters:
|
|
744
|
+
, objOtherParameters: {
|
|
292
745
|
columns: columns // 表头
|
|
293
|
-
}
|
|
746
|
+
} // 其他参数
|
|
294
747
|
, bidPureComponent: function bidPureComponent(that) {
|
|
295
748
|
return _this2.bidPureComponent('Easy3wEditBigTableForm', that);
|
|
296
749
|
} // 绑定组件
|
|
@@ -304,882 +757,7 @@ var Easy3wEditBigTable = function (_Component) {
|
|
|
304
757
|
}(_react.Component);
|
|
305
758
|
|
|
306
759
|
Easy3wEditBigTable.defaultProps = {
|
|
307
|
-
rowKey: '
|
|
760
|
+
rowKey: 'id' // 表格主键 原始数据索引
|
|
308
761
|
};
|
|
309
|
-
|
|
310
|
-
var _initialiseProps = function _initialiseProps() {
|
|
311
|
-
var _this3 = this;
|
|
312
|
-
|
|
313
|
-
this.bidPureComponent = function (pureComponentName, that) {
|
|
314
|
-
_this3[pureComponentName] = that;
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
this.ReactDataGridRef = function (ref) {
|
|
318
|
-
if (ref) {
|
|
319
|
-
_this3.ReactDataGridRef = ref;
|
|
320
|
-
}
|
|
321
|
-
};
|
|
322
|
-
|
|
323
|
-
this.onGridRowsUpdated = function (objUpdated) {
|
|
324
|
-
var fromRow = objUpdated.fromRow,
|
|
325
|
-
toRow = objUpdated.toRow,
|
|
326
|
-
fromRowData = objUpdated.fromRowData,
|
|
327
|
-
action = objUpdated.action,
|
|
328
|
-
cellKey = objUpdated.cellKey;
|
|
329
|
-
var updated = objUpdated.updated;
|
|
330
|
-
|
|
331
|
-
if (action === 'COPY_PASTE') {
|
|
332
|
-
updated[cellKey] = fromRowData[cellKey];
|
|
333
|
-
}
|
|
334
|
-
var touchAutoCompute = _this3.props.touchAutoCompute;
|
|
335
|
-
var _state = _this3.state,
|
|
336
|
-
rows = _state.rows,
|
|
337
|
-
rowsView = _state.rowsView;
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
for (var i = fromRow; i <= toRow;) {
|
|
341
|
-
var objRowToUpdate = rowsView[i] || {};
|
|
342
|
-
// let rowToUpdate = rows[i];
|
|
343
|
-
// let updatedRow = update(rowToUpdate, {$merge: updated});
|
|
344
|
-
// rows[i] = updatedRow;
|
|
345
|
-
|
|
346
|
-
if (touchAutoCompute && typeof touchAutoCompute === 'function') {
|
|
347
|
-
// 数据变更-自动计算行数据
|
|
348
|
-
updated = touchAutoCompute((0, _extends3['default'])({}, objUpdated, { toRowData: (0, _extends3['default'])({}, objRowToUpdate) }));
|
|
349
|
-
}
|
|
350
|
-
var autoAddNumberIdxEdit = objRowToUpdate.autoAddNumber_idx_edit;
|
|
351
|
-
|
|
352
|
-
rows[autoAddNumberIdxEdit] = (0, _extends3['default'])({}, rows[autoAddNumberIdxEdit], updated);
|
|
353
|
-
rowsView[i] = (0, _extends3['default'])({}, objRowToUpdate, updated);
|
|
354
|
-
i += 1;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
_this3.onGridRowsUpdatedZJ('onGridRowsUpdated', rows, rowsView);
|
|
358
|
-
};
|
|
359
|
-
|
|
360
|
-
this.onRowsSelected = function (rows) {
|
|
361
|
-
var _state2 = _this3.state,
|
|
362
|
-
arrValues = _state2.arrValues,
|
|
363
|
-
arrValuesInfo = _state2.arrValuesInfo;
|
|
364
|
-
var _props2 = _this3.props,
|
|
365
|
-
rowKey = _props2.rowKey,
|
|
366
|
-
onRowsSelectedCb = _props2.onRowsSelectedCb;
|
|
367
|
-
|
|
368
|
-
var arrValuesNew = []; // 表格选择行索引
|
|
369
|
-
var arrValuesInfoNew = []; // 表格选择行数据
|
|
370
|
-
rows.map(function (r) {
|
|
371
|
-
arrValuesNew.push(r.row[rowKey]);
|
|
372
|
-
arrValuesInfoNew.push(r.row);
|
|
373
|
-
return r;
|
|
374
|
-
});
|
|
375
|
-
arrValues = arrValues.concat(arrValuesNew); // 表格选择行索引
|
|
376
|
-
arrValuesInfo = arrValuesInfo.concat(arrValuesInfoNew); // 表格选择行数据
|
|
377
|
-
if (onRowsSelectedCb && typeof onRowsSelectedCb === 'function') {
|
|
378
|
-
// 表格选择回调函数
|
|
379
|
-
onRowsSelectedCb('onRowsSelected', arrValues, arrValuesInfo, arrValuesNew, arrValuesInfoNew);
|
|
380
|
-
}
|
|
381
|
-
_this3.onSelectedRowsChange(arrValues, arrValuesInfo);
|
|
382
|
-
};
|
|
383
|
-
|
|
384
|
-
this.onRowsDeselected = function (rows) {
|
|
385
|
-
var arrValuesInfo = _this3.state.arrValuesInfo;
|
|
386
|
-
var _props3 = _this3.props,
|
|
387
|
-
rowKey = _props3.rowKey,
|
|
388
|
-
onRowsSelectedCb = _props3.onRowsSelectedCb;
|
|
389
|
-
|
|
390
|
-
var arrValuesNew = []; // 表格选择行索引
|
|
391
|
-
var arrValuesInfoNew = []; // 表格选择行数据
|
|
392
|
-
var arrSelected = []; // 已选择的行索引
|
|
393
|
-
var arrSelectedInfo = []; // 已选择的行数据
|
|
394
|
-
arrValuesInfo.filter(function (item) {
|
|
395
|
-
var flag = true;
|
|
396
|
-
rows.map(function (r) {
|
|
397
|
-
var row = r.row;
|
|
398
|
-
|
|
399
|
-
if (item[rowKey] === row[rowKey]) {
|
|
400
|
-
// 删除已取消选择的行
|
|
401
|
-
flag = false;
|
|
402
|
-
arrSelected.push(item[rowKey]);
|
|
403
|
-
arrSelectedInfo.push(item);
|
|
404
|
-
}
|
|
405
|
-
return r;
|
|
406
|
-
});
|
|
407
|
-
if (flag) {
|
|
408
|
-
arrValuesNew.push(item[rowKey]);
|
|
409
|
-
arrValuesInfoNew.push(item);
|
|
410
|
-
}
|
|
411
|
-
return flag;
|
|
412
|
-
});
|
|
413
|
-
if (onRowsSelectedCb && typeof onRowsSelectedCb === 'function') {
|
|
414
|
-
// 表格选择回调函数
|
|
415
|
-
onRowsSelectedCb('onRowsDeselected', arrValuesNew, arrValuesInfoNew, arrSelected, arrSelectedInfo);
|
|
416
|
-
}
|
|
417
|
-
_this3.onSelectedRowsChange(arrValuesNew, arrValuesInfoNew);
|
|
418
|
-
};
|
|
419
|
-
|
|
420
|
-
this.onSelectedRowsChange = function (arrValues, arrValuesInfo) {
|
|
421
|
-
_this3.setState({ arrValues: arrValues, arrValuesInfo: arrValuesInfo });
|
|
422
|
-
};
|
|
423
|
-
|
|
424
|
-
this.touchAddRow = function () {
|
|
425
|
-
var _state3 = _this3.state,
|
|
426
|
-
rows = _state3.rows,
|
|
427
|
-
rowsView = _state3.rowsView;
|
|
428
|
-
|
|
429
|
-
var intRows = rows.length;
|
|
430
|
-
var objNewRow = {
|
|
431
|
-
autoAddNumber_idx_edit: intRows || 0, // 自动添加序号 原始数据的索引
|
|
432
|
-
autoAddNumber_idx_view: intRows + 1 // 自动添加序号 显示数据的索引
|
|
433
|
-
};
|
|
434
|
-
var intRowsView = rowsView.length;
|
|
435
|
-
var objNewRowView = {
|
|
436
|
-
autoAddNumber_idx_edit: intRows || 0, // 自动添加序号 原始数据的索引
|
|
437
|
-
autoAddNumber_idx_view: intRowsView + 1 // 自动添加序号 显示数据的索引
|
|
438
|
-
};
|
|
439
|
-
// objNewRow[rowKey] = require('uuid/v1')(); // 自定义主键
|
|
440
|
-
_this3.onGridRowsUpdatedZJ('touchAddRow', [].concat(rows, [objNewRow]), [].concat(rowsView, [objNewRowView]));
|
|
441
|
-
};
|
|
442
|
-
|
|
443
|
-
this.touchCopyRow = function () {
|
|
444
|
-
var _state4 = _this3.state,
|
|
445
|
-
rows = _state4.rows,
|
|
446
|
-
rowsView = _state4.rowsView;
|
|
447
|
-
var arrValues = _this3.state.arrValues;
|
|
448
|
-
|
|
449
|
-
if (arrValues.length) {
|
|
450
|
-
var newArr = []; // 复制的新数组
|
|
451
|
-
arrValues.forEach(function (key) {
|
|
452
|
-
var newRow = (0, _extends3['default'])({}, rows[key]);
|
|
453
|
-
newArr.push(newRow);
|
|
454
|
-
return key;
|
|
455
|
-
});
|
|
456
|
-
rows = [].concat(rows, newArr);
|
|
457
|
-
rowsView = [].concat(rowsView, newArr);
|
|
458
|
-
_this3.onGridRowsUpdatedZJ('touchCopyRow', rows, rowsView);
|
|
459
|
-
} else {
|
|
460
|
-
_modal2['default'].error({
|
|
461
|
-
title: '错误',
|
|
462
|
-
content: '请选择要复制的行'
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
};
|
|
466
|
-
|
|
467
|
-
this.deleteRow = function () {
|
|
468
|
-
var rows = _this3.state.rows;
|
|
469
|
-
var _state5 = _this3.state,
|
|
470
|
-
arrValues = _state5.arrValues,
|
|
471
|
-
arrValuesInfo = _state5.arrValuesInfo;
|
|
472
|
-
var _props4 = _this3.props,
|
|
473
|
-
objToolbarProps = _props4.objToolbarProps,
|
|
474
|
-
rowKey = _props4.rowKey;
|
|
475
|
-
var deleteRowInterface = objToolbarProps.deleteRowInterface;
|
|
476
|
-
|
|
477
|
-
if (arrValues.length) {
|
|
478
|
-
var arrRows = []; // 删除数据后的新数组
|
|
479
|
-
// rows = rows.map((row, index) => {
|
|
480
|
-
rows.map(function (row, index) {
|
|
481
|
-
var flag = true;
|
|
482
|
-
arrValues.map(function (key) {
|
|
483
|
-
if (key === row[rowKey]) {
|
|
484
|
-
// 删除选择的行
|
|
485
|
-
flag = false;
|
|
486
|
-
}
|
|
487
|
-
return key;
|
|
488
|
-
});
|
|
489
|
-
if (flag) {
|
|
490
|
-
arrRows.push((0, _extends3['default'])({}, row, { autoAddNumber_idx_edit: index }));
|
|
491
|
-
}
|
|
492
|
-
return flag;
|
|
493
|
-
});
|
|
494
|
-
var rowsView = _this3.getRows(arrRows); // 表格显示数据
|
|
495
|
-
if (deleteRowInterface && typeof deleteRowInterface === 'function') {
|
|
496
|
-
// 删除行接口
|
|
497
|
-
deleteRowInterface(arrValuesInfo, arrValues);
|
|
498
|
-
}
|
|
499
|
-
_this3.onGridRowsUpdatedZJ('deleteRow', arrRows, rowsView);
|
|
500
|
-
_this3.onSelectedRowsChange([], []); // 选择行清空
|
|
501
|
-
} else {
|
|
502
|
-
_modal2['default'].error({
|
|
503
|
-
title: '错误',
|
|
504
|
-
content: '请选择要删除的行'
|
|
505
|
-
});
|
|
506
|
-
}
|
|
507
|
-
};
|
|
508
|
-
|
|
509
|
-
this.touchImport = function () {
|
|
510
|
-
var input = document.getElementById('touchImportExcel');
|
|
511
|
-
// input.type = 'file';
|
|
512
|
-
input.onchange = function (e) {
|
|
513
|
-
var file = e.target.files[0];
|
|
514
|
-
var reader = new FileReader();
|
|
515
|
-
reader.onload = function (event) {
|
|
516
|
-
var _getHearder = _this3.getHearder(),
|
|
517
|
-
arrColumnsKey = _getHearder.arrColumnsKey;
|
|
518
|
-
|
|
519
|
-
var data = event.target.result;
|
|
520
|
-
var workbook = _xlsx2['default'].read(data, { type: 'binary' });
|
|
521
|
-
var firstSheetName = workbook.SheetNames[0];
|
|
522
|
-
var worksheet = workbook.Sheets[firstSheetName];
|
|
523
|
-
var rows = _xlsx2['default'].utils.sheet_to_json(worksheet, { header: arrColumnsKey });
|
|
524
|
-
rows.shift(); // 去掉表头
|
|
525
|
-
var rowsView = _this3.getRows(rows); // 表格显示数据
|
|
526
|
-
_this3.onGridRowsUpdatedZJ('touchImport', rows, rowsView);
|
|
527
|
-
};
|
|
528
|
-
reader.readAsBinaryString(file);
|
|
529
|
-
};
|
|
530
|
-
input.click();
|
|
531
|
-
};
|
|
532
|
-
|
|
533
|
-
this.touchExport = function () {
|
|
534
|
-
var _getHearder2 = _this3.getHearder(),
|
|
535
|
-
objSheet = _getHearder2.objSheet,
|
|
536
|
-
arrColInfo = _getHearder2.arrColInfo;
|
|
537
|
-
// const filterDataList = this.getRows();
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
var rowsView = _this3.state.rowsView;
|
|
541
|
-
// 计算 rowsView 中所有对象字段最多的长度
|
|
542
|
-
|
|
543
|
-
var maxFieldsLength = 0;
|
|
544
|
-
rowsView.forEach(function (item) {
|
|
545
|
-
var fieldsLength = Object.keys(item).length;
|
|
546
|
-
if (fieldsLength > maxFieldsLength) {
|
|
547
|
-
maxFieldsLength = fieldsLength;
|
|
548
|
-
}
|
|
549
|
-
return item;
|
|
550
|
-
});
|
|
551
|
-
if (maxFieldsLength > arrColInfo.length) {
|
|
552
|
-
for (var i = arrColInfo.length; i < maxFieldsLength;) {
|
|
553
|
-
arrColInfo.push({ hidden: true });
|
|
554
|
-
i += 1;
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
// 创建工作簿和工作表
|
|
558
|
-
var worksheet = _xlsx2['default'].utils.json_to_sheet([objSheet].concat(rowsView), { skipHeader: true });
|
|
559
|
-
worksheet['!cols'] = arrColInfo;
|
|
560
|
-
var workbook = _xlsx2['default'].utils.book_new();
|
|
561
|
-
_xlsx2['default'].utils.book_append_sheet(workbook, worksheet, 'Sheet1');
|
|
562
|
-
|
|
563
|
-
// 生成Excel文件并触发下载
|
|
564
|
-
_xlsx2['default'].writeFile(workbook, 'exported_data.xlsx');
|
|
565
|
-
};
|
|
566
|
-
|
|
567
|
-
this.showModalBatchEditBigTable = function () {
|
|
568
|
-
_this3.setState({
|
|
569
|
-
visible: true // 显示批量录入Modal
|
|
570
|
-
});
|
|
571
|
-
};
|
|
572
|
-
|
|
573
|
-
this.hideModalBatchEditBigTable = function () {
|
|
574
|
-
_this3.setState({
|
|
575
|
-
visible: false // 隐藏批量录入Modal
|
|
576
|
-
});
|
|
577
|
-
};
|
|
578
|
-
|
|
579
|
-
this.confirmCallbackBatchEditBigTable = function (objFormData, objColumn) {
|
|
580
|
-
var _state6 = _this3.state,
|
|
581
|
-
rows = _state6.rows,
|
|
582
|
-
rowsView = _state6.rowsView;
|
|
583
|
-
var _props5 = _this3.props,
|
|
584
|
-
touchAutoCompute = _props5.touchAutoCompute,
|
|
585
|
-
rowKey = _props5.rowKey;
|
|
586
|
-
// const rows = this.getRows();
|
|
587
|
-
|
|
588
|
-
rowsView.map(function (row, index) {
|
|
589
|
-
var autoAddNumberIdxEdit = row.autoAddNumber_idx_edit;
|
|
590
|
-
|
|
591
|
-
var updated = (0, _extends3['default'])({}, objFormData);
|
|
592
|
-
if (touchAutoCompute && typeof touchAutoCompute === 'function') {
|
|
593
|
-
// 数据变更-自动计算行数据
|
|
594
|
-
// action 改变的动作类型,'CELL_UPDATE' 单元格更新,'CELL_BATCH_CHANGE' 单元格批量更新 CELL_UPDATE, COLUMN_FILL, COPY_PASTE, CELL_DRAG
|
|
595
|
-
// cellKey 改变的单元格的key
|
|
596
|
-
// fromRow 改变的单元格的原来行序号
|
|
597
|
-
// fromRowData 改变的单元格的原来行数据
|
|
598
|
-
// fromRowId 改变的单元格的原来行id(行唯一标识)
|
|
599
|
-
// rowIds 所有被选中的行id
|
|
600
|
-
// toRow 改变的单元格的新行序号
|
|
601
|
-
// toRowId 改变的单元格的新行id
|
|
602
|
-
// updated 改变的单元格的新值
|
|
603
|
-
updated = touchAutoCompute({
|
|
604
|
-
cellKey: objColumn.key,
|
|
605
|
-
fromRow: index,
|
|
606
|
-
toRow: index,
|
|
607
|
-
fromRowId: row[rowKey],
|
|
608
|
-
toRowId: row[rowKey],
|
|
609
|
-
rowIds: [row[rowKey]],
|
|
610
|
-
updated: updated,
|
|
611
|
-
action: 'CELL_BATCH_CHANGE',
|
|
612
|
-
fromRowData: row,
|
|
613
|
-
toRowData: row
|
|
614
|
-
});
|
|
615
|
-
}
|
|
616
|
-
rows[autoAddNumberIdxEdit] = (0, _extends3['default'])({}, rows[autoAddNumberIdxEdit], updated);
|
|
617
|
-
rowsView[index] = (0, _extends3['default'])({}, rowsView[index], updated);
|
|
618
|
-
return row;
|
|
619
|
-
});
|
|
620
|
-
_this3.onGridRowsUpdatedZJ('confirmCallbackBatchEditBigTable', rows, rowsView);
|
|
621
|
-
};
|
|
622
|
-
|
|
623
|
-
this.getRows = function (rows) {
|
|
624
|
-
var _state7 = _this3.state,
|
|
625
|
-
filters = _state7.filters,
|
|
626
|
-
sortColumn = _state7.sortColumn,
|
|
627
|
-
sortDirection = _state7.sortDirection;
|
|
628
|
-
// 预处理数据,替换 null或undefined 值, 避免查询时报错
|
|
629
|
-
|
|
630
|
-
var cleanedRows = (rows || _this3.state.rows).map(function (row) {
|
|
631
|
-
var cleanedRow = {};
|
|
632
|
-
Object.keys(row).forEach(function (key) {
|
|
633
|
-
if (row[key] === null || row[key] === undefined) {
|
|
634
|
-
cleanedRow[key] = '';
|
|
635
|
-
} else if (key === sortColumn) {
|
|
636
|
-
cleanedRow[key] = _this3.checkNum(row[key]) ? Number(row[key]) : row[key] || ''; // 排序字段类型转换
|
|
637
|
-
} else {
|
|
638
|
-
cleanedRow[key] = row[key];
|
|
639
|
-
}
|
|
640
|
-
});
|
|
641
|
-
return cleanedRow;
|
|
642
|
-
});
|
|
643
|
-
return Selectors.getRows({ rows: cleanedRows, filters: filters, sortColumn: sortColumn, sortDirection: sortDirection });
|
|
644
|
-
};
|
|
645
|
-
|
|
646
|
-
this.getSize = function () {
|
|
647
|
-
var rowsView = _this3.state.rowsView;
|
|
648
|
-
|
|
649
|
-
return rowsView.length;
|
|
650
|
-
};
|
|
651
|
-
|
|
652
|
-
this.rowGetter = function (rowIdx) {
|
|
653
|
-
var rowsView = _this3.state.rowsView;
|
|
654
|
-
// autoAddNumber_idx_view 自动添加序号 显示数据的索引
|
|
655
|
-
|
|
656
|
-
if (rowsView[rowIdx]) {
|
|
657
|
-
rowsView[rowIdx].autoAddNumber_idx_view = rowIdx + 1;
|
|
658
|
-
}
|
|
659
|
-
return rowsView[rowIdx];
|
|
660
|
-
};
|
|
661
|
-
|
|
662
|
-
this.touchLoopDataNum = function (dataList) {
|
|
663
|
-
var arrDataList = [];
|
|
664
|
-
dataList.map(function (row, index) {
|
|
665
|
-
// autoAddNumber_idx_edit 自动添加序号 原始数据的索引
|
|
666
|
-
arrDataList.push((0, _extends3['default'])({}, row, { autoAddNumber_idx_edit: index }));
|
|
667
|
-
return row;
|
|
668
|
-
});
|
|
669
|
-
return arrDataList;
|
|
670
|
-
};
|
|
671
|
-
|
|
672
|
-
this.touchSetState = function (objState, callback) {
|
|
673
|
-
// objState 要设置的state对象
|
|
674
|
-
// callback 回调函数 非必须
|
|
675
|
-
if (callback && typeof callback === 'function') {
|
|
676
|
-
_this3.setState(objState, callback);
|
|
677
|
-
} else {
|
|
678
|
-
_this3.setState(objState);
|
|
679
|
-
}
|
|
680
|
-
};
|
|
681
|
-
|
|
682
|
-
this.touchLoopData = function () {
|
|
683
|
-
var rowsView = _this3.state.rowsView;
|
|
684
|
-
|
|
685
|
-
var objTotal = {}; // 总计对象
|
|
686
|
-
rowsView.map(function (row, index) {
|
|
687
|
-
_this3.columns.map(function (item, idx) {
|
|
688
|
-
var name = item.name,
|
|
689
|
-
key = item.key,
|
|
690
|
-
totalFlag = item.totalFlag,
|
|
691
|
-
numberFormat = item.numberFormat,
|
|
692
|
-
unit = item.unit;
|
|
693
|
-
|
|
694
|
-
if (totalFlag && typeof totalFlag === 'boolean') {
|
|
695
|
-
if (index === 0) {
|
|
696
|
-
objTotal[key] = {}; // 初始值
|
|
697
|
-
objTotal[key].name = name; // 初始值
|
|
698
|
-
objTotal[key].value = 0; // 初始值
|
|
699
|
-
objTotal[key].numberFormat = numberFormat; // 格式化
|
|
700
|
-
objTotal[key].unit = unit; // 格式化
|
|
701
|
-
}
|
|
702
|
-
var intData = Number(row[key]) || 0;
|
|
703
|
-
objTotal[key].value = (objTotal[key].value || 0) + intData;
|
|
704
|
-
}
|
|
705
|
-
return idx;
|
|
706
|
-
});
|
|
707
|
-
return index;
|
|
708
|
-
});
|
|
709
|
-
return objTotal;
|
|
710
|
-
};
|
|
711
|
-
|
|
712
|
-
this.getHearder = function () {
|
|
713
|
-
var columns = _this3.props.columns;
|
|
714
|
-
var _props6 = _this3.props,
|
|
715
|
-
arrColumnsKey = _props6.arrColumnsKey,
|
|
716
|
-
objSheet = _props6.objSheet,
|
|
717
|
-
arrColInfo = _props6.arrColInfo;
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
var arrColumnsKeyNew = ['id'];
|
|
721
|
-
var objSheetNew = { id: 'id' };
|
|
722
|
-
// 定义列信息,隐藏第一列(A列)
|
|
723
|
-
var arrColInfoNew = [{ hidden: true }];
|
|
724
|
-
columns.forEach(function (column) {
|
|
725
|
-
var key = column.key,
|
|
726
|
-
name = column.name,
|
|
727
|
-
hiddeKeys = column.hiddeKeys;
|
|
728
|
-
|
|
729
|
-
objSheetNew[key] = name;
|
|
730
|
-
arrColumnsKeyNew.push(key);
|
|
731
|
-
arrColInfoNew.push({});
|
|
732
|
-
if (hiddeKeys) {
|
|
733
|
-
var arrHiddenKeys = hiddeKeys.split(',');
|
|
734
|
-
arrHiddenKeys.map(function (item) {
|
|
735
|
-
if (item === key) {
|
|
736
|
-
// 隐藏列与显示列相同,则不添加入表头
|
|
737
|
-
} else {
|
|
738
|
-
objSheetNew[item] = item;
|
|
739
|
-
arrColumnsKeyNew.push(item);
|
|
740
|
-
arrColInfoNew.push({
|
|
741
|
-
hidden: true
|
|
742
|
-
});
|
|
743
|
-
}
|
|
744
|
-
return item;
|
|
745
|
-
});
|
|
746
|
-
}
|
|
747
|
-
});
|
|
748
|
-
|
|
749
|
-
return { arrColumnsKey: arrColumnsKey || arrColumnsKeyNew, objSheet: objSheet || objSheetNew, arrColInfo: arrColInfo || arrColInfoNew };
|
|
750
|
-
};
|
|
751
|
-
|
|
752
|
-
this.onGridSort = function (sortColumn, sortDirection) {
|
|
753
|
-
_this3.setState({ sortColumn: sortColumn, sortDirection: sortDirection }, function () {
|
|
754
|
-
var rowsView = _this3.getRows();
|
|
755
|
-
_this3.touchSetState({ rowsView: rowsView });
|
|
756
|
-
});
|
|
757
|
-
};
|
|
758
|
-
|
|
759
|
-
this.getValidFilterValues = function (columnId) {
|
|
760
|
-
var rows = _this3.state.rows;
|
|
761
|
-
var columns = _this3.props.columns;
|
|
762
|
-
|
|
763
|
-
var column = columns.find(function (item) {
|
|
764
|
-
return item.key === columnId;
|
|
765
|
-
});
|
|
766
|
-
var options = column.options,
|
|
767
|
-
isTransformFlag = column.isTransformFlag;
|
|
768
|
-
|
|
769
|
-
var values = [];
|
|
770
|
-
rows.map(function (r) {
|
|
771
|
-
if (r[columnId] === '' || r[columnId] === null || r[columnId] === undefined) {
|
|
772
|
-
return r;
|
|
773
|
-
} else {
|
|
774
|
-
values.push(r[columnId]);
|
|
775
|
-
return r;
|
|
776
|
-
}
|
|
777
|
-
});
|
|
778
|
-
var arrOptionsLabel = [];
|
|
779
|
-
var arrValues = values.filter(function (item, i, a) {
|
|
780
|
-
var flag = i === a.indexOf(item);
|
|
781
|
-
if (flag && isTransformFlag) {
|
|
782
|
-
var strLabel = '';
|
|
783
|
-
var isLabel = false;
|
|
784
|
-
options.map(function (option) {
|
|
785
|
-
if (option.value === item) {
|
|
786
|
-
strLabel = option.label;
|
|
787
|
-
isLabel = true;
|
|
788
|
-
}
|
|
789
|
-
return option;
|
|
790
|
-
});
|
|
791
|
-
arrOptionsLabel.push(isLabel ? strLabel : item);
|
|
792
|
-
}
|
|
793
|
-
return flag;
|
|
794
|
-
});
|
|
795
|
-
// arrOptionsLabel label数组
|
|
796
|
-
// arrValues // value数组
|
|
797
|
-
return isTransformFlag ? arrOptionsLabel : arrValues;
|
|
798
|
-
};
|
|
799
|
-
|
|
800
|
-
this.handleFilterChange = function (filter) {
|
|
801
|
-
var newFilters = (0, _extends3['default'])({}, _this3.state.filters);
|
|
802
|
-
if (filter.filterTerm) {
|
|
803
|
-
var filterTerm = filter.filterTerm,
|
|
804
|
-
column = filter.column;
|
|
805
|
-
var options = column.options,
|
|
806
|
-
isTransformFlag = column.isTransformFlag;
|
|
807
|
-
|
|
808
|
-
if (options instanceof Array && options.length > 0 && filterTerm instanceof Array && isTransformFlag) {
|
|
809
|
-
var arrFilterTerm = [];
|
|
810
|
-
filterTerm.map(function (item) {
|
|
811
|
-
var isFlag = false;
|
|
812
|
-
options.map(function (option) {
|
|
813
|
-
if (item.label === option.label) {
|
|
814
|
-
arrFilterTerm.push({ value: option.value, label: option.value });
|
|
815
|
-
isFlag = true;
|
|
816
|
-
}
|
|
817
|
-
return option;
|
|
818
|
-
});
|
|
819
|
-
if (!isFlag) {
|
|
820
|
-
arrFilterTerm.push((0, _extends3['default'])({}, item));
|
|
821
|
-
}
|
|
822
|
-
return item;
|
|
823
|
-
});
|
|
824
|
-
filter.filterTerm = arrFilterTerm;
|
|
825
|
-
filter.rawValue = arrFilterTerm;
|
|
826
|
-
}
|
|
827
|
-
newFilters[filter.column.key] = filter;
|
|
828
|
-
} else {
|
|
829
|
-
delete newFilters[filter.column.key];
|
|
830
|
-
}
|
|
831
|
-
_this3.setState({ filters: newFilters }, function () {
|
|
832
|
-
var rowsView = _this3.getRows();
|
|
833
|
-
_this3.touchSetState({ rowsView: rowsView });
|
|
834
|
-
});
|
|
835
|
-
};
|
|
836
|
-
|
|
837
|
-
this.onClearFilters = function () {
|
|
838
|
-
// all filters removed
|
|
839
|
-
_this3.setState({ filters: {} }, function () {
|
|
840
|
-
var rowsView = _this3.getRows();
|
|
841
|
-
_this3.touchSetState({ rowsView: rowsView });
|
|
842
|
-
});
|
|
843
|
-
};
|
|
844
|
-
|
|
845
|
-
this.getToolbar = function () {
|
|
846
|
-
var objToolbarProps = _this3.props.objToolbarProps;
|
|
847
|
-
var addRowFlag = objToolbarProps.addRowFlag,
|
|
848
|
-
addRowButtonText = objToolbarProps.addRowButtonText,
|
|
849
|
-
touchAddRow = objToolbarProps.touchAddRow,
|
|
850
|
-
enableFilter = objToolbarProps.enableFilter,
|
|
851
|
-
filterRowsButtonText = objToolbarProps.filterRowsButtonText,
|
|
852
|
-
arrBtn = objToolbarProps.arrBtn,
|
|
853
|
-
batchFlag = objToolbarProps.batchFlag,
|
|
854
|
-
batchButtonText = objToolbarProps.batchButtonText,
|
|
855
|
-
showModalBatchEditBigTable = objToolbarProps.showModalBatchEditBigTable,
|
|
856
|
-
saveFlag = objToolbarProps.saveFlag,
|
|
857
|
-
saveButtonText = objToolbarProps.saveButtonText,
|
|
858
|
-
deleteFlag = objToolbarProps.deleteFlag,
|
|
859
|
-
deleteButtonText = objToolbarProps.deleteButtonText,
|
|
860
|
-
deleteRow = objToolbarProps.deleteRow,
|
|
861
|
-
importFlag = objToolbarProps.importFlag,
|
|
862
|
-
importButtonText = objToolbarProps.importButtonText,
|
|
863
|
-
touchImport = objToolbarProps.touchImport,
|
|
864
|
-
exportFlag = objToolbarProps.exportFlag,
|
|
865
|
-
exportButtonText = objToolbarProps.exportButtonText,
|
|
866
|
-
touchExport = objToolbarProps.touchExport;
|
|
867
|
-
|
|
868
|
-
var toolbarProps = {};
|
|
869
|
-
if (addRowFlag) {
|
|
870
|
-
// 新增按钮
|
|
871
|
-
toolbarProps.onAddRow = touchAddRow || _this3.touchAddRow;
|
|
872
|
-
toolbarProps.addRowButtonText = addRowButtonText || '新增';
|
|
873
|
-
} else if (enableFilter) {
|
|
874
|
-
// 筛选按钮
|
|
875
|
-
toolbarProps.enableFilter = enableFilter;
|
|
876
|
-
toolbarProps.filterRowsButtonText = filterRowsButtonText || '筛选';
|
|
877
|
-
}
|
|
878
|
-
var toolbar = _react2['default'].createElement(
|
|
879
|
-
_reactDataGridAddons.Toolbar,
|
|
880
|
-
(0, _extends3['default'])({}, toolbarProps, {
|
|
881
|
-
// 行数
|
|
882
|
-
numberOfRows: _this3.getSize()
|
|
883
|
-
}),
|
|
884
|
-
arrBtn && arrBtn.map(function (btn) {
|
|
885
|
-
return _react2['default'].createElement(
|
|
886
|
-
'button',
|
|
887
|
-
{ type: 'button', className: 'btn', onClick: btn.onClick },
|
|
888
|
-
btn.text
|
|
889
|
-
);
|
|
890
|
-
}),
|
|
891
|
-
batchFlag ? _react2['default'].createElement(
|
|
892
|
-
'button',
|
|
893
|
-
{ type: 'button', className: 'btn', onClick: showModalBatchEditBigTable || _this3.showModalBatchEditBigTable },
|
|
894
|
-
batchButtonText || '批量录入'
|
|
895
|
-
) : '',
|
|
896
|
-
saveFlag ? _react2['default'].createElement(
|
|
897
|
-
'button',
|
|
898
|
-
{ type: 'button', className: 'btn', onClick: _this3.saveEditBigTableZJ },
|
|
899
|
-
saveButtonText || '保存'
|
|
900
|
-
) : '',
|
|
901
|
-
deleteFlag ? _react2['default'].createElement(
|
|
902
|
-
'button',
|
|
903
|
-
{ type: 'button', className: 'btn', onClick: deleteRow || _this3.deleteRow },
|
|
904
|
-
deleteButtonText || '删除'
|
|
905
|
-
) : '',
|
|
906
|
-
importFlag ? _react2['default'].createElement(
|
|
907
|
-
'button',
|
|
908
|
-
{ type: 'button', className: 'btn', onClick: touchImport || _this3.touchImport },
|
|
909
|
-
_react2['default'].createElement('input', { type: 'file', id: 'touchImportExcel', accept: '.xlsx, .xls', style: { display: 'none' } }),
|
|
910
|
-
importButtonText || '导入'
|
|
911
|
-
) : '',
|
|
912
|
-
exportFlag ? _react2['default'].createElement(
|
|
913
|
-
'button',
|
|
914
|
-
{ type: 'button', className: 'btn', onClick: touchExport || _this3.touchExport },
|
|
915
|
-
exportButtonText || '导出'
|
|
916
|
-
) : ''
|
|
917
|
-
);
|
|
918
|
-
return toolbar;
|
|
919
|
-
};
|
|
920
|
-
|
|
921
|
-
this.onCheckCellIsEditable = function (obj) {
|
|
922
|
-
var column = obj.column;
|
|
923
|
-
// column:当前列的信息。
|
|
924
|
-
// idx:当前单元格的索引。
|
|
925
|
-
// row:当前行的数据。
|
|
926
|
-
// rowIdx:当前行的索引
|
|
927
|
-
|
|
928
|
-
var editable = column.editable,
|
|
929
|
-
editor = column.editor,
|
|
930
|
-
onCheckCellIsEditable = column.onCheckCellIsEditable;
|
|
931
|
-
|
|
932
|
-
var editableFlag = false; // 单元格是否可编辑 true 允许编辑 false 禁止编辑
|
|
933
|
-
if (editable || editor) {
|
|
934
|
-
// 单元格可编辑
|
|
935
|
-
editableFlag = true;
|
|
936
|
-
if (onCheckCellIsEditable && typeof onCheckCellIsEditable === 'function') {
|
|
937
|
-
editableFlag = onCheckCellIsEditable(obj); // 自定义单元格是否可编辑
|
|
938
|
-
}
|
|
939
|
-
} else {
|
|
940
|
-
editableFlag = false;
|
|
941
|
-
}
|
|
942
|
-
return editableFlag;
|
|
943
|
-
};
|
|
944
|
-
|
|
945
|
-
this.touchRowRenderer = function (obj) {
|
|
946
|
-
var _props7 = _this3.props,
|
|
947
|
-
onCheckCellIsEditable = _props7.onCheckCellIsEditable,
|
|
948
|
-
touchSetRowClass = _props7.touchSetRowClass,
|
|
949
|
-
touchSetRowStyle = _props7.touchSetRowStyle;
|
|
950
|
-
var renderBaseRow = obj.renderBaseRow,
|
|
951
|
-
columns = obj.columns,
|
|
952
|
-
row = obj.row,
|
|
953
|
-
idx = obj.idx;
|
|
954
|
-
|
|
955
|
-
var onCheckCellIsEditableNew = onCheckCellIsEditable || _this3.onCheckCellIsEditable;
|
|
956
|
-
var columnsNew = [];
|
|
957
|
-
// 单元格样式
|
|
958
|
-
columns.map(function (column, index) {
|
|
959
|
-
var touchSetCellClass = column.touchSetCellClass;
|
|
960
|
-
|
|
961
|
-
var cellClass = column.cellClass || '';
|
|
962
|
-
|
|
963
|
-
// 单元格样式
|
|
964
|
-
if (touchSetCellClass && typeof touchSetCellClass === 'function') {
|
|
965
|
-
cellClass += touchSetCellClass({ column: column, idx: idx, row: row, columnIndex: index });
|
|
966
|
-
}
|
|
967
|
-
// 编辑单元格样式
|
|
968
|
-
if (onCheckCellIsEditableNew({ column: column, idx: idx, row: row })) {
|
|
969
|
-
cellClass += 'custom-edit-cell'; // 编辑单元格样式
|
|
970
|
-
}
|
|
971
|
-
columnsNew.push((0, _extends3['default'])({}, column, { cellClass: cellClass }));
|
|
972
|
-
return column;
|
|
973
|
-
});
|
|
974
|
-
// 行样式-行class
|
|
975
|
-
var rowClass = '';
|
|
976
|
-
if (touchSetRowClass && typeof touchSetRowClass === 'function') {
|
|
977
|
-
rowClass = touchSetRowClass({ row: row, idx: idx, obj: obj });
|
|
978
|
-
}
|
|
979
|
-
// 行样式-行style
|
|
980
|
-
var rowStyle = {};
|
|
981
|
-
if (touchSetRowStyle && typeof touchSetRowStyle === 'function') {
|
|
982
|
-
rowStyle = touchSetRowStyle({ row: row, idx: idx, obj: obj });
|
|
983
|
-
}
|
|
984
|
-
|
|
985
|
-
return _react2['default'].createElement(
|
|
986
|
-
'span',
|
|
987
|
-
{ className: rowClass, style: rowStyle },
|
|
988
|
-
renderBaseRow((0, _extends3['default'])({}, obj, {
|
|
989
|
-
columns: [].concat(columnsNew)
|
|
990
|
-
}))
|
|
991
|
-
);
|
|
992
|
-
};
|
|
993
|
-
|
|
994
|
-
this.getReactDataGridProps = function () {
|
|
995
|
-
var arrValues = _this3.state.arrValues;
|
|
996
|
-
var _props8 = _this3.props,
|
|
997
|
-
enableCellSelect = _props8.enableCellSelect,
|
|
998
|
-
rowKey = _props8.rowKey,
|
|
999
|
-
objToolbarProps = _props8.objToolbarProps,
|
|
1000
|
-
rowSelection = _props8.rowSelection,
|
|
1001
|
-
onCheckCellIsEditable = _props8.onCheckCellIsEditable,
|
|
1002
|
-
touchRowRenderer = _props8.touchRowRenderer;
|
|
1003
|
-
|
|
1004
|
-
var objReactDataGridProps = {}; // ReactDataGrid属性对象
|
|
1005
|
-
// toolbar属性
|
|
1006
|
-
if (objToolbarProps) {
|
|
1007
|
-
var enableFilter = objToolbarProps.enableFilter;
|
|
1008
|
-
|
|
1009
|
-
objReactDataGridProps.toolbar = _this3.getToolbar();
|
|
1010
|
-
if (enableFilter) {
|
|
1011
|
-
objReactDataGridProps.onAddFilter = _this3.handleFilterChange;
|
|
1012
|
-
objReactDataGridProps.getValidFilterValues = _this3.getValidFilterValues;
|
|
1013
|
-
objReactDataGridProps.onClearFilters = _this3.onClearFilters;
|
|
1014
|
-
}
|
|
1015
|
-
}
|
|
1016
|
-
// 单元格选择
|
|
1017
|
-
if (enableCellSelect && typeof enableCellSelect === 'boolean') {
|
|
1018
|
-
objReactDataGridProps.enableCellSelect = enableCellSelect;
|
|
1019
|
-
objReactDataGridProps.onGridRowsUpdated = _this3.onGridRowsUpdated; // 表格编辑
|
|
1020
|
-
objReactDataGridProps.onCheckCellIsEditable = onCheckCellIsEditable || _this3.onCheckCellIsEditable; // 单元格是否可编辑
|
|
1021
|
-
// if (onCheckCellIsEditable) {
|
|
1022
|
-
// }
|
|
1023
|
-
objReactDataGridProps.rowRenderer = touchRowRenderer || _this3.touchRowRenderer; // 表格行渲染
|
|
1024
|
-
}
|
|
1025
|
-
// 表格行选择
|
|
1026
|
-
if (rowSelection && typeof rowSelection === 'boolean') {
|
|
1027
|
-
objReactDataGridProps.rowSelection = { // 表格选择
|
|
1028
|
-
showCheckbox: true,
|
|
1029
|
-
enableShiftSelect: true,
|
|
1030
|
-
onRowsSelected: _this3.onRowsSelected,
|
|
1031
|
-
onRowsDeselected: _this3.onRowsDeselected,
|
|
1032
|
-
selectBy: {
|
|
1033
|
-
keys: {
|
|
1034
|
-
rowKey: rowKey,
|
|
1035
|
-
values: arrValues
|
|
1036
|
-
}
|
|
1037
|
-
// indexes: this.state.arrValues,
|
|
1038
|
-
}
|
|
1039
|
-
};
|
|
1040
|
-
} else if (rowSelection) {
|
|
1041
|
-
objReactDataGridProps.rowSelection = rowSelection;
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
|
-
return objReactDataGridProps;
|
|
1045
|
-
};
|
|
1046
|
-
|
|
1047
|
-
this.createColumns = function () {
|
|
1048
|
-
var _props9 = _this3.props,
|
|
1049
|
-
autoAddNumber = _props9.autoAddNumber,
|
|
1050
|
-
columns = _props9.columns;
|
|
1051
|
-
// 自动添加序号
|
|
1052
|
-
|
|
1053
|
-
var columnsNew = [].concat(columns);
|
|
1054
|
-
if (autoAddNumber && typeof autoAddNumber === 'boolean') {
|
|
1055
|
-
var objColumns = columns && columns.length > 0 ? columns[0] : {};
|
|
1056
|
-
var _objColumns$frozen = objColumns.frozen,
|
|
1057
|
-
frozen = _objColumns$frozen === undefined ? false : _objColumns$frozen;
|
|
1058
|
-
|
|
1059
|
-
columnsNew = [{ name: '序号', key: 'autoAddNumber_idx_view', resizable: true, width: 50, frozen: frozen }].concat(columnsNew);
|
|
1060
|
-
}
|
|
1061
|
-
_this3.columns = columnsNew;
|
|
1062
|
-
return columnsNew;
|
|
1063
|
-
};
|
|
1064
|
-
|
|
1065
|
-
this.onGridRowsUpdatedZJ = function (operationType, rows, rowsView) {
|
|
1066
|
-
var onGridRowsUpdated = _this3.props.onGridRowsUpdated;
|
|
1067
|
-
|
|
1068
|
-
if (onGridRowsUpdated && typeof onGridRowsUpdated === 'function') {
|
|
1069
|
-
// 数据变更-回调函数
|
|
1070
|
-
onGridRowsUpdated(operationType, rows);
|
|
1071
|
-
_this3.touchSetState({
|
|
1072
|
-
rows: rows, // 表格数据
|
|
1073
|
-
rowsView: rowsView, // 表格视图数据
|
|
1074
|
-
saveFlag: false // 保存标识 true 已保存 false 未保存
|
|
1075
|
-
});
|
|
1076
|
-
}
|
|
1077
|
-
};
|
|
1078
|
-
|
|
1079
|
-
this.saveEditBigTableZJ = function () {
|
|
1080
|
-
var objToolbarProps = _this3.props.objToolbarProps;
|
|
1081
|
-
|
|
1082
|
-
var _ref2 = objToolbarProps || {},
|
|
1083
|
-
saveEditBigTable = _ref2.saveEditBigTable;
|
|
1084
|
-
|
|
1085
|
-
if (saveEditBigTable && typeof saveEditBigTable === 'function') {
|
|
1086
|
-
// 数据变更-回调函数
|
|
1087
|
-
saveEditBigTable('saveEditBigTableZJ', function () {
|
|
1088
|
-
return _this3.touchSetState({ saveFlag: true });
|
|
1089
|
-
});
|
|
1090
|
-
}
|
|
1091
|
-
};
|
|
1092
|
-
|
|
1093
|
-
this.touchSetSaveFlag = function (saveFlag) {
|
|
1094
|
-
_this3.setState({
|
|
1095
|
-
saveFlag: saveFlag // 保存标识 true 已保存 false 未保存
|
|
1096
|
-
});
|
|
1097
|
-
};
|
|
1098
|
-
|
|
1099
|
-
this.checkReactDataGridData = function () {
|
|
1100
|
-
var clearFiltersFlag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
1101
|
-
|
|
1102
|
-
if (clearFiltersFlag) {
|
|
1103
|
-
_this3.onClearFilters(); // 清空筛选条件
|
|
1104
|
-
}
|
|
1105
|
-
_this3.checkData(); // 校验数据
|
|
1106
|
-
};
|
|
1107
|
-
|
|
1108
|
-
this.checkData = function () {
|
|
1109
|
-
var rows = _this3.state.rows;
|
|
1110
|
-
var columns = _this3.props.columns;
|
|
1111
|
-
|
|
1112
|
-
var strCheckFailRows = ''; // 校验失败的行号
|
|
1113
|
-
var arrRequiredMessage = []; // 必填提示信息
|
|
1114
|
-
rows.forEach(function (row, rowIndex) {
|
|
1115
|
-
var boolcheckFailFlag = false; // 校验失败标识
|
|
1116
|
-
columns.forEach(function (column, columnIndex) {
|
|
1117
|
-
var key = column.key,
|
|
1118
|
-
strName = column.strName,
|
|
1119
|
-
name = column.name;
|
|
1120
|
-
|
|
1121
|
-
var editable = _this3.onCheckCellIsEditable({ column: column, idx: columnIndex, row: row, rowIdx: rowIndex });
|
|
1122
|
-
if (editable) {
|
|
1123
|
-
// 编辑的单元格
|
|
1124
|
-
var required = column.required;
|
|
1125
|
-
|
|
1126
|
-
if (required && typeof required === 'function') {
|
|
1127
|
-
required = required({ row: row, rowIndex: rowIndex, column: column, columnIndex: columnIndex });
|
|
1128
|
-
}
|
|
1129
|
-
// key 字段
|
|
1130
|
-
// required 必填
|
|
1131
|
-
// strName 字串名称
|
|
1132
|
-
// name 字段名称
|
|
1133
|
-
if (required && !row[key]) {
|
|
1134
|
-
boolcheckFailFlag = true;
|
|
1135
|
-
var strRequiredMessage = '\u8BF7\u5F55\u5165\u7B2C' + (rowIndex + 1) + '\u884C\u7684' + (strName || name) + ';';
|
|
1136
|
-
arrRequiredMessage.push(strRequiredMessage);
|
|
1137
|
-
}
|
|
1138
|
-
}
|
|
1139
|
-
});
|
|
1140
|
-
if (boolcheckFailFlag) {
|
|
1141
|
-
if (strCheckFailRows) {
|
|
1142
|
-
strCheckFailRows += ',' + (rowIndex + 1);
|
|
1143
|
-
} else {
|
|
1144
|
-
strCheckFailRows = '' + (rowIndex + 1);
|
|
1145
|
-
}
|
|
1146
|
-
}
|
|
1147
|
-
});
|
|
1148
|
-
if (strCheckFailRows) {
|
|
1149
|
-
// 校验失败
|
|
1150
|
-
_modal2['default'].error({
|
|
1151
|
-
title: '校验失败',
|
|
1152
|
-
content: _react2['default'].createElement(
|
|
1153
|
-
'div',
|
|
1154
|
-
null,
|
|
1155
|
-
arrRequiredMessage.map(function (item, index) {
|
|
1156
|
-
return index === 0 ? _react2['default'].createElement(
|
|
1157
|
-
'span',
|
|
1158
|
-
null,
|
|
1159
|
-
item
|
|
1160
|
-
) : _react2['default'].createElement(
|
|
1161
|
-
'span',
|
|
1162
|
-
null,
|
|
1163
|
-
_react2['default'].createElement('br', null),
|
|
1164
|
-
item
|
|
1165
|
-
);
|
|
1166
|
-
})
|
|
1167
|
-
)
|
|
1168
|
-
});
|
|
1169
|
-
console.error(arrRequiredMessage, strCheckFailRows);
|
|
1170
|
-
}
|
|
1171
|
-
return { arrRequiredMessage: arrRequiredMessage, strCheckFailRows: strCheckFailRows };
|
|
1172
|
-
};
|
|
1173
|
-
|
|
1174
|
-
this.touchFormatNum = function (num) {
|
|
1175
|
-
return _this3.checkNum(num) ? (0, _numeral2['default'])(num).format('0,0.00') : num || '';
|
|
1176
|
-
};
|
|
1177
|
-
|
|
1178
|
-
this.checkNum = function (num) {
|
|
1179
|
-
return num !== '' && !isNaN(num) && isFinite(num);
|
|
1180
|
-
// return num !== '' && !isNaN(num) && isFinite(num) ? true : false;
|
|
1181
|
-
};
|
|
1182
|
-
};
|
|
1183
|
-
|
|
1184
762
|
exports['default'] = Easy3wEditBigTable;
|
|
1185
763
|
module.exports = exports['default'];
|