@newview/file-ui 1.1.19 → 1.1.21

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/file-ui.js CHANGED
@@ -10,7 +10,7 @@ import { QueryWrapper, storageInfo } from "@newview/infrastructure";
10
10
  import { OSSFileApi, FileApi, UploadApi, FileInfoApi } from "@newview/fileservice-api";
11
11
  import { DictionaryDetailApi, DataStructureApi, StructureInstanceApi } from "@newview/basics-api";
12
12
  import { utilities } from "@newview/tools";
13
- const propDefine$6 = {
13
+ const propDefine$7 = {
14
14
  modelValue: {
15
15
  // 是否显示
16
16
  type: Boolean,
@@ -33,12 +33,12 @@ const propDefine$6 = {
33
33
  default: 0
34
34
  }
35
35
  };
36
- const _sfc_main$6 = defineComponent({
36
+ const _sfc_main$7 = defineComponent({
37
37
  name: "FilePreview",
38
38
  components: {},
39
39
  emits: ["update:modelValue"],
40
40
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
41
- props: propDefine$6,
41
+ props: propDefine$7,
42
42
  setup(props, ctx) {
43
43
  return new FilePreviewInstance(props, ctx);
44
44
  }
@@ -142,7 +142,7 @@ class FilePreviewInstance extends BaseInstance {
142
142
  }
143
143
  //#endregion 业务逻辑 - 文件预览 END
144
144
  }
145
- const FilePreview_vue_vue_type_style_index_0_scoped_071f536d_lang = "";
145
+ const FilePreview_vue_vue_type_style_index_0_scoped_e7f81a3b_lang = "";
146
146
  const _export_sfc = (sfc, props) => {
147
147
  const target = sfc.__vccOpts || sfc;
148
148
  for (const [key, val] of props) {
@@ -150,13 +150,14 @@ const _export_sfc = (sfc, props) => {
150
150
  }
151
151
  return target;
152
152
  };
153
- const _hoisted_1$3 = { class: "ifr-container" };
154
- const _hoisted_2$3 = ["src", "title"];
155
- function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
153
+ const _hoisted_1$4 = { class: "ifr-container" };
154
+ const _hoisted_2$4 = ["src", "title"];
155
+ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
156
156
  const _component_ImagePreview = resolveComponent("ImagePreview");
157
157
  const _component_Modal = resolveComponent("Modal");
158
158
  return openBlock(), createElementBlock(Fragment, null, [
159
159
  createVNode(_component_ImagePreview, {
160
+ transfer: "",
160
161
  modelValue: _ctx.previewImage,
161
162
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.previewImage = $event),
162
163
  "preview-list": _ctx.previewList,
@@ -175,20 +176,20 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
175
176
  onOnVisibleChange: _ctx.doClose
176
177
  }, {
177
178
  default: withCtx(() => [
178
- createElementVNode("div", _hoisted_1$3, [
179
+ createElementVNode("div", _hoisted_1$4, [
179
180
  createElementVNode("iframe", {
180
181
  src: _ctx.ifrUrl,
181
182
  class: "ifr-content",
182
183
  title: _ctx.fileInfo.fileInfo
183
- }, " ", 8, _hoisted_2$3)
184
+ }, " ", 8, _hoisted_2$4)
184
185
  ])
185
186
  ]),
186
187
  _: 1
187
188
  }, 8, ["modelValue", "title", "onOnVisibleChange"])
188
189
  ], 64);
189
190
  }
190
- const filePreview = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-071f536d"]]);
191
- const propDefine$5 = {
191
+ const filePreview = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7], ["__scopeId", "data-v-e7f81a3b"]]);
192
+ const propDefine$6 = {
192
193
  linkParam: {
193
194
  // 带入的参数
194
195
  type: String,
@@ -255,17 +256,17 @@ const propDefine$5 = {
255
256
  default: "暂无附件"
256
257
  }
257
258
  };
258
- const _sfc_main$5 = defineComponent({
259
+ const _sfc_main$6 = defineComponent({
259
260
  name: "UploadFile",
260
261
  components: { filePreview },
261
262
  emits: ["success", "returnFileList"],
262
263
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
263
- props: propDefine$5,
264
+ props: propDefine$6,
264
265
  setup(props, ctx) {
265
- return new UploadFileInstance(props, ctx);
266
+ return new UploadFileInstance$1(props, ctx);
266
267
  }
267
268
  });
268
- class UploadFileInstance extends BaseInstance {
269
+ let UploadFileInstance$1 = class UploadFileInstance extends BaseInstance {
269
270
  // 全局属性
270
271
  constructor(props, ctx) {
271
272
  super();
@@ -600,11 +601,11 @@ class UploadFileInstance extends BaseInstance {
600
601
  }
601
602
  }
602
603
  //#endregion 业务逻辑 文件预览 END
603
- }
604
- const UploadFile_vue_vue_type_style_index_0_scoped_d6b14e55_lang = "";
605
- const _withScopeId$1 = (n) => (pushScopeId("data-v-d6b14e55"), n = n(), popScopeId(), n);
606
- const _hoisted_1$2 = { class: "uploadFile" };
607
- const _hoisted_2$2 = ["onClick", "title"];
604
+ };
605
+ const UploadFile_vue_vue_type_style_index_0_scoped_0e35ec0f_lang = "";
606
+ const _withScopeId$1 = (n) => (pushScopeId("data-v-0e35ec0f"), n = n(), popScopeId(), n);
607
+ const _hoisted_1$3 = { class: "uploadFile uploadPage" };
608
+ const _hoisted_2$3 = ["onClick", "title"];
608
609
  const _hoisted_3$2 = { class: "file-upload-list-cover" };
609
610
  const _hoisted_4$2 = { class: "file-upload-btn" };
610
611
  const _hoisted_5$2 = {
@@ -634,7 +635,7 @@ const _hoisted_9$2 = [
634
635
  ];
635
636
  const _hoisted_10$2 = { class: "file-upload-list-cover" };
636
637
  const _hoisted_11$2 = { class: "file-upload-btn" };
637
- function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
638
+ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
638
639
  const _component_Image = resolveComponent("Image");
639
640
  const _component_Icon = resolveComponent("Icon");
640
641
  const _component_Space = resolveComponent("Space");
@@ -642,7 +643,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
642
643
  const _component_Card = resolveComponent("Card");
643
644
  const _component_Spin = resolveComponent("Spin");
644
645
  const _component_filePreview = resolveComponent("filePreview");
645
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
646
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
646
647
  !_ctx.single ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.groups, (groupName) => {
647
648
  return openBlock(), createBlock(_component_Card, {
648
649
  "dis-hover": "",
@@ -663,6 +664,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
663
664
  createVNode(_component_Image, {
664
665
  src: _ctx.getThumbnailUrl(item),
665
666
  fit: "cover",
667
+ transfer: "",
666
668
  width: "100%",
667
669
  height: "100%"
668
670
  }, null, 8, ["src"]),
@@ -684,7 +686,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
684
686
  _: 2
685
687
  }, 1024)
686
688
  ])
687
- ], 8, _hoisted_2$2)
689
+ ], 8, _hoisted_2$3)
688
690
  ], 2);
689
691
  }), 256)),
690
692
  !_ctx.readonly ? (openBlock(), createBlock(_component_Upload, {
@@ -804,7 +806,8 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
804
806
  ], 64)),
805
807
  _ctx.uploading ? (openBlock(), createBlock(_component_Spin, {
806
808
  key: 2,
807
- fix: ""
809
+ fix: "",
810
+ size: "large"
808
811
  })) : createCommentVNode("", true),
809
812
  createVNode(_component_filePreview, {
810
813
  modelValue: _ctx.previewVisible,
@@ -815,7 +818,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
815
818
  }, null, 8, ["modelValue", "preview-list", "preview-index", "file-info"])
816
819
  ]);
817
820
  }
818
- const UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-d6b14e55"]]);
821
+ const UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-0e35ec0f"]]);
819
822
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
820
823
  function getDefaultExportFromCjs(x) {
821
824
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
@@ -15147,7 +15150,7 @@ const QuillEditor = defineComponent({
15147
15150
  });
15148
15151
  const vueQuill_snow = "";
15149
15152
  const vueQuill_bubble = "";
15150
- const propDefine$4 = {
15153
+ const propDefine$5 = {
15151
15154
  modelValue: {
15152
15155
  default: "",
15153
15156
  type: String
@@ -15165,14 +15168,14 @@ const propDefine$4 = {
15165
15168
  default: true
15166
15169
  }
15167
15170
  };
15168
- const _sfc_main$4 = defineComponent({
15171
+ const _sfc_main$5 = defineComponent({
15169
15172
  name: "TextEditor",
15170
15173
  components: {
15171
15174
  QuillEditor
15172
15175
  },
15173
15176
  emits: ["update:modelValue", "textChange"],
15174
15177
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
15175
- props: propDefine$4,
15178
+ props: propDefine$5,
15176
15179
  setup(props, ctx) {
15177
15180
  return new TextEditor$1(props, ctx);
15178
15181
  }
@@ -15291,7 +15294,7 @@ let TextEditor$1 = class TextEditor extends BaseInstance {
15291
15294
  //#endregion 业务逻辑 END
15292
15295
  };
15293
15296
  const TextEditor_vue_vue_type_style_index_0_scoped_5812cc0f_lang = "";
15294
- function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
15297
+ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
15295
15298
  const _component_QuillEditor = resolveComponent("QuillEditor");
15296
15299
  return openBlock(), createElementBlock("div", {
15297
15300
  style: { "height": "100%" },
@@ -15310,7 +15313,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
15310
15313
  }, null, 8, ["content", "readOnly", "theme", "onTextChange", "options"])) : createCommentVNode("", true)
15311
15314
  ], 2);
15312
15315
  }
15313
- const TextEditor2 = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__scopeId", "data-v-5812cc0f"]]);
15316
+ const TextEditor2 = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-5812cc0f"]]);
15314
15317
  const dictionaryDetailApi = new DictionaryDetailApi();
15315
15318
  const loadDictionaryData = async (optionCode, source, iViewOptions, platformId) => {
15316
15319
  if (!source) {
@@ -15326,7 +15329,7 @@ const loadDictionaryData = async (optionCode, source, iViewOptions, platformId)
15326
15329
  }
15327
15330
  return res;
15328
15331
  };
15329
- const propDefine$3 = {
15332
+ const propDefine$4 = {
15330
15333
  code: {
15331
15334
  // 字典码
15332
15335
  type: String,
@@ -15348,12 +15351,12 @@ const propDefine$3 = {
15348
15351
  default: false
15349
15352
  }
15350
15353
  };
15351
- const _sfc_main$3 = defineComponent({
15354
+ const _sfc_main$4 = defineComponent({
15352
15355
  name: "NvDicSelect",
15353
15356
  components: {},
15354
15357
  emits: ["input", "change"],
15355
15358
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
15356
- props: propDefine$3,
15359
+ props: propDefine$4,
15357
15360
  setup(props, ctx) {
15358
15361
  return new DicSelectInstance(props, ctx);
15359
15362
  }
@@ -15378,7 +15381,7 @@ class DicSelectInstance extends BaseInstance {
15378
15381
  this.dicOptions.value = await loadDictionaryData(this.props.code, [], true, this.props.platformId);
15379
15382
  }
15380
15383
  }
15381
- function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
15384
+ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
15382
15385
  const _component_Option = resolveComponent("Option");
15383
15386
  const _component_Select = resolveComponent("Select");
15384
15387
  return openBlock(), createBlock(_component_Select, {
@@ -15404,7 +15407,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
15404
15407
  _: 1
15405
15408
  }, 8, ["disabled", "modelValue", "onOnChange"]);
15406
15409
  }
15407
- const NvDicSelect = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3]]);
15410
+ const NvDicSelect = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]);
15408
15411
  var Functions = {
15409
15412
  Identity: function(x) {
15410
15413
  return x;
@@ -18062,7 +18065,7 @@ var Grouping = function(groupKey, elements) {
18062
18065
  ArrayEnumerable.call(this, elements);
18063
18066
  };
18064
18067
  Grouping.prototype = new ArrayEnumerable();
18065
- const propDefine$2 = {
18068
+ const propDefine$3 = {
18066
18069
  // modelValue:{
18067
18070
  // // 平台Id
18068
18071
  // type: Array,
@@ -18084,12 +18087,12 @@ const propDefine$2 = {
18084
18087
  default: true
18085
18088
  }
18086
18089
  };
18087
- const _sfc_main$2 = defineComponent({
18090
+ const _sfc_main$3 = defineComponent({
18088
18091
  name: "NvStructureTypeSelect",
18089
18092
  components: {},
18090
18093
  emits: ["update", "on-change"],
18091
18094
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
18092
- props: propDefine$2,
18095
+ props: propDefine$3,
18093
18096
  setup(props, ctx) {
18094
18097
  return new StructureTypeSelectInstance(props, ctx);
18095
18098
  }
@@ -18335,8 +18338,8 @@ class StructureTypeSelectInstance extends BaseInstance {
18335
18338
  }
18336
18339
  const NvStructureTypeSelect_vue_vue_type_style_index_0_scoped_ef373745_lang = "";
18337
18340
  const NvStructureTypeSelect_vue_vue_type_style_index_1_lang = "";
18338
- const _hoisted_1$1 = { key: 0 };
18339
- const _hoisted_2$1 = {
18341
+ const _hoisted_1$2 = { key: 0 };
18342
+ const _hoisted_2$2 = {
18340
18343
  key: 0,
18341
18344
  ref: "StructureTypeSel",
18342
18345
  style: { "height": "220px", "display": "inline-block" }
@@ -18368,7 +18371,7 @@ const _hoisted_12$1 = {
18368
18371
  class: "nv-text-r",
18369
18372
  style: { "padding-right": "10px" }
18370
18373
  };
18371
- function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18374
+ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
18372
18375
  const _component_Tag = resolveComponent("Tag");
18373
18376
  const _component_Checkbox = resolveComponent("Checkbox");
18374
18377
  const _component_Icon = resolveComponent("Icon");
@@ -18385,7 +18388,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18385
18388
  onOnPopperHide: _ctx.poptipHideFun
18386
18389
  }, {
18387
18390
  content: withCtx(() => [
18388
- !_ctx.searchValue ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
18391
+ !_ctx.searchValue ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
18389
18392
  createElementVNode("div", _hoisted_3$1, [
18390
18393
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.StructureTypeData, (item) => {
18391
18394
  return openBlock(), createElementBlock("div", {
@@ -18478,7 +18481,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18478
18481
  class: "nv-c-p structuretype-sel-box",
18479
18482
  onClick: _cache[2] || (_cache[2] = ($event) => _ctx.readonly ? null : _ctx.searchView = true)
18480
18483
  }, [
18481
- _ctx.StructureTypeCheckData.length == 0 && !_ctx.searchValue ? (openBlock(), createElementBlock("div", _hoisted_1$1, "选择构件类别")) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
18484
+ _ctx.StructureTypeCheckData.length == 0 && !_ctx.searchValue ? (openBlock(), createElementBlock("div", _hoisted_1$2, "选择构件类别")) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
18482
18485
  _ctx.multiple ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.StructureTypeCheckData, (item, index) => {
18483
18486
  return withDirectives((openBlock(), createBlock(_component_Tag, {
18484
18487
  style: { "position": "relative", "z-index": "5" },
@@ -18514,8 +18517,8 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18514
18517
  }, 8, ["width", "disabled", "onOnPopperHide"])
18515
18518
  ]);
18516
18519
  }
18517
- const NvStructureTypeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-ef373745"]]);
18518
- const propDefine$1 = {
18520
+ const NvStructureTypeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-ef373745"]]);
18521
+ const propDefine$2 = {
18519
18522
  readonly: {
18520
18523
  // 只读
18521
18524
  type: Boolean,
@@ -18537,12 +18540,12 @@ const propDefine$1 = {
18537
18540
  default: true
18538
18541
  }
18539
18542
  };
18540
- const _sfc_main$1 = defineComponent({
18543
+ const _sfc_main$2 = defineComponent({
18541
18544
  name: "NvStructureSelect",
18542
18545
  components: {},
18543
18546
  emits: ["update", "on-change"],
18544
18547
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
18545
- props: propDefine$1,
18548
+ props: propDefine$2,
18546
18549
  setup(props, ctx) {
18547
18550
  return new StructureSelectInstance(props, ctx);
18548
18551
  }
@@ -18724,8 +18727,8 @@ class StructureSelectInstance extends BaseInstance {
18724
18727
  }
18725
18728
  const NvStructureSelect_vue_vue_type_style_index_0_scoped_fbbaca53_lang = "";
18726
18729
  const _withScopeId = (n) => (pushScopeId("data-v-fbbaca53"), n = n(), popScopeId(), n);
18727
- const _hoisted_1 = { key: 1 };
18728
- const _hoisted_2 = { class: "nv-pos-r" };
18730
+ const _hoisted_1$1 = { key: 1 };
18731
+ const _hoisted_2$1 = { class: "nv-pos-r" };
18729
18732
  const _hoisted_3 = { class: "nv-c-p structure-sel-box" };
18730
18733
  const _hoisted_4 = { key: 0 };
18731
18734
  const _hoisted_5 = {
@@ -18757,7 +18760,7 @@ const _hoisted_16 = {
18757
18760
  };
18758
18761
  const _hoisted_17 = { key: 0 };
18759
18762
  const _hoisted_18 = { key: 1 };
18760
- function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18763
+ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18761
18764
  const _component_Option = resolveComponent("Option");
18762
18765
  const _component_OptionGroup = resolveComponent("OptionGroup");
18763
18766
  const _component_Select = resolveComponent("Select");
@@ -18801,7 +18804,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18801
18804
  }), 256))
18802
18805
  ]),
18803
18806
  _: 1
18804
- }, 8, ["modelValue", "multiple", "onOnChange", "disabled"])) : (openBlock(), createElementBlock("div", _hoisted_1, [
18807
+ }, 8, ["modelValue", "multiple", "onOnChange", "disabled"])) : (openBlock(), createElementBlock("div", _hoisted_1$1, [
18805
18808
  createVNode(_component_Poptip, {
18806
18809
  placement: "bottom-start",
18807
18810
  width: 700,
@@ -18869,7 +18872,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18869
18872
  ])
18870
18873
  ]),
18871
18874
  default: withCtx(() => [
18872
- createElementVNode("div", _hoisted_2, [
18875
+ createElementVNode("div", _hoisted_2$1, [
18873
18876
  createElementVNode("div", _hoisted_3, [
18874
18877
  _ctx.StructureInstanceCheckData.length == 0 ? (openBlock(), createElementBlock("div", _hoisted_4, "点击选择构件")) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
18875
18878
  _ctx.multiple ? (openBlock(), createElementBlock("div", _hoisted_5, " 已选择" + toDisplayString(_ctx.StructureInstanceCheckData.length) + "个构件(" + toDisplayString(_ctx.StructureInstanceCheckData.map((e) => e["NodeName"]).toString()) + ") ", 1)) : (openBlock(), createElementBlock("div", _hoisted_6, [
@@ -18907,101 +18910,786 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18907
18910
  ])) : createCommentVNode("", true)
18908
18911
  ]));
18909
18912
  }
18910
- const NvStructureSelect = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-fbbaca53"]]);
18911
- const propDefine = {
18912
- onlyView: {
18913
- // 是否只读
18913
+ const NvStructureSelect = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-fbbaca53"]]);
18914
+ const propDefine$1 = {
18915
+ linkParam: {
18916
+ // 带入的参数
18917
+ type: String,
18918
+ default: ""
18919
+ },
18920
+ operates: {
18921
+ // 按钮权限码
18922
+ type: String,
18923
+ default: "-"
18924
+ },
18925
+ token: {
18926
+ // Token
18927
+ type: String,
18928
+ default: ""
18929
+ },
18930
+ catalog: {
18931
+ // 目录
18932
+ type: String,
18933
+ default: "root"
18934
+ },
18935
+ groups: {
18936
+ // 文件分组列表
18937
+ type: Array,
18938
+ default: () => ["默认"]
18939
+ },
18940
+ extraInfo: {
18941
+ // 扩展信息
18942
+ type: String,
18943
+ default: ""
18944
+ },
18945
+ isCompress: {
18946
+ // 是否压缩
18914
18947
  type: Boolean,
18915
18948
  default: false
18916
18949
  },
18917
- formItems: {
18918
- // 表单项
18950
+ format: {
18951
+ // 允许上传格式
18919
18952
  type: Array,
18920
18953
  default: () => []
18921
18954
  },
18922
- formModel: {
18923
- // 表单数据
18924
- type: Object,
18925
- default: () => {
18926
- }
18955
+ maxSize: {
18956
+ // 文件大小限制,单位 kb
18957
+ type: Number,
18958
+ default: 0
18959
+ },
18960
+ multiple: {
18961
+ // 是否支持多选文件
18962
+ type: Boolean,
18963
+ default: true
18964
+ },
18965
+ readonly: {
18966
+ // 是否只读
18967
+ type: Boolean,
18968
+ default: false
18969
+ },
18970
+ single: {
18971
+ // 单文件
18972
+ type: Boolean,
18973
+ default: false
18974
+ },
18975
+ nullMsg: {
18976
+ //只读状态且无附件信息下的显示
18977
+ type: String,
18978
+ default: "暂无附件"
18927
18979
  }
18928
18980
  };
18929
- const _sfc_main = defineComponent({
18930
- name: "NvComFormUp",
18931
- components: { UploadFile, TextEditor: TextEditor2, NvDicSelect, NvStructureTypeSelect, NvStructureSelect },
18932
- emits: ["textChange", "TokenChange"],
18933
- props: propDefine,
18981
+ const _sfc_main$1 = defineComponent({
18982
+ name: "UploadFileList",
18983
+ components: { filePreview },
18984
+ emits: ["success", "returnFileList"],
18985
+ // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
18986
+ props: propDefine$1,
18934
18987
  setup(props, ctx) {
18935
- return new ComFormInstance(props, ctx);
18988
+ return new UploadFileInstance2(props, ctx);
18936
18989
  }
18937
18990
  });
18938
- class ComFormInstance extends BaseInstance {
18939
- // API实例化
18991
+ class UploadFileInstance2 extends BaseInstance {
18940
18992
  // 全局属性
18941
18993
  constructor(props, ctx) {
18942
18994
  super();
18943
18995
  __publicField(this, "props");
18944
18996
  __publicField(this, "ctx");
18945
- //#region 文本输入框
18997
+ // API实例化
18998
+ __publicField(this, "uploadApi", new UploadApi());
18999
+ __publicField(this, "fileInfoApi", new FileInfoApi());
19000
+ __publicField(this, "fileApi", new FileApi());
19001
+ //#region 附件列表
18946
19002
  // 私有属性 | private
19003
+ // private business2Test1: number = 0;
18947
19004
  // 响应属性 | ref、reactive、computed、watch
18948
- __publicField(this, "textEditorRef", ref());
19005
+ // refTest2 = ref(0);
19006
+ /** 是否显示预览 */
19007
+ __publicField(this, "isShowEye", ref(true));
19008
+ /** 是否显示删除 */
19009
+ __publicField(this, "isShowtrash", ref(true));
19010
+ /** 是否显示上传按钮 */
19011
+ __publicField(this, "isShowUpBtn", ref(true));
19012
+ __publicField(this, "mainGridApi", "");
19013
+ __publicField(this, "uploadListGridRef", ref([]));
19014
+ __publicField(this, "uploadListGridOption", reactive({
19015
+ api: this.mainGridApi,
19016
+ setting: {
19017
+ searchConfig: {
19018
+ btnSpan: 6,
19019
+ labelWidth: 120,
19020
+ defaultShowSearch: false
19021
+ },
19022
+ isPagination: false,
19023
+ toolbarConfig: {
19024
+ isButtonGroup: false
19025
+ },
19026
+ editConfig: {
19027
+ trigger: "click",
19028
+ mode: "row",
19029
+ showStatus: true,
19030
+ beforeEditMethod: ({ row: any }) => {
19031
+ return !this.props.readonly;
19032
+ }
19033
+ },
19034
+ rowConfig: {
19035
+ isCurrent: true,
19036
+ isHover: true
19037
+ }
19038
+ },
19039
+ searchOptions: [],
19040
+ toolbars: [
19041
+ // { name: 'save' },
19042
+ ],
19043
+ rightToolbars: [
19044
+ {
19045
+ name: "refresh",
19046
+ isShow: () => {
19047
+ return false;
19048
+ }
19049
+ }
19050
+ ],
19051
+ columns: [
19052
+ { colType: "seq" },
19053
+ {
19054
+ colType: "ed",
19055
+ title: "文件名称",
19056
+ field: "FileName",
19057
+ align: "left",
19058
+ minWidth: 100
19059
+ },
19060
+ // {
19061
+ // colType: 'ro',
19062
+ // title: "文件类型",
19063
+ // field: "FileExt",
19064
+ // align: "left",
19065
+ // // minWidth: 120
19066
+ // },
19067
+ // {
19068
+ // colType: 'ro',
19069
+ // title: "文件大小",
19070
+ // field: "FileSize",
19071
+ // align: "left",
19072
+ // // minWidth: 120
19073
+ // },
19074
+ {
19075
+ colType: "ro",
19076
+ title: "创建日期",
19077
+ field: "CreateTime",
19078
+ align: "center",
19079
+ format: (h2, params) => {
19080
+ const viewTime = params.row.CreateTime ? params.row.CreateTime.slice(0, 10) : "";
19081
+ return h2("span", {
19082
+ // style: {
19083
+ // color: option?.color ?? '',
19084
+ // },
19085
+ }, viewTime);
19086
+ }
19087
+ },
19088
+ {
19089
+ title: "操作",
19090
+ width: this.isShowtrash.value ? 160 : 120,
19091
+ rowButtons: [
19092
+ {
19093
+ name: "edit_",
19094
+ text: "预览",
19095
+ // icon: "ios-eye-outline",
19096
+ type: "primary",
19097
+ onclick: (row) => {
19098
+ this.doView(row);
19099
+ },
19100
+ isShow: (row) => {
19101
+ return this.isShowEye.value;
19102
+ }
19103
+ },
19104
+ {
19105
+ name: "view_",
19106
+ // icon: "md-download",
19107
+ // icon: "vxe-icon-search",
19108
+ text: "下载",
19109
+ onclick: (row) => {
19110
+ this.doDwonload(row);
19111
+ },
19112
+ isShow: (row) => {
19113
+ return true;
19114
+ }
19115
+ },
19116
+ {
19117
+ name: "delete_",
19118
+ // icon: "ios-trash-outline",
19119
+ text: "删除",
19120
+ type: "error",
19121
+ // class: "color:'#ed4014'",
19122
+ onclick: (row) => {
19123
+ this.doRemove(row);
19124
+ },
19125
+ isShow: (row) => {
19126
+ return !this.isShowtrash.value;
19127
+ }
19128
+ }
19129
+ ]
19130
+ }
19131
+ ],
19132
+ event: {}
19133
+ }));
18949
19134
  // 私有方法 | private 方法名() {}
19135
+ // private test2() {}
18950
19136
  // 响应式方法 | xxx = () => {}
18951
- /**
18952
- * @description 保存文本数据
18953
- */
18954
- __publicField(this, "saveTextData", async () => {
18955
- this.textEditorRef.value.saveTextData();
19137
+ // doBtnClick2 = () = {}
19138
+ __publicField(this, "getuploadListGridRef", (el, index) => {
19139
+ if (el) {
19140
+ this.uploadListGridRef.value[index] = el;
19141
+ }
18956
19142
  });
18957
- /**
18958
- * 清空长文本
18959
- */
18960
- __publicField(this, "clearTextData", async () => {
18961
- this.textEditorRef.value.clearTextData();
19143
+ /** 附件列表赋值 */
19144
+ __publicField(this, "loadUploadListData", () => {
19145
+ let uploadListData = this.getGroupFiles("默认");
19146
+ this.uploadListGridRef.value[0].loadData(async (options) => {
19147
+ options.success(uploadListData);
19148
+ });
18962
19149
  });
18963
- /**删除长文本 */
18964
- __publicField(this, "deleteTextData", async () => {
18965
- this.textEditorRef.value.deleteTextData();
19150
+ /** 附件列表保存 */
19151
+ __publicField(this, "uploadGridSave", async () => {
19152
+ let saveData = this.uploadListGridRef.value[0].getSaveDatas();
19153
+ if ((saveData == null ? void 0 : saveData.length) <= 0)
19154
+ return this.message.warning("没有需要保存的数据");
19155
+ console.log("需要保存的列表数据", saveData);
19156
+ this.uploading.value = true;
19157
+ let saveRes = this.utilities.parseApiResult(await this.fileInfoApi.saves(saveData));
19158
+ if (saveRes > 0) {
19159
+ this.loadFileList(true);
19160
+ this.message.success("附件信息修改成功!");
19161
+ this.uploading.value = false;
19162
+ } else {
19163
+ this.message.error("附件信息修改失败");
19164
+ this.uploading.value = false;
19165
+ }
18966
19166
  });
19167
+ //#endregion 附件列表 END
19168
+ //#region 业务逻辑 - 文件上传
19169
+ // 私有属性 | private
19170
+ __publicField(this, "currentToken", "");
19171
+ // 当前Token
19172
+ // 响应属性 | ref、reactive、computed
19173
+ __publicField(this, "fileList", ref([]));
19174
+ __publicField(this, "uploading", ref(false));
19175
+ __publicField(this, "uploadFilePos", reactive({}));
19176
+ // 文件上传参数
19177
+ __publicField(this, "action", ref(""));
19178
+ // 请求 Url
19179
+ __publicField(this, "headers", ref({
19180
+ Authorization: ""
19181
+ }));
19182
+ // 响应式方法 | xxx = () => {}
18967
19183
  /**
18968
- * 删除长文本
18969
- * @param Token
18970
- */
18971
- __publicField(this, "deleteTextDataByToken", async (Token) => {
18972
- this.textEditorRef.value.deleteTextDataByToken(Token);
19184
+ * 上传成功
19185
+ * @param res
19186
+ * @param file
19187
+ * @param fileList
19188
+ * @returns
19189
+ */
19190
+ __publicField(this, "doSuccess", (res, file, fileList) => {
19191
+ const result = this.utilities.parseApiResult(res);
19192
+ this.uploading.value = false;
19193
+ if (result.Code != "0") {
19194
+ this.message.error(result.Msg);
19195
+ return;
19196
+ }
19197
+ this.message.success("上传成功");
19198
+ this.ctx.emit("success", { token: result.Token, fileId: result.FileId });
19199
+ this.loadFileList(true);
18973
19200
  });
18974
19201
  /**
18975
- * 获取长文本
18976
- */
18977
- __publicField(this, "getText", () => {
18978
- return this.textEditorRef.value.getText();
19202
+ * 文件格式错误
19203
+ */
19204
+ __publicField(this, "doFormatError", () => {
19205
+ this.message.warning("当前上传的文件格式不正确,请重新上传");
19206
+ this.uploading.value = false;
18979
19207
  });
18980
19208
  /**
18981
- * 附件校验
18982
- * @param Token
18983
- */
18984
- __publicField(this, "tokenList", (data, item) => {
18985
- this.ctx.emit("TokenChange", data);
18986
- if (data.list.length > 0) {
18987
- this.props.formModel[item.model] = data.token;
19209
+ * 文件超过上传限制
19210
+ */
19211
+ __publicField(this, "doMaxSize", () => {
19212
+ if (this.props.maxSize / 1024 >= 1) {
19213
+ this.message.warning(
19214
+ "文件太大超出上传限制,文件大小不得大于" + (this.props.maxSize / 1024).toFixed(1) + "M"
19215
+ );
18988
19216
  } else {
18989
- this.props.formModel[item.model] = "";
19217
+ this.message.warning(
19218
+ "文件太大超出上传限制,文件大小不得大于" + this.props.maxSize + "KB"
19219
+ );
18990
19220
  }
19221
+ this.uploading.value = false;
18991
19222
  });
18992
19223
  /**
18993
- * 文本改变
18994
- * @param data
18995
- */
18996
- __publicField(this, "textChange", (item, data) => {
18997
- var _a;
18998
- (_a = item.textEditorProp) == null ? void 0 : _a.onChange(data);
19224
+ * 上传之前
19225
+ */
19226
+ __publicField(this, "doBeforeUpload", () => {
19227
+ this.message.info("文件上传中,请稍等");
19228
+ this.uploading.value = true;
18999
19229
  });
19000
- //#endregion 文本输入框 END
19001
19230
  /**
19002
- * 构件选择值发生改变
19003
- * @param item
19004
- * @param data
19231
+ * 移除
19232
+ * @param fileInfo
19233
+ */
19234
+ __publicField(this, "doRemove", (fileInfo) => {
19235
+ this.modal.confirm({
19236
+ title: "提示",
19237
+ content: `数据删除后不可恢复,<br/>确定要删除 ${fileInfo.FileName} 文件吗?`,
19238
+ onOk: async () => {
19239
+ this.uploading.value = true;
19240
+ const apiResult = await this.fileApi.deleteFile(fileInfo.Token, fileInfo.Id);
19241
+ const result = this.utilities.parseApiResult(apiResult);
19242
+ if (result <= 0) {
19243
+ this.message.warning("删除失败,请稍后重试!");
19244
+ this.uploading.value = false;
19245
+ } else {
19246
+ this.loadFileList(true);
19247
+ this.message.success("删除成功");
19248
+ this.uploading.value = false;
19249
+ }
19250
+ }
19251
+ });
19252
+ });
19253
+ /**
19254
+ * 下载文件
19255
+ * @param fileInfo
19256
+ */
19257
+ __publicField(this, "doDwonload", (fileInfo) => {
19258
+ const downloadUrl = this.fileApi.getFileUrl(fileInfo.Token, fileInfo.Id);
19259
+ window.open(downloadUrl);
19260
+ });
19261
+ /**
19262
+ * 获取当前组文件
19263
+ */
19264
+ __publicField(this, "getGroupFiles", (groupName) => {
19265
+ if (groupName == "默认") {
19266
+ return this.fileList.value;
19267
+ } else {
19268
+ return this.fileList.value.filter((item) => item.GroupName == groupName);
19269
+ }
19270
+ });
19271
+ /**
19272
+ * 获取单文件
19273
+ * @param groupName
19274
+ */
19275
+ __publicField(this, "getSingle", (groupName) => {
19276
+ const groupFiles = this.getGroupFiles(groupName);
19277
+ return this.props.single && groupFiles.length > 0;
19278
+ });
19279
+ /**
19280
+ * 获取第一个文件
19281
+ * @param groupName
19282
+ * @returns
19283
+ */
19284
+ __publicField(this, "getFirstFile", (groupName) => {
19285
+ const groupFiles = this.getGroupFiles(groupName);
19286
+ if (groupFiles.length == 0) {
19287
+ return void 0;
19288
+ } else {
19289
+ return groupFiles[0];
19290
+ }
19291
+ });
19292
+ /** */
19293
+ //#endregion 业务逻辑 - 文件上传 END
19294
+ //#region 业务逻辑 文件预览
19295
+ // 私有属性 | private
19296
+ // 响应属性 | ref、reactive、computed、watch
19297
+ __publicField(this, "previewVisible", ref(false));
19298
+ __publicField(this, "previewList", ref([]));
19299
+ __publicField(this, "previewIndex", ref(0));
19300
+ __publicField(this, "previewFileInfo", ref({}));
19301
+ // 响应式方法 | xxx = () => {}
19302
+ /**
19303
+ * 是否为图片
19304
+ * @param fileInfo
19305
+ * @returns
19306
+ */
19307
+ __publicField(this, "isImage", (fileInfo) => {
19308
+ const ext = fileInfo.FileExt;
19309
+ return ext == "jpg" || ext == "png" || ext == "jpeg" || ext == "gif" || ext == "svg";
19310
+ });
19311
+ /**
19312
+ * 获取文件预览Url
19313
+ * @param fileInfo 文件信息
19314
+ */
19315
+ __publicField(this, "getImgUrl", (fileInfo) => {
19316
+ return this.fileApi.getFileUrl(fileInfo.Token, fileInfo.Id);
19317
+ });
19318
+ /**
19319
+ * 获取缩略图Url
19320
+ * @param fileInfo
19321
+ * @returns
19322
+ */
19323
+ __publicField(this, "getThumbnailUrl", (fileInfo) => {
19324
+ return this.isImage(fileInfo) ? this.getImgUrl(fileInfo) : this.getFileIcon(fileInfo.FileExt);
19325
+ });
19326
+ /**
19327
+ * 获取文件图片
19328
+ * @param fileType
19329
+ * @returns
19330
+ */
19331
+ __publicField(this, "getFileIcon", (fileType) => {
19332
+ const fileicons = {
19333
+ DOCX: {
19334
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjRCOTIzMDEwNzE5RTExRTdBOEQ5Q0NFM0IyNDAxOEEyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjRCOTIzMDExNzE5RTExRTdBOEQ5Q0NFM0IyNDAxOEEyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEI5MjMwMEU3MTlFMTFFN0E4RDlDQ0UzQjI0MDE4QTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEI5MjMwMEY3MTlFMTFFN0E4RDlDQ0UzQjI0MDE4QTIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz60rcnLAAAEVklEQVR42uzcS2gbRxgA4H9XlmTLr0W2W6mJUeIaG7sxdWkdGkOoqQOJk4ZACPhQkxSVJIccTEvdUw+l7aVQeumxPZRQmxhCDkkpDcSUQOI4+BKDrYvTJCj4iSw/JD8k7Wozs1RivGhXK2ur7I7nh0G70qwtffz/r1m9OFmWIRMcxwEZc3NzlejidzTeQ6MCbBIul0ssLy8PVldXjxV6LOmhmGgBIRy8M47Gh2CzQDggCIK0tbV1slAkNRCvM/cMmvw+2DR4nnd4PJ67sVist6i/o3VDOp0+gzLKCTYOM5A0gdbX1xuAgigWSRMokUi4gZIoBkmvxDigKPaKxMM+ir0glZE7LZ8OC5ntjS3JWbMtmnCnOPC4HVZEMrQE2LUOah0Ykc2+Q2/7q+C3Lz4o+TrI6/XqzkEtJOc6qZB1ECs3WoHUWVAMEpVAyWQSJEkyBYnaDIpGo6YglWkd9FV/J1w+265sD/7yAP5+HIZ3Dnvh1vensnN+vROCn0afKNv4enw7jq6rN2FjM/lakVKpFCwvL+Mze4jH40awHCj+qKqq8hsCmn4RzW4fOeRVgLqP+HbNUfZHAWoqXVmcmefR145DZhI6I1C2MVY+JITpCQQCxkpsfHpxN8R/UGRgFIxDwpHHWSWcTif4/X5cSvmyzmW4B+EswNmgBUHikXBk5tkRqaAm/XI5nt3u/7hZQVIHxrF6BhElVDCS7kwyG6580p4TAcNZsf+YhaQ7i4Qgs2f0n6dZCPJ6K2fPXpF0Z2hlBIaYfh7VzThakPISqrMigzaTA8guGUQi+Xw+XaS8QGSjJhHU2WKH/pMr3G63LlJeIDVEZl+dLXbLHqNIZfkOxivo1scjOddJrQMj1Jy/YSRBEMR9cbK611C/s8yAil0HsWBAeWNXk97e2X4KICuFWF/j9vnqaiuL/QeNb3joAVqKLH6LLq7jzCqTPRt//tDLSozcSd7/ZhhdXEQjzYpLowdlkHgOZMaj0aQx0pfn26cZj86z2NGWujXGw57mGRADKuU6qBQxHlqBvyYXLPHgT3f5obu9zlpA8yvb8HAmYgmgziaBlRjrQbT1oAbBDe8aSO1S3RfLAX3U0aAMVmKsBzEgFoX2oM9/noSltQQ1D/5yXxOcO/aWeUCbCQk2d0RqgFJimpUY60FW6kGXTgRQiUnUPHgjC9aCgPq6/KzEWDCg/68HhcIbkEzR85bZgfoKaKh1mwf03XAIllZ3qAG6drYZLhw/yEqM9SAGZJMm/WOwA1ISPW/Z19ea/Ipi4M1KVmIsGBADKgmQLMsi49EBmp+fD+03jEQikTQMNDQ0dDsSiazvF5x0Oi1PTU09Mww0Ozv7YnBw8O7CwsKqKIoSzTjxeHxnYmLi32AweEd9G6fzK3h452ue55t6enrq29raah0OB0cbTiwWS42NjS2Fw2H8kcMbyOORUSAceKn5GRqNaODvXtL6yVf8pbh7aDxS/+7HKwEGAHtEw4kCzabCAAAAAElFTkSuQmCC"
19335
+ },
19336
+ XLSX: {
19337
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNGRUQ5RDNFNzE5RTExRTdBRDQ5QkIzRUIxN0U2M0RGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNGRUQ5RDNGNzE5RTExRTdBRDQ5QkIzRUIxN0U2M0RGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0ZFRDlEM0M3MTlFMTFFN0FENDlCQjNFQjE3RTYzREYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6M0ZFRDlEM0Q3MTlFMTFFN0FENDlCQjNFQjE3RTYzREYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ifpPZAAAFr0lEQVR42uyce0xbVRzHf32Xlo6utKVlPGoAwSjZkKDEKIkQZzKWLLroNItjU2JEF6NO98j8Q+eGSzQRZnD6h7rh9oe6RKNosrjtD/ERQ4AQBI08xkjrBFtefUDfnt91ZYXQcm5plvZyvsnN7Snn13v45Hd+v985vbeicDgMEYlEIoiWzWZTk9MZclSQIwPSRHK5PKBUKp/WaDSX+dpG8+CYxAJE4GDjF3JUQ5qJwAGtVhv0eDwP84W0HJA4Tt960rkS0lRisViiUqkuOp3OujV9ThyS9cSjZJDGSgakmIBcLpcBBKC1QooJyOfzKUAgWgukeFNMBAJSopDEsI6UCCRpdKPg5Ye0kdezCy6Z0qta+6BEYlDJlakIiaoEWFIHFb6yNZzsAZUY8qG94a1bXgfpdLq4fUKh0Ip1Ep86iE03oQJa7gVrgSRIQKREgWAwmBRIgvWgqamppECSxjO8//a74fxzJxfbz589Dt/1/Xhzsba5Bj5oeH2xvfvDw/DTXz0pAcnv98Pk5CSu7HFVQANLQnQuMzPTTA0I/9mTHR/D4e3PcO23H38J+q1DMO64DgXZZq4dEfZLFTjRnuT1ernXCGs1SAqFQlVYWMhvip2+8vmi12RlZHIehXDQc7AdAYn9UlUymQzMZjNOpbj9AoGAPKEYdOSLFs5ruGKSwOk8ehbK80r+LyjnXXDky9aUj0u0kBIChBAw/qwGL9WF8YgvJOqeGHuWxxh8LzpoCxESNaCm2l1cVosWTjN8P93EBxIVIAQRyWSo6CmF70fikRAhrQoIM1V0rYPT6oETDdw5ouiMlm6QTCZTXEirAsJaBzNXxHN2nz60WDRi8I5ktqa69JtqN2qfuJDEq8UdrJajK+kIFISFGSxWX6FAEuR+UKJyu92ukpISDdsPiqHl3ywzQMmsgxggphW1ZLvD6/QMw43vw4wbdCajwahe6wUKdGbhAJoetb1BTu3oWWp9aK791Y/YFItu+K6MnSenPeQIsckVIwZFIIlE4jDDEyNII6SDO5/9neGJk8WqSytmGB6W5hkgBuhW1kHxNOdxwax7Di73/kz94feUbgajVg8dv9HfaFqWXwR3WUrhQuf31DaGrGyo3XIfuc4lcC/MU9molRnwWM325AHyB/zwt2MC3vyshXrg779wjKyQxbxsXnxkHxTnWnjZVN9RAVsra+DUV2fAaqf7hiVPb6YCxKYYA8QAMUBpkcVABKCQybngRqsMhRJkUikvmw0qDbd5zscGsxjulpp0Rmob2r4xH2bp6+vr0Ov19TfTvBOkEilcm7BRD2KT3sRBHb0+Tm2jz9LBxswsGLJdpbZRkZRdYMiFEXIdzLY0kkllJFsuvdXF4/G4iouLNQmm+QD8MT4MT5zYzyvNF5FBbDvawCvNP1X3KC8bTPPtB1tg3zsHeKX5zvcusBjEgjQDxAAxQOks6jQ/63aCmPx9cHyI+sOLN1kgQ66E/qt/8ioNcrQG6Bnu51E7ZUJZfjH0jQ6C1++jssHyY0vRnclL88FQEMbt/8Cxc/Q3bB7a1QT5BjMvmycf3AH199bysim/rQyO730NTn39KUxM26lscjbq4ZMD7yavkkZP83jnYfAavQfNuV2wkOXjZfPvrIO7n5mPDXoQjm/IOkZdB+HYWAxiQZoBYoAEs90hJ2kxNzsH9u+gX0RaTHlg1GbzsqksKQe1UsXLJp+s5MPhEOzZupMEXyddYFdrklsHrQetVAexKcZiEAPEAKUkIBK8AwxPHEB2u31wvcHw4fPktIDa2tq+mZmZmV0vcMiMCY2MjIxSA7JarWOtra0XHQ7HdJD2AfT0rX8WBgYGRpubm7/lU0lP9Pb29jQ2Ns5UVFToLRZLlkQiEQkNjtvt9nd3d08Q4S2HP1BX0qiqqir8Faq9WM3jagM9UaBOhJtDl7q6un5d/rsf/wkwAFAlV79aj4H7AAAAAElFTkSuQmCC"
19338
+ },
19339
+ PPTX: {
19340
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjM5MkNCQTUzNzE5RTExRTdBMzlEQzM4NjVBNUE0QTRBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjM5MkNCQTU0NzE5RTExRTdBMzlEQzM4NjVBNUE0QTRBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzkyQ0JBNTE3MTlFMTFFN0EzOURDMzg2NUE1QTRBNEEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzkyQ0JBNTI3MTlFMTFFN0EzOURDMzg2NUE1QTRBNEEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4VZwdsAAAF20lEQVR42uycfWwTZRzHf72+t3vfurXD0bHNAfMFSzYNkxBEfCHgNL5FwhDFxRjAmDDRGYgaJCCI4hIWgsmMUVGJ7zp1C1OjceGPbQzJBgbWZWNb99qupe1tba8977m42U16vWtrX673TZ48vd3T7rlPfm/PPdeKSJKEWYlEIvDX8PCwmuo+oJqBakpIEMlkMkKhUGxPTU39met7/XnQTAIBouCggzaqrYIEEwUHMjIyvDiO38cV0kJAGMPYjdTgckhQYRgmVqlULXa7/e6wPoeB5EbKoqSQwIoEpICAHA6HBnigcCEFBOR2u+XAE4UDicnFRMAjhQoJgyRSKJAk/gfn1hZnzB3YbVJSpYjErECkUMUjJFYlwLw6qOuuEjLSE5IsLoHsQ+9HvQ7KyspiHOPz+a5bJ3GpgwR34yughVYQDiReAqJKFPB6vRGBxFsLslgsEYEk4WuM8Xg8MD4+jlb2aFXABpaY0scpKSm6pAA0a0kul4t+jWAFgySXy1V6vZ6bBeVsegIKag8wjsEvd8Pg2/voPh4llUpBp9OByWRC6T3gOIIgZGHFINN7b6Faaa71vriN/ruq9OagEOMFEhVvIrMWYyN7Z9u/DpyaHvcuh+IRV0hhZzGv3ZZQcYkrpLAAIdeatZxEAsUFEqcslv/sHrpdz4pQfEpESxoZGWEM3JwAIQhjn57kTRmAIGm1WhgdHQ0IKWkXq361Dw0pkLsFtSDXyCBtOciNJps+4zWkiYkJ7oBQKvdP53y2pMzMTEJwMQYt3FkWAEWjUBQAJbnmBekxp6uXpFyRDlrZGq0mN1cd9j/IL+APoLZhy+tU9yGyrBSf8trWxibBxfwPDpjwU1T3JNV8gnMFiEFzkDCMFPAECNII0sodtd0CHoYslrfyDquAR0jzAiABUDTroGBynD4JpNvFerxy7SaQFBSB+9J5cHX8Hn8r+PI1IFt+W+QA4a3fAIk7WY+XLTfQgIiBK4A3fxF3gMQaXWQBxc2FqdOg8LV3AbxeuNbRBlO/NAExNSnEIEylBkwmp1eLaeWrQaYtgBt27YObPvkVtNU7QISJkw+QatmtoH/lKNzybQes+OFPUJX94xIiDBT6Ipjp7wVMoQTdM7thyRsnQCSRJgcgTK4Efd0RWHriK8i69yGQpGX8d5AfJKT0ynWwaOfe2GUxReU9AK4Z9heZkxciHAUUH26ElBW3Bx/sB0lRWAKaB7eAuek0TBsvRR9Q2tO7o2I9+c/VsYMTAFLu49th4NCe6AOyNewHkoMFqauqQVpSxmlCisXFkFO1mfuV+EFKX7UuNi7mOn+WUx2kXLOB84SyNzwaejaahTTQB5L0TCBsU9EFFA2lVqwOOsY3Mw0Dh19m4CRm/aRrwgGS5eYHHUMSHrA0fxl/a7FoSCSVMZ6/8dgpxvNXj9SB+afILWvirg5yj5vCe//EaOwsSP1ANZAeN/s1U76e84QcF9rpTBaKkOs5L3bFEFDVlv/dgiwtX9NP1oYi6x9nwMchy0YckGX/LiCncfYZaevzICszcJqQs7sTbG2tkH7nes7WM9L4TmyDNDFo5FQHkbgjpEldPboXSouWglzHfld28Nir4BrqT47VPGE1w5UXNgP+14XgNRFV2Q+8+RKYf/w8OdL8rDxUNrq88zHIuv9h0DyyDZRFy+adR0+8WX9rhtGPjlOZbyR56qB5Lurz0paBmjQnj3Y5TKmiU7lrsI+KO0TyFYoBLWpyjG7RFsfbHbV0tmD94UtK6V5uqARxjjbuoKMNhYgCUlSuD2ki4rxFdEtECRuHAiABUGwAkSRJCHgYAE1OTl5MNhhu9H1ytoAaGhq+s1qttmSBQ3kMaTQa+1gDGhoa6q+vr28xm81TXrZfQE9Q4Tg+09PTYzx48OD3XOqgsa6urnM1NTVWg8GQU1hYmC4Wi0V8g+N0Oj2dnZ1jlNAWyJmF50VMPxNYUVGBfoXqKaqh+w7oZjFfn3xF92Va29vbzy7cDflbgAEA1hFFMnC0j9cAAAAASUVORK5CYII="
19341
+ },
19342
+ PDF: {
19343
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI2NTUyNzkzNzE5RTExRTdBQUJEQjIxM0Q0NDhBMzlFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI2NTUyNzk0NzE5RTExRTdBQUJEQjIxM0Q0NDhBMzlFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjY1NTI3OTE3MTlFMTFFN0FBQkRCMjEzRDQ0OEEzOUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjY1NTI3OTI3MTlFMTFFN0FBQkRCMjEzRDQ0OEEzOUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4PCmoWAAAHzUlEQVR42uyb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"
19344
+ },
19345
+ PNG: {
19346
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MEYwMzIxNzE5RTExRTc5Nzk1RTY2REQxNzA5MUM2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjQ2MEYwMzIyNzE5RTExRTc5Nzk1RTY2REQxNzA5MUM2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDYwRjAzMUY3MTlFMTFFNzk3OTVFNjZERDE3MDkxQzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDYwRjAzMjA3MTlFMTFFNzk3OTVFNjZERDE3MDkxQzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7MA++rAAAG1ElEQVR42uyc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"
19347
+ },
19348
+ RAR: {
19349
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJFNDM2NDhBNzE5RTExRTc4MTQ0QTI5QjhEN0YwRTg3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJFNDM2NDhCNzE5RTExRTc4MTQ0QTI5QjhEN0YwRTg3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkU0MzY0ODg3MTlFMTFFNzgxNDRBMjlCOEQ3RjBFODciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkU0MzY0ODk3MTlFMTFFNzgxNDRBMjlCOEQ3RjBFODciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7A+Lq9AAAFaElEQVR42uycb0wbZRzHf9e/x9FCLXTQUVamITNzC6vahJhlm/+ji4sajcYYsxlezRfOmJj4xj+J4a3jBS4xMVuMvjNkiomZSra9mBg77GZW3gjIsFBGS9dC29E/1/P5XSgplZZeexx3x33J5bknPA+555Pfv+eOO4rjOCiIoigo1uzsbCNpLpDDQ44GUIhMJlOOpum3rVbriNC5xTx4JuUAETjY+Y0cvaAwEThgs9nYVCr1rFBIpYB0FcYeJ4MfAYVKp9PpGYa5tLy8/GRdf6cCyePEooygYIkBqSygRCLhABWoXkhlAWUyGTOoRPVAquRiFKhItULSwQ5SLZAMxR3bFzdthfO7WTCas5y86x09gFlH1QqpqhJgXR1037m/OCVZxOl9DLzzILNhHWS32yvOzefzG9ZJQuogzd3UCqjUCuqBpEpApEQBlmVFgaRaC4pGo6JAMqg1xmSzWVhYWMCdPe4KqoGlJ/rGYrE4RQF0zGUBm1m/4e9uhO9BLM3yY7C9EkzwY7FfOm56KbOllpROp/lzhLUZJLPZzLjdbnEs6ONeJxxybHyL6NPfQ/zCzz/j5iFc+e5vHg72S3VhPArvXQ1uqTUZjUZwOp0wNzeH6b3suFwuZxLNxRBCsQUddVnh5H47DwYXXWotxVYz4F+AriYTvOvZxc+5GU7xc6SAFAqFKkISDRC6zVoFTkB9ftTFn6M1oFtV0sXJON/2OBh48YFmcDdJsy/GeCQUkihZDF0HIZ31h9eB20xoRah4Oifd9mQVEslcW2tBxbEI3QnBoNtVA+XyK908UDxHl0Owku7hBFhSXRaE7nHG4+Bd6tTPtwXNxTkI9KXhqe3Z6FZpSTVbUHHcwYVuFncKwiD+OMlqsrgbQCC1t7fD/Px8WUuqGRDCQUi4YAyy6GoFYVZSikjtswZJNEAIBt2rEFPQzYqFMUWJkMLhsHj3g8pV0YX4UhhT7Hql/a26H1Srkslkoru72yqKi1Wz0NIxYsLZCpU+WVbtbl5MaYA0QPVpXQxi52YmYPV5mKOJbne4OhrlfPGttE5aQOmR4U9I8zVvWY7mpaFzZzQXK+5kRr/8ljRvkSOvOVeZGFSARFIep+EpE6QR0gevH7ml4amQxXr3d8Y0PCI+1chks3A7Eoc8J0/PNOko2Nveuj2AJhYT8Jk/Br4kjQW7bK3hZfu/8L6nBWwWpn4XE6KvAtFVOPLWULQBLk4KixyiAPonwSompkwLvNYdt9UQGiK1vZgGSAaAGINyODMGSnpATzlNioBj0bHwhMAbFKLUQW8cdEJHYgzuzUyAjpVnRmNNNLQdOAQPd7ZJDyhy/Rp4h86CIZ2UtQWtjLsgfupDaO7cK62L5Ud/kj0cFB0JQsZ3WfoYxCXiyqmDBF6rluY1QBog+QOirHbFLJhqsksPyHTsBOQYq+zhrDjvh8bHnpa+DmL2HYSrb74KM8vjZLcsz0LRoDfDgZbD8Oiu3dIDGpn+Hn7MnZf9i+PXE9fAGGyAHpdXWhe7tfSHMmog8hNY8kkfgzLcimKCdIZLa2leq4MUVwcpiLPQaxVlZU7arRhATnqP9ICe3/MaPETJ+xsopjwNh80vwJHO56Svg9qaOuB0z0cQCs/xyVSWgIxmaLFt06PnNfN17Aa1SctitQLiOC6n4akAKBKJjO80GBl8n7xaQIODgz/EYrH4ToFDPCY/OTk5VTWgYDA4PTAwcGlxcfEuy7KsmuGkUqmVQCAw1d/fPywki93x+/1/9vX1xTweT2tXV1ezXq+n1AYnmUxmx8bG7hDhPw798r/Ku9JnAr1eL75te5IcnVhKyLbIqV/4ou2vPp9vtPS7H/8JMACCejtl/KmtzgAAAABJRU5ErkJggg=="
19350
+ },
19351
+ DWG: {
19352
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMzRDdCMUUxNzE5RTExRTc5RDY3OTkxN0RFOEQyQTUwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMzRDdCMUUyNzE5RTExRTc5RDY3OTkxN0RFOEQyQTUwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzNEN0IxREY3MTlFMTFFNzlENjc5OTE3REU4RDJBNTAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzNEN0IxRTA3MTlFMTFFNzlENjc5OTE3REU4RDJBNTAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz51XZ5UAAAGNUlEQVR42uyc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"
19353
+ },
19354
+ MOV: {
19355
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBCODZGMjg0NzE5RTExRTc4REI0OTBDODFEQkVCQUU5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjBCODZGMjg1NzE5RTExRTc4REI0OTBDODFEQkVCQUU5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEI4NkYyODI3MTlFMTFFNzhEQjQ5MEM4MURCRUJBRTkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MEI4NkYyODM3MTlFMTFFNzhEQjQ5MEM4MURCRUJBRTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4BPIErAAALQUlEQVR42uxc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"
19356
+ },
19357
+ MP3: {
19358
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE4NUIxMTQyNzE5RTExRTc5MkREQTRGMDA4OTFBOEI4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjE4NUIxMTQzNzE5RTExRTc5MkREQTRGMDA4OTFBOEI4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTg1QjExNDA3MTlFMTFFNzkyRERBNEYwMDg5MUE4QjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTg1QjExNDE3MTlFMTFFNzkyRERBNEYwMDg5MUE4QjgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz69naflAAAK3klEQVR42uyb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"
19359
+ },
19360
+ MP4: {
19361
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBCODZGMjg0NzE5RTExRTc4REI0OTBDODFEQkVCQUU5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjBCODZGMjg1NzE5RTExRTc4REI0OTBDODFEQkVCQUU5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEI4NkYyODI3MTlFMTFFNzhEQjQ5MEM4MURCRUJBRTkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MEI4NkYyODM3MTlFMTFFNzhEQjQ5MEM4MURCRUJBRTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4BPIErAAALQUlEQVR42uxc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"
19362
+ },
19363
+ HTML: {
19364
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjAzMjkzMkRFNzE5RTExRTdBMkJFODdBOUUwQjFGRTUyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjAzMjkzMkRGNzE5RTExRTdBMkJFODdBOUUwQjFGRTUyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDMyOTMyREM3MTlFMTFFN0EyQkU4N0E5RTBCMUZFNTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDMyOTMyREQ3MTlFMTFFN0EyQkU4N0E5RTBCMUZFNTIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6xFdZcAAAGTElEQVR42uyc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"
19365
+ },
19366
+ NONE: {
19367
+ img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIwQ0VDMEY0NzE5RTExRTc5QkRGRDJEMjlGQjM1MkE0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjIwQ0VDMEY1NzE5RTExRTc5QkRGRDJEMjlGQjM1MkE0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjBDRUMwRjI3MTlFMTFFNzlCREZEMkQyOUZCMzUyQTQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjBDRUMwRjM3MTlFMTFFNzlCREZEMkQyOUZCMzUyQTQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5KbLK5AAAGIklEQVR42uyc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"
19368
+ }
19369
+ };
19370
+ let src = "";
19371
+ switch (fileType) {
19372
+ case "rar":
19373
+ case "zip":
19374
+ src = fileicons.RAR.img;
19375
+ break;
19376
+ case "doc":
19377
+ case "docx":
19378
+ src = fileicons.DOCX.img;
19379
+ break;
19380
+ case "xls":
19381
+ case "xlsx":
19382
+ src = fileicons.XLSX.img;
19383
+ break;
19384
+ case "pdf":
19385
+ src = fileicons.PDF.img;
19386
+ break;
19387
+ case "ppt":
19388
+ case "pptx":
19389
+ src = fileicons.PPTX.img;
19390
+ break;
19391
+ case "png":
19392
+ case "jpg":
19393
+ src = fileicons.PNG.img;
19394
+ break;
19395
+ case "mov":
19396
+ src = fileicons.MOV.img;
19397
+ break;
19398
+ case "mp3":
19399
+ src = fileicons.MP3.img;
19400
+ break;
19401
+ case "mp4":
19402
+ src = fileicons.MP4.img;
19403
+ break;
19404
+ case "html":
19405
+ case "htm":
19406
+ src = fileicons.HTML.img;
19407
+ break;
19408
+ default:
19409
+ src = fileicons.NONE.img;
19410
+ break;
19411
+ }
19412
+ return src;
19413
+ });
19414
+ /**
19415
+ * 预览文件
19416
+ * @param fileInfo
19417
+ */
19418
+ __publicField(this, "doView", (fileInfo) => {
19419
+ this.previewFileInfo = fileInfo;
19420
+ this.previewVisible.value = true;
19421
+ this.previewIndex.value = fileInfo.PreviewIndex;
19422
+ });
19423
+ this.props = props;
19424
+ this.ctx = ctx;
19425
+ this.useUploadFile();
19426
+ }
19427
+ // 私有方法 | private 方法名() {}
19428
+ /**
19429
+ * 初始化文件上传附件
19430
+ */
19431
+ async useUploadFile() {
19432
+ watch(() => this.props.token, (newToken, oldToken) => {
19433
+ this.setCurrentToken();
19434
+ this.setUploadFilePos();
19435
+ });
19436
+ watchEffect(() => {
19437
+ this.isShowtrash.value = this.props.readonly;
19438
+ });
19439
+ this.setCurrentToken();
19440
+ this.setUploadFilePos();
19441
+ this.headers.value.Authorization = `Bearer ${this.storageInfo.getToken()}`;
19442
+ this.action.value = this.uploadApi.getUploadFileUrl();
19443
+ }
19444
+ /**
19445
+ * 设置当前Token
19446
+ */
19447
+ setCurrentToken() {
19448
+ this.currentToken = this.utilities.getValueNotNull(this.props.token, this.utilities.getUniqueCode().replaceAll("-", ""));
19449
+ this.loadFileList();
19450
+ }
19451
+ /**
19452
+ * 设置文件上传参数
19453
+ */
19454
+ setUploadFilePos() {
19455
+ for (const groupName of this.props.groups) {
19456
+ const uploadFilePo = this.getUploadFilePo(groupName);
19457
+ this.uploadFilePos[groupName] = uploadFilePo;
19458
+ }
19459
+ }
19460
+ /**
19461
+ * 获取文件上传参数
19462
+ * @param groupName
19463
+ */
19464
+ getUploadFilePo(groupName) {
19465
+ return this.uploadApi.getBaseFilePo(this.currentToken, this.props.catalog, groupName, this.props.extraInfo, this.props.isCompress);
19466
+ }
19467
+ /**
19468
+ * 获取文件列表
19469
+ * @returns
19470
+ */
19471
+ async loadFileList(isChange = false) {
19472
+ this.uploading.value = true;
19473
+ let splitToken = this.currentToken.split(",");
19474
+ this.isShowtrash.value = splitToken.length > 1;
19475
+ const apiResult = await this.fileInfoApi.getEntities(QueryWrapper.create().in("Token", splitToken));
19476
+ this.fileList.value = this.utilities.parseApiResult(apiResult);
19477
+ this.uploading.value = false;
19478
+ if (isChange) {
19479
+ this.ctx.emit("returnFileList", { token: this.currentToken, list: this.fileList.value });
19480
+ }
19481
+ this.loadUploadListData();
19482
+ this.setPreviewList();
19483
+ }
19484
+ // 私有方法 | private 方法名() {}
19485
+ /**
19486
+ * 设置预览列表
19487
+ */
19488
+ setPreviewList() {
19489
+ let index = 0;
19490
+ this.previewList.value = [];
19491
+ for (const fileInfo of this.fileList.value) {
19492
+ if (this.isImage(fileInfo)) {
19493
+ fileInfo.PreviewIndex = index;
19494
+ this.previewList.value.push(this.getImgUrl(fileInfo));
19495
+ index++;
19496
+ }
19497
+ }
19498
+ }
19499
+ //#endregion 业务逻辑 文件预览 END
19500
+ }
19501
+ const UploadFileList_vue_vue_type_style_index_0_scoped_cd979ed3_lang = "";
19502
+ const _hoisted_1 = { class: "uploadFileList" };
19503
+ const _hoisted_2 = { class: "up-btn-box" };
19504
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
19505
+ const _component_Spin = resolveComponent("Spin");
19506
+ const _component_Button = resolveComponent("Button");
19507
+ const _component_Upload = resolveComponent("Upload");
19508
+ const _component_NvGrid = resolveComponent("NvGrid");
19509
+ const _component_Card = resolveComponent("Card");
19510
+ const _component_filePreview = resolveComponent("filePreview");
19511
+ return openBlock(), createElementBlock("div", _hoisted_1, [
19512
+ _ctx.uploading ? (openBlock(), createBlock(_component_Spin, {
19513
+ key: 0,
19514
+ fix: "",
19515
+ size: "large"
19516
+ })) : createCommentVNode("", true),
19517
+ !_ctx.single ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.groups, (groupName, index) => {
19518
+ return openBlock(), createBlock(_component_Card, {
19519
+ "dis-hover": "",
19520
+ key: index,
19521
+ style: { "margin-bottom": "8px", "height": "100%" }
19522
+ }, createSlots({
19523
+ default: withCtx(() => [
19524
+ createElementVNode("div", _hoisted_2, [
19525
+ !_ctx.isShowtrash ? (openBlock(), createBlock(_component_Upload, {
19526
+ key: 0,
19527
+ ref_for: true,
19528
+ ref: "uploadRef",
19529
+ type: "drag",
19530
+ name: "FormFile",
19531
+ multiple: _ctx.multiple,
19532
+ "show-upload-list": false,
19533
+ format: _ctx.format,
19534
+ "max-size": _ctx.maxSize,
19535
+ action: _ctx.action,
19536
+ headers: _ctx.headers,
19537
+ data: _ctx.uploadFilePos[groupName],
19538
+ "on-success": _ctx.doSuccess,
19539
+ "on-format-error": _ctx.doFormatError,
19540
+ "on-exceeded-size": _ctx.doMaxSize,
19541
+ "before-upload": _ctx.doBeforeUpload,
19542
+ style: { "display": "inline-block", "width": "54px" }
19543
+ }, {
19544
+ default: withCtx(() => [
19545
+ _ctx.isShowUpBtn ? (openBlock(), createBlock(_component_Button, {
19546
+ key: 0,
19547
+ type: "primary",
19548
+ size: "small"
19549
+ }, {
19550
+ default: withCtx(() => [
19551
+ createTextVNode("上传")
19552
+ ]),
19553
+ _: 1
19554
+ })) : createCommentVNode("", true)
19555
+ ]),
19556
+ _: 2
19557
+ }, 1032, ["multiple", "format", "max-size", "action", "headers", "data", "on-success", "on-format-error", "on-exceeded-size", "before-upload"])) : createCommentVNode("", true),
19558
+ !_ctx.isShowtrash ? (openBlock(), createBlock(_component_Button, {
19559
+ key: 1,
19560
+ type: "primary",
19561
+ size: "small",
19562
+ onClick: _ctx.uploadGridSave
19563
+ }, {
19564
+ default: withCtx(() => [
19565
+ createTextVNode("保存")
19566
+ ]),
19567
+ _: 1
19568
+ }, 8, ["onClick"])) : createCommentVNode("", true)
19569
+ ]),
19570
+ createVNode(_component_NvGrid, {
19571
+ ref_for: true,
19572
+ ref: (el) => _ctx.getuploadListGridRef(el, index),
19573
+ option: _ctx.uploadListGridOption
19574
+ }, null, 8, ["option"])
19575
+ ]),
19576
+ _: 2
19577
+ }, [
19578
+ groupName != "默认" ? {
19579
+ name: "title",
19580
+ fn: withCtx(() => [
19581
+ createTextVNode(toDisplayString(groupName), 1)
19582
+ ]),
19583
+ key: "0"
19584
+ } : void 0
19585
+ ]), 1024);
19586
+ }), 128)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
19587
+ createTextVNode("附件列表暂不支持分组")
19588
+ ], 64)),
19589
+ createVNode(_component_filePreview, {
19590
+ modelValue: _ctx.previewVisible,
19591
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.previewVisible = $event),
19592
+ "preview-list": _ctx.previewList,
19593
+ "preview-index": _ctx.previewIndex,
19594
+ "file-info": _ctx.previewFileInfo
19595
+ }, null, 8, ["modelValue", "preview-list", "preview-index", "file-info"])
19596
+ ]);
19597
+ }
19598
+ const UploadFileList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-cd979ed3"]]);
19599
+ const propDefine = {
19600
+ onlyView: {
19601
+ // 是否只读
19602
+ type: Boolean,
19603
+ default: false
19604
+ },
19605
+ formItems: {
19606
+ // 表单项
19607
+ type: Array,
19608
+ default: () => []
19609
+ },
19610
+ formModel: {
19611
+ // 表单数据
19612
+ type: Object,
19613
+ default: () => {
19614
+ }
19615
+ }
19616
+ };
19617
+ const _sfc_main = defineComponent({
19618
+ name: "NvComFormUp",
19619
+ components: { UploadFile, TextEditor: TextEditor2, NvDicSelect, NvStructureTypeSelect, NvStructureSelect, UploadFileList },
19620
+ emits: ["textChange", "TokenChange"],
19621
+ props: propDefine,
19622
+ setup(props, ctx) {
19623
+ return new ComFormInstance(props, ctx);
19624
+ }
19625
+ });
19626
+ class ComFormInstance extends BaseInstance {
19627
+ // API实例化
19628
+ // 全局属性
19629
+ constructor(props, ctx) {
19630
+ super();
19631
+ __publicField(this, "props");
19632
+ __publicField(this, "ctx");
19633
+ //#region 文本输入框
19634
+ // 私有属性 | private
19635
+ // 响应属性 | ref、reactive、computed、watch
19636
+ __publicField(this, "textEditorRef", ref());
19637
+ // 私有方法 | private 方法名() {}
19638
+ // 响应式方法 | xxx = () => {}
19639
+ /**
19640
+ * @description 保存文本数据
19641
+ */
19642
+ __publicField(this, "saveTextData", async () => {
19643
+ this.textEditorRef.value.saveTextData();
19644
+ });
19645
+ /**
19646
+ * 清空长文本
19647
+ */
19648
+ __publicField(this, "clearTextData", async () => {
19649
+ this.textEditorRef.value.clearTextData();
19650
+ });
19651
+ /**删除长文本 */
19652
+ __publicField(this, "deleteTextData", async () => {
19653
+ this.textEditorRef.value.deleteTextData();
19654
+ });
19655
+ /**
19656
+ * 删除长文本
19657
+ * @param Token
19658
+ */
19659
+ __publicField(this, "deleteTextDataByToken", async (Token) => {
19660
+ this.textEditorRef.value.deleteTextDataByToken(Token);
19661
+ });
19662
+ /**
19663
+ * 获取长文本
19664
+ */
19665
+ __publicField(this, "getText", () => {
19666
+ return this.textEditorRef.value.getText();
19667
+ });
19668
+ /**
19669
+ * 附件校验
19670
+ * @param Token
19671
+ */
19672
+ __publicField(this, "tokenList", (data, item) => {
19673
+ this.ctx.emit("TokenChange", data);
19674
+ if (data.list.length > 0) {
19675
+ this.props.formModel[item.model] = data.token;
19676
+ } else {
19677
+ this.props.formModel[item.model] = "";
19678
+ }
19679
+ });
19680
+ /**
19681
+ * 文本改变
19682
+ * @param data
19683
+ */
19684
+ __publicField(this, "textChange", (item, data) => {
19685
+ var _a;
19686
+ (_a = item.textEditorProp) == null ? void 0 : _a.onChange(data);
19687
+ });
19688
+ //#endregion 文本输入框 END
19689
+ /**
19690
+ * 构件选择值发生改变
19691
+ * @param item
19692
+ * @param data
19005
19693
  */
19006
19694
  __publicField(this, "StructureOnChange", (item, data) => {
19007
19695
  this.props.formModel[item.model] = data;
@@ -19026,6 +19714,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
19026
19714
  const _component_NvDicSelect = resolveComponent("NvDicSelect");
19027
19715
  const _component_NvStructureTypeSelect = resolveComponent("NvStructureTypeSelect");
19028
19716
  const _component_NvStructureSelect = resolveComponent("NvStructureSelect");
19717
+ const _component_UploadFileList = resolveComponent("UploadFileList");
19029
19718
  const _component_NvComForm = resolveComponent("NvComForm");
19030
19719
  return openBlock(), createBlock(_component_NvComForm, {
19031
19720
  onlyView: _ctx.onlyView,
@@ -19071,7 +19760,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
19071
19760
  multiple: _ctx.getPropValue(item.structureProp, "multiple"),
19072
19761
  selType: _ctx.getPropValue(item.structureProp, "selType"),
19073
19762
  onOnChange: ($event) => _ctx.StructureOnChange(item, $event)
19074
- }, null, 8, ["readonly", "dataValue", "multiple", "selType", "onOnChange"])) : createCommentVNode("", true)
19763
+ }, null, 8, ["readonly", "dataValue", "multiple", "selType", "onOnChange"])) : createCommentVNode("", true),
19764
+ item.type === "UploadFileList" ? (openBlock(), createBlock(_component_UploadFileList, {
19765
+ key: 5,
19766
+ style: { "height": "200px" },
19767
+ readonly: _ctx.getPropValue(item.uploadFileListProp, "readonly") || _ctx.onlyView,
19768
+ token: _ctx.formModel[item.model],
19769
+ onReturnFileList: ($event) => _ctx.tokenList($event, item)
19770
+ }, null, 8, ["readonly", "token", "onReturnFileList"])) : createCommentVNode("", true)
19075
19771
  ]),
19076
19772
  _: 1
19077
19773
  }, 8, ["onlyView", "formItems", "formModel"]);
@@ -19085,5 +19781,6 @@ export {
19085
19781
  NvStructureTypeSelect,
19086
19782
  TextEditor2 as TextEditor,
19087
19783
  UploadFile,
19784
+ UploadFileList,
19088
19785
  loadDictionaryData
19089
19786
  };