zmdms-webui 1.9.7 → 1.9.9
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/dist/es/applayoutheader/tabs/index.js +3 -2
- package/dist/es/button/buttonDownload.js +4 -4
- package/dist/es/button/buttonExport.js +7 -7
- package/dist/es/button/buttonPreview.js +2 -2
- package/dist/es/dynamicsetting/dynamicDrawer.js +4 -3
- package/dist/es/dynamicsetting/index.css +1 -1
- package/dist/es/electronsignatures/dgcomponents/useDg.js +7 -7
- package/dist/es/electronsignatures/electroncomponents/electron-seal-batch-download.js +7 -6
- package/dist/es/electronsignatures/electroncomponents/useCheckedSealInfoList.js +3 -3
- package/dist/es/electronsignatures/electroncomponents/useFetchElectronData.js +3 -3
- package/dist/es/electronsignatures/electroncomponents/utils.js +9 -9
- package/dist/es/electronsignatures/filecomponents/file-upload.js +8 -7
- package/dist/es/electronsignatures/hooks/useParseElectronSetting.js +9 -9
- package/dist/es/electronsignatures/hooks/useParseQunjListData.js +4 -4
- package/dist/es/electronsignatures/index.js +20 -19
- package/dist/es/electronsignatures/qunjcomponents/code-modal.js +5 -5
- package/dist/es/electronsignatures/qunjcomponents/useFetchQunjData.js +4 -4
- package/dist/es/login/forget-password.js +10 -10
- package/dist/es/message/index.d.ts +5 -0
- package/dist/es/message/index.js +70 -0
- package/dist/es/modal/modal.js +4 -3
- package/dist/es/table/components/FilterDropdown.js +3 -2
- package/dist/es/table/components/table-header-operation/FillDown.js +3 -2
- package/dist/es/table/excel.js +173 -56
- package/dist/es/table/hooks.js +10 -1
- package/dist/es/table/interface.d.ts +16 -1
- package/dist/es/table/table.js +6 -2
- package/dist/es/table/useColumns.js +11 -1
- package/dist/es/table/useDynamicListByColumns.js +6 -4
- package/dist/es/table/utils.js +5 -5
- package/dist/es/uploadlist/hooks.js +10 -10
- package/dist/es/uploadlist/uploadList.js +4 -3
- package/dist/es/uploadlist/uploadListDetail.js +3 -2
- package/dist/es/uploadlist/uploadTable.js +3 -2
- package/dist/es/uploadlist/utils.js +2 -2
- package/dist/index.build.d.ts +2 -1
- package/dist/index.dark.css +1 -1
- package/dist/index.default.css +1 -1
- package/dist/index.es.js +2 -1
- package/package.json +1 -1
- package/dist/es/microloading/index.css +0 -1
- package/dist/es/modal/index.css +0 -1
- package/dist/es/notauthpage/index.css +0 -0
- package/dist/es/notroutepage/index.css +0 -0
- package/dist/es/pagination/index.css +0 -1
- package/dist/es/placeholder/index.css +0 -1
- package/dist/es/print/index.css +0 -1
- package/dist/es/select/index.css +0 -1
- package/dist/es/table/index.css +0 -1
- package/dist/es/tabs/index.css +0 -1
- package/dist/es/tag/index.css +0 -1
- package/dist/es/title/index.css +0 -1
- package/dist/es/tree/index.css +0 -1
- package/dist/es/treeselect/index.css +0 -1
- package/dist/es/uploadlist/index.css +0 -1
- package/dist/es/watermark/index.css +0 -1
- package/dist/es/zttransfer/index.css +0 -1
package/dist/es/table/excel.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { __spreadArray, __assign, __awaiter, __generator } from '../_virtual/_tslib.js';
|
|
2
2
|
import ExcelJS from '../node_modules/exceljs/dist/exceljs.min.js';
|
|
3
|
-
import { useMergeKeys } from './hooks.js';
|
|
4
|
-
import { useMemo } from 'react';
|
|
3
|
+
import { useMergeKeys, useNumKeys } from './hooks.js';
|
|
5
4
|
import { useMemoizedFn } from 'ahooks';
|
|
6
5
|
import { IS_SUMMARY, MERGE_ROW_SPANS } from './constant.js';
|
|
6
|
+
import { exactRound } from 'zmdms-utils';
|
|
7
|
+
import dayjs from 'dayjs';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* 使用 ExcelJS + 后处理添加批注
|
|
10
11
|
* 导出Excel,支持维度合并和小计,以及批注功能
|
|
11
12
|
*/
|
|
12
|
-
function exportToExcelWithMergeAndComments(records, columns, mergeKeys,
|
|
13
|
+
function exportToExcelWithMergeAndComments(records, columns, mergeKeys, numKeys, fileName, sheetName, columnHeaders, summaryConfig, topDescription, topDescriptionRowHeight) {
|
|
13
14
|
var _a;
|
|
14
15
|
var _this = this;
|
|
15
16
|
if (fileName === void 0) { fileName = "export.xlsx"; }
|
|
@@ -17,9 +18,9 @@ function exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryK
|
|
|
17
18
|
if (!records || records.length === 0) {
|
|
18
19
|
throw new Error("没有数据可导出");
|
|
19
20
|
}
|
|
20
|
-
var processedData = records;
|
|
21
|
+
var processedData = applyPrecisionToRecords(records, columns);
|
|
21
22
|
// 准备Excel数据
|
|
22
|
-
var excelData = prepareExcelData(processedData, columns, columnHeaders);
|
|
23
|
+
var excelData = prepareExcelData(processedData, columns, columnHeaders, topDescription);
|
|
23
24
|
// 创建工作簿
|
|
24
25
|
var workbook = new ExcelJS.Workbook();
|
|
25
26
|
// 计算末尾合计行
|
|
@@ -62,7 +63,7 @@ function exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryK
|
|
|
62
63
|
// 设置冻结窗格
|
|
63
64
|
setWorksheetFreeze(worksheet, excelData.leafColumns, excelData.headerRowCount);
|
|
64
65
|
// 添加样式
|
|
65
|
-
applyExcelStyles(worksheet, dataForStyles,
|
|
66
|
+
applyExcelStyles(worksheet, dataForStyles, numKeys, excelData.leafColumns, excelData.headerRowCount, !!excelData.topDescription, topDescriptionRowHeight);
|
|
66
67
|
// 添加批注 - 使用改进的方法
|
|
67
68
|
addCommentsToWorksheet(worksheet, dataForStyles, excelData.leafColumns, excelData.headerRowCount);
|
|
68
69
|
// 导出文件
|
|
@@ -101,6 +102,36 @@ function exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryK
|
|
|
101
102
|
fileName: fileName,
|
|
102
103
|
};
|
|
103
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* 根据列上的 precision 配置,格式化记录中的数值字段
|
|
107
|
+
*/
|
|
108
|
+
function applyPrecisionToRecords(records, columns) {
|
|
109
|
+
if (!Array.isArray(records) || !Array.isArray(columns))
|
|
110
|
+
return records || [];
|
|
111
|
+
var precisionMap = {};
|
|
112
|
+
columns.forEach(function (col) {
|
|
113
|
+
if (col && typeof col.dataIndex === "string") {
|
|
114
|
+
var precision = col.precision;
|
|
115
|
+
if (typeof precision === "number") {
|
|
116
|
+
precisionMap[col.dataIndex] = { precision: precision };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
if (Object.keys(precisionMap).length === 0)
|
|
121
|
+
return records;
|
|
122
|
+
return records.map(function (record) {
|
|
123
|
+
if (record == null || typeof record !== "object")
|
|
124
|
+
return record;
|
|
125
|
+
var next = __assign({}, record);
|
|
126
|
+
for (var key in precisionMap) {
|
|
127
|
+
if (!Object.prototype.hasOwnProperty.call(next, key))
|
|
128
|
+
continue;
|
|
129
|
+
var precision = precisionMap[key].precision;
|
|
130
|
+
next[key] = exactRound(next[key], precision);
|
|
131
|
+
}
|
|
132
|
+
return next;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
104
135
|
/**
|
|
105
136
|
* 改进的批注添加函数 - 使用 ExcelJS 的正确方法
|
|
106
137
|
*/
|
|
@@ -196,7 +227,7 @@ function setWorksheetFreeze(worksheet, leafColumns, headerRowCount) {
|
|
|
196
227
|
console.error("设置冻结窗格失败:", e);
|
|
197
228
|
}
|
|
198
229
|
}
|
|
199
|
-
function prepareExcelData(processedData, columns, columnHeaders) {
|
|
230
|
+
function prepareExcelData(processedData, columns, columnHeaders, topDescription) {
|
|
200
231
|
var getMaxDepth = function (cols) {
|
|
201
232
|
var max = 0;
|
|
202
233
|
var dfs = function (nodes, depth) {
|
|
@@ -220,10 +251,6 @@ function prepareExcelData(processedData, columns, columnHeaders) {
|
|
|
220
251
|
}
|
|
221
252
|
return 1;
|
|
222
253
|
};
|
|
223
|
-
var maxDepth = getMaxDepth(columns);
|
|
224
|
-
var headerRows = Array.from({ length: maxDepth }, function () { return []; });
|
|
225
|
-
var headerMerges = [];
|
|
226
|
-
var leafColumns = [];
|
|
227
254
|
var walkHeader = function (nodes, depth, startColIndexRef) {
|
|
228
255
|
nodes.forEach(function (node) {
|
|
229
256
|
var text = node.dynamicTitle || node.title;
|
|
@@ -265,13 +292,38 @@ function prepareExcelData(processedData, columns, columnHeaders) {
|
|
|
265
292
|
}
|
|
266
293
|
});
|
|
267
294
|
};
|
|
295
|
+
var maxDepth = getMaxDepth(columns);
|
|
296
|
+
var headerRows = Array.from({ length: maxDepth }, function () { return []; });
|
|
297
|
+
var headerMerges = [];
|
|
298
|
+
var leafColumns = [];
|
|
268
299
|
walkHeader(columns, 1, { value: 0 });
|
|
300
|
+
// 顶部说明行:插入到表头之前,并横向合并至所有叶子列
|
|
301
|
+
if (topDescription) {
|
|
302
|
+
var totalLeafCols = Math.max(1, leafColumns.length);
|
|
303
|
+
var topRow = Array.from({ length: totalLeafCols }, function () { return ""; });
|
|
304
|
+
topRow[0] = topDescription;
|
|
305
|
+
// 现有表头合并坐标整体下移一行
|
|
306
|
+
headerMerges.forEach(function (m) {
|
|
307
|
+
m.s.r += 1;
|
|
308
|
+
m.e.r += 1;
|
|
309
|
+
});
|
|
310
|
+
// 插入到最前面
|
|
311
|
+
headerRows.unshift(topRow);
|
|
312
|
+
// 新增顶行的横向合并(从第1列到最后一列)
|
|
313
|
+
if (totalLeafCols > 1) {
|
|
314
|
+
headerMerges.push({
|
|
315
|
+
s: { r: 0, c: 0 },
|
|
316
|
+
e: { r: 0, c: totalLeafCols - 1 },
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
269
320
|
return {
|
|
270
321
|
headerRows: headerRows,
|
|
271
322
|
headerMerges: headerMerges,
|
|
272
323
|
headerRowCount: headerRows.length,
|
|
273
324
|
data: processedData,
|
|
274
325
|
leafColumns: leafColumns,
|
|
326
|
+
topDescription: topDescription,
|
|
275
327
|
};
|
|
276
328
|
}
|
|
277
329
|
function createWorksheetWithMerge(workbook, excelData, mergeKeys, sheetName) {
|
|
@@ -324,66 +376,126 @@ function createWorksheetWithMerge(workbook, excelData, mergeKeys, sheetName) {
|
|
|
324
376
|
}
|
|
325
377
|
return worksheet;
|
|
326
378
|
}
|
|
327
|
-
function applyExcelStyles(worksheet, data,
|
|
328
|
-
var _a, _b;
|
|
379
|
+
function applyExcelStyles(worksheet, data, numKeys, columns, headerRowCount, hasTopDescription, topDescriptionRowHeight) {
|
|
380
|
+
var _a, _b, _c;
|
|
329
381
|
if (headerRowCount === void 0) { headerRowCount = 1; }
|
|
382
|
+
if (hasTopDescription === void 0) { hasTopDescription = false; }
|
|
330
383
|
var headerStyle = {
|
|
331
|
-
font: {
|
|
384
|
+
font: {
|
|
385
|
+
bold: true,
|
|
386
|
+
color: { argb: "FFFFFFFF" },
|
|
387
|
+
size: 11,
|
|
388
|
+
name: "微软雅黑",
|
|
389
|
+
},
|
|
332
390
|
fill: {
|
|
333
391
|
type: "pattern",
|
|
334
392
|
pattern: "solid",
|
|
335
|
-
fgColor: { argb: "
|
|
393
|
+
fgColor: { argb: "FF2E5BBA" },
|
|
336
394
|
},
|
|
337
395
|
alignment: { horizontal: "center", vertical: "middle" },
|
|
338
396
|
border: {
|
|
339
|
-
top: { style: "thin", color: { argb: "
|
|
340
|
-
bottom: { style: "thin", color: { argb: "
|
|
341
|
-
left: { style: "thin", color: { argb: "
|
|
342
|
-
right: { style: "thin", color: { argb: "
|
|
397
|
+
top: { style: "thin", color: { argb: "FF1E3A8A" } },
|
|
398
|
+
bottom: { style: "thin", color: { argb: "FF1E3A8A" } },
|
|
399
|
+
left: { style: "thin", color: { argb: "FF1E3A8A" } },
|
|
400
|
+
right: { style: "thin", color: { argb: "FF1E3A8A" } },
|
|
343
401
|
},
|
|
344
402
|
};
|
|
345
403
|
var summaryStyle = {
|
|
346
|
-
font: {
|
|
404
|
+
font: {
|
|
405
|
+
bold: true,
|
|
406
|
+
color: { argb: "FF1E3A8A" },
|
|
407
|
+
size: 11,
|
|
408
|
+
name: "微软雅黑",
|
|
409
|
+
},
|
|
347
410
|
fill: {
|
|
348
411
|
type: "pattern",
|
|
349
412
|
pattern: "solid",
|
|
350
|
-
fgColor: { argb: "
|
|
413
|
+
fgColor: { argb: "FFE8F2FF" },
|
|
351
414
|
},
|
|
352
|
-
alignment: { horizontal: "
|
|
415
|
+
alignment: { horizontal: "left", vertical: "middle" },
|
|
353
416
|
border: {
|
|
354
|
-
top: { style: "thin", color: { argb: "
|
|
355
|
-
bottom: { style: "thin", color: { argb: "
|
|
356
|
-
left: { style: "thin", color: { argb: "
|
|
357
|
-
right: { style: "thin", color: { argb: "
|
|
417
|
+
top: { style: "thin", color: { argb: "FFD1D5DB" } },
|
|
418
|
+
bottom: { style: "thin", color: { argb: "FFD1D5DB" } },
|
|
419
|
+
left: { style: "thin", color: { argb: "FFD1D5DB" } },
|
|
420
|
+
right: { style: "thin", color: { argb: "FFD1D5DB" } },
|
|
358
421
|
},
|
|
359
422
|
};
|
|
360
423
|
var normalStyle = {
|
|
361
|
-
font: {
|
|
424
|
+
font: {
|
|
425
|
+
color: { argb: "FF374151" },
|
|
426
|
+
size: 10,
|
|
427
|
+
name: "微软雅黑",
|
|
428
|
+
},
|
|
362
429
|
fill: {
|
|
363
430
|
type: "pattern",
|
|
364
431
|
pattern: "solid",
|
|
365
432
|
fgColor: { argb: "FFFFFFFF" },
|
|
366
433
|
},
|
|
367
|
-
alignment: { horizontal: "
|
|
434
|
+
alignment: { horizontal: "left", vertical: "middle" },
|
|
435
|
+
border: {
|
|
436
|
+
top: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
437
|
+
bottom: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
438
|
+
left: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
439
|
+
right: { style: "thin", color: { argb: "FFE5E7EB" } },
|
|
440
|
+
},
|
|
441
|
+
};
|
|
442
|
+
var descriptionStyle = {
|
|
443
|
+
font: {
|
|
444
|
+
bold: true,
|
|
445
|
+
size: 11,
|
|
446
|
+
color: { argb: "FF2E5BBA" },
|
|
447
|
+
name: "微软雅黑",
|
|
448
|
+
},
|
|
449
|
+
alignment: {
|
|
450
|
+
horizontal: "left",
|
|
451
|
+
vertical: "middle",
|
|
452
|
+
wrapText: true,
|
|
453
|
+
indent: 1,
|
|
454
|
+
},
|
|
368
455
|
border: {
|
|
369
|
-
top: { style: "thin", color: { argb: "
|
|
370
|
-
bottom: { style: "thin", color: { argb: "
|
|
371
|
-
left: { style: "thin", color: { argb: "
|
|
372
|
-
right: { style: "thin", color: { argb: "
|
|
456
|
+
top: { style: "thin", color: { argb: "FFE6E6E6" } },
|
|
457
|
+
bottom: { style: "thin", color: { argb: "FFE6E6E6" } },
|
|
458
|
+
left: { style: "thin", color: { argb: "FFE6E6E6" } },
|
|
459
|
+
right: { style: "thin", color: { argb: "FFE6E6E6" } },
|
|
460
|
+
},
|
|
461
|
+
fill: {
|
|
462
|
+
type: "pattern",
|
|
463
|
+
pattern: "solid",
|
|
464
|
+
fgColor: { argb: "FFF8F9FA" },
|
|
373
465
|
},
|
|
374
466
|
};
|
|
375
467
|
var totalCols = Math.max(1, (columns === null || columns === void 0 ? void 0 : columns.length) || 1);
|
|
376
|
-
// 表头样式
|
|
377
468
|
for (var r = 1; r <= headerRowCount; r++) {
|
|
378
469
|
for (var c = 1; c <= totalCols; c++) {
|
|
379
470
|
var cell = worksheet.getCell(r, c);
|
|
380
471
|
var currentColumn = columns && Array.isArray(columns) ? columns[c - 1] : undefined;
|
|
381
|
-
var
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
472
|
+
var isDescriptionRow = hasTopDescription && r === 1;
|
|
473
|
+
if (isDescriptionRow) {
|
|
474
|
+
cell.font = descriptionStyle.font;
|
|
475
|
+
cell.alignment = descriptionStyle.alignment;
|
|
476
|
+
cell.fill = descriptionStyle.fill;
|
|
477
|
+
cell.border = descriptionStyle.border;
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
var customHeaderBgColor = (_a = currentColumn === null || currentColumn === void 0 ? void 0 : currentColumn.excelConfig) === null || _a === void 0 ? void 0 : _a.headerBgColor;
|
|
481
|
+
var customHeaderFontColor = (_b = currentColumn === null || currentColumn === void 0 ? void 0 : currentColumn.excelConfig) === null || _b === void 0 ? void 0 : _b.headerFontColor;
|
|
482
|
+
cell.font = __assign(__assign({}, headerStyle.font), { color: { argb: customHeaderFontColor || headerStyle.font.color.argb } });
|
|
483
|
+
cell.alignment = headerStyle.alignment;
|
|
484
|
+
cell.fill = __assign(__assign({}, headerStyle.fill), { fgColor: {
|
|
485
|
+
argb: customHeaderBgColor || headerStyle.fill.fgColor.argb,
|
|
486
|
+
} });
|
|
487
|
+
cell.border = headerStyle.border;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
// 如果外部传入了顶端描述行高度,则强制设置第1行高度
|
|
492
|
+
if (hasTopDescription &&
|
|
493
|
+
typeof topDescriptionRowHeight === "number" &&
|
|
494
|
+
topDescriptionRowHeight > 0) {
|
|
495
|
+
try {
|
|
496
|
+
worksheet.getRow(1).height = topDescriptionRowHeight;
|
|
386
497
|
}
|
|
498
|
+
catch (_d) { }
|
|
387
499
|
}
|
|
388
500
|
// 数据行样式
|
|
389
501
|
for (var rowIndex = 0; rowIndex < data.length; rowIndex++) {
|
|
@@ -394,7 +506,7 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
|
|
|
394
506
|
var currentColumn = columns && Array.isArray(columns) ? columns[c - 1] : undefined;
|
|
395
507
|
var base = isSubtotal ? summaryStyle : normalStyle;
|
|
396
508
|
var columnAlign = columns && Array.isArray(columns)
|
|
397
|
-
? (
|
|
509
|
+
? (_c = columns[c - 1]) === null || _c === void 0 ? void 0 : _c.align
|
|
398
510
|
: undefined;
|
|
399
511
|
var alignment = __assign({}, base.alignment);
|
|
400
512
|
if (columnAlign === "left" ||
|
|
@@ -409,23 +521,23 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
|
|
|
409
521
|
}
|
|
410
522
|
}
|
|
411
523
|
// 数值列格式
|
|
412
|
-
if (
|
|
524
|
+
if (numKeys && numKeys.length > 0 && columns) {
|
|
413
525
|
for (var rowIndex = 0; rowIndex < data.length; rowIndex++) {
|
|
414
526
|
var rowData = data[rowIndex];
|
|
415
|
-
var _loop_2 = function (
|
|
416
|
-
var colIndex = columns.findIndex(function (col) { return col.dataIndex ===
|
|
527
|
+
var _loop_2 = function (numKey) {
|
|
528
|
+
var colIndex = columns.findIndex(function (col) { return col.dataIndex === numKey; });
|
|
417
529
|
if (colIndex === -1)
|
|
418
530
|
return "continue";
|
|
419
531
|
var cell = worksheet.getCell(headerRowCount + rowIndex + 1, colIndex + 1);
|
|
420
|
-
var cellValue = rowData[
|
|
532
|
+
var cellValue = rowData[numKey];
|
|
421
533
|
if (typeof cellValue === "number" || !isNaN(Number(cellValue))) {
|
|
422
534
|
cell.value = Number(cellValue);
|
|
423
535
|
cell.numFmt = "#,##0.00";
|
|
424
536
|
}
|
|
425
537
|
};
|
|
426
|
-
for (var _i = 0,
|
|
427
|
-
var
|
|
428
|
-
_loop_2(
|
|
538
|
+
for (var _i = 0, numKeys_1 = numKeys; _i < numKeys_1.length; _i++) {
|
|
539
|
+
var numKey = numKeys_1[_i];
|
|
540
|
+
_loop_2(numKey);
|
|
429
541
|
}
|
|
430
542
|
}
|
|
431
543
|
}
|
|
@@ -433,16 +545,16 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
|
|
|
433
545
|
/**
|
|
434
546
|
* 主要的导出函数,使用改进的批注功能
|
|
435
547
|
*/
|
|
436
|
-
function exportToExcelWithMerge(records, columns, mergeKeys,
|
|
548
|
+
function exportToExcelWithMerge(records, columns, mergeKeys, numKeys, fileName, sheetName, columnHeaders, summaryConfig, topDescription, topDescriptionRowHeight) {
|
|
437
549
|
if (fileName === void 0) { fileName = "export.xlsx"; }
|
|
438
550
|
if (sheetName === void 0) { sheetName = "Sheet1"; }
|
|
439
|
-
return exportToExcelWithMergeAndComments(records, columns, mergeKeys,
|
|
551
|
+
return exportToExcelWithMergeAndComments(records, columns, mergeKeys, numKeys, fileName, sheetName, columnHeaders, summaryConfig, topDescription, topDescriptionRowHeight);
|
|
440
552
|
}
|
|
441
553
|
/**
|
|
442
554
|
* 简化版本的导出函数
|
|
443
555
|
*/
|
|
444
556
|
function exportToExcelSimple(records, config) {
|
|
445
|
-
return exportToExcelWithMerge(records, config.columns || [], config.mergeKeys, config.
|
|
557
|
+
return exportToExcelWithMerge(records, config.columns || [], config.mergeKeys, config.numKeys || [], config.fileName || "export.xlsx", config.sheetName || "Sheet1", config.columnHeaders, config.summaryConfig, config.topDescription, config.topDescriptionRowHeight);
|
|
446
558
|
}
|
|
447
559
|
/**
|
|
448
560
|
* Hook 版本,支持选择导出方式
|
|
@@ -450,19 +562,24 @@ function exportToExcelSimple(records, config) {
|
|
|
450
562
|
function useExcelExport(records, config) {
|
|
451
563
|
var columns = config.columns, isAutoMerge = config.isAutoMerge, columnHeaders = config.columnHeaders, summaryConfig = config.summaryConfig;
|
|
452
564
|
var mergeKeys = useMergeKeys(columns, isAutoMerge);
|
|
453
|
-
var
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
565
|
+
var numKeys = useNumKeys(columns);
|
|
566
|
+
var exportFunction = useMemoizedFn(function (fileName, _a) {
|
|
567
|
+
var topDescription = _a.topDescription, topDescriptionRowHeight = _a.topDescriptionRowHeight, time = _a.time;
|
|
568
|
+
if (!fileName.includes(".xlsx")) {
|
|
569
|
+
fileName = fileName + ".xlsx";
|
|
570
|
+
}
|
|
571
|
+
if (time) {
|
|
572
|
+
fileName = dayjs(time).format("YYYYMMDD") + "-" + fileName;
|
|
573
|
+
}
|
|
459
574
|
exportToExcelSimple(records, {
|
|
460
575
|
columns: columns,
|
|
461
576
|
mergeKeys: mergeKeys,
|
|
462
|
-
|
|
577
|
+
numKeys: numKeys,
|
|
463
578
|
fileName: fileName,
|
|
464
579
|
columnHeaders: columnHeaders,
|
|
465
580
|
summaryConfig: summaryConfig,
|
|
581
|
+
topDescription: topDescription,
|
|
582
|
+
topDescriptionRowHeight: topDescriptionRowHeight,
|
|
466
583
|
});
|
|
467
584
|
});
|
|
468
585
|
return exportFunction;
|
package/dist/es/table/hooks.js
CHANGED
|
@@ -385,6 +385,15 @@ var useMergeKeys = function (columns, isAutoMerge) {
|
|
|
385
385
|
}, [isAutoMerge, columns]);
|
|
386
386
|
return mergeKeys;
|
|
387
387
|
};
|
|
388
|
+
var useNumKeys = function (columns) {
|
|
389
|
+
var numKeys = useMemo(function () {
|
|
390
|
+
var leafColumns = getLeafColumns(columns);
|
|
391
|
+
return Array.from(new Set(leafColumns
|
|
392
|
+
.filter(function (item) { return item.precision !== undefined; })
|
|
393
|
+
.map(function (item) { return item.key; })));
|
|
394
|
+
}, [columns]);
|
|
395
|
+
return numKeys;
|
|
396
|
+
};
|
|
388
397
|
/**
|
|
389
398
|
* 自动合并的一些处理
|
|
390
399
|
*/
|
|
@@ -510,4 +519,4 @@ function useMergeAddAndDel(_a) {
|
|
|
510
519
|
return [newRowSelection, newAddAndDelProps];
|
|
511
520
|
}
|
|
512
521
|
|
|
513
|
-
export { useAddAndDelChange, useAutoMerge, useCalcScrollY, useCustomSort, useEditChange, useMergeAddAndDel, useMergeKeys, useMoveRowChange, useScuRfresh };
|
|
522
|
+
export { useAddAndDelChange, useAutoMerge, useCalcScrollY, useCustomSort, useEditChange, useMergeAddAndDel, useMergeKeys, useMoveRowChange, useNumKeys, useScuRfresh };
|
|
@@ -237,7 +237,14 @@ interface IColumnType<RecordType> extends Omit<ColumnType<RecordType>, "render">
|
|
|
237
237
|
* 表头背景色
|
|
238
238
|
*/
|
|
239
239
|
headerBgColor?: string;
|
|
240
|
+
/**
|
|
241
|
+
* 表头字体颜色
|
|
242
|
+
*/
|
|
243
|
+
headerFontColor?: string;
|
|
240
244
|
};
|
|
245
|
+
dateFormat?: string;
|
|
246
|
+
precision?: number;
|
|
247
|
+
thousand?: boolean;
|
|
241
248
|
}
|
|
242
249
|
interface IRenderOptions {
|
|
243
250
|
insertTableFromClipboard: IFuncInsertTableFromClipboard;
|
|
@@ -296,7 +303,11 @@ interface ITableRefHandel {
|
|
|
296
303
|
/**
|
|
297
304
|
* 导出excel
|
|
298
305
|
*/
|
|
299
|
-
exportExcel?: (fileName: string
|
|
306
|
+
exportExcel?: (fileName: string, config?: {
|
|
307
|
+
topDescription?: string;
|
|
308
|
+
time?: string;
|
|
309
|
+
topDescriptionRowHeight?: number;
|
|
310
|
+
}) => void;
|
|
300
311
|
}
|
|
301
312
|
interface ITableProps<RecordType> extends Omit<TableProps<RecordType>, "columns"> {
|
|
302
313
|
/**
|
|
@@ -317,6 +328,10 @@ interface ITableProps<RecordType> extends Omit<TableProps<RecordType>, "columns"
|
|
|
317
328
|
* 就按数字往上递增的规则就行 1 2 3 4 5这种
|
|
318
329
|
*/
|
|
319
330
|
dynamicVersion?: number;
|
|
331
|
+
/**
|
|
332
|
+
* 自定义动态列配置后的回调
|
|
333
|
+
*/
|
|
334
|
+
customDynamicListHandle?: (dynamicList: any) => void;
|
|
320
335
|
/**
|
|
321
336
|
* 增加了column的表头过滤功能;如果想要过滤功能持久化,可以配置这个属性
|
|
322
337
|
* 同时也需要配置dynamicKey配置。
|
package/dist/es/table/table.js
CHANGED
|
@@ -41,7 +41,7 @@ import { DndProvider } from '../node_modules/react-dnd/dist/core/DndProvider.js'
|
|
|
41
41
|
// completed: 实现从execl复制到表格中的功能
|
|
42
42
|
var Table = function (props) {
|
|
43
43
|
// console.log("表格渲染");
|
|
44
|
-
var className = props.className, _a = props.bordered, bordered = _a === void 0 ? true : _a, _b = props.pagination, pagination = _b === void 0 ? false : _b, isFlex = props.isFlex; props.tablePreferences; var dynamicKey = props.dynamicKey, dynamicVersion = props.dynamicVersion, isRemeberFilter = props.isRemeberFilter, _c = props.isOrderUpdateData, isOrderUpdateData = _c === void 0 ? true : _c, hiddenDynamicIcon = props.hiddenDynamicIcon, _columns = props.columns, dataSource = props.dataSource, onTableChange = props.onTableChange, isEdit = props.isEdit, isMove = props.isMove, isAdd = props.isAdd, hiddenAddBtnHandle = props.hiddenAddBtnHandle, _d = props.isTheadTitleAdd, isTheadTitleAdd = _d === void 0 ? true : _d, addMode = props.addMode, addCallback = props.addCallback, isDel = props.isDel, delPopTitle = props.delPopTitle, hiddenDelBtnHandle = props.hiddenDelBtnHandle, _e = props.isDelAll, isDelAll = _e === void 0 ? true : _e, isAddAndDelAuto = props.isAddAndDelAuto, summaryConfig = props.summaryConfig, _f = props.summaryFixed, summaryFixed = _f === void 0 ? true : _f, isInnerPagination = props.isInnerPagination, _g = props.innerPaginationPageSize, innerPaginationPageSize = _g === void 0 ? 30 : _g, _h = props.innerPaginationPosition, innerPaginationPosition = _h === void 0 ? INNER_TABLE_PAGINATION_POSITION : _h, _j = props.innerPaginationPageSizeOptions, innerPaginationPageSizeOptions = _j === void 0 ? INNER_TABLE_PAGINATION_PAGESIZEOPTIONS : _j, innerPaginationConfig = props.innerPaginationConfig, tableRefHandle = props.tableRefHandle, tableName = props.tableName, serviceOrder = props.serviceOrder, differences = props.differences, virtualKey = props.virtualKey, _k = props.isResizableColumn, isResizableColumn = _k === void 0 ? true : _k, _l = props.isResizableTitleEllipsis, isResizableTitleEllipsis = _l === void 0 ? true : _l, _m = props.isRealTimeValidate, isRealTimeValidate = _m === void 0 ? true : _m, isMarginTop = props.isMarginTop, isMarginBottom = props.isMarginBottom, scroll = props.scroll, addAndDelProps = props.addAndDelProps, _o = props.autoScrollYMarginBottom, autoScrollYMarginBottom = _o === void 0 ? 65 : _o, _p = props.isAutoScrollY, isAutoScrollY = _p === void 0 ? false : _p, tableId = props.tableId, extraOnRow = props.onRow, fixedRowsCount = props.fixedRowsCount, fixedRowsConfig = props.fixedRowsConfig, headerAlign = props.headerAlign, isDimensionDynamic = props.isDimensionDynamic, isAutoMerge = props.isAutoMerge, mode = props.mode, rowSelection = props.rowSelection, isContextMenu = props.isContextMenu, isFullscreenHandle = props.isFullscreenHandle, resetProps = __rest(props, ["className", "bordered", "pagination", "isFlex", "tablePreferences", "dynamicKey", "dynamicVersion", "isRemeberFilter", "isOrderUpdateData", "hiddenDynamicIcon", "columns", "dataSource", "onTableChange", "isEdit", "isMove", "isAdd", "hiddenAddBtnHandle", "isTheadTitleAdd", "addMode", "addCallback", "isDel", "delPopTitle", "hiddenDelBtnHandle", "isDelAll", "isAddAndDelAuto", "summaryConfig", "summaryFixed", "isInnerPagination", "innerPaginationPageSize", "innerPaginationPosition", "innerPaginationPageSizeOptions", "innerPaginationConfig", "tableRefHandle", "tableName", "serviceOrder", "differences", "virtualKey", "isResizableColumn", "isResizableTitleEllipsis", "isRealTimeValidate", "isMarginTop", "isMarginBottom", "scroll", "addAndDelProps", "autoScrollYMarginBottom", "isAutoScrollY", "tableId", "onRow", "fixedRowsCount", "fixedRowsConfig", "headerAlign", "isDimensionDynamic", "isAutoMerge", "mode", "rowSelection", "isContextMenu", "isFullscreenHandle"]);
|
|
44
|
+
var className = props.className, _a = props.bordered, bordered = _a === void 0 ? true : _a, _b = props.pagination, pagination = _b === void 0 ? false : _b, isFlex = props.isFlex; props.tablePreferences; var dynamicKey = props.dynamicKey, dynamicVersion = props.dynamicVersion, customDynamicListHandle = props.customDynamicListHandle, isRemeberFilter = props.isRemeberFilter, _c = props.isOrderUpdateData, isOrderUpdateData = _c === void 0 ? true : _c, hiddenDynamicIcon = props.hiddenDynamicIcon, _columns = props.columns, dataSource = props.dataSource, onTableChange = props.onTableChange, isEdit = props.isEdit, isMove = props.isMove, isAdd = props.isAdd, hiddenAddBtnHandle = props.hiddenAddBtnHandle, _d = props.isTheadTitleAdd, isTheadTitleAdd = _d === void 0 ? true : _d, addMode = props.addMode, addCallback = props.addCallback, isDel = props.isDel, delPopTitle = props.delPopTitle, hiddenDelBtnHandle = props.hiddenDelBtnHandle, _e = props.isDelAll, isDelAll = _e === void 0 ? true : _e, isAddAndDelAuto = props.isAddAndDelAuto, summaryConfig = props.summaryConfig, _f = props.summaryFixed, summaryFixed = _f === void 0 ? true : _f, isInnerPagination = props.isInnerPagination, _g = props.innerPaginationPageSize, innerPaginationPageSize = _g === void 0 ? 30 : _g, _h = props.innerPaginationPosition, innerPaginationPosition = _h === void 0 ? INNER_TABLE_PAGINATION_POSITION : _h, _j = props.innerPaginationPageSizeOptions, innerPaginationPageSizeOptions = _j === void 0 ? INNER_TABLE_PAGINATION_PAGESIZEOPTIONS : _j, innerPaginationConfig = props.innerPaginationConfig, tableRefHandle = props.tableRefHandle, tableName = props.tableName, serviceOrder = props.serviceOrder, differences = props.differences, virtualKey = props.virtualKey, _k = props.isResizableColumn, isResizableColumn = _k === void 0 ? true : _k, _l = props.isResizableTitleEllipsis, isResizableTitleEllipsis = _l === void 0 ? true : _l, _m = props.isRealTimeValidate, isRealTimeValidate = _m === void 0 ? true : _m, isMarginTop = props.isMarginTop, isMarginBottom = props.isMarginBottom, scroll = props.scroll, addAndDelProps = props.addAndDelProps, _o = props.autoScrollYMarginBottom, autoScrollYMarginBottom = _o === void 0 ? 65 : _o, _p = props.isAutoScrollY, isAutoScrollY = _p === void 0 ? false : _p, tableId = props.tableId, extraOnRow = props.onRow, fixedRowsCount = props.fixedRowsCount, fixedRowsConfig = props.fixedRowsConfig, headerAlign = props.headerAlign, isDimensionDynamic = props.isDimensionDynamic, isAutoMerge = props.isAutoMerge, mode = props.mode, rowSelection = props.rowSelection, isContextMenu = props.isContextMenu, isFullscreenHandle = props.isFullscreenHandle, resetProps = __rest(props, ["className", "bordered", "pagination", "isFlex", "tablePreferences", "dynamicKey", "dynamicVersion", "customDynamicListHandle", "isRemeberFilter", "isOrderUpdateData", "hiddenDynamicIcon", "columns", "dataSource", "onTableChange", "isEdit", "isMove", "isAdd", "hiddenAddBtnHandle", "isTheadTitleAdd", "addMode", "addCallback", "isDel", "delPopTitle", "hiddenDelBtnHandle", "isDelAll", "isAddAndDelAuto", "summaryConfig", "summaryFixed", "isInnerPagination", "innerPaginationPageSize", "innerPaginationPosition", "innerPaginationPageSizeOptions", "innerPaginationConfig", "tableRefHandle", "tableName", "serviceOrder", "differences", "virtualKey", "isResizableColumn", "isResizableTitleEllipsis", "isRealTimeValidate", "isMarginTop", "isMarginBottom", "scroll", "addAndDelProps", "autoScrollYMarginBottom", "isAutoScrollY", "tableId", "onRow", "fixedRowsCount", "fixedRowsConfig", "headerAlign", "isDimensionDynamic", "isAutoMerge", "mode", "rowSelection", "isContextMenu", "isFullscreenHandle"]);
|
|
45
45
|
var classes = classNames("ztxk-table", className, {
|
|
46
46
|
"ztxk-table--flex": isFlex,
|
|
47
47
|
});
|
|
@@ -58,7 +58,11 @@ var Table = function (props) {
|
|
|
58
58
|
// 比如过滤某些列 不做展示
|
|
59
59
|
var columns = useParseColumns(_columns);
|
|
60
60
|
// 得到动态列配置信息
|
|
61
|
-
var _r = useDynamicListByColumns(columns, {
|
|
61
|
+
var _r = useDynamicListByColumns(columns, {
|
|
62
|
+
dynamicKey: dynamicKey,
|
|
63
|
+
dynamicVersion: dynamicVersion,
|
|
64
|
+
customDynamicListHandle: customDynamicListHandle,
|
|
65
|
+
}), defaultDynamicList = _r.defaultDynamicList, onCurrentListChange = _r.onCurrentListChange, currentDynamicList = _r.currentDynamicList, dynamicSettingRef = _r.dynamicSettingRef;
|
|
62
66
|
// 因为内部分页需要知晓当前页面的数据展示,要不然数据排序就跟内部分页没关系了
|
|
63
67
|
// 自定义排序方法
|
|
64
68
|
var _s = useCustomSort(dataSource, onTableChange, {
|
|
@@ -15,6 +15,8 @@ import FilterDropdown, { createFilterValue, filterHandle } from './components/Fi
|
|
|
15
15
|
import Badge from './components/Badge.js';
|
|
16
16
|
import { PLACEHOLDER_NULL } from '../config/constant.js';
|
|
17
17
|
import { useMergeAddAndDel } from './hooks.js';
|
|
18
|
+
import dayjs from 'dayjs';
|
|
19
|
+
import { exactRound, addThousedSeparator } from 'zmdms-utils';
|
|
18
20
|
import SearchOutlined from '../node_modules/@ant-design/icons/es/icons/SearchOutlined.js';
|
|
19
21
|
import ModalComponent from '../modal/modal.js';
|
|
20
22
|
|
|
@@ -317,7 +319,15 @@ function useColumns(columns, options) {
|
|
|
317
319
|
if (typeof text === "object") {
|
|
318
320
|
return PLACEHOLDER_NULL;
|
|
319
321
|
}
|
|
320
|
-
|
|
322
|
+
if (text == null || text === "")
|
|
323
|
+
return PLACEHOLDER_NULL;
|
|
324
|
+
if (_column.dateFormat)
|
|
325
|
+
return dayjs(text).format(_column.dateFormat);
|
|
326
|
+
if (_column.precision)
|
|
327
|
+
text = exactRound(text, _column.precision);
|
|
328
|
+
if (_column.thousand)
|
|
329
|
+
text = addThousedSeparator(text);
|
|
330
|
+
return text;
|
|
321
331
|
};
|
|
322
332
|
}
|
|
323
333
|
if (_column.render) {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { useRef, useMemo, useState, useEffect
|
|
1
|
+
import { useRef, useMemo, useState, useEffect } from 'react';
|
|
2
2
|
import { getCurrentDynamicItems, getDynamicVersionByKey, setDynamicVersionByKey } from '../dynamicsetting/useDynamic.js';
|
|
3
3
|
import { TABLE_DYNAMIC_KEY } from './constant.js';
|
|
4
4
|
import isEqual from 'lodash/isEqual';
|
|
5
|
+
import { useMemoizedFn } from 'ahooks';
|
|
5
6
|
|
|
6
7
|
// 处理列信息
|
|
7
8
|
function parseColumn(column, index, indexs) {
|
|
@@ -66,7 +67,7 @@ function getDynamicList(dynamicKey, columns) {
|
|
|
66
67
|
return result;
|
|
67
68
|
}
|
|
68
69
|
function useDynamicListByColumns(columns, options) {
|
|
69
|
-
var dynamicKey = options.dynamicKey, dynamicVersion = options.dynamicVersion;
|
|
70
|
+
var dynamicKey = options.dynamicKey, dynamicVersion = options.dynamicVersion, customDynamicListHandle = options.customDynamicListHandle;
|
|
70
71
|
// 动态列配置手动刷新基础配置
|
|
71
72
|
var dynamicSettingRef = useRef(null);
|
|
72
73
|
// 初始化list
|
|
@@ -116,10 +117,11 @@ function useDynamicListByColumns(columns, options) {
|
|
|
116
117
|
setDynamicVersionByKey(TABLE_DYNAMIC_KEY, dynamicKey, dynamicVersion);
|
|
117
118
|
}
|
|
118
119
|
}, [dynamicKey, dynamicVersion]);
|
|
119
|
-
var onCurrentListChange =
|
|
120
|
+
var onCurrentListChange = useMemoizedFn(function (newDynamicList) {
|
|
120
121
|
// console.log(newDynamicList);
|
|
121
122
|
setCurrentDynamicList(newDynamicList);
|
|
122
|
-
|
|
123
|
+
customDynamicListHandle === null || customDynamicListHandle === void 0 ? void 0 : customDynamicListHandle(newDynamicList);
|
|
124
|
+
});
|
|
123
125
|
return {
|
|
124
126
|
defaultDynamicList: defaultDynamicList,
|
|
125
127
|
currentDynamicList: currentDynamicList,
|
package/dist/es/table/utils.js
CHANGED
|
@@ -2,7 +2,7 @@ import { __spreadArray, __assign, __awaiter, __generator } from '../_virtual/_ts
|
|
|
2
2
|
import { filterHandle } from './components/FilterDropdown.js';
|
|
3
3
|
import { MERGE_ROW_SPANS, MERGE_KEY, MERGE_INDEX, IS_SUMMARY } from './constant.js';
|
|
4
4
|
import { plus } from 'zmdms-utils';
|
|
5
|
-
import
|
|
5
|
+
import myMessage from '../message/index.js';
|
|
6
6
|
|
|
7
7
|
// 递归处理columns
|
|
8
8
|
function recursionColumns(columns, currentDynamicList, newColumns, columnsIndexs) {
|
|
@@ -138,7 +138,7 @@ function copyColData(key, options) {
|
|
|
138
138
|
try {
|
|
139
139
|
if ((navigator === null || navigator === void 0 ? void 0 : navigator.clipboard) && window.isSecureContext) {
|
|
140
140
|
(_b = (_a = navigator.clipboard) === null || _a === void 0 ? void 0 : _a.writeText(str)) === null || _b === void 0 ? void 0 : _b.then(function () {
|
|
141
|
-
|
|
141
|
+
myMessage.success("复制成功!");
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
144
|
else {
|
|
@@ -147,17 +147,17 @@ function copyColData(key, options) {
|
|
|
147
147
|
document.body.appendChild(textarea);
|
|
148
148
|
textarea.select();
|
|
149
149
|
if (document.execCommand) {
|
|
150
|
-
|
|
150
|
+
myMessage.success("复制成功!");
|
|
151
151
|
document.execCommand("copy");
|
|
152
152
|
}
|
|
153
153
|
else {
|
|
154
|
-
|
|
154
|
+
myMessage.info("\u590D\u5236\u5931\u8D25\uFF01\u8BF7\u624B\u5DE5\u590D\u5236\n ".concat(str));
|
|
155
155
|
}
|
|
156
156
|
document.body.removeChild(textarea);
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
catch (err) {
|
|
160
|
-
|
|
160
|
+
myMessage.info("\u590D\u5236\u5931\u8D25\uFF01\u8BF7\u624B\u5DE5\u590D\u5236\n ".concat(str));
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -4,7 +4,7 @@ import { flushSync } from 'react-dom';
|
|
|
4
4
|
import { getFileExtension, isImageExtension, createDownloadLink, createUploadFileLink, TOKEN_KEY, getToken, exactRound, times, divide } from 'zmdms-utils';
|
|
5
5
|
import MemoUploadList from './uploadList.js';
|
|
6
6
|
import { useLatest } from 'ahooks';
|
|
7
|
-
import
|
|
7
|
+
import myMessage from '../message/index.js';
|
|
8
8
|
|
|
9
9
|
// 默认限制的文件类型
|
|
10
10
|
var NO_ACCEPT = ["exe"];
|
|
@@ -27,16 +27,16 @@ function useBeforeUpload(props) {
|
|
|
27
27
|
}
|
|
28
28
|
if (disAllowDuplicateFile &&
|
|
29
29
|
((_b = (_a = fileListRef.current) === null || _a === void 0 ? void 0 : _a.find) === null || _b === void 0 ? void 0 : _b.call(_a, function (item) { return item.name === fileName || item.attachName === fileName; }))) {
|
|
30
|
-
|
|
30
|
+
myMessage.warning("不能上传同名附件!");
|
|
31
31
|
return MemoUploadList.LIST_IGNORE;
|
|
32
32
|
}
|
|
33
33
|
// 文件大小
|
|
34
34
|
if (fileSize === 0) {
|
|
35
|
-
|
|
35
|
+
myMessage.warning("不能上传空文件!");
|
|
36
36
|
return MemoUploadList.LIST_IGNORE;
|
|
37
37
|
}
|
|
38
38
|
if (isImage && !isImageExtension(fileExtension)) {
|
|
39
|
-
|
|
39
|
+
myMessage.warning("不能上传非图片格式的文件!");
|
|
40
40
|
return MemoUploadList.LIST_IGNORE;
|
|
41
41
|
}
|
|
42
42
|
// 获取支持的附件类型
|
|
@@ -44,16 +44,16 @@ function useBeforeUpload(props) {
|
|
|
44
44
|
ACCEPT = ACCEPT.map(function (a) { return a.toLowerCase(); });
|
|
45
45
|
// 默认支持任何格式的文件,但是不支持exe
|
|
46
46
|
if (ACCEPT.length > 0 && !ACCEPT.includes(fileExtension)) {
|
|
47
|
-
|
|
47
|
+
myMessage.warning("\u4E0D\u652F\u6301 ".concat(fileExtension, " \u6587\u4EF6\u683C\u5F0F"));
|
|
48
48
|
return MemoUploadList.LIST_IGNORE;
|
|
49
49
|
}
|
|
50
50
|
if (ACCEPT.length === 0 && NO_ACCEPT.includes(fileExtension)) {
|
|
51
|
-
|
|
51
|
+
myMessage.warning("\u4E0D\u652F\u6301 ".concat(fileExtension, " \u6587\u4EF6\u683C\u5F0F"));
|
|
52
52
|
return MemoUploadList.LIST_IGNORE;
|
|
53
53
|
}
|
|
54
54
|
// 文件大小限制
|
|
55
55
|
if (maxSize && fileSize > maxSize) {
|
|
56
|
-
|
|
56
|
+
myMessage.warning("\u6587\u4EF6\u8D85\u51FA ".concat(maxSizeStr, "\uFF01"));
|
|
57
57
|
return MemoUploadList.LIST_IGNORE;
|
|
58
58
|
}
|
|
59
59
|
return Promise.resolve(file);
|
|
@@ -343,7 +343,7 @@ function uploadFile(props) {
|
|
|
343
343
|
if (xhr.status === 200) {
|
|
344
344
|
var response = JSON.parse(xhr.responseText);
|
|
345
345
|
if (!response) {
|
|
346
|
-
|
|
346
|
+
myMessage.warning("文件上传失败!");
|
|
347
347
|
}
|
|
348
348
|
var code = response.code, data_1 = response.data, msg = response.msg;
|
|
349
349
|
if (code === 200) {
|
|
@@ -351,7 +351,7 @@ function uploadFile(props) {
|
|
|
351
351
|
}
|
|
352
352
|
else {
|
|
353
353
|
reject();
|
|
354
|
-
|
|
354
|
+
myMessage.warning(msg || "文件上传失败!");
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
else {
|
|
@@ -360,7 +360,7 @@ function uploadFile(props) {
|
|
|
360
360
|
? JSON.parse(xhr.response)
|
|
361
361
|
: { msg: "文件上传失败,请检查网络!" };
|
|
362
362
|
reject();
|
|
363
|
-
|
|
363
|
+
myMessage.warning(result.msg || "文件上传失败!");
|
|
364
364
|
}
|
|
365
365
|
catch (err) {
|
|
366
366
|
reject();
|