giime 0.6.2 → 0.6.4
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 +59 -58
- package/es/api/materialApi/cross/getAdFileExist.d.ts +1 -0
- package/es/api/materialApi/cross/getAdFileExist.mjs.map +1 -1
- package/es/components/src/base/chart/Chart.vue.d.ts +2 -2
- package/es/components/src/base/chart/index.d.ts +2 -2
- package/es/components/src/base/empty/Empty.vue.d.ts +1 -1
- package/es/components/src/base/empty/index.d.ts +3 -3
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +7 -8
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
- package/es/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +4 -4
- package/es/components/src/business/uploadMaterial/index.d.ts +4 -4
- package/es/components/src/business/uploadMaterial/uploadMaterial.d.ts +2 -5
- package/es/components/src/business/uploadMaterial/uploadMaterial.mjs.map +1 -1
- package/es/components/src/composite/fileComponent/FileComponent.vue.d.ts +1 -1
- package/es/components/src/composite/fileComponent/index.d.ts +1 -1
- package/es/components/src/composite/importDialog/ImportDialog.vue.d.ts +9 -2
- package/es/components/src/composite/importDialog/ImportDialog.vue2.mjs +5 -4
- package/es/components/src/composite/importDialog/ImportDialog.vue2.mjs.map +1 -1
- package/es/components/src/composite/importDialog/index.d.ts +193 -49
- package/es/components/src/composite/previewFile/PreviewFile.vue.d.ts +1 -1
- package/es/components/src/composite/previewFile/index.d.ts +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +5 -5
- package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +156 -145
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/index.d.ts +12 -12
- package/es/giime/index.mjs +2 -1
- package/es/giime/index.mjs.map +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/hooks/base/usePasteFile/index.d.ts +89 -0
- package/es/hooks/base/usePasteFile/index.mjs +109 -0
- package/es/hooks/base/usePasteFile/index.mjs.map +1 -0
- package/es/hooks/store/useOrgUserList/index.d.ts +3 -3
- package/es/hooks/store/useOrgUserList/index.mjs +3 -3
- package/es/hooks/store/useOrgUserList/index.mjs.map +1 -1
- package/es/index.css +59 -58
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.mjs +2 -1
- package/es/utils/index.mjs.map +1 -1
- package/es/utils/src/alioss/aliossPutHook.d.ts +116 -41
- package/es/utils/src/alioss/aliossPutHook.mjs +165 -97
- package/es/utils/src/alioss/aliossPutHook.mjs.map +1 -1
- package/es/utils/src/file.d.ts +7 -0
- package/es/utils/src/file.mjs +39 -1
- package/es/utils/src/file.mjs.map +1 -1
- package/es/utils/src/pasteFile/index.d.ts +33 -0
- package/es/utils/src/pasteFile/index.mjs +142 -0
- package/es/utils/src/pasteFile/index.mjs.map +1 -0
- package/lib/api/materialApi/cross/getAdFileExist.d.ts +1 -0
- package/lib/api/materialApi/cross/getAdFileExist.js.map +1 -1
- package/lib/components/src/base/chart/Chart.vue.d.ts +2 -2
- package/lib/components/src/base/chart/index.d.ts +2 -2
- package/lib/components/src/base/empty/Empty.vue.d.ts +1 -1
- package/lib/components/src/base/empty/index.d.ts +3 -3
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +7 -8
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
- package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +4 -4
- package/lib/components/src/business/uploadMaterial/index.d.ts +4 -4
- package/lib/components/src/business/uploadMaterial/uploadMaterial.d.ts +2 -5
- package/lib/components/src/business/uploadMaterial/uploadMaterial.js.map +1 -1
- package/lib/components/src/composite/fileComponent/FileComponent.vue.d.ts +1 -1
- package/lib/components/src/composite/fileComponent/index.d.ts +1 -1
- package/lib/components/src/composite/importDialog/ImportDialog.vue.d.ts +9 -2
- package/lib/components/src/composite/importDialog/ImportDialog.vue2.js +4 -3
- package/lib/components/src/composite/importDialog/ImportDialog.vue2.js.map +1 -1
- package/lib/components/src/composite/importDialog/index.d.ts +193 -49
- package/lib/components/src/composite/previewFile/PreviewFile.vue.d.ts +1 -1
- package/lib/components/src/composite/previewFile/index.d.ts +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +5 -5
- package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +160 -149
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
- package/lib/components/src/composite/uploadFile/index.d.ts +12 -12
- package/lib/giime/index.js +334 -328
- package/lib/giime/index.js.map +1 -1
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/hooks/base/usePasteFile/index.d.ts +89 -0
- package/lib/hooks/base/usePasteFile/index.js +111 -0
- package/lib/hooks/base/usePasteFile/index.js.map +1 -0
- package/lib/hooks/store/useOrgUserList/index.d.ts +3 -3
- package/lib/hooks/store/useOrgUserList/index.js +3 -3
- package/lib/hooks/store/useOrgUserList/index.js.map +1 -1
- package/lib/index.css +59 -58
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +6 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/src/alioss/aliossPutHook.d.ts +116 -41
- package/lib/utils/src/alioss/aliossPutHook.js +165 -97
- package/lib/utils/src/alioss/aliossPutHook.js.map +1 -1
- package/lib/utils/src/file.d.ts +7 -0
- package/lib/utils/src/file.js +40 -0
- package/lib/utils/src/file.js.map +1 -1
- package/lib/utils/src/pasteFile/index.d.ts +33 -0
- package/lib/utils/src/pasteFile/index.js +146 -0
- package/lib/utils/src/pasteFile/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -5,17 +5,19 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var vue = require('vue');
|
|
6
6
|
var elementPlus = require('element-plus');
|
|
7
7
|
var aliossPutHook = require('../../../../utils/src/alioss/aliossPutHook.js');
|
|
8
|
+
var file = require('../../../../utils/src/file.js');
|
|
9
|
+
var index = require('../../../../hooks/base/usePasteFile/index.js');
|
|
8
10
|
var iconsVue = require('@element-plus/icons-vue');
|
|
9
|
-
var index = require('../fileComponent/index.js');
|
|
10
|
-
var index$
|
|
11
|
+
var index$1 = require('../fileComponent/index.js');
|
|
12
|
+
var index$2 = require('../previewFile/index.js');
|
|
11
13
|
var uploadFile = require('./uploadFile.js');
|
|
12
14
|
|
|
13
|
-
const _withScopeId = (n) => (vue.pushScopeId("data-v-
|
|
15
|
+
const _withScopeId = (n) => (vue.pushScopeId("data-v-3bf7f50d"), n = n(), vue.popScopeId(), n);
|
|
14
16
|
const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode(
|
|
15
17
|
"div",
|
|
16
18
|
{ class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
|
|
17
19
|
[
|
|
18
|
-
/* @__PURE__ */ vue.createTextVNode(" \u5C06\u6587\u4EF6\u62D6\u5230\u6B64\u5904\uFF0C\u6216 "),
|
|
20
|
+
/* @__PURE__ */ vue.createTextVNode(" \u5C06\u6587\u4EF6\u62D6\u5230\u6B64\u5904\uFF0C\u590D\u5236\u7C98\u8D34\uFF0C\u6216 "),
|
|
19
21
|
/* @__PURE__ */ vue.createElementVNode("em", { class: "gm-text-blue-700" }, "\u70B9\u51FB\u4E0A\u4F20")
|
|
20
22
|
],
|
|
21
23
|
-1
|
|
@@ -41,33 +43,20 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
41
43
|
const emit = __emit;
|
|
42
44
|
const { uploadFile, saveFileResult } = aliossPutHook.useAliossHookStore();
|
|
43
45
|
saveFileResult((res) => {
|
|
44
|
-
|
|
45
|
-
emit("handleSaveFileSuccess", { url, md5_code, file_size });
|
|
46
|
+
emit("handleSaveFileSuccess", res);
|
|
46
47
|
});
|
|
47
48
|
const fileList = vue.useModel(__props, "fileList");
|
|
48
49
|
const checkoutFiles = vue.useModel(__props, "checkoutFiles");
|
|
49
50
|
const httpRequest = async (params) => {
|
|
50
|
-
const { file } = params;
|
|
51
|
+
const { file: file$1 } = params;
|
|
51
52
|
if (props.accept && props.accept !== "*") {
|
|
52
|
-
const
|
|
53
|
-
const fileType = file.type || "";
|
|
54
|
-
const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf(".")));
|
|
55
|
-
const isValidType = acceptTypes.some((type) => {
|
|
56
|
-
if (type.startsWith(".")) {
|
|
57
|
-
return fileExtension.toLowerCase() === type.toLowerCase();
|
|
58
|
-
} else if (type.includes("/*")) {
|
|
59
|
-
const [mainType] = type.split("/");
|
|
60
|
-
return fileType.startsWith(`${mainType}/`);
|
|
61
|
-
} else {
|
|
62
|
-
return fileType === type;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
53
|
+
const isValidType = file.fileValidType(file$1, props.accept);
|
|
65
54
|
if (!isValidType) {
|
|
66
55
|
throw new Error(`\u6587\u4EF6\u7C7B\u578B\u4E0D\u652F\u6301\uFF0C\u8BF7\u4E0A\u4F20 ${props.accept} \u683C\u5F0F\u7684\u6587\u4EF6`);
|
|
67
56
|
}
|
|
68
57
|
}
|
|
69
58
|
const res = await uploadFile({
|
|
70
|
-
file,
|
|
59
|
+
file: file$1,
|
|
71
60
|
fileName: props.fileName,
|
|
72
61
|
folder: props.folder,
|
|
73
62
|
seat: props.seat,
|
|
@@ -102,6 +91,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
102
91
|
});
|
|
103
92
|
};
|
|
104
93
|
const uploadFileRef = vue.ref();
|
|
94
|
+
const pasteFileRef = vue.ref();
|
|
105
95
|
const submit = () => {
|
|
106
96
|
uploadFileRef.value.submit();
|
|
107
97
|
};
|
|
@@ -120,6 +110,23 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
120
110
|
fileIndex.value = fileList.value.indexOf(file);
|
|
121
111
|
dialogVisible.value = true;
|
|
122
112
|
};
|
|
113
|
+
const { onSuccess, onError } = index.usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });
|
|
114
|
+
onSuccess((files) => {
|
|
115
|
+
if (Array.isArray(files) && files.length > 0) {
|
|
116
|
+
files.forEach((file) => {
|
|
117
|
+
if (file instanceof File) {
|
|
118
|
+
const rawFile = file;
|
|
119
|
+
handleStart(rawFile);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
onError((error) => {
|
|
125
|
+
console.error("\u7C98\u8D34\u9519\u8BEF:", error);
|
|
126
|
+
elementPlus.ElMessageBox.alert(error.message, "\u63D0\u793A", {
|
|
127
|
+
type: "error"
|
|
128
|
+
});
|
|
129
|
+
});
|
|
123
130
|
__expose({
|
|
124
131
|
submit,
|
|
125
132
|
abort,
|
|
@@ -133,143 +140,147 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
133
140
|
const _component_el_checkbox = vue.resolveComponent("el-checkbox");
|
|
134
141
|
const _component_el_upload = vue.resolveComponent("el-upload");
|
|
135
142
|
const _component_el_checkbox_group = vue.resolveComponent("el-checkbox-group");
|
|
136
|
-
return vue.openBlock(), vue.createElementBlock(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
class: "gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1",
|
|
164
|
-
style: vue.normalizeStyle([{ "flex-direction": "column" }, { width: _ctx.width + "px", height: _ctx.height + "px" }])
|
|
165
|
-
},
|
|
166
|
-
[
|
|
167
|
-
vue.createVNode(_component_el_icon, {
|
|
168
|
-
size: 30,
|
|
169
|
-
color: "#999"
|
|
170
|
-
}, {
|
|
171
|
-
default: vue.withCtx(() => [
|
|
172
|
-
vue.createVNode(vue.unref(iconsVue.UploadFilled))
|
|
173
|
-
]),
|
|
174
|
-
_: 1
|
|
175
|
-
/* STABLE */
|
|
176
|
-
}),
|
|
177
|
-
_hoisted_1
|
|
178
|
-
],
|
|
179
|
-
4
|
|
180
|
-
/* STYLE */
|
|
181
|
-
)) : (vue.openBlock(), vue.createBlock(_component_el_button, {
|
|
182
|
-
key: 1,
|
|
183
|
-
type: "primary",
|
|
184
|
-
size: "default"
|
|
185
|
-
}, {
|
|
186
|
-
default: vue.withCtx(() => [
|
|
187
|
-
vue.createTextVNode("\u70B9\u51FB\u4E0A\u4F20")
|
|
188
|
-
]),
|
|
189
|
-
_: 1
|
|
190
|
-
/* STABLE */
|
|
191
|
-
}))
|
|
192
|
-
], true) : vue.createCommentVNode("v-if", true)
|
|
193
|
-
]),
|
|
194
|
-
_: 2
|
|
195
|
-
/* DYNAMIC */
|
|
196
|
-
}, [
|
|
197
|
-
_ctx.showFileList && _ctx.listType === "picture-card" ? {
|
|
198
|
-
name: "file",
|
|
199
|
-
fn: vue.withCtx(({ file }) => [
|
|
200
|
-
_ctx.checkbox ? (vue.openBlock(), vue.createBlock(_component_el_checkbox, {
|
|
201
|
-
key: 0,
|
|
202
|
-
value: file
|
|
203
|
-
}, null, 8, ["value"])) : vue.createCommentVNode("v-if", true),
|
|
204
|
-
vue.renderSlot(_ctx.$slots, "file", { file }, () => [
|
|
205
|
-
vue.createElementVNode(
|
|
143
|
+
return vue.openBlock(), vue.createElementBlock("div", null, [
|
|
144
|
+
vue.createElementVNode(
|
|
145
|
+
"div",
|
|
146
|
+
{
|
|
147
|
+
ref_key: "pasteFileRef",
|
|
148
|
+
ref: pasteFileRef,
|
|
149
|
+
class: vue.normalizeClass([{ "gm-upload-file-picture-card": _ctx.listType === "picture-card", "gm-upload-file-disabled": _ctx.disabled }, "gm-upload-file"])
|
|
150
|
+
},
|
|
151
|
+
[
|
|
152
|
+
vue.createVNode(_component_el_checkbox_group, {
|
|
153
|
+
modelValue: checkoutFiles.value,
|
|
154
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => checkoutFiles.value = $event)
|
|
155
|
+
}, {
|
|
156
|
+
default: vue.withCtx(() => [
|
|
157
|
+
vue.createVNode(_component_el_upload, vue.mergeProps({
|
|
158
|
+
ref_key: "uploadFileRef",
|
|
159
|
+
ref: uploadFileRef
|
|
160
|
+
}, props, {
|
|
161
|
+
"file-list": fileList.value,
|
|
162
|
+
"onUpdate:fileList": _cache[0] || (_cache[0] = ($event) => fileList.value = $event),
|
|
163
|
+
"before-remove": beforeRemove,
|
|
164
|
+
action: "",
|
|
165
|
+
"http-request": httpRequest
|
|
166
|
+
}), vue.createSlots({
|
|
167
|
+
default: vue.withCtx(() => [
|
|
168
|
+
!_ctx.disabled ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }, () => [
|
|
169
|
+
_ctx.listType === "picture-card" ? (vue.openBlock(), vue.createElementBlock(
|
|
206
170
|
"div",
|
|
207
171
|
{
|
|
208
|
-
|
|
209
|
-
|
|
172
|
+
key: 0,
|
|
173
|
+
class: "gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1",
|
|
174
|
+
style: vue.normalizeStyle([{ "flex-direction": "column" }, { width: _ctx.width + "px", height: _ctx.height + "px" }])
|
|
210
175
|
},
|
|
211
176
|
[
|
|
212
|
-
vue.createVNode(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
controls: false
|
|
217
|
-
}, null, 8, ["file", "size", "url"])
|
|
218
|
-
],
|
|
219
|
-
4
|
|
220
|
-
/* STYLE */
|
|
221
|
-
),
|
|
222
|
-
vue.createElementVNode("div", _hoisted_2, [
|
|
223
|
-
vue.createElementVNode("span", {
|
|
224
|
-
class: "el-upload-list__item-preview",
|
|
225
|
-
onClick: ($event) => handlePreview(file)
|
|
226
|
-
}, [
|
|
227
|
-
vue.createVNode(_component_el_icon, null, {
|
|
177
|
+
vue.createVNode(_component_el_icon, {
|
|
178
|
+
size: 30,
|
|
179
|
+
color: "#999"
|
|
180
|
+
}, {
|
|
228
181
|
default: vue.withCtx(() => [
|
|
229
|
-
vue.createVNode(vue.unref(iconsVue.
|
|
182
|
+
vue.createVNode(vue.unref(iconsVue.UploadFilled))
|
|
230
183
|
]),
|
|
231
184
|
_: 1
|
|
232
185
|
/* STABLE */
|
|
233
|
-
})
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
], true)
|
|
186
|
+
}),
|
|
187
|
+
_hoisted_1
|
|
188
|
+
],
|
|
189
|
+
4
|
|
190
|
+
/* STYLE */
|
|
191
|
+
)) : (vue.openBlock(), vue.createBlock(_component_el_button, {
|
|
192
|
+
key: 1,
|
|
193
|
+
type: "primary",
|
|
194
|
+
size: "default"
|
|
195
|
+
}, {
|
|
196
|
+
default: vue.withCtx(() => [
|
|
197
|
+
vue.createTextVNode("\u70B9\u51FB\u4E0A\u4F20")
|
|
198
|
+
]),
|
|
199
|
+
_: 1
|
|
200
|
+
/* STABLE */
|
|
201
|
+
}))
|
|
202
|
+
], true) : vue.createCommentVNode("v-if", true)
|
|
250
203
|
]),
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
204
|
+
_: 2
|
|
205
|
+
/* DYNAMIC */
|
|
206
|
+
}, [
|
|
207
|
+
_ctx.showFileList && _ctx.listType === "picture-card" ? {
|
|
208
|
+
name: "file",
|
|
209
|
+
fn: vue.withCtx(({ file }) => [
|
|
210
|
+
_ctx.checkbox ? (vue.openBlock(), vue.createBlock(_component_el_checkbox, {
|
|
211
|
+
key: 0,
|
|
212
|
+
value: file
|
|
213
|
+
}, null, 8, ["value"])) : vue.createCommentVNode("v-if", true),
|
|
214
|
+
vue.renderSlot(_ctx.$slots, "file", { file }, () => [
|
|
215
|
+
vue.createElementVNode(
|
|
216
|
+
"div",
|
|
217
|
+
{
|
|
218
|
+
class: "gm-flex gm-items-center gm-justify-center gm-rounded-md",
|
|
219
|
+
style: vue.normalizeStyle({ width: _ctx.width + "px", height: _ctx.height + "px" })
|
|
220
|
+
},
|
|
221
|
+
[
|
|
222
|
+
vue.createVNode(vue.unref(index$1.GmFileComponent), {
|
|
223
|
+
file,
|
|
224
|
+
size: _ctx.width - 40,
|
|
225
|
+
url: _ctx.url,
|
|
226
|
+
controls: false
|
|
227
|
+
}, null, 8, ["file", "size", "url"])
|
|
228
|
+
],
|
|
229
|
+
4
|
|
230
|
+
/* STYLE */
|
|
231
|
+
),
|
|
232
|
+
vue.createElementVNode("div", _hoisted_2, [
|
|
233
|
+
vue.createElementVNode("span", {
|
|
234
|
+
class: "el-upload-list__item-preview",
|
|
235
|
+
onClick: ($event) => handlePreview(file)
|
|
236
|
+
}, [
|
|
237
|
+
vue.createVNode(_component_el_icon, null, {
|
|
238
|
+
default: vue.withCtx(() => [
|
|
239
|
+
vue.createVNode(vue.unref(iconsVue.View))
|
|
240
|
+
]),
|
|
241
|
+
_: 1
|
|
242
|
+
/* STABLE */
|
|
243
|
+
})
|
|
244
|
+
], 8, _hoisted_3),
|
|
245
|
+
_ctx.showDelete ? (vue.openBlock(), vue.createElementBlock("span", {
|
|
246
|
+
key: 0,
|
|
247
|
+
class: "el-upload-list__item-delete",
|
|
248
|
+
onClick: ($event) => handleRemove(file, fileList.value)
|
|
249
|
+
}, [
|
|
250
|
+
vue.createVNode(_component_el_icon, null, {
|
|
251
|
+
default: vue.withCtx(() => [
|
|
252
|
+
vue.createVNode(vue.unref(iconsVue.Delete))
|
|
253
|
+
]),
|
|
254
|
+
_: 1
|
|
255
|
+
/* STABLE */
|
|
256
|
+
})
|
|
257
|
+
], 8, _hoisted_4)) : vue.createCommentVNode("v-if", true)
|
|
258
|
+
])
|
|
259
|
+
], true)
|
|
260
|
+
]),
|
|
261
|
+
key: "0"
|
|
262
|
+
} : void 0
|
|
263
|
+
]), 1040, ["file-list"])
|
|
264
|
+
]),
|
|
265
|
+
_: 3
|
|
266
|
+
/* FORWARDED */
|
|
267
|
+
}, 8, ["modelValue"]),
|
|
268
|
+
vue.createVNode(vue.unref(index$2.GmPreviewFile), {
|
|
269
|
+
dialogVisible: dialogVisible.value,
|
|
270
|
+
"onUpdate:dialogVisible": _cache[2] || (_cache[2] = ($event) => dialogVisible.value = $event),
|
|
271
|
+
"file-index": fileIndex.value,
|
|
272
|
+
"onUpdate:fileIndex": _cache[3] || (_cache[3] = ($event) => fileIndex.value = $event),
|
|
273
|
+
"file-list": fileList.value,
|
|
274
|
+
controls: _ctx.controls,
|
|
275
|
+
oncontextmenu: _ctx.oncontextmenu,
|
|
276
|
+
controlslist: _ctx.controlslist,
|
|
277
|
+
field: _ctx.field
|
|
278
|
+
}, null, 8, ["dialogVisible", "file-index", "file-list", "controls", "oncontextmenu", "controlslist", "field"])
|
|
279
|
+
],
|
|
280
|
+
2
|
|
281
|
+
/* CLASS */
|
|
282
|
+
)
|
|
283
|
+
]);
|
|
273
284
|
};
|
|
274
285
|
}
|
|
275
286
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadFile.vue2.js","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\r\n <div :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\" class=\"gm-upload-file\">\r\n <el-checkbox-group v-model=\"checkoutFiles\">\r\n <el-upload ref=\"uploadFileRef\" v-bind=\"props\" v-model:file-list=\"fileList\" :before-remove=\"beforeRemove\" action=\"\" :http-request=\"httpRequest\">\r\n <slot v-if=\"!disabled\">\r\n <template v-if=\"listType === 'picture-card'\">\r\n <div\r\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1\"\r\n style=\"flex-direction: column\"\r\n :style=\"{ width: width + 'px', height: height + 'px' }\"\r\n >\r\n <el-icon :size=\"30\" color=\"#999\">\r\n <UploadFilled />\r\n </el-icon>\r\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\r\n 将文件拖到此处,或 <em class=\"gm-text-blue-700\">点击上传</em>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\r\n </template>\r\n </slot>\r\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\r\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\r\n <slot name=\"file\" :file=\"file\">\r\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\r\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" />\r\n </div>\r\n <div class=\"el-upload-list__item-actions\">\r\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\r\n <el-icon><View /></el-icon>\r\n </span>\r\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\r\n <el-icon><Delete /></el-icon>\r\n </span>\r\n </div>\r\n </slot>\r\n </template>\r\n </el-upload>\r\n </el-checkbox-group>\r\n\r\n <GmPreviewFile\r\n v-model:dialogVisible=\"dialogVisible\"\r\n v-model:file-index=\"fileIndex\"\r\n :file-list=\"fileList\"\r\n :controls=\"controls\"\r\n :oncontextmenu=\"oncontextmenu\"\r\n :controlslist=\"controlslist\"\r\n :field=\"field\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport { ElMessageBox } from 'element-plus';\r\nimport { useAliossHookStore } from '@giime/utils/src/alioss/aliossPutHook';\r\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport GmPreviewFile from '../previewFile';\r\nimport { uploadFileProps } from './uploadFile';\r\nimport type { UploadFile, UploadFiles, UploadInstance, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\r\nimport type { PostSaveFileResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\ndefineOptions({\r\n name: 'GmUploadFile',\r\n});\r\n\r\nconst props = defineProps(uploadFileProps);\r\nconst emit = defineEmits([\"handleRemove\", \"handleSaveFileSuccess\"]);\r\n\r\nconst { uploadFile, saveFileResult } = useAliossHookStore();\r\n\r\nsaveFileResult((res: any) => {\r\n const { url, md5_code, file_size } = res;\r\n emit('handleSaveFileSuccess', { url, md5_code, file_size });\r\n});\r\n\r\n/** 上传文件 */\r\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\r\n/** 多选数据 */\r\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\r\n\r\n/* 上传 */\r\nconst httpRequest = async (params: UploadRequestOptions) => {\r\n const { file } = params;\r\n\r\n // 验证文件类型\r\n if (props.accept && props.accept !== '*') {\r\n const acceptTypes = props.accept.split(',').map(type => type.trim());\r\n const fileType = file.type || '';\r\n const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf('.')));\r\n\r\n const isValidType = acceptTypes.some(type => {\r\n if (type.startsWith('.')) {\r\n // 检查文件扩展名\r\n return fileExtension.toLowerCase() === type.toLowerCase();\r\n } else if (type.includes('/*')) {\r\n // 检查 MIME 类型组,如 image/*\r\n const [mainType] = type.split('/');\r\n return fileType.startsWith(`${mainType}/`);\r\n } else {\r\n // 检查具体 MIME 类型\r\n return fileType === type;\r\n }\r\n });\r\n\r\n if (!isValidType) {\r\n throw new Error(`文件类型不支持,请上传 ${props.accept} 格式的文件`);\r\n }\r\n }\r\n\r\n const res = await uploadFile({\r\n file,\r\n fileName: props.fileName,\r\n folder: props.folder,\r\n seat: props.seat,\r\n partSize: props.partSize,\r\n parallel: props.parallel,\r\n options: props.options,\r\n bucket: props.bucket,\r\n saveStore: props.saveStore,\r\n cdn: props.cdn,\r\n });\r\n return res;\r\n};\r\n\r\n/* 删除文件前 */\r\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\r\n if (props.disabled) {\r\n return false;\r\n }\r\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\r\n};\r\n\r\n/* 删除文件 */\r\nconst handleRemove = (file: UploadFile, uploadFiles: UploadFiles) => {\r\n ElMessageBox.confirm('确定删除该文件吗?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n })\r\n .then(() => {\r\n const index = fileList.value.indexOf(file);\r\n if (index > -1) {\r\n fileList.value.splice(index, 1);\r\n emit('handleRemove', { file, index });\r\n return props.onRemove?.(file, uploadFiles);\r\n }\r\n })\r\n .catch(() => {});\r\n};\r\n\r\nconst uploadFileRef = ref<UploadInstance>();\r\n/* 手动上传 */\r\nconst submit = () => {\r\n uploadFileRef.value!.submit();\r\n};\r\n\r\n/** 取消上传 */\r\nconst abort = (file: UploadFile) => {\r\n uploadFileRef.value!.abort(file);\r\n};\r\n\r\n/** 清空已上传的文件列表 */\r\nconst clearFiles = (status?: UploadStatus[]) => {\r\n uploadFileRef.value!.clearFiles(status);\r\n};\r\n\r\n/** 手动选择文件 */\r\nconst handleStart = (rawFile: UploadRawFile) => {\r\n uploadFileRef.value!.handleStart(rawFile);\r\n};\r\n\r\n/** 预览 */\r\nconst dialogVisible = ref(false);\r\nconst fileIndex = ref(0);\r\nconst handlePreview = (file: UploadFile) => {\r\n fileIndex.value = fileList.value.indexOf(file);\r\n dialogVisible.value = true;\r\n};\r\n\r\ndefineExpose({\r\n submit,\r\n abort,\r\n clearFiles,\r\n handleStart,\r\n uploadFileRef,\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.gm-upload-preview-dialog {\r\n :deep(.el-dialog__body) {\r\n padding: 0;\r\n }\r\n}\r\n.gm-upload-file-picture-card {\r\n :deep(.el-upload-list__item),\r\n :deep(.el-upload--picture-card) {\r\n width: 120px;\r\n height: 120px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n}\r\n</style>\r\n<style lang=\"scss\">\r\n.gm-upload-file {\r\n line-height: normal;\r\n .el-checkbox {\r\n position: absolute;\r\n left: 10px;\r\n top: 0;\r\n z-index: 9;\r\n }\r\n .el-upload-list__item-file-name {\r\n line-height: normal;\r\n }\r\n .el-upload-dragger {\r\n padding: 0;\r\n border: none;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n }\r\n}\r\n.gm-upload-file-disabled {\r\n .el-upload--picture-card {\r\n display: none;\r\n }\r\n .el-upload-list__item-status-label {\r\n display: none;\r\n }\r\n}\r\n</style>\r\n"],"names":["useAliossHookStore","_useModel","ElMessageBox","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAEb,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIA,gCAAmB,EAAA,CAAA;AAE1D,IAAA,cAAA,CAAe,CAAC,GAAa,KAAA;AAC3B,MAAA,MAAM,EAAE,GAAA,EAAK,QAAU,EAAA,SAAA,EAAc,GAAA,GAAA,CAAA;AACrC,MAAA,IAAA,CAAK,uBAAyB,EAAA,EAAE,GAAK,EAAA,QAAA,EAAU,WAAW,CAAA,CAAA;AAAA,KAC3D,CAAA,CAAA;AAGD,IAAM,MAAA,QAAA,GAAWC,sBAA0B,UAAiD,CAAA,CAAA;AAE5F,IAAM,MAAA,aAAA,GAAgBA,sBAAmB,eAAsC,CAAA,CAAA;AAG/E,IAAM,MAAA,WAAA,GAAc,OAAO,MAAiC,KAAA;AAC1D,MAAM,MAAA,EAAE,MAAS,GAAA,MAAA,CAAA;AAGjB,MAAA,IAAI,KAAM,CAAA,MAAA,IAAU,KAAM,CAAA,MAAA,KAAW,GAAK,EAAA;AACxC,QAAM,MAAA,WAAA,GAAc,KAAM,CAAA,MAAA,CAAO,KAAM,CAAA,GAAG,EAAE,GAAI,CAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AACnE,QAAM,MAAA,QAAA,GAAW,KAAK,IAAQ,IAAA,EAAA,CAAA;AAC9B,QAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,CAAG,EAAA,IAAA,CAAK,IAAK,CAAA,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA,CAAA;AAE7E,QAAM,MAAA,WAAA,GAAc,WAAY,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA;AAC3C,UAAI,IAAA,IAAA,CAAK,UAAW,CAAA,GAAG,CAAG,EAAA;AAExB,YAAA,OAAO,aAAc,CAAA,WAAA,EAAkB,KAAA,IAAA,CAAK,WAAY,EAAA,CAAA;AAAA,WAC/C,MAAA,IAAA,IAAA,CAAK,QAAS,CAAA,IAAI,CAAG,EAAA;AAE9B,YAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAA;AACjC,YAAA,OAAO,QAAS,CAAA,UAAA,CAAW,CAAG,EAAA,QAAQ,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,WACpC,MAAA;AAEL,YAAA,OAAO,QAAa,KAAA,IAAA,CAAA;AAAA,WACtB;AAAA,SACD,CAAA,CAAA;AAED,QAAA,IAAI,CAAC,WAAa,EAAA;AAChB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAe,mEAAA,EAAA,KAAA,CAAM,MAAM,CAAQ,+BAAA,CAAA,CAAA,CAAA;AAAA,SACrD;AAAA,OACF;AAEA,MAAM,MAAA,GAAA,GAAM,MAAM,UAAW,CAAA;AAAA,QAC3B,IAAA;AAAA,QACA,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,QAAQ,KAAM,CAAA,MAAA;AAAA,QACd,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,SAAS,KAAM,CAAA,OAAA;AAAA,QACf,QAAQ,KAAM,CAAA,MAAA;AAAA,QACd,WAAW,KAAM,CAAA,SAAA;AAAA,QACjB,KAAK,KAAM,CAAA,GAAA;AAAA,OACZ,CAAA,CAAA;AACD,MAAO,OAAA,GAAA,CAAA;AAAA,KACT,CAAA;AAGA,IAAM,MAAA,YAAA,GAAe,CAAC,IAAA,EAAkB,KAAuB,KAAA;AAC7D,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAA,OAAO,MAAM,YAAe,GAAA,KAAA,CAAM,YAAa,CAAA,IAAA,EAAM,KAAK,CAAI,GAAA,IAAA,CAAA;AAAA,KAChE,CAAA;AAGA,IAAM,MAAA,YAAA,GAAe,CAAC,IAAA,EAAkB,WAA6B,KAAA;AACnE,MAAaC,wBAAA,CAAA,OAAA,CAAQ,0DAAa,cAAM,EAAA;AAAA,QACtC,iBAAmB,EAAA,cAAA;AAAA,QACnB,gBAAkB,EAAA,cAAA;AAAA,QAClB,IAAM,EAAA,SAAA;AAAA,OACP,CACE,CAAA,IAAA,CAAK,MAAM;AACV,QAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACzC,QAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,UAAS,QAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAC9B,UAAA,IAAA,CAAK,cAAgB,EAAA,EAAE,IAAM,EAAA,KAAA,EAAO,CAAA,CAAA;AACpC,UAAO,OAAA,KAAA,CAAM,QAAW,GAAA,IAAA,EAAM,WAAW,CAAA,CAAA;AAAA,SAC3C;AAAA,OACD,CACA,CAAA,KAAA,CAAM,MAAM;AAAA,OAAE,CAAA,CAAA;AAAA,KACnB,CAAA;AAEA,IAAA,MAAM,gBAAgBC,OAAoB,EAAA,CAAA;AAE1C,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,aAAA,CAAc,MAAO,MAAO,EAAA,CAAA;AAAA,KAC9B,CAAA;AAGA,IAAM,MAAA,KAAA,GAAQ,CAAC,IAAqB,KAAA;AAClC,MAAc,aAAA,CAAA,KAAA,CAAO,MAAM,IAAI,CAAA,CAAA;AAAA,KACjC,CAAA;AAGA,IAAM,MAAA,UAAA,GAAa,CAAC,MAA4B,KAAA;AAC9C,MAAc,aAAA,CAAA,KAAA,CAAO,WAAW,MAAM,CAAA,CAAA;AAAA,KACxC,CAAA;AAGA,IAAM,MAAA,WAAA,GAAc,CAAC,OAA2B,KAAA;AAC9C,MAAc,aAAA,CAAA,KAAA,CAAO,YAAY,OAAO,CAAA,CAAA;AAAA,KAC1C,CAAA;AAGA,IAAM,MAAA,aAAA,GAAgBA,QAAI,KAAK,CAAA,CAAA;AAC/B,IAAM,MAAA,SAAA,GAAYA,QAAI,CAAC,CAAA,CAAA;AACvB,IAAM,MAAA,aAAA,GAAgB,CAAC,IAAqB,KAAA;AAC1C,MAAA,SAAA,CAAU,KAAQ,GAAA,QAAA,CAAS,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAC7C,MAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAA;AAAA,KACxB,CAAA;AAEA,IAAa,QAAA,CAAA;AAAA,MACX,MAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"UploadFile.vue2.js","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\r\n <div>\r\n <div\r\n ref=\"pasteFileRef\"\r\n :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\"\r\n class=\"gm-upload-file\"\r\n >\r\n <el-checkbox-group v-model=\"checkoutFiles\">\r\n <el-upload\r\n ref=\"uploadFileRef\"\r\n v-bind=\"props\"\r\n v-model:file-list=\"fileList\"\r\n :before-remove=\"beforeRemove\"\r\n action=\"\"\r\n :http-request=\"httpRequest\"\r\n >\r\n <slot v-if=\"!disabled\">\r\n <template v-if=\"listType === 'picture-card'\">\r\n <div\r\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1\"\r\n style=\"flex-direction: column\"\r\n :style=\"{ width: width + 'px', height: height + 'px' }\"\r\n >\r\n <el-icon :size=\"30\" color=\"#999\">\r\n <UploadFilled />\r\n </el-icon>\r\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\r\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\r\n </template>\r\n </slot>\r\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\r\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\r\n <slot name=\"file\" :file=\"file\">\r\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\r\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" />\r\n </div>\r\n <div class=\"el-upload-list__item-actions\">\r\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\r\n <el-icon><View /></el-icon>\r\n </span>\r\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\r\n <el-icon><Delete /></el-icon>\r\n </span>\r\n </div>\r\n </slot>\r\n </template>\r\n </el-upload>\r\n </el-checkbox-group>\r\n\r\n <GmPreviewFile\r\n v-model:dialogVisible=\"dialogVisible\"\r\n v-model:file-index=\"fileIndex\"\r\n :file-list=\"fileList\"\r\n :controls=\"controls\"\r\n :oncontextmenu=\"oncontextmenu\"\r\n :controlslist=\"controlslist\"\r\n :field=\"field\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport { ElMessageBox } from 'element-plus';\r\nimport { useAliossHookStore } from '@giime/utils/src/alioss/aliossPutHook';\r\nimport { fileValidType } from '@giime/utils/src/file';\r\n// import { pasteFile } from '@giime/utils/src/pasteFile';\r\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\r\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport GmPreviewFile from '../previewFile';\r\nimport { uploadFileProps } from './uploadFile';\r\nimport type { UploadFile, UploadFiles, UploadInstance, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\r\nimport type { AliOssResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\ndefineOptions({\r\n name: 'GmUploadFile',\r\n});\r\n\r\nconst props = defineProps(uploadFileProps);\r\nconst emit = defineEmits([\"handleRemove\", \"handleSaveFileSuccess\"]);\r\n\r\nconst { uploadFile, saveFileResult } = useAliossHookStore();\r\n\r\nsaveFileResult((res: AliOssResponse) => {\r\n emit('handleSaveFileSuccess', res);\r\n});\r\n\r\n/** 上传文件 */\r\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\r\n/** 多选数据 */\r\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\r\n\r\n/* 上传 */\r\nconst httpRequest = async (params: UploadRequestOptions) => {\r\n const { file } = params;\r\n\r\n // 验证文件类型\r\n if (props.accept && props.accept !== '*') {\r\n const isValidType = fileValidType(file, props.accept);\r\n if (!isValidType) {\r\n throw new Error(`文件类型不支持,请上传 ${props.accept} 格式的文件`);\r\n }\r\n }\r\n\r\n const res = await uploadFile({\r\n file,\r\n fileName: props.fileName,\r\n folder: props.folder,\r\n seat: props.seat,\r\n partSize: props.partSize,\r\n parallel: props.parallel,\r\n options: props.options,\r\n bucket: props.bucket,\r\n saveStore: props.saveStore,\r\n cdn: props.cdn,\r\n });\r\n return res;\r\n};\r\n\r\n/* 删除文件前 */\r\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\r\n if (props.disabled) {\r\n return false;\r\n }\r\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\r\n};\r\n\r\n/* 删除文件 */\r\nconst handleRemove = (file: UploadFile, uploadFiles: UploadFiles) => {\r\n ElMessageBox.confirm('确定删除该文件吗?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n })\r\n .then(() => {\r\n const index = fileList.value.indexOf(file);\r\n if (index > -1) {\r\n fileList.value.splice(index, 1);\r\n emit('handleRemove', { file, index });\r\n return props.onRemove?.(file, uploadFiles);\r\n }\r\n })\r\n .catch(() => {});\r\n};\r\n\r\nconst uploadFileRef = ref<UploadInstance>();\r\nconst pasteFileRef = ref<HTMLElement>();\r\n/* 手动上传 */\r\nconst submit = () => {\r\n uploadFileRef.value!.submit();\r\n};\r\n\r\n/** 取消上传 */\r\nconst abort = (file: UploadFile) => {\r\n uploadFileRef.value!.abort(file);\r\n};\r\n\r\n/** 清空已上传的文件列表 */\r\nconst clearFiles = (status?: UploadStatus[]) => {\r\n uploadFileRef.value!.clearFiles(status);\r\n};\r\n\r\n/** 手动选择文件 */\r\nconst handleStart = (rawFile: UploadRawFile) => {\r\n uploadFileRef.value!.handleStart(rawFile);\r\n};\r\n\r\n/** 预览 */\r\nconst dialogVisible = ref(false);\r\nconst fileIndex = ref(0);\r\nconst handlePreview = (file: UploadFile) => {\r\n fileIndex.value = fileList.value.indexOf(file);\r\n dialogVisible.value = true;\r\n};\r\n\r\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\r\nonSuccess((files: File[]) => {\r\n if (Array.isArray(files) && files.length > 0) {\r\n files.forEach(file => {\r\n if (file instanceof File) {\r\n const rawFile = file as UploadRawFile;\r\n handleStart(rawFile);\r\n }\r\n });\r\n }\r\n});\r\n\r\nonError((error: Error) => {\r\n console.error('粘贴错误:', error);\r\n ElMessageBox.alert(error.message, '提示', {\r\n type: 'error',\r\n });\r\n});\r\n\r\ndefineExpose({\r\n submit,\r\n abort,\r\n clearFiles,\r\n handleStart,\r\n uploadFileRef,\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.gm-upload-preview-dialog {\r\n :deep(.el-dialog__body) {\r\n padding: 0;\r\n }\r\n}\r\n.gm-upload-file-picture-card {\r\n :deep(.el-upload-list__item),\r\n :deep(.el-upload--picture-card) {\r\n width: 120px;\r\n height: 120px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n}\r\n</style>\r\n<style lang=\"scss\">\r\n.gm-upload-file {\r\n line-height: normal;\r\n .el-checkbox {\r\n position: absolute;\r\n left: 10px;\r\n top: 0;\r\n z-index: 9;\r\n }\r\n .el-upload-list__item-file-name {\r\n line-height: normal;\r\n }\r\n .el-upload-dragger {\r\n padding: 0;\r\n border: none;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n }\r\n}\r\n.gm-upload-file-disabled {\r\n .el-upload--picture-card {\r\n display: none;\r\n }\r\n .el-upload-list__item-status-label {\r\n display: none;\r\n }\r\n}\r\n</style>\r\n"],"names":["useAliossHookStore","_useModel","file","fileValidType","ElMessageBox","ref","usePasteFile"],"mappings":"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"}
|
|
@@ -220,7 +220,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
220
220
|
index: number;
|
|
221
221
|
}) => any) | undefined;
|
|
222
222
|
"onUpdate:checkoutFiles"?: ((checkoutFiles: any[]) => any) | undefined;
|
|
223
|
-
onHandleSaveFileSuccess?: ((file: import("../../../../
|
|
223
|
+
onHandleSaveFileSuccess?: ((file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => any) | undefined;
|
|
224
224
|
}, {
|
|
225
225
|
submit: () => void;
|
|
226
226
|
abort: (file: import("element-plus").UploadFile) => void;
|
|
@@ -708,7 +708,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
708
708
|
file: import("element-plus").UploadFile;
|
|
709
709
|
index: number;
|
|
710
710
|
}) => void;
|
|
711
|
-
handleSaveFileSuccess: (file: import("../../../../
|
|
711
|
+
handleSaveFileSuccess: (file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => void;
|
|
712
712
|
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
|
|
713
713
|
fileList: {
|
|
714
714
|
required: true;
|
|
@@ -929,7 +929,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
929
929
|
index: number;
|
|
930
930
|
}) => any) | undefined;
|
|
931
931
|
"onUpdate:checkoutFiles"?: ((checkoutFiles: any[]) => any) | undefined;
|
|
932
|
-
onHandleSaveFileSuccess?: ((file: import("../../../../
|
|
932
|
+
onHandleSaveFileSuccess?: ((file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => any) | undefined;
|
|
933
933
|
}, {
|
|
934
934
|
name: string;
|
|
935
935
|
checkbox: boolean;
|
|
@@ -944,10 +944,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
944
944
|
url: string;
|
|
945
945
|
method: string;
|
|
946
946
|
withCredentials: boolean;
|
|
947
|
+
file: Partial<import("element-plus").UploadFile>;
|
|
947
948
|
onError: (error: Error, uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
948
949
|
onChange: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
949
950
|
controls: boolean;
|
|
950
|
-
file: Partial<import("element-plus").UploadFile>;
|
|
951
951
|
beforeUpload: (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.js").Awaitable<boolean | void | Blob | File | null | undefined>;
|
|
952
952
|
onRemove: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
953
953
|
onPreview: (uploadFile: import("element-plus").UploadFile) => void;
|
|
@@ -963,10 +963,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
963
963
|
field: keyof import("element-plus").UploadFile;
|
|
964
964
|
controlslist: string;
|
|
965
965
|
oncontextmenu: boolean;
|
|
966
|
+
parallel: number;
|
|
966
967
|
fileName: string;
|
|
967
968
|
folder: string;
|
|
968
969
|
seat: string;
|
|
969
|
-
parallel: number;
|
|
970
970
|
partSize: number;
|
|
971
971
|
bucket: string;
|
|
972
972
|
cdn: string;
|
|
@@ -1199,7 +1199,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
1199
1199
|
index: number;
|
|
1200
1200
|
}) => any) | undefined;
|
|
1201
1201
|
"onUpdate:checkoutFiles"?: ((checkoutFiles: any[]) => any) | undefined;
|
|
1202
|
-
onHandleSaveFileSuccess?: ((file: import("../../../../
|
|
1202
|
+
onHandleSaveFileSuccess?: ((file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => any) | undefined;
|
|
1203
1203
|
}, {
|
|
1204
1204
|
submit: () => void;
|
|
1205
1205
|
abort: (file: import("element-plus").UploadFile) => void;
|
|
@@ -1694,10 +1694,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
1694
1694
|
url: string;
|
|
1695
1695
|
method: string;
|
|
1696
1696
|
withCredentials: boolean;
|
|
1697
|
+
file: Partial<import("element-plus").UploadFile>;
|
|
1697
1698
|
onError: (error: Error, uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
1698
1699
|
onChange: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
1699
1700
|
controls: boolean;
|
|
1700
|
-
file: Partial<import("element-plus").UploadFile>;
|
|
1701
1701
|
beforeUpload: (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.js").Awaitable<boolean | void | Blob | File | null | undefined>;
|
|
1702
1702
|
onRemove: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
1703
1703
|
onPreview: (uploadFile: import("element-plus").UploadFile) => void;
|
|
@@ -1713,10 +1713,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
1713
1713
|
field: keyof import("element-plus").UploadFile;
|
|
1714
1714
|
controlslist: string;
|
|
1715
1715
|
oncontextmenu: boolean;
|
|
1716
|
+
parallel: number;
|
|
1716
1717
|
fileName: string;
|
|
1717
1718
|
folder: string;
|
|
1718
1719
|
seat: string;
|
|
1719
|
-
parallel: number;
|
|
1720
1720
|
partSize: number;
|
|
1721
1721
|
bucket: string;
|
|
1722
1722
|
cdn: string;
|
|
@@ -1946,7 +1946,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
1946
1946
|
index: number;
|
|
1947
1947
|
}) => any) | undefined;
|
|
1948
1948
|
"onUpdate:checkoutFiles"?: ((checkoutFiles: any[]) => any) | undefined;
|
|
1949
|
-
onHandleSaveFileSuccess?: ((file: import("../../../../
|
|
1949
|
+
onHandleSaveFileSuccess?: ((file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => any) | undefined;
|
|
1950
1950
|
}, {
|
|
1951
1951
|
submit: () => void;
|
|
1952
1952
|
abort: (file: import("element-plus").UploadFile) => void;
|
|
@@ -2434,7 +2434,7 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
2434
2434
|
file: import("element-plus").UploadFile;
|
|
2435
2435
|
index: number;
|
|
2436
2436
|
}) => void;
|
|
2437
|
-
handleSaveFileSuccess: (file: import("../../../../
|
|
2437
|
+
handleSaveFileSuccess: (file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => void;
|
|
2438
2438
|
}, string, {
|
|
2439
2439
|
name: string;
|
|
2440
2440
|
checkbox: boolean;
|
|
@@ -2449,10 +2449,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
2449
2449
|
url: string;
|
|
2450
2450
|
method: string;
|
|
2451
2451
|
withCredentials: boolean;
|
|
2452
|
+
file: Partial<import("element-plus").UploadFile>;
|
|
2452
2453
|
onError: (error: Error, uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
2453
2454
|
onChange: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
2454
2455
|
controls: boolean;
|
|
2455
|
-
file: Partial<import("element-plus").UploadFile>;
|
|
2456
2456
|
beforeUpload: (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.js").Awaitable<boolean | void | Blob | File | null | undefined>;
|
|
2457
2457
|
onRemove: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
|
|
2458
2458
|
onPreview: (uploadFile: import("element-plus").UploadFile) => void;
|
|
@@ -2468,10 +2468,10 @@ export declare const GmUploadFile: import("../../../../utils").SFCWithInstall<{
|
|
|
2468
2468
|
field: keyof import("element-plus").UploadFile;
|
|
2469
2469
|
controlslist: string;
|
|
2470
2470
|
oncontextmenu: boolean;
|
|
2471
|
+
parallel: number;
|
|
2471
2472
|
fileName: string;
|
|
2472
2473
|
folder: string;
|
|
2473
2474
|
seat: string;
|
|
2474
|
-
parallel: number;
|
|
2475
2475
|
partSize: number;
|
|
2476
2476
|
bucket: string;
|
|
2477
2477
|
cdn: string;
|