@lambo-design/shared 1.0.0-beta.69 → 1.0.0-beta.70
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/package.json +1 -1
- package/utils/excel.js +98 -7
package/package.json
CHANGED
package/utils/excel.js
CHANGED
|
@@ -3,6 +3,7 @@ import XLSX from 'xlsx';
|
|
|
3
3
|
import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
|
|
4
4
|
XLSX.set_cptable(cpexcel);
|
|
5
5
|
import {deepCopy} from "./assist";
|
|
6
|
+
import XLSXStyle from 'xlsx-style'
|
|
6
7
|
|
|
7
8
|
const titleRules = {
|
|
8
9
|
'': '',
|
|
@@ -277,27 +278,47 @@ export const title_transform = (paramData) => {
|
|
|
277
278
|
let result = []
|
|
278
279
|
let data1 = []
|
|
279
280
|
let data2 = []
|
|
280
|
-
let
|
|
281
|
+
let data3 = []
|
|
282
|
+
let flag2 = false
|
|
283
|
+
let flag3 = false
|
|
281
284
|
let data = title_filter(paramData)
|
|
282
285
|
// let data = paramData
|
|
283
286
|
for (var i = 0; i < data.length; i++) {
|
|
284
287
|
data1.push(data[i].title)
|
|
285
288
|
data2.push(data[i].title)
|
|
289
|
+
data3.push(data[i].title)
|
|
286
290
|
if ('children' in data[i]) {
|
|
287
|
-
|
|
291
|
+
flag2 = true
|
|
288
292
|
data2.pop()
|
|
293
|
+
data3.pop()
|
|
289
294
|
let children = data[i].children
|
|
290
295
|
for (var j = 0; j < children.length; j++) {
|
|
291
296
|
data1.push(data[i].title)
|
|
292
297
|
data2.push(children[j].title)
|
|
298
|
+
data3.push(children[j].title)
|
|
299
|
+
if ('children' in children[j]) {
|
|
300
|
+
flag3 = true
|
|
301
|
+
data3.pop();
|
|
302
|
+
let subChildren = children[j].children
|
|
303
|
+
for (var k = 0; k < subChildren.length; k++) {
|
|
304
|
+
data1.push(data[i].title)
|
|
305
|
+
data2.push(children[j].title)
|
|
306
|
+
data3.push(subChildren[k].title)
|
|
307
|
+
}
|
|
308
|
+
data1.pop()
|
|
309
|
+
data2.pop()
|
|
310
|
+
}
|
|
293
311
|
}
|
|
294
312
|
data1.pop()
|
|
295
313
|
}
|
|
296
314
|
}
|
|
297
315
|
result.push(data1)
|
|
298
|
-
if (
|
|
316
|
+
if (flag2) {
|
|
299
317
|
result.push(data2)
|
|
300
318
|
}
|
|
319
|
+
if (flag3) {
|
|
320
|
+
result.push(data3)
|
|
321
|
+
}
|
|
301
322
|
return result
|
|
302
323
|
}
|
|
303
324
|
|
|
@@ -338,7 +359,14 @@ export const key_transform = (paramData) => {
|
|
|
338
359
|
if ("children" in data[i]) {
|
|
339
360
|
let children = data[i].children
|
|
340
361
|
for (var j = 0; j < children.length; j++) {
|
|
341
|
-
|
|
362
|
+
if ("children" in children[j]) {
|
|
363
|
+
let subChildren = children[j].children
|
|
364
|
+
for (var k = 0; k < subChildren.length; k++) {
|
|
365
|
+
result.push(subChildren[k].key)
|
|
366
|
+
}
|
|
367
|
+
}else{
|
|
368
|
+
result.push(children[j].key)
|
|
369
|
+
}
|
|
342
370
|
}
|
|
343
371
|
} else {
|
|
344
372
|
result.push(data[i].key)
|
|
@@ -364,6 +392,30 @@ export const key_el_transform = (paramData) => {
|
|
|
364
392
|
return result
|
|
365
393
|
}
|
|
366
394
|
|
|
395
|
+
export const key_vxe_transform = (paramData) => {
|
|
396
|
+
let result = []
|
|
397
|
+
let data = title_filter(paramData)
|
|
398
|
+
// let data = paramData
|
|
399
|
+
for (var i = 0; i < data.length; i++) {
|
|
400
|
+
if ("children" in data[i]) {
|
|
401
|
+
let children = data[i].children
|
|
402
|
+
for (var j = 0; j < children.length; j++) {
|
|
403
|
+
if ("children" in children[j]) {
|
|
404
|
+
let subChildren = children[j].children
|
|
405
|
+
for (var k = 0; k < subChildren.length; k++) {
|
|
406
|
+
result.push(subChildren[k].property)
|
|
407
|
+
}
|
|
408
|
+
}else{
|
|
409
|
+
result.push(children[j].property)
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
} else {
|
|
413
|
+
result.push(data[i].property)
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
return result
|
|
417
|
+
}
|
|
418
|
+
|
|
367
419
|
export const enums_transform = (paramData) => {
|
|
368
420
|
let result = []
|
|
369
421
|
let data = title_filter(paramData)
|
|
@@ -406,6 +458,27 @@ export const enums_el_transform = (paramData) => {
|
|
|
406
458
|
return result
|
|
407
459
|
}
|
|
408
460
|
|
|
461
|
+
export const enums_vxe_transform = (paramData) => {
|
|
462
|
+
let result = []
|
|
463
|
+
let data = title_filter(paramData)
|
|
464
|
+
// let data = paramData
|
|
465
|
+
for (var i = 0; i < data.length; i++) {
|
|
466
|
+
if ("children" in data[i]) {
|
|
467
|
+
let children = data[i].children
|
|
468
|
+
for (var j = 0; j < children.length; j++) {
|
|
469
|
+
if("enums" in children[j]){
|
|
470
|
+
result.push({key:children[j].property,enums:children[j].enums})
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
} else {
|
|
474
|
+
if("enums" in data[i]){
|
|
475
|
+
result.push({key:data[i].property,enums:data[i].enums})
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
return result
|
|
480
|
+
}
|
|
481
|
+
|
|
409
482
|
export const export_table_to_excel = (id, filename) => {
|
|
410
483
|
const table = document.getElementById(id);
|
|
411
484
|
const wb = XLSX.utils.table_to_book(table);
|
|
@@ -437,7 +510,6 @@ export const export_json_to_excel = ({data, key, title, filename, spanColumns, a
|
|
|
437
510
|
export const export_array_to_excel = ({key, data, title, filename, spanColumns, autoWidth, format}) => {
|
|
438
511
|
const wb = XLSX.utils.book_new();
|
|
439
512
|
const arr = json_to_array(key, data);
|
|
440
|
-
console.log(arr)
|
|
441
513
|
for (var i = title.length; i > 0; i--) {
|
|
442
514
|
arr.unshift(title[i - 1])
|
|
443
515
|
}
|
|
@@ -460,10 +532,27 @@ export const export_array_to_excel = ({key, data, title, filename, spanColumns,
|
|
|
460
532
|
// // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
|
|
461
533
|
bookSST: false});
|
|
462
534
|
}else{
|
|
463
|
-
XLSX.writeFileXLSX(wb, filename + '.' + format);
|
|
535
|
+
// XLSX.writeFileXLSX(wb, filename + '.' + format);
|
|
536
|
+
const workbookBlob = workbook2blob(wb);
|
|
537
|
+
saveAs(workbookBlob, filename + '.' + format);
|
|
464
538
|
}
|
|
465
539
|
}
|
|
466
|
-
|
|
540
|
+
// 将workbook装化成blob对象
|
|
541
|
+
function workbook2blob(workbook) {
|
|
542
|
+
// 生成excel的配置项
|
|
543
|
+
const wopts = {
|
|
544
|
+
// 要生成的文件类型
|
|
545
|
+
bookType: "xlsx",
|
|
546
|
+
// // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
|
|
547
|
+
bookSST: false,
|
|
548
|
+
type: "binary"
|
|
549
|
+
};
|
|
550
|
+
let wbout = XLSXStyle.write(workbook, wopts);
|
|
551
|
+
let blob = new Blob([s2ab(wbout)], {
|
|
552
|
+
type: "application/octet-stream"
|
|
553
|
+
});
|
|
554
|
+
return blob;
|
|
555
|
+
}
|
|
467
556
|
function s2ab(s) {
|
|
468
557
|
if (typeof ArrayBuffer !== 'undefined') {
|
|
469
558
|
let buf = new ArrayBuffer(s.length);
|
|
@@ -522,10 +611,12 @@ export default {
|
|
|
522
611
|
export_json_to_excel,
|
|
523
612
|
key_transform,
|
|
524
613
|
key_el_transform,
|
|
614
|
+
key_vxe_transform,
|
|
525
615
|
title_transform,
|
|
526
616
|
title_el_transform,
|
|
527
617
|
enums_transform,
|
|
528
618
|
enums_el_transform,
|
|
619
|
+
enums_vxe_transform,
|
|
529
620
|
enums_to_value,
|
|
530
621
|
read,
|
|
531
622
|
s2ab,
|