@ibiz-template/runtime 0.7.41-alpha.77 → 0.7.41-alpha.79

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 (68) hide show
  1. package/dist/index.esm.js +133 -24
  2. package/dist/index.system.min.js +1 -1
  3. package/out/config/global-config.d.ts.map +1 -1
  4. package/out/config/global-config.js +1 -0
  5. package/out/controller/common/control/control.controller.d.ts +1 -1
  6. package/out/controller/common/control/control.controller.d.ts.map +1 -1
  7. package/out/controller/common/control/control.controller.js +17 -3
  8. package/out/controller/common/view/view.controller.d.ts +1 -1
  9. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  10. package/out/controller/common/view/view.controller.js +17 -1
  11. package/out/controller/control/dashboard/portlet/filter-portlet/filter-portlet.controller.d.ts.map +1 -1
  12. package/out/controller/control/dashboard/portlet/filter-portlet/filter-portlet.controller.js +3 -2
  13. package/out/controller/control/form/form-detail/form-container/form-container.controller.d.ts +2 -1
  14. package/out/controller/control/form/form-detail/form-container/form-container.controller.d.ts.map +1 -1
  15. package/out/controller/control/form/form-detail/form-container/form-container.controller.js +9 -1
  16. package/out/controller/control/form/form-detail/form-container/form-container.state.d.ts +1 -0
  17. package/out/controller/control/form/form-detail/form-container/form-container.state.d.ts.map +1 -1
  18. package/out/controller/control/form/form-detail/form-container/form-container.state.js +1 -0
  19. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  20. package/out/controller/control/grid/grid/grid.controller.js +15 -2
  21. package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts.map +1 -1
  22. package/out/controller/control/md-ctrl/md-ctrl.controller.js +20 -4
  23. package/out/controller/control/panel/panel-container/panel-container.controller.d.ts +2 -1
  24. package/out/controller/control/panel/panel-container/panel-container.controller.d.ts.map +1 -1
  25. package/out/controller/control/panel/panel-container/panel-container.controller.js +9 -1
  26. package/out/controller/control/panel/panel-container/panel-container.state.d.ts +7 -0
  27. package/out/controller/control/panel/panel-container/panel-container.state.d.ts.map +1 -1
  28. package/out/controller/control/panel/panel-container/panel-container.state.js +7 -0
  29. package/out/controller/ctx/ctx.d.ts +1 -1
  30. package/out/controller/ctx/ctx.d.ts.map +1 -1
  31. package/out/controller/ctx/ctx.js +2 -2
  32. package/out/interface/api/common/global-config/i-api-global-view-config.d.ts +8 -0
  33. package/out/interface/api/common/global-config/i-api-global-view-config.d.ts.map +1 -1
  34. package/out/interface/api/controller/control/form-detail/i-api-form-container.controller.d.ts +2 -1
  35. package/out/interface/api/controller/control/form-detail/i-api-form-container.controller.d.ts.map +1 -1
  36. package/out/interface/api/controller/control/i-api-control.controller.d.ts +2 -1
  37. package/out/interface/api/controller/control/i-api-control.controller.d.ts.map +1 -1
  38. package/out/interface/api/controller/control/panel-item/i-api-panel-container.controller.d.ts +2 -1
  39. package/out/interface/api/controller/control/panel-item/i-api-panel-container.controller.d.ts.map +1 -1
  40. package/out/interface/api/controller/view/i-api-view.controller.d.ts +3 -1
  41. package/out/interface/api/controller/view/i-api-view.controller.d.ts.map +1 -1
  42. package/out/interface/api/state/control/form-detail/i-api-form-container.state.d.ts +6 -0
  43. package/out/interface/api/state/control/form-detail/i-api-form-container.state.d.ts.map +1 -1
  44. package/out/interface/api/state/control/i-api-control.state.d.ts +6 -0
  45. package/out/interface/api/state/control/i-api-control.state.d.ts.map +1 -1
  46. package/out/interface/api/state/control/panel-item/i-api-panel-container.state.d.ts +7 -0
  47. package/out/interface/api/state/control/panel-item/i-api-panel-container.state.d.ts.map +1 -1
  48. package/out/interface/api/state/view/i-api-view.state.d.ts +6 -0
  49. package/out/interface/api/state/view/i-api-view.state.d.ts.map +1 -1
  50. package/out/interface/api/util/i-api-html2canvas-util.d.ts +1 -1
  51. package/out/interface/api/util/i-api-html2canvas-util.d.ts.map +1 -1
  52. package/out/interface/api/util/i-api-print-preview-util.d.ts +89 -0
  53. package/out/interface/api/util/i-api-print-preview-util.d.ts.map +1 -1
  54. package/out/interface/api/util/index.d.ts +1 -1
  55. package/out/interface/api/util/index.d.ts.map +1 -1
  56. package/out/interface/util/i-print-preview-util/i-print-preview-util.d.ts +3 -1
  57. package/out/interface/util/i-print-preview-util/i-print-preview-util.d.ts.map +1 -1
  58. package/out/interface/util/index.d.ts +1 -1
  59. package/out/interface/util/index.d.ts.map +1 -1
  60. package/out/service/vo/tree-node-data/tree-code-list-node-data.d.ts +4 -0
  61. package/out/service/vo/tree-node-data/tree-code-list-node-data.d.ts.map +1 -1
  62. package/out/service/vo/tree-node-data/tree-code-list-node-data.js +6 -0
  63. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts +4 -0
  64. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  65. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +6 -0
  66. package/out/ui-action/provider/front-ui-action-provider.d.ts.map +1 -1
  67. package/out/ui-action/provider/front-ui-action-provider.js +10 -3
  68. package/package.json +3 -3
package/dist/index.esm.js CHANGED
@@ -19367,7 +19367,8 @@ var GlobalConfig = class {
19367
19367
  mobShowViewHeader: true,
19368
19368
  timeoutDuration: 5 * 60 * 1e3,
19369
19369
  onlyShowDataInfo: false,
19370
- viewAccUserMode: 3
19370
+ viewAccUserMode: 3,
19371
+ loadingText: ""
19371
19372
  };
19372
19373
  // 全局表格配置
19373
19374
  this.grid = {
@@ -25380,6 +25381,12 @@ var TreeCodeListNodeData = class extends TreeNodeData {
25380
25381
  }
25381
25382
  });
25382
25383
  }
25384
+ /**
25385
+ * 获取原始数据
25386
+ */
25387
+ getOrigin() {
25388
+ return this._deData;
25389
+ }
25383
25390
  };
25384
25391
 
25385
25392
  // src/service/vo/tree-node-data/tree-data-set-node-data.ts
@@ -25647,6 +25654,12 @@ var TreeDataSetNodeData = class _TreeDataSetNodeData extends TreeNodeData {
25647
25654
  }
25648
25655
  return html;
25649
25656
  }
25657
+ /**
25658
+ * 获取原始数据
25659
+ */
25660
+ getOrigin() {
25661
+ return this._deData;
25662
+ }
25650
25663
  };
25651
25664
 
25652
25665
  // src/service/vo/tree-node-data/tree-static-node-data.ts
@@ -35597,11 +35610,11 @@ var CTX = class {
35597
35610
  * @author lxm
35598
35611
  * @date 2023-03-27 01:59:22
35599
35612
  */
35600
- startLoading() {
35613
+ startLoading(loadingText) {
35601
35614
  if (this.isDestroyed) {
35602
35615
  return;
35603
35616
  }
35604
- this.view.startLoading();
35617
+ this.view.startLoading(loadingText);
35605
35618
  }
35606
35619
  /**
35607
35620
  * 关闭视图加载
@@ -37735,6 +37748,7 @@ var ViewController = class extends BaseController {
37735
37748
  super.initState();
37736
37749
  this.state.activated = true;
37737
37750
  this.state.isLoading = false;
37751
+ this.state.loadingText = "";
37738
37752
  this.state.caption = this.model.caption;
37739
37753
  this.state.srfactiveviewdata = null;
37740
37754
  this.state.viewMessages = {};
@@ -37744,6 +37758,12 @@ var ViewController = class extends BaseController {
37744
37758
  this.state.presetClassList = [];
37745
37759
  }
37746
37760
  async onCreated() {
37761
+ var _a3;
37762
+ const { appViewParams } = this.model;
37763
+ const LoaddingTextValue = (_a3 = appViewParams == null ? void 0 : appViewParams.find(
37764
+ (item) => item.id.toLowerCase() === "srfloadingtext"
37765
+ )) == null ? void 0 : _a3.value;
37766
+ this.state.loadingText = LoaddingTextValue || ibiz.config.view.loadingText;
37747
37767
  this.state.isLoading = true;
37748
37768
  await super.onCreated();
37749
37769
  this.modal.hooks.beforeDismiss.tapPromise(async (modalData) => {
@@ -37929,9 +37949,19 @@ var ViewController = class extends BaseController {
37929
37949
  redrawView(redrawData) {
37930
37950
  this._evt.emit("onRedrawView", { redrawData });
37931
37951
  }
37932
- startLoading() {
37952
+ startLoading(loadingText) {
37953
+ var _a3;
37933
37954
  this.viewLoading.begin();
37934
37955
  this.state.isLoading = this.viewLoading.isLoading;
37956
+ if (isNotNil2(loadingText)) {
37957
+ this.state.loadingText = loadingText;
37958
+ } else {
37959
+ const { appViewParams } = this.model;
37960
+ const LoaddingTextValue = (_a3 = appViewParams == null ? void 0 : appViewParams.find(
37961
+ (item) => item.id.toLowerCase() === "srfloadingtext"
37962
+ )) == null ? void 0 : _a3.value;
37963
+ this.state.loadingText = LoaddingTextValue || ibiz.config.view.loadingText;
37964
+ }
37935
37965
  }
37936
37966
  endLoading() {
37937
37967
  this.viewLoading.end();
@@ -38682,7 +38712,7 @@ import {
38682
38712
  NoticeError as NoticeError2,
38683
38713
  RuntimeError as RuntimeError31
38684
38714
  } from "@ibiz-template/core";
38685
- import { clone as clone20, isNil as isNil26 } from "ramda";
38715
+ import { clone as clone20, isNil as isNil26, isNotNil as isNotNil3 } from "ramda";
38686
38716
  import { notNilEmpty as notNilEmpty9 } from "qx-util";
38687
38717
  var ControlController = class extends BaseController {
38688
38718
  /**
@@ -38806,6 +38836,7 @@ var ControlController = class extends BaseController {
38806
38836
  super.initState();
38807
38837
  this.state.activated = true;
38808
38838
  this.state.isLoading = false;
38839
+ this.state.loadingText = "";
38809
38840
  this.state.disabled = false;
38810
38841
  this.state.maskOption = { mode: "BLANK" };
38811
38842
  this.state.zIndex = void 0;
@@ -38814,6 +38845,9 @@ var ControlController = class extends BaseController {
38814
38845
  async onCreated() {
38815
38846
  var _a3;
38816
38847
  await super.onCreated();
38848
+ if (isNotNil3(ibiz.config.view.loadingText)) {
38849
+ this.state.loadingText = ibiz.config.view.loadingText;
38850
+ }
38817
38851
  if (this.controlPanel) {
38818
38852
  this.childNames.push(this.controlPanel.name);
38819
38853
  const provider = await getControlProvider(this.controlPanel);
@@ -38904,9 +38938,16 @@ var ControlController = class extends BaseController {
38904
38938
  * @date 2022-09-21 15:09:18
38905
38939
  * @return {*} {Promise<void>}
38906
38940
  */
38907
- async startLoading() {
38941
+ async startLoading(loadingText) {
38908
38942
  this.state.isLoading = true;
38909
- this.ctx.startLoading();
38943
+ if (isNotNil3(loadingText)) {
38944
+ this.state.loadingText = loadingText;
38945
+ } else if (isNotNil3(ibiz.config.view.loadingText)) {
38946
+ this.state.loadingText = ibiz.config.view.loadingText;
38947
+ } else {
38948
+ this.state.loadingText = "";
38949
+ }
38950
+ this.ctx.startLoading(loadingText);
38910
38951
  }
38911
38952
  /**
38912
38953
  * 加载完毕
@@ -43491,7 +43532,8 @@ import {
43491
43532
  StringUtil as StringUtil4,
43492
43533
  RuntimeModelError as RuntimeModelError47,
43493
43534
  ModelError as ModelError24,
43494
- RuntimeError as RuntimeError43
43535
+ RuntimeError as RuntimeError43,
43536
+ calcMimeByFileName
43495
43537
  } from "@ibiz-template/core";
43496
43538
  import { clone as clone26, mergeRight as mergeRight4 } from "ramda";
43497
43539
  var FrontUIActionProvider = class extends UIActionProviderBase {
@@ -43655,12 +43697,17 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
43655
43697
  } else {
43656
43698
  throw new RuntimeError43(ibiz.i18n.t("runtime.uiAction.dataPrimaryKey"));
43657
43699
  }
43700
+ let printTag = "";
43701
+ if (resultContext.srfdynaprinttag) {
43702
+ printTag += "".concat(resultContext.srfdynaprinttag, "@");
43703
+ }
43704
+ printTag += appDEPrint.codeName;
43658
43705
  const app = await ibiz.hub.getAppAsync(action.appId);
43659
43706
  const res = await app.net.request(requestUrl, {
43660
43707
  method: "get",
43661
43708
  responseType: "blob",
43662
43709
  params: {
43663
- srfprinttag: appDEPrint.codeName,
43710
+ srfprinttag: printTag,
43664
43711
  ...resultParams
43665
43712
  }
43666
43713
  });
@@ -43782,8 +43829,9 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
43782
43829
  return;
43783
43830
  if (res.status === 200) {
43784
43831
  const fileName = ibiz.util.file.getFileName(res);
43832
+ const type = calcMimeByFileName(fileName);
43785
43833
  const blob = new Blob([res.data], {
43786
- type: "application/vnd.ms-excel"
43834
+ type
43787
43835
  });
43788
43836
  const elink = document.createElement("a");
43789
43837
  elink.download = fileName;
@@ -51423,11 +51471,12 @@ var FilterPortletController = class extends PortletPartController {
51423
51471
  childrenFields: ["searchconds"]
51424
51472
  }
51425
51473
  );
51426
- this.state.filterNode = SearchCondEx2filterNode({
51474
+ this.searchConds = {
51427
51475
  condop: "AND",
51428
51476
  condtype: "GROUP",
51429
51477
  searchconds: tempFieldSearchConds
51430
- });
51478
+ };
51479
+ this.state.filterNode = SearchCondEx2filterNode(this.searchConds);
51431
51480
  }
51432
51481
  }
51433
51482
  }
@@ -51719,7 +51768,7 @@ import {
51719
51768
  isElementSame as isElementSame2,
51720
51769
  RuntimeModelError as RuntimeModelError57
51721
51770
  } from "@ibiz-template/core";
51722
- import { isNil as isNil31, isNotNil as isNotNil3 } from "ramda";
51771
+ import { isNil as isNil31, isNotNil as isNotNil4 } from "ramda";
51723
51772
  import { createUUID as createUUID14, isBoolean } from "qx-util";
51724
51773
 
51725
51774
  // src/controller/control/data-view/data-view.service.ts
@@ -52324,7 +52373,7 @@ var DataViewControlController = class extends MDControlController {
52324
52373
  */
52325
52374
  onClickNew(event, group) {
52326
52375
  const params = { ...this.params };
52327
- if (isNotNil3(group)) {
52376
+ if (isNotNil4(group)) {
52328
52377
  Object.assign(params, { srfgroup: group });
52329
52378
  }
52330
52379
  UIActionUtil.execAndResolved(
@@ -54260,7 +54309,7 @@ import { recursiveIterate as recursiveIterate8 } from "@ibiz-template/core";
54260
54309
 
54261
54310
  // src/controller/control/form/form/form.service.ts
54262
54311
  import { recursiveIterate as recursiveIterate7 } from "@ibiz-template/core";
54263
- import { clone as clone38, isNil as isNil32, isNotNil as isNotNil4 } from "ramda";
54312
+ import { clone as clone38, isNil as isNil32, isNotNil as isNotNil5 } from "ramda";
54264
54313
  var FormService = class extends ControlService {
54265
54314
  constructor() {
54266
54315
  super(...arguments);
@@ -54305,7 +54354,7 @@ var FormService = class extends ControlService {
54305
54354
  if (defaultVal !== void 0) {
54306
54355
  data[name2] = defaultVal;
54307
54356
  }
54308
- if (isNil32(data[name2]) && isNotNil4(defaultData[name2])) {
54357
+ if (isNil32(data[name2]) && isNotNil5(defaultData[name2])) {
54309
54358
  data[name2] = defaultData[name2];
54310
54359
  }
54311
54360
  }
@@ -55828,11 +55877,15 @@ var FormDRUIPartController = class extends FormDetailController {
55828
55877
  // src/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.ts
55829
55878
  import { clone as clone39 } from "ramda";
55830
55879
 
55880
+ // src/controller/control/form/form-detail/form-container/form-container.controller.ts
55881
+ import { isNotNil as isNotNil6 } from "ramda";
55882
+
55831
55883
  // src/controller/control/form/form-detail/form-container/form-container.state.ts
55832
55884
  var FormContainerState = class extends FormDetailState {
55833
55885
  constructor() {
55834
55886
  super(...arguments);
55835
55887
  this.loading = false;
55888
+ this.loadingText = "";
55836
55889
  }
55837
55890
  };
55838
55891
 
@@ -55850,10 +55903,16 @@ var FormContainerController = class extends FormDetailController {
55850
55903
  }
55851
55904
  /**
55852
55905
  * @description 开始加载中
55906
+ * @param {(string | undefined)} [loadingText] 加载提示文本
55853
55907
  * @memberof FormContainerController
55854
55908
  */
55855
- startLoading() {
55909
+ startLoading(loadingText) {
55856
55910
  this.state.loading = true;
55911
+ if (isNotNil6(loadingText)) {
55912
+ this.state.loadingText = loadingText;
55913
+ } else {
55914
+ this.state.loadingText = "";
55915
+ }
55857
55916
  }
55858
55917
  /**
55859
55918
  * @description 结束加载中
@@ -61133,7 +61192,20 @@ var GridController = class extends MDControlController {
61133
61192
  value = ValueExUtil.toText(fieldColumnC.model, value);
61134
61193
  }
61135
61194
  if (this.allExportCodelistMap.get(key)) {
61136
- value = ((_b2 = this.allExportCodelistMap.get(key).find((x) => x.value === item[key])) == null ? void 0 : _b2.text) || value;
61195
+ const codelist = fieldColumnC.codeList;
61196
+ const getVal2 = (val) => {
61197
+ var _a4;
61198
+ return ((_a4 = this.allExportCodelistMap.get(key).find((x) => x.value == val)) == null ? void 0 : _a4.text) || val;
61199
+ };
61200
+ if (codelist && codelist.valueSeparator) {
61201
+ const textSeparator = codelist.textSeparator || codelist.valueSeparator || ",";
61202
+ const values = (_b2 = item[key]) == null ? void 0 : _b2.split(
61203
+ codelist.valueSeparator
61204
+ );
61205
+ value = values == null ? void 0 : values.map((v) => getVal2(v)).join(textSeparator);
61206
+ } else {
61207
+ value = getVal2(item[key]);
61208
+ }
61137
61209
  } else {
61138
61210
  value = this.formatValue(isDate, format, value) + unitName;
61139
61211
  }
@@ -64037,6 +64109,9 @@ var PanelItemController = class {
64037
64109
  }
64038
64110
  };
64039
64111
 
64112
+ // src/controller/control/panel/panel-container/panel-container.controller.ts
64113
+ import { isNotNil as isNotNil7 } from "ramda";
64114
+
64040
64115
  // src/controller/control/panel/panel-container/panel-container.state.ts
64041
64116
  var PanelContainerState = class extends PanelItemState {
64042
64117
  constructor() {
@@ -64048,6 +64123,13 @@ var PanelContainerState = class extends PanelItemState {
64048
64123
  * @memberof PanelContainerState
64049
64124
  */
64050
64125
  this.loading = false;
64126
+ /**
64127
+ * @description 加载提示文本
64128
+ * @exposedoc
64129
+ * @type {string}
64130
+ * @memberof PanelContainerState
64131
+ */
64132
+ this.loadingText = "";
64051
64133
  }
64052
64134
  };
64053
64135
 
@@ -64066,10 +64148,16 @@ var PanelContainerController = class extends PanelItemController {
64066
64148
  /**
64067
64149
  * @description 开始加载中
64068
64150
  * @exposedoc
64151
+ * @param {string} [loadingText] 加载提示文本
64069
64152
  * @memberof PanelContainerController
64070
64153
  */
64071
- startLoading() {
64154
+ startLoading(loadingText) {
64072
64155
  this.state.loading = true;
64156
+ if (isNotNil7(loadingText)) {
64157
+ this.state.loadingText = loadingText;
64158
+ } else {
64159
+ this.state.loadingText = "";
64160
+ }
64073
64161
  }
64074
64162
  /**
64075
64163
  * @description 结束加载中
@@ -66983,8 +67071,12 @@ var WizardPanelController = class extends ControlController {
66983
67071
  };
66984
67072
 
66985
67073
  // src/controller/control/md-ctrl/md-ctrl.controller.ts
66986
- import { RuntimeError as RuntimeError60, RuntimeModelError as RuntimeModelError67 } from "@ibiz-template/core";
66987
- import { clone as clone47, isNil as isNil38, isNotNil as isNotNil5 } from "ramda";
67074
+ import {
67075
+ calcMimeByFileName as calcMimeByFileName2,
67076
+ RuntimeError as RuntimeError60,
67077
+ RuntimeModelError as RuntimeModelError67
67078
+ } from "@ibiz-template/core";
67079
+ import { clone as clone47, isNil as isNil38, isNotNil as isNotNil8 } from "ramda";
66988
67080
  import { createUUID as createUUID20 } from "qx-util";
66989
67081
 
66990
67082
  // src/controller/control/md-ctrl/md-ctrl.service.ts
@@ -67469,7 +67561,7 @@ var MDCtrlController = class extends MDControlController {
67469
67561
  */
67470
67562
  onClickNew(event, group) {
67471
67563
  const params = { ...this.params };
67472
- if (isNotNil5(group)) {
67564
+ if (isNotNil8(group)) {
67473
67565
  Object.assign(params, { srfgroup: group });
67474
67566
  }
67475
67567
  UIActionUtil.execAndResolved(
@@ -67630,7 +67722,23 @@ var MDCtrlController = class extends MDControlController {
67630
67722
  var _a3;
67631
67723
  let value = item[key];
67632
67724
  if (this.allExportCodelistMap.get(key)) {
67633
- value = ((_a3 = this.allExportCodelistMap.get(key).find((x) => x.value === item[key])) == null ? void 0 : _a3.text) || value;
67725
+ const getVal2 = (val) => {
67726
+ var _a4;
67727
+ return ((_a4 = this.allExportCodelistMap.get(key).find((x) => x.value == val)) == null ? void 0 : _a4.text) || val;
67728
+ };
67729
+ const currentColumn = this.allExportColumns.find((exportColumn) => {
67730
+ return exportColumn.appDEFieldId === key;
67731
+ });
67732
+ const codelist = currentColumn == null ? void 0 : currentColumn.codeList;
67733
+ if (codelist && codelist.valueSeparator) {
67734
+ const textSeparator = codelist.textSeparator || codelist.valueSeparator || ",";
67735
+ const values = (_a3 = item[key]) == null ? void 0 : _a3.split(
67736
+ codelist.valueSeparator
67737
+ );
67738
+ value = values == null ? void 0 : values.map((v) => getVal2(v)).join(textSeparator);
67739
+ } else {
67740
+ value = getVal2(item[key]);
67741
+ }
67634
67742
  } else {
67635
67743
  value = "".concat(value != null ? value : "");
67636
67744
  }
@@ -67684,8 +67792,9 @@ var MDCtrlController = class extends MDControlController {
67684
67792
  );
67685
67793
  if (res.status === 200) {
67686
67794
  const fileName = ibiz.util.file.getFileName(res);
67795
+ const filetype = calcMimeByFileName2(fileName);
67687
67796
  const blob = new Blob([res.data], {
67688
- type: "application/vnd.ms-excel"
67797
+ type: filetype
67689
67798
  });
67690
67799
  const elink = document.createElement("a");
67691
67800
  elink.download = fileName;