giime 0.5.4 → 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 (42) hide show
  1. package/dist/index.css +39 -40
  2. package/es/components/src/base/affix/index.mjs.map +1 -1
  3. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  4. package/es/components/src/business/loginDialog/loginDialog.mjs.map +1 -1
  5. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs +1 -1
  6. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs.map +1 -1
  7. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +1 -1
  8. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -1
  9. package/es/components/src/composite/previewFile/previewFile.mjs +1 -1
  10. package/es/components/src/composite/previewFile/previewFile.mjs.map +1 -1
  11. package/es/constants/key.mjs.map +1 -1
  12. package/es/giime/version.d.ts +1 -1
  13. package/es/giime/version.mjs +1 -1
  14. package/es/giime/version.mjs.map +1 -1
  15. package/es/index.css +39 -40
  16. package/es/utils/src/http/createAxios.mjs.map +1 -1
  17. package/es/utils/src/http/errorMessage.mjs.map +1 -1
  18. package/es/utils/src/tree.mjs.map +1 -1
  19. package/lib/components/src/base/affix/index.js.map +1 -1
  20. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  21. package/lib/components/src/business/loginDialog/loginDialog.js.map +1 -1
  22. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js +1 -1
  23. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js.map +1 -1
  24. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +1 -1
  25. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -1
  26. package/lib/components/src/composite/previewFile/previewFile.js +1 -1
  27. package/lib/components/src/composite/previewFile/previewFile.js.map +1 -1
  28. package/lib/constants/key.js.map +1 -1
  29. package/lib/giime/version.d.ts +1 -1
  30. package/lib/giime/version.js +1 -1
  31. package/lib/giime/version.js.map +1 -1
  32. package/lib/index.css +39 -40
  33. package/lib/utils/src/http/createAxios.js.map +1 -1
  34. package/lib/utils/src/http/errorMessage.js.map +1 -1
  35. package/lib/utils/src/tree.js.map +1 -1
  36. package/package.json +1 -1
  37. package/es/utils/src/alioss.d.ts +0 -32
  38. package/es/utils/src/alioss.mjs +0 -110
  39. package/es/utils/src/alioss.mjs.map +0 -1
  40. package/lib/utils/src/alioss.d.ts +0 -32
  41. package/lib/utils/src/alioss.js +0 -113
  42. package/lib/utils/src/alioss.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewFile.vue2.js","sources":["../../../../../../../packages/components/src/composite/previewFile/PreviewFile.vue"],"sourcesContent":["<template>\r\n <el-dialog v-model=\"dialogVisible\" title=\"预览\" :width=\"width\" top=\"10vh\" append-to-body destroy-on-close>\r\n <div class=\"gm-flex gm-select-none gm-items-center gm-justify-center gm-gap-4\">\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"prev\">\r\n <el-icon :size=\"40\"><ArrowLeftBold /></el-icon>\r\n </div>\r\n <div class=\"gm-flex gm-flex-1 gm-items-center gm-justify-center\" style=\"height: calc(100vh - 300px)\">\r\n <GmFileComponent v-bind=\"fileProps\" />\r\n </div>\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"next\">\r\n <el-icon :size=\"40\"><ArrowRightBold /></el-icon>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { ElMessage } from 'element-plus';\r\nimport { ArrowLeftBold, ArrowRightBold } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport { previewFileProps } from './previewFile';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmPreviewFile',\r\n});\r\n\r\nconst props = defineProps(previewFileProps);\r\nconst dialogVisible = defineModel<boolean>('dialogVisible', { default: false });\r\nconst fileIndex = defineModel<number>('fileIndex', { default: 0 });\r\n\r\nconst files = computed(() => {\r\n let result: Partial<UploadFile>[] = props.fileList;\r\n if (props.fileList && !props.fileList.length && props.file) {\r\n result = [props.file];\r\n }\r\n return result;\r\n});\r\n\r\nconst fileProps = computed(() => {\r\n const file = files.value[fileIndex.value];\r\n return {\r\n file,\r\n controls: props.controls,\r\n oncontextmenu: props.oncontextmenu,\r\n controlslist: props.controlslist,\r\n field: props.field,\r\n url: props.url,\r\n size: props.size,\r\n };\r\n});\r\n\r\nconst prev = () => {\r\n if (fileIndex.value > 0) {\r\n fileIndex.value--;\r\n return;\r\n }\r\n ElMessage.warning('已经是第一张了');\r\n};\r\n\r\nconst next = () => {\r\n if (fileIndex.value < props.fileList.length - 1) {\r\n fileIndex.value++;\r\n return;\r\n }\r\n ElMessage.warning('没有更多了!');\r\n};\r\n</script>\r\n"],"names":["_useModel","computed","ElMessage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAM,MAAA,aAAA,GAAgBA,YAAqB,CAAA,OAAA,EAAA,eAAmC,CAAA,CAAA;AAC9E,IAAM,MAAA,SAAA,GAAYA,YAAoB,CAAA,OAAA,EAAA,WAA2B,CAAA,CAAA;AAEjE,IAAM,MAAA,KAAA,GAAQC,aAAS,MAAM;AAC3B,MAAA,IAAI,SAAgC,KAAM,CAAA,QAAA,CAAA;AAC1C,MAAA,IAAI,MAAM,QAAY,IAAA,CAAC,MAAM,QAAS,CAAA,MAAA,IAAU,MAAM,IAAM,EAAA;AAC1D,QAAS,MAAA,GAAA,CAAC,MAAM,IAAI,CAAA,CAAA;AAAA,OACtB;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,GAAYA,aAAS,MAAM;AAC/B,MAAA,MAAM,IAAO,GAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACxC,MAAO,OAAA;AAAA,QACL,IAAA;AAAA,QACA,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,eAAe,KAAM,CAAA,aAAA;AAAA,QACrB,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,KAAK,KAAM,CAAA,GAAA;AAAA,QACX,MAAM,KAAM,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,OAAO,MAAM;AACjB,MAAI,IAAA,SAAA,CAAU,QAAQ,CAAG,EAAA;AACvB,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAAC,qBAAA,CAAU,QAAQ,4CAAS,CAAA,CAAA;AAAA,KAC7B,CAAA;AAEA,IAAA,MAAM,OAAO,MAAM;AACjB,MAAA,IAAI,SAAU,CAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AAC/C,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAAA,qBAAA,CAAU,QAAQ,sCAAQ,CAAA,CAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PreviewFile.vue2.js","sources":["../../../../../../../packages/components/src/composite/previewFile/PreviewFile.vue"],"sourcesContent":["<template>\r\n <el-dialog v-model=\"dialogVisible\" title=\"预览\" :width=\"width\" top=\"10vh\" append-to-body destroy-on-close>\r\n <div class=\"gm-flex gm-select-none gm-items-center gm-justify-center gm-gap-4\">\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"prev\">\r\n <el-icon :size=\"40\"><ArrowLeftBold /></el-icon>\r\n </div>\r\n <div class=\"gm-flex gm-flex-1 gm-items-center gm-justify-center\" style=\"height: calc(100vh - 240px)\">\r\n <GmFileComponent v-bind=\"fileProps\" />\r\n </div>\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"next\">\r\n <el-icon :size=\"40\"><ArrowRightBold /></el-icon>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { ElMessage } from 'element-plus';\r\nimport { ArrowLeftBold, ArrowRightBold } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport { previewFileProps } from './previewFile';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmPreviewFile',\r\n});\r\n\r\nconst props = defineProps(previewFileProps);\r\nconst dialogVisible = defineModel<boolean>('dialogVisible', { default: false });\r\nconst fileIndex = defineModel<number>('fileIndex', { default: 0 });\r\n\r\nconst files = computed(() => {\r\n let result: Partial<UploadFile>[] = props.fileList;\r\n if (props.fileList && !props.fileList.length && props.file) {\r\n result = [props.file];\r\n }\r\n return result;\r\n});\r\n\r\nconst fileProps = computed(() => {\r\n const file = files.value[fileIndex.value];\r\n return {\r\n file,\r\n controls: props.controls,\r\n oncontextmenu: props.oncontextmenu,\r\n controlslist: props.controlslist,\r\n field: props.field,\r\n url: props.url,\r\n size: props.size,\r\n };\r\n});\r\n\r\nconst prev = () => {\r\n if (fileIndex.value > 0) {\r\n fileIndex.value--;\r\n return;\r\n }\r\n ElMessage.warning('已经是第一张了');\r\n};\r\n\r\nconst next = () => {\r\n if (fileIndex.value < props.fileList.length - 1) {\r\n fileIndex.value++;\r\n return;\r\n }\r\n ElMessage.warning('没有更多了!');\r\n};\r\n</script>\r\n"],"names":["_useModel","computed","ElMessage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAM,MAAA,aAAA,GAAgBA,YAAqB,CAAA,OAAA,EAAA,eAAmC,CAAA,CAAA;AAC9E,IAAM,MAAA,SAAA,GAAYA,YAAoB,CAAA,OAAA,EAAA,WAA2B,CAAA,CAAA;AAEjE,IAAM,MAAA,KAAA,GAAQC,aAAS,MAAM;AAC3B,MAAA,IAAI,SAAgC,KAAM,CAAA,QAAA,CAAA;AAC1C,MAAA,IAAI,MAAM,QAAY,IAAA,CAAC,MAAM,QAAS,CAAA,MAAA,IAAU,MAAM,IAAM,EAAA;AAC1D,QAAS,MAAA,GAAA,CAAC,MAAM,IAAI,CAAA,CAAA;AAAA,OACtB;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,GAAYA,aAAS,MAAM;AAC/B,MAAA,MAAM,IAAO,GAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACxC,MAAO,OAAA;AAAA,QACL,IAAA;AAAA,QACA,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,eAAe,KAAM,CAAA,aAAA;AAAA,QACrB,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,KAAK,KAAM,CAAA,GAAA;AAAA,QACX,MAAM,KAAM,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,OAAO,MAAM;AACjB,MAAI,IAAA,SAAA,CAAU,QAAQ,CAAG,EAAA;AACvB,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAAC,qBAAA,CAAU,QAAQ,4CAAS,CAAA,CAAA;AAAA,KAC7B,CAAA;AAEA,IAAA,MAAM,OAAO,MAAM;AACjB,MAAA,IAAI,SAAU,CAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AAC/C,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAAA,qBAAA,CAAU,QAAQ,sCAAQ,CAAA,CAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -13,7 +13,7 @@ const previewFileProps = {
13
13
  /** 弹层宽度 */
14
14
  width: {
15
15
  type: String,
16
- default: "1200px"
16
+ default: "1000px"
17
17
  }
18
18
  };
19
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"previewFile.js","sources":["../../../../../../../packages/components/src/composite/previewFile/previewFile.ts"],"sourcesContent":["import { fileComponentProps } from '../fileComponent';\r\nimport type { PropType } from 'vue';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\nexport const previewFileProps = {\r\n ...fileComponentProps,\r\n /** 文件列表 */\r\n fileList: {\r\n type: Array as PropType<Partial<UploadFile>[]>,\r\n default: () => [],\r\n },\r\n /** 弹层宽度 */\r\n width: {\r\n type: String,\r\n default: '1200px',\r\n },\r\n};\r\n"],"names":["fileComponentProps"],"mappings":";;;;;AAIO,MAAM,gBAAmB,GAAA;AAAA,EAC9B,GAAGA,gCAAA;AAAA;AAAA,EAEH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,QAAA;AAAA,GACX;AACF;;;;"}
1
+ {"version":3,"file":"previewFile.js","sources":["../../../../../../../packages/components/src/composite/previewFile/previewFile.ts"],"sourcesContent":["import { fileComponentProps } from '../fileComponent';\r\nimport type { PropType } from 'vue';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\nexport const previewFileProps = {\r\n ...fileComponentProps,\r\n /** 文件列表 */\r\n fileList: {\r\n type: Array as PropType<Partial<UploadFile>[]>,\r\n default: () => [],\r\n },\r\n /** 弹层宽度 */\r\n width: {\r\n type: String,\r\n default: '1000px',\r\n },\r\n};\r\n"],"names":["fileComponentProps"],"mappings":";;;;;AAIO,MAAM,gBAAmB,GAAA;AAAA,EAC9B,GAAGA,gCAAA;AAAA;AAAA,EAEH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,QAAA;AAAA,GACX;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"key.js","sources":["../../../../packages/constants/key.ts"],"sourcesContent":["import type { Router } from 'vue-router';\nimport type { loginDialogProps } from '@giime/components/src/business/loginDialog/loginDialog';\nimport type { ExtractPublicPropTypes, InjectionKey, Ref } from 'vue';\nexport interface ConfigProviderContext {\n // 用户端环境变量\n env: ImportMetaEnv;\n // 用户端路由\n router?: Router;\n disabledLoginDialog?: boolean;\n disabledRectSelect?: boolean;\n loginDialog?: ExtractPublicPropTypes<typeof loginDialogProps>;\n /**对消息进行配置 */\n message?: {\n plain?: boolean;\n };\n}\n\nexport const configProviderContextKey: InjectionKey<Ref<ConfigProviderContext>> = Symbol();\n\nexport const INSTALLED_KEY = Symbol('INSTALLED_KEY');\nexport const ImportMetaEnvKey: InjectionKey<ImportMetaEnv> = Symbol('ImportMetaEnvKey');\n"],"names":[],"mappings":";;AAiBO,MAAM,2BAAqE,MAAO,GAAA;AAE5E,MAAA,aAAA,GAAgB,OAAO,eAAe,EAAA;AACtC,MAAA,gBAAA,GAAgD,OAAO,kBAAkB;;;;;;"}
1
+ {"version":3,"file":"key.js","sources":["../../../../packages/constants/key.ts"],"sourcesContent":["import type { Router } from 'vue-router';\r\nimport type { loginDialogProps } from '@giime/components/src/business/loginDialog/loginDialog';\r\nimport type { ExtractPublicPropTypes, InjectionKey, Ref } from 'vue';\r\nexport interface ConfigProviderContext {\r\n // 用户端环境变量\r\n env: ImportMetaEnv;\r\n // 用户端路由\r\n router?: Router;\r\n disabledLoginDialog?: boolean;\r\n disabledRectSelect?: boolean;\r\n loginDialog?: ExtractPublicPropTypes<typeof loginDialogProps>;\r\n /**对消息进行配置 */\r\n message?: {\r\n plain?: boolean;\r\n };\r\n}\r\n\r\nexport const configProviderContextKey: InjectionKey<Ref<ConfigProviderContext>> = Symbol();\r\n\r\nexport const INSTALLED_KEY = Symbol('INSTALLED_KEY');\r\nexport const ImportMetaEnvKey: InjectionKey<ImportMetaEnv> = Symbol('ImportMetaEnvKey');\r\n"],"names":[],"mappings":";;AAiBO,MAAM,2BAAqE,MAAO,GAAA;AAE5E,MAAA,aAAA,GAAgB,OAAO,eAAe,EAAA;AACtC,MAAA,gBAAA,GAAgD,OAAO,kBAAkB;;;;;;"}
@@ -1 +1 @@
1
- export declare const version = "0.5.4";
1
+ export declare const version = "0.5.5";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const version = "0.5.3";
3
+ const version = "0.5.5";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.5.3';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.5.5';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA;;;;"}
package/lib/index.css CHANGED
@@ -801,6 +801,11 @@ video {
801
801
  .gm-group:hover .group-hover\:gm-block {
802
802
  display: block;
803
803
  }
804
+
805
+ .gm-range-number .el-form-item[data-v-11c39847] {
806
+ margin: 0;
807
+ }
808
+
804
809
  .gm-flex-center[data-v-2a79bac9] {
805
810
  align-items: center;
806
811
  }
@@ -808,29 +813,6 @@ video {
808
813
  .gm-flex-justify-between[data-v-2a79bac9] {
809
814
  justify-content: space-between;
810
815
  }
811
- .gm-upload-preview-dialog[data-v-80cd8f61] [data-v-80cd8f61] .el-dialog__body {
812
- padding: 0;
813
- }
814
-
815
- [data-v-80cd8f61] .el-upload-list__item, [data-v-80cd8f61] .el-upload--picture-card {
816
- width: 120px;
817
- height: 120px;
818
- display: flex;
819
- align-items: center;
820
- justify-content: center;
821
- }
822
- .el-upload-file {
823
- line-height: normal;
824
- }
825
- .el-upload-file .el-checkbox {
826
- position: absolute;
827
- left: 10px;
828
- top: 0;
829
- z-index: 9;
830
- }
831
- .el-upload-file .el-upload-list__item-file-name {
832
- line-height: normal;
833
- }
834
816
  .circular[data-v-b391445c] {
835
817
  animation: loading-rotate-b391445c 2s linear infinite;
836
818
  }
@@ -862,15 +844,6 @@ video {
862
844
  stroke-dashoffset: -120px;
863
845
  }
864
846
  }
865
-
866
- .gm-range-number .el-form-item[data-v-11c39847] {
867
- margin: 0;
868
- }
869
-
870
- [data-v-7b6755e2] .gmSearchForm .el-form-item {
871
- margin-right: 0;
872
- margin-bottom: 4px;
873
- }
874
847
  [data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
875
848
  border-right: none;
876
849
  }
@@ -894,15 +867,21 @@ video {
894
867
  [data-v-668dc408] .gmTableNoBorder .el-table__border-left-patch {
895
868
  height: 0;
896
869
  }
897
-
898
- .pagination-container[data-v-19230954] {
899
- background: #fff;
900
- padding-top: 12px;
870
+ .gm-upload-preview-dialog[data-v-80cd8f61] [data-v-80cd8f61] .el-dialog__body {
871
+ padding: 0;
901
872
  }
902
- .pagination-container.hidden[data-v-19230954] {
903
- display: none;
904
- }
905
873
 
874
+ [data-v-80cd8f61] .el-upload-list__item, [data-v-80cd8f61] .el-upload--picture-card {
875
+ width: 120px;
876
+ height: 120px;
877
+ display: flex;
878
+ align-items: center;
879
+ justify-content: center;
880
+ }
881
+ [data-v-7b6755e2] .gmSearchForm .el-form-item {
882
+ margin-right: 0;
883
+ margin-bottom: 4px;
884
+ }
906
885
  .gm-number-interval-single[data-v-47a13fd0] {
907
886
  border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
908
887
  box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
@@ -920,4 +899,24 @@ video {
920
899
 
921
900
  .gm-number-interval-single[data-v-47a13fd0]:hover .gm-number-interval-close[data-v-47a13fd0] {
922
901
  display: flex;
923
- }
902
+ }
903
+ .el-upload-file {
904
+ line-height: normal;
905
+ }
906
+ .el-upload-file .el-checkbox {
907
+ position: absolute;
908
+ left: 10px;
909
+ top: 0;
910
+ z-index: 9;
911
+ }
912
+ .el-upload-file .el-upload-list__item-file-name {
913
+ line-height: normal;
914
+ }
915
+
916
+ .pagination-container[data-v-19230954] {
917
+ background: #fff;
918
+ padding-top: 12px;
919
+ }
920
+ .pagination-container.hidden[data-v-19230954] {
921
+ display: none;
922
+ }
@@ -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":"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"}
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":"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"}
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sources":["../../../../../packages/utils/src/tree.ts"],"sourcesContent":["export interface FindChildrenItem extends Record<string, any> {\n label?: any;\n value?: any;\n children?: FindChildrenItem[];\n}\n/**\n * 获取子节点\n */\nexport function findChildrenItem(\n options: FindChildrenItem[],\n targetValue: any,\n option?: { value?: string; children?: string },\n): FindChildrenItem | undefined {\n const valueField = option?.value || 'value';\n const childrenField = option?.children || 'children';\n\n for (const option of options) {\n if (option[valueField] === targetValue) {\n return option;\n }\n if (option[childrenField]) {\n const found = findChildrenItem(option[childrenField], targetValue);\n\n if (found) {\n return found;\n }\n }\n }\n\n return undefined;\n}\n"],"names":["option"],"mappings":";;AAQgB,SAAA,gBAAA,CACd,OACA,EAAA,WAAA,EACA,MAC8B,EAAA;AAC9B,EAAM,MAAA,UAAA,GAAa,QAAQ,KAAS,IAAA,OAAA,CAAA;AACpC,EAAM,MAAA,aAAA,GAAgB,QAAQ,QAAY,IAAA,UAAA,CAAA;AAE1C,EAAA,KAAA,MAAWA,WAAU,OAAS,EAAA;AAC5B,IAAIA,IAAAA,OAAAA,CAAO,UAAU,CAAA,KAAM,WAAa,EAAA;AACtC,MAAOA,OAAAA,OAAAA,CAAAA;AAAA,KACT;AACA,IAAIA,IAAAA,OAAAA,CAAO,aAAa,CAAG,EAAA;AACzB,MAAA,MAAM,KAAQ,GAAA,gBAAA,CAAiBA,OAAO,CAAA,aAAa,GAAG,WAAW,CAAA,CAAA;AAEjE,MAAA,IAAI,KAAO,EAAA;AACT,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"tree.js","sources":["../../../../../packages/utils/src/tree.ts"],"sourcesContent":["export interface FindChildrenItem extends Record<string, any> {\r\n label?: any;\r\n value?: any;\r\n children?: FindChildrenItem[];\r\n}\r\n/**\r\n * 获取子节点\r\n */\r\nexport function findChildrenItem(\r\n options: FindChildrenItem[],\r\n targetValue: any,\r\n option?: { value?: string; children?: string },\r\n): FindChildrenItem | undefined {\r\n const valueField = option?.value || 'value';\r\n const childrenField = option?.children || 'children';\r\n\r\n for (const option of options) {\r\n if (option[valueField] === targetValue) {\r\n return option;\r\n }\r\n if (option[childrenField]) {\r\n const found = findChildrenItem(option[childrenField], targetValue);\r\n\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n"],"names":["option"],"mappings":";;AAQgB,SAAA,gBAAA,CACd,OACA,EAAA,WAAA,EACA,MAC8B,EAAA;AAC9B,EAAM,MAAA,UAAA,GAAa,QAAQ,KAAS,IAAA,OAAA,CAAA;AACpC,EAAM,MAAA,aAAA,GAAgB,QAAQ,QAAY,IAAA,UAAA,CAAA;AAE1C,EAAA,KAAA,MAAWA,WAAU,OAAS,EAAA;AAC5B,IAAIA,IAAAA,OAAAA,CAAO,UAAU,CAAA,KAAM,WAAa,EAAA;AACtC,MAAOA,OAAAA,OAAAA,CAAAA;AAAA,KACT;AACA,IAAIA,IAAAA,OAAAA,CAAO,aAAa,CAAG,EAAA;AACzB,MAAA,MAAM,KAAQ,GAAA,gBAAA,CAAiBA,OAAO,CAAA,aAAa,GAAG,WAAW,CAAA,CAAA;AAEjE,MAAA,IAAI,KAAO,EAAA;AACT,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",
@@ -1,32 +0,0 @@
1
- /** 上传文件到阿里云 */
2
- export type AliOssParams = {
3
- /** 资源文件 */
4
- file: File;
5
- /** 文件名 */
6
- fileName?: string;
7
- /** 文件存储位置 */
8
- seat?: string;
9
- /** 上传到oss的设置 */
10
- options?: any;
11
- };
12
- /** 返回数据 */
13
- export type AliOssResponse = {
14
- /** 文件地址 */
15
- url: string;
16
- /** 文件名 */
17
- name: string;
18
- /** 文件最后修改时间 */
19
- lastModified: number;
20
- /** 文件md5 */
21
- md5: string;
22
- /** 文件大小 */
23
- size: number;
24
- /** 文件后缀 */
25
- type: string;
26
- /** 文件库是否存在 */
27
- isExist: boolean;
28
- };
29
- /** 检测广告素材是否已存在 */
30
- export declare const getFileExist: (md5Code: string, ext: string) => Promise<string | false>;
31
- /** 上传文件 */
32
- export declare const aliossPutFile: ({ file, fileName, seat, options }: AliOssParams) => Promise<AliOssResponse>;
@@ -1,110 +0,0 @@
1
- import AliOss from 'ali-oss';
2
- import { useAliossStsTokenStore } from '../../hooks/store/useAliossStsToken/index.mjs';
3
- import '../../api/materialApi/index.mjs';
4
- import { GmMessage } from '../../components/src/plugins/message/index.mjs';
5
- import { ts_md5_file } from './crypto/md5.mjs';
6
- import { getAdFileExist } from '../../api/materialApi/cross/getAdFileExist.mjs';
7
-
8
- const getParallelPartSize = (size) => {
9
- const SM = size / 1024 / 1024;
10
- let parallel = 1;
11
- let partSize = 1024 * 1024;
12
- if (SM <= 5) {
13
- partSize *= 5;
14
- }
15
- if (SM > 5 && SM <= 10) {
16
- parallel = 2;
17
- partSize *= 4;
18
- }
19
- if (SM > 10 && SM <= 30) {
20
- parallel = 4;
21
- partSize *= 5;
22
- }
23
- if (SM > 30 && SM <= 50) {
24
- parallel = 6;
25
- partSize *= 6;
26
- }
27
- if (SM > 50) {
28
- parallel = 8;
29
- partSize *= 8;
30
- }
31
- return {
32
- parallel,
33
- partSize
34
- };
35
- };
36
- const getFileExist = async (md5Code, ext) => {
37
- const { data } = await getAdFileExist({ md5Code, ext });
38
- if (data.code !== 0) {
39
- return false;
40
- }
41
- if (!data.data.count) {
42
- return false;
43
- }
44
- return data.data.url;
45
- };
46
- const aliossPutFile = async ({ file, fileName, seat, options }) => {
47
- const md5 = await ts_md5_file(file);
48
- let { name, lastModified, size } = file;
49
- const ext = name.match(/\.(\w+)$/)?.[0] || "";
50
- const url = await getFileExist(md5, ext.replaceAll(".", ""));
51
- name = (fileName || name).slice(0, name.lastIndexOf("."));
52
- if (url) {
53
- return {
54
- name: name + ext,
55
- url,
56
- lastModified,
57
- md5,
58
- size,
59
- type: ext.replaceAll(".", ""),
60
- isExist: true
61
- };
62
- }
63
- const aliossStsTokenStore = useAliossStsTokenStore();
64
- const { AccessKeyId, AccessKeySecret, SecurityToken } = await aliossStsTokenStore.getAliossStsTokenAsync();
65
- const timestr = Date.now();
66
- const aliossPath = `material/${seat}/material-file-${timestr}-${size}-${lastModified}${ext}`;
67
- if (!options) {
68
- const { parallel, partSize } = getParallelPartSize(size);
69
- options = options ?? {
70
- parallel,
71
- partSize,
72
- ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`
73
- };
74
- }
75
- const ossClient = new AliOss({
76
- // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
77
- region: "oss-cn-shenzhen",
78
- // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。
79
- accessKeyId: AccessKeyId,
80
- accessKeySecret: AccessKeySecret,
81
- stsToken: SecurityToken,
82
- // 刷新临时访问凭证的时间间隔,单位为毫秒。
83
- refreshSTSTokenInterval: 3e5,
84
- // 填写Bucket名称。
85
- bucket: "giikin-material"
86
- });
87
- return new Promise((resolve, reject) => {
88
- try {
89
- const upload = options.parallel === 1 ? "put" : "multipartUpload";
90
- ossClient[upload](aliossPath, file, options).then(() => {
91
- const url2 = `https://sucai.giikin.cn/${aliossPath}`;
92
- resolve({
93
- name: name + ext,
94
- url: url2,
95
- lastModified,
96
- md5,
97
- type: ext.replaceAll(".", ""),
98
- size,
99
- isExist: false
100
- });
101
- });
102
- } catch (error) {
103
- GmMessage.error(error || "\u4E0A\u4F20\u5931\u8D25");
104
- reject(error);
105
- }
106
- });
107
- };
108
-
109
- export { aliossPutFile, getFileExist };
110
- //# sourceMappingURL=alioss.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alioss.mjs","sources":["../../../../../packages/utils/src/alioss.ts"],"sourcesContent":["import AliOss from 'ali-oss';\r\nimport { useAliossStsTokenStore } from '@giime/hooks/store/useAliossStsToken';\r\nimport { getAdFileExist } from '@giime/api/materialApi';\r\nimport { GmMessage } from '@giime/components/src/plugins/message';\r\nimport { ts_md5_file } from './crypto/md5';\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: File;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 上传到oss的设置 */\r\n options?: any;\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 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\n/** 文件分片 */\r\nconst getParallelPartSize = (size: number) => {\r\n const SM = size / 1024 / 1024;\r\n let parallel = 1;\r\n let partSize = 1024 * 1024;\r\n if (SM <= 5) {\r\n partSize *= 5;\r\n }\r\n if (SM > 5 && SM <= 10) {\r\n parallel = 2;\r\n partSize *= 4;\r\n }\r\n if (SM > 10 && SM <= 30) {\r\n parallel = 4;\r\n partSize *= 5;\r\n }\r\n if (SM > 30 && SM <= 50) {\r\n parallel = 6;\r\n partSize *= 6;\r\n }\r\n if (SM > 50) {\r\n parallel = 8;\r\n partSize *= 8;\r\n }\r\n\r\n return {\r\n parallel,\r\n partSize,\r\n };\r\n};\r\n\r\n/** 检测广告素材是否已存在 */\r\nexport const getFileExist = async (md5Code: string, ext: string) => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0) {\r\n return false;\r\n }\r\n if (!data.data.count) {\r\n return false;\r\n }\r\n return data.data.url;\r\n};\r\n\r\n/** 上传文件 */\r\nexport const aliossPutFile = async ({ file, fileName, seat, options }: AliOssParams): Promise<AliOssResponse> => {\r\n const md5 = await ts_md5_file(file);\r\n let { name, lastModified, size } = file;\r\n // 截取文件后缀名\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n const url = await getFileExist(md5, ext.replaceAll('.', ''));\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n // 文件已存在直接返回路径\r\n if (url) {\r\n return {\r\n name: name + ext,\r\n url,\r\n lastModified,\r\n md5,\r\n size,\r\n type: ext.replaceAll('.', ''),\r\n isExist: true,\r\n };\r\n }\r\n // 阿里上传权限\r\n const aliossStsTokenStore = useAliossStsTokenStore();\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await aliossStsTokenStore.getAliossStsTokenAsync();\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const aliossPath = `material/${seat}/material-file-${timestr}-${size}-${lastModified}${ext}`;\r\n\r\n // 根据文件大小设置并发数和分片大小\r\n if (!options) {\r\n const { parallel, partSize } = getParallelPartSize(size);\r\n options = options ?? {\r\n parallel,\r\n partSize,\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n };\r\n }\r\n\r\n const ossClient = 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: 'giikin-material',\r\n });\r\n return new Promise((resolve, reject) => {\r\n try {\r\n // 分片数量大于1,使用 multipartUpload 方法\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n ossClient[upload](aliossPath, file, options).then(() => {\r\n const url = `https://sucai.giikin.cn/${aliossPath}`;\r\n resolve({\r\n name: name + ext,\r\n url,\r\n lastModified,\r\n md5,\r\n type: ext.replaceAll('.', ''),\r\n size,\r\n isExist: false,\r\n });\r\n });\r\n } catch (error) {\r\n GmMessage.error(error || '上传失败');\r\n reject(error);\r\n }\r\n });\r\n};\r\n"],"names":["url"],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /** 上传文件到阿里云 */
2
- export type AliOssParams = {
3
- /** 资源文件 */
4
- file: File;
5
- /** 文件名 */
6
- fileName?: string;
7
- /** 文件存储位置 */
8
- seat?: string;
9
- /** 上传到oss的设置 */
10
- options?: any;
11
- };
12
- /** 返回数据 */
13
- export type AliOssResponse = {
14
- /** 文件地址 */
15
- url: string;
16
- /** 文件名 */
17
- name: string;
18
- /** 文件最后修改时间 */
19
- lastModified: number;
20
- /** 文件md5 */
21
- md5: string;
22
- /** 文件大小 */
23
- size: number;
24
- /** 文件后缀 */
25
- type: string;
26
- /** 文件库是否存在 */
27
- isExist: boolean;
28
- };
29
- /** 检测广告素材是否已存在 */
30
- export declare const getFileExist: (md5Code: string, ext: string) => Promise<string | false>;
31
- /** 上传文件 */
32
- export declare const aliossPutFile: ({ file, fileName, seat, options }: AliOssParams) => Promise<AliOssResponse>;
@@ -1,113 +0,0 @@
1
- 'use strict';
2
-
3
- var AliOss = require('ali-oss');
4
- var index = require('../../hooks/store/useAliossStsToken/index.js');
5
- require('../../api/materialApi/index.js');
6
- var index$1 = require('../../components/src/plugins/message/index.js');
7
- var md5 = require('./crypto/md5.js');
8
- var getAdFileExist = require('../../api/materialApi/cross/getAdFileExist.js');
9
-
10
- const getParallelPartSize = (size) => {
11
- const SM = size / 1024 / 1024;
12
- let parallel = 1;
13
- let partSize = 1024 * 1024;
14
- if (SM <= 5) {
15
- partSize *= 5;
16
- }
17
- if (SM > 5 && SM <= 10) {
18
- parallel = 2;
19
- partSize *= 4;
20
- }
21
- if (SM > 10 && SM <= 30) {
22
- parallel = 4;
23
- partSize *= 5;
24
- }
25
- if (SM > 30 && SM <= 50) {
26
- parallel = 6;
27
- partSize *= 6;
28
- }
29
- if (SM > 50) {
30
- parallel = 8;
31
- partSize *= 8;
32
- }
33
- return {
34
- parallel,
35
- partSize
36
- };
37
- };
38
- const getFileExist = async (md5Code, ext) => {
39
- const { data } = await getAdFileExist.getAdFileExist({ md5Code, ext });
40
- if (data.code !== 0) {
41
- return false;
42
- }
43
- if (!data.data.count) {
44
- return false;
45
- }
46
- return data.data.url;
47
- };
48
- const aliossPutFile = async ({ file, fileName, seat, options }) => {
49
- const md5$1 = await md5.ts_md5_file(file);
50
- let { name, lastModified, size } = file;
51
- const ext = name.match(/\.(\w+)$/)?.[0] || "";
52
- const url = await getFileExist(md5$1, ext.replaceAll(".", ""));
53
- name = (fileName || name).slice(0, name.lastIndexOf("."));
54
- if (url) {
55
- return {
56
- name: name + ext,
57
- url,
58
- lastModified,
59
- md5: md5$1,
60
- size,
61
- type: ext.replaceAll(".", ""),
62
- isExist: true
63
- };
64
- }
65
- const aliossStsTokenStore = index.useAliossStsTokenStore();
66
- const { AccessKeyId, AccessKeySecret, SecurityToken } = await aliossStsTokenStore.getAliossStsTokenAsync();
67
- const timestr = Date.now();
68
- const aliossPath = `material/${seat}/material-file-${timestr}-${size}-${lastModified}${ext}`;
69
- if (!options) {
70
- const { parallel, partSize } = getParallelPartSize(size);
71
- options = options ?? {
72
- parallel,
73
- partSize,
74
- ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`
75
- };
76
- }
77
- const ossClient = new AliOss({
78
- // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
79
- region: "oss-cn-shenzhen",
80
- // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。
81
- accessKeyId: AccessKeyId,
82
- accessKeySecret: AccessKeySecret,
83
- stsToken: SecurityToken,
84
- // 刷新临时访问凭证的时间间隔,单位为毫秒。
85
- refreshSTSTokenInterval: 3e5,
86
- // 填写Bucket名称。
87
- bucket: "giikin-material"
88
- });
89
- return new Promise((resolve, reject) => {
90
- try {
91
- const upload = options.parallel === 1 ? "put" : "multipartUpload";
92
- ossClient[upload](aliossPath, file, options).then(() => {
93
- const url2 = `https://sucai.giikin.cn/${aliossPath}`;
94
- resolve({
95
- name: name + ext,
96
- url: url2,
97
- lastModified,
98
- md5: md5$1,
99
- type: ext.replaceAll(".", ""),
100
- size,
101
- isExist: false
102
- });
103
- });
104
- } catch (error) {
105
- index$1.GmMessage.error(error || "\u4E0A\u4F20\u5931\u8D25");
106
- reject(error);
107
- }
108
- });
109
- };
110
-
111
- exports.aliossPutFile = aliossPutFile;
112
- exports.getFileExist = getFileExist;
113
- //# sourceMappingURL=alioss.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alioss.js","sources":["../../../../../packages/utils/src/alioss.ts"],"sourcesContent":["import AliOss from 'ali-oss';\r\nimport { useAliossStsTokenStore } from '@giime/hooks/store/useAliossStsToken';\r\nimport { getAdFileExist } from '@giime/api/materialApi';\r\nimport { GmMessage } from '@giime/components/src/plugins/message';\r\nimport { ts_md5_file } from './crypto/md5';\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: File;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 上传到oss的设置 */\r\n options?: any;\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 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\n/** 文件分片 */\r\nconst getParallelPartSize = (size: number) => {\r\n const SM = size / 1024 / 1024;\r\n let parallel = 1;\r\n let partSize = 1024 * 1024;\r\n if (SM <= 5) {\r\n partSize *= 5;\r\n }\r\n if (SM > 5 && SM <= 10) {\r\n parallel = 2;\r\n partSize *= 4;\r\n }\r\n if (SM > 10 && SM <= 30) {\r\n parallel = 4;\r\n partSize *= 5;\r\n }\r\n if (SM > 30 && SM <= 50) {\r\n parallel = 6;\r\n partSize *= 6;\r\n }\r\n if (SM > 50) {\r\n parallel = 8;\r\n partSize *= 8;\r\n }\r\n\r\n return {\r\n parallel,\r\n partSize,\r\n };\r\n};\r\n\r\n/** 检测广告素材是否已存在 */\r\nexport const getFileExist = async (md5Code: string, ext: string) => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0) {\r\n return false;\r\n }\r\n if (!data.data.count) {\r\n return false;\r\n }\r\n return data.data.url;\r\n};\r\n\r\n/** 上传文件 */\r\nexport const aliossPutFile = async ({ file, fileName, seat, options }: AliOssParams): Promise<AliOssResponse> => {\r\n const md5 = await ts_md5_file(file);\r\n let { name, lastModified, size } = file;\r\n // 截取文件后缀名\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n const url = await getFileExist(md5, ext.replaceAll('.', ''));\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n // 文件已存在直接返回路径\r\n if (url) {\r\n return {\r\n name: name + ext,\r\n url,\r\n lastModified,\r\n md5,\r\n size,\r\n type: ext.replaceAll('.', ''),\r\n isExist: true,\r\n };\r\n }\r\n // 阿里上传权限\r\n const aliossStsTokenStore = useAliossStsTokenStore();\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await aliossStsTokenStore.getAliossStsTokenAsync();\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const aliossPath = `material/${seat}/material-file-${timestr}-${size}-${lastModified}${ext}`;\r\n\r\n // 根据文件大小设置并发数和分片大小\r\n if (!options) {\r\n const { parallel, partSize } = getParallelPartSize(size);\r\n options = options ?? {\r\n parallel,\r\n partSize,\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n };\r\n }\r\n\r\n const ossClient = 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: 'giikin-material',\r\n });\r\n return new Promise((resolve, reject) => {\r\n try {\r\n // 分片数量大于1,使用 multipartUpload 方法\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n ossClient[upload](aliossPath, file, options).then(() => {\r\n const url = `https://sucai.giikin.cn/${aliossPath}`;\r\n resolve({\r\n name: name + ext,\r\n url,\r\n lastModified,\r\n md5,\r\n type: ext.replaceAll('.', ''),\r\n size,\r\n isExist: false,\r\n });\r\n });\r\n } catch (error) {\r\n GmMessage.error(error || '上传失败');\r\n reject(error);\r\n }\r\n });\r\n};\r\n"],"names":["getAdFileExist","md5","ts_md5_file","useAliossStsTokenStore","url","GmMessage"],"mappings":"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"}