giime 0.6.35 → 0.6.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/index.css +50 -50
  2. package/es/components/src/business/uploadPro/UploadPro.vue.mjs +1 -1
  3. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs +1 -1
  4. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs.map +1 -1
  5. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +3 -2
  6. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -1
  7. package/es/components/src/composite/searchForm/searchFormItems/cascader/SearchFormCascader.vue2.mjs +1 -1
  8. package/es/components/src/composite/searchForm/searchFormItems/cascader/SearchFormCascader.vue2.mjs.map +1 -1
  9. package/es/giime/index.mjs +1 -1
  10. package/es/giime/version.d.ts +1 -1
  11. package/es/giime/version.mjs +1 -1
  12. package/es/giime/version.mjs.map +1 -1
  13. package/es/hooks/base/useDownload/index.mjs +27 -12
  14. package/es/hooks/base/useDownload/index.mjs.map +1 -1
  15. package/es/hooks/base/useUploadFile/index.d.ts +1 -1
  16. package/es/hooks/base/useUploadFile/index.mjs +4 -4
  17. package/es/hooks/base/useUploadFile/index.mjs.map +1 -1
  18. package/es/index.css +50 -50
  19. package/es/utils/index.mjs +1 -1
  20. package/es/utils/src/file.d.ts +0 -6
  21. package/es/utils/src/file.mjs +1 -9
  22. package/es/utils/src/file.mjs.map +1 -1
  23. package/es/utils/src/http/interceptors.d.ts +1 -1
  24. package/es/utils/src/http/interceptors.mjs +4 -1
  25. package/es/utils/src/http/interceptors.mjs.map +1 -1
  26. package/lib/components/src/business/uploadPro/UploadPro.vue.js +1 -1
  27. package/lib/components/src/business/uploadPro/UploadPro.vue2.js +1 -1
  28. package/lib/components/src/business/uploadPro/UploadPro.vue2.js.map +1 -1
  29. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +6 -5
  30. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -1
  31. package/lib/components/src/composite/searchForm/searchFormItems/cascader/SearchFormCascader.vue2.js +1 -1
  32. package/lib/components/src/composite/searchForm/searchFormItems/cascader/SearchFormCascader.vue2.js.map +1 -1
  33. package/lib/giime/index.js +0 -1
  34. package/lib/giime/index.js.map +1 -1
  35. package/lib/giime/version.d.ts +1 -1
  36. package/lib/giime/version.js +1 -1
  37. package/lib/giime/version.js.map +1 -1
  38. package/lib/hooks/base/useDownload/index.js +27 -12
  39. package/lib/hooks/base/useDownload/index.js.map +1 -1
  40. package/lib/hooks/base/useUploadFile/index.d.ts +1 -1
  41. package/lib/hooks/base/useUploadFile/index.js +4 -4
  42. package/lib/hooks/base/useUploadFile/index.js.map +1 -1
  43. package/lib/index.css +50 -50
  44. package/lib/utils/index.js +0 -1
  45. package/lib/utils/index.js.map +1 -1
  46. package/lib/utils/src/file.d.ts +0 -6
  47. package/lib/utils/src/file.js +0 -9
  48. package/lib/utils/src/file.js.map +1 -1
  49. package/lib/utils/src/http/interceptors.d.ts +1 -1
  50. package/lib/utils/src/http/interceptors.js +4 -1
  51. package/lib/utils/src/http/interceptors.js.map +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/base/useDownload/index.ts"],"sourcesContent":["import { h, ref } from 'vue';\nimport FileSaver from 'file-saver';\n\nimport GmNotification from '@giime/components/src/plugins/notification';\nimport { v4 as uuidv4 } from 'uuid';\nimport JSZip from 'jszip';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport type { AxiosResponse } from 'axios';\n\nexport interface DownloadOptions {\n filename?: string;\n}\nexport interface DateownloadZipItem {\n url: string;\n filename?: string;\n}\n\nexport const useDownload = () => {\n const getUrlFilename = (url: string) => {\n const filename = url.split('/').pop()?.split('?')[0] || 'file';\n return filename;\n };\n /**\n * 通过url下载\n * @param url\n * @param options\n */\n const downloadByUrl = async (url: string, options?: DownloadOptions) => {\n const filename = options?.filename || getUrlFilename(url);\n const curId = uuidv4();\n const modalInfo = GmNotification({\n title: '下载中',\n message: h('div', { className: curId }, [`当前下载进度 0%`]),\n duration: 0,\n });\n await createDownload({\n url,\n filename,\n uuid: curId,\n });\n modalInfo.close();\n };\n /**\n * 通过接口响应结果下载\n * @param res\n * @param options\n */\n const downloadByRes = async (res: AxiosResponse<any, any>, options?: DownloadOptions) => {\n let contentDispositionName = (res?.headers?.['content-disposition'] || res?.headers?.['Content-Disposition'])?.split('filename=')[1];\n try {\n contentDispositionName = decodeURIComponent(contentDispositionName);\n } catch {}\n const filename = options?.filename || contentDispositionName || 'file';\n const resBlob = await res.data;\n const curId = uuidv4();\n const modalInfo = GmNotification({\n title: '下载中',\n message: h('div', { className: curId }, [`当前下载进度 0%`]),\n duration: 0,\n });\n // 设置type类型\n const blob = new Blob([resBlob]);\n const fileUrl = window.URL.createObjectURL(blob);\n await createDownload({\n url: fileUrl,\n filename,\n uuid: curId,\n });\n modalInfo.close();\n };\n /**\n * 下载多文件 转为zip\n * @param fileList\n * @param filename\n */\n const downloadToZip = async (fileList: DateownloadZipItem[], filename: string) => {\n return new Promise((resolve, reject) => {\n const currentContentClass = `message${Date.now()}`;\n const downloadCount = ref(0);\n const len = fileList.length;\n const modalInfo = GmNotification({\n title: '下载中',\n message: h('div', [h('div', { className: currentContentClass }, [`总下载文件数:${len},已下载文件数:${downloadCount.value}`])]),\n duration: 0,\n });\n // h('div', { className: currentClass }, [`当前下载进度 ${progress.value}%`]),\n const zipInstance = new JSZip();\n for (let i = 0; i < len; i++) {\n const currentItem = fileList[i];\n // const fileBlob = await\n const downblobOptions = {\n url: currentItem.url,\n filename: currentItem.filename ?? getUrlFilename(currentItem.url),\n isZip: true,\n };\n createDownload(downblobOptions).then(res => {\n zipInstance.file(downblobOptions.filename, res);\n downloadCount.value++;\n editElementContent(currentContentClass, `总下载文件数:${len},已下载文件数:${downloadCount.value}`);\n if (downloadCount.value == len) {\n editElementContent(currentContentClass, `正在合并...`);\n zipInstance\n .generateAsync({ type: 'blob' })\n .then(async res => {\n modalInfo.close();\n\n const fileUrl = window.URL.createObjectURL(res);\n // FileSaver.saveAs(res, filename);\n await downloadByUrl(fileUrl, { filename });\n resolve(true);\n })\n .catch(error => {\n console.error('error', error);\n reject(error);\n });\n }\n });\n }\n });\n };\n const createDownload = (options: { url: string; filename: string; uuid?: string; isZip?: boolean }) => {\n return new Promise<Blob>((resolve, reject) => {\n // 创建一个新的 XMLHttpRequest 对象\n const xhr = new XMLHttpRequest();\n // 初始化一个GET请求\n xhr.open('GET', options.url, true);\n xhr.responseType = 'blob'; // 设置响应类型为blob,以便处理二进制文件\n\n // 监听 progress 事件\n xhr.onprogress = function (event) {\n if (event.lengthComputable) {\n const percentComplete = Math.floor((event.loaded / event.total) * 100);\n if (options.uuid) {\n editElementContent(options.uuid, `当前下载进度 ${percentComplete}%`);\n }\n }\n };\n\n // 监听 load 事件,表示下载完成\n xhr.onload = function (e) {\n const eventTarget = e.target as XMLHttpRequest;\n if ([200, 304].includes(eventTarget.status)) {\n const blob = eventTarget.response;\n // const url = window.URL.createObjectURL(blob);\n if (!options.isZip) {\n FileSaver.saveAs(blob, options.filename);\n GmNotification({\n type: 'success',\n title: '温馨提示',\n message: '下载完成',\n duration: 3000,\n });\n }\n\n resolve(blob);\n }\n };\n\n // 监听 error 事件\n xhr.onerror = function (e) {\n GmMessage.error('下载异常,请重试');\n reject(e);\n };\n\n // 发送请求\n xhr.send();\n });\n };\n return { downloadByUrl, downloadByRes, downloadToZip };\n};\n\n// 动态更新 notify 中的message 信息\nconst editElementContent = (className: string, content: string) => {\n // eslint-disable-next-line unicorn/prefer-query-selector\n const currentEle = document.getElementsByClassName(className)[0];\n if (currentEle) {\n currentEle.innerHTML = content;\n }\n};\n"],"names":["uuidv4","GmNotification","h","ref","res","GmMessage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/base/useDownload/index.ts"],"sourcesContent":["import { h, ref } from 'vue';\nimport FileSaver from 'file-saver';\n\nimport GmNotification from '@giime/components/src/plugins/notification';\nimport { v4 as uuidv4 } from 'uuid';\nimport JSZip from 'jszip';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport type { AxiosResponse } from 'axios';\n\nexport interface DownloadOptions {\n filename?: string;\n}\nexport interface DateownloadZipItem {\n url: string;\n filename?: string;\n}\n\nexport const useDownload = () => {\n const getUrlFilename = (url: string) => {\n const filename = url.split('/').pop()?.split('?')[0] || 'file';\n return filename;\n };\n /**\n * 通过url下载\n * @param url\n * @param options\n */\n const downloadByUrl = async (url: string, options?: DownloadOptions) => {\n const filename = options?.filename || getUrlFilename(url);\n const curId = uuidv4();\n const modalInfo = GmNotification({\n title: '下载中',\n message: h('div', { className: curId }, [`当前下载进度 0%`]),\n duration: 0,\n });\n try {\n await createDownload({\n url,\n filename,\n uuid: curId,\n });\n } finally {\n modalInfo.close();\n }\n };\n /**\n * 通过接口响应结果下载\n * @param res\n * @param options\n */\n const downloadByRes = async (res: AxiosResponse<any, any>, options?: DownloadOptions) => {\n let contentDispositionName = (res?.headers?.['content-disposition'] || res?.headers?.['Content-Disposition'])?.split('filename=')[1];\n try {\n contentDispositionName = decodeURIComponent(contentDispositionName);\n } catch {}\n const filename = options?.filename || contentDispositionName || 'file';\n const resBlob = await res.data;\n const curId = uuidv4();\n const modalInfo = GmNotification({\n title: '下载中',\n message: h('div', { className: curId }, [`当前下载进度 0%`]),\n duration: 0,\n });\n // 设置type类型\n const blob = new Blob([resBlob]);\n const fileUrl = window.URL.createObjectURL(blob);\n try {\n await createDownload({\n url: fileUrl,\n filename,\n uuid: curId,\n });\n } finally {\n modalInfo.close();\n }\n };\n /**\n * 下载多文件 转为zip\n * @param fileList\n * @param filename\n */\n const downloadToZip = async (fileList: DateownloadZipItem[], filename: string) => {\n return new Promise((resolve, reject) => {\n const currentContentClass = `message${Date.now()}`;\n const downloadCount = ref(0);\n const len = fileList.length;\n const modalInfo = GmNotification({\n title: '下载中',\n message: h('div', [h('div', { className: currentContentClass }, [`总下载文件数:${len},已下载文件数:${downloadCount.value}`])]),\n duration: 0,\n });\n // h('div', { className: currentClass }, [`当前下载进度 ${progress.value}%`]),\n const zipInstance = new JSZip();\n for (let i = 0; i < len; i++) {\n const currentItem = fileList[i];\n // const fileBlob = await\n const downblobOptions = {\n url: currentItem.url,\n filename: currentItem.filename ?? getUrlFilename(currentItem.url),\n isZip: true,\n };\n createDownload(downblobOptions)\n .then(res => {\n zipInstance.file(downblobOptions.filename, res);\n downloadCount.value++;\n editElementContent(currentContentClass, `总下载文件数:${len},已下载文件数:${downloadCount.value}`);\n if (downloadCount.value == len) {\n editElementContent(currentContentClass, `正在合并...`);\n zipInstance\n .generateAsync({ type: 'blob' })\n .then(async res => {\n modalInfo.close();\n\n const fileUrl = window.URL.createObjectURL(res);\n // FileSaver.saveAs(res, filename);\n await downloadByUrl(fileUrl, { filename });\n resolve(true);\n })\n .catch(error => {\n console.error('error', error);\n reject(error);\n });\n }\n })\n .catch(error => {\n reject(error);\n modalInfo.close();\n });\n }\n });\n };\n const createDownload = (options: { url: string; filename: string; uuid?: string; isZip?: boolean }) => {\n return new Promise<Blob>((resolve, reject) => {\n // 创建一个新的 XMLHttpRequest 对象\n const xhr = new XMLHttpRequest();\n // 初始化一个GET请求\n xhr.open('GET', options.url, true);\n xhr.responseType = 'blob'; // 设置响应类型为blob,以便处理二进制文件\n\n // 监听 progress 事件\n xhr.onprogress = function (event) {\n if (event.lengthComputable) {\n const percentComplete = Math.floor((event.loaded / event.total) * 100);\n if (options.uuid) {\n editElementContent(options.uuid, `当前下载进度 ${percentComplete}%`);\n }\n }\n };\n\n // 监听 load 事件,表示下载完成\n xhr.onload = function (e) {\n const eventTarget = e.target as XMLHttpRequest;\n if ([200, 304].includes(eventTarget.status)) {\n const blob = eventTarget.response;\n // const url = window.URL.createObjectURL(blob);\n if (!options.isZip) {\n FileSaver.saveAs(blob, options.filename);\n GmNotification({\n type: 'success',\n title: '温馨提示',\n message: '下载完成',\n duration: 3000,\n });\n }\n\n resolve(blob);\n } else if (eventTarget.status === 404) {\n GmMessage.error('文件不存在,或已被删除');\n reject(e);\n } else {\n GmMessage.error('下载异常,请重试!');\n reject(e);\n }\n };\n\n // 监听 error 事件\n xhr.onerror = function (e) {\n GmMessage.error('下载异常,请重试');\n reject(e);\n };\n\n // 发送请求\n xhr.send();\n });\n };\n return { downloadByUrl, downloadByRes, downloadToZip };\n};\n\n// 动态更新 notify 中的message 信息\nconst editElementContent = (className: string, content: string) => {\n // eslint-disable-next-line unicorn/prefer-query-selector\n const currentEle = document.getElementsByClassName(className)[0];\n if (currentEle) {\n currentEle.innerHTML = content;\n }\n};\n"],"names":["uuidv4","GmNotification","h","ref","res","GmMessage"],"mappings":"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"}
@@ -10,7 +10,7 @@ export interface UseUploadFileOptions {
10
10
  }
11
11
  export declare const useUploadFile: () => {
12
12
  isLoading: import("vue").Ref<boolean>;
13
- uploadFile: (file: File, options: UseUploadFileOptions) => Promise<{
13
+ uploadFile: (file: File, options?: UseUploadFileOptions) => Promise<{
14
14
  url: string;
15
15
  exists: boolean;
16
16
  uploadUrl: string;
@@ -12,14 +12,14 @@ const useUploadFile = () => {
12
12
  const isLoading = vue.ref(false);
13
13
  const domainCode = index.useGlobalConfig("domainCode");
14
14
  const uploadFile = async (file$1, options) => {
15
- const uploadDomainCode = options.domainCode ?? domainCode.value;
15
+ const uploadDomainCode = options?.domainCode ?? domainCode.value;
16
16
  if (!uploadDomainCode) {
17
17
  index$1.GmMessage.error("\u9886\u57DF\u7F16\u7801\u4E0D\u80FD\u4E3A\u7A7A");
18
18
  throw new Error("\u9886\u57DF\u7F16\u7801\u4E0D\u80FD\u4E3A\u7A7A");
19
19
  }
20
20
  try {
21
21
  isLoading.value = true;
22
- if (options.accept && options.accept !== "*") {
22
+ if (options?.accept && options?.accept !== "*") {
23
23
  const isValidType = file.fileValidType(file$1, options.accept);
24
24
  if (!isValidType) {
25
25
  index$1.GmMessage.error(`\u6587\u4EF6\u7C7B\u578B\u4E0D\u652F\u6301\uFF0C\u8BF7\u4E0A\u4F20 ${options.accept} \u683C\u5F0F\u7684\u6587\u4EF6`);
@@ -27,11 +27,11 @@ const useUploadFile = () => {
27
27
  }
28
28
  }
29
29
  const md5 = await file.fileMd5(file$1);
30
- const acl = options.acl || "default";
30
+ const acl = options?.acl || "default";
31
31
  const { data } = await postV1ResourcesUrl.postV1ResourcesUrl({
32
32
  domainCode: uploadDomainCode,
33
33
  // 领域编码
34
- sceneCode: options.sceneCode || "internal_oss",
34
+ sceneCode: options?.sceneCode || "internal_oss",
35
35
  // 场景编码
36
36
  fileName: file$1.name,
37
37
  contentType: file$1.type,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/base/useUploadFile/index.ts"],"sourcesContent":["import axios from 'axios';\nimport { ref } from 'vue';\nimport { postV1ResourcesUrl } from '@giime/api/resource/controller';\nimport { fileMd5, fileValidType } from '@giime/utils/src/file';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\n\nexport interface UseUploadFileOptions {\n /**领域编码 */\n domainCode?: string;\n /**场景编码 */\n sceneCode?: string;\n /**接受上传的文件类型 */\n accept?: string;\n /**文件权限,默认继承桶 */\n acl?: string;\n}\n\nexport const useUploadFile = () => {\n const isLoading = ref(false);\n const domainCode = useGlobalConfig('domainCode');\n\n const uploadFile = async (file: File, options: UseUploadFileOptions) => {\n // 领域编码\n const uploadDomainCode = options.domainCode ?? domainCode.value;\n if (!uploadDomainCode) {\n GmMessage.error('领域编码不能为空');\n throw new Error('领域编码不能为空');\n }\n try {\n isLoading.value = true;\n // 验证文件类型\n if (options.accept && options.accept !== '*') {\n const isValidType = fileValidType(file, options.accept);\n if (!isValidType) {\n GmMessage.error(`文件类型不支持,请上传 ${options.accept} 格式的文件`);\n throw new Error(`文件类型不支持,请上传 ${options.accept} 格式的文件`);\n }\n }\n const md5 = await fileMd5(file);\n const acl = options.acl || 'default';\n const { data } = await postV1ResourcesUrl({\n domainCode: uploadDomainCode, // 领域编码\n sceneCode: options.sceneCode || 'internal_oss', // 场景编码\n fileName: file.name,\n contentType: file.type,\n md5,\n size: file.size,\n acl, // 文件权限\n });\n\n if (data.data.uploadUrl) {\n try {\n await axios.put(data.data.uploadUrl, file, {\n headers: {\n 'Content-Type': file.type,\n 'x-oss-object-acl ': acl,\n },\n });\n } catch (error) {\n GmMessage.error('推送至存储桶失败,请重试');\n throw error;\n }\n }\n\n return data.data;\n } finally {\n isLoading.value = false;\n }\n };\n return {\n isLoading,\n uploadFile,\n };\n};\n"],"names":["ref","useGlobalConfig","file","GmMessage","fileValidType","fileMd5","postV1ResourcesUrl"],"mappings":";;;;;;;;;;AAkBO,MAAM,gBAAgB,MAAM;AACjC,EAAM,MAAA,SAAA,GAAYA,QAAI,KAAK,CAAA,CAAA;AAC3B,EAAM,MAAA,UAAA,GAAaC,sBAAgB,YAAY,CAAA,CAAA;AAE/C,EAAM,MAAA,UAAA,GAAa,OAAOC,MAAA,EAAY,OAAkC,KAAA;AAEtE,IAAM,MAAA,gBAAA,GAAmB,OAAQ,CAAA,UAAA,IAAc,UAAW,CAAA,KAAA,CAAA;AAC1D,IAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,MAAAC,iBAAA,CAAU,MAAM,kDAAU,CAAA,CAAA;AAC1B,MAAM,MAAA,IAAI,MAAM,kDAAU,CAAA,CAAA;AAAA,KAC5B;AACA,IAAI,IAAA;AACF,MAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAElB,MAAA,IAAI,OAAQ,CAAA,MAAA,IAAU,OAAQ,CAAA,MAAA,KAAW,GAAK,EAAA;AAC5C,QAAA,MAAM,WAAc,GAAAC,kBAAA,CAAcF,MAAM,EAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AACtD,QAAA,IAAI,CAAC,WAAa,EAAA;AAChB,UAAAC,iBAAA,CAAU,KAAM,CAAA,CAAA,mEAAA,EAAe,OAAQ,CAAA,MAAM,CAAQ,+BAAA,CAAA,CAAA,CAAA;AACrD,UAAA,MAAM,IAAI,KAAA,CAAM,CAAe,mEAAA,EAAA,OAAA,CAAQ,MAAM,CAAQ,+BAAA,CAAA,CAAA,CAAA;AAAA,SACvD;AAAA,OACF;AACA,MAAM,MAAA,GAAA,GAAM,MAAME,YAAA,CAAQH,MAAI,CAAA,CAAA;AAC9B,MAAM,MAAA,GAAA,GAAM,QAAQ,GAAO,IAAA,SAAA,CAAA;AAC3B,MAAA,MAAM,EAAE,IAAA,EAAS,GAAA,MAAMI,qCAAmB,CAAA;AAAA,QACxC,UAAY,EAAA,gBAAA;AAAA;AAAA,QACZ,SAAA,EAAW,QAAQ,SAAa,IAAA,cAAA;AAAA;AAAA,QAChC,UAAUJ,MAAK,CAAA,IAAA;AAAA,QACf,aAAaA,MAAK,CAAA,IAAA;AAAA,QAClB,GAAA;AAAA,QACA,MAAMA,MAAK,CAAA,IAAA;AAAA,QACX,GAAA;AAAA;AAAA,OACD,CAAA,CAAA;AAED,MAAI,IAAA,IAAA,CAAK,KAAK,SAAW,EAAA;AACvB,QAAI,IAAA;AACF,UAAA,MAAM,KAAM,CAAA,GAAA,CAAI,IAAK,CAAA,IAAA,CAAK,WAAWA,MAAM,EAAA;AAAA,YACzC,OAAS,EAAA;AAAA,cACP,gBAAgBA,MAAK,CAAA,IAAA;AAAA,cACrB,mBAAqB,EAAA,GAAA;AAAA,aACvB;AAAA,WACD,CAAA,CAAA;AAAA,iBACM,KAAO,EAAA;AACd,UAAAC,iBAAA,CAAU,MAAM,0EAAc,CAAA,CAAA;AAC9B,UAAM,MAAA,KAAA,CAAA;AAAA,SACR;AAAA,OACF;AAEA,MAAA,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,KACZ,SAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AACA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,UAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/base/useUploadFile/index.ts"],"sourcesContent":["import axios from 'axios';\nimport { ref } from 'vue';\nimport { postV1ResourcesUrl } from '@giime/api/resource/controller';\nimport { fileMd5, fileValidType } from '@giime/utils/src/file';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\n\nexport interface UseUploadFileOptions {\n /**领域编码 */\n domainCode?: string;\n /**场景编码 */\n sceneCode?: string;\n /**接受上传的文件类型 */\n accept?: string;\n /**文件权限,默认继承桶 */\n acl?: string;\n}\n\nexport const useUploadFile = () => {\n const isLoading = ref(false);\n const domainCode = useGlobalConfig('domainCode');\n\n const uploadFile = async (file: File, options?: UseUploadFileOptions) => {\n // 领域编码\n const uploadDomainCode = options?.domainCode ?? domainCode.value;\n if (!uploadDomainCode) {\n GmMessage.error('领域编码不能为空');\n throw new Error('领域编码不能为空');\n }\n try {\n isLoading.value = true;\n // 验证文件类型\n if (options?.accept && options?.accept !== '*') {\n const isValidType = fileValidType(file, options.accept);\n if (!isValidType) {\n GmMessage.error(`文件类型不支持,请上传 ${options.accept} 格式的文件`);\n throw new Error(`文件类型不支持,请上传 ${options.accept} 格式的文件`);\n }\n }\n const md5 = await fileMd5(file);\n const acl = options?.acl || 'default';\n const { data } = await postV1ResourcesUrl({\n domainCode: uploadDomainCode, // 领域编码\n sceneCode: options?.sceneCode || 'internal_oss', // 场景编码\n fileName: file.name,\n contentType: file.type,\n md5,\n size: file.size,\n acl, // 文件权限\n });\n\n if (data.data.uploadUrl) {\n try {\n await axios.put(data.data.uploadUrl, file, {\n headers: {\n 'Content-Type': file.type,\n 'x-oss-object-acl ': acl,\n },\n });\n } catch (error) {\n GmMessage.error('推送至存储桶失败,请重试');\n throw error;\n }\n }\n\n return data.data;\n } finally {\n isLoading.value = false;\n }\n };\n return {\n isLoading,\n uploadFile,\n };\n};\n"],"names":["ref","useGlobalConfig","file","GmMessage","fileValidType","fileMd5","postV1ResourcesUrl"],"mappings":";;;;;;;;;;AAkBO,MAAM,gBAAgB,MAAM;AACjC,EAAM,MAAA,SAAA,GAAYA,QAAI,KAAK,CAAA,CAAA;AAC3B,EAAM,MAAA,UAAA,GAAaC,sBAAgB,YAAY,CAAA,CAAA;AAE/C,EAAM,MAAA,UAAA,GAAa,OAAOC,MAAA,EAAY,OAAmC,KAAA;AAEvE,IAAM,MAAA,gBAAA,GAAmB,OAAS,EAAA,UAAA,IAAc,UAAW,CAAA,KAAA,CAAA;AAC3D,IAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,MAAAC,iBAAA,CAAU,MAAM,kDAAU,CAAA,CAAA;AAC1B,MAAM,MAAA,IAAI,MAAM,kDAAU,CAAA,CAAA;AAAA,KAC5B;AACA,IAAI,IAAA;AACF,MAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAElB,MAAA,IAAI,OAAS,EAAA,MAAA,IAAU,OAAS,EAAA,MAAA,KAAW,GAAK,EAAA;AAC9C,QAAA,MAAM,WAAc,GAAAC,kBAAA,CAAcF,MAAM,EAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AACtD,QAAA,IAAI,CAAC,WAAa,EAAA;AAChB,UAAAC,iBAAA,CAAU,KAAM,CAAA,CAAA,mEAAA,EAAe,OAAQ,CAAA,MAAM,CAAQ,+BAAA,CAAA,CAAA,CAAA;AACrD,UAAA,MAAM,IAAI,KAAA,CAAM,CAAe,mEAAA,EAAA,OAAA,CAAQ,MAAM,CAAQ,+BAAA,CAAA,CAAA,CAAA;AAAA,SACvD;AAAA,OACF;AACA,MAAM,MAAA,GAAA,GAAM,MAAME,YAAA,CAAQH,MAAI,CAAA,CAAA;AAC9B,MAAM,MAAA,GAAA,GAAM,SAAS,GAAO,IAAA,SAAA,CAAA;AAC5B,MAAA,MAAM,EAAE,IAAA,EAAS,GAAA,MAAMI,qCAAmB,CAAA;AAAA,QACxC,UAAY,EAAA,gBAAA;AAAA;AAAA,QACZ,SAAA,EAAW,SAAS,SAAa,IAAA,cAAA;AAAA;AAAA,QACjC,UAAUJ,MAAK,CAAA,IAAA;AAAA,QACf,aAAaA,MAAK,CAAA,IAAA;AAAA,QAClB,GAAA;AAAA,QACA,MAAMA,MAAK,CAAA,IAAA;AAAA,QACX,GAAA;AAAA;AAAA,OACD,CAAA,CAAA;AAED,MAAI,IAAA,IAAA,CAAK,KAAK,SAAW,EAAA;AACvB,QAAI,IAAA;AACF,UAAA,MAAM,KAAM,CAAA,GAAA,CAAI,IAAK,CAAA,IAAA,CAAK,WAAWA,MAAM,EAAA;AAAA,YACzC,OAAS,EAAA;AAAA,cACP,gBAAgBA,MAAK,CAAA,IAAA;AAAA,cACrB,mBAAqB,EAAA,GAAA;AAAA,aACvB;AAAA,WACD,CAAA,CAAA;AAAA,iBACM,KAAO,EAAA;AACd,UAAAC,iBAAA,CAAU,MAAM,0EAAc,CAAA,CAAA;AAC9B,UAAM,MAAA,KAAA,CAAA;AAAA,SACR;AAAA,OACF;AAEA,MAAA,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,KACZ,SAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AACA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,UAAA;AAAA,GACF,CAAA;AACF;;;;"}
package/lib/index.css CHANGED
@@ -878,11 +878,29 @@ video {
878
878
  margin: 0;
879
879
  }
880
880
 
881
- .gm-upload-pro-preview-dialog[data-v-2c95bde6] [data-v-2c95bde6] .el-dialog__body {
881
+ .gm-number-interval-single[data-v-4e6f4d6f] {
882
+ border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
883
+ box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
884
+ background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
885
+ }
886
+ .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
887
+ box-shadow: none;
888
+ background: none;
889
+ }
890
+
891
+ .gm-number-interval-close[data-v-4e6f4d6f] {
892
+ display: none;
893
+ color: var(--el-input-icon-color, var(--el-text-color-placeholder));
894
+ }
895
+
896
+ .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
897
+ display: flex;
898
+ }
899
+ .gm-upload-pro-preview-dialog[data-v-83f37e2f] [data-v-83f37e2f] .el-dialog__body {
882
900
  padding: 0;
883
901
  }
884
902
 
885
- .gm-upload-pro-file-picture-card[data-v-2c95bde6] [data-v-2c95bde6] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-2c95bde6] [data-v-2c95bde6] .el-upload--picture-card {
903
+ .gm-upload-pro-file-picture-card[data-v-83f37e2f] [data-v-83f37e2f] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-83f37e2f] [data-v-83f37e2f] .el-upload--picture-card {
886
904
  width: auto;
887
905
  height: auto;
888
906
  }
@@ -924,58 +942,69 @@ video {
924
942
  .gm-upload-pro-file-disabled .el-upload-list__item-status-label {
925
943
  display: none;
926
944
  }
927
- .gm-upload-preview-dialog[data-v-8077ce51] [data-v-8077ce51] .el-dialog__body {
928
- padding: 0;
929
- }
930
-
931
- .gm-upload-file-picture-card[data-v-8077ce51] [data-v-8077ce51] .el-upload-list__item, .gm-upload-file-picture-card[data-v-8077ce51] [data-v-8077ce51] .el-upload--picture-card {
932
- width: auto;
933
- height: auto;
945
+ [data-v-488ca110] .gmSearchForm .el-form-item {
946
+ margin-right: 0;
947
+ margin-bottom: 4px;
934
948
  }
935
- [data-v-2c351ff8] .gmTableNoBorder .el-table__body .el-table__cell {
949
+ [data-v-98c2e804] .gmTableNoBorder .el-table__body .el-table__cell {
936
950
  border-right: none;
937
951
  }
938
952
 
939
- [data-v-2c351ff8] .gmTableNoBorder .el-table__inner-wrapper:before {
953
+ [data-v-98c2e804] .gmTableNoBorder .el-table__inner-wrapper:before {
940
954
  height: 0;
941
955
  }
942
956
 
943
- [data-v-2c351ff8] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
957
+ [data-v-98c2e804] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
944
958
  height: 0;
945
959
  }
946
960
 
947
- [data-v-2c351ff8] .gmTableNoBorder.el-table--border:after {
961
+ [data-v-98c2e804] .gmTableNoBorder.el-table--border:after {
948
962
  height: 0;
949
963
  }
950
964
 
951
- [data-v-2c351ff8] .gmTableNoBorder.el-table--border:before {
965
+ [data-v-98c2e804] .gmTableNoBorder.el-table--border:before {
952
966
  height: 0;
953
967
  }
954
968
 
955
- [data-v-2c351ff8] .gmTableNoBorder .el-table__border-left-patch {
969
+ [data-v-98c2e804] .gmTableNoBorder .el-table__border-left-patch {
956
970
  height: 0;
957
971
  }
958
- [data-v-98c2e804] .gmTableNoBorder .el-table__body .el-table__cell {
972
+ .gm-flex-center[data-v-c17deec9] {
973
+ align-items: center;
974
+ }
975
+
976
+ .gm-flex-justify-between[data-v-c17deec9] {
977
+ justify-content: space-between;
978
+ }
979
+ .gm-upload-preview-dialog[data-v-8077ce51] [data-v-8077ce51] .el-dialog__body {
980
+ padding: 0;
981
+ }
982
+
983
+ .gm-upload-file-picture-card[data-v-8077ce51] [data-v-8077ce51] .el-upload-list__item, .gm-upload-file-picture-card[data-v-8077ce51] [data-v-8077ce51] .el-upload--picture-card {
984
+ width: auto;
985
+ height: auto;
986
+ }
987
+ [data-v-2c351ff8] .gmTableNoBorder .el-table__body .el-table__cell {
959
988
  border-right: none;
960
989
  }
961
990
 
962
- [data-v-98c2e804] .gmTableNoBorder .el-table__inner-wrapper:before {
991
+ [data-v-2c351ff8] .gmTableNoBorder .el-table__inner-wrapper:before {
963
992
  height: 0;
964
993
  }
965
994
 
966
- [data-v-98c2e804] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
995
+ [data-v-2c351ff8] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
967
996
  height: 0;
968
997
  }
969
998
 
970
- [data-v-98c2e804] .gmTableNoBorder.el-table--border:after {
999
+ [data-v-2c351ff8] .gmTableNoBorder.el-table--border:after {
971
1000
  height: 0;
972
1001
  }
973
1002
 
974
- [data-v-98c2e804] .gmTableNoBorder.el-table--border:before {
1003
+ [data-v-2c351ff8] .gmTableNoBorder.el-table--border:before {
975
1004
  height: 0;
976
1005
  }
977
1006
 
978
- [data-v-98c2e804] .gmTableNoBorder .el-table__border-left-patch {
1007
+ [data-v-2c351ff8] .gmTableNoBorder .el-table__border-left-patch {
979
1008
  height: 0;
980
1009
  }
981
1010
  .gm-upload-file {
@@ -1013,35 +1042,6 @@ video {
1013
1042
  .gm-upload-file-disabled .el-upload-list__item-status-label {
1014
1043
  display: none;
1015
1044
  }
1016
- [data-v-488ca110] .gmSearchForm .el-form-item {
1017
- margin-right: 0;
1018
- margin-bottom: 4px;
1019
- }
1020
- .gm-number-interval-single[data-v-4e6f4d6f] {
1021
- border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
1022
- box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
1023
- background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
1024
- }
1025
- .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
1026
- box-shadow: none;
1027
- background: none;
1028
- }
1029
-
1030
- .gm-number-interval-close[data-v-4e6f4d6f] {
1031
- display: none;
1032
- color: var(--el-input-icon-color, var(--el-text-color-placeholder));
1033
- }
1034
-
1035
- .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
1036
- display: flex;
1037
- }
1038
- .gm-flex-center[data-v-c17deec9] {
1039
- align-items: center;
1040
- }
1041
-
1042
- .gm-flex-justify-between[data-v-c17deec9] {
1043
- justify-content: space-between;
1044
- }
1045
1045
  .circular[data-v-d7b04fae] {
1046
1046
  animation: loading-rotate-d7b04fae 2s linear infinite;
1047
1047
  }
@@ -77,7 +77,6 @@ exports.base64ToBlob = file.base64ToBlob;
77
77
  exports.base64ToFile = file.base64ToFile;
78
78
  exports.blobToBase64 = file.blobToBase64;
79
79
  exports.blobToFile = file.blobToFile;
80
- exports.downloadFile = file.downloadFile;
81
80
  exports.fileMd5 = file.fileMd5;
82
81
  exports.fileToBase64 = file.fileToBase64;
83
82
  exports.fileToBlob = file.fileToBlob;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -89,9 +89,3 @@ export declare const getVideoInfo: (url: string) => Promise<{
89
89
  height: number;
90
90
  duration: number;
91
91
  }>;
92
- /**
93
- * 下载文件
94
- * @param url 文件链接
95
- * @param filename 文件名
96
- */
97
- export declare const downloadFile: (url: string, filename?: string) => void;
@@ -105,20 +105,11 @@ const getVideoInfo = (url) => {
105
105
  video.src = url;
106
106
  });
107
107
  };
108
- const downloadFile = (url, filename = "\u4E0B\u8F7D\u6587\u4EF6") => {
109
- fetch(url).then((response) => response.blob()).then((blob) => {
110
- const a = document.createElement("a");
111
- a.href = URL.createObjectURL(blob);
112
- a.download = filename;
113
- a.click();
114
- });
115
- };
116
108
 
117
109
  exports.base64ToBlob = base64ToBlob;
118
110
  exports.base64ToFile = base64ToFile;
119
111
  exports.blobToBase64 = blobToBase64;
120
112
  exports.blobToFile = blobToFile;
121
- exports.downloadFile = downloadFile;
122
113
  exports.fileMd5 = fileMd5;
123
114
  exports.fileToBase64 = fileToBase64;
124
115
  exports.fileToBlob = fileToBlob;
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","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\n/**\n * 下载文件\n * @param url 文件链接\n * @param filename 文件名\n */\nexport const downloadFile = (url: string, filename: string = '下载文件') => {\n fetch(url)\n .then(response => response.blob())\n .then(blob => {\n const a = document.createElement('a');\n a.href = URL.createObjectURL(blob);\n a.download = filename;\n a.click();\n });\n};\n"],"names":["md5"],"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,CAAAA,SAAA,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,EAAA;AAOO,MAAM,YAAe,GAAA,CAAC,GAAa,EAAA,QAAA,GAAmB,0BAAW,KAAA;AACtE,EAAM,KAAA,CAAA,GAAG,EACN,IAAK,CAAA,CAAA,QAAA,KAAY,SAAS,IAAK,EAAC,CAChC,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA;AACZ,IAAM,MAAA,CAAA,GAAI,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AACpC,IAAE,CAAA,CAAA,IAAA,GAAO,GAAI,CAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AACjC,IAAA,CAAA,CAAE,QAAW,GAAA,QAAA,CAAA;AACb,IAAA,CAAA,CAAE,KAAM,EAAA,CAAA;AAAA,GACT,CAAA,CAAA;AACL;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"file.js","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":["md5"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { AxiosInstance, InternalAxiosRequestConfig } from 'axios';
2
- export declare const res401Interceptors: (service: AxiosInstance, config: InternalAxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any>>;
2
+ export declare const res401Interceptors: (service?: AxiosInstance, config?: InternalAxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any>>;
3
3
  export declare const req401Interceptors: () => boolean;
@@ -23,7 +23,10 @@ const res401Interceptors = async (service, config) => {
23
23
  if (!res) {
24
24
  return Promise.reject({ code: 400, data: null, message: "\u767B\u5F55\u5F39\u7A97\u5DF2\u5173\u95ED" });
25
25
  }
26
- return service(config);
26
+ if (service && config) {
27
+ return service(config);
28
+ }
29
+ return Promise.reject("\u672C\u6B21\u8BF7\u6C42\u7ED3\u675F");
27
30
  };
28
31
  const req401Interceptors = () => {
29
32
  const logingStore = index.useLoginStore();
@@ -1 +1 @@
1
- {"version":3,"file":"interceptors.js","sources":["../../../../../../packages/utils/src/http/interceptors.ts"],"sourcesContent":["import Cookie from 'js-cookie';\nimport { ElMessage } from 'element-plus';\nimport { useLoginStore } from '@giime/hooks/store/useLogin';\nimport type { AxiosInstance, InternalAxiosRequestConfig } from 'axios';\n\n// 响应拦截器中 401时 展示登录弹窗\nexport const res401Interceptors = async (service: AxiosInstance, config: InternalAxiosRequestConfig) => {\n const logingStore = useLoginStore();\n Cookie.remove('token', { domain: '.giikin.com' });\n Cookie.remove('token', { domain: '.giikin.cn' });\n Cookie.remove('token');\n logingStore.userToken = undefined;\n logingStore.userId = undefined;\n // Vue.prototype.$hideLoading();\n logingStore.showLogin = true;\n ElMessage({\n message: '请在弹框中重新登录',\n type: 'error',\n duration: 5 * 1000,\n grouping: true,\n showClose: true,\n });\n // 登录成功后重新发起请求\n // 等待登录 或 等待关闭登录弹窗\n const res = await Promise.race([logingStore.onLoginResultPromise(), logingStore.onCloseLoginResultPromise()]);\n if (!res) {\n return Promise.reject({ code: 400, data: null, message: '登录弹窗已关闭' });\n }\n // 重新发送请求\n return service(config);\n // return Promise.resolve({ code: 400, data: null, message: '请重新登录' });\n // return Promise.reject('请重新登录');\n};\n// 请求拦截器中,没有token时 展示登录弹窗\nexport const req401Interceptors = () => {\n const logingStore = useLoginStore();\n // Vue.prototype.$hideLoading();\n ElMessage({\n message: '请在弹框中重新登录',\n type: 'error',\n duration: 5 * 1000,\n grouping: true,\n showClose: true,\n });\n return (logingStore.showLogin = true);\n};\n"],"names":["useLoginStore","Cookie","ElMessage"],"mappings":";;;;;;AAMa,MAAA,kBAAA,GAAqB,OAAO,OAAA,EAAwB,MAAuC,KAAA;AACtG,EAAA,MAAM,cAAcA,mBAAc,EAAA,CAAA;AAClC,EAAAC,OAAA,CAAO,MAAO,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,eAAe,CAAA,CAAA;AAChD,EAAAA,OAAA,CAAO,MAAO,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAA;AAC/C,EAAAA,OAAA,CAAO,OAAO,OAAO,CAAA,CAAA;AACrB,EAAA,WAAA,CAAY,SAAY,GAAA,KAAA,CAAA,CAAA;AACxB,EAAA,WAAA,CAAY,MAAS,GAAA,KAAA,CAAA,CAAA;AAErB,EAAA,WAAA,CAAY,SAAY,GAAA,IAAA,CAAA;AACxB,EAAUC,qBAAA,CAAA;AAAA,IACR,OAAS,EAAA,wDAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,UAAU,CAAI,GAAA,GAAA;AAAA,IACd,QAAU,EAAA,IAAA;AAAA,IACV,SAAW,EAAA,IAAA;AAAA,GACZ,CAAA,CAAA;AAGD,EAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,CAAA,CAAC,WAAY,CAAA,oBAAA,EAAwB,EAAA,WAAA,CAAY,yBAA0B,EAAC,CAAC,CAAA,CAAA;AAC5G,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAO,OAAA,OAAA,CAAQ,OAAO,EAAE,IAAA,EAAM,KAAK,IAAM,EAAA,IAAA,EAAM,OAAS,EAAA,4CAAA,EAAW,CAAA,CAAA;AAAA,GACrE;AAEA,EAAA,OAAO,QAAQ,MAAM,CAAA,CAAA;AAGvB,EAAA;AAEO,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,cAAcF,mBAAc,EAAA,CAAA;AAElC,EAAUE,qBAAA,CAAA;AAAA,IACR,OAAS,EAAA,wDAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,UAAU,CAAI,GAAA,GAAA;AAAA,IACd,QAAU,EAAA,IAAA;AAAA,IACV,SAAW,EAAA,IAAA;AAAA,GACZ,CAAA,CAAA;AACD,EAAA,OAAQ,YAAY,SAAY,GAAA,IAAA,CAAA;AAClC;;;;;"}
1
+ {"version":3,"file":"interceptors.js","sources":["../../../../../../packages/utils/src/http/interceptors.ts"],"sourcesContent":["import Cookie from 'js-cookie';\nimport { ElMessage } from 'element-plus';\nimport { useLoginStore } from '@giime/hooks/store/useLogin';\nimport type { AxiosInstance, InternalAxiosRequestConfig } from 'axios';\n\n// 响应拦截器中 401时 展示登录弹窗\nexport const res401Interceptors = async (service?: AxiosInstance, config?: InternalAxiosRequestConfig) => {\n const logingStore = useLoginStore();\n Cookie.remove('token', { domain: '.giikin.com' });\n Cookie.remove('token', { domain: '.giikin.cn' });\n Cookie.remove('token');\n logingStore.userToken = undefined;\n logingStore.userId = undefined;\n // Vue.prototype.$hideLoading();\n logingStore.showLogin = true;\n ElMessage({\n message: '请在弹框中重新登录',\n type: 'error',\n duration: 5 * 1000,\n grouping: true,\n showClose: true,\n });\n // 登录成功后重新发起请求\n // 等待登录 或 等待关闭登录弹窗\n const res = await Promise.race([logingStore.onLoginResultPromise(), logingStore.onCloseLoginResultPromise()]);\n if (!res) {\n return Promise.reject({ code: 400, data: null, message: '登录弹窗已关闭' });\n }\n // 重新发送请求\n if (service && config) {\n return service(config);\n }\n return Promise.reject('本次请求结束');\n // return Promise.reject('请重新登录');\n};\n// 请求拦截器中,没有token时 展示登录弹窗\nexport const req401Interceptors = () => {\n const logingStore = useLoginStore();\n // Vue.prototype.$hideLoading();\n ElMessage({\n message: '请在弹框中重新登录',\n type: 'error',\n duration: 5 * 1000,\n grouping: true,\n showClose: true,\n });\n return (logingStore.showLogin = true);\n};\n"],"names":["useLoginStore","Cookie","ElMessage"],"mappings":";;;;;;AAMa,MAAA,kBAAA,GAAqB,OAAO,OAAA,EAAyB,MAAwC,KAAA;AACxG,EAAA,MAAM,cAAcA,mBAAc,EAAA,CAAA;AAClC,EAAAC,OAAA,CAAO,MAAO,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,eAAe,CAAA,CAAA;AAChD,EAAAA,OAAA,CAAO,MAAO,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAA;AAC/C,EAAAA,OAAA,CAAO,OAAO,OAAO,CAAA,CAAA;AACrB,EAAA,WAAA,CAAY,SAAY,GAAA,KAAA,CAAA,CAAA;AACxB,EAAA,WAAA,CAAY,MAAS,GAAA,KAAA,CAAA,CAAA;AAErB,EAAA,WAAA,CAAY,SAAY,GAAA,IAAA,CAAA;AACxB,EAAUC,qBAAA,CAAA;AAAA,IACR,OAAS,EAAA,wDAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,UAAU,CAAI,GAAA,GAAA;AAAA,IACd,QAAU,EAAA,IAAA;AAAA,IACV,SAAW,EAAA,IAAA;AAAA,GACZ,CAAA,CAAA;AAGD,EAAM,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,IAAK,CAAA,CAAC,WAAY,CAAA,oBAAA,EAAwB,EAAA,WAAA,CAAY,yBAA0B,EAAC,CAAC,CAAA,CAAA;AAC5G,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAO,OAAA,OAAA,CAAQ,OAAO,EAAE,IAAA,EAAM,KAAK,IAAM,EAAA,IAAA,EAAM,OAAS,EAAA,4CAAA,EAAW,CAAA,CAAA;AAAA,GACrE;AAEA,EAAA,IAAI,WAAW,MAAQ,EAAA;AACrB,IAAA,OAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,GACvB;AACA,EAAO,OAAA,OAAA,CAAQ,OAAO,sCAAQ,CAAA,CAAA;AAEhC,EAAA;AAEO,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,cAAcF,mBAAc,EAAA,CAAA;AAElC,EAAUE,qBAAA,CAAA;AAAA,IACR,OAAS,EAAA,wDAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,UAAU,CAAI,GAAA,GAAA;AAAA,IACd,QAAU,EAAA,IAAA;AAAA,IACV,SAAW,EAAA,IAAA;AAAA,GACZ,CAAA,CAAA;AACD,EAAA,OAAQ,YAAY,SAAY,GAAA,IAAA,CAAA;AAClC;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "0.6.35",
3
+ "version": "0.6.36",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",