@newview/file-ui 1.1.20 → 1.1.22

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
  }
@@ -150,9 +150,9 @@ 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, [
@@ -176,20 +176,20 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
176
176
  onOnVisibleChange: _ctx.doClose
177
177
  }, {
178
178
  default: withCtx(() => [
179
- createElementVNode("div", _hoisted_1$3, [
179
+ createElementVNode("div", _hoisted_1$4, [
180
180
  createElementVNode("iframe", {
181
181
  src: _ctx.ifrUrl,
182
182
  class: "ifr-content",
183
183
  title: _ctx.fileInfo.fileInfo
184
- }, " ", 8, _hoisted_2$3)
184
+ }, " ", 8, _hoisted_2$4)
185
185
  ])
186
186
  ]),
187
187
  _: 1
188
188
  }, 8, ["modelValue", "title", "onOnVisibleChange"])
189
189
  ], 64);
190
190
  }
191
- const filePreview = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-e7f81a3b"]]);
192
- const propDefine$5 = {
191
+ const filePreview = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7], ["__scopeId", "data-v-e7f81a3b"]]);
192
+ const propDefine$6 = {
193
193
  linkParam: {
194
194
  // 带入的参数
195
195
  type: String,
@@ -256,17 +256,17 @@ const propDefine$5 = {
256
256
  default: "暂无附件"
257
257
  }
258
258
  };
259
- const _sfc_main$5 = defineComponent({
259
+ const _sfc_main$6 = defineComponent({
260
260
  name: "UploadFile",
261
261
  components: { filePreview },
262
262
  emits: ["success", "returnFileList"],
263
263
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
264
- props: propDefine$5,
264
+ props: propDefine$6,
265
265
  setup(props, ctx) {
266
- return new UploadFileInstance(props, ctx);
266
+ return new UploadFileInstance$1(props, ctx);
267
267
  }
268
268
  });
269
- class UploadFileInstance extends BaseInstance {
269
+ let UploadFileInstance$1 = class UploadFileInstance extends BaseInstance {
270
270
  // 全局属性
271
271
  constructor(props, ctx) {
272
272
  super();
@@ -601,11 +601,11 @@ class UploadFileInstance extends BaseInstance {
601
601
  }
602
602
  }
603
603
  //#endregion 业务逻辑 文件预览 END
604
- }
605
- const UploadFile_vue_vue_type_style_index_0_scoped_3abe7ff1_lang = "";
606
- const _withScopeId$1 = (n) => (pushScopeId("data-v-3abe7ff1"), n = n(), popScopeId(), n);
607
- const _hoisted_1$2 = { class: "uploadFile" };
608
- 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"];
609
609
  const _hoisted_3$2 = { class: "file-upload-list-cover" };
610
610
  const _hoisted_4$2 = { class: "file-upload-btn" };
611
611
  const _hoisted_5$2 = {
@@ -635,7 +635,7 @@ const _hoisted_9$2 = [
635
635
  ];
636
636
  const _hoisted_10$2 = { class: "file-upload-list-cover" };
637
637
  const _hoisted_11$2 = { class: "file-upload-btn" };
638
- function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
638
+ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
639
639
  const _component_Image = resolveComponent("Image");
640
640
  const _component_Icon = resolveComponent("Icon");
641
641
  const _component_Space = resolveComponent("Space");
@@ -643,7 +643,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
643
643
  const _component_Card = resolveComponent("Card");
644
644
  const _component_Spin = resolveComponent("Spin");
645
645
  const _component_filePreview = resolveComponent("filePreview");
646
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
646
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
647
647
  !_ctx.single ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.groups, (groupName) => {
648
648
  return openBlock(), createBlock(_component_Card, {
649
649
  "dis-hover": "",
@@ -686,7 +686,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
686
686
  _: 2
687
687
  }, 1024)
688
688
  ])
689
- ], 8, _hoisted_2$2)
689
+ ], 8, _hoisted_2$3)
690
690
  ], 2);
691
691
  }), 256)),
692
692
  !_ctx.readonly ? (openBlock(), createBlock(_component_Upload, {
@@ -806,7 +806,8 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
806
806
  ], 64)),
807
807
  _ctx.uploading ? (openBlock(), createBlock(_component_Spin, {
808
808
  key: 2,
809
- fix: ""
809
+ fix: "",
810
+ size: "large"
810
811
  })) : createCommentVNode("", true),
811
812
  createVNode(_component_filePreview, {
812
813
  modelValue: _ctx.previewVisible,
@@ -817,7 +818,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
817
818
  }, null, 8, ["modelValue", "preview-list", "preview-index", "file-info"])
818
819
  ]);
819
820
  }
820
- const UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-3abe7ff1"]]);
821
+ const UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-0e35ec0f"]]);
821
822
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
822
823
  function getDefaultExportFromCjs(x) {
823
824
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
@@ -15149,7 +15150,7 @@ const QuillEditor = defineComponent({
15149
15150
  });
15150
15151
  const vueQuill_snow = "";
15151
15152
  const vueQuill_bubble = "";
15152
- const propDefine$4 = {
15153
+ const propDefine$5 = {
15153
15154
  modelValue: {
15154
15155
  default: "",
15155
15156
  type: String
@@ -15167,14 +15168,14 @@ const propDefine$4 = {
15167
15168
  default: true
15168
15169
  }
15169
15170
  };
15170
- const _sfc_main$4 = defineComponent({
15171
+ const _sfc_main$5 = defineComponent({
15171
15172
  name: "TextEditor",
15172
15173
  components: {
15173
15174
  QuillEditor
15174
15175
  },
15175
15176
  emits: ["update:modelValue", "textChange"],
15176
15177
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
15177
- props: propDefine$4,
15178
+ props: propDefine$5,
15178
15179
  setup(props, ctx) {
15179
15180
  return new TextEditor$1(props, ctx);
15180
15181
  }
@@ -15293,7 +15294,7 @@ let TextEditor$1 = class TextEditor extends BaseInstance {
15293
15294
  //#endregion 业务逻辑 END
15294
15295
  };
15295
15296
  const TextEditor_vue_vue_type_style_index_0_scoped_5812cc0f_lang = "";
15296
- function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
15297
+ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
15297
15298
  const _component_QuillEditor = resolveComponent("QuillEditor");
15298
15299
  return openBlock(), createElementBlock("div", {
15299
15300
  style: { "height": "100%" },
@@ -15312,7 +15313,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
15312
15313
  }, null, 8, ["content", "readOnly", "theme", "onTextChange", "options"])) : createCommentVNode("", true)
15313
15314
  ], 2);
15314
15315
  }
15315
- 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"]]);
15316
15317
  const dictionaryDetailApi = new DictionaryDetailApi();
15317
15318
  const loadDictionaryData = async (optionCode, source, iViewOptions, platformId) => {
15318
15319
  if (!source) {
@@ -15328,7 +15329,7 @@ const loadDictionaryData = async (optionCode, source, iViewOptions, platformId)
15328
15329
  }
15329
15330
  return res;
15330
15331
  };
15331
- const propDefine$3 = {
15332
+ const propDefine$4 = {
15332
15333
  code: {
15333
15334
  // 字典码
15334
15335
  type: String,
@@ -15350,12 +15351,12 @@ const propDefine$3 = {
15350
15351
  default: false
15351
15352
  }
15352
15353
  };
15353
- const _sfc_main$3 = defineComponent({
15354
+ const _sfc_main$4 = defineComponent({
15354
15355
  name: "NvDicSelect",
15355
15356
  components: {},
15356
15357
  emits: ["input", "change"],
15357
15358
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
15358
- props: propDefine$3,
15359
+ props: propDefine$4,
15359
15360
  setup(props, ctx) {
15360
15361
  return new DicSelectInstance(props, ctx);
15361
15362
  }
@@ -15380,7 +15381,7 @@ class DicSelectInstance extends BaseInstance {
15380
15381
  this.dicOptions.value = await loadDictionaryData(this.props.code, [], true, this.props.platformId);
15381
15382
  }
15382
15383
  }
15383
- function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
15384
+ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
15384
15385
  const _component_Option = resolveComponent("Option");
15385
15386
  const _component_Select = resolveComponent("Select");
15386
15387
  return openBlock(), createBlock(_component_Select, {
@@ -15406,7 +15407,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
15406
15407
  _: 1
15407
15408
  }, 8, ["disabled", "modelValue", "onOnChange"]);
15408
15409
  }
15409
- 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]]);
15410
15411
  var Functions = {
15411
15412
  Identity: function(x) {
15412
15413
  return x;
@@ -18064,7 +18065,7 @@ var Grouping = function(groupKey, elements) {
18064
18065
  ArrayEnumerable.call(this, elements);
18065
18066
  };
18066
18067
  Grouping.prototype = new ArrayEnumerable();
18067
- const propDefine$2 = {
18068
+ const propDefine$3 = {
18068
18069
  // modelValue:{
18069
18070
  // // 平台Id
18070
18071
  // type: Array,
@@ -18086,12 +18087,12 @@ const propDefine$2 = {
18086
18087
  default: true
18087
18088
  }
18088
18089
  };
18089
- const _sfc_main$2 = defineComponent({
18090
+ const _sfc_main$3 = defineComponent({
18090
18091
  name: "NvStructureTypeSelect",
18091
18092
  components: {},
18092
18093
  emits: ["update", "on-change"],
18093
18094
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
18094
- props: propDefine$2,
18095
+ props: propDefine$3,
18095
18096
  setup(props, ctx) {
18096
18097
  return new StructureTypeSelectInstance(props, ctx);
18097
18098
  }
@@ -18337,8 +18338,8 @@ class StructureTypeSelectInstance extends BaseInstance {
18337
18338
  }
18338
18339
  const NvStructureTypeSelect_vue_vue_type_style_index_0_scoped_ef373745_lang = "";
18339
18340
  const NvStructureTypeSelect_vue_vue_type_style_index_1_lang = "";
18340
- const _hoisted_1$1 = { key: 0 };
18341
- const _hoisted_2$1 = {
18341
+ const _hoisted_1$2 = { key: 0 };
18342
+ const _hoisted_2$2 = {
18342
18343
  key: 0,
18343
18344
  ref: "StructureTypeSel",
18344
18345
  style: { "height": "220px", "display": "inline-block" }
@@ -18370,7 +18371,7 @@ const _hoisted_12$1 = {
18370
18371
  class: "nv-text-r",
18371
18372
  style: { "padding-right": "10px" }
18372
18373
  };
18373
- function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18374
+ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
18374
18375
  const _component_Tag = resolveComponent("Tag");
18375
18376
  const _component_Checkbox = resolveComponent("Checkbox");
18376
18377
  const _component_Icon = resolveComponent("Icon");
@@ -18387,7 +18388,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18387
18388
  onOnPopperHide: _ctx.poptipHideFun
18388
18389
  }, {
18389
18390
  content: withCtx(() => [
18390
- !_ctx.searchValue ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
18391
+ !_ctx.searchValue ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
18391
18392
  createElementVNode("div", _hoisted_3$1, [
18392
18393
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.StructureTypeData, (item) => {
18393
18394
  return openBlock(), createElementBlock("div", {
@@ -18480,7 +18481,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18480
18481
  class: "nv-c-p structuretype-sel-box",
18481
18482
  onClick: _cache[2] || (_cache[2] = ($event) => _ctx.readonly ? null : _ctx.searchView = true)
18482
18483
  }, [
18483
- _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 }, [
18484
18485
  _ctx.multiple ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.StructureTypeCheckData, (item, index) => {
18485
18486
  return withDirectives((openBlock(), createBlock(_component_Tag, {
18486
18487
  style: { "position": "relative", "z-index": "5" },
@@ -18516,8 +18517,8 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18516
18517
  }, 8, ["width", "disabled", "onOnPopperHide"])
18517
18518
  ]);
18518
18519
  }
18519
- const NvStructureTypeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-ef373745"]]);
18520
- const propDefine$1 = {
18520
+ const NvStructureTypeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-ef373745"]]);
18521
+ const propDefine$2 = {
18521
18522
  readonly: {
18522
18523
  // 只读
18523
18524
  type: Boolean,
@@ -18539,12 +18540,12 @@ const propDefine$1 = {
18539
18540
  default: true
18540
18541
  }
18541
18542
  };
18542
- const _sfc_main$1 = defineComponent({
18543
+ const _sfc_main$2 = defineComponent({
18543
18544
  name: "NvStructureSelect",
18544
18545
  components: {},
18545
18546
  emits: ["update", "on-change"],
18546
18547
  // 例如: ['clearRadioRow', 'change', 'delete', 'addchild']
18547
- props: propDefine$1,
18548
+ props: propDefine$2,
18548
18549
  setup(props, ctx) {
18549
18550
  return new StructureSelectInstance(props, ctx);
18550
18551
  }
@@ -18726,8 +18727,8 @@ class StructureSelectInstance extends BaseInstance {
18726
18727
  }
18727
18728
  const NvStructureSelect_vue_vue_type_style_index_0_scoped_fbbaca53_lang = "";
18728
18729
  const _withScopeId = (n) => (pushScopeId("data-v-fbbaca53"), n = n(), popScopeId(), n);
18729
- const _hoisted_1 = { key: 1 };
18730
- const _hoisted_2 = { class: "nv-pos-r" };
18730
+ const _hoisted_1$1 = { key: 1 };
18731
+ const _hoisted_2$1 = { class: "nv-pos-r" };
18731
18732
  const _hoisted_3 = { class: "nv-c-p structure-sel-box" };
18732
18733
  const _hoisted_4 = { key: 0 };
18733
18734
  const _hoisted_5 = {
@@ -18759,7 +18760,7 @@ const _hoisted_16 = {
18759
18760
  };
18760
18761
  const _hoisted_17 = { key: 0 };
18761
18762
  const _hoisted_18 = { key: 1 };
18762
- function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18763
+ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18763
18764
  const _component_Option = resolveComponent("Option");
18764
18765
  const _component_OptionGroup = resolveComponent("OptionGroup");
18765
18766
  const _component_Select = resolveComponent("Select");
@@ -18803,7 +18804,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18803
18804
  }), 256))
18804
18805
  ]),
18805
18806
  _: 1
18806
- }, 8, ["modelValue", "multiple", "onOnChange", "disabled"])) : (openBlock(), createElementBlock("div", _hoisted_1, [
18807
+ }, 8, ["modelValue", "multiple", "onOnChange", "disabled"])) : (openBlock(), createElementBlock("div", _hoisted_1$1, [
18807
18808
  createVNode(_component_Poptip, {
18808
18809
  placement: "bottom-start",
18809
18810
  width: 700,
@@ -18871,7 +18872,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18871
18872
  ])
18872
18873
  ]),
18873
18874
  default: withCtx(() => [
18874
- createElementVNode("div", _hoisted_2, [
18875
+ createElementVNode("div", _hoisted_2$1, [
18875
18876
  createElementVNode("div", _hoisted_3, [
18876
18877
  _ctx.StructureInstanceCheckData.length == 0 ? (openBlock(), createElementBlock("div", _hoisted_4, "点击选择构件")) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
18877
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, [
@@ -18909,102 +18910,786 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
18909
18910
  ])) : createCommentVNode("", true)
18910
18911
  ]));
18911
18912
  }
18912
- const NvStructureSelect = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-fbbaca53"]]);
18913
- const propDefine = {
18914
- onlyView: {
18915
- // 是否只读
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
+ // 是否压缩
18916
18947
  type: Boolean,
18917
18948
  default: false
18918
18949
  },
18919
- formItems: {
18920
- // 表单项
18950
+ format: {
18951
+ // 允许上传格式
18921
18952
  type: Array,
18922
18953
  default: () => []
18923
18954
  },
18924
- formModel: {
18925
- // 表单数据
18926
- type: Object,
18927
- default: () => {
18928
- }
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: "暂无附件"
18929
18979
  }
18930
18980
  };
18931
- const _sfc_main = defineComponent({
18932
- name: "NvComFormUp",
18933
- components: { UploadFile, TextEditor: TextEditor2, NvDicSelect, NvStructureTypeSelect, NvStructureSelect },
18934
- emits: ["textChange", "TokenChange"],
18935
- 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,
18936
18987
  setup(props, ctx) {
18937
- return new ComFormInstance(props, ctx);
18988
+ return new UploadFileInstance2(props, ctx);
18938
18989
  }
18939
18990
  });
18940
- class ComFormInstance extends BaseInstance {
18941
- // API实例化
18991
+ class UploadFileInstance2 extends BaseInstance {
18942
18992
  // 全局属性
18943
18993
  constructor(props, ctx) {
18944
18994
  super();
18945
18995
  __publicField(this, "props");
18946
18996
  __publicField(this, "ctx");
18947
- //#region 文本输入框
18997
+ // API实例化
18998
+ __publicField(this, "uploadApi", new UploadApi());
18999
+ __publicField(this, "fileInfoApi", new FileInfoApi());
19000
+ __publicField(this, "fileApi", new FileApi());
19001
+ //#region 附件列表
18948
19002
  // 私有属性 | private
19003
+ // private business2Test1: number = 0;
18949
19004
  // 响应属性 | ref、reactive、computed、watch
18950
- __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
+ }));
18951
19134
  // 私有方法 | private 方法名() {}
19135
+ // private test2() {}
18952
19136
  // 响应式方法 | xxx = () => {}
18953
- /**
18954
- * @description 保存文本数据
18955
- */
18956
- __publicField(this, "saveTextData", async () => {
18957
- this.textEditorRef.value.saveTextData();
19137
+ // doBtnClick2 = () = {}
19138
+ __publicField(this, "getuploadListGridRef", (el, index) => {
19139
+ if (el) {
19140
+ this.uploadListGridRef.value[index] = el;
19141
+ }
18958
19142
  });
18959
- /**
18960
- * 清空长文本
18961
- */
18962
- __publicField(this, "clearTextData", async () => {
18963
- 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
+ });
18964
19149
  });
18965
- /**删除长文本 */
18966
- __publicField(this, "deleteTextData", async () => {
18967
- 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
+ }
18968
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 = () => {}
18969
19183
  /**
18970
- * 删除长文本
18971
- * @param Token
18972
- */
18973
- __publicField(this, "deleteTextDataByToken", async (Token) => {
18974
- 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);
18975
19200
  });
18976
19201
  /**
18977
- * 获取长文本
18978
- */
18979
- __publicField(this, "getText", () => {
18980
- return this.textEditorRef.value.getText();
19202
+ * 文件格式错误
19203
+ */
19204
+ __publicField(this, "doFormatError", () => {
19205
+ this.message.warning("当前上传的文件格式不正确,请重新上传");
19206
+ this.uploading.value = false;
18981
19207
  });
18982
19208
  /**
18983
- * 附件校验
18984
- * @param Token
18985
- */
18986
- __publicField(this, "tokenList", (data, item) => {
18987
- this.ctx.emit("TokenChange", data);
18988
- if (data.list.length > 0) {
18989
- 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
+ );
18990
19216
  } else {
18991
- this.props.formModel[item.model] = "";
19217
+ this.message.warning(
19218
+ "文件太大超出上传限制,文件大小不得大于" + this.props.maxSize + "KB"
19219
+ );
18992
19220
  }
19221
+ this.uploading.value = false;
18993
19222
  });
18994
19223
  /**
18995
- * 文本改变
18996
- * @param data
18997
- */
18998
- __publicField(this, "textChange", (item, data) => {
18999
- var _a;
19000
- (_a = item.textEditorProp) == null ? void 0 : _a.onChange(data);
19224
+ * 上传之前
19225
+ */
19226
+ __publicField(this, "doBeforeUpload", () => {
19227
+ this.message.info("文件上传中,请稍等");
19228
+ this.uploading.value = true;
19001
19229
  });
19002
- //#endregion 文本输入框 END
19003
19230
  /**
19004
- * 构件选择值发生改变
19005
- * @param item
19006
- * @param data
19007
- */
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/eHBhY2tldCBlbmQ9InIiPz4VZwdsAAAF20lEQVR42uyc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"
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
+ const apiResult = await this.fileInfoApi.getEntities(QueryWrapper.create().in("Token", splitToken));
19475
+ this.fileList.value = this.utilities.parseApiResult(apiResult);
19476
+ this.uploading.value = false;
19477
+ if (isChange) {
19478
+ this.ctx.emit("returnFileList", { token: this.currentToken, list: this.fileList.value });
19479
+ }
19480
+ this.loadUploadListData();
19481
+ this.setPreviewList();
19482
+ }
19483
+ // 私有方法 | private 方法名() {}
19484
+ /**
19485
+ * 设置预览列表
19486
+ */
19487
+ setPreviewList() {
19488
+ let index = 0;
19489
+ this.previewList.value = [];
19490
+ for (const fileInfo of this.fileList.value) {
19491
+ if (this.isImage(fileInfo)) {
19492
+ fileInfo.PreviewIndex = index;
19493
+ this.previewList.value.push(this.getImgUrl(fileInfo));
19494
+ index++;
19495
+ }
19496
+ }
19497
+ }
19498
+ //#endregion 业务逻辑 文件预览 END
19499
+ }
19500
+ const UploadFileList_vue_vue_type_style_index_0_scoped_cd979ed3_lang = "";
19501
+ const _hoisted_1 = { class: "uploadFileList" };
19502
+ const _hoisted_2 = { class: "up-btn-box" };
19503
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
19504
+ const _component_Spin = resolveComponent("Spin");
19505
+ const _component_Button = resolveComponent("Button");
19506
+ const _component_Upload = resolveComponent("Upload");
19507
+ const _component_NvGrid = resolveComponent("NvGrid");
19508
+ const _component_Card = resolveComponent("Card");
19509
+ const _component_filePreview = resolveComponent("filePreview");
19510
+ return openBlock(), createElementBlock("div", _hoisted_1, [
19511
+ _ctx.uploading ? (openBlock(), createBlock(_component_Spin, {
19512
+ key: 0,
19513
+ fix: "",
19514
+ size: "large"
19515
+ })) : createCommentVNode("", true),
19516
+ !_ctx.single ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.groups, (groupName, index) => {
19517
+ return openBlock(), createBlock(_component_Card, {
19518
+ "dis-hover": "",
19519
+ key: index,
19520
+ style: { "margin-bottom": "8px", "height": "100%" }
19521
+ }, createSlots({
19522
+ default: withCtx(() => [
19523
+ createElementVNode("div", _hoisted_2, [
19524
+ !_ctx.isShowtrash ? (openBlock(), createBlock(_component_Upload, {
19525
+ key: 0,
19526
+ ref_for: true,
19527
+ ref: "uploadRef",
19528
+ type: "drag",
19529
+ name: "FormFile",
19530
+ multiple: _ctx.multiple,
19531
+ "show-upload-list": false,
19532
+ format: _ctx.format,
19533
+ "max-size": _ctx.maxSize,
19534
+ action: _ctx.action,
19535
+ headers: _ctx.headers,
19536
+ data: _ctx.uploadFilePos[groupName],
19537
+ "on-success": _ctx.doSuccess,
19538
+ "on-format-error": _ctx.doFormatError,
19539
+ "on-exceeded-size": _ctx.doMaxSize,
19540
+ "before-upload": _ctx.doBeforeUpload,
19541
+ style: { "display": "inline-block", "width": "54px" }
19542
+ }, {
19543
+ default: withCtx(() => [
19544
+ _ctx.isShowUpBtn ? (openBlock(), createBlock(_component_Button, {
19545
+ key: 0,
19546
+ type: "primary",
19547
+ size: "small"
19548
+ }, {
19549
+ default: withCtx(() => [
19550
+ createTextVNode("上传")
19551
+ ]),
19552
+ _: 1
19553
+ })) : createCommentVNode("", true)
19554
+ ]),
19555
+ _: 2
19556
+ }, 1032, ["multiple", "format", "max-size", "action", "headers", "data", "on-success", "on-format-error", "on-exceeded-size", "before-upload"])) : createCommentVNode("", true),
19557
+ !_ctx.isShowtrash ? (openBlock(), createBlock(_component_Button, {
19558
+ key: 1,
19559
+ type: "primary",
19560
+ size: "small",
19561
+ onClick: _ctx.uploadGridSave
19562
+ }, {
19563
+ default: withCtx(() => [
19564
+ createTextVNode("保存")
19565
+ ]),
19566
+ _: 1
19567
+ }, 8, ["onClick"])) : createCommentVNode("", true)
19568
+ ]),
19569
+ createVNode(_component_NvGrid, {
19570
+ ref_for: true,
19571
+ ref: (el) => _ctx.getuploadListGridRef(el, index),
19572
+ option: _ctx.uploadListGridOption
19573
+ }, null, 8, ["option"])
19574
+ ]),
19575
+ _: 2
19576
+ }, [
19577
+ groupName != "默认" ? {
19578
+ name: "title",
19579
+ fn: withCtx(() => [
19580
+ createTextVNode(toDisplayString(groupName), 1)
19581
+ ]),
19582
+ key: "0"
19583
+ } : void 0
19584
+ ]), 1024);
19585
+ }), 128)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
19586
+ createTextVNode("附件列表暂不支持分组")
19587
+ ], 64)),
19588
+ createVNode(_component_filePreview, {
19589
+ modelValue: _ctx.previewVisible,
19590
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.previewVisible = $event),
19591
+ "preview-list": _ctx.previewList,
19592
+ "preview-index": _ctx.previewIndex,
19593
+ "file-info": _ctx.previewFileInfo
19594
+ }, null, 8, ["modelValue", "preview-list", "preview-index", "file-info"])
19595
+ ]);
19596
+ }
19597
+ const UploadFileList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-cd979ed3"]]);
19598
+ const propDefine = {
19599
+ onlyView: {
19600
+ // 是否只读
19601
+ type: Boolean,
19602
+ default: false
19603
+ },
19604
+ formItems: {
19605
+ // 表单项
19606
+ type: Array,
19607
+ default: () => []
19608
+ },
19609
+ formModel: {
19610
+ // 表单数据
19611
+ type: Object,
19612
+ default: () => {
19613
+ }
19614
+ }
19615
+ };
19616
+ const _sfc_main = defineComponent({
19617
+ name: "NvComFormUp",
19618
+ components: { UploadFile, TextEditor: TextEditor2, NvDicSelect, NvStructureTypeSelect, NvStructureSelect, UploadFileList },
19619
+ emits: ["textChange", "TokenChange"],
19620
+ props: propDefine,
19621
+ setup(props, ctx) {
19622
+ return new ComFormInstance(props, ctx);
19623
+ }
19624
+ });
19625
+ class ComFormInstance extends BaseInstance {
19626
+ // API实例化
19627
+ // 全局属性
19628
+ constructor(props, ctx) {
19629
+ super();
19630
+ __publicField(this, "props");
19631
+ __publicField(this, "ctx");
19632
+ //#region 文本输入框
19633
+ // 私有属性 | private
19634
+ // 响应属性 | ref、reactive、computed、watch
19635
+ __publicField(this, "textEditorRef", ref());
19636
+ // 私有方法 | private 方法名() {}
19637
+ // 响应式方法 | xxx = () => {}
19638
+ /**
19639
+ * @description 保存文本数据
19640
+ */
19641
+ __publicField(this, "saveTextData", async () => {
19642
+ this.textEditorRef.value.saveTextData();
19643
+ });
19644
+ /**
19645
+ * 清空长文本
19646
+ */
19647
+ __publicField(this, "clearTextData", async () => {
19648
+ this.textEditorRef.value.clearTextData();
19649
+ });
19650
+ /**删除长文本 */
19651
+ __publicField(this, "deleteTextData", async () => {
19652
+ this.textEditorRef.value.deleteTextData();
19653
+ });
19654
+ /**
19655
+ * 删除长文本
19656
+ * @param Token
19657
+ */
19658
+ __publicField(this, "deleteTextDataByToken", async (Token) => {
19659
+ this.textEditorRef.value.deleteTextDataByToken(Token);
19660
+ });
19661
+ /**
19662
+ * 获取长文本
19663
+ */
19664
+ __publicField(this, "getText", () => {
19665
+ return this.textEditorRef.value.getText();
19666
+ });
19667
+ /**
19668
+ * 附件校验
19669
+ * @param Token
19670
+ */
19671
+ __publicField(this, "tokenList", (data, item) => {
19672
+ this.ctx.emit("TokenChange", data);
19673
+ if (data.list.length > 0) {
19674
+ this.props.formModel[item.model] = data.token;
19675
+ } else {
19676
+ this.props.formModel[item.model] = "";
19677
+ }
19678
+ });
19679
+ /**
19680
+ * 文本改变
19681
+ * @param data
19682
+ */
19683
+ __publicField(this, "textChange", (item, data) => {
19684
+ var _a;
19685
+ (_a = item.textEditorProp) == null ? void 0 : _a.onChange(data);
19686
+ });
19687
+ //#endregion 文本输入框 END
19688
+ /**
19689
+ * 构件选择值发生改变
19690
+ * @param item
19691
+ * @param data
19692
+ */
19008
19693
  __publicField(this, "StructureOnChange", (item, data) => {
19009
19694
  this.props.formModel[item.model] = data;
19010
19695
  });
@@ -19028,6 +19713,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
19028
19713
  const _component_NvDicSelect = resolveComponent("NvDicSelect");
19029
19714
  const _component_NvStructureTypeSelect = resolveComponent("NvStructureTypeSelect");
19030
19715
  const _component_NvStructureSelect = resolveComponent("NvStructureSelect");
19716
+ const _component_UploadFileList = resolveComponent("UploadFileList");
19031
19717
  const _component_NvComForm = resolveComponent("NvComForm");
19032
19718
  return openBlock(), createBlock(_component_NvComForm, {
19033
19719
  onlyView: _ctx.onlyView,
@@ -19073,7 +19759,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
19073
19759
  multiple: _ctx.getPropValue(item.structureProp, "multiple"),
19074
19760
  selType: _ctx.getPropValue(item.structureProp, "selType"),
19075
19761
  onOnChange: ($event) => _ctx.StructureOnChange(item, $event)
19076
- }, null, 8, ["readonly", "dataValue", "multiple", "selType", "onOnChange"])) : createCommentVNode("", true)
19762
+ }, null, 8, ["readonly", "dataValue", "multiple", "selType", "onOnChange"])) : createCommentVNode("", true),
19763
+ item.type === "UploadFileList" ? (openBlock(), createBlock(_component_UploadFileList, {
19764
+ key: 5,
19765
+ style: { "height": "200px" },
19766
+ readonly: _ctx.getPropValue(item.uploadFileListProp, "readonly") || _ctx.onlyView,
19767
+ token: _ctx.formModel[item.model],
19768
+ onReturnFileList: ($event) => _ctx.tokenList($event, item)
19769
+ }, null, 8, ["readonly", "token", "onReturnFileList"])) : createCommentVNode("", true)
19077
19770
  ]),
19078
19771
  _: 1
19079
19772
  }, 8, ["onlyView", "formItems", "formModel"]);
@@ -19087,5 +19780,6 @@ export {
19087
19780
  NvStructureTypeSelect,
19088
19781
  TextEditor2 as TextEditor,
19089
19782
  UploadFile,
19783
+ UploadFileList,
19090
19784
  loadDictionaryData
19091
19785
  };