upload-sdk 1.0.0

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/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # Upload SDK
2
+
3
+ 本地使用的上传 SDK 包。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ # 在项目中使用本地路径安装
9
+ pnpm add file:../upload-sdk/dist
10
+ # 或者
11
+ npm install ../upload-sdk/dist
12
+ ```
13
+
14
+ ## 使用方法
15
+
16
+ ```javascript
17
+ // 导入整个 SDK
18
+ import sdk from '@upload-sdk/core';
19
+
20
+ // 或按需导入
21
+ import { uploadFile } from '@upload-sdk/core';
22
+ import client from '@upload-sdk/client';
23
+ import { formatSize } from '@upload-sdk/utils';
24
+
25
+ // 使用
26
+ uploadFile(file);
27
+ ```
28
+
29
+ ## 包含的子包
30
+
31
+ - `@upload-sdk/client` - 客户端相关功能
32
+ - `@upload-sdk/core` - 核心功能
33
+ - `@upload-sdk/utils` - 工具函数
34
+
35
+ ## 本地开发
36
+
37
+ ```bash
38
+ # 构建所有包
39
+ pnpm run build:local
40
+
41
+ # 在其他项目中链接使用
42
+ cd ../your-project
43
+ pnpm link ../upload-sdk/dist
44
+ ```
@@ -0,0 +1,335 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var core = require('@upload-sdk/core');
5
+
6
+ // 文件上传状态
7
+ let FileUploadStatus = /*#__PURE__*/function (FileUploadStatus) {
8
+ FileUploadStatus["PENDING"] = "pending";
9
+ FileUploadStatus["UPLOADING"] = "uploading";
10
+ FileUploadStatus["SUCCESS"] = "success";
11
+ FileUploadStatus["FAILED"] = "failed";
12
+ FileUploadStatus["CANCELED"] = "canceled";
13
+ FileUploadStatus["ABORTED"] = "aborted";
14
+ FileUploadStatus["PAUSED"] = "paused";
15
+ FileUploadStatus["RETRYING"] = "retrying";
16
+ FileUploadStatus["RETRY_FAILED"] = "retry_failed";
17
+ FileUploadStatus["RETRY_SUCCESS"] = "retry_success";
18
+ FileUploadStatus["RETRY_CANCELED"] = "retry_canceled";
19
+ FileUploadStatus["RETRY_ABORTED"] = "retry_aborted";
20
+ FileUploadStatus["RETRY_PAUSED"] = "retry_paused";
21
+ FileUploadStatus["RETRY_PENDING"] = "retry_pending";
22
+ FileUploadStatus["RETRY_UPLOADING"] = "retry_uploading";
23
+ FileUploadStatus["RETRY_RETRYING"] = "retry_retrying";
24
+ return FileUploadStatus;
25
+ }({});
26
+
27
+ const _hoisted_1$2 = {
28
+ class: "icon",
29
+ viewBox: "0 0 1024 1024",
30
+ version: "1.1",
31
+ xmlns: "http://www.w3.org/2000/svg",
32
+ width: "200",
33
+ height: "200"
34
+ };
35
+ var script$2 = /*@__PURE__*/vue.defineComponent({
36
+ ...{
37
+ name: 'CloseSvg'
38
+ },
39
+ __name: 'CloseSvg',
40
+ setup(__props) {
41
+ return (_ctx, _cache) => {
42
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$2, [...(_cache[0] || (_cache[0] = [vue.createElementVNode("path", {
43
+ d: "M513.1 139.1c-206.7 0-374.2 167.5-374.2 374s167.6 374 374.2 374c206.7 0 374.2-167.5 374.2-374s-167.5-374-374.2-374z m0 689c-173.8 0-315.2-141.3-315.2-315s141.4-315 315.2-315c173.8 0 315.2 141.3 315.2 315s-141.4 315-315.2 315z",
44
+ fill: "#666666"
45
+ }, null, -1 /* CACHED */), vue.createElementVNode("path", {
46
+ d: "M666 375.8l-13.9-13.9c-3.8-3.8-8.9-5.8-13.9-5.8s-10.1 1.9-13.9 5.8L512.8 473.3 401.5 361.9c-3.9-3.8-8.9-5.8-13.9-5.8s-10.1 1.9-13.9 5.8l-13.9 13.9c-7.7 7.7-7.7 20.2 0 27.9l111.4 111.4-111.5 111.4c-7.7 7.7-7.7 20.2 0 27.9l13.9 13.9c3.8 3.8 8.9 5.8 13.9 5.8s10.1-1.9 13.9-5.8l111.4-111.4 111.4 111.4c3.9 3.8 8.9 5.8 13.9 5.8s10.1-1.9 13.9-5.8l13.9-13.9c7.7-7.7 7.7-20.2 0-27.9L554.6 515.1 666 403.7c7.7-7.7 7.7-20.2 0-27.9z",
47
+ fill: "#666666"
48
+ }, null, -1 /* CACHED */)]))]);
49
+ };
50
+ }
51
+ });
52
+
53
+ function styleInject(css, ref) {
54
+ if ( ref === void 0 ) ref = {};
55
+ var insertAt = ref.insertAt;
56
+
57
+ if (!css || typeof document === 'undefined') { return; }
58
+
59
+ var head = document.head || document.getElementsByTagName('head')[0];
60
+ var style = document.createElement('style');
61
+ style.type = 'text/css';
62
+
63
+ if (insertAt === 'top') {
64
+ if (head.firstChild) {
65
+ head.insertBefore(style, head.firstChild);
66
+ } else {
67
+ head.appendChild(style);
68
+ }
69
+ } else {
70
+ head.appendChild(style);
71
+ }
72
+
73
+ if (style.styleSheet) {
74
+ style.styleSheet.cssText = css;
75
+ } else {
76
+ style.appendChild(document.createTextNode(css));
77
+ }
78
+ }
79
+
80
+ var css_248z$2 = ".icon[data-v-401a1947] {\n width: 16px;\n height: 16px;\n}";
81
+ styleInject(css_248z$2);
82
+
83
+ script$2.__scopeId = "data-v-401a1947";
84
+ script$2.__file = "src/components/svg/CloseSvg.vue";
85
+
86
+ const _hoisted_1$1 = {
87
+ class: "icon",
88
+ viewBox: "0 0 1024 1024",
89
+ version: "1.1",
90
+ xmlns: "http://www.w3.org/2000/svg",
91
+ width: "200",
92
+ height: "200"
93
+ };
94
+ var script$1 = /*@__PURE__*/vue.defineComponent({
95
+ ...{
96
+ name: 'EyeSvg'
97
+ },
98
+ __name: 'EyeSvg',
99
+ setup(__props) {
100
+ return (_ctx, _cache) => {
101
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$1, [...(_cache[0] || (_cache[0] = [vue.createElementVNode("path", {
102
+ d: "M512 192c156.448 0 296.021333 98.730667 418.410667 291.605333a52.938667 52.938667 0 0 1 0 56.789334C808.021333 733.269333 668.448 832 512 832c-156.448 0-296.021333-98.730667-418.410667-291.605333a52.938667 52.938667 0 0 1 0-56.789334C215.978667 290.730667 355.552 192 512 192z m0 128c-106.037333 0-192 85.962667-192 192s85.962667 192 192 192 192-85.962667 192-192-85.962667-192-192-192z m0 320c70.688 0 128-57.312 128-128s-57.312-128-128-128-128 57.312-128 128 57.312 128 128 128z",
103
+ fill: "#000000"
104
+ }, null, -1 /* CACHED */)]))]);
105
+ };
106
+ }
107
+ });
108
+
109
+ var css_248z$1 = ".icon[data-v-b79f30a4] {\n width: 16px;\n height: 16px;\n}";
110
+ styleInject(css_248z$1);
111
+
112
+ script$1.__scopeId = "data-v-b79f30a4";
113
+ script$1.__file = "src/components/svg/EyeSvg.vue";
114
+
115
+ const _hoisted_1 = {
116
+ class: "upload-wrapper"
117
+ };
118
+ const _hoisted_2 = {
119
+ class: "pr-upload__file-list-panel"
120
+ };
121
+ const _hoisted_3 = {
122
+ class: "pr-upload__file-list"
123
+ };
124
+ const _hoisted_4 = {
125
+ class: "pr-upload__file-list-item-header"
126
+ };
127
+ const _hoisted_5 = {
128
+ class: "pr-upload__file-list-item-header__name"
129
+ };
130
+ const _hoisted_6 = {
131
+ class: "pr-upload__file-list-item-header__op"
132
+ };
133
+ const _hoisted_7 = {
134
+ key: 0,
135
+ class: "pr-upload__file-list-item-progress"
136
+ };
137
+ var script = /*@__PURE__*/vue.defineComponent({
138
+ ...{
139
+ name: 'PrUpload'
140
+ },
141
+ __name: 'upload',
142
+ setup(__props, {
143
+ expose: __expose
144
+ }) {
145
+ const fileList = vue.reactive([]);
146
+ const fileInputBtn = vue.ref(null);
147
+ const uploader = core.useUpload({
148
+ url: 'http://localhost:3001/api/upload/upload'
149
+ });
150
+ const isDragging = vue.ref(false);
151
+ const selectFile = () => {
152
+ if (!fileInputBtn.value) return;
153
+ // 触发点击事件
154
+ fileInputBtn.value.click();
155
+ };
156
+ const inputChange = e => {
157
+ const _target = e.target;
158
+ if (!_target.files) {
159
+ console.warn('Please select a file!');
160
+ return;
161
+ }
162
+ const files = _target.files;
163
+ console.log('files', files);
164
+ const needUploadFiles = [];
165
+ if (Array.isArray(files)) {
166
+ needUploadFiles.push(...files);
167
+ } else {
168
+ needUploadFiles.push(files[0]);
169
+ }
170
+ for (let needUploadFile of needUploadFiles) {
171
+ uploadFile(needUploadFile);
172
+ }
173
+ };
174
+
175
+ // 文件上传将其放到上传列表中
176
+ const uploadFile = file => {
177
+ const createOneFile = file => {
178
+ // 将 file 对象进行二次封装
179
+ const oneFile = vue.reactive({
180
+ name: file.name,
181
+ size: file.size,
182
+ type: file.type,
183
+ progress: 0,
184
+ status: FileUploadStatus.PENDING,
185
+ file: file
186
+ });
187
+ const progressInterval = setInterval(() => {
188
+ oneFile.progress++;
189
+ oneFile.status = FileUploadStatus.UPLOADING;
190
+ if (oneFile.progress >= 100) {
191
+ oneFile.status = FileUploadStatus.SUCCESS;
192
+ clearInterval(progressInterval);
193
+ }
194
+ }, 100);
195
+ return oneFile;
196
+ };
197
+ const oneFile = createOneFile(file);
198
+ fileList.push(oneFile);
199
+ };
200
+ const inputProps = vue.computed(() => {
201
+ return {
202
+ multiple: true,
203
+ accept: 'image/*',
204
+ type: 'file',
205
+ change: inputChange
206
+ };
207
+ });
208
+ const interiorClass = vue.computed(() => {
209
+ return {
210
+ 'pr-upload__interior': true,
211
+ 'focus-within': false,
212
+ 'pr-upload-wrapper__dragging': isDragging.value,
213
+ 'pr-upload-wrapper__disabled': false
214
+ };
215
+ });
216
+ const prUploadInterior = vue.ref(null);
217
+
218
+ // 鼠标移入事件
219
+ const mouseEnter = () => {
220
+ if (!prUploadInterior.value) return;
221
+ prUploadInterior.value.classList.add('focus-within');
222
+ };
223
+
224
+ // 鼠标移出事件
225
+ const mouseLeave = () => {
226
+ if (!prUploadInterior.value) return;
227
+ prUploadInterior.value.classList.remove('focus-within');
228
+ };
229
+
230
+ // 拖拽事件处理
231
+ const handleDragEnter = e => {
232
+ e.preventDefault();
233
+ e.stopPropagation();
234
+ isDragging.value = true;
235
+ };
236
+ const handleDragOver = e => {
237
+ e.preventDefault();
238
+ e.stopPropagation();
239
+ // 添加复制效果
240
+ if (e.dataTransfer) {
241
+ e.dataTransfer.dropEffect = 'copy';
242
+ }
243
+ };
244
+ const handleDragLeave = e => {
245
+ e.preventDefault();
246
+ e.stopPropagation();
247
+
248
+ // 检查是否真正离开了上传区域
249
+ const relatedTarget = e.relatedTarget;
250
+ const uploadArea = prUploadInterior.value;
251
+ if (!uploadArea) return;
252
+
253
+ // 只有当鼠标离开上传区域且没有进入其子元素时,才取消拖拽状态
254
+ if (!uploadArea.contains(relatedTarget)) {
255
+ isDragging.value = false;
256
+ }
257
+ };
258
+ const handleDrop = e => {
259
+ e.preventDefault();
260
+ e.stopPropagation();
261
+ isDragging.value = false;
262
+ if (!e.dataTransfer || !e.dataTransfer.files) return;
263
+ const files = e.dataTransfer.files;
264
+ handleFiles(files);
265
+ };
266
+ const handleFiles = files => {
267
+ console.log('files', files);
268
+ const needUploadFiles = [];
269
+ if (Array.isArray(files)) {
270
+ needUploadFiles.push(...files);
271
+ } else {
272
+ needUploadFiles.push(files);
273
+ }
274
+ for (let needUploadFile of needUploadFiles) {
275
+ const fileSize = needUploadFile.size;
276
+ let up;
277
+ if (fileSize > 5 * 1024 * 1024) {
278
+ up = uploader.uploadLargeFile(needUploadFile);
279
+ } else {
280
+ up = uploader.uploadFile(needUploadFile);
281
+ }
282
+ up.start();
283
+ }
284
+ };
285
+ __expose({});
286
+ return (_ctx, _cache) => {
287
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [vue.createElementVNode("input", vue.mergeProps({
288
+ ref_key: "fileInputBtn",
289
+ ref: fileInputBtn,
290
+ class: "input-box-disable"
291
+ }, inputProps.value, {
292
+ onChange: inputChange
293
+ }), null, 16 /* FULL_PROPS */), vue.createElementVNode("div", {
294
+ ref_key: "prUploadInterior",
295
+ ref: prUploadInterior,
296
+ class: vue.normalizeClass(interiorClass.value),
297
+ onClick: selectFile,
298
+ onMouseenter: mouseEnter,
299
+ onMouseleave: mouseLeave,
300
+ onDragenter: handleDragEnter,
301
+ onDragover: handleDragOver,
302
+ onDragleave: handleDragLeave,
303
+ onDrop: handleDrop
304
+ }, [...(_cache[0] || (_cache[0] = [vue.createElementVNode("svg", {
305
+ class: "pr-upload__interior-icon",
306
+ viewBox: "0 0 1024 1024",
307
+ xmlns: "http://www.w3.org/2000/svg"
308
+ }, [vue.createElementVNode("path", {
309
+ fill: "currentColor",
310
+ d: "M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.81 239.81 0 0 1 512 192a239.87 239.87 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6z"
311
+ })], -1 /* CACHED */), vue.createElementVNode("div", {
312
+ class: "pr-upload__interior-tip"
313
+ }, [vue.createTextVNode("拖拽文件到此区域或"), vue.createElementVNode("em", null, "点击上传")], -1 /* CACHED */)]))], 34 /* CLASS, NEED_HYDRATION */), vue.createCommentVNode("提示\t\t"), vue.createCommentVNode(" <slot name=\"tip\">\r\n <div class=\"pr-upload__tip\">只能上传jpg/png文件,且不超过500kb</div>\r\n </slot>"), vue.renderSlot(_ctx.$slots, "fileList", {}, () => [vue.createElementVNode("div", _hoisted_2, [vue.createElementVNode("div", _hoisted_3, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(fileList, (file, index) => {
314
+ return vue.openBlock(), vue.createElementBlock("div", {
315
+ class: "pr-upload__file-list-item",
316
+ key: index
317
+ }, [vue.createElementVNode("div", _hoisted_4, [vue.createElementVNode("div", _hoisted_5, vue.toDisplayString(file.name), 1 /* TEXT */), vue.createElementVNode("div", _hoisted_6, [vue.createVNode(script$1), vue.createVNode(script$2)])]), file.status === vue.unref(FileUploadStatus).UPLOADING ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [vue.createElementVNode("div", {
318
+ class: "pr-upload__file-list-item-progress-bar",
319
+ style: vue.normalizeStyle({
320
+ width: file.progress + '%'
321
+ })
322
+ }, null, 4 /* STYLE */)])) : vue.createCommentVNode("v-if", true)]);
323
+ }), 128 /* KEYED_FRAGMENT */))])])])]);
324
+ };
325
+ }
326
+ });
327
+
328
+ var css_248z = "@charset \"UTF-8\";\n.input-box-disable[data-v-6a690acc] {\n display: none;\n}\n\n.upload-wrapper[data-v-6a690acc] {\n min-width: 420px;\n}\n.upload-wrapper .pr-upload__interior[data-v-6a690acc] {\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 160px;\n border-radius: 8px;\n border: 1px dashed #ccc;\n padding: 0 32px;\n box-sizing: border-box;\n /*拖拽文件效果*/\n /*禁止使用文件上传*/\n}\n.upload-wrapper .pr-upload__interior.focus-within[data-v-6a690acc] {\n border: 1px dashed #409eff !important;\n}\n.upload-wrapper .pr-upload__interior.pr-upload-wrapper__dragging[data-v-6a690acc] {\n border: 2px dashed #409eff;\n background-color: rgba(64, 158, 255, 0.1);\n}\n.upload-wrapper .pr-upload__interior.pr-upload-wrapper__disabled[data-v-6a690acc] {\n pointer-events: none;\n background: #f5f7fa;\n cursor: not-allowed;\n}\n.upload-wrapper .pr-upload__interior.pr-upload-wrapper__disabled .pr-upload__interior-tip[data-v-6a690acc] {\n color: #a8abb2;\n}\n.upload-wrapper .pr-upload__interior.pr-upload-wrapper__disabled .pr-upload__interior-tip em[data-v-6a690acc] {\n font-style: normal;\n color: #a8abb2;\n}\n.upload-wrapper .pr-upload__interior .pr-upload__interior-icon[data-v-6a690acc] {\n margin-top: -8px;\n width: 60px;\n height: 60px;\n font-size: 60px;\n color: #a8abb2;\n}\n.upload-wrapper .pr-upload__interior .pr-upload__interior-tip[data-v-6a690acc] {\n margin-top: 8px;\n font-size: 12px;\n line-height: 12px;\n color: #606266;\n text-align: center;\n letter-spacing: 1px;\n}\n.upload-wrapper .pr-upload__interior .pr-upload__interior-tip em[data-v-6a690acc] {\n color: #409eff;\n}\n.upload-wrapper .pr-upload__tip[data-v-6a690acc] {\n width: 100%;\n padding: 0 2px;\n text-align: left;\n margin-top: 6px;\n font-size: 12px;\n line-height: 16px;\n}\n\n.pr-upload__file-list-panel[data-v-6a690acc] {\n margin-top: 6px;\n width: 100%;\n height: fit-content;\n}\n.pr-upload__file-list-panel .pr-upload__file-list[data-v-6a690acc] {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n gap: 6px;\n}\n.pr-upload__file-list-panel .pr-upload__file-list .pr-upload__file-list-item[data-v-6a690acc] {\n width: 100%;\n display: flex;\n flex-direction: column;\n padding: 6px 8px;\n align-items: center;\n box-sizing: border-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 3px;\n}\n.pr-upload__file-list-panel .pr-upload__file-list .pr-upload__file-list-item .pr-upload__file-list-item-header[data-v-6a690acc] {\n width: 100%;\n font-size: 12px;\n line-height: 16px;\n height: 16px;\n box-sizing: border-box;\n color: #606266;\n display: flex;\n justify-content: space-between;\n}\n.pr-upload__file-list-panel .pr-upload__file-list .pr-upload__file-list-item .pr-upload__file-list-item-header .pr-upload__file-list-item-header__name[data-v-6a690acc] {\n color: #333;\n font-weight: 600;\n font-size: 14px;\n}\n.pr-upload__file-list-panel .pr-upload__file-list .pr-upload__file-list-item .pr-upload__file-list-item-progress[data-v-6a690acc] {\n margin-top: 3px;\n width: 100%;\n height: 4px;\n border-radius: 2px;\n overflow: hidden;\n background-color: #f5f7fa;\n}\n.pr-upload__file-list-panel .pr-upload__file-list .pr-upload__file-list-item .pr-upload__file-list-item-progress .pr-upload__file-list-item-progress-bar[data-v-6a690acc] {\n height: 100%;\n background-color: #409eff;\n}";
329
+ styleInject(css_248z);
330
+
331
+ script.__scopeId = "data-v-6a690acc";
332
+ script.__file = "src/upload.vue";
333
+
334
+ exports.PrUpload = script;
335
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/utils/enums.ts","../src/components/svg/CloseSvg.vue","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/components/svg/EyeSvg.vue","../src/upload.vue"],"sourcesContent":["// 文件上传状态\r\nexport enum FileUploadStatus {\r\n PENDING = 'pending',\r\n UPLOADING = 'uploading',\r\n SUCCESS = 'success',\r\n FAILED = 'failed',\r\n CANCELED = 'canceled',\r\n ABORTED = 'aborted',\r\n PAUSED = 'paused',\r\n RETRYING = 'retrying',\r\n RETRY_FAILED = 'retry_failed',\r\n RETRY_SUCCESS = 'retry_success',\r\n RETRY_CANCELED = 'retry_canceled',\r\n RETRY_ABORTED = 'retry_aborted',\r\n RETRY_PAUSED = 'retry_paused',\r\n RETRY_PENDING = 'retry_pending',\r\n RETRY_UPLOADING = 'retry_uploading',\r\n RETRY_RETRYING = 'retry_retrying',\r\n}\r\n\r\nexport enum FileUploadStatusStr {\r\n PENDING = '等待上传',\r\n UPLOADING = '上传中',\r\n SUCCESS = '上传成功',\r\n FAILED = '上传失败',\r\n CANCELED = '取消上传',\r\n ABORTED = '上传中断',\r\n PAUSED = '暂停上传',\r\n RETRYING = '正在重试',\r\n RETRY_FAILED = '重试失败',\r\n RETRY_SUCCESS = '重试成功',\r\n RETRY_CANCELED = '取消重试',\r\n}\r\n","<script setup lang=\"ts\">\r\ndefineOptions({\r\n\tname: 'CloseSvg'\r\n})\r\n</script>\r\n\r\n<template>\r\n\t<svg class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"200\"\r\n\t\t\t height=\"200\">\r\n <path\r\n d=\"M513.1 139.1c-206.7 0-374.2 167.5-374.2 374s167.6 374 374.2 374c206.7 0 374.2-167.5 374.2-374s-167.5-374-374.2-374z m0 689c-173.8 0-315.2-141.3-315.2-315s141.4-315 315.2-315c173.8 0 315.2 141.3 315.2 315s-141.4 315-315.2 315z\"\r\n fill=\"#666666\"></path>\r\n <path\r\n d=\"M666 375.8l-13.9-13.9c-3.8-3.8-8.9-5.8-13.9-5.8s-10.1 1.9-13.9 5.8L512.8 473.3 401.5 361.9c-3.9-3.8-8.9-5.8-13.9-5.8s-10.1 1.9-13.9 5.8l-13.9 13.9c-7.7 7.7-7.7 20.2 0 27.9l111.4 111.4-111.5 111.4c-7.7 7.7-7.7 20.2 0 27.9l13.9 13.9c3.8 3.8 8.9 5.8 13.9 5.8s10.1-1.9 13.9-5.8l111.4-111.4 111.4 111.4c3.9 3.8 8.9 5.8 13.9 5.8s10.1-1.9 13.9-5.8l13.9-13.9c7.7-7.7 7.7-20.2 0-27.9L554.6 515.1 666 403.7c7.7-7.7 7.7-20.2 0-27.9z\"\r\n fill=\"#666666\"></path>\r\n\t</svg>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.icon {\r\n\twidth: 16px;\r\n\theight: 16px;\r\n}\r\n\r\n</style>\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","<script setup lang=\"ts\">\r\ndefineOptions({\r\n name: 'EyeSvg'\r\n})\r\n</script>\r\n\r\n<template>\r\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"200\" height=\"200\">\r\n <path\r\n d=\"M512 192c156.448 0 296.021333 98.730667 418.410667 291.605333a52.938667 52.938667 0 0 1 0 56.789334C808.021333 733.269333 668.448 832 512 832c-156.448 0-296.021333-98.730667-418.410667-291.605333a52.938667 52.938667 0 0 1 0-56.789334C215.978667 290.730667 355.552 192 512 192z m0 128c-106.037333 0-192 85.962667-192 192s85.962667 192 192 192 192-85.962667 192-192-85.962667-192-192-192z m0 320c70.688 0 128-57.312 128-128s-57.312-128-128-128-128 57.312-128 128 57.312 128 128 128z\"\r\n fill=\"#000000\"></path>\r\n </svg>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.icon {\r\n width: 16px;\r\n height: 16px;\r\n}\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { computed, reactive, ref } from 'vue'\r\nimport { useUpload } from \"@upload-sdk/core\";\r\nimport { FileUploadStatus } from \"./utils/enums\";\r\nimport CloseSvg from \"./components/svg/CloseSvg.vue\";\r\nimport EyeSvg from \"./components/svg/EyeSvg.vue\";\r\n\r\ndefineOptions({\r\n name: 'PrUpload'\r\n})\r\nconst fileList = reactive<any>([])\r\nconst fileInputBtn = ref<HTMLInputElement | null>(null)\r\nconst uploader = useUpload({\r\n url: 'http://localhost:3001/api/upload/upload'\r\n})\r\n\r\nconst isDragging = ref(false)\r\nconst selectFile = () => {\r\n if (!fileInputBtn.value) return\r\n // 触发点击事件\r\n fileInputBtn.value.click()\r\n}\r\n\r\nconst inputChange = (e: Event) => {\r\n const _target = e.target as HTMLInputElement\r\n if (!_target.files) {\r\n console.warn('Please select a file!')\r\n return\r\n }\r\n const files = _target.files\r\n console.log('files', files)\r\n const needUploadFiles = []\r\n if (Array.isArray(files)) {\r\n needUploadFiles.push(...files)\r\n } else {\r\n needUploadFiles.push(files[0])\r\n }\r\n for (let needUploadFile of needUploadFiles) {\r\n uploadFile(needUploadFile)\r\n }\r\n}\r\n\r\n// 文件上传将其放到上传列表中\r\nconst uploadFile = (file: File) => {\r\n const createOneFile = (file: File) => {\r\n // 将 file 对象进行二次封装\r\n const oneFile = reactive({\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n progress: 0,\r\n status: FileUploadStatus.PENDING,\r\n file: file\r\n })\r\n const progressInterval = setInterval(() => {\r\n oneFile.progress++\r\n oneFile.status = FileUploadStatus.UPLOADING\r\n if (oneFile.progress >= 100) {\r\n oneFile.status = FileUploadStatus.SUCCESS\r\n clearInterval(progressInterval)\r\n }\r\n }, 100)\r\n return oneFile\r\n }\r\n const oneFile = createOneFile(file)\r\n fileList.push(oneFile)\r\n}\r\n\r\nconst inputProps = computed(() => {\r\n return {\r\n multiple: true,\r\n accept: 'image/*',\r\n type: 'file',\r\n change: inputChange\r\n }\r\n})\r\n\r\nconst interiorClass = computed(() => {\r\n return {\r\n 'pr-upload__interior': true,\r\n 'focus-within': false,\r\n 'pr-upload-wrapper__dragging': isDragging.value,\r\n 'pr-upload-wrapper__disabled': false\r\n }\r\n})\r\nconst prUploadInterior = ref<HTMLDivElement | null>(null)\r\n\r\n// 鼠标移入事件\r\nconst mouseEnter = () => {\r\n if (!prUploadInterior.value) return\r\n prUploadInterior.value.classList.add('focus-within')\r\n}\r\n\r\n// 鼠标移出事件\r\nconst mouseLeave = () => {\r\n if (!prUploadInterior.value) return\r\n prUploadInterior.value.classList.remove('focus-within')\r\n}\r\n\r\n// 拖拽事件处理\r\nconst handleDragEnter = (e: DragEvent) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n isDragging.value = true\r\n}\r\n\r\nconst handleDragOver = (e: DragEvent) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n // 添加复制效果\r\n if (e.dataTransfer) {\r\n e.dataTransfer.dropEffect = 'copy'\r\n }\r\n}\r\n\r\nconst handleDragLeave = (e: DragEvent) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n // 检查是否真正离开了上传区域\r\n const relatedTarget = e.relatedTarget as Node\r\n const uploadArea = prUploadInterior.value\r\n\r\n if (!uploadArea) return\r\n\r\n // 只有当鼠标离开上传区域且没有进入其子元素时,才取消拖拽状态\r\n if (!uploadArea.contains(relatedTarget)) {\r\n isDragging.value = false\r\n }\r\n}\r\n\r\nconst handleDrop = (e: DragEvent) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n isDragging.value = false\r\n if (!e.dataTransfer || !e.dataTransfer.files) return\r\n const files = e.dataTransfer.files\r\n handleFiles(files)\r\n}\r\n\r\nconst handleFiles = (files: FileList) => {\r\n console.log('files', files)\r\n const needUploadFiles = []\r\n if (Array.isArray(files)) {\r\n needUploadFiles.push(...files)\r\n } else {\r\n needUploadFiles.push(files)\r\n }\r\n for (let needUploadFile of needUploadFiles) {\r\n const fileSize = needUploadFile.size\r\n let up\r\n if (fileSize > 5 * 1024 * 1024) {\r\n up = uploader.uploadLargeFile(needUploadFile)\r\n } else {\r\n up = uploader.uploadFile(needUploadFile)\r\n }\r\n up.start()\r\n }\r\n}\r\n\r\ndefineExpose({})\r\n</script>\r\n\r\n<template>\r\n <div class=\"upload-wrapper\">\r\n <input ref=\"fileInputBtn\" class=\"input-box-disable\"\r\n v-bind=\"inputProps\"\r\n @change=\"inputChange\"\r\n />\r\n <div ref=\"prUploadInterior\"\r\n :class=\"interiorClass\"\r\n @click=\"selectFile\"\r\n @mouseenter=\"mouseEnter\"\r\n @mouseleave=\"mouseLeave\"\r\n @dragenter=\"handleDragEnter\"\r\n @dragover=\"handleDragOver\"\r\n @dragleave=\"handleDragLeave\"\r\n @drop=\"handleDrop\"\r\n >\r\n <svg\r\n class=\"pr-upload__interior-icon\"\r\n viewBox=\"0 0 1024 1024\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"currentColor\"\r\n d=\"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.81 239.81 0 0 1 512 192a239.87 239.87 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6z\"></path>\r\n </svg>\r\n <div class=\"pr-upload__interior-tip\">拖拽文件到此区域或<em>点击上传</em></div>\r\n </div>\r\n <!--提示\t\t-->\r\n <!-- <slot name=\"tip\">\r\n <div class=\"pr-upload__tip\">只能上传jpg/png文件,且不超过500kb</div>\r\n </slot>-->\r\n <slot name=\"fileList\">\r\n <div class=\"pr-upload__file-list-panel\">\r\n <div class=\"pr-upload__file-list\">\r\n <div class=\"pr-upload__file-list-item\" v-for=\"(file, index) in fileList\" :key=\"index\">\r\n <div class=\"pr-upload__file-list-item-header\">\r\n <div class=\"pr-upload__file-list-item-header__name\">{{ file.name }}</div>\r\n <div class=\"pr-upload__file-list-item-header__op\">\r\n <EyeSvg/>\r\n <CloseSvg/>\r\n </div>\r\n </div>\r\n <div v-if=\"file.status === FileUploadStatus.UPLOADING\" class=\"pr-upload__file-list-item-progress\">\r\n <div class=\"pr-upload__file-list-item-progress-bar\" :style=\"{width: file.progress + '%'}\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n$border-radius: 8px;\r\n\r\n.input-box-disable {\r\n display: none;\r\n}\r\n\r\n.upload-wrapper {\r\n min-width: 420px;\r\n\r\n .pr-upload__interior {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n height: 160px;\r\n border-radius: 8px;\r\n border: 1px dashed #ccc;\r\n padding: 0 32px;\r\n box-sizing: border-box;\r\n\r\n &.focus-within {\r\n border: 1px dashed #409eff !important;\r\n }\r\n\r\n /*拖拽文件效果*/\r\n &.pr-upload-wrapper__dragging {\r\n border: 2px dashed #409eff;\r\n background-color: rgba(64, 158, 255, 0.1);\r\n }\r\n\r\n /*禁止使用文件上传*/\r\n &.pr-upload-wrapper__disabled {\r\n pointer-events: none;\r\n background: #f5f7fa;\r\n cursor: not-allowed;\r\n\r\n .pr-upload__interior-tip {\r\n color: #a8abb2;\r\n\r\n em {\r\n font-style: normal;\r\n color: #a8abb2;\r\n }\r\n }\r\n }\r\n\r\n .pr-upload__interior-icon {\r\n margin-top: -8px;\r\n width: 60px;\r\n height: 60px;\r\n font-size: 60px;\r\n color: #a8abb2;\r\n }\r\n\r\n .pr-upload__interior-tip {\r\n margin-top: 8px;\r\n font-size: 12px;\r\n line-height: 12px;\r\n color: #606266;\r\n text-align: center;\r\n letter-spacing: 1px;\r\n\r\n em {\r\n color: #409eff;\r\n }\r\n }\r\n }\r\n\r\n .pr-upload__tip {\r\n width: 100%;\r\n padding: 0 2px;\r\n text-align: left;\r\n margin-top: 6px;\r\n font-size: 12px;\r\n line-height: 16px;\r\n }\r\n}\r\n\r\n.pr-upload__file-list-panel {\r\n margin-top: 6px;\r\n width: 100%;\r\n height: fit-content;\r\n\r\n .pr-upload__file-list {\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n flex-wrap: wrap;\r\n gap: 6px;\r\n\r\n .pr-upload__file-list-item {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n padding: 6px 8px;\r\n align-items: center;\r\n box-sizing: border-box;\r\n //box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2);\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 3px;\r\n\r\n .pr-upload__file-list-item-header {\r\n width: 100%;\r\n font-size: 12px;\r\n line-height: 16px;\r\n height: 16px;\r\n box-sizing: border-box;\r\n color: #606266;\r\n display: flex;\r\n justify-content: space-between;\r\n .pr-upload__file-list-item-header__name {\r\n color: #333;\r\n font-weight: 600;\r\n font-size: 14px;\r\n }\r\n\r\n .pr-upload__file-list-item-header__op {\r\n\r\n }\r\n }\r\n\r\n .pr-upload__file-list-item-progress {\r\n margin-top: 3px;\r\n width: 100%;\r\n height: 4px;\r\n border-radius: 2px;\r\n overflow: hidden;\r\n background-color: #f5f7fa;\r\n\r\n .pr-upload__file-list-item-progress-bar {\r\n height: 100%;\r\n background-color: #409eff;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n"],"names":["FileUploadStatus","_openBlock","_createElementBlock","_hoisted_1","_cache","_createElementVNode","d","fill","fileList","reactive","fileInputBtn","ref","uploader","useUpload","url","isDragging","selectFile","value","click","inputChange","e","_target","target","files","console","warn","log","needUploadFiles","Array","isArray","push","needUploadFile","uploadFile","file","createOneFile","oneFile","name","size","type","progress","status","PENDING","progressInterval","setInterval","UPLOADING","SUCCESS","clearInterval","inputProps","computed","multiple","accept","change","interiorClass","prUploadInterior","mouseEnter","classList","add","mouseLeave","remove","handleDragEnter","preventDefault","stopPropagation","handleDragOver","dataTransfer","dropEffect","handleDragLeave","relatedTarget","uploadArea","contains","handleDrop","handleFiles","fileSize","up","uploadLargeFile","start","__expose","_mergeProps","class","onChange","onClick","onMouseenter","onMouseleave","onDragenter","onDragover","onDragleave","onDrop","viewBox","xmlns","_createCommentVNode","_renderSlot","_ctx","_hoisted_2","_hoisted_3","_Fragment","_renderList","index","key","_hoisted_4","_hoisted_5","_toDisplayString","_hoisted_6","_createVNode","EyeSvg","CloseSvg","_unref","_hoisted_7","style","_normalizeStyle","width"],"mappings":"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","x_google_ignoreList":[2]}
@@ -0,0 +1 @@
1
+ export { default as PrUpload } from './upload.vue';