giime 0.6.36 → 0.6.38
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 +88 -88
- package/es/components/src/base/datePicker/DatePicker.vue.d.ts +3 -3
- package/es/components/src/base/datePicker/datePicker.d.ts +1 -1
- package/es/components/src/base/datePicker/index.d.ts +7 -7
- package/es/components/src/business/uploadPro/UploadPro.vue.mjs +1 -1
- package/es/components/src/business/uploadPro/UploadPro.vue2.mjs +38 -6
- package/es/components/src/business/uploadPro/UploadPro.vue2.mjs.map +1 -1
- package/es/components/src/business/uploadPro/uploadPro.mjs +1 -1
- package/es/components/src/business/uploadPro/uploadPro.mjs.map +1 -1
- package/es/components/src/composite/searchForm/searchFormItems/datePicker/SearchFormDatePicker.vue.d.ts +2 -5
- package/es/components/src/composite/searchForm/searchFormItems/datePicker/SearchFormDatePicker.vue2.mjs +6 -2
- package/es/components/src/composite/searchForm/searchFormItems/datePicker/SearchFormDatePicker.vue2.mjs.map +1 -1
- package/es/components/src/composite/searchForm/searchFormItems/datePicker/index.d.ts +2 -5
- package/es/components/src/composite/searchForm/searchFormItems/datePicker/searchFormDatePicker.d.ts +1 -2
- package/es/components/src/composite/searchForm/searchFormItems/datePicker/searchFormDatePicker.mjs +2 -2
- package/es/components/src/composite/searchForm/searchFormItems/datePicker/searchFormDatePicker.mjs.map +1 -1
- package/es/giime/index.mjs +1 -0
- 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/useUploadFile/index.d.ts +8 -1
- package/es/hooks/base/useUploadFile/index.mjs +34 -2
- package/es/hooks/base/useUploadFile/index.mjs.map +1 -1
- package/es/index.css +88 -88
- package/es/utils/index.mjs +1 -0
- package/es/utils/index.mjs.map +1 -1
- package/es/utils/src/date/dateShortcuts.d.ts +2 -2
- package/es/utils/src/date/dateShortcuts.mjs +87 -82
- package/es/utils/src/date/dateShortcuts.mjs.map +1 -1
- package/es/utils/src/file.d.ts +1 -0
- package/es/utils/src/file.mjs +1 -0
- package/es/utils/src/file.mjs.map +1 -1
- package/lib/components/src/base/datePicker/DatePicker.vue.d.ts +3 -3
- package/lib/components/src/base/datePicker/datePicker.d.ts +1 -1
- package/lib/components/src/base/datePicker/index.d.ts +7 -7
- package/lib/components/src/business/uploadPro/UploadPro.vue.js +1 -1
- package/lib/components/src/business/uploadPro/UploadPro.vue2.js +38 -6
- package/lib/components/src/business/uploadPro/UploadPro.vue2.js.map +1 -1
- package/lib/components/src/business/uploadPro/uploadPro.js +1 -1
- package/lib/components/src/business/uploadPro/uploadPro.js.map +1 -1
- package/lib/components/src/composite/searchForm/searchFormItems/datePicker/SearchFormDatePicker.vue.d.ts +2 -5
- package/lib/components/src/composite/searchForm/searchFormItems/datePicker/SearchFormDatePicker.vue2.js +6 -2
- package/lib/components/src/composite/searchForm/searchFormItems/datePicker/SearchFormDatePicker.vue2.js.map +1 -1
- package/lib/components/src/composite/searchForm/searchFormItems/datePicker/index.d.ts +2 -5
- package/lib/components/src/composite/searchForm/searchFormItems/datePicker/searchFormDatePicker.d.ts +1 -2
- package/lib/components/src/composite/searchForm/searchFormItems/datePicker/searchFormDatePicker.js +2 -2
- package/lib/components/src/composite/searchForm/searchFormItems/datePicker/searchFormDatePicker.js.map +1 -1
- package/lib/giime/index.js +5 -0
- 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/useUploadFile/index.d.ts +8 -1
- package/lib/hooks/base/useUploadFile/index.js +34 -2
- package/lib/hooks/base/useUploadFile/index.js.map +1 -1
- package/lib/index.css +88 -88
- package/lib/utils/index.js +5 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/src/date/dateShortcuts.d.ts +2 -2
- package/lib/utils/src/date/dateShortcuts.js +87 -82
- package/lib/utils/src/date/dateShortcuts.js.map +1 -1
- package/lib/utils/src/file.d.ts +1 -0
- package/lib/utils/src/file.js +5 -0
- package/lib/utils/src/file.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,88 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
|
|
3
3
|
const getDateShortcuts = (type) => {
|
|
4
|
+
const daterangeShortcutValue = [
|
|
5
|
+
{
|
|
6
|
+
text: "\u672C\u5468",
|
|
7
|
+
value: () => {
|
|
8
|
+
const start = dayjs().startOf("week").toDate();
|
|
9
|
+
const end = dayjs().endOf("week").toDate();
|
|
10
|
+
return [start, end];
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
text: "\u672C\u6708",
|
|
15
|
+
value: () => {
|
|
16
|
+
const start = dayjs().startOf("month").toDate();
|
|
17
|
+
const end = dayjs().endOf("month").toDate();
|
|
18
|
+
return [start, end];
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
text: "\u4E0A\u6708",
|
|
23
|
+
value: () => {
|
|
24
|
+
const now = dayjs();
|
|
25
|
+
const startOfThisMonth = now.startOf("month");
|
|
26
|
+
const endOfLastMonth = startOfThisMonth.subtract(1, "day");
|
|
27
|
+
const startOfLastMonth = endOfLastMonth.startOf("month");
|
|
28
|
+
return [startOfLastMonth.toDate(), endOfLastMonth.toDate()];
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
text: "\u8FD13\u5929",
|
|
33
|
+
value: () => {
|
|
34
|
+
const end = /* @__PURE__ */ new Date();
|
|
35
|
+
const start = /* @__PURE__ */ new Date();
|
|
36
|
+
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 2);
|
|
37
|
+
return [start, end];
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
text: "\u8FD17\u5929",
|
|
42
|
+
value: () => {
|
|
43
|
+
const end = /* @__PURE__ */ new Date();
|
|
44
|
+
const start = /* @__PURE__ */ new Date();
|
|
45
|
+
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 6);
|
|
46
|
+
return [start, end];
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
text: "\u8FD115\u5929",
|
|
51
|
+
value: () => {
|
|
52
|
+
const end = /* @__PURE__ */ new Date();
|
|
53
|
+
const start = /* @__PURE__ */ new Date();
|
|
54
|
+
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 14);
|
|
55
|
+
return [start, end];
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
text: "\u8FD130\u5929",
|
|
60
|
+
value: () => {
|
|
61
|
+
const end = /* @__PURE__ */ new Date();
|
|
62
|
+
const start = /* @__PURE__ */ new Date();
|
|
63
|
+
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 29);
|
|
64
|
+
return [start, end];
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
text: "\u8FD160\u5929",
|
|
69
|
+
value: () => {
|
|
70
|
+
const end = /* @__PURE__ */ new Date();
|
|
71
|
+
const start = /* @__PURE__ */ new Date();
|
|
72
|
+
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 59);
|
|
73
|
+
return [start, end];
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
text: "\u8FD190\u5929",
|
|
78
|
+
value: () => {
|
|
79
|
+
const end = /* @__PURE__ */ new Date();
|
|
80
|
+
const start = /* @__PURE__ */ new Date();
|
|
81
|
+
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 89);
|
|
82
|
+
return [start, end];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
];
|
|
4
86
|
const shortcuts = [
|
|
5
87
|
{
|
|
6
88
|
type: "date",
|
|
@@ -29,88 +111,11 @@ const getDateShortcuts = (type) => {
|
|
|
29
111
|
},
|
|
30
112
|
{
|
|
31
113
|
type: "daterange",
|
|
32
|
-
values:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const end = dayjs().endOf("week").toDate();
|
|
38
|
-
return [start, end];
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
text: "\u672C\u6708",
|
|
43
|
-
value: () => {
|
|
44
|
-
const start = dayjs().startOf("month").toDate();
|
|
45
|
-
const end = dayjs().endOf("month").toDate();
|
|
46
|
-
return [start, end];
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
text: "\u4E0A\u6708",
|
|
51
|
-
value: () => {
|
|
52
|
-
const now = dayjs();
|
|
53
|
-
const startOfThisMonth = now.startOf("month");
|
|
54
|
-
const endOfLastMonth = startOfThisMonth.subtract(1, "day");
|
|
55
|
-
const startOfLastMonth = endOfLastMonth.startOf("month");
|
|
56
|
-
return [startOfLastMonth.toDate(), endOfLastMonth.toDate()];
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
text: "\u8FD13\u5929",
|
|
61
|
-
value: () => {
|
|
62
|
-
const end = /* @__PURE__ */ new Date();
|
|
63
|
-
const start = /* @__PURE__ */ new Date();
|
|
64
|
-
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 2);
|
|
65
|
-
return [start, end];
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
text: "\u8FD17\u5929",
|
|
70
|
-
value: () => {
|
|
71
|
-
const end = /* @__PURE__ */ new Date();
|
|
72
|
-
const start = /* @__PURE__ */ new Date();
|
|
73
|
-
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 6);
|
|
74
|
-
return [start, end];
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
text: "\u8FD115\u5929",
|
|
79
|
-
value: () => {
|
|
80
|
-
const end = /* @__PURE__ */ new Date();
|
|
81
|
-
const start = /* @__PURE__ */ new Date();
|
|
82
|
-
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 14);
|
|
83
|
-
return [start, end];
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
text: "\u8FD130\u5929",
|
|
88
|
-
value: () => {
|
|
89
|
-
const end = /* @__PURE__ */ new Date();
|
|
90
|
-
const start = /* @__PURE__ */ new Date();
|
|
91
|
-
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 29);
|
|
92
|
-
return [start, end];
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
text: "\u8FD160\u5929",
|
|
97
|
-
value: () => {
|
|
98
|
-
const end = /* @__PURE__ */ new Date();
|
|
99
|
-
const start = /* @__PURE__ */ new Date();
|
|
100
|
-
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 59);
|
|
101
|
-
return [start, end];
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
text: "\u8FD190\u5929",
|
|
106
|
-
value: () => {
|
|
107
|
-
const end = /* @__PURE__ */ new Date();
|
|
108
|
-
const start = /* @__PURE__ */ new Date();
|
|
109
|
-
start.setTime(start.getTime() - 3600 * 1e3 * 24 * 89);
|
|
110
|
-
return [start, end];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
]
|
|
114
|
+
values: daterangeShortcutValue
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: "datetimerange",
|
|
118
|
+
values: daterangeShortcutValue
|
|
114
119
|
}
|
|
115
120
|
];
|
|
116
121
|
return shortcuts.find((it) => it.type === type)?.values ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateShortcuts.mjs","sources":["../../../../../../packages/utils/src/date/dateShortcuts.ts"],"sourcesContent":["import dayjs from 'dayjs';\n/**\n * 日期快捷选项\n * @param type\n * @returns\n */\nexport const getDateShortcuts = (type: string) => {\n const
|
|
1
|
+
{"version":3,"file":"dateShortcuts.mjs","sources":["../../../../../../packages/utils/src/date/dateShortcuts.ts"],"sourcesContent":["import dayjs from 'dayjs';\n/**\n * 日期快捷选项\n * @param type\n * @returns\n */\nexport const getDateShortcuts = (type: string) => {\n const daterangeShortcutValue = [\n {\n text: '本周',\n value: () => {\n const start = dayjs().startOf('week').toDate(); // 本周开始日期\n const end = dayjs().endOf('week').toDate(); // 本周结束日期\n return [start, end];\n },\n },\n {\n text: '本月',\n value: () => {\n const start = dayjs().startOf('month').toDate(); // 本周开始日期\n const end = dayjs().endOf('month').toDate(); // 本周结束日期\n return [start, end];\n },\n },\n {\n text: '上月',\n value: () => {\n // 获取当前日期\n const now = dayjs();\n\n // 获取当前月份的第一天\n const startOfThisMonth = now.startOf('month');\n\n // 获取上个月的最后一天(即这个月的第一天的前一天)\n const endOfLastMonth = startOfThisMonth.subtract(1, 'day');\n\n // 获取上个月的第一天\n const startOfLastMonth = endOfLastMonth.startOf('month');\n return [startOfLastMonth.toDate(), endOfLastMonth.toDate()];\n },\n },\n {\n text: '近3天',\n value: () => {\n const end = new Date();\n const start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 2);\n return [start, end];\n },\n },\n\n {\n text: '近7天',\n value: () => {\n const end = new Date();\n const start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 6);\n return [start, end];\n },\n },\n {\n text: '近15天',\n value: () => {\n const end = new Date();\n const start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 14);\n return [start, end];\n },\n },\n\n {\n text: '近30天',\n value: () => {\n const end = new Date();\n const start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 29);\n return [start, end];\n },\n },\n {\n text: '近60天',\n value: () => {\n const end = new Date();\n const start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 59);\n return [start, end];\n },\n },\n {\n text: '近90天',\n value: () => {\n const end = new Date();\n const start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 89);\n return [start, end];\n },\n },\n ];\n const shortcuts = [\n {\n type: 'date',\n values: [\n {\n text: '今天',\n value: () => new Date(),\n },\n {\n text: '昨天',\n value: () => {\n const date = new Date();\n date.setTime(date.getTime() - 3600 * 1000 * 24);\n return date;\n },\n },\n {\n text: '一周前',\n value: () => {\n const date = new Date();\n date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);\n return date;\n },\n },\n ],\n },\n {\n type: 'daterange',\n values: daterangeShortcutValue,\n },\n {\n type: 'datetimerange',\n values: daterangeShortcutValue,\n },\n ];\n return shortcuts.find(it => it.type === type)?.values ?? [];\n};\n"],"names":[],"mappings":"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"}
|
package/es/utils/src/file.d.ts
CHANGED
package/es/utils/src/file.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.mjs","sources":["../../../../../packages/utils/src/file.ts"],"sourcesContent":["import { md5 } from 'js-md5';\n\nexport interface FileConversionOptions {\n mimeType?: string;\n}\n/**\n * 将 URL 转换为 Blob\n * @param url\n * @returns\n */\nexport async function urlToBlob(url: string): Promise<Blob> {\n const response = await fetch(url);\n return response.blob();\n}\n\n/**\n * 将 URL 转换为 File\n * @param url\n * @param filename\n * @param options\n * @returns\n */\nexport async function urlToFile(url: string, filename: string, options?: FileConversionOptions): Promise<File> {\n const blob = await urlToBlob(url);\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 File\n * @param base64\n * @param filename\n * @param options\n * @returns\n */\nexport function base64ToFile(base64: string, filename: string, options?: FileConversionOptions): File {\n const bolb = base64ToBlob(base64, { mimeType: options?.mimeType });\n return blobToFile(bolb, filename);\n}\n\n/**\n * 将 File 转换为 Base64 字符串\n * @param file\n * @returns\n */\nexport function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * 将 Blob 转换为 Base64 字符串\n * @param blob\n * @returns\n */\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\n/**\n * 将 File 转换为 Blob\n * @param file\n * @param options\n * @returns\n */\nexport function fileToBlob(file: File, options?: FileConversionOptions): Blob {\n return new Blob([file], { type: options?.mimeType ?? file.type });\n}\n\n/**\n * 将 Blob 转换为 File\n * @param blob\n * @param filename\n * @param options\n * @returns\n */\nexport function blobToFile(blob: Blob, filename: string, options?: FileConversionOptions): File {\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 Blob\n * @param base64\n * @param options\n * @returns\n */\nexport function base64ToBlob(base64: string, options?: FileConversionOptions): Blob {\n const matches = base64.match(/^data:(.+);base64,(.*)$/);\n\n if (!matches || matches.length !== 3) {\n throw new Error('Invalid Base64 string');\n }\n\n const mimeType = options?.mimeType ?? matches[1];\n const byteString = atob(matches[2]);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const intArray = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([intArray], { type: mimeType });\n}\n/**\n * 文件转本地url\n * @param file\n * @returns\n */\nexport function fileToUrl(file: File | Blob) {\n return URL.createObjectURL(file);\n}\n\n// 导出一个函数,用于检查文件类型是否合法\nexport function fileValidType(file: File, validTypes: string) {\n // 获取文件的 MIME 类型\n const fileType = file.type || '';\n // 获取文件的扩展名\n const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf('.')));\n // 将合法的文件类型字符串分割成数组\n const acceptTypes = validTypes.split(',').map(type => type.trim());\n // 遍历合法的文件类型数组,检查文件类型是否合法\n return acceptTypes.some(type => {\n // 如果文件类型以 . 开头,则检查文件扩展名\n if (type.startsWith('.')) {\n // 检查文件扩展名是否与合法的文件类型匹配\n return fileExtension.toLowerCase() === type.toLowerCase();\n // 如果文件类型包含 /*,则检查 MIME 类型组,如 image/*\n } else if (type.includes('/*')) {\n // 检查 MIME 类型组,如 image/*\n const [mainType] = type.split('/');\n return fileType.startsWith(`${mainType}/`);\n } else {\n // 检查具体 MIME 类型\n return fileType === type;\n }\n });\n}\n\n/**\n * 计算文件的MD5哈希值\n * @param file 要计算哈希值的文件\n * @returns 文件的MD5哈希值\n */\nexport const fileMd5 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = e => {\n try {\n const binary = (e.target as FileReader).result;\n if (binary) {\n resolve(md5(binary));\n } else {\n reject(new Error('读取文件内容失败'));\n }\n } catch (error) {\n reject(new Error(`计算MD5失败: ${error instanceof Error ? error.message : String(error)}`));\n }\n };\n\n reader.onerror = () => {\n reject(new Error('读取文件失败'));\n };\n\n reader.readAsArrayBuffer(file);\n });\n};\n\n/**\n * 获取图片宽高信息\n * @param url 图片链接\n * @returns 图片宽高信息\n */\nexport const getImageInfo = (url: string): Promise<{ width: number; height: number }> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve({ width: img.width, height: img.height });\n img.onerror = reject;\n img.src = url;\n });\n};\n\n/**\n * 获取视频信息\n * @param url 视频链接\n * @returns 视频宽高信息\n */\nexport const getVideoInfo = (url: string): Promise<{ width: number; height: number; duration: number }> => {\n return new Promise((resolve, reject) => {\n const video = document.createElement('video');\n video.onloadedmetadata = () => resolve({ width: video.videoWidth, height: video.videoHeight, duration: video.duration });\n video.onerror = reject;\n video.src = url;\n });\n};\n"],"names":[],"mappings":";;AAUA,eAAsB,UAAU,GAA4B,EAAA;AAC1D,EAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA,CAAA;AAChC,EAAA,OAAO,SAAS,IAAK,EAAA,CAAA;AACvB,CAAA;AASsB,eAAA,SAAA,CAAU,GAAa,EAAA,QAAA,EAAkB,OAAgD,EAAA;AAC7G,EAAM,MAAA,IAAA,GAAO,MAAM,SAAA,CAAU,GAAG,CAAA,CAAA;AAChC,EAAA,OAAO,IAAI,IAAA,CAAK,CAAC,IAAI,CAAG,EAAA,QAAA,EAAU,EAAE,IAAA,EAAM,OAAS,EAAA,QAAA,IAAY,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAC5E,CAAA;AASgB,SAAA,YAAA,CAAa,MAAgB,EAAA,QAAA,EAAkB,OAAuC,EAAA;AACpG,EAAA,MAAM,OAAO,YAAa,CAAA,MAAA,EAAQ,EAAE,QAAU,EAAA,OAAA,EAAS,UAAU,CAAA,CAAA;AACjE,EAAO,OAAA,UAAA,CAAW,MAAM,QAAQ,CAAA,CAAA;AAClC,CAAA;AAOO,SAAS,aAAa,IAA6B,EAAA;AACxD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAC9B,IAAA,MAAA,CAAO,SAAY,GAAA,MAAM,OAAQ,CAAA,MAAA,CAAO,MAAgB,CAAA,CAAA;AACxD,IAAA,MAAA,CAAO,OAAU,GAAA,MAAA,CAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AACH,CAAA;AAOO,SAAS,aAAa,IAA6B,EAAA;AACxD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAC9B,IAAA,MAAA,CAAO,SAAY,GAAA,MAAM,OAAQ,CAAA,MAAA,CAAO,MAAgB,CAAA,CAAA;AACxD,IAAA,MAAA,CAAO,OAAU,GAAA,MAAA,CAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AACH,CAAA;AAQgB,SAAA,UAAA,CAAW,MAAY,OAAuC,EAAA;AAC5E,EAAO,OAAA,IAAI,IAAK,CAAA,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,OAAS,EAAA,QAAA,IAAY,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAClE,CAAA;AASgB,SAAA,UAAA,CAAW,IAAY,EAAA,QAAA,EAAkB,OAAuC,EAAA;AAC9F,EAAA,OAAO,IAAI,IAAA,CAAK,CAAC,IAAI,CAAG,EAAA,QAAA,EAAU,EAAE,IAAA,EAAM,OAAS,EAAA,QAAA,IAAY,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAC5E,CAAA;AAQgB,SAAA,YAAA,CAAa,QAAgB,OAAuC,EAAA;AAClF,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,KAAA,CAAM,yBAAyB,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,OAAA,IAAW,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACpC,IAAM,MAAA,IAAI,MAAM,uBAAuB,CAAA,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,QAAW,GAAA,OAAA,EAAS,QAAY,IAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAC/C,EAAA,MAAM,UAAa,GAAA,IAAA,CAAK,OAAQ,CAAA,CAAC,CAAC,CAAA,CAAA;AAClC,EAAA,MAAM,WAAc,GAAA,IAAI,WAAY,CAAA,UAAA,CAAW,MAAM,CAAA,CAAA;AACrD,EAAM,MAAA,QAAA,GAAW,IAAI,UAAA,CAAW,WAAW,CAAA,CAAA;AAE3C,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,UAAA,CAAW,QAAQ,CAAK,EAAA,EAAA;AAC1C,IAAA,QAAA,CAAS,CAAC,CAAA,GAAI,UAAW,CAAA,UAAA,CAAW,CAAC,CAAA,CAAA;AAAA,GACvC;AAEA,EAAO,OAAA,IAAI,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA,CAAA;AAChD,CAAA;AAMO,SAAS,UAAU,IAAmB,EAAA;AAC3C,EAAO,OAAA,GAAA,CAAI,gBAAgB,IAAI,CAAA,CAAA;AACjC,CAAA;AAGgB,SAAA,aAAA,CAAc,MAAY,UAAoB,EAAA;AAE5D,EAAM,MAAA,QAAA,GAAW,KAAK,IAAQ,IAAA,EAAA,CAAA;AAE9B,EAAA,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,EAAM,MAAA,WAAA,GAAc,WAAW,KAAM,CAAA,GAAG,EAAE,GAAI,CAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAEjE,EAAO,OAAA,WAAA,CAAY,KAAK,CAAQ,IAAA,KAAA;AAE9B,IAAI,IAAA,IAAA,CAAK,UAAW,CAAA,GAAG,CAAG,EAAA;AAExB,MAAA,OAAO,aAAc,CAAA,WAAA,EAAkB,KAAA,IAAA,CAAK,WAAY,EAAA,CAAA;AAAA,KAE/C,MAAA,IAAA,IAAA,CAAK,QAAS,CAAA,IAAI,CAAG,EAAA;AAE9B,MAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAA;AACjC,MAAA,OAAO,QAAS,CAAA,UAAA,CAAW,CAAG,EAAA,QAAQ,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,KACpC,MAAA;AAEL,MAAA,OAAO,QAAa,KAAA,IAAA,CAAA;AAAA,KACtB;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAOa,MAAA,OAAA,GAAU,CAAC,IAAgC,KAAA;AACtD,EAAA,OAAO,IAAI,OAAA,CAAgB,CAAC,OAAA,EAAS,MAAW,KAAA;AAC9C,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAE9B,IAAA,MAAA,CAAO,SAAS,CAAK,CAAA,KAAA;AACnB,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAU,EAAE,MAAsB,CAAA,MAAA,CAAA;AACxC,QAAA,IAAI,MAAQ,EAAA;AACV,UAAQ,OAAA,CAAA,GAAA,CAAI,MAAM,CAAC,CAAA,CAAA;AAAA,SACd,MAAA;AACL,UAAO,MAAA,CAAA,IAAI,KAAM,CAAA,kDAAU,CAAC,CAAA,CAAA;AAAA,SAC9B;AAAA,eACO,KAAO,EAAA;AACd,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,CAAA,6BAAA,EAAY,KAAiB,YAAA,KAAA,GAAQ,KAAM,CAAA,OAAA,GAAU,MAAO,CAAA,KAAK,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,OACxF;AAAA,KACF,CAAA;AAEA,IAAA,MAAA,CAAO,UAAU,MAAM;AACrB,MAAO,MAAA,CAAA,IAAI,KAAM,CAAA,sCAAQ,CAAC,CAAA,CAAA;AAAA,KAC5B,CAAA;AAEA,IAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA,CAAA;AAAA,GAC9B,CAAA,CAAA;AACH,EAAA;AAOa,MAAA,YAAA,GAAe,CAAC,GAA4D,KAAA;AACvF,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,GAAA,GAAM,IAAI,KAAM,EAAA,CAAA;AACtB,IAAI,GAAA,CAAA,MAAA,GAAS,MAAM,OAAA,CAAQ,EAAE,KAAA,EAAO,IAAI,KAAO,EAAA,MAAA,EAAQ,GAAI,CAAA,MAAA,EAAQ,CAAA,CAAA;AACnE,IAAA,GAAA,CAAI,OAAU,GAAA,MAAA,CAAA;AACd,IAAA,GAAA,CAAI,GAAM,GAAA,GAAA,CAAA;AAAA,GACX,CAAA,CAAA;AACH,EAAA;AAOa,MAAA,YAAA,GAAe,CAAC,GAA8E,KAAA;AACzG,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA,CAAA;AAC5C,IAAA,KAAA,CAAM,gBAAmB,GAAA,MAAM,OAAQ,CAAA,EAAE,KAAO,EAAA,KAAA,CAAM,UAAY,EAAA,MAAA,EAAQ,KAAM,CAAA,WAAA,EAAa,QAAU,EAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AACvH,IAAA,KAAA,CAAM,OAAU,GAAA,MAAA,CAAA;AAChB,IAAA,KAAA,CAAM,GAAM,GAAA,GAAA,CAAA;AAAA,GACb,CAAA,CAAA;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"file.mjs","sources":["../../../../../packages/utils/src/file.ts"],"sourcesContent":["import { md5 } from 'js-md5';\n\nexport { genFileId } from 'element-plus';\n\nexport interface FileConversionOptions {\n mimeType?: string;\n}\n/**\n * 将 URL 转换为 Blob\n * @param url\n * @returns\n */\nexport async function urlToBlob(url: string): Promise<Blob> {\n const response = await fetch(url);\n return response.blob();\n}\n\n/**\n * 将 URL 转换为 File\n * @param url\n * @param filename\n * @param options\n * @returns\n */\nexport async function urlToFile(url: string, filename: string, options?: FileConversionOptions): Promise<File> {\n const blob = await urlToBlob(url);\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 File\n * @param base64\n * @param filename\n * @param options\n * @returns\n */\nexport function base64ToFile(base64: string, filename: string, options?: FileConversionOptions): File {\n const bolb = base64ToBlob(base64, { mimeType: options?.mimeType });\n return blobToFile(bolb, filename);\n}\n\n/**\n * 将 File 转换为 Base64 字符串\n * @param file\n * @returns\n */\nexport function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * 将 Blob 转换为 Base64 字符串\n * @param blob\n * @returns\n */\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\n/**\n * 将 File 转换为 Blob\n * @param file\n * @param options\n * @returns\n */\nexport function fileToBlob(file: File, options?: FileConversionOptions): Blob {\n return new Blob([file], { type: options?.mimeType ?? file.type });\n}\n\n/**\n * 将 Blob 转换为 File\n * @param blob\n * @param filename\n * @param options\n * @returns\n */\nexport function blobToFile(blob: Blob, filename: string, options?: FileConversionOptions): File {\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 Blob\n * @param base64\n * @param options\n * @returns\n */\nexport function base64ToBlob(base64: string, options?: FileConversionOptions): Blob {\n const matches = base64.match(/^data:(.+);base64,(.*)$/);\n\n if (!matches || matches.length !== 3) {\n throw new Error('Invalid Base64 string');\n }\n\n const mimeType = options?.mimeType ?? matches[1];\n const byteString = atob(matches[2]);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const intArray = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([intArray], { type: mimeType });\n}\n/**\n * 文件转本地url\n * @param file\n * @returns\n */\nexport function fileToUrl(file: File | Blob) {\n return URL.createObjectURL(file);\n}\n\n// 导出一个函数,用于检查文件类型是否合法\nexport function fileValidType(file: File, validTypes: string) {\n // 获取文件的 MIME 类型\n const fileType = file.type || '';\n // 获取文件的扩展名\n const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf('.')));\n // 将合法的文件类型字符串分割成数组\n const acceptTypes = validTypes.split(',').map(type => type.trim());\n // 遍历合法的文件类型数组,检查文件类型是否合法\n return acceptTypes.some(type => {\n // 如果文件类型以 . 开头,则检查文件扩展名\n if (type.startsWith('.')) {\n // 检查文件扩展名是否与合法的文件类型匹配\n return fileExtension.toLowerCase() === type.toLowerCase();\n // 如果文件类型包含 /*,则检查 MIME 类型组,如 image/*\n } else if (type.includes('/*')) {\n // 检查 MIME 类型组,如 image/*\n const [mainType] = type.split('/');\n return fileType.startsWith(`${mainType}/`);\n } else {\n // 检查具体 MIME 类型\n return fileType === type;\n }\n });\n}\n\n/**\n * 计算文件的MD5哈希值\n * @param file 要计算哈希值的文件\n * @returns 文件的MD5哈希值\n */\nexport const fileMd5 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = e => {\n try {\n const binary = (e.target as FileReader).result;\n if (binary) {\n resolve(md5(binary));\n } else {\n reject(new Error('读取文件内容失败'));\n }\n } catch (error) {\n reject(new Error(`计算MD5失败: ${error instanceof Error ? error.message : String(error)}`));\n }\n };\n\n reader.onerror = () => {\n reject(new Error('读取文件失败'));\n };\n\n reader.readAsArrayBuffer(file);\n });\n};\n\n/**\n * 获取图片宽高信息\n * @param url 图片链接\n * @returns 图片宽高信息\n */\nexport const getImageInfo = (url: string): Promise<{ width: number; height: number }> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve({ width: img.width, height: img.height });\n img.onerror = reject;\n img.src = url;\n });\n};\n\n/**\n * 获取视频信息\n * @param url 视频链接\n * @returns 视频宽高信息\n */\nexport const getVideoInfo = (url: string): Promise<{ width: number; height: number; duration: number }> => {\n return new Promise((resolve, reject) => {\n const video = document.createElement('video');\n video.onloadedmetadata = () => resolve({ width: video.videoWidth, height: video.videoHeight, duration: video.duration });\n video.onerror = reject;\n video.src = url;\n });\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DatePickerInstance } from 'element-plus';
|
|
2
2
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
3
3
|
type: {
|
|
4
|
-
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
4
|
+
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange">;
|
|
5
5
|
default: "date";
|
|
6
6
|
};
|
|
7
7
|
shortcuts: {
|
|
@@ -107,7 +107,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
|
107
107
|
"visible-change": (...args: any[]) => void;
|
|
108
108
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
109
109
|
type: {
|
|
110
|
-
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
110
|
+
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange">;
|
|
111
111
|
default: "date";
|
|
112
112
|
};
|
|
113
113
|
shortcuts: {
|
|
@@ -207,7 +207,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
|
207
207
|
"onPanel-change"?: ((...args: any[]) => any) | undefined;
|
|
208
208
|
"onVisible-change"?: ((...args: any[]) => any) | undefined;
|
|
209
209
|
}, {
|
|
210
|
-
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
210
|
+
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange";
|
|
211
211
|
name: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>) | ((new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>))[], unknown, unknown>;
|
|
212
212
|
disabled: boolean;
|
|
213
213
|
modelValue: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType) | ((new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType))[], unknown, unknown>;
|
|
@@ -4,7 +4,7 @@ export type DateModelType = number | string | Date;
|
|
|
4
4
|
export type ModelValueType = SingleOrRange<DateModelType>;
|
|
5
5
|
export declare const datePickerProps: {
|
|
6
6
|
type: {
|
|
7
|
-
type: PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
7
|
+
type: PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange">;
|
|
8
8
|
default: "date";
|
|
9
9
|
};
|
|
10
10
|
shortcuts: {
|
|
@@ -2,7 +2,7 @@ import DatePicker from './DatePicker.vue';
|
|
|
2
2
|
export declare const GmDatePicker: import("../../../../utils").SFCWithInstall<{
|
|
3
3
|
new (...args: any[]): import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{
|
|
4
4
|
type: {
|
|
5
|
-
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
5
|
+
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange">;
|
|
6
6
|
default: "date";
|
|
7
7
|
};
|
|
8
8
|
shortcuts: {
|
|
@@ -116,7 +116,7 @@ export declare const GmDatePicker: import("../../../../utils").SFCWithInstall<{
|
|
|
116
116
|
"visible-change": (...args: any[]) => void;
|
|
117
117
|
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
|
|
118
118
|
type: {
|
|
119
|
-
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
119
|
+
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange">;
|
|
120
120
|
default: "date";
|
|
121
121
|
};
|
|
122
122
|
shortcuts: {
|
|
@@ -216,7 +216,7 @@ export declare const GmDatePicker: import("../../../../utils").SFCWithInstall<{
|
|
|
216
216
|
"onPanel-change"?: ((...args: any[]) => any) | undefined;
|
|
217
217
|
"onVisible-change"?: ((...args: any[]) => any) | undefined;
|
|
218
218
|
}, {
|
|
219
|
-
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
219
|
+
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange";
|
|
220
220
|
name: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>) | ((new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>))[], unknown, unknown>;
|
|
221
221
|
disabled: boolean;
|
|
222
222
|
modelValue: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType) | ((new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType))[], unknown, unknown>;
|
|
@@ -243,7 +243,7 @@ export declare const GmDatePicker: import("../../../../utils").SFCWithInstall<{
|
|
|
243
243
|
Defaults: {};
|
|
244
244
|
}, Readonly<import("vue").ExtractPropTypes<{
|
|
245
245
|
type: {
|
|
246
|
-
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
246
|
+
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange">;
|
|
247
247
|
default: "date";
|
|
248
248
|
};
|
|
249
249
|
shortcuts: {
|
|
@@ -348,7 +348,7 @@ export declare const GmDatePicker: import("../../../../utils").SFCWithInstall<{
|
|
|
348
348
|
handleClose: () => void;
|
|
349
349
|
elRef: import("vue").Ref<import("element-plus").DatePickerInstance | undefined>;
|
|
350
350
|
}, {}, {}, {}, {
|
|
351
|
-
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
351
|
+
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange";
|
|
352
352
|
name: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>) | ((new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>))[], unknown, unknown>;
|
|
353
353
|
disabled: boolean;
|
|
354
354
|
modelValue: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType) | ((new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType))[], unknown, unknown>;
|
|
@@ -372,7 +372,7 @@ export declare const GmDatePicker: import("../../../../utils").SFCWithInstall<{
|
|
|
372
372
|
__isSuspense?: undefined;
|
|
373
373
|
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
374
374
|
type: {
|
|
375
|
-
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
375
|
+
type: import("vue").PropType<"date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange">;
|
|
376
376
|
default: "date";
|
|
377
377
|
};
|
|
378
378
|
shortcuts: {
|
|
@@ -485,7 +485,7 @@ export declare const GmDatePicker: import("../../../../utils").SFCWithInstall<{
|
|
|
485
485
|
"panel-change": (...args: any[]) => void;
|
|
486
486
|
"visible-change": (...args: any[]) => void;
|
|
487
487
|
}, string, {
|
|
488
|
-
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "
|
|
488
|
+
type: "date" | "daterange" | "month" | "year" | "months" | "years" | "dates" | "week" | "datetimerange" | "datetime" | "monthrange" | "yearrange";
|
|
489
489
|
name: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>) | ((new (...args: any[]) => string | [string, string]) | (() => import("element-plus").SingleOrRange<string>))[], unknown, unknown>;
|
|
490
490
|
disabled: boolean;
|
|
491
491
|
modelValue: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType) | ((new (...args: any[]) => string | number | Date | string[] | [import("element-plus").DateModelType, import("element-plus").DateModelType]) | (() => import("element-plus").ModelValueType))[], unknown, unknown>;
|
|
@@ -7,7 +7,7 @@ require('./UploadPro.vue3.js');
|
|
|
7
7
|
require('./UploadPro.vue4.js');
|
|
8
8
|
var _pluginVue_exportHelper = require('../../../../_virtual/_plugin-vue_export-helper.js');
|
|
9
9
|
|
|
10
|
-
var UploadPro = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadPro_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-
|
|
10
|
+
var UploadPro = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadPro_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-ca99928c"]]);
|
|
11
11
|
|
|
12
12
|
exports.default = UploadPro;
|
|
13
13
|
//# sourceMappingURL=UploadPro.vue.js.map
|
|
@@ -13,7 +13,7 @@ var uploadPro = require('./uploadPro.js');
|
|
|
13
13
|
var exports$1 = require('../../../../utils/src/elementPlus/exports.js');
|
|
14
14
|
var index = require('../../../../hooks/base/useUploadFile/index.js');
|
|
15
15
|
|
|
16
|
-
const _withScopeId = (n) => (vue.pushScopeId("data-v-
|
|
16
|
+
const _withScopeId = (n) => (vue.pushScopeId("data-v-ca99928c"), n = n(), vue.popScopeId(), n);
|
|
17
17
|
const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode(
|
|
18
18
|
"div",
|
|
19
19
|
{ class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
|
|
@@ -46,12 +46,18 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
46
46
|
const emit = __emit;
|
|
47
47
|
const fileList = vue.useModel(__props, "fileList");
|
|
48
48
|
const checkoutFiles = vue.useModel(__props, "checkoutFiles");
|
|
49
|
-
const { uploadFile } = index.useUploadFile();
|
|
49
|
+
const { uploadFile, cancelUpload } = index.useUploadFile();
|
|
50
50
|
const loadingUids = vue.ref(/* @__PURE__ */ new Set());
|
|
51
51
|
const uploadLoading = vue.computed(() => props.showLoading && loadingUids.value.size > 0);
|
|
52
52
|
const httpRequest = async (options) => {
|
|
53
53
|
loadingUids.value.add(options.file.uid);
|
|
54
|
-
return uploadFile(options.file, {
|
|
54
|
+
return uploadFile(options.file, {
|
|
55
|
+
domainCode: props.domainCode,
|
|
56
|
+
sceneCode: props.sceneCode,
|
|
57
|
+
accept: props.accept,
|
|
58
|
+
acl: props.acl,
|
|
59
|
+
elOptions: options
|
|
60
|
+
});
|
|
55
61
|
};
|
|
56
62
|
const coverFileSuccess = (response, uploadFile2, uploadFiles) => {
|
|
57
63
|
loadingUids.value.delete(uploadFile2.uid);
|
|
@@ -61,13 +67,25 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
61
67
|
loadingUids.value.delete(uploadFile2.uid);
|
|
62
68
|
props.onError?.(error, uploadFile2, uploadFiles);
|
|
63
69
|
};
|
|
64
|
-
const beforeRemove = (file, files) => {
|
|
70
|
+
const beforeRemove = async (file, files) => {
|
|
65
71
|
if (props.disabled) {
|
|
66
72
|
return false;
|
|
67
73
|
}
|
|
74
|
+
if (props.deleteTip) {
|
|
75
|
+
await index$1.GmConfirmBox({ message: "\u786E\u5B9A\u5220\u9664\u8BE5\u6587\u4EF6\u5417\uFF1F" }, async () => {
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (file.status === "uploading" || loadingUids.value.has(file.uid)) {
|
|
79
|
+
cancelUpload(file.uid);
|
|
80
|
+
loadingUids.value.delete(file.uid);
|
|
81
|
+
}
|
|
68
82
|
return props.beforeRemove?.(file, files) ?? true;
|
|
69
83
|
};
|
|
70
84
|
const removeFile = (file, uploadFiles) => {
|
|
85
|
+
if (file.status === "uploading" || loadingUids.value.has(file.uid)) {
|
|
86
|
+
cancelUpload(file.uid);
|
|
87
|
+
loadingUids.value.delete(file.uid);
|
|
88
|
+
}
|
|
71
89
|
const index = fileList.value.indexOf(file);
|
|
72
90
|
if (index > -1) {
|
|
73
91
|
fileList.value.splice(index, 1);
|
|
@@ -123,6 +141,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
123
141
|
const _component_el_icon = vue.resolveComponent("el-icon");
|
|
124
142
|
const _component_el_button = vue.resolveComponent("el-button");
|
|
125
143
|
const _component_el_checkbox = vue.resolveComponent("el-checkbox");
|
|
144
|
+
const _component_el_progress = vue.resolveComponent("el-progress");
|
|
126
145
|
const _component_el_upload = vue.resolveComponent("el-upload");
|
|
127
146
|
const _component_el_checkbox_group = vue.resolveComponent("el-checkbox-group");
|
|
128
147
|
const _directive_loading = vue.resolveDirective("loading");
|
|
@@ -207,12 +226,25 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
207
226
|
style: vue.normalizeStyle({ width: _ctx.width + "px", height: _ctx.height + "px" })
|
|
208
227
|
},
|
|
209
228
|
[
|
|
210
|
-
|
|
229
|
+
file.status === "uploading" || loadingUids.value.has(file.uid) ? (vue.openBlock(), vue.createBlock(_component_el_progress, {
|
|
230
|
+
key: 0,
|
|
231
|
+
type: _ctx.listType === "picture-card" ? "circle" : "line",
|
|
232
|
+
"stroke-width": _ctx.listType === "picture-card" ? 6 : 2,
|
|
233
|
+
percentage: Number(file.percentage),
|
|
234
|
+
style: vue.normalizeStyle(
|
|
235
|
+
_ctx.listType === "picture-card" ? {
|
|
236
|
+
width: _ctx.width - 20 + "px",
|
|
237
|
+
height: _ctx.width - 20 + "px"
|
|
238
|
+
} : "margin-top: 0.5rem"
|
|
239
|
+
),
|
|
240
|
+
width: _ctx.width - 20
|
|
241
|
+
}, null, 8, ["type", "stroke-width", "percentage", "style", "width"])) : (vue.openBlock(), vue.createBlock(vue.unref(index$3.GmFileComponent), {
|
|
242
|
+
key: 1,
|
|
211
243
|
file,
|
|
212
244
|
size: _ctx.width - 40,
|
|
213
245
|
controls: false,
|
|
214
246
|
"show-icon": true
|
|
215
|
-
}, null, 8, ["file", "size"])
|
|
247
|
+
}, null, 8, ["file", "size"]))
|
|
216
248
|
],
|
|
217
249
|
4
|
|
218
250
|
/* STYLE */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadPro.vue2.js","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-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\" :controls=\"false\" :show-icon=\"true\" />\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 <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { fileValidType } from '@giime/utils/src/file';\n// import { pasteFile } from '@giime/utils/src/pasteFile';\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 '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFileResponse, uploadFileProps } from './uploadPro';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n\n/**上传功能 */\nconst { uploadFile } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, { domainCode: props.domainCode, sceneCode: props.sceneCode, accept: props.accept, acl: props.acl });\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onSuccess?.(response, uploadFile, uploadFiles);\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n};\n\n/* 删除文件前 */\nconst beforeRemove: UploadProps['beforeRemove'] = (file, files) => {\n if (props.disabled) {\n return false;\n }\n return 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};\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 exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\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 (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-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-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\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: 1.7;\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-pro-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":["useSlots","_useModel","useUploadFile","ref","computed","uploadFile","GmConfirmBox","getGmExports","usePasteFile","ElMessageBox"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FA,IAAA,MAAM,QAAQA,YAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAGb,IAAM,MAAA,QAAA,GAAWC,YAA0B,CAAA,OAAA,EAAA,UAA8B,CAAA,CAAA;AAEzE,IAAM,MAAA,aAAA,GAAgBA,sBAAmB,eAAsC,CAAA,CAAA;AAG/E,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,mBAAc,EAAA,CAAA;AAErC,IAAA,MAAM,WAAc,GAAAC,OAAA,iBAAqB,IAAA,GAAA,EAAK,CAAA,CAAA;AAC9C,IAAM,MAAA,aAAA,GAAgBC,aAAS,MAAM,KAAA,CAAM,eAAe,WAAY,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAGpF,IAAM,MAAA,WAAA,GAA0C,OAAM,OAAW,KAAA;AAC/D,MAAA,WAAA,CAAY,KAAM,CAAA,GAAA,CAAI,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACtC,MAAA,OAAO,WAAW,OAAQ,CAAA,IAAA,EAAM,EAAE,UAAA,EAAY,MAAM,UAAY,EAAA,SAAA,EAAW,KAAM,CAAA,SAAA,EAAW,QAAQ,KAAM,CAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,KACpI,CAAA;AAEA,IAAA,MAAM,gBAA6C,GAAA,CAAC,QAAuCC,EAAAA,WAAAA,EAAY,WAAgB,KAAA;AACrH,MAAY,WAAA,CAAA,KAAA,CAAM,MAAOA,CAAAA,WAAAA,CAAW,GAAG,CAAA,CAAA;AACvC,MAAM,KAAA,CAAA,SAAA,GAAY,QAAUA,EAAAA,WAAAA,EAAY,WAAW,CAAA,CAAA;AAAA,KACrD,CAAA;AAEA,IAAA,MAAM,cAAyC,GAAA,CAAC,KAAOA,EAAAA,WAAAA,EAAY,WAAgB,KAAA;AACjF,MAAY,WAAA,CAAA,KAAA,CAAM,MAAOA,CAAAA,WAAAA,CAAW,GAAG,CAAA,CAAA;AACvC,MAAM,KAAA,CAAA,OAAA,GAAU,KAAOA,EAAAA,WAAAA,EAAY,WAAW,CAAA,CAAA;AAAA,KAChD,CAAA;AAGA,IAAM,MAAA,YAAA,GAA4C,CAAC,IAAA,EAAM,KAAU,KAAA;AACjE,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAA,OAAO,KAAM,CAAA,YAAA,GAAe,IAAM,EAAA,KAAK,CAAK,IAAA,IAAA,CAAA;AAAA,KAC9C,CAAA;AAGA,IAAM,MAAA,UAAA,GAAa,CAAC,IAAA,EAAkB,WAA6B,KAAA;AACjE,MAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACzC,MAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,QAAS,QAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAC9B,QAAA,IAAA,CAAK,cAAgB,EAAA,EAAE,IAAM,EAAA,KAAA,EAAO,CAAA,CAAA;AACpC,QAAO,OAAA,KAAA,CAAM,QAAW,GAAA,IAAA,EAAM,WAAW,CAAA,CAAA;AAAA,OAC3C;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,OAAO,IAAA,EAAkB,WAA6B,KAAA;AACzE,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,MAAMC,oBAAa,CAAA,EAAE,OAAS,EAAA,wDAAA,IAAe,YAAY;AAAA,SAAE,CAAA,CAAA;AAAA,OAC7D;AAEA,MAAA,UAAA,CAAW,MAAM,WAAW,CAAA,CAAA;AAAA,KAC9B,CAAA;AAEA,IAAA,MAAM,gBAAgBH,OAAoB,EAAA,CAAA;AAC1C,IAAA,MAAM,eAAe,CAAC,OAAA,EAAS,QAAU,EAAA,YAAA,EAAc,eAAe,cAAc,CAAA,CAAA;AACpF,IAAA,MAAM,EAAE,SAAA,EAAc,GAAAI,sBAAA,CAAa,eAAe,YAAY,CAAA,CAAA;AAE9D,IAAA,MAAM,eAAeJ,OAAiB,EAAA,CAAA;AAGtC,IAAM,MAAA,aAAA,GAAgBA,QAAI,KAAK,CAAA,CAAA;AAC/B,IAAM,MAAA,SAAA,GAAYA,QAAI,CAAC,CAAA,CAAA;AAEvB,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;AAGA,IAAA,MAAM,EAAE,SAAA,EAAW,OAAQ,EAAA,GAAIK,oBAAa,CAAA,YAAA,EAAc,EAAE,MAAA,EAAQ,KAAM,CAAA,MAAA,EAAQ,QAAU,EAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAC5G,IAAA,SAAA,CAAU,CAAC,KAAkB,KAAA;AAC3B,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAA,OAAA;AAAA,OACF;AACA,MAAA,IAAI,MAAM,OAAQ,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AAC5C,QAAA,KAAA,CAAM,QAAQ,CAAQ,IAAA,KAAA;AACpB,UAAA,IAAI,gBAAgB,IAAM,EAAA;AACxB,YAAA,MAAM,OAAU,GAAA,IAAA,CAAA;AAChB,YAAc,aAAA,CAAA,KAAA,EAAO,YAAY,OAAO,CAAA,CAAA;AAGxC,YAAA,IAAI,MAAM,UAAY,EAAA;AACpB,cAAA,aAAA,CAAc,OAAO,MAAO,EAAA,CAAA;AAAA,aAC9B;AAAA,WACF;AAAA,SACD,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAA,CAAQ,CAAC,KAAiB,KAAA;AACxB,MAAQ,OAAA,CAAA,KAAA,CAAM,6BAAS,KAAK,CAAA,CAAA;AAC5B,MAAaC,wBAAA,CAAA,KAAA,CAAM,KAAM,CAAA,OAAA,EAAS,cAAM,EAAA;AAAA,QACtC,IAAM,EAAA,OAAA;AAAA,OACP,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AACD,IAAa,QAAA,CAAA;AAAA,MACX,GAAG,SAAA;AAAA,MACH,aAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"UploadPro.vue2.js","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-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\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 <el-progress\n v-if=\"file.status === 'uploading' || loadingUids.has(file.uid)\"\n :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n :percentage=\"Number(file.percentage)\"\n :style=\"\n listType === 'picture-card'\n ? {\n width: width - 20 + 'px',\n height: width - 20 + 'px',\n }\n : 'margin-top: 0.5rem'\n \"\n :width=\"width - 20\"\n />\n\n <GmFileComponent v-else :file=\"file\" :size=\"width - 40\" :controls=\"false\" :show-icon=\"true\" />\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 <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { fileValidType } from '@giime/utils/src/file';\n// import { pasteFile } from '@giime/utils/src/pasteFile';\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 '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFileResponse, uploadFileProps } from './uploadPro';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n/**上传功能 */\nconst { uploadFile, cancelUpload } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onSuccess?.(response, uploadFile, uploadFiles);\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n};\n\n/* 删除文件前 */\nconst beforeRemove: UploadProps['beforeRemove'] = async (file, files) => {\n if (props.disabled) {\n return false;\n }\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n return props.beforeRemove?.(file, files) ?? true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n\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};\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 exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\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 (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-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-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\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: 1.7;\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-pro-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":["useSlots","_useModel","useUploadFile","ref","computed","uploadFile","GmConfirmBox","getGmExports","usePasteFile","ElMessageBox"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadPro.js","sources":["../../../../../../../packages/components/src/business/uploadPro/uploadPro.ts"],"sourcesContent":["import { type PropType } from 'vue';\nimport { type UploadFile, type UploadProps, uploadProps, type UploadUserFile } from 'element-plus';\nimport type { ResourceUrlResponse } from '@giime/api/resource/interface';\n// import { previewFileProps } from '../../composite/previewFile/previewFile';\n\nexport const uploadFileProps = {\n ...uploadProps,\n // ...previewFileProps,\n listType: {\n type: String as PropType<UploadProps['listType']>,\n default: 'picture-card',\n },\n drag: {\n type: Boolean,\n default: true,\n },\n /**领域编码 */\n domainCode: {\n type: String,\n },\n /**场景编码 */\n sceneCode: {\n type: String,\n default: 'internal_oss',\n },\n /** 文件权限,默认继承桶 */\n acl: {\n type: String,\n default: 'default',\n },\n /**上传中是否loading */\n showLoading: {\n type: Boolean,\n default:
|
|
1
|
+
{"version":3,"file":"uploadPro.js","sources":["../../../../../../../packages/components/src/business/uploadPro/uploadPro.ts"],"sourcesContent":["import { type PropType } from 'vue';\nimport { type UploadFile, type UploadProps, uploadProps, type UploadUserFile } from 'element-plus';\nimport type { ResourceUrlResponse } from '@giime/api/resource/interface';\n// import { previewFileProps } from '../../composite/previewFile/previewFile';\n\nexport const uploadFileProps = {\n ...uploadProps,\n // ...previewFileProps,\n listType: {\n type: String as PropType<UploadProps['listType']>,\n default: 'picture-card',\n },\n drag: {\n type: Boolean,\n default: true,\n },\n /**领域编码 */\n domainCode: {\n type: String,\n },\n /**场景编码 */\n sceneCode: {\n type: String,\n default: 'internal_oss',\n },\n /** 文件权限,默认继承桶 */\n acl: {\n type: String,\n default: 'default',\n },\n /**上传中是否loading */\n showLoading: {\n type: Boolean,\n default: false,\n },\n /** 是否展示删除按钮 */\n showDelete: {\n type: Boolean,\n default: true,\n },\n /** 删除时提示 */\n deleteTip: {\n type: Boolean,\n default: false,\n },\n /** 是否开启文件多选 */\n checkbox: {\n type: Boolean,\n default: false,\n },\n /** 缩略图宽度 */\n width: {\n type: Number,\n default: 120,\n },\n /** 缩略图高度 */\n height: {\n type: Number,\n default: 120,\n },\n};\nexport type GmUploadProUserFileResponse = ResourceUrlResponse;\n\nexport type GmUploadProUserFile = Omit<UploadUserFile, 'response'> & { response?: GmUploadProUserFileResponse };\n"],"names":["uploadProps"],"mappings":";;;;AAKO,MAAM,eAAkB,GAAA;AAAA,EAC7B,GAAGA,uBAAA;AAAA;AAAA,EAEH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,GACX;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,GACX;AAAA;AAAA,EAEA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,GACX;AAAA;AAAA,EAEA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AACF;;;;"}
|