@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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/utils/excel.js +98 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design/shared",
3
- "version": "1.0.0-beta.69",
3
+ "version": "1.0.0-beta.70",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
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 flag = false
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
- flag = true
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 (flag) {
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
- result.push(children[j].key)
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,