giime 0.8.11 → 0.8.12
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/index.css +91 -90
- package/es/components/src/base/tableColumn/TableColumn.vue2.mjs +5 -5
- package/es/components/src/base/tableColumn/TableColumn.vue2.mjs.map +1 -1
- package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +1 -1
- package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -1
- package/es/components/src/composite/tablePro/TableColumnVNodeRenderer.d.ts +4 -2
- package/es/components/src/composite/tablePro/TableColumnVNodeRenderer.mjs +44 -16
- package/es/components/src/composite/tablePro/TableColumnVNodeRenderer.mjs.map +1 -1
- package/es/components/src/composite/tablePro/TablePro.vue.mjs +1 -1
- package/es/components/src/composite/tablePro/TablePro.vue2.mjs +2 -2
- package/es/components/src/composite/tablePro/TablePro.vue2.mjs.map +1 -1
- package/es/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.mjs +5 -5
- package/es/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.mjs.map +1 -1
- package/es/components/src/composite/tablePro/tableHelper.d.ts +8 -1
- package/es/components/src/composite/tablePro/tableHelper.mjs +10 -1
- package/es/components/src/composite/tablePro/tableHelper.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +4 -90
- package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +47 -41
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/index.d.ts +4 -190
- package/es/components/src/composite/uploadFile/uploadFile.d.ts +1 -51
- package/es/components/src/composite/uploadFile/uploadFile.mjs +0 -50
- package/es/components/src/composite/uploadFile/uploadFile.mjs.map +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/index.css +91 -90
- package/lib/components/src/base/tableColumn/TableColumn.vue2.js +4 -4
- package/lib/components/src/base/tableColumn/TableColumn.vue2.js.map +1 -1
- package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +1 -1
- package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -1
- package/lib/components/src/composite/tablePro/TableColumnVNodeRenderer.d.ts +4 -2
- package/lib/components/src/composite/tablePro/TableColumnVNodeRenderer.js +43 -15
- package/lib/components/src/composite/tablePro/TableColumnVNodeRenderer.js.map +1 -1
- package/lib/components/src/composite/tablePro/TablePro.vue.js +1 -1
- package/lib/components/src/composite/tablePro/TablePro.vue2.js +2 -2
- package/lib/components/src/composite/tablePro/TablePro.vue2.js.map +1 -1
- package/lib/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.js +4 -4
- package/lib/components/src/composite/tablePro/tableColumnPro/TableColumnPro.vue2.js.map +1 -1
- package/lib/components/src/composite/tablePro/tableHelper.d.ts +8 -1
- package/lib/components/src/composite/tablePro/tableHelper.js +10 -1
- package/lib/components/src/composite/tablePro/tableHelper.js.map +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +4 -90
- package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +47 -41
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
- package/lib/components/src/composite/uploadFile/index.d.ts +4 -190
- package/lib/components/src/composite/uploadFile/uploadFile.d.ts +1 -51
- package/lib/components/src/composite/uploadFile/uploadFile.js +0 -50
- package/lib/components/src/composite/uploadFile/uploadFile.js.map +1 -1
- package/lib/giime/version.d.ts +1 -1
- package/lib/index.css +91 -90
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fragment } from 'vue';
|
|
2
2
|
import { isString } from '../../../../utils/src/is.mjs';
|
|
3
3
|
|
|
4
|
-
const getVnodesByGmName = (defaultVnodes, name) => {
|
|
4
|
+
const getVnodesByGmName = (defaultVnodes, name, recursive = false) => {
|
|
5
5
|
const children = [];
|
|
6
6
|
if (Array.isArray(defaultVnodes)) {
|
|
7
7
|
for (const childNode of defaultVnodes) {
|
|
@@ -13,6 +13,15 @@ const getVnodesByGmName = (defaultVnodes, name) => {
|
|
|
13
13
|
children.push(vnode);
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
|
+
} else if (recursive && childNode.children) {
|
|
17
|
+
if (typeof childNode.children === "object" && childNode.children.default) {
|
|
18
|
+
const nestedVnodes = childNode.children.default();
|
|
19
|
+
const nestedChildren = getVnodesByGmName(Array.isArray(nestedVnodes) ? nestedVnodes : [nestedVnodes], name, true);
|
|
20
|
+
children.push(...nestedChildren);
|
|
21
|
+
} else if (Array.isArray(childNode.children)) {
|
|
22
|
+
const nestedChildren = getVnodesByGmName(childNode.children, name, true);
|
|
23
|
+
children.push(...nestedChildren);
|
|
24
|
+
}
|
|
16
25
|
}
|
|
17
26
|
}
|
|
18
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableHelper.mjs","sources":["../../../../../../../packages/components/src/composite/tablePro/tableHelper.ts"],"sourcesContent":["import { Fragment } from 'vue';\nimport { isString } from '@giime/utils/src/is';\nexport const getVnodesByGmName = (defaultVnodes: any[], name: string) => {\n const children = [];\n if (Array.isArray(defaultVnodes)) {\n for (const childNode of defaultVnodes) {\n if (childNode.type?.name === name || childNode.shapeFlag & 2) {\n children.push(childNode);\n } else if (childNode.type === Fragment && Array.isArray(childNode.children)) {\n childNode.children.forEach((vnode: any) => {\n // No rendering when vnode is dynamic slot or text\n if (vnode?.patchFlag !== 1024 && !isString(vnode?.children)) {\n children.push(vnode);\n }\n });\n }\n }\n }\n return children;\n};\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tableHelper.mjs","sources":["../../../../../../../packages/components/src/composite/tablePro/tableHelper.ts"],"sourcesContent":["import { Fragment } from 'vue';\nimport { isString } from '@giime/utils/src/is';\n\n/**\n * 从 vnode 数组中提取指定名称的组件\n * @param defaultVnodes vnode 数组\n * @param name 目标组件名称\n * @param recursive 是否递归提取嵌套组件(用于支持多级表头)\n * @returns 提取的 vnode 数组\n */\nexport const getVnodesByGmName = (defaultVnodes: any[], name: string, recursive = false): any[] => {\n const children: any[] = [];\n if (Array.isArray(defaultVnodes)) {\n for (const childNode of defaultVnodes) {\n // 匹配目标组件\n if (childNode.type?.name === name || childNode.shapeFlag & 2) {\n children.push(childNode);\n }\n // 处理 Fragment\n else if (childNode.type === Fragment && Array.isArray(childNode.children)) {\n childNode.children.forEach((vnode: any) => {\n // No rendering when vnode is dynamic slot or text\n if (vnode?.patchFlag !== 1024 && !isString(vnode?.children)) {\n children.push(vnode);\n }\n });\n }\n // 递归提取嵌套在其他组件中的目标组件(用于多级表头)\n else if (recursive && childNode.children) {\n // 如果有 default slot,递归提取\n if (typeof childNode.children === 'object' && childNode.children.default) {\n const nestedVnodes = childNode.children.default();\n const nestedChildren: any[] = getVnodesByGmName(Array.isArray(nestedVnodes) ? nestedVnodes : [nestedVnodes], name, true);\n children.push(...nestedChildren);\n }\n // 如果 children 是数组,递归提取\n else if (Array.isArray(childNode.children)) {\n const nestedChildren: any[] = getVnodesByGmName(childNode.children, name, true);\n children.push(...nestedChildren);\n }\n }\n }\n }\n return children;\n};\n"],"names":[],"mappings":";;;AAUO,MAAM,iBAAA,GAAoB,CAAC,aAAA,EAAsB,IAAA,EAAc,YAAY,KAAA,KAAiB;AACjG,EAAA,MAAM,WAAkB,EAAC;AACzB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,EAAG;AAChC,IAAA,KAAA,MAAW,aAAa,aAAA,EAAe;AAErC,MAAA,IAAI,UAAU,IAAA,EAAM,IAAA,KAAS,IAAA,IAAQ,SAAA,CAAU,YAAY,CAAA,EAAG;AAC5D,QAAA,QAAA,CAAS,KAAK,SAAS,CAAA;AAAA,MACzB,CAAA,MAAA,IAES,UAAU,IAAA,KAAS,QAAA,IAAY,MAAM,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA,EAAG;AACzE,QAAA,SAAA,CAAU,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAe;AAEzC,UAAA,IAAI,OAAO,SAAA,KAAc,IAAA,IAAQ,CAAC,QAAA,CAAS,KAAA,EAAO,QAAQ,CAAA,EAAG;AAC3D,YAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,UACrB;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAA,MAAA,IAES,SAAA,IAAa,SAAA,CAAU,QAAA,EAAU;AAExC,QAAA,IAAI,OAAO,SAAA,CAAU,QAAA,KAAa,QAAA,IAAY,SAAA,CAAU,SAAS,OAAA,EAAS;AACxE,UAAA,MAAM,YAAA,GAAe,SAAA,CAAU,QAAA,CAAS,OAAA,EAAQ;AAChD,UAAA,MAAM,cAAA,GAAwB,iBAAA,CAAkB,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GAAI,YAAA,GAAe,CAAC,YAAY,CAAA,EAAG,IAAA,EAAM,IAAI,CAAA;AACvH,UAAA,QAAA,CAAS,IAAA,CAAK,GAAG,cAAc,CAAA;AAAA,QACjC,CAAA,MAAA,IAES,KAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC1C,UAAA,MAAM,cAAA,GAAwB,iBAAA,CAAkB,SAAA,CAAU,QAAA,EAAU,MAAM,IAAI,CAAA;AAC9E,UAAA,QAAA,CAAS,IAAA,CAAK,GAAG,cAAc,CAAA;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;;;;"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { UploadFile, UploadFiles, UploadInstance, UploadRawFile, UploadStatus } from 'element-plus';
|
|
2
2
|
declare var __VLS_11: {}, __VLS_29: {
|
|
3
3
|
file: UploadFile;
|
|
4
|
+
}, __VLS_51: {
|
|
5
|
+
file: UploadFile;
|
|
4
6
|
};
|
|
5
7
|
type __VLS_Slots = {} & {
|
|
6
8
|
default?: (props: typeof __VLS_11) => any;
|
|
7
9
|
} & {
|
|
8
10
|
file?: (props: typeof __VLS_29) => any;
|
|
11
|
+
} & {
|
|
12
|
+
fileBottom?: (props: typeof __VLS_51) => any;
|
|
9
13
|
};
|
|
10
14
|
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
11
15
|
listType: {
|
|
@@ -28,34 +32,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
28
32
|
type: BooleanConstructor;
|
|
29
33
|
default: boolean;
|
|
30
34
|
};
|
|
31
|
-
folder: {
|
|
32
|
-
type: StringConstructor;
|
|
33
|
-
default: string;
|
|
34
|
-
};
|
|
35
|
-
seat: {
|
|
36
|
-
type: StringConstructor;
|
|
37
|
-
default: string;
|
|
38
|
-
};
|
|
39
|
-
parallel: {
|
|
40
|
-
type: NumberConstructor;
|
|
41
|
-
default: null;
|
|
42
|
-
};
|
|
43
|
-
partSize: {
|
|
44
|
-
type: NumberConstructor;
|
|
45
|
-
default: null;
|
|
46
|
-
};
|
|
47
|
-
options: {
|
|
48
|
-
type: ObjectConstructor;
|
|
49
|
-
default: () => {};
|
|
50
|
-
};
|
|
51
|
-
bucket: {
|
|
52
|
-
type: StringConstructor;
|
|
53
|
-
default: string;
|
|
54
|
-
};
|
|
55
|
-
fileName: {
|
|
56
|
-
type: StringConstructor;
|
|
57
|
-
default: string;
|
|
58
|
-
};
|
|
59
35
|
showDelete: {
|
|
60
36
|
type: BooleanConstructor;
|
|
61
37
|
default: boolean;
|
|
@@ -68,18 +44,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
68
44
|
type: BooleanConstructor;
|
|
69
45
|
default: boolean;
|
|
70
46
|
};
|
|
71
|
-
saveStore: {
|
|
72
|
-
type: BooleanConstructor;
|
|
73
|
-
default: boolean;
|
|
74
|
-
};
|
|
75
|
-
platform: {
|
|
76
|
-
type: StringConstructor;
|
|
77
|
-
default: string;
|
|
78
|
-
};
|
|
79
|
-
cdn: {
|
|
80
|
-
type: StringConstructor;
|
|
81
|
-
default: string;
|
|
82
|
-
};
|
|
83
47
|
width: {
|
|
84
48
|
type: NumberConstructor;
|
|
85
49
|
default: number;
|
|
@@ -355,34 +319,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
355
319
|
type: BooleanConstructor;
|
|
356
320
|
default: boolean;
|
|
357
321
|
};
|
|
358
|
-
folder: {
|
|
359
|
-
type: StringConstructor;
|
|
360
|
-
default: string;
|
|
361
|
-
};
|
|
362
|
-
seat: {
|
|
363
|
-
type: StringConstructor;
|
|
364
|
-
default: string;
|
|
365
|
-
};
|
|
366
|
-
parallel: {
|
|
367
|
-
type: NumberConstructor;
|
|
368
|
-
default: null;
|
|
369
|
-
};
|
|
370
|
-
partSize: {
|
|
371
|
-
type: NumberConstructor;
|
|
372
|
-
default: null;
|
|
373
|
-
};
|
|
374
|
-
options: {
|
|
375
|
-
type: ObjectConstructor;
|
|
376
|
-
default: () => {};
|
|
377
|
-
};
|
|
378
|
-
bucket: {
|
|
379
|
-
type: StringConstructor;
|
|
380
|
-
default: string;
|
|
381
|
-
};
|
|
382
|
-
fileName: {
|
|
383
|
-
type: StringConstructor;
|
|
384
|
-
default: string;
|
|
385
|
-
};
|
|
386
322
|
showDelete: {
|
|
387
323
|
type: BooleanConstructor;
|
|
388
324
|
default: boolean;
|
|
@@ -395,18 +331,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
395
331
|
type: BooleanConstructor;
|
|
396
332
|
default: boolean;
|
|
397
333
|
};
|
|
398
|
-
saveStore: {
|
|
399
|
-
type: BooleanConstructor;
|
|
400
|
-
default: boolean;
|
|
401
|
-
};
|
|
402
|
-
platform: {
|
|
403
|
-
type: StringConstructor;
|
|
404
|
-
default: string;
|
|
405
|
-
};
|
|
406
|
-
cdn: {
|
|
407
|
-
type: StringConstructor;
|
|
408
|
-
default: string;
|
|
409
|
-
};
|
|
410
334
|
width: {
|
|
411
335
|
type: NumberConstructor;
|
|
412
336
|
default: number;
|
|
@@ -657,7 +581,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
657
581
|
"onUpdate:checkoutFiles"?: ((value: any[]) => any) | undefined;
|
|
658
582
|
}, {
|
|
659
583
|
size: number;
|
|
660
|
-
options: Record<string, any>;
|
|
661
584
|
method: string;
|
|
662
585
|
data: ({
|
|
663
586
|
[x: string]: any;
|
|
@@ -695,9 +618,7 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
695
618
|
autoUpload: boolean;
|
|
696
619
|
listType: "text" | "picture" | "picture-card";
|
|
697
620
|
httpRequest: import("element-plus").UploadRequestHandler;
|
|
698
|
-
fileName: string;
|
|
699
621
|
acl: string;
|
|
700
|
-
platform: string;
|
|
701
622
|
fileWidth: string;
|
|
702
623
|
fileHeight: string;
|
|
703
624
|
fileStyle: Record<string, any>;
|
|
@@ -712,13 +633,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
712
633
|
deleteTip: boolean;
|
|
713
634
|
disabledCheckboxUids: number[];
|
|
714
635
|
onAllComplete: () => void;
|
|
715
|
-
folder: string;
|
|
716
|
-
seat: string;
|
|
717
|
-
parallel: number;
|
|
718
|
-
partSize: number;
|
|
719
|
-
bucket: string;
|
|
720
|
-
saveStore: boolean;
|
|
721
|
-
cdn: string;
|
|
722
636
|
}, {}>, __VLS_Slots>;
|
|
723
637
|
export default _default;
|
|
724
638
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -3,7 +3,7 @@ import './UploadFile.vue3.mjs';
|
|
|
3
3
|
import './UploadFile.vue4.mjs';
|
|
4
4
|
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
5
5
|
|
|
6
|
-
var UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
6
|
+
var UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-28529631"]]);
|
|
7
7
|
|
|
8
8
|
export { UploadFile as default };
|
|
9
9
|
//# sourceMappingURL=UploadFile.vue.mjs.map
|
|
@@ -8,7 +8,7 @@ import { GmFileComponent } from '../fileComponent/index.mjs';
|
|
|
8
8
|
import { GmPreviewFile } from '../previewFile/index.mjs';
|
|
9
9
|
import { uploadFileProps } from './uploadFile.mjs';
|
|
10
10
|
|
|
11
|
-
const _withScopeId = (n) => (pushScopeId("data-v-
|
|
11
|
+
const _withScopeId = (n) => (pushScopeId("data-v-28529631"), n = n(), popScopeId(), n);
|
|
12
12
|
const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode(
|
|
13
13
|
"div",
|
|
14
14
|
{ class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
|
|
@@ -19,9 +19,10 @@ const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElem
|
|
|
19
19
|
-1
|
|
20
20
|
/* HOISTED */
|
|
21
21
|
));
|
|
22
|
-
const _hoisted_2 = { class: "
|
|
23
|
-
const _hoisted_3 =
|
|
22
|
+
const _hoisted_2 = { class: "gm-relative gm-flex gm-items-center gm-justify-center gm-overflow-hidden gm-rounded-md" };
|
|
23
|
+
const _hoisted_3 = { class: "el-upload-list__item-actions" };
|
|
24
24
|
const _hoisted_4 = ["onClick"];
|
|
25
|
+
const _hoisted_5 = ["onClick"];
|
|
25
26
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
26
27
|
...{
|
|
27
28
|
name: "GmUploadFile"
|
|
@@ -220,49 +221,54 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
220
221
|
createElementVNode(
|
|
221
222
|
"div",
|
|
222
223
|
{
|
|
223
|
-
|
|
224
|
-
style: normalizeStyle({ width: _ctx.width + "px", height: _ctx.height + "px" })
|
|
224
|
+
style: normalizeStyle({ width: _ctx.width + "px" })
|
|
225
225
|
},
|
|
226
226
|
[
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
227
|
+
createElementVNode("div", _hoisted_2, [
|
|
228
|
+
createVNode(unref(GmFileComponent), {
|
|
229
|
+
file,
|
|
230
|
+
size: _ctx.width - 40,
|
|
231
|
+
url: _ctx.url,
|
|
232
|
+
controls: false,
|
|
233
|
+
"show-icon": true,
|
|
234
|
+
field: _ctx.field,
|
|
235
|
+
fileWidth: _ctx.width + "px",
|
|
236
|
+
fileHeight: _ctx.height + "px",
|
|
237
|
+
fileStyle: { border: "1px solid #dcdfe6", overflow: "hidden", borderRadius: "5px" }
|
|
238
|
+
}, null, 8, ["file", "size", "url", "field", "fileWidth", "fileHeight"]),
|
|
239
|
+
createElementVNode("div", _hoisted_3, [
|
|
240
|
+
createElementVNode("span", {
|
|
241
|
+
class: "el-upload-list__item-preview",
|
|
242
|
+
onClick: ($event) => handlePreview(file)
|
|
243
|
+
}, [
|
|
244
|
+
createVNode(_component_el_icon, null, {
|
|
245
|
+
default: withCtx(() => [
|
|
246
|
+
createVNode(unref(View))
|
|
247
|
+
]),
|
|
248
|
+
_: 1
|
|
249
|
+
/* STABLE */
|
|
250
|
+
})
|
|
251
|
+
], 8, _hoisted_4),
|
|
252
|
+
_ctx.showDelete ? (openBlock(), createElementBlock("span", {
|
|
253
|
+
key: 0,
|
|
254
|
+
class: "el-upload-list__item-delete",
|
|
255
|
+
onClick: ($event) => handleRemove(file, fileList.value)
|
|
256
|
+
}, [
|
|
257
|
+
createVNode(_component_el_icon, null, {
|
|
258
|
+
default: withCtx(() => [
|
|
259
|
+
createVNode(unref(Delete))
|
|
260
|
+
]),
|
|
261
|
+
_: 1
|
|
262
|
+
/* STABLE */
|
|
263
|
+
})
|
|
264
|
+
], 8, _hoisted_5)) : createCommentVNode("v-if", true)
|
|
265
|
+
])
|
|
266
|
+
]),
|
|
267
|
+
renderSlot(_ctx.$slots, "fileBottom", { file }, void 0, true)
|
|
235
268
|
],
|
|
236
269
|
4
|
|
237
270
|
/* STYLE */
|
|
238
|
-
)
|
|
239
|
-
createElementVNode("div", _hoisted_2, [
|
|
240
|
-
createElementVNode("span", {
|
|
241
|
-
class: "el-upload-list__item-preview",
|
|
242
|
-
onClick: ($event) => handlePreview(file)
|
|
243
|
-
}, [
|
|
244
|
-
createVNode(_component_el_icon, null, {
|
|
245
|
-
default: withCtx(() => [
|
|
246
|
-
createVNode(unref(View))
|
|
247
|
-
]),
|
|
248
|
-
_: 1
|
|
249
|
-
/* STABLE */
|
|
250
|
-
})
|
|
251
|
-
], 8, _hoisted_3),
|
|
252
|
-
_ctx.showDelete ? (openBlock(), createElementBlock("span", {
|
|
253
|
-
key: 0,
|
|
254
|
-
class: "el-upload-list__item-delete",
|
|
255
|
-
onClick: ($event) => handleRemove(file, fileList.value)
|
|
256
|
-
}, [
|
|
257
|
-
createVNode(_component_el_icon, null, {
|
|
258
|
-
default: withCtx(() => [
|
|
259
|
-
createVNode(unref(Delete))
|
|
260
|
-
]),
|
|
261
|
-
_: 1
|
|
262
|
-
/* STABLE */
|
|
263
|
-
})
|
|
264
|
-
], 8, _hoisted_4)) : createCommentVNode("v-if", true)
|
|
265
|
-
])
|
|
271
|
+
)
|
|
266
272
|
], true)
|
|
267
273
|
]),
|
|
268
274
|
key: "0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\n <div>\n <div\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\"\n class=\"gm-upload-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" :show-icon=\"true\" :field=\"field\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile\n v-model:dialogVisible=\"dialogVisible\"\n v-model:file-index=\"fileIndex\"\n :file-list=\"fileList\"\n :controls=\"controls\"\n :oncontextmenu=\"oncontextmenu\"\n :controlslist=\"controlslist\"\n :field=\"field\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElMessageBox } from 'element-plus';\nimport { useUploadTaskStore } from '@giime/hooks/store/useUploadTask';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../fileComponent';\nimport GmPreviewFile from '../previewFile';\nimport { uploadFileProps } from './uploadFile';\nimport type { GmUploadProUserFileResponse } from './uploadFile';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\n\ndefineOptions({\n name: 'GmUploadFile',\n});\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\nconst { uploadFileTask } = useUploadTaskStore();\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n\nconst loadingUids = ref<Set<number>>(new Set());\n\n/* 上传 */\nconst httpRequest = async (options: UploadRequestOptions) => {\n loadingUids.value.add(options.file.uid);\n const { file } = options;\n\n const res: any = await uploadFileTask(file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n\n return { ...res, file };\n};\n\n/**判断是否全部上传完成 并触发事件 */\nconst checkAllUploadComplete = () => {\n if (loadingUids.value.size === 0) {\n // 全部文件上传完成\n props.onAllComplete?.();\n }\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n uploadFile.url = response.url;\n props.onSuccess?.(response, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n\n/* 删除文件前 */\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\n if (props.disabled) {\n return false;\n }\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst pasteFileRef = ref<HTMLElement>();\n/* 手动上传 */\nconst submit = () => {\n uploadFileRef.value!.submit();\n};\n\n/** 取消上传 */\nconst abort = (file: UploadFile) => {\n uploadFileRef.value!.abort(file);\n};\n\n/** 清空已上传的文件列表 */\nconst clearFiles = (status?: UploadStatus[]) => {\n uploadFileRef.value!.clearFiles(status);\n};\n\n/** 手动选择文件 */\nconst handleStart = (rawFile: UploadRawFile) => {\n uploadFileRef.value!.handleStart(rawFile);\n};\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n submit();\n }\n }\n });\n }\n});\n\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\n\ndefineExpose({\n submit,\n abort,\n clearFiles,\n handleStart,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-file {\n line-height: normal;\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: normal;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,IAAA,GAAO,MAAA;AAEb,IAAA,MAAM,EAAE,cAAA,EAAe,GAAI,kBAAA,EAAmB;AAG9C,IAAA,MAAM,QAAA,GAAWA,QAAA,CAAyB,OAAA,EAAC,UAAiD,CAAA;AAE5F,IAAA,MAAM,aAAA,GAAgBA,QAAA,CAAkB,OAAA,EAAC,eAAsC,CAAA;AAE/E,IAAA,MAAM,WAAA,GAAc,GAAA,iBAAiB,IAAI,GAAA,EAAK,CAAA;AAG9C,IAAA,MAAM,WAAA,GAAc,OAAO,OAAA,KAAkC;AAC3D,MAAA,WAAA,CAAY,KAAA,CAAM,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA;AACtC,MAAA,MAAM,EAAE,MAAK,GAAI,OAAA;AAEjB,MAAA,MAAM,GAAA,GAAW,MAAM,cAAA,CAAe,IAAA,EAAM;AAAA,QAC1C,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACZ,CAAA;AAED,MAAA,OAAO,EAAE,GAAG,GAAA,EAAK,IAAA,EAAK;AAAA,IACxB,CAAA;AAGA,IAAA,MAAM,yBAAyB,MAAM;AACnC,MAAA,IAAI,WAAA,CAAY,KAAA,CAAM,IAAA,KAAS,CAAA,EAAG;AAEhC,QAAA,KAAA,CAAM,aAAA,IAAgB;AAAA,MACxB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,gBAAA,GAA6C,CAAC,QAAA,EAAuC,UAAA,EAAY,WAAA,KAAgB;AACrH,MAAA,WAAA,CAAY,KAAA,CAAM,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA;AACvC,MAAA,UAAA,CAAW,MAAM,QAAA,CAAS,GAAA;AAC1B,MAAA,KAAA,CAAM,SAAA,GAAY,QAAA,EAAU,UAAA,EAAY,WAAW,CAAA;AAEnD,MAAA,sBAAA,EAAuB;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,cAAA,GAAyC,CAAC,KAAA,EAAO,UAAA,EAAY,WAAA,KAAgB;AACjF,MAAA,WAAA,CAAY,KAAA,CAAM,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA;AACvC,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA,EAAO,UAAA,EAAY,WAAW,CAAA;AAE9C,MAAA,sBAAA,EAAuB;AAAA,IACzB,CAAA;AAGA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAkB,KAAA,KAAuB;AAC7D,MAAA,IAAI,MAAM,QAAA,EAAU;AAClB,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OAAO,MAAM,YAAA,GAAe,KAAA,CAAM,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA,GAAI,IAAA;AAAA,IAChE,CAAA;AAGA,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,EAAkB,WAAA,KAA6B;AACjE,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AACzC,MAAA,IAAI,QAAQ,CAAA,CAAA,EAAI;AACd,QAAA,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AAC9B,QAAA,IAAA,CAAK,cAAA,EAAgB,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AACpC,QAAA,OAAO,KAAA,CAAM,QAAA,GAAW,IAAA,EAAM,WAAW,CAAA;AAAA,MAC3C;AAAA,IACF,CAAA;AACA,IAAA,MAAM,YAAA,GAAe,OAAO,IAAA,EAAkB,WAAA,KAA6B;AACzE,MAAA,IAAI,MAAM,SAAA,EAAW;AACnB,QAAA,MAAM,YAAA,CAAa,EAAE,OAAA,EAAS,wDAAA,IAAe,YAAY;AAAA,QAAC,CAAC,CAAA;AAAA,MAC7D;AAEA,MAAA,UAAA,CAAW,MAAM,WAAW,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,gBAAgB,GAAA,EAAoB;AAC1C,IAAA,MAAM,eAAe,GAAA,EAAiB;AAEtC,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,aAAA,CAAc,MAAO,MAAA,EAAO;AAAA,IAC9B,CAAA;AAGA,IAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,KAAqB;AAClC,MAAA,aAAA,CAAc,KAAA,CAAO,MAAM,IAAI,CAAA;AAAA,IACjC,CAAA;AAGA,IAAA,MAAM,UAAA,GAAa,CAAC,MAAA,KAA4B;AAC9C,MAAA,aAAA,CAAc,KAAA,CAAO,WAAW,MAAM,CAAA;AAAA,IACxC,CAAA;AAGA,IAAA,MAAM,WAAA,GAAc,CAAC,OAAA,KAA2B;AAC9C,MAAA,aAAA,CAAc,KAAA,CAAO,YAAY,OAAO,CAAA;AAAA,IAC1C,CAAA;AAGA,IAAA,MAAM,aAAA,GAAgB,IAAI,KAAK,CAAA;AAC/B,IAAA,MAAM,SAAA,GAAY,IAAI,CAAC,CAAA;AACvB,IAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAAqB;AAC1C,MAAA,SAAA,CAAU,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAC7C,MAAA,aAAA,CAAc,KAAA,GAAQ,IAAA;AAAA,IACxB,CAAA;AAGA,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,YAAA,CAAa,YAAA,EAAc,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAC5G,IAAA,SAAA,CAAU,CAAC,KAAA,KAAkB;AAC3B,MAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,SAAS,CAAA,EAAG;AAC5C,QAAA,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAQ;AACpB,UAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,YAAA,MAAM,OAAA,GAAU,IAAA;AAChB,YAAA,WAAA,CAAY,OAAO,CAAA;AAGnB,YAAA,IAAI,MAAM,UAAA,EAAY;AACpB,cAAA,MAAA,EAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAiB;AACxB,MAAA,OAAA,CAAQ,KAAA,CAAM,6BAAS,KAAK,CAAA;AAC5B,MAAA,YAAA,CAAa,KAAA,CAAM,KAAA,CAAM,OAAA,EAAS,cAAA,EAAM;AAAA,QACtC,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,QAAA,CAAa;AAAA,MACX,MAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"UploadFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\n <div>\n <div\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\"\n class=\"gm-upload-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n <slot name=\"file\" :file=\"file\">\n <div :style=\"{ width: width + 'px' }\">\n <div class=\"gm-relative gm-flex gm-items-center gm-justify-center gm-overflow-hidden gm-rounded-md\">\n <GmFileComponent\n :file=\"file\"\n :size=\"width - 40\"\n :url=\"url\"\n :controls=\"false\"\n :show-icon=\"true\"\n :field=\"field\"\n :fileWidth=\"width + 'px'\"\n :fileHeight=\"height + 'px'\"\n :fileStyle=\"{ border: '1px solid #dcdfe6', overflow: 'hidden', borderRadius: '5px' }\"\n />\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </div>\n <slot name=\"fileBottom\" :file=\"file\" />\n </div>\n </slot>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile\n v-model:dialogVisible=\"dialogVisible\"\n v-model:file-index=\"fileIndex\"\n :file-list=\"fileList\"\n :controls=\"controls\"\n :oncontextmenu=\"oncontextmenu\"\n :controlslist=\"controlslist\"\n :field=\"field\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElMessageBox } from 'element-plus';\nimport { useUploadTaskStore } from '@giime/hooks/store/useUploadTask';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../fileComponent';\nimport GmPreviewFile from '../previewFile';\nimport { uploadFileProps } from './uploadFile';\nimport type { GmUploadProUserFileResponse } from './uploadFile';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\n\ndefineOptions({\n name: 'GmUploadFile',\n});\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\nconst { uploadFileTask } = useUploadTaskStore();\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n\nconst loadingUids = ref<Set<number>>(new Set());\n\n/* 上传 */\nconst httpRequest = async (options: UploadRequestOptions) => {\n loadingUids.value.add(options.file.uid);\n const { file } = options;\n\n const res: any = await uploadFileTask(file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n\n return { ...res, file };\n};\n\n/**判断是否全部上传完成 并触发事件 */\nconst checkAllUploadComplete = () => {\n if (loadingUids.value.size === 0) {\n // 全部文件上传完成\n props.onAllComplete?.();\n }\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n uploadFile.url = response.url;\n props.onSuccess?.(response, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n\n/* 删除文件前 */\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\n if (props.disabled) {\n return false;\n }\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst pasteFileRef = ref<HTMLElement>();\n/* 手动上传 */\nconst submit = () => {\n uploadFileRef.value!.submit();\n};\n\n/** 取消上传 */\nconst abort = (file: UploadFile) => {\n uploadFileRef.value!.abort(file);\n};\n\n/** 清空已上传的文件列表 */\nconst clearFiles = (status?: UploadStatus[]) => {\n uploadFileRef.value!.clearFiles(status);\n};\n\n/** 手动选择文件 */\nconst handleStart = (rawFile: UploadRawFile) => {\n uploadFileRef.value!.handleStart(rawFile);\n};\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n submit();\n }\n }\n });\n }\n});\n\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\n\ndefineExpose({\n submit,\n abort,\n clearFiles,\n handleStart,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-file {\n line-height: normal;\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n border: none;\n }\n .el-upload-list__item-file-name {\n line-height: normal;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["_useModel"],"mappings":"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"}
|