el-plus 0.0.47 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +453 -276
  4. package/dist/index.full.min.js +1 -1
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +1 -1
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +453 -276
  9. package/es/components/attachment/index.d.ts +24 -3
  10. package/es/components/attachment/src/attachment.d.ts +4 -0
  11. package/es/components/attachment/src/attachment.mjs +5 -0
  12. package/es/components/attachment/src/attachment.mjs.map +1 -1
  13. package/es/components/attachment/src/attachment.vue.d.ts +12 -1
  14. package/es/components/attachment/src/attachment.vue2.mjs +69 -29
  15. package/es/components/attachment/src/attachment.vue2.mjs.map +1 -1
  16. package/es/components/attachment/src/use-attachment.d.ts +32 -24
  17. package/es/components/attachment/src/use-attachment.mjs +65 -12
  18. package/es/components/attachment/src/use-attachment.mjs.map +1 -1
  19. package/es/components/header/index.d.ts +15 -0
  20. package/es/components/header/src/header.d.ts +4 -0
  21. package/es/components/header/src/header.mjs +6 -1
  22. package/es/components/header/src/header.mjs.map +1 -1
  23. package/es/components/header/src/header.vue.d.ts +9 -0
  24. package/es/components/header/src/header.vue2.mjs +6 -1
  25. package/es/components/header/src/header.vue2.mjs.map +1 -1
  26. package/es/components/header/src/use-header.mjs +42 -44
  27. package/es/components/header/src/use-header.mjs.map +1 -1
  28. package/es/hooks/dialog/use-dialog.mjs.map +1 -1
  29. package/es/locale/lang/en.d.ts +12 -0
  30. package/es/locale/lang/en.mjs +12 -0
  31. package/es/locale/lang/en.mjs.map +1 -1
  32. package/es/locale/lang/zh-cn.d.ts +12 -0
  33. package/es/locale/lang/zh-cn.mjs +12 -0
  34. package/es/locale/lang/zh-cn.mjs.map +1 -1
  35. package/es/package.json.mjs +1 -1
  36. package/es/utils/file.d.ts +1 -1
  37. package/es/utils/file.mjs.map +1 -1
  38. package/lib/components/attachment/index.d.ts +24 -3
  39. package/lib/components/attachment/src/attachment.d.ts +4 -0
  40. package/lib/components/attachment/src/attachment.js +5 -0
  41. package/lib/components/attachment/src/attachment.js.map +1 -1
  42. package/lib/components/attachment/src/attachment.vue.d.ts +12 -1
  43. package/lib/components/attachment/src/attachment.vue2.js +68 -28
  44. package/lib/components/attachment/src/attachment.vue2.js.map +1 -1
  45. package/lib/components/attachment/src/use-attachment.d.ts +32 -24
  46. package/lib/components/attachment/src/use-attachment.js +63 -10
  47. package/lib/components/attachment/src/use-attachment.js.map +1 -1
  48. package/lib/components/header/index.d.ts +15 -0
  49. package/lib/components/header/src/header.d.ts +4 -0
  50. package/lib/components/header/src/header.js +6 -1
  51. package/lib/components/header/src/header.js.map +1 -1
  52. package/lib/components/header/src/header.vue.d.ts +9 -0
  53. package/lib/components/header/src/header.vue2.js +6 -1
  54. package/lib/components/header/src/header.vue2.js.map +1 -1
  55. package/lib/components/header/src/use-header.js +42 -44
  56. package/lib/components/header/src/use-header.js.map +1 -1
  57. package/lib/hooks/dialog/use-dialog.js.map +1 -1
  58. package/lib/locale/lang/en.d.ts +12 -0
  59. package/lib/locale/lang/en.js +12 -0
  60. package/lib/locale/lang/en.js.map +1 -1
  61. package/lib/locale/lang/zh-cn.d.ts +12 -0
  62. package/lib/locale/lang/zh-cn.js +12 -0
  63. package/lib/locale/lang/zh-cn.js.map +1 -1
  64. package/lib/package.json.js +1 -1
  65. package/lib/utils/file.d.ts +1 -1
  66. package/lib/utils/file.js.map +1 -1
  67. package/package.json +1 -1
  68. package/theme-chalk/attachment.css +1 -0
  69. package/theme-chalk/index.css +1 -1
  70. package/theme-chalk/src/attachment.scss +37 -0
  71. package/theme-chalk/src/index.scss +2 -1
@@ -32,12 +32,18 @@ export declare const EpAttachment: {
32
32
  readonly type: BooleanConstructor;
33
33
  readonly default: false;
34
34
  };
35
+ isShowOpenDialogButton: {
36
+ readonly type: BooleanConstructor;
37
+ readonly default: false;
38
+ };
35
39
  modelValue: {
36
40
  type: import("vue").PropType<any[]>;
37
41
  };
38
42
  }>> & Readonly<{
39
43
  "onUpdate:modelValue"?: ((value: any[] | undefined) => any) | undefined;
40
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
+ }>, {
45
+ open: () => Promise<any>;
46
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
41
47
  "update:modelValue": (value: any[] | undefined) => any;
42
48
  }, import("vue").PublicProps, {
43
49
  formatColumns: Partial<import("element-plus").TableColumnCtx & {
@@ -57,6 +63,7 @@ export declare const EpAttachment: {
57
63
  openType: "dialog" | "normal";
58
64
  isType: boolean;
59
65
  isNote: boolean;
66
+ isShowOpenDialogButton: boolean;
60
67
  }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
61
68
  P: {};
62
69
  B: {};
@@ -97,12 +104,18 @@ export declare const EpAttachment: {
97
104
  readonly type: BooleanConstructor;
98
105
  readonly default: false;
99
106
  };
107
+ isShowOpenDialogButton: {
108
+ readonly type: BooleanConstructor;
109
+ readonly default: false;
110
+ };
100
111
  modelValue: {
101
112
  type: import("vue").PropType<any[]>;
102
113
  };
103
114
  }>> & Readonly<{
104
115
  "onUpdate:modelValue"?: ((value: any[] | undefined) => any) | undefined;
105
- }>, {}, {}, {}, {}, {
116
+ }>, {
117
+ open: () => Promise<any>;
118
+ }, {}, {}, {}, {
106
119
  formatColumns: Partial<import("element-plus").TableColumnCtx & {
107
120
  [key: string]: any;
108
121
  required: boolean | (() => boolean);
@@ -120,6 +133,7 @@ export declare const EpAttachment: {
120
133
  openType: "dialog" | "normal";
121
134
  isType: boolean;
122
135
  isNote: boolean;
136
+ isShowOpenDialogButton: boolean;
123
137
  }>;
124
138
  __isFragment?: never;
125
139
  __isTeleport?: never;
@@ -144,12 +158,18 @@ export declare const EpAttachment: {
144
158
  readonly type: BooleanConstructor;
145
159
  readonly default: false;
146
160
  };
161
+ isShowOpenDialogButton: {
162
+ readonly type: BooleanConstructor;
163
+ readonly default: false;
164
+ };
147
165
  modelValue: {
148
166
  type: import("vue").PropType<any[]>;
149
167
  };
150
168
  }>> & Readonly<{
151
169
  "onUpdate:modelValue"?: ((value: any[] | undefined) => any) | undefined;
152
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
170
+ }>, {
171
+ open: () => Promise<any>;
172
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
153
173
  "update:modelValue": (value: any[] | undefined) => any;
154
174
  }, string, {
155
175
  formatColumns: Partial<import("element-plus").TableColumnCtx & {
@@ -169,6 +189,7 @@ export declare const EpAttachment: {
169
189
  openType: "dialog" | "normal";
170
190
  isType: boolean;
171
191
  isNote: boolean;
192
+ isShowOpenDialogButton: boolean;
172
193
  }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("vue").Plugin;
173
194
  export default EpAttachment;
174
195
  export * from './src/attachment';
@@ -19,5 +19,9 @@ export declare const attachmentProps: {
19
19
  readonly type: BooleanConstructor;
20
20
  readonly default: false;
21
21
  };
22
+ readonly isShowOpenDialogButton: {
23
+ readonly type: BooleanConstructor;
24
+ readonly default: false;
25
+ };
22
26
  };
23
27
  export type AttachmentProps = ExtractPropTypes<typeof attachmentProps>;
@@ -26,6 +26,11 @@ const attachmentProps = {
26
26
  isNote: {
27
27
  type: Boolean,
28
28
  default: false
29
+ },
30
+ // 是否需要打开弹窗按钮
31
+ isShowOpenDialogButton: {
32
+ type: Boolean,
33
+ default: false
29
34
  }
30
35
  };
31
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.js","sources":["../../../../../../packages/components/attachment/src/attachment.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from 'vue'\nimport { tableProps } from '@el-plus/components/table'\nimport { headerProps } from '@el-plus/components/header'\nexport const attachmentProps = {\n // 格式化列\n formatColumns: {\n ...tableProps.formatColumns,\n },\n // 页面模式\n mode: {\n ...headerProps.mode,\n },\n // 展示模式\n openType: {\n type: String as PropType<'dialog' | 'normal'>,\n default: 'dialog',\n },\n // 是否需要类型\n isType: {\n type: Boolean,\n default: true,\n },\n // 是否需要备注\n isNote: {\n type: Boolean,\n default: false,\n },\n} as const\nexport type AttachmentProps = ExtractPropTypes<typeof attachmentProps>\n"],"names":["tableProps","headerProps"],"mappings":";;;;;AAGO,MAAM,eAAA,GAAkB;AAAA;AAAA,EAE7B,aAAA,EAAe;AAAA,IACb,GAAGA,gBAAA,CAAW;AAAA,GAChB;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,GAAGC,kBAAA,CAAY;AAAA,GACjB;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb;;;;"}
1
+ {"version":3,"file":"attachment.js","sources":["../../../../../../packages/components/attachment/src/attachment.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from 'vue'\nimport { tableProps } from '@el-plus/components/table'\nimport { headerProps } from '@el-plus/components/header'\nexport const attachmentProps = {\n // 格式化列\n formatColumns: {\n ...tableProps.formatColumns,\n },\n // 页面模式\n mode: {\n ...headerProps.mode,\n },\n // 展示模式\n openType: {\n type: String as PropType<'dialog' | 'normal'>,\n default: 'dialog',\n },\n // 是否需要类型\n isType: {\n type: Boolean,\n default: true,\n },\n // 是否需要备注\n isNote: {\n type: Boolean,\n default: false,\n },\n // 是否需要打开弹窗按钮\n isShowOpenDialogButton: {\n type: Boolean,\n default: false,\n },\n} as const\nexport type AttachmentProps = ExtractPropTypes<typeof attachmentProps>\n"],"names":["tableProps","headerProps"],"mappings":";;;;;AAGO,MAAM,eAAA,GAAkB;AAAA;AAAA,EAE7B,aAAA,EAAe;AAAA,IACb,GAAGA,gBAAA,CAAW;AAAA,GAChB;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,GAAGC,kBAAA,CAAY;AAAA,GACjB;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb;;;;"}
@@ -18,10 +18,16 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
18
18
  readonly type: BooleanConstructor;
19
19
  readonly default: false;
20
20
  };
21
+ isShowOpenDialogButton: {
22
+ readonly type: BooleanConstructor;
23
+ readonly default: false;
24
+ };
21
25
  modelValue: {
22
26
  type: import("vue").PropType<any[]>;
23
27
  };
24
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ }>, {
29
+ open: () => Promise<any>;
30
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
25
31
  "update:modelValue": (value: any[] | undefined) => any;
26
32
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
27
33
  formatColumns: {
@@ -43,6 +49,10 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
43
49
  readonly type: BooleanConstructor;
44
50
  readonly default: false;
45
51
  };
52
+ isShowOpenDialogButton: {
53
+ readonly type: BooleanConstructor;
54
+ readonly default: false;
55
+ };
46
56
  modelValue: {
47
57
  type: import("vue").PropType<any[]>;
48
58
  };
@@ -66,6 +76,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
66
76
  openType: "dialog" | "normal";
67
77
  isType: boolean;
68
78
  isNote: boolean;
79
+ isShowOpenDialogButton: boolean;
69
80
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
70
81
  declare const _default: typeof __VLS_export;
71
82
  export default _default;
@@ -9,6 +9,8 @@ var attachment = require('./attachment.js');
9
9
  var index = require('../../table/index.js');
10
10
  var useAttachment = require('./use-attachment.js');
11
11
  var useDialog = require('../../../hooks/dialog/use-dialog.js');
12
+ var useLocale = require('../../../hooks/use-locale.js');
13
+ var elementPlus = require('element-plus');
12
14
 
13
15
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
14
16
  ...{
@@ -21,46 +23,84 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
21
23
  "modelModifiers": {}
22
24
  }),
23
25
  emits: ["update:modelValue"],
24
- setup(__props) {
26
+ setup(__props, { expose: __expose }) {
27
+ const { t } = useLocale.useLocale();
25
28
  const bem$1 = bem.createNameSpace("attachment");
26
29
  const props$1 = __props;
27
30
  const modelValue = vue.useModel(__props, "modelValue");
31
+ const { columns, addAttachment, isNormalOpen, onConfirm, onCancel } = useAttachment.useAttachment(props$1, {
32
+ data: modelValue
33
+ });
28
34
  const AttachmentDialog = useDialog.useDialog({
29
- class: bem$1.em("dialog", props$1.openType === "normal" ? props$1.openType : ""),
30
35
  width: 850,
31
36
  center: true,
32
- title: "\u9644\u4EF6\u7BA1\u7406",
37
+ title: isNormalOpen ? "" : t("ep.attachment.manageAttachment"),
38
+ modal: !isNormalOpen,
39
+ showClose: !isNormalOpen,
40
+ showFooter: !isNormalOpen,
41
+ transition: isNormalOpen ? "" : "dialog-fade",
42
+ modalClass: bem$1.em(
43
+ "dialog",
44
+ props$1.openType === "normal" ? props$1.openType : ""
45
+ ),
33
46
  onConfirm: async (resolve) => {
47
+ onConfirm(resolve);
48
+ },
49
+ onCancel: (resolve) => {
50
+ onCancel(resolve);
34
51
  }
35
52
  });
36
- const { columns } = useAttachment.useAttachment(props$1, {
37
- data: modelValue
53
+ const open = AttachmentDialog.open;
54
+ if (isNormalOpen) {
55
+ open();
56
+ }
57
+ __expose({
58
+ open
38
59
  });
39
60
  return (_ctx, _cache) => {
40
- const _component_el_button = vue.resolveComponent("el-button");
41
- return vue.openBlock(), vue.createBlock(vue.unref(AttachmentDialog), null, {
42
- default: vue.withCtx(() => [
43
- _ctx.openType === "dialog" ? (vue.openBlock(), vue.createBlock(_component_el_button, {
44
- key: 0,
45
- type: "primary",
46
- size: "default"
47
- }, {
48
- default: vue.withCtx(() => [
49
- vue.createTextVNode("\u6DFB\u52A0\u9644\u4EF6")
61
+ const _component_EpButtons = vue.resolveComponent("EpButtons");
62
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
63
+ _ctx.isShowOpenDialogButton ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElButton), {
64
+ key: 0,
65
+ type: "primary",
66
+ plain: "",
67
+ size: "small",
68
+ class: vue.normalizeClass(vue.unref(bem$1).e("handler")),
69
+ onClick: vue.unref(open)
70
+ }, {
71
+ default: vue.withCtx(() => [
72
+ vue.createTextVNode(vue.toDisplayString(vue.unref(t)("ep.attachment.manageAttachment")) + "(" + vue.toDisplayString(modelValue.value?.length || 0) + ") ", 1)
73
+ ]),
74
+ _: 1
75
+ }, 8, ["class", "onClick"])) : vue.createCommentVNode("", true),
76
+ vue.createVNode(vue.unref(AttachmentDialog), null, {
77
+ default: vue.withCtx(() => [
78
+ vue.createElementVNode("div", { style: { "margin-bottom": "10px", "text-align": "right" } }, [
79
+ _ctx.openType === "dialog" ? (vue.openBlock(), vue.createBlock(_component_EpButtons, {
80
+ key: 0,
81
+ type: "primary",
82
+ list: [
83
+ {
84
+ name: vue.unref(t)("ep.attachment.addAttachment"),
85
+ type: "primary",
86
+ onClick: vue.unref(addAttachment)
87
+ }
88
+ ]
89
+ }, null, 8, ["list"])) : vue.createCommentVNode("", true)
50
90
  ]),
51
- _: 1
52
- })) : vue.createCommentVNode("", true),
53
- vue.createVNode(vue.unref(index.EpTable), vue.mergeProps({
54
- class: `${vue.unref(bem$1).b()} ${vue.unref(props.prepareClassNames)()}`,
55
- style: {
56
- ...vue.unref(props.prepareStyles)()
57
- },
58
- columns: vue.unref(columns),
59
- data: modelValue.value
60
- }, props$1), null, 16, ["class", "style", "columns", "data"])
61
- ]),
62
- _: 1
63
- });
91
+ vue.createVNode(vue.unref(index.EpTable), vue.mergeProps({
92
+ ref: "tableRef",
93
+ class: `${vue.unref(bem$1).b()} ${vue.unref(props.prepareClassNames)()}`,
94
+ style: {
95
+ ...vue.unref(props.prepareStyles)()
96
+ },
97
+ columns: vue.unref(columns),
98
+ data: modelValue.value
99
+ }, props$1), null, 16, ["class", "style", "columns", "data"])
100
+ ]),
101
+ _: 1
102
+ })
103
+ ], 64);
64
104
  };
65
105
  }
66
106
  });
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.vue2.js","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\n <AttachmentDialog>\n <el-button v-if=\"openType === 'dialog'\" type=\"primary\" size=\"default\"\n >添加附件</el-button\n >\n <ep-table\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n :columns=\"columns\"\n :data=\"modelValue\"\n v-bind=\"props\"\n >\n </ep-table>\n </AttachmentDialog>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { attachmentProps } from './attachment'\nimport EpTable from '@el-plus/components/table'\nimport { useAttachment } from './use-attachment'\nimport type { TableProps } from '@el-plus/components/table'\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\ndefineOptions({\n name: 'EpAttachment',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('attachment')\nconst props = defineProps(attachmentProps)\nconst modelValue = defineModel<TableProps['data']>()\nconst AttachmentDialog = useDialog({\n class: bem.em('dialog', props.openType === 'normal' ? props.openType : ''),\n width: 850,\n center: true,\n title: '附件管理',\n onConfirm: async (resolve) => {},\n})\nconst { columns } = useAttachment(props, {\n data: modelValue,\n})\n</script>\n"],"names":["bem","createNameSpace","props","_useModel","useDialog","useAttachment","_createBlock","_unref","openType","_createVNode","_mergeProps","prepareClassNames","prepareStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA6BA,IAAA,MAAMA,KAAA,GAAMC,oBAAgB,YAAY,CAAA;AACxC,IAAA,MAAMC,OAAA,GAAQ,OAAA;AACd,IAAA,MAAM,UAAA,GAAaC,YAAA,CAA+B,OAAA,EAAA,YAAC,CAAA;AACnD,IAAA,MAAM,mBAAmBC,mBAAA,CAAU;AAAA,MACjC,KAAA,EAAOJ,MAAI,EAAA,CAAG,QAAA,EAAUE,QAAM,QAAA,KAAa,QAAA,GAAWA,OAAA,CAAM,QAAA,GAAW,EAAE,CAAA;AAAA,MACzE,KAAA,EAAO,GAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO,0BAAA;AAAA,MACP,SAAA,EAAW,OAAO,OAAA,KAAY;AAAA,MAAC;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAIG,2BAAA,CAAcH,OAAA,EAAO;AAAA,MACvC,IAAA,EAAM;AAAA,KACP,CAAA;;;8BAxCCI,eAAA,CAcmBC,SAAA,CAAA,gBAAA,GAAA,IAAA,EAAA;AAAA,6BAbjB,MAEC;AAAA,UAFgBC,KAAAA,QAAAA,KAAQ,QAAA,qBAAzBF,gBAEC,oBAAA,EAAA;AAAA;YAFuC,IAAA,EAAK,SAAA;AAAA,YAAU,IAAA,EAAK;AAAA;iCACzD,MAAI;AAAA,kCAAJ,0BAAI;AAAA;;;UAEPG,eAAA,CASWF,SAAA,iBATXG,cAAA,CASW;AAAA,YARR,KAAA,EAAK,CAAA,EAAKH,SAAA,CAAAP,KAAA,CAAA,CAAI,CAAA,MAAOO,SAAA,CAAAI,uBAAA,CAAA,EAAiB,CAAA,CAAA;AAAA,YACtC,KAAA,EAAK;AAAA,iBAAeJ,SAAA,CAAAK,mBAAA,CAAA;AAAa;YAGjC,OAAA,EAASL,UAAA,OAAA,CAAA;AAAA,YACT,MAAM,UAAA,CAAA;AAAA,aACCL,OAAK,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAAA;;;;;;;;;"}
1
+ {"version":3,"file":"attachment.vue2.js","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\n <ElButton\n v-if=\"isShowOpenDialogButton\"\n type=\"primary\"\n plain\n size=\"small\"\n :class=\"bem.e('handler')\"\n @click=\"open\"\n >\n {{ t('ep.attachment.manageAttachment') }}({{ modelValue?.length || 0 }})\n </ElButton>\n <AttachmentDialog>\n <div style=\"margin-bottom: 10px; text-align: right\">\n <EpButtons\n v-if=\"openType === 'dialog'\"\n type=\"primary\"\n :list=\"[\n {\n name: t('ep.attachment.addAttachment'),\n type: 'primary',\n onClick: addAttachment,\n },\n ]\"\n />\n </div>\n\n <EpTable\n ref=\"tableRef\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n :columns=\"columns\"\n :data=\"modelValue\"\n v-bind=\"props\"\n >\n </EpTable>\n </AttachmentDialog>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { attachmentProps } from './attachment'\nimport EpTable from '@el-plus/components/table'\nimport { useAttachment } from './use-attachment'\nimport type { TableProps } from '@el-plus/components/table'\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { ElButton } from 'element-plus'\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpAttachment',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('attachment')\nconst props = defineProps(attachmentProps)\nconst modelValue = defineModel<TableProps['data']>()\nconst { columns, addAttachment, isNormalOpen, onConfirm, onCancel } =\n useAttachment(props, {\n data: modelValue,\n })\nconst AttachmentDialog = useDialog({\n width: 850,\n center: true,\n title: isNormalOpen ? '' : t('ep.attachment.manageAttachment'),\n modal: !isNormalOpen,\n showClose: !isNormalOpen,\n showFooter: !isNormalOpen,\n transition: isNormalOpen ? '' : 'dialog-fade',\n modalClass: bem.em(\n 'dialog',\n props.openType === 'normal' ? props.openType : '',\n ),\n onConfirm: async (resolve) => {\n onConfirm(resolve)\n },\n onCancel: (resolve) => {\n onCancel(resolve)\n },\n})\nconst open = AttachmentDialog.open\nif (isNormalOpen) {\n open()\n}\ndefineExpose({\n open,\n})\n</script>\n"],"names":["useLocale","bem","createNameSpace","props","_useModel","useAttachment","useDialog","isShowOpenDialogButton","_createBlock","_unref","ElButton","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_createElementVNode","openType","_mergeProps","prepareClassNames","prepareStyles"],"mappings":"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"}
@@ -3,21 +3,22 @@ export declare const useAttachment: (props: any, { data }: {
3
3
  }) => {
4
4
  columns: import("vue").Ref<({
5
5
  type: string;
6
- label: string;
6
+ label: any;
7
7
  width: string;
8
8
  props: {
9
9
  type: string;
10
10
  list: ({
11
- name: string;
11
+ name: any;
12
12
  onClick: ({ row }: {
13
13
  row: any;
14
14
  }) => void;
15
15
  disabled?: undefined;
16
16
  } | {
17
- name: string;
17
+ name: any;
18
18
  disabled: () => boolean;
19
- onClick: ({ $index }: {
19
+ onClick: ({ $index, row }: {
20
20
  $index: any;
21
+ row: any;
21
22
  }) => void;
22
23
  })[];
23
24
  desc?: undefined;
@@ -27,7 +28,7 @@ export declare const useAttachment: (props: any, { data }: {
27
28
  show?: undefined;
28
29
  onClick?: undefined;
29
30
  } | {
30
- label: string;
31
+ label: any;
31
32
  prop: string;
32
33
  type: string;
33
34
  required: boolean;
@@ -42,7 +43,7 @@ export declare const useAttachment: (props: any, { data }: {
42
43
  width?: undefined;
43
44
  onClick?: undefined;
44
45
  } | {
45
- label: string;
46
+ label: any;
46
47
  prop: string;
47
48
  type: string;
48
49
  onClick: ({ row }: {
@@ -53,7 +54,7 @@ export declare const useAttachment: (props: any, { data }: {
53
54
  required?: undefined;
54
55
  show?: undefined;
55
56
  } | {
56
- label: string;
57
+ label: any;
57
58
  prop: string;
58
59
  type?: undefined;
59
60
  width?: undefined;
@@ -62,7 +63,7 @@ export declare const useAttachment: (props: any, { data }: {
62
63
  show?: undefined;
63
64
  onClick?: undefined;
64
65
  } | {
65
- label: string;
66
+ label: any;
66
67
  prop: string;
67
68
  type: string;
68
69
  show: () => any;
@@ -72,21 +73,22 @@ export declare const useAttachment: (props: any, { data }: {
72
73
  onClick?: undefined;
73
74
  })[], ({
74
75
  type: string;
75
- label: string;
76
+ label: any;
76
77
  width: string;
77
78
  props: {
78
79
  type: string;
79
80
  list: ({
80
- name: string;
81
+ name: any;
81
82
  onClick({ row }: {
82
83
  row: any;
83
84
  }): void;
84
85
  disabled?: undefined;
85
86
  } | {
86
- name: string;
87
+ name: any;
87
88
  disabled: () => boolean;
88
- onClick: ({ $index }: {
89
+ onClick: ({ $index, row }: {
89
90
  $index: any;
91
+ row: any;
90
92
  }) => void;
91
93
  })[];
92
94
  desc?: undefined;
@@ -96,7 +98,7 @@ export declare const useAttachment: (props: any, { data }: {
96
98
  show?: undefined;
97
99
  onClick?: undefined;
98
100
  } | {
99
- label: string;
101
+ label: any;
100
102
  prop: string;
101
103
  type: string;
102
104
  required: boolean;
@@ -111,7 +113,7 @@ export declare const useAttachment: (props: any, { data }: {
111
113
  width?: undefined;
112
114
  onClick?: undefined;
113
115
  } | {
114
- label: string;
116
+ label: any;
115
117
  prop: string;
116
118
  type: string;
117
119
  onClick({ row }: {
@@ -122,7 +124,7 @@ export declare const useAttachment: (props: any, { data }: {
122
124
  required?: undefined;
123
125
  show?: undefined;
124
126
  } | {
125
- label: string;
127
+ label: any;
126
128
  prop: string;
127
129
  type?: undefined;
128
130
  width?: undefined;
@@ -131,7 +133,7 @@ export declare const useAttachment: (props: any, { data }: {
131
133
  show?: undefined;
132
134
  onClick?: undefined;
133
135
  } | {
134
- label: string;
136
+ label: any;
135
137
  prop: string;
136
138
  type: string;
137
139
  show: () => any;
@@ -141,21 +143,22 @@ export declare const useAttachment: (props: any, { data }: {
141
143
  onClick?: undefined;
142
144
  })[] | ({
143
145
  type: string;
144
- label: string;
146
+ label: any;
145
147
  width: string;
146
148
  props: {
147
149
  type: string;
148
150
  list: ({
149
- name: string;
151
+ name: any;
150
152
  onClick: ({ row }: {
151
153
  row: any;
152
154
  }) => void;
153
155
  disabled?: undefined;
154
156
  } | {
155
- name: string;
157
+ name: any;
156
158
  disabled: () => boolean;
157
- onClick: ({ $index }: {
159
+ onClick: ({ $index, row }: {
158
160
  $index: any;
161
+ row: any;
159
162
  }) => void;
160
163
  })[];
161
164
  desc?: undefined;
@@ -165,7 +168,7 @@ export declare const useAttachment: (props: any, { data }: {
165
168
  show?: undefined;
166
169
  onClick?: undefined;
167
170
  } | {
168
- label: string;
171
+ label: any;
169
172
  prop: string;
170
173
  type: string;
171
174
  required: boolean;
@@ -180,7 +183,7 @@ export declare const useAttachment: (props: any, { data }: {
180
183
  width?: undefined;
181
184
  onClick?: undefined;
182
185
  } | {
183
- label: string;
186
+ label: any;
184
187
  prop: string;
185
188
  type: string;
186
189
  onClick: ({ row }: {
@@ -191,7 +194,7 @@ export declare const useAttachment: (props: any, { data }: {
191
194
  required?: undefined;
192
195
  show?: undefined;
193
196
  } | {
194
- label: string;
197
+ label: any;
195
198
  prop: string;
196
199
  type?: undefined;
197
200
  width?: undefined;
@@ -200,7 +203,7 @@ export declare const useAttachment: (props: any, { data }: {
200
203
  show?: undefined;
201
204
  onClick?: undefined;
202
205
  } | {
203
- label: string;
206
+ label: any;
204
207
  prop: string;
205
208
  type: string;
206
209
  show: () => any;
@@ -209,4 +212,9 @@ export declare const useAttachment: (props: any, { data }: {
209
212
  required?: undefined;
210
213
  onClick?: undefined;
211
214
  })[]>;
215
+ addAttachment: () => Promise<void>;
216
+ isNormalOpen: boolean;
217
+ isDialogOpen: boolean;
218
+ onConfirm: (resolve: any) => Promise<void>;
219
+ onCancel: (resolve: any) => void;
212
220
  };
@@ -2,23 +2,31 @@
2
2
 
3
3
  var vue = require('vue');
4
4
  var useNavigation = require('../../../hooks/use-navigation.js');
5
+ var useLocale = require('../../../hooks/use-locale.js');
5
6
  var file = require('../../../utils/file.js');
7
+ var Cookies = require('js-cookie');
6
8
 
7
9
  const useAttachment = (props, { data }) => {
8
10
  const { mode: defaultMode } = useNavigation.useNavigation();
11
+ const { t } = useLocale.useLocale();
9
12
  const mode = vue.computed(() => {
10
13
  return props.mode || defaultMode.value;
11
14
  });
15
+ const tableRef = vue.useTemplateRef("tableRef");
16
+ const isNormalOpen = props.openType === "normal";
17
+ const isDialogOpen = props.openType === "dialog";
18
+ let toBeConfirmData = [];
19
+ let toBeDeleteData = {};
12
20
  const columns = vue.ref([
13
21
  {
14
22
  type: "EpButtons",
15
- label: "\u64CD\u4F5C",
23
+ label: t("ep.attachment.operation"),
16
24
  width: "120px",
17
25
  props: {
18
26
  type: "text",
19
27
  list: [
20
28
  {
21
- name: "\u4E0B\u8F7D",
29
+ name: t("ep.attachment.download"),
22
30
  onClick({ row }) {
23
31
  file.downloadFile({
24
32
  src: row.filePath,
@@ -27,11 +35,14 @@ const useAttachment = (props, { data }) => {
27
35
  }
28
36
  },
29
37
  {
30
- name: "\u5220\u9664",
38
+ name: t("ep.attachment.delete"),
31
39
  disabled: () => {
32
40
  return mode.value === "browse";
33
41
  },
34
- onClick: ({ $index }) => {
42
+ onClick: ({ $index, row }) => {
43
+ if (isDialogOpen) {
44
+ toBeDeleteData[$index] = row;
45
+ }
35
46
  data.value.splice($index, 1);
36
47
  }
37
48
  }
@@ -39,7 +50,7 @@ const useAttachment = (props, { data }) => {
39
50
  }
40
51
  },
41
52
  {
42
- label: "\u9644\u4EF6\u7C7B\u578B",
53
+ label: t("ep.attachment.attachmentType"),
43
54
  prop: "type",
44
55
  type: "EpSelect",
45
56
  required: true,
@@ -51,7 +62,7 @@ const useAttachment = (props, { data }) => {
51
62
  }
52
63
  },
53
64
  {
54
- label: "\u6587\u4EF6\u540D\u79F0",
65
+ label: t("ep.attachment.fileName"),
55
66
  prop: "originalFilename",
56
67
  type: "EpLink",
57
68
  onClick({ row }) {
@@ -59,22 +70,64 @@ const useAttachment = (props, { data }) => {
59
70
  }
60
71
  },
61
72
  {
62
- label: "\u521B\u5EFA\u4EBA",
73
+ label: t("ep.attachment.creator"),
63
74
  prop: "createBy"
64
75
  },
65
76
  {
66
- label: "\u521B\u5EFA\u65F6\u95F4",
77
+ label: t("ep.attachment.createTime"),
67
78
  prop: "createTime"
68
79
  },
69
80
  {
70
- label: "\u8BF4\u660E",
81
+ label: t("ep.attachment.description"),
71
82
  prop: "note",
72
83
  type: "EpInput",
73
84
  show: () => props.isNote
74
85
  }
75
86
  ]);
87
+ const addAttachment = async () => {
88
+ toBeConfirmData = [];
89
+ const fileData = await file.importFile({
90
+ api: "api-f/fast/files/save",
91
+ extraData: {
92
+ createBy: Cookies.get("accountName") || ""
93
+ }
94
+ });
95
+ fileData.fileId = fileData.id;
96
+ delete fileData.id;
97
+ if (isDialogOpen) {
98
+ toBeConfirmData.push(fileData);
99
+ }
100
+ data.value.push(fileData);
101
+ };
102
+ const onConfirm = async (resolve) => {
103
+ await tableRef.value?.validate();
104
+ resolve(data.value);
105
+ };
106
+ const onCancel = (resolve) => {
107
+ if (toBeConfirmData.length) {
108
+ const index = data.value.findIndex((item) => {
109
+ return item.fileId === toBeConfirmData[0].fileId;
110
+ });
111
+ if (index !== -1) {
112
+ data.value.splice(index, 1);
113
+ }
114
+ toBeConfirmData = [];
115
+ }
116
+ if (Object.keys(toBeDeleteData).length) {
117
+ Object.keys(toBeDeleteData).forEach((oldIndex) => {
118
+ data.value.splice(Number(oldIndex), 0, toBeDeleteData[oldIndex]);
119
+ });
120
+ toBeDeleteData = {};
121
+ }
122
+ resolve();
123
+ };
76
124
  return {
77
- columns
125
+ columns,
126
+ addAttachment,
127
+ isNormalOpen,
128
+ isDialogOpen,
129
+ onConfirm,
130
+ onCancel
78
131
  };
79
132
  };
80
133
 
@@ -1 +1 @@
1
- {"version":3,"file":"use-attachment.js","sources":["../../../../../../packages/components/attachment/src/use-attachment.ts"],"sourcesContent":["import { ref, computed } from 'vue'\nimport { useNavigation } from '@el-plus/hooks/use-navigation'\nimport { downloadFile, previewFile } from '@el-plus/utils/file'\nexport const useAttachment = (props, { data }) => {\n const { mode: defaultMode } = useNavigation()\n const mode = computed(() => {\n return props.mode || defaultMode.value\n })\n\n const columns = ref([\n {\n type: 'EpButtons',\n label: '操作',\n width: '120px',\n props: {\n type: 'text',\n list: [\n {\n name: '下载',\n onClick({ row }) {\n downloadFile({\n src: row.filePath,\n fileName: row.originalFilename || row.originalFileName,\n })\n },\n },\n {\n name: '删除',\n disabled: () => {\n return mode.value === 'browse'\n },\n onClick: ({ $index }) => {\n data.value.splice($index, 1)\n },\n },\n ],\n },\n },\n {\n label: '附件类型',\n prop: 'type',\n type: 'EpSelect',\n required: true,\n show: () => props.isType,\n props: {\n desc: ({ row }) => {\n return row.typeDesc\n },\n },\n },\n {\n label: '文件名称',\n prop: 'originalFilename',\n type: 'EpLink',\n onClick({ row }) {\n previewFile(row.filePath)\n },\n },\n {\n label: '创建人',\n prop: 'createBy',\n },\n {\n label: '创建时间',\n prop: 'createTime',\n },\n {\n label: '说明',\n prop: 'note',\n type: 'EpInput',\n show: () => props.isNote,\n },\n ])\n return {\n columns,\n }\n}\n"],"names":["useNavigation","computed","ref","downloadFile","previewFile"],"mappings":";;;;;;AAGO,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,EAAE,MAAK,KAAM;AAChD,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAY,GAAIA,2BAAA,EAAc;AAC5C,EAAA,MAAM,IAAA,GAAOC,aAAS,MAAM;AAC1B,IAAA,OAAO,KAAA,CAAM,QAAQ,WAAA,CAAY,KAAA;AAAA,EACnC,CAAC,CAAA;AAED,EAAA,MAAM,UAAUC,OAAA,CAAI;AAAA,IAClB;AAAA,MACE,IAAA,EAAM,WAAA;AAAA,MACN,KAAA,EAAO,cAAA;AAAA,MACP,KAAA,EAAO,OAAA;AAAA,MACP,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA,UACJ;AAAA,YACE,IAAA,EAAM,cAAA;AAAA,YACN,OAAA,CAAQ,EAAE,GAAA,EAAI,EAAG;AACf,cAAAC,iBAAA,CAAa;AAAA,gBACX,KAAK,GAAA,CAAI,QAAA;AAAA,gBACT,QAAA,EAAU,GAAA,CAAI,gBAAA,IAAoB,GAAA,CAAI;AAAA,eACvC,CAAA;AAAA,YACH;AAAA,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAM,cAAA;AAAA,YACN,UAAU,MAAM;AACd,cAAA,OAAO,KAAK,KAAA,KAAU,QAAA;AAAA,YACxB,CAAA;AAAA,YACA,OAAA,EAAS,CAAC,EAAE,MAAA,EAAO,KAAM;AACvB,cAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,MAAA,EAAQ,CAAC,CAAA;AAAA,YAC7B;AAAA;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,UAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,IAAA,EAAM,MAAM,KAAA,CAAM,MAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAAM;AACjB,UAAA,OAAO,GAAA,CAAI,QAAA;AAAA,QACb;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,IAAA,EAAM,kBAAA;AAAA,MACN,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,CAAQ,EAAE,GAAA,EAAI,EAAG;AACf,QAAAC,gBAAA,CAAY,IAAI,QAAQ,CAAA;AAAA,MAC1B;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,IAAA,EAAM;AAAA,KACR;AAAA,IACA;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,IAAA,EAAM;AAAA,KACR;AAAA,IACA;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,MAAM,KAAA,CAAM;AAAA;AACpB,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"use-attachment.js","sources":["../../../../../../packages/components/attachment/src/use-attachment.ts"],"sourcesContent":["import { ref, computed, useTemplateRef } from 'vue'\nimport { useNavigation } from '@el-plus/hooks/use-navigation'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { downloadFile, previewFile, importFile } from '@el-plus/utils/file'\nimport { Cookies } from '@el-plus/utils/cookie'\nimport type { TableInstance } from '@el-plus/components/table'\n\nexport const useAttachment = (props, { data }) => {\n const { mode: defaultMode } = useNavigation()\n const { t } = useLocale()\n const mode = computed(() => {\n return props.mode || defaultMode.value\n })\n const tableRef = useTemplateRef<TableInstance>('tableRef')\n const isNormalOpen = props.openType === 'normal'\n const isDialogOpen = props.openType === 'dialog'\n\n // 待确认的附件列表\n let toBeConfirmData: Record<string, any>[] = []\n // 待删除的附件列表\n let toBeDeleteData: {\n [key: number]: Record<string, any> // key要存储原来索引以便保留原顺序\n } = {}\n const columns = ref([\n {\n type: 'EpButtons',\n label: t('ep.attachment.operation'),\n width: '120px',\n props: {\n type: 'text',\n list: [\n {\n name: t('ep.attachment.download'),\n onClick({ row }) {\n downloadFile({\n src: row.filePath,\n fileName: row.originalFilename || row.originalFileName,\n })\n },\n },\n {\n name: t('ep.attachment.delete'),\n disabled: () => {\n return mode.value === 'browse'\n },\n onClick: ({ $index, row }) => {\n if (isDialogOpen) {\n // 待删除的附件列表\n toBeDeleteData[$index] = row\n }\n data.value.splice($index, 1)\n },\n },\n ],\n },\n },\n {\n label: t('ep.attachment.attachmentType'),\n prop: 'type',\n type: 'EpSelect',\n required: true,\n show: () => props.isType,\n props: {\n desc: ({ row }) => {\n return row.typeDesc\n },\n },\n },\n {\n label: t('ep.attachment.fileName'),\n prop: 'originalFilename',\n type: 'EpLink',\n onClick({ row }) {\n previewFile(row.filePath)\n },\n },\n {\n label: t('ep.attachment.creator'),\n prop: 'createBy',\n },\n {\n label: t('ep.attachment.createTime'),\n prop: 'createTime',\n },\n {\n label: t('ep.attachment.description'),\n prop: 'note',\n type: 'EpInput',\n show: () => props.isNote,\n },\n ])\n const addAttachment = async () => {\n toBeConfirmData = []\n const fileData = await importFile({\n api: 'api-f/fast/files/save',\n extraData: {\n createBy: Cookies.get('accountName') || '',\n },\n })\n fileData.fileId = fileData.id\n delete fileData.id\n if (isDialogOpen) {\n // 待确认的附件列表\n toBeConfirmData.push(fileData)\n }\n data.value.push(fileData)\n }\n // 确认\n const onConfirm = async (resolve) => {\n await tableRef.value?.validate()\n resolve(data.value)\n }\n // 取消\n const onCancel = (resolve) => {\n if (toBeConfirmData.length) {\n // 找到待确认的附件\n const index = data.value.findIndex((item) => {\n return item.fileId === toBeConfirmData[0].fileId\n })\n if (index !== -1) {\n // 删除待确认的附件\n data.value.splice(index, 1)\n }\n // 清空待确认的附件列表\n toBeConfirmData = []\n }\n if (Object.keys(toBeDeleteData).length) {\n // 找到待删除的附件在原位置插入\n Object.keys(toBeDeleteData).forEach((oldIndex) => {\n data.value.splice(Number(oldIndex), 0, toBeDeleteData[oldIndex])\n })\n // 清空待删除的附件列表\n toBeDeleteData = {}\n }\n resolve()\n }\n return {\n columns,\n addAttachment,\n isNormalOpen,\n isDialogOpen,\n onConfirm,\n onCancel,\n }\n}\n"],"names":["useNavigation","useLocale","computed","useTemplateRef","ref","downloadFile","previewFile","importFile"],"mappings":"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"}