giime 0.5.3 → 0.5.5

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 (203) hide show
  1. package/dist/index.css +70 -55
  2. package/es/api/materialApi/cross/postSaveFileResources.d.ts +2 -2
  3. package/es/api/materialApi/cross/postSaveFileResources.mjs +1 -0
  4. package/es/api/materialApi/cross/postSaveFileResources.mjs.map +1 -1
  5. package/es/components/index.mjs +4 -0
  6. package/es/components/index.mjs.map +1 -1
  7. package/es/components/src/base/affix/index.mjs.map +1 -1
  8. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  9. package/es/components/src/business/loginDialog/loginDialog.mjs.map +1 -1
  10. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +259 -90
  11. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.mjs +2 -5
  12. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.mjs.map +1 -1
  13. package/es/components/src/business/uploadMaterial/UploadMaterial.vue2.mjs +25 -162
  14. package/es/components/src/business/uploadMaterial/UploadMaterial.vue2.mjs.map +1 -1
  15. package/es/components/src/business/uploadMaterial/index.d.ts +181 -12
  16. package/es/components/src/business/uploadMaterial/index.mjs +3 -2
  17. package/es/components/src/business/uploadMaterial/index.mjs.map +1 -1
  18. package/es/components/src/business/uploadMaterial/uploadMaterial.d.ts +84 -6
  19. package/es/components/src/business/uploadMaterial/uploadMaterial.mjs +9 -23
  20. package/es/components/src/business/uploadMaterial/uploadMaterial.mjs.map +1 -1
  21. package/es/components/src/composite/fileComponent/FileComponent.vue.d.ts +69 -0
  22. package/es/components/src/composite/fileComponent/FileComponent.vue.mjs +6 -0
  23. package/es/components/src/composite/fileComponent/FileComponent.vue.mjs.map +1 -0
  24. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs +83 -0
  25. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs.map +1 -0
  26. package/es/components/src/composite/fileComponent/assets/image/excel.svg.mjs +4 -0
  27. package/es/components/src/composite/fileComponent/assets/image/excel.svg.mjs.map +1 -0
  28. package/es/components/src/composite/fileComponent/assets/image/pdf.svg.mjs +4 -0
  29. package/es/components/src/composite/fileComponent/assets/image/pdf.svg.mjs.map +1 -0
  30. package/es/components/src/composite/fileComponent/assets/image/ppt.svg.mjs +4 -0
  31. package/es/components/src/composite/fileComponent/assets/image/ppt.svg.mjs.map +1 -0
  32. package/es/components/src/composite/fileComponent/assets/image/psd.svg.mjs +4 -0
  33. package/es/components/src/composite/fileComponent/assets/image/psd.svg.mjs.map +1 -0
  34. package/es/components/src/composite/fileComponent/assets/image/text.svg.mjs +4 -0
  35. package/es/components/src/composite/fileComponent/assets/image/text.svg.mjs.map +1 -0
  36. package/es/components/src/composite/fileComponent/assets/image/unknown.svg.mjs +4 -0
  37. package/es/components/src/composite/fileComponent/assets/image/unknown.svg.mjs.map +1 -0
  38. package/es/components/src/composite/fileComponent/assets/image/word.svg.mjs +4 -0
  39. package/es/components/src/composite/fileComponent/assets/image/word.svg.mjs.map +1 -0
  40. package/es/components/src/composite/fileComponent/assets/image/zip.svg.mjs +4 -0
  41. package/es/components/src/composite/fileComponent/assets/image/zip.svg.mjs.map +1 -0
  42. package/es/components/src/composite/fileComponent/fileComponent.d.ts +41 -0
  43. package/es/components/src/composite/fileComponent/fileComponent.mjs +40 -0
  44. package/es/components/src/composite/fileComponent/fileComponent.mjs.map +1 -0
  45. package/es/components/src/composite/fileComponent/index.d.ts +71 -0
  46. package/es/components/src/composite/fileComponent/index.mjs +10 -0
  47. package/es/components/src/composite/fileComponent/index.mjs.map +1 -0
  48. package/es/components/src/composite/index.d.ts +2 -0
  49. package/es/components/src/composite/index.mjs +4 -0
  50. package/es/components/src/composite/index.mjs.map +1 -1
  51. package/es/components/src/composite/previewFile/PreviewFile.vue.d.ts +97 -0
  52. package/es/components/src/composite/previewFile/PreviewFile.vue.mjs +6 -0
  53. package/es/components/src/composite/previewFile/PreviewFile.vue.mjs.map +1 -0
  54. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +120 -0
  55. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -0
  56. package/es/components/src/composite/previewFile/index.d.ts +99 -0
  57. package/es/components/src/composite/previewFile/index.mjs +10 -0
  58. package/es/components/src/composite/previewFile/index.mjs.map +1 -0
  59. package/es/components/src/composite/previewFile/previewFile.d.ts +42 -0
  60. package/es/components/src/composite/previewFile/previewFile.mjs +19 -0
  61. package/es/components/src/composite/previewFile/previewFile.mjs.map +1 -0
  62. package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +973 -0
  63. package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +9 -0
  64. package/es/components/src/composite/uploadFile/UploadFile.vue.mjs.map +1 -0
  65. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +239 -0
  66. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -0
  67. package/es/components/src/{business/uploadMaterial/UploadMaterial.vue3.mjs → composite/uploadFile/UploadFile.vue3.mjs} +1 -1
  68. package/es/components/src/composite/uploadFile/UploadFile.vue3.mjs.map +1 -0
  69. package/es/components/src/{business/uploadMaterial/UploadMaterial.vue4.mjs → composite/uploadFile/UploadFile.vue4.mjs} +1 -1
  70. package/es/components/src/composite/uploadFile/UploadFile.vue4.mjs.map +1 -0
  71. package/es/components/src/composite/uploadFile/index.d.ts +2486 -0
  72. package/es/components/src/composite/uploadFile/index.mjs +9 -0
  73. package/es/components/src/composite/uploadFile/index.mjs.map +1 -0
  74. package/es/components/src/composite/uploadFile/uploadFile.d.ts +227 -0
  75. package/es/components/src/composite/uploadFile/uploadFile.mjs +92 -0
  76. package/es/components/src/composite/uploadFile/uploadFile.mjs.map +1 -0
  77. package/es/constants/key.mjs.map +1 -1
  78. package/es/giime/index.mjs +5 -1
  79. package/es/giime/index.mjs.map +1 -1
  80. package/es/giime/version.d.ts +1 -1
  81. package/es/giime/version.mjs +1 -1
  82. package/es/giime/version.mjs.map +1 -1
  83. package/es/index.css +70 -55
  84. package/es/utils/index.mjs +1 -1
  85. package/es/utils/src/alioss/aliossPutHook.d.ts +79 -0
  86. package/es/utils/src/alioss/aliossPutHook.mjs +177 -0
  87. package/es/utils/src/alioss/aliossPutHook.mjs.map +1 -0
  88. package/es/utils/src/alioss/aliossToken.d.ts +17 -0
  89. package/es/utils/src/alioss/aliossToken.mjs +51 -0
  90. package/es/utils/src/alioss/aliossToken.mjs.map +1 -0
  91. package/es/utils/src/http/createAxios.mjs.map +1 -1
  92. package/es/utils/src/http/errorMessage.mjs.map +1 -1
  93. package/es/utils/src/is.d.ts +44 -2
  94. package/es/utils/src/is.mjs +29 -1
  95. package/es/utils/src/is.mjs.map +1 -1
  96. package/es/utils/src/tree.mjs.map +1 -1
  97. package/lib/api/materialApi/cross/postSaveFileResources.d.ts +2 -2
  98. package/lib/api/materialApi/cross/postSaveFileResources.js +1 -0
  99. package/lib/api/materialApi/cross/postSaveFileResources.js.map +1 -1
  100. package/lib/components/index.js +22 -14
  101. package/lib/components/index.js.map +1 -1
  102. package/lib/components/src/base/affix/index.js.map +1 -1
  103. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  104. package/lib/components/src/business/loginDialog/loginDialog.js.map +1 -1
  105. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +259 -90
  106. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.js +2 -5
  107. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.js.map +1 -1
  108. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue2.js +24 -161
  109. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue2.js.map +1 -1
  110. package/lib/components/src/business/uploadMaterial/index.d.ts +181 -12
  111. package/lib/components/src/business/uploadMaterial/index.js +3 -2
  112. package/lib/components/src/business/uploadMaterial/index.js.map +1 -1
  113. package/lib/components/src/business/uploadMaterial/uploadMaterial.d.ts +84 -6
  114. package/lib/components/src/business/uploadMaterial/uploadMaterial.js +9 -23
  115. package/lib/components/src/business/uploadMaterial/uploadMaterial.js.map +1 -1
  116. package/lib/components/src/composite/fileComponent/FileComponent.vue.d.ts +69 -0
  117. package/lib/components/src/composite/fileComponent/FileComponent.vue.js +10 -0
  118. package/lib/components/src/composite/fileComponent/FileComponent.vue.js.map +1 -0
  119. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js +87 -0
  120. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js.map +1 -0
  121. package/lib/components/src/composite/fileComponent/assets/image/excel.svg.js +8 -0
  122. package/lib/components/src/composite/fileComponent/assets/image/excel.svg.js.map +1 -0
  123. package/lib/components/src/composite/fileComponent/assets/image/pdf.svg.js +8 -0
  124. package/lib/components/src/composite/fileComponent/assets/image/pdf.svg.js.map +1 -0
  125. package/lib/components/src/composite/fileComponent/assets/image/ppt.svg.js +8 -0
  126. package/lib/components/src/composite/fileComponent/assets/image/ppt.svg.js.map +1 -0
  127. package/lib/components/src/composite/fileComponent/assets/image/psd.svg.js +8 -0
  128. package/lib/components/src/composite/fileComponent/assets/image/psd.svg.js.map +1 -0
  129. package/lib/components/src/composite/fileComponent/assets/image/text.svg.js +8 -0
  130. package/lib/components/src/composite/fileComponent/assets/image/text.svg.js.map +1 -0
  131. package/lib/components/src/composite/fileComponent/assets/image/unknown.svg.js +8 -0
  132. package/lib/components/src/composite/fileComponent/assets/image/unknown.svg.js.map +1 -0
  133. package/lib/components/src/composite/fileComponent/assets/image/word.svg.js +8 -0
  134. package/lib/components/src/composite/fileComponent/assets/image/word.svg.js.map +1 -0
  135. package/lib/components/src/composite/fileComponent/assets/image/zip.svg.js +8 -0
  136. package/lib/components/src/composite/fileComponent/assets/image/zip.svg.js.map +1 -0
  137. package/lib/components/src/composite/fileComponent/fileComponent.d.ts +41 -0
  138. package/lib/components/src/composite/fileComponent/fileComponent.js +42 -0
  139. package/lib/components/src/composite/fileComponent/fileComponent.js.map +1 -0
  140. package/lib/components/src/composite/fileComponent/index.d.ts +71 -0
  141. package/lib/components/src/composite/fileComponent/index.js +16 -0
  142. package/lib/components/src/composite/fileComponent/index.js.map +1 -0
  143. package/lib/components/src/composite/index.d.ts +2 -0
  144. package/lib/components/src/composite/index.js +8 -0
  145. package/lib/components/src/composite/index.js.map +1 -1
  146. package/lib/components/src/composite/previewFile/PreviewFile.vue.d.ts +97 -0
  147. package/lib/components/src/composite/previewFile/PreviewFile.vue.js +10 -0
  148. package/lib/components/src/composite/previewFile/PreviewFile.vue.js.map +1 -0
  149. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +124 -0
  150. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -0
  151. package/lib/components/src/composite/previewFile/index.d.ts +99 -0
  152. package/lib/components/src/composite/previewFile/index.js +16 -0
  153. package/lib/components/src/composite/previewFile/index.js.map +1 -0
  154. package/lib/components/src/composite/previewFile/previewFile.d.ts +42 -0
  155. package/lib/components/src/composite/previewFile/previewFile.js +21 -0
  156. package/lib/components/src/composite/previewFile/previewFile.js.map +1 -0
  157. package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +973 -0
  158. package/lib/components/src/composite/uploadFile/UploadFile.vue.js +13 -0
  159. package/lib/components/src/composite/uploadFile/UploadFile.vue.js.map +1 -0
  160. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +243 -0
  161. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -0
  162. package/lib/components/src/{business/uploadMaterial/UploadMaterial.vue3.js → composite/uploadFile/UploadFile.vue3.js} +1 -1
  163. package/lib/components/src/composite/uploadFile/UploadFile.vue3.js.map +1 -0
  164. package/lib/components/src/{business/uploadMaterial/UploadMaterial.vue4.js → composite/uploadFile/UploadFile.vue4.js} +1 -1
  165. package/lib/components/src/composite/uploadFile/UploadFile.vue4.js.map +1 -0
  166. package/lib/components/src/composite/uploadFile/index.d.ts +2486 -0
  167. package/lib/components/src/composite/uploadFile/index.js +15 -0
  168. package/lib/components/src/composite/uploadFile/index.js.map +1 -0
  169. package/lib/components/src/composite/uploadFile/uploadFile.d.ts +227 -0
  170. package/lib/components/src/composite/uploadFile/uploadFile.js +94 -0
  171. package/lib/components/src/composite/uploadFile/uploadFile.js.map +1 -0
  172. package/lib/constants/key.js.map +1 -1
  173. package/lib/giime/index.js +75 -60
  174. package/lib/giime/index.js.map +1 -1
  175. package/lib/giime/version.d.ts +1 -1
  176. package/lib/giime/version.js +1 -1
  177. package/lib/giime/version.js.map +1 -1
  178. package/lib/index.css +70 -55
  179. package/lib/utils/index.js +7 -0
  180. package/lib/utils/index.js.map +1 -1
  181. package/lib/utils/src/alioss/aliossPutHook.d.ts +79 -0
  182. package/lib/utils/src/alioss/aliossPutHook.js +181 -0
  183. package/lib/utils/src/alioss/aliossPutHook.js.map +1 -0
  184. package/lib/utils/src/alioss/aliossToken.d.ts +17 -0
  185. package/lib/utils/src/alioss/aliossToken.js +55 -0
  186. package/lib/utils/src/alioss/aliossToken.js.map +1 -0
  187. package/lib/utils/src/http/createAxios.js.map +1 -1
  188. package/lib/utils/src/http/errorMessage.js.map +1 -1
  189. package/lib/utils/src/is.d.ts +44 -2
  190. package/lib/utils/src/is.js +35 -0
  191. package/lib/utils/src/is.js.map +1 -1
  192. package/lib/utils/src/tree.js.map +1 -1
  193. package/package.json +1 -1
  194. package/es/components/src/business/uploadMaterial/UploadMaterial.vue3.mjs.map +0 -1
  195. package/es/components/src/business/uploadMaterial/UploadMaterial.vue4.mjs.map +0 -1
  196. package/es/utils/src/alioss.d.ts +0 -32
  197. package/es/utils/src/alioss.mjs +0 -110
  198. package/es/utils/src/alioss.mjs.map +0 -1
  199. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue3.js.map +0 -1
  200. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue4.js.map +0 -1
  201. package/lib/utils/src/alioss.d.ts +0 -32
  202. package/lib/utils/src/alioss.js +0 -113
  203. package/lib/utils/src/alioss.js.map +0 -1
package/lib/index.css CHANGED
@@ -638,6 +638,13 @@ video {
638
638
  .gm-cursor-pointer {
639
639
  cursor: pointer;
640
640
  }
641
+ .gm-select-none {
642
+ -webkit-user-select: none;
643
+ user-select: none;
644
+ }
645
+ .gm-flex-col {
646
+ flex-direction: column;
647
+ }
641
648
  .gm-flex-wrap {
642
649
  flex-wrap: wrap;
643
650
  }
@@ -656,6 +663,9 @@ video {
656
663
  .gm-gap-2 {
657
664
  gap: 0.5rem;
658
665
  }
666
+ .gm-gap-4 {
667
+ gap: 1rem;
668
+ }
659
669
  .gm-overflow-hidden {
660
670
  overflow: hidden;
661
671
  }
@@ -665,6 +675,9 @@ video {
665
675
  .gm-rounded-full {
666
676
  border-radius: 9999px;
667
677
  }
678
+ .gm-rounded-md {
679
+ border-radius: 0.375rem;
680
+ }
668
681
  .gm-border {
669
682
  border-width: 1px;
670
683
  }
@@ -694,6 +707,9 @@ video {
694
707
  .gm-stroke-2 {
695
708
  stroke-width: 2;
696
709
  }
710
+ .gm-p-1 {
711
+ padding: 0.25rem;
712
+ }
697
713
  .gm-p-4 {
698
714
  padding: 1rem;
699
715
  }
@@ -754,10 +770,18 @@ video {
754
770
  --tw-text-opacity: 1;
755
771
  color: rgb(59 130 246 / var(--tw-text-opacity));
756
772
  }
773
+ .gm-text-blue-700 {
774
+ --tw-text-opacity: 1;
775
+ color: rgb(29 78 216 / var(--tw-text-opacity));
776
+ }
757
777
  .gm-text-cyan-500 {
758
778
  --tw-text-opacity: 1;
759
779
  color: rgb(6 182 212 / var(--tw-text-opacity));
760
780
  }
781
+ .gm-text-gray-500 {
782
+ --tw-text-opacity: 1;
783
+ color: rgb(107 114 128 / var(--tw-text-opacity));
784
+ }
761
785
  .gm-text-gray-700 {
762
786
  --tw-text-opacity: 1;
763
787
  color: rgb(55 65 81 / var(--tw-text-opacity));
@@ -782,21 +806,12 @@ video {
782
806
  margin: 0;
783
807
  }
784
808
 
785
- [data-v-7c80c3b6] .el-upload-dragger {
786
- padding: 10px;
787
- border: none;
788
- }
789
-
790
- .gm-upload-preview-dialog[data-v-7c80c3b6] [data-v-7c80c3b6] .el-dialog__body {
791
- padding: 0;
809
+ .gm-flex-center[data-v-2a79bac9] {
810
+ align-items: center;
792
811
  }
793
812
 
794
- [data-v-7c80c3b6] .el-upload-list__item, [data-v-7c80c3b6] .el-upload--picture-card {
795
- width: 120px;
796
- height: 120px;
797
- display: flex;
798
- align-items: center;
799
- justify-content: center;
813
+ .gm-flex-justify-between[data-v-2a79bac9] {
814
+ justify-content: space-between;
800
815
  }
801
816
  .circular[data-v-b391445c] {
802
817
  animation: loading-rotate-b391445c 2s linear infinite;
@@ -829,21 +844,43 @@ video {
829
844
  stroke-dashoffset: -120px;
830
845
  }
831
846
  }
832
- .gm-upload-material .el-overlay-dialog {
847
+ [data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
848
+ border-right: none;
849
+ }
850
+
851
+ [data-v-668dc408] .gmTableNoBorder .el-table__inner-wrapper:before {
852
+ height: 0;
853
+ }
854
+
855
+ [data-v-668dc408] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
856
+ height: 0;
857
+ }
858
+
859
+ [data-v-668dc408] .gmTableNoBorder.el-table--border:after {
860
+ height: 0;
861
+ }
862
+
863
+ [data-v-668dc408] .gmTableNoBorder.el-table--border:before {
864
+ height: 0;
865
+ }
866
+
867
+ [data-v-668dc408] .gmTableNoBorder .el-table__border-left-patch {
868
+ height: 0;
869
+ }
870
+ .gm-upload-preview-dialog[data-v-80cd8f61] [data-v-80cd8f61] .el-dialog__body {
871
+ padding: 0;
872
+ }
873
+
874
+ [data-v-80cd8f61] .el-upload-list__item, [data-v-80cd8f61] .el-upload--picture-card {
875
+ width: 120px;
876
+ height: 120px;
833
877
  display: flex;
834
878
  align-items: center;
835
879
  justify-content: center;
836
880
  }
837
- .gm-upload-material .el-dialog {
838
- margin: 0;
839
- }
840
- .gm-upload-material .el-dialog__body {
841
- max-height: calc(100vh - 100px);
842
- overflow-y: auto;
843
- }
844
- .gm-upload-material .el-dialog__body video,
845
- .gm-upload-material .el-dialog__body img {
846
- max-height: calc(100vh - 150px);
881
+ [data-v-7b6755e2] .gmSearchForm .el-form-item {
882
+ margin-right: 0;
883
+ margin-bottom: 4px;
847
884
  }
848
885
  .gm-number-interval-single[data-v-47a13fd0] {
849
886
  border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
@@ -863,39 +900,17 @@ video {
863
900
  .gm-number-interval-single[data-v-47a13fd0]:hover .gm-number-interval-close[data-v-47a13fd0] {
864
901
  display: flex;
865
902
  }
866
- .gm-flex-center[data-v-2a79bac9] {
867
- align-items: center;
868
- }
869
-
870
- .gm-flex-justify-between[data-v-2a79bac9] {
871
- justify-content: space-between;
903
+ .el-upload-file {
904
+ line-height: normal;
872
905
  }
873
- [data-v-7b6755e2] .gmSearchForm .el-form-item {
874
- margin-right: 0;
875
- margin-bottom: 4px;
876
- }
877
- [data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
878
- border-right: none;
879
- }
880
-
881
- [data-v-668dc408] .gmTableNoBorder .el-table__inner-wrapper:before {
882
- height: 0;
883
- }
884
-
885
- [data-v-668dc408] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
886
- height: 0;
887
- }
888
-
889
- [data-v-668dc408] .gmTableNoBorder.el-table--border:after {
890
- height: 0;
891
- }
892
-
893
- [data-v-668dc408] .gmTableNoBorder.el-table--border:before {
894
- height: 0;
906
+ .el-upload-file .el-checkbox {
907
+ position: absolute;
908
+ left: 10px;
909
+ top: 0;
910
+ z-index: 9;
895
911
  }
896
-
897
- [data-v-668dc408] .gmTableNoBorder .el-table__border-left-patch {
898
- height: 0;
912
+ .el-upload-file .el-upload-list__item-file-name {
913
+ line-height: normal;
899
914
  }
900
915
 
901
916
  .pagination-container[data-v-19230954] {
@@ -31,6 +31,7 @@ exports.isDate = is.isDate;
31
31
  exports.isDecimal = is.isDecimal;
32
32
  exports.isError = is.isError;
33
33
  exports.isEven = is.isEven;
34
+ exports.isExcel = is.isExcel;
34
35
  exports.isHttps = is.isHttps;
35
36
  exports.isImageUrl = is.isImageUrl;
36
37
  exports.isInteger = is.isInteger;
@@ -40,12 +41,18 @@ exports.isNull = is.isNull;
40
41
  exports.isNumber = is.isNumber;
41
42
  exports.isObjectLike = is.isObjectLike;
42
43
  exports.isOdd = is.isOdd;
44
+ exports.isPDF = is.isPDF;
45
+ exports.isPPT = is.isPPT;
46
+ exports.isPSD = is.isPSD;
43
47
  exports.isPlainObject = is.isPlainObject;
44
48
  exports.isPositive = is.isPositive;
45
49
  exports.isString = is.isString;
46
50
  exports.isSymbol = is.isSymbol;
51
+ exports.isText = is.isText;
47
52
  exports.isUndefined = is.isUndefined;
48
53
  exports.isVideoUrl = is.isVideoUrl;
54
+ exports.isWord = is.isWord;
55
+ exports.isZip = is.isZip;
49
56
  exports.hasOwn = objects.hasOwn;
50
57
  exports.keysOf = objects.keysOf;
51
58
  exports.resetObject = objects.resetObject;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,79 @@
1
+ /// <reference types="@vueuse/shared" />
2
+ import { type PostSaveFileResourcesData } from '../../../api/materialApi';
3
+ export type PostSaveFileResponse = PostSaveFileResourcesData;
4
+ export type UploadAliOssFile = File & {
5
+ uid: number;
6
+ };
7
+ /** 上传文件到阿里云 */
8
+ export type AliOssParams = {
9
+ /** 资源文件 */
10
+ file: UploadAliOssFile;
11
+ /** 文件名 */
12
+ fileName?: string;
13
+ /** 文件存储路径 */
14
+ folder?: string;
15
+ /** 文件存储位置 */
16
+ seat?: string;
17
+ /** 并行上传数量 */
18
+ parallel?: number;
19
+ /** 并行分片大小 */
20
+ partSize?: number;
21
+ /** 阿里上传配置 */
22
+ options?: {
23
+ [key: string]: any;
24
+ };
25
+ /** 阿里服务器 Bucket 名称 */
26
+ bucket?: string;
27
+ /** cdn */
28
+ cdn?: string;
29
+ /** 文件是否保存入库 */
30
+ saveStore?: boolean;
31
+ };
32
+ /** 返回数据 */
33
+ export type AliOssResponse = {
34
+ /** 文件地址 */
35
+ url: string;
36
+ /** 文件名 */
37
+ name: string;
38
+ /** 文件唯一标识 */
39
+ uid: number;
40
+ /** 文件最后修改时间 */
41
+ lastModified: number;
42
+ /** 文件md5 */
43
+ md5: string;
44
+ /** 文件大小 */
45
+ size: number;
46
+ /** 文件后缀 */
47
+ type: string;
48
+ /** 文件库是否存在 */
49
+ isExist: boolean;
50
+ };
51
+ export declare const ts_md5_file: (file: File) => Promise<string>;
52
+ /** 文件分片 */
53
+ export declare const getParallelPartSize: (size: number) => {
54
+ parallel: number;
55
+ partSize: number;
56
+ };
57
+ /** 上传 Hook */
58
+ export declare const useAliossHookStore: import("pinia").StoreDefinition<"aliossHook", import("pinia")._UnwrapAll<Pick<{
59
+ aliossResult: import("@vueuse/shared").EventHookOn<AliOssResponse>;
60
+ aliossError: import("@vueuse/shared").EventHookOn<any>;
61
+ saveFileResult: import("@vueuse/shared").EventHookOn<PostSaveFileResourcesData>;
62
+ saveFileError: import("@vueuse/shared").EventHookOn<any>;
63
+ uploadFile: ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => Promise<unknown>;
64
+ postSaveFile: ({ url, md5_code, file_size }: PostSaveFileResourcesData) => Promise<unknown>;
65
+ }, never>>, Pick<{
66
+ aliossResult: import("@vueuse/shared").EventHookOn<AliOssResponse>;
67
+ aliossError: import("@vueuse/shared").EventHookOn<any>;
68
+ saveFileResult: import("@vueuse/shared").EventHookOn<PostSaveFileResourcesData>;
69
+ saveFileError: import("@vueuse/shared").EventHookOn<any>;
70
+ uploadFile: ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => Promise<unknown>;
71
+ postSaveFile: ({ url, md5_code, file_size }: PostSaveFileResourcesData) => Promise<unknown>;
72
+ }, never>, Pick<{
73
+ aliossResult: import("@vueuse/shared").EventHookOn<AliOssResponse>;
74
+ aliossError: import("@vueuse/shared").EventHookOn<any>;
75
+ saveFileResult: import("@vueuse/shared").EventHookOn<PostSaveFileResourcesData>;
76
+ saveFileError: import("@vueuse/shared").EventHookOn<any>;
77
+ uploadFile: ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => Promise<unknown>;
78
+ postSaveFile: ({ url, md5_code, file_size }: PostSaveFileResourcesData) => Promise<unknown>;
79
+ }, "aliossResult" | "aliossError" | "saveFileResult" | "saveFileError" | "uploadFile" | "postSaveFile">>;
@@ -0,0 +1,181 @@
1
+ 'use strict';
2
+
3
+ var pinia = require('pinia');
4
+ var core = require('@vueuse/core');
5
+ var jsMd5 = require('js-md5');
6
+ var AliOss = require('ali-oss');
7
+ require('../../../api/materialApi/index.js');
8
+ var aliossToken = require('./aliossToken.js');
9
+ var getAdFileExist = require('../../../api/materialApi/cross/getAdFileExist.js');
10
+ var postSaveFileResources = require('../../../api/materialApi/cross/postSaveFileResources.js');
11
+
12
+ const ts_md5_file = (file) => {
13
+ return new Promise((resolve) => {
14
+ const reader = new FileReader();
15
+ reader.onload = async function(e) {
16
+ const binary = e.target.result;
17
+ resolve(jsMd5.md5(binary));
18
+ };
19
+ reader.readAsArrayBuffer(file);
20
+ });
21
+ };
22
+ const getParallelPartSize = (size) => {
23
+ const thresholds = [
24
+ {
25
+ max: 5,
26
+ parallel: 1,
27
+ multiplier: 5
28
+ },
29
+ {
30
+ max: 10,
31
+ parallel: 2,
32
+ multiplier: 4
33
+ },
34
+ {
35
+ max: 30,
36
+ parallel: 4,
37
+ multiplier: 5
38
+ },
39
+ {
40
+ max: 50,
41
+ parallel: 6,
42
+ multiplier: 6
43
+ },
44
+ {
45
+ max: Number.POSITIVE_INFINITY,
46
+ parallel: 8,
47
+ multiplier: 8
48
+ }
49
+ ];
50
+ const { parallel, multiplier } = thresholds.find(({ max }) => size <= max) || thresholds[thresholds.length - 1];
51
+ return {
52
+ parallel,
53
+ partSize: multiplier * 1024 * 1024
54
+ };
55
+ };
56
+ const useAliossHookStore = pinia.defineStore("aliossHook", () => {
57
+ const aliossResult = core.createEventHook();
58
+ const aliossError = core.createEventHook();
59
+ const saveFileResult = core.createEventHook();
60
+ const saveFileError = core.createEventHook();
61
+ const getFileExist = async ({
62
+ md5Code,
63
+ ext,
64
+ name,
65
+ size,
66
+ uid,
67
+ lastModified
68
+ }) => {
69
+ return new Promise(async (resolve) => {
70
+ const { data } = await getAdFileExist.getAdFileExist({ md5Code, ext });
71
+ if (data.code !== 0 || data.data.count === 0) {
72
+ return resolve(false);
73
+ }
74
+ const result = {
75
+ name,
76
+ uid,
77
+ lastModified,
78
+ size,
79
+ url: data.data.url,
80
+ md5: md5Code,
81
+ type: ext,
82
+ isExist: true
83
+ };
84
+ resolve(result);
85
+ aliossResult.trigger(result);
86
+ });
87
+ };
88
+ const uploadFile = async ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }) => {
89
+ let { name, uid, lastModified, size } = file;
90
+ const ext = name.match(/\.(\w+)$/)?.[0] || "";
91
+ name = (fileName || name).slice(0, name.lastIndexOf("."));
92
+ const md5Code = await ts_md5_file(file);
93
+ const FileName = name + ext;
94
+ const type = ext.replaceAll(".", "");
95
+ try {
96
+ let result = await getFileExist({ md5Code, ext: type, name: FileName, size, uid, lastModified });
97
+ if (result)
98
+ return result;
99
+ const timestr = Date.now();
100
+ const path = `${folder ?? "material"}/${seat ?? "default"}/file-${timestr}-${md5Code}${ext}`;
101
+ const P = getParallelPartSize(size);
102
+ options = {
103
+ ...P,
104
+ ...{ parallel, partSize },
105
+ ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,
106
+ ...options
107
+ };
108
+ const { AccessKeyId, AccessKeySecret, SecurityToken } = await aliossToken.default().getAliossTokenAsync();
109
+ const client = new AliOss({
110
+ // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
111
+ region: "oss-cn-shenzhen",
112
+ // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。
113
+ accessKeyId: AccessKeyId,
114
+ accessKeySecret: AccessKeySecret,
115
+ stsToken: SecurityToken,
116
+ // 刷新临时访问凭证的时间间隔,单位为毫秒。
117
+ refreshSTSTokenInterval: 3e5,
118
+ // 填写Bucket名称。
119
+ bucket: bucket ?? "giikin-material"
120
+ });
121
+ const upload = options.parallel === 1 ? "put" : "multipartUpload";
122
+ const { res } = await client[upload](path, file, options);
123
+ if (res.status !== 200) {
124
+ aliossError.trigger(res);
125
+ return res;
126
+ }
127
+ cdn = cdn ?? "https://sucai.giikin.cn/";
128
+ const resultUrl = cdn + path;
129
+ result = {
130
+ url: resultUrl,
131
+ name: name + ext,
132
+ md5: md5Code,
133
+ type: ext.replaceAll(".", ""),
134
+ uid,
135
+ lastModified,
136
+ size,
137
+ isExist: false
138
+ };
139
+ if (saveStore) {
140
+ postSaveFile({ url: resultUrl, md5_code: md5Code, file_size: size });
141
+ }
142
+ aliossResult.trigger(result);
143
+ return result;
144
+ } catch (error) {
145
+ aliossError.trigger(error);
146
+ return error;
147
+ }
148
+ };
149
+ const postSaveFile = async ({ url, md5_code, file_size }) => {
150
+ try {
151
+ const { data } = await postSaveFileResources.postSaveFileResources({ fileData: { url, md5_code, file_size } });
152
+ if (data?.code !== 0) {
153
+ saveFileError.trigger(data);
154
+ return data;
155
+ }
156
+ const result = {
157
+ url,
158
+ md5_code,
159
+ file_size
160
+ };
161
+ saveFileResult.trigger(result);
162
+ return result;
163
+ } catch (error) {
164
+ saveFileError.trigger(error);
165
+ return error;
166
+ }
167
+ };
168
+ return {
169
+ aliossResult: aliossResult.on,
170
+ aliossError: aliossError.on,
171
+ saveFileResult: saveFileResult.on,
172
+ saveFileError: saveFileError.on,
173
+ uploadFile,
174
+ postSaveFile
175
+ };
176
+ });
177
+
178
+ exports.getParallelPartSize = getParallelPartSize;
179
+ exports.ts_md5_file = ts_md5_file;
180
+ exports.useAliossHookStore = useAliossHookStore;
181
+ //# sourceMappingURL=aliossPutHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliossPutHook.js","sources":["../../../../../../packages/utils/src/alioss/aliossPutHook.ts"],"sourcesContent":["import { defineStore } from 'pinia';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport { md5 } from 'js-md5';\r\nimport AliOss from 'ali-oss';\r\nimport { type PostSaveFileResourcesData, getAdFileExist, postSaveFileResources } from '@giime/api/materialApi';\r\nimport useAliossTokenStore from './aliossToken';\r\n\r\nexport type PostSaveFileResponse = PostSaveFileResourcesData;\r\nexport type UploadAliOssFile = File & { uid: number };\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: UploadAliOssFile;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储路径 */\r\n folder?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 并行上传数量 */\r\n parallel?: number;\r\n /** 并行分片大小 */\r\n partSize?: number;\r\n /** 阿里上传配置 */\r\n options?: { [key: string]: any };\r\n /** 阿里服务器 Bucket 名称 */\r\n bucket?: string;\r\n /** cdn */\r\n cdn?: string;\r\n /** 文件是否保存入库 */\r\n saveStore?: boolean;\r\n};\r\n\r\n/** 返回数据 */\r\nexport type AliOssResponse = {\r\n /** 文件地址 */\r\n url: string;\r\n /** 文件名 */\r\n name: string;\r\n /** 文件唯一标识 */\r\n uid: number;\r\n /** 文件最后修改时间 */\r\n lastModified: number;\r\n /** 文件md5 */\r\n md5: string;\r\n /** 文件大小 */\r\n size: number;\r\n /** 文件后缀 */\r\n type: string;\r\n /** 文件库是否存在 */\r\n isExist: boolean;\r\n};\r\n\r\nexport const ts_md5_file = (file: File) => {\r\n return new Promise<string>(resolve => {\r\n const reader = new FileReader();\r\n reader.onload = async function (e) {\r\n const binary = (e.target as any).result;\r\n resolve(md5(binary));\r\n };\r\n reader.readAsArrayBuffer(file);\r\n });\r\n};\r\n\r\n/** 文件分片 */\r\nexport const getParallelPartSize = (size: number) => {\r\n const thresholds = [\r\n {\r\n max: 5,\r\n parallel: 1,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 10,\r\n parallel: 2,\r\n multiplier: 4,\r\n },\r\n {\r\n max: 30,\r\n parallel: 4,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 50,\r\n parallel: 6,\r\n multiplier: 6,\r\n },\r\n {\r\n max: Number.POSITIVE_INFINITY,\r\n parallel: 8,\r\n multiplier: 8,\r\n },\r\n ];\r\n const { parallel, multiplier } = thresholds.find(({ max }) => size <= max) || thresholds[thresholds.length - 1];\r\n\r\n return {\r\n parallel,\r\n partSize: multiplier * 1024 * 1024,\r\n };\r\n};\r\n\r\n/** 上传 Hook */\r\nexport const useAliossHookStore = defineStore('aliossHook', () => {\r\n const aliossResult = createEventHook<AliOssResponse>();\r\n const aliossError = createEventHook<any>();\r\n const saveFileResult = createEventHook<PostSaveFileResponse>();\r\n const saveFileError = createEventHook<any>();\r\n\r\n /** 检测广告素材是否已存在 */\r\n const getFileExist = async ({\r\n md5Code,\r\n ext,\r\n name,\r\n size,\r\n uid,\r\n lastModified,\r\n }: {\r\n md5Code: string;\r\n ext: string;\r\n name: string;\r\n size: number;\r\n uid: number;\r\n lastModified: number;\r\n }) => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise<AliOssResponse | false>(async resolve => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0 || data.data.count === 0) {\r\n return resolve(false);\r\n }\r\n const result = {\r\n name,\r\n uid,\r\n lastModified,\r\n size,\r\n url: data.data.url,\r\n md5: md5Code,\r\n type: ext,\r\n isExist: true,\r\n };\r\n resolve(result);\r\n aliossResult.trigger(result);\r\n });\r\n };\r\n\r\n /** 上传文件 */\r\n const uploadFile = async ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => {\r\n let { name, uid, lastModified, size } = file;\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n const md5Code = await ts_md5_file(file);\r\n const FileName = name + ext;\r\n const type = ext.replaceAll('.', '');\r\n\r\n try {\r\n let result = await getFileExist({ md5Code, ext: type, name: FileName, size, uid, lastModified });\r\n if (result) return result;\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const path = `${folder ?? 'material'}/${seat ?? 'default'}/file-${timestr}-${md5Code}${ext}`;\r\n\r\n const P = getParallelPartSize(size);\r\n options = {\r\n ...P,\r\n ...{ parallel, partSize },\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n ...options,\r\n };\r\n\r\n // 阿里云临时上传权限\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await useAliossTokenStore().getAliossTokenAsync();\r\n\r\n const client = new AliOss({\r\n // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。\r\n region: 'oss-cn-shenzhen',\r\n // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。\r\n accessKeyId: AccessKeyId,\r\n accessKeySecret: AccessKeySecret,\r\n stsToken: SecurityToken,\r\n // 刷新临时访问凭证的时间间隔,单位为毫秒。\r\n refreshSTSTokenInterval: 300000,\r\n // 填写Bucket名称。\r\n bucket: bucket ?? 'giikin-material',\r\n });\r\n\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n const { res } = await client[upload](path, file, options);\r\n if (res.status !== 200) {\r\n aliossError.trigger(res);\r\n return res;\r\n }\r\n cdn = cdn ?? 'https://sucai.giikin.cn/';\r\n const resultUrl = cdn + path;\r\n result = {\r\n url: resultUrl,\r\n name: name + ext,\r\n md5: md5Code,\r\n type: ext.replaceAll('.', ''),\r\n uid,\r\n lastModified,\r\n size,\r\n isExist: false,\r\n };\r\n if (saveStore) {\r\n postSaveFile({ url: resultUrl, md5_code: md5Code, file_size: size });\r\n }\r\n aliossResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n aliossError.trigger(error);\r\n return error;\r\n }\r\n };\r\n\r\n /** 文件入库 */\r\n const postSaveFile = async ({ url, md5_code, file_size }: PostSaveFileResourcesData) => {\r\n try {\r\n const { data } = await postSaveFileResources({ fileData: { url, md5_code, file_size } });\r\n if (data?.code !== 0) {\r\n saveFileError.trigger(data);\r\n return data;\r\n }\r\n const result = {\r\n url,\r\n md5_code,\r\n file_size,\r\n };\r\n saveFileResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n saveFileError.trigger(error);\r\n return error;\r\n }\r\n };\r\n return {\r\n aliossResult: aliossResult.on,\r\n aliossError: aliossError.on,\r\n saveFileResult: saveFileResult.on,\r\n saveFileError: saveFileError.on,\r\n uploadFile,\r\n postSaveFile,\r\n };\r\n});\r\n"],"names":["md5","defineStore","createEventHook","getAdFileExist","useAliossTokenStore","postSaveFileResources"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type GetOssAccessTokenResponseData } from '../../../api/materialApi';
2
+ /**
3
+ * @description 素材上传权限
4
+ * @param {*}
5
+ * @return {*}
6
+ **/
7
+ declare const useAliossTokenStore: import("pinia").StoreDefinition<"aliossToken", import("pinia")._UnwrapAll<Pick<{
8
+ isLoading: import("vue").Ref<boolean>;
9
+ getAliossTokenAsync: () => Promise<GetOssAccessTokenResponseData>;
10
+ }, "isLoading">>, Pick<{
11
+ isLoading: import("vue").Ref<boolean>;
12
+ getAliossTokenAsync: () => Promise<GetOssAccessTokenResponseData>;
13
+ }, never>, Pick<{
14
+ isLoading: import("vue").Ref<boolean>;
15
+ getAliossTokenAsync: () => Promise<GetOssAccessTokenResponseData>;
16
+ }, "getAliossTokenAsync">>;
17
+ export default useAliossTokenStore;
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+ var pinia = require('pinia');
7
+ require('../../../api/materialApi/index.js');
8
+ var core = require('@vueuse/core');
9
+ var Cookies = require('js-cookie');
10
+ var getOssAccessToken = require('../../../api/materialApi/cross/getOssAccessToken.js');
11
+
12
+ const useAliossTokenStore = pinia.defineStore("aliossToken", () => {
13
+ const isLoading = vue.ref(false);
14
+ const aliossTokenResult = core.createEventHook();
15
+ const setCookie = (data) => {
16
+ if (!data)
17
+ return;
18
+ const { Expiration } = data;
19
+ const time = new Date(new Date(Expiration ?? 0).getTime() - 1e4);
20
+ Cookies.set("aliossStsToken", JSON.stringify(data), { expires: time });
21
+ };
22
+ const getAliossToken = async () => {
23
+ const aliossStsToken = Cookies.get("aliossStsToken");
24
+ if (aliossStsToken) {
25
+ return JSON.parse(aliossStsToken);
26
+ }
27
+ isLoading.value = true;
28
+ try {
29
+ const { data } = await getOssAccessToken.getOssAccessToken();
30
+ if (data.code === 0) {
31
+ setCookie(data.data);
32
+ aliossTokenResult.trigger(data.data);
33
+ }
34
+ return data.data;
35
+ } finally {
36
+ isLoading.value = false;
37
+ }
38
+ };
39
+ const getAliossTokenAsync = () => {
40
+ return new Promise((resolve) => {
41
+ if (isLoading.value) {
42
+ aliossTokenResult.on((value) => resolve(value));
43
+ } else {
44
+ resolve(getAliossToken());
45
+ }
46
+ });
47
+ };
48
+ return {
49
+ isLoading,
50
+ getAliossTokenAsync
51
+ };
52
+ });
53
+
54
+ exports.default = useAliossTokenStore;
55
+ //# sourceMappingURL=aliossToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliossToken.js","sources":["../../../../../../packages/utils/src/alioss/aliossToken.ts"],"sourcesContent":["import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { type GetOssAccessTokenResponseData, getOssAccessToken } from '@giime/api/materialApi';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport Cookies from 'js-cookie';\r\n\r\n/**\r\n * @description 素材上传权限\r\n * @param {*}\r\n * @return {*}\r\n **/\r\n\r\nconst useAliossTokenStore = defineStore('aliossToken', () => {\r\n const isLoading = ref(false);\r\n const aliossTokenResult = createEventHook<GetOssAccessTokenResponseData>();\r\n\r\n const setCookie = (data: GetOssAccessTokenResponseData) => {\r\n if (!data) return;\r\n const { Expiration } = data;\r\n const time = new Date(new Date(Expiration ?? 0).getTime() - 10000); //-10秒作为缓冲\r\n Cookies.set('aliossStsToken', JSON.stringify(data), { expires: time });\r\n };\r\n\r\n /* 请求临时上传权限 */\r\n const getAliossToken = async () => {\r\n const aliossStsToken = Cookies.get('aliossStsToken');\r\n if (aliossStsToken) {\r\n return JSON.parse(aliossStsToken) as GetOssAccessTokenResponseData;\r\n }\r\n isLoading.value = true;\r\n try {\r\n const { data } = await getOssAccessToken();\r\n if (data.code === 0) {\r\n setCookie(data.data);\r\n aliossTokenResult.trigger(data.data);\r\n }\r\n return data.data;\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n\r\n /* 获取 alioss 临时上传 token*/\r\n const getAliossTokenAsync = () => {\r\n /* 若正在请求请求临时token接口 则其他后进来的等待 */\r\n return new Promise<GetOssAccessTokenResponseData>(resolve => {\r\n if (isLoading.value) {\r\n aliossTokenResult.on(value => resolve(value));\r\n } else {\r\n resolve(getAliossToken());\r\n }\r\n });\r\n };\r\n\r\n return {\r\n isLoading,\r\n getAliossTokenAsync,\r\n };\r\n});\r\n\r\nexport default useAliossTokenStore;\r\n"],"names":["defineStore","ref","createEventHook","getOssAccessToken"],"mappings":";;;;;;;;;;;AAYM,MAAA,mBAAA,GAAsBA,iBAAY,CAAA,aAAA,EAAe,MAAM;AAC3D,EAAM,MAAA,SAAA,GAAYC,QAAI,KAAK,CAAA,CAAA;AAC3B,EAAA,MAAM,oBAAoBC,oBAA+C,EAAA,CAAA;AAEzE,EAAM,MAAA,SAAA,GAAY,CAAC,IAAwC,KAAA;AACzD,IAAA,IAAI,CAAC,IAAA;AAAM,MAAA,OAAA;AACX,IAAM,MAAA,EAAE,YAAe,GAAA,IAAA,CAAA;AACvB,IAAM,MAAA,IAAA,GAAO,IAAI,IAAA,CAAK,IAAI,IAAA,CAAK,cAAc,CAAC,CAAA,CAAE,OAAQ,EAAA,GAAI,GAAK,CAAA,CAAA;AACjE,IAAQ,OAAA,CAAA,GAAA,CAAI,kBAAkB,IAAK,CAAA,SAAA,CAAU,IAAI,CAAG,EAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAA,CAAA;AAAA,GACvE,CAAA;AAGA,EAAA,MAAM,iBAAiB,YAAY;AACjC,IAAM,MAAA,cAAA,GAAiB,OAAQ,CAAA,GAAA,CAAI,gBAAgB,CAAA,CAAA;AACnD,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAO,OAAA,IAAA,CAAK,MAAM,cAAc,CAAA,CAAA;AAAA,KAClC;AACA,IAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,IAAI,IAAA;AACF,MAAA,MAAM,EAAE,IAAA,EAAS,GAAA,MAAMC,mCAAkB,EAAA,CAAA;AACzC,MAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnB,QAAA,SAAA,CAAU,KAAK,IAAI,CAAA,CAAA;AACnB,QAAkB,iBAAA,CAAA,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,OACrC;AACA,MAAA,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,KACZ,SAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AAGA,EAAA,MAAM,sBAAsB,MAAM;AAEhC,IAAO,OAAA,IAAI,QAAuC,CAAW,OAAA,KAAA;AAC3D,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,iBAAA,CAAkB,EAAG,CAAA,CAAA,KAAA,KAAS,OAAQ,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,OACvC,MAAA;AACL,QAAA,OAAA,CAAQ,gBAAgB,CAAA,CAAA;AAAA,OAC1B;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,mBAAA;AAAA,GACF,CAAA;AACF,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAxios.js","sources":["../../../../../../packages/utils/src/http/createAxios.ts"],"sourcesContent":["import axios from 'axios';\nimport { ElMessage } from 'element-plus';\nimport Cookies from 'js-cookie';\nimport { useLoginStore } from '@giime/hooks/store/useLogin';\nimport { isNumber } from '../is';\nimport { res401Interceptors } from './interceptors';\nimport { responseErrorMessage } from './errorMessage';\nimport type { AxiosError, CreateAxiosDefaults, InternalAxiosRequestConfig } from 'axios';\nexport interface CreateAxiosConfig extends CreateAxiosDefaults {\n baseURL: string;\n /**服务器调用成功的code 一般是 0 或 200 */\n successCode: number;\n}\n\nexport const createAxios = (\n config: CreateAxiosConfig,\n options?: {\n requestInterceptors?: (config: InternalAxiosRequestConfig<any>) => any;\n },\n) => {\n const successCode = config.successCode ?? 0;\n const service = axios.create({\n withCredentials: true, // send cookies when cross-domain requests\n timeout: 120_000,\n headers: {\n 'content-type': 'application/json',\n Accept: '*/*',\n },\n ...config,\n });\n\n // 请求拦截器\n service.interceptors.request.use(\n async config => {\n const logingStore = useLoginStore();\n const _token = Cookies.get('token') ?? logingStore.userToken;\n const _user = Cookies.get('sso_user_id') ?? logingStore.userId;\n if (!config.params) {\n config.params = {};\n }\n config.params._token = _token;\n config.params._user = _user;\n config.headers.Authorization = `Bearer ${_token}`;\n await options?.requestInterceptors?.(config);\n return config;\n },\n error => {\n console.error('请求错误', error); // for debug\n return Promise.reject(error);\n },\n );\n // 添加响应拦截器\n service.interceptors.response.use(\n async response => {\n // 对响应数据做点什么\n const res = response.data;\n const msg = (res?.comment ?? res?.message ?? res?.errMsg ?? res?.msg) || '接口请求错误';\n if (!isNumber(res?.code)) {\n return response;\n }\n // 成功情况\n else if (res.code === successCode || res.errCode === successCode) {\n return response;\n }\n // 401\n else if (res.code === 401) {\n const res = await res401Interceptors(service, response.config);\n return res;\n }\n ElMessage({\n message: msg,\n type: 'error',\n grouping: true,\n duration: 5 * 1000,\n showClose: true,\n });\n return Promise.reject(response);\n // return response;\n },\n async (err: AxiosError) => {\n console.error(err.config);\n if (err?.response?.status === 401 && !err.message.includes('timeout')) {\n const res = await res401Interceptors(service, err.config!);\n return res;\n } else {\n // 对响应错误做点什么\n responseErrorMessage(err);\n return Promise.reject(err);\n }\n },\n );\n\n return {\n service,\n };\n};\n"],"names":["config","useLoginStore","isNumber","res","res401Interceptors","ElMessage","responseErrorMessage"],"mappings":";;;;;;;;;;AAca,MAAA,WAAA,GAAc,CACzB,MAAA,EACA,OAGG,KAAA;AACH,EAAM,MAAA,WAAA,GAAc,OAAO,WAAe,IAAA,CAAA,CAAA;AAC1C,EAAM,MAAA,OAAA,GAAU,MAAM,MAAO,CAAA;AAAA,IAC3B,eAAiB,EAAA,IAAA;AAAA;AAAA,IACjB,OAAS,EAAA,IAAA;AAAA,IACT,OAAS,EAAA;AAAA,MACP,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA,KAAA;AAAA,KACV;AAAA,IACA,GAAG,MAAA;AAAA,GACJ,CAAA,CAAA;AAGD,EAAA,OAAA,CAAQ,aAAa,OAAQ,CAAA,GAAA;AAAA,IAC3B,OAAMA,OAAU,KAAA;AACd,MAAA,MAAM,cAAcC,mBAAc,EAAA,CAAA;AAClC,MAAA,MAAM,MAAS,GAAA,OAAA,CAAQ,GAAI,CAAA,OAAO,KAAK,WAAY,CAAA,SAAA,CAAA;AACnD,MAAA,MAAM,KAAQ,GAAA,OAAA,CAAQ,GAAI,CAAA,aAAa,KAAK,WAAY,CAAA,MAAA,CAAA;AACxD,MAAI,IAAA,CAACD,QAAO,MAAQ,EAAA;AAClB,QAAAA,OAAAA,CAAO,SAAS,EAAC,CAAA;AAAA,OACnB;AACA,MAAAA,OAAAA,CAAO,OAAO,MAAS,GAAA,MAAA,CAAA;AACvB,MAAAA,OAAAA,CAAO,OAAO,KAAQ,GAAA,KAAA,CAAA;AACtB,MAAAA,OAAO,CAAA,OAAA,CAAQ,aAAgB,GAAA,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA,CAAA;AAC/C,MAAM,MAAA,OAAA,EAAS,sBAAsBA,OAAM,CAAA,CAAA;AAC3C,MAAOA,OAAAA,OAAAA,CAAAA;AAAA,KACT;AAAA,IACA,CAAS,KAAA,KAAA;AACP,MAAQ,OAAA,CAAA,KAAA,CAAM,4BAAQ,KAAK,CAAA,CAAA;AAC3B,MAAO,OAAA,OAAA,CAAQ,OAAO,KAAK,CAAA,CAAA;AAAA,KAC7B;AAAA,GACF,CAAA;AAEA,EAAA,OAAA,CAAQ,aAAa,QAAS,CAAA,GAAA;AAAA,IAC5B,OAAM,QAAY,KAAA;AAEhB,MAAA,MAAM,MAAM,QAAS,CAAA,IAAA,CAAA;AACrB,MAAM,MAAA,GAAA,GAAA,CAAO,KAAK,OAAW,IAAA,GAAA,EAAK,WAAW,GAAK,EAAA,MAAA,IAAU,KAAK,GAAQ,KAAA,sCAAA,CAAA;AACzE,MAAA,IAAI,CAACE,WAAA,CAAS,GAAK,EAAA,IAAI,CAAG,EAAA;AACxB,QAAO,OAAA,QAAA,CAAA;AAAA,iBAGA,GAAI,CAAA,IAAA,KAAS,WAAe,IAAA,GAAA,CAAI,YAAY,WAAa,EAAA;AAChE,QAAO,OAAA,QAAA,CAAA;AAAA,OACT,MAAA,IAES,GAAI,CAAA,IAAA,KAAS,GAAK,EAAA;AACzB,QAAA,MAAMC,IAAM,GAAA,MAAMC,+BAAmB,CAAA,OAAA,EAAS,SAAS,MAAM,CAAA,CAAA;AAC7D,QAAOD,OAAAA,IAAAA,CAAAA;AAAA,OACT;AACA,MAAUE,qBAAA,CAAA;AAAA,QACR,OAAS,EAAA,GAAA;AAAA,QACT,IAAM,EAAA,OAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,UAAU,CAAI,GAAA,GAAA;AAAA,QACd,SAAW,EAAA,IAAA;AAAA,OACZ,CAAA,CAAA;AACD,MAAO,OAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KAEhC;AAAA,IACA,OAAO,GAAoB,KAAA;AACzB,MAAQ,OAAA,CAAA,KAAA,CAAM,IAAI,MAAM,CAAA,CAAA;AACxB,MAAI,IAAA,GAAA,EAAK,UAAU,MAAW,KAAA,GAAA,IAAO,CAAC,GAAI,CAAA,OAAA,CAAQ,QAAS,CAAA,SAAS,CAAG,EAAA;AACrE,QAAA,MAAM,GAAM,GAAA,MAAMD,+BAAmB,CAAA,OAAA,EAAS,IAAI,MAAO,CAAA,CAAA;AACzD,QAAO,OAAA,GAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAAE,iCAAA,CAAqB,GAAG,CAAA,CAAA;AACxB,QAAO,OAAA,OAAA,CAAQ,OAAO,GAAG,CAAA,CAAA;AAAA,OAC3B;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"createAxios.js","sources":["../../../../../../packages/utils/src/http/createAxios.ts"],"sourcesContent":["import axios from 'axios';\r\nimport { ElMessage } from 'element-plus';\r\nimport Cookies from 'js-cookie';\r\nimport { useLoginStore } from '@giime/hooks/store/useLogin';\r\nimport { isNumber } from '../is';\r\nimport { res401Interceptors } from './interceptors';\r\nimport { responseErrorMessage } from './errorMessage';\r\nimport type { AxiosError, CreateAxiosDefaults, InternalAxiosRequestConfig } from 'axios';\r\nexport interface CreateAxiosConfig extends CreateAxiosDefaults {\r\n baseURL: string;\r\n /**服务器调用成功的code 一般是 0 或 200 */\r\n successCode: number;\r\n}\r\n\r\nexport const createAxios = (\r\n config: CreateAxiosConfig,\r\n options?: {\r\n requestInterceptors?: (config: InternalAxiosRequestConfig<any>) => any;\r\n },\r\n) => {\r\n const successCode = config.successCode ?? 0;\r\n const service = axios.create({\r\n withCredentials: true, // send cookies when cross-domain requests\r\n timeout: 120_000,\r\n headers: {\r\n 'content-type': 'application/json',\r\n Accept: '*/*',\r\n },\r\n ...config,\r\n });\r\n\r\n // 请求拦截器\r\n service.interceptors.request.use(\r\n async config => {\r\n const logingStore = useLoginStore();\r\n const _token = Cookies.get('token') ?? logingStore.userToken;\r\n const _user = Cookies.get('sso_user_id') ?? logingStore.userId;\r\n if (!config.params) {\r\n config.params = {};\r\n }\r\n config.params._token = _token;\r\n config.params._user = _user;\r\n config.headers.Authorization = `Bearer ${_token}`;\r\n await options?.requestInterceptors?.(config);\r\n return config;\r\n },\r\n error => {\r\n console.error('请求错误', error); // for debug\r\n return Promise.reject(error);\r\n },\r\n );\r\n // 添加响应拦截器\r\n service.interceptors.response.use(\r\n async response => {\r\n // 对响应数据做点什么\r\n const res = response.data;\r\n const msg = (res?.comment ?? res?.message ?? res?.errMsg ?? res?.msg) || '接口请求错误';\r\n if (!isNumber(res?.code)) {\r\n return response;\r\n }\r\n // 成功情况\r\n else if (res.code === successCode || res.errCode === successCode) {\r\n return response;\r\n }\r\n // 401\r\n else if (res.code === 401) {\r\n const res = await res401Interceptors(service, response.config);\r\n return res;\r\n }\r\n ElMessage({\r\n message: msg,\r\n type: 'error',\r\n grouping: true,\r\n duration: 5 * 1000,\r\n showClose: true,\r\n });\r\n return Promise.reject(response);\r\n // return response;\r\n },\r\n async (err: AxiosError) => {\r\n console.error(err.config);\r\n if (err?.response?.status === 401 && !err.message.includes('timeout')) {\r\n const res = await res401Interceptors(service, err.config!);\r\n return res;\r\n } else {\r\n // 对响应错误做点什么\r\n responseErrorMessage(err);\r\n return Promise.reject(err);\r\n }\r\n },\r\n );\r\n\r\n return {\r\n service,\r\n };\r\n};\r\n"],"names":["config","useLoginStore","isNumber","res","res401Interceptors","ElMessage","responseErrorMessage"],"mappings":";;;;;;;;;;AAca,MAAA,WAAA,GAAc,CACzB,MAAA,EACA,OAGG,KAAA;AACH,EAAM,MAAA,WAAA,GAAc,OAAO,WAAe,IAAA,CAAA,CAAA;AAC1C,EAAM,MAAA,OAAA,GAAU,MAAM,MAAO,CAAA;AAAA,IAC3B,eAAiB,EAAA,IAAA;AAAA;AAAA,IACjB,OAAS,EAAA,IAAA;AAAA,IACT,OAAS,EAAA;AAAA,MACP,cAAgB,EAAA,kBAAA;AAAA,MAChB,MAAQ,EAAA,KAAA;AAAA,KACV;AAAA,IACA,GAAG,MAAA;AAAA,GACJ,CAAA,CAAA;AAGD,EAAA,OAAA,CAAQ,aAAa,OAAQ,CAAA,GAAA;AAAA,IAC3B,OAAMA,OAAU,KAAA;AACd,MAAA,MAAM,cAAcC,mBAAc,EAAA,CAAA;AAClC,MAAA,MAAM,MAAS,GAAA,OAAA,CAAQ,GAAI,CAAA,OAAO,KAAK,WAAY,CAAA,SAAA,CAAA;AACnD,MAAA,MAAM,KAAQ,GAAA,OAAA,CAAQ,GAAI,CAAA,aAAa,KAAK,WAAY,CAAA,MAAA,CAAA;AACxD,MAAI,IAAA,CAACD,QAAO,MAAQ,EAAA;AAClB,QAAAA,OAAAA,CAAO,SAAS,EAAC,CAAA;AAAA,OACnB;AACA,MAAAA,OAAAA,CAAO,OAAO,MAAS,GAAA,MAAA,CAAA;AACvB,MAAAA,OAAAA,CAAO,OAAO,KAAQ,GAAA,KAAA,CAAA;AACtB,MAAAA,OAAO,CAAA,OAAA,CAAQ,aAAgB,GAAA,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA,CAAA;AAC/C,MAAM,MAAA,OAAA,EAAS,sBAAsBA,OAAM,CAAA,CAAA;AAC3C,MAAOA,OAAAA,OAAAA,CAAAA;AAAA,KACT;AAAA,IACA,CAAS,KAAA,KAAA;AACP,MAAQ,OAAA,CAAA,KAAA,CAAM,4BAAQ,KAAK,CAAA,CAAA;AAC3B,MAAO,OAAA,OAAA,CAAQ,OAAO,KAAK,CAAA,CAAA;AAAA,KAC7B;AAAA,GACF,CAAA;AAEA,EAAA,OAAA,CAAQ,aAAa,QAAS,CAAA,GAAA;AAAA,IAC5B,OAAM,QAAY,KAAA;AAEhB,MAAA,MAAM,MAAM,QAAS,CAAA,IAAA,CAAA;AACrB,MAAM,MAAA,GAAA,GAAA,CAAO,KAAK,OAAW,IAAA,GAAA,EAAK,WAAW,GAAK,EAAA,MAAA,IAAU,KAAK,GAAQ,KAAA,sCAAA,CAAA;AACzE,MAAA,IAAI,CAACE,WAAA,CAAS,GAAK,EAAA,IAAI,CAAG,EAAA;AACxB,QAAO,OAAA,QAAA,CAAA;AAAA,iBAGA,GAAI,CAAA,IAAA,KAAS,WAAe,IAAA,GAAA,CAAI,YAAY,WAAa,EAAA;AAChE,QAAO,OAAA,QAAA,CAAA;AAAA,OACT,MAAA,IAES,GAAI,CAAA,IAAA,KAAS,GAAK,EAAA;AACzB,QAAA,MAAMC,IAAM,GAAA,MAAMC,+BAAmB,CAAA,OAAA,EAAS,SAAS,MAAM,CAAA,CAAA;AAC7D,QAAOD,OAAAA,IAAAA,CAAAA;AAAA,OACT;AACA,MAAUE,qBAAA,CAAA;AAAA,QACR,OAAS,EAAA,GAAA;AAAA,QACT,IAAM,EAAA,OAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,UAAU,CAAI,GAAA,GAAA;AAAA,QACd,SAAW,EAAA,IAAA;AAAA,OACZ,CAAA,CAAA;AACD,MAAO,OAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KAEhC;AAAA,IACA,OAAO,GAAoB,KAAA;AACzB,MAAQ,OAAA,CAAA,KAAA,CAAM,IAAI,MAAM,CAAA,CAAA;AACxB,MAAI,IAAA,GAAA,EAAK,UAAU,MAAW,KAAA,GAAA,IAAO,CAAC,GAAI,CAAA,OAAA,CAAQ,QAAS,CAAA,SAAS,CAAG,EAAA;AACrE,QAAA,MAAM,GAAM,GAAA,MAAMD,+BAAmB,CAAA,OAAA,EAAS,IAAI,MAAO,CAAA,CAAA;AACzD,QAAO,OAAA,GAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAAE,iCAAA,CAAqB,GAAG,CAAA,CAAA;AACxB,QAAO,OAAA,OAAA,CAAQ,OAAO,GAAG,CAAA,CAAA;AAAA,OAC3B;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errorMessage.js","sources":["../../../../../../packages/utils/src/http/errorMessage.ts"],"sourcesContent":["import { ElMessage, type MessageOptions } from 'element-plus';\nimport type { AxiosError } from 'axios';\n\n/**\n * 统一错误弹窗\n */\nexport const errorMessage = (options: MessageOptions) => {\n return ElMessage({\n type: 'error',\n duration: 5 * 1000,\n showClose: true,\n grouping: true,\n ...options,\n message: options?.message || '未知错误',\n });\n};\n// 抛错时 error\nexport const responseErrorMessage = (error: AxiosError<any, any>, options?: MessageOptions) => {\n if (error.config?.disableMessage) {\n return;\n }\n if (error.code === 'ERR_CANCELED') {\n return Promise.reject(error);\n }\n const serviceMessage =\n (error?.response?.data?.message || error?.response?.data?.comment || error?.response?.data?.msg || error?.response?.data?.errMsg) ?? '';\n switch (error.response?.status) {\n case 400:\n return errorMessage({\n message: `400-客户端错误,请求失败。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n case 403:\n return errorMessage({\n message: `403-无权访问。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n case 404:\n return errorMessage({\n message: `404-无效的请求。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n case 413:\n return errorMessage({\n message: `413-请求内容过大。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n case 500:\n return errorMessage({\n message: `500-服务器内部错误o(╥﹏╥)o。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n case 502:\n return errorMessage({\n message: `502-网关错误。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n case 504:\n return errorMessage({\n message: `504-网关超时。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n\n default:\n break;\n }\n // console.error('error', error);\n // console.error('error.message', error.message);\n // console.error('error.status', error.status);\n // console.error('error.response', error.response);\n // console.error('error.code', error.code);\n // console.error('error.name', error.name);\n // 对响应错误做点什么\n if (error.message.includes('timeout')) {\n errorMessage({\n duration: 10 * 1000,\n message: `请求超时。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n } else if (error.message.includes('Network Error')) {\n errorMessage({\n duration: 10 * 1000,\n message: `网络错误。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n } else {\n errorMessage({\n message: `${error.message}。${serviceMessage}\n 接口地址:${error.config?.url ?? ''}`,\n ...options,\n });\n }\n};\n"],"names":["ElMessage"],"mappings":"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"}
1
+ {"version":3,"file":"errorMessage.js","sources":["../../../../../../packages/utils/src/http/errorMessage.ts"],"sourcesContent":["import { ElMessage, type MessageOptions } from 'element-plus';\r\nimport type { AxiosError } from 'axios';\r\n\r\n/**\r\n * 统一错误弹窗\r\n */\r\nexport const errorMessage = (options: MessageOptions) => {\r\n return ElMessage({\r\n type: 'error',\r\n duration: 5 * 1000,\r\n showClose: true,\r\n grouping: true,\r\n ...options,\r\n message: options?.message || '未知错误',\r\n });\r\n};\r\n// 抛错时 error\r\nexport const responseErrorMessage = (error: AxiosError<any, any>, options?: MessageOptions) => {\r\n if (error.config?.disableMessage) {\r\n return;\r\n }\r\n if (error.code === 'ERR_CANCELED') {\r\n return Promise.reject(error);\r\n }\r\n const serviceMessage =\r\n (error?.response?.data?.message || error?.response?.data?.comment || error?.response?.data?.msg || error?.response?.data?.errMsg) ?? '';\r\n switch (error.response?.status) {\r\n case 400:\r\n return errorMessage({\r\n message: `400-客户端错误,请求失败。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n case 403:\r\n return errorMessage({\r\n message: `403-无权访问。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n case 404:\r\n return errorMessage({\r\n message: `404-无效的请求。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n case 413:\r\n return errorMessage({\r\n message: `413-请求内容过大。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n case 500:\r\n return errorMessage({\r\n message: `500-服务器内部错误o(╥﹏╥)o。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n case 502:\r\n return errorMessage({\r\n message: `502-网关错误。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n case 504:\r\n return errorMessage({\r\n message: `504-网关超时。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n\r\n default:\r\n break;\r\n }\r\n // console.error('error', error);\r\n // console.error('error.message', error.message);\r\n // console.error('error.status', error.status);\r\n // console.error('error.response', error.response);\r\n // console.error('error.code', error.code);\r\n // console.error('error.name', error.name);\r\n // 对响应错误做点什么\r\n if (error.message.includes('timeout')) {\r\n errorMessage({\r\n duration: 10 * 1000,\r\n message: `请求超时。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n } else if (error.message.includes('Network Error')) {\r\n errorMessage({\r\n duration: 10 * 1000,\r\n message: `网络错误。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n } else {\r\n errorMessage({\r\n message: `${error.message}。${serviceMessage}\r\n 接口地址:${error.config?.url ?? ''}`,\r\n ...options,\r\n });\r\n }\r\n};\r\n"],"names":["ElMessage"],"mappings":"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"}