giime 1.0.0 → 1.0.2-snapshot.1

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 (40) hide show
  1. package/dist/index.css +113 -113
  2. package/es/api/utils/createModes.mjs +1 -1
  3. package/es/api/utils/index.mjs +1 -1
  4. package/es/api/utils/resetAxiosBaseUrl.mjs +4 -3
  5. package/es/api/utils/resetAxiosBaseUrl.mjs.map +1 -1
  6. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +8 -6
  7. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  8. package/es/components/src/composite/searchForm/SearchForm.vue.mjs +1 -1
  9. package/es/components/src/composite/searchForm/SearchForm.vue2.mjs +23 -3
  10. package/es/components/src/composite/searchForm/SearchForm.vue2.mjs.map +1 -1
  11. package/es/giime/version.d.ts +1 -1
  12. package/es/giime/version.mjs +1 -1
  13. package/es/giime/version.mjs.map +1 -1
  14. package/es/index.css +113 -113
  15. package/es/utils/src/http/createModes.d.ts +10 -2
  16. package/es/utils/src/http/createModes.mjs +22 -3
  17. package/es/utils/src/http/createModes.mjs.map +1 -1
  18. package/es/utils/src/tenant.mjs +4 -3
  19. package/es/utils/src/tenant.mjs.map +1 -1
  20. package/lib/api/utils/createModes.js +1 -0
  21. package/lib/api/utils/createModes.js.map +1 -1
  22. package/lib/api/utils/index.js +1 -0
  23. package/lib/api/utils/index.js.map +1 -1
  24. package/lib/api/utils/resetAxiosBaseUrl.js +3 -2
  25. package/lib/api/utils/resetAxiosBaseUrl.js.map +1 -1
  26. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +7 -5
  27. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  28. package/lib/components/src/composite/searchForm/SearchForm.vue.js +1 -1
  29. package/lib/components/src/composite/searchForm/SearchForm.vue2.js +22 -2
  30. package/lib/components/src/composite/searchForm/SearchForm.vue2.js.map +1 -1
  31. package/lib/giime/version.d.ts +1 -1
  32. package/lib/giime/version.js +1 -1
  33. package/lib/giime/version.js.map +1 -1
  34. package/lib/index.css +113 -113
  35. package/lib/utils/src/http/createModes.d.ts +10 -2
  36. package/lib/utils/src/http/createModes.js +22 -2
  37. package/lib/utils/src/http/createModes.js.map +1 -1
  38. package/lib/utils/src/tenant.js +3 -2
  39. package/lib/utils/src/tenant.js.map +1 -1
  40. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SearchForm.vue2.js","sources":["../../../../../../../packages/components/src/composite/searchForm/SearchForm.vue"],"sourcesContent":["<script lang=\"ts\">\nconst itemGap = 8\n</script>\n<template>\n <div ref=\"queryDivRef\" class=\"gm-mb-5\">\n <gm-form v-show=\"showSearch\" ref=\"queryRef\" :model=\"queryParams\" :inline=\"true\" class=\"gmSearchForm\">\n <div :class=\"showMore ? '' : 'gm-h-[36px] gm-overflow-hidden'\">\n <div class=\"gm-relative gm-grid gm-w-full\" :style=\"{ gridTemplateColumns: `repeat(${colsCount}, minmax(0, 1fr))`, gap: itemGap + 'px' }\">\n <template v-for=\"(item, index) in optionsList\" :key=\"index\">\n <component :is=\"item.component\" v-bind=\"item.props\" v-model=\"queryParams[item.props.prop]\" />\n </template>\n <slot />\n <gm-form-item v-show=\"!props.hideActionButtons\" :style=\"searchButtonItemStyle\">\n <div class=\"gm-flex gm-w-full\" :class=\"notShowShowMore ? '' : 'gm-justify-end'\">\n <gm-button type=\"primary\" :icon=\"Search\" class=\"\" @click=\"handleQuery\">搜索</gm-button>\n <gm-button :icon=\"Refresh\" @click=\"resetQuery\">重置</gm-button>\n <gm-button v-show=\"!notShowShowMore\" type=\"primary\" text @click=\"handleShowMoreChange\">\n {{ showMore ? '缩起' : '展开' }} <gm-icon class=\"el-icon--right\" :class=\"showMore ? 'gm-rotate-180' : ''\"><ArrowDown /></gm-icon>\n </gm-button>\n </div>\n </gm-form-item>\n <div ref=\"visibilityMarkRef\" class=\"gm-absolute gm-bottom-3 gm-right-0 -gm-z-10 gm-h-1 gm-w-1\" />\n </div>\n </div>\n </gm-form>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, inject, nextTick, provide, ref } from 'vue';\nimport { useElementSize } from '@vueuse/core';\nimport { TableCtxKey } from '@giime/constants/table';\nimport { ArrowDown, Refresh, Search } from '@element-plus/icons-vue';\nimport { searchFormEmits, searchFormItemList, searchFormProps } from './searchForm';\nimport { queryParamsKey, searchFormHandleQueryKey } from './constants';\nimport type { CSSProperties } from 'vue';\nimport type { FormInstance } from '../../base/form';\ndefineOptions({\n name: 'GmSearchForm',\n});\nconst tableCtx = inject(TableCtxKey, {});\n\nconst showSearch = defineModel<boolean>('showSearch', { default: true });\n\nconst queryParams = defineModel<Record<string, any>>('queryParams', { required: true });\n\nprovide(queryParamsKey, queryParams);\n\nconst props = defineProps(searchFormProps);\nconst emit = defineEmits(searchFormEmits);\n\nconst queryDivRef = ref<HTMLDivElement>();\nconst visibilityMarkRef = ref<HTMLDivElement>();\n// const markIsVisibility = useElementVisibility(visibilityMarkRef);\n\nconst { width: queryDivWidth, height: queryDivHeight } = useElementSize(queryDivRef);\n// 列个数\nconst colsCount = computed(() => Math.floor(queryDivWidth.value / 269));\nconst showMore = ref(props.defaultShowMore);\n// 当 showMore展开 且高度为60时,不显示展开按钮\nconst notShowShowMore = computed(() => showMore.value === true && queryDivHeight.value <= 70);\n\n/**搜索重置按钮组样式 */\nconst searchButtonItemStyle = computed<CSSProperties>(() => {\n if (notShowShowMore.value) {\n return {};\n }\n return {\n gridColumn: colsCount.value,\n gridRow: showMore.value ? undefined : 1,\n };\n});\nconst handleShowMoreChange = async () => {\n showMore.value = !showMore.value;\n // 手动触发 scroll 事件\n const scrollEvent = new Event('resize');\n await nextTick();\n // 手动触发事件\n window.dispatchEvent(scrollEvent);\n};\n\n// 通过json渲染组件\nconst optionsList = computed(() => {\n return props.options.map(it => {\n const findComponent = searchFormItemList.find(item => item.type === it.type);\n if (findComponent) {\n it.component = findComponent.component;\n }\n return it;\n });\n});\n\nconst queryRef = ref<FormInstance>();\n// 上下文添加queryRef\ntableCtx.queryRef = queryRef;\nconst handleQuery = (...args: any[]) => {\n emit('handleQuery', ...args);\n tableCtx?.tableRef?.value?.scrollTo({ top: 0, behavior: 'smooth' });\n tableCtx.tableV2Ref?.value?.scrollTo({ scrollLeft: 0, scrollTop: 0 });\n};\nprovide(searchFormHandleQueryKey, handleQuery);\n\nconst resetQuery = () => {\n queryRef.value?.resetFields();\n emit('resetQuery');\n tableCtx?.tableRef?.value?.scrollTo({ top: 0, behavior: 'smooth' });\n tableCtx.tableV2Ref?.value?.scrollTo({ scrollLeft: 0, scrollTop: 0 });\n};\n\ndefineExpose({\n // queryRef,\n handleQuery,\n resetQuery,\n});\n</script>\n<style lang=\"scss\" scoped>\n:deep(.gmSearchForm .el-form-item) {\n margin-right: 0;\n margin-bottom: 4px;\n}\n</style>\n"],"names":["inject","TableCtxKey","_useModel","provide","queryParamsKey","ref","useElementSize","computed","nextTick","searchFormItemList","searchFormHandleQueryKey"],"mappings":"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"}
1
+ {"version":3,"file":"SearchForm.vue2.js","sources":["../../../../../../../packages/components/src/composite/searchForm/SearchForm.vue"],"sourcesContent":["<script lang=\"ts\">\nconst itemGap = 8\n</script>\n<template>\n <div ref=\"queryDivRef\" class=\"gm-mb-5\">\n <gm-form v-show=\"showSearch\" ref=\"queryRef\" :model=\"queryParams\" :inline=\"true\" class=\"gmSearchForm\">\n <div :class=\"showMore ? '' : 'gm-h-[36px] gm-overflow-hidden'\">\n <div class=\"gm-relative gm-grid gm-w-full\" :style=\"{ gridTemplateColumns: `repeat(${colsCount}, minmax(0, 1fr))`, gap: itemGap + 'px' }\">\n <template v-for=\"(item, index) in optionsList\" :key=\"index\">\n <component :is=\"item.component\" v-bind=\"item.props\" v-model=\"queryParams[item.props.prop]\" />\n </template>\n <slot />\n <gm-form-item v-show=\"!props.hideActionButtons\" :style=\"searchButtonItemStyle\">\n <div class=\"gm-flex gm-w-full\" :class=\"notShowShowMore ? '' : 'gm-justify-end'\">\n <gm-button type=\"primary\" :icon=\"Search\" class=\"\" @click=\"handleQuery\">搜索</gm-button>\n <gm-button :icon=\"Refresh\" @click=\"resetQuery\">重置</gm-button>\n <gm-button v-show=\"!notShowShowMore\" type=\"primary\" text @click=\"handleShowMoreChange\">\n {{ showMore ? '缩起' : '展开' }} <gm-icon class=\"el-icon--right\" :class=\"showMore ? 'gm-rotate-180' : ''\"><ArrowDown /></gm-icon>\n </gm-button>\n </div>\n </gm-form-item>\n <div ref=\"visibilityMarkRef\" class=\"gm-absolute gm-bottom-3 gm-right-0 -gm-z-10 gm-h-1 gm-w-1\" />\n </div>\n </div>\n </gm-form>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, inject, nextTick, onBeforeUnmount, onMounted, provide, ref, watch } from 'vue';\nimport { useElementSize } from '@vueuse/core';\nimport { TableCtxKey } from '@giime/constants/table';\nimport { ArrowDown, Refresh, Search } from '@element-plus/icons-vue';\nimport { searchFormEmits, searchFormItemList, searchFormProps } from './searchForm';\nimport { queryParamsKey, searchFormHandleQueryKey } from './constants';\nimport type { CSSProperties } from 'vue';\nimport type { FormInstance } from '../../base/form';\ndefineOptions({\n name: 'GmSearchForm',\n});\nconst tableCtx = inject(TableCtxKey, {});\n\nconst showSearch = defineModel<boolean>('showSearch', { default: true });\n\nconst queryParams = defineModel<Record<string, any>>('queryParams', { required: true });\n\nprovide(queryParamsKey, queryParams);\n\nconst props = defineProps(searchFormProps);\nconst emit = defineEmits(searchFormEmits);\n\nconst queryDivRef = ref<HTMLDivElement>();\nconst visibilityMarkRef = ref<HTMLDivElement>();\n// const markIsVisibility = useElementVisibility(visibilityMarkRef);\n\nconst { width: observedWidth, height: observedHeight } = useElementSize(queryDivRef);\n// 用 rAF 把宽高的写入推迟一帧,避免在 ResizeObserver 回调内同步触发重排\n//(改 grid 列数 → 元素高度变化 → 再次触发 observer),\n// 从而消除 \"ResizeObserver loop completed with undelivered notifications\" 告警\nconst queryDivWidth = ref(0);\nconst queryDivHeight = ref(0);\nlet rafId = 0;\nwatch([observedWidth, observedHeight], ([w, h]) => {\n if (rafId) cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(() => {\n queryDivWidth.value = w;\n queryDivHeight.value = h;\n });\n});\n// 首帧同步量一次真实宽高,保证首次渲染就是正确列数,避免“先单列再归位”的闪烁\nonMounted(() => {\n const el = queryDivRef.value;\n if (el) {\n queryDivWidth.value = el.clientWidth;\n queryDivHeight.value = el.clientHeight;\n }\n});\nonBeforeUnmount(() => {\n if (rafId) cancelAnimationFrame(rafId);\n});\n// 列个数,至少 1 列,避免 repeat(0) 非法值导致额外重排\nconst colsCount = computed(() => Math.max(1, Math.floor(queryDivWidth.value / 269)));\nconst showMore = ref(props.defaultShowMore);\n// 当 showMore展开 且高度为60时,不显示展开按钮\nconst notShowShowMore = computed(() => showMore.value === true && queryDivHeight.value <= 70);\n\n/**搜索重置按钮组样式 */\nconst searchButtonItemStyle = computed<CSSProperties>(() => {\n if (notShowShowMore.value) {\n return {};\n }\n return {\n gridColumn: colsCount.value,\n gridRow: showMore.value ? undefined : 1,\n };\n});\nconst handleShowMoreChange = async () => {\n showMore.value = !showMore.value;\n // 手动触发 scroll 事件\n const scrollEvent = new Event('resize');\n await nextTick();\n // 手动触发事件\n window.dispatchEvent(scrollEvent);\n};\n\n// 通过json渲染组件\nconst optionsList = computed(() => {\n return props.options.map(it => {\n const findComponent = searchFormItemList.find(item => item.type === it.type);\n if (findComponent) {\n it.component = findComponent.component;\n }\n return it;\n });\n});\n\nconst queryRef = ref<FormInstance>();\n// 上下文添加queryRef\ntableCtx.queryRef = queryRef;\nconst handleQuery = (...args: any[]) => {\n emit('handleQuery', ...args);\n tableCtx?.tableRef?.value?.scrollTo({ top: 0, behavior: 'smooth' });\n tableCtx.tableV2Ref?.value?.scrollTo({ scrollLeft: 0, scrollTop: 0 });\n};\nprovide(searchFormHandleQueryKey, handleQuery);\n\nconst resetQuery = () => {\n queryRef.value?.resetFields();\n emit('resetQuery');\n tableCtx?.tableRef?.value?.scrollTo({ top: 0, behavior: 'smooth' });\n tableCtx.tableV2Ref?.value?.scrollTo({ scrollLeft: 0, scrollTop: 0 });\n};\n\ndefineExpose({\n // queryRef,\n handleQuery,\n resetQuery,\n});\n</script>\n<style lang=\"scss\" scoped>\n:deep(.gmSearchForm .el-form-item) {\n margin-right: 0;\n margin-bottom: 4px;\n}\n</style>\n"],"names":["inject","TableCtxKey","_useModel","provide","queryParamsKey","ref","useElementSize","watch","onMounted","onBeforeUnmount","computed","nextTick","searchFormItemList","searchFormHandleQueryKey"],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const version = "1.0.0";
1
+ export declare const version = "1.0.2-snapshot.1";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const version = "1.0.0";
3
+ const version = "1.0.2-snapshot.1";
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 = '1.0.0';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAA,GAAU;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '1.0.2-snapshot.1';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAA,GAAU;;;;"}
package/lib/index.css CHANGED
@@ -603,8 +603,8 @@ video {
603
603
  .gm-h-\[36px\] {
604
604
  height: 36px;
605
605
  }
606
- .gm-h-\[600px\] {
607
- height: 600px;
606
+ .gm-h-\[650px\] {
607
+ height: 650px;
608
608
  }
609
609
  .gm-h-full {
610
610
  height: 100%;
@@ -894,36 +894,50 @@ video {
894
894
  .gm-flex-justify-between[data-v-c17deec9] {
895
895
  justify-content: space-between;
896
896
  }
897
- .circular[data-v-d7b04fae] {
898
- animation: loading-rotate-d7b04fae 2s linear infinite;
897
+ [data-v-195b27e4] .gmSearchForm .el-form-item {
898
+ margin-right: 0;
899
+ margin-bottom: 4px;
900
+ }
901
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
902
+ border-right: none;
899
903
  }
900
904
 
901
- .path[data-v-d7b04fae] {
902
- animation: loading-dash-d7b04fae 1.5s ease-in-out infinite;
903
- stroke-dasharray: 90, 150;
904
- stroke-dashoffset: 0;
905
- stroke: var(--el-color-primary);
906
- stroke-linecap: round;
905
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
906
+ height: 0;
907
907
  }
908
908
 
909
- @keyframes loading-rotate-d7b04fae {
910
- to {
911
- transform: rotate(360deg);
912
- }
909
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
910
+ height: 0;
913
911
  }
914
- @keyframes loading-dash-d7b04fae {
915
- 0% {
916
- stroke-dasharray: 1, 200;
917
- stroke-dashoffset: 0;
918
- }
919
- 50% {
920
- stroke-dasharray: 90, 150;
921
- stroke-dashoffset: -40px;
922
- }
923
- 100% {
924
- stroke-dasharray: 90, 150;
925
- stroke-dashoffset: -120px;
926
- }
912
+
913
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
914
+ height: 0;
915
+ }
916
+
917
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
918
+ height: 0;
919
+ }
920
+
921
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
922
+ height: 0;
923
+ }
924
+ .gm-number-interval-single[data-v-4e6f4d6f] {
925
+ border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
926
+ box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
927
+ background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
928
+ }
929
+ .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
930
+ box-shadow: none;
931
+ background: none;
932
+ }
933
+
934
+ .gm-number-interval-close[data-v-4e6f4d6f] {
935
+ display: none;
936
+ color: var(--el-input-icon-color, var(--el-text-color-placeholder));
937
+ }
938
+
939
+ .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
940
+ display: flex;
927
941
  }
928
942
 
929
943
  .gm-range-number .el-form-item[data-v-1ae16d96] {
@@ -976,27 +990,13 @@ video {
976
990
  .gm-upload-pro-file-disabled .el-upload-list__item-status-label {
977
991
  display: none;
978
992
  }
979
- .gm-number-interval-single[data-v-4e6f4d6f] {
980
- border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
981
- box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
982
- background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
983
- }
984
- .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
985
- box-shadow: none;
986
- background: none;
987
- }
988
-
989
- .gm-number-interval-close[data-v-4e6f4d6f] {
990
- display: none;
991
- color: var(--el-input-icon-color, var(--el-text-color-placeholder));
993
+ .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
994
+ padding: 0;
992
995
  }
993
996
 
994
- .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
995
- display: flex;
996
- }
997
- [data-v-79615afd] .gmSearchForm .el-form-item {
998
- margin-right: 0;
999
- margin-bottom: 4px;
997
+ .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload-list__item, .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload--picture-card {
998
+ width: auto;
999
+ height: auto;
1000
1000
  }
1001
1001
  [data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
1002
1002
  border-right: none;
@@ -1021,15 +1021,73 @@ video {
1021
1021
  [data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
1022
1022
  height: 0;
1023
1023
  }
1024
+ .gm-upload-file {
1025
+ line-height: normal;
1026
+ }
1027
+ .gm-upload-file li > .el-checkbox {
1028
+ position: absolute;
1029
+ left: 10px;
1030
+ top: 0;
1031
+ z-index: 9;
1032
+ }
1033
+ .gm-upload-file .el-upload-list--picture-card {
1034
+ gap: 10px;
1035
+ }
1036
+ .gm-upload-file .el-upload-list__item {
1037
+ margin: 0;
1038
+ border: none;
1039
+ }
1040
+ .gm-upload-file .el-upload-list__item-file-name {
1041
+ line-height: normal;
1042
+ }
1043
+ .gm-upload-file .el-upload-dragger {
1044
+ padding: 0;
1045
+ border: none;
1046
+ width: 100%;
1047
+ height: 100%;
1048
+ display: flex;
1049
+ }
1050
+ .gm-upload-file .el-upload--picture-card {
1051
+ border: none;
1052
+ }
1024
1053
 
1025
- .pagination-container[data-v-47d35e7b] {
1026
- background: #fff;
1027
- padding-top: 12px;
1054
+ .gm-upload-file-disabled .el-upload--picture-card {
1055
+ display: none;
1028
1056
  }
1029
- .pagination-container.hidden[data-v-47d35e7b] {
1057
+ .gm-upload-file-disabled .el-upload-list__item-status-label {
1030
1058
  display: none;
1031
1059
  }
1060
+ .circular[data-v-d7b04fae] {
1061
+ animation: loading-rotate-d7b04fae 2s linear infinite;
1062
+ }
1063
+
1064
+ .path[data-v-d7b04fae] {
1065
+ animation: loading-dash-d7b04fae 1.5s ease-in-out infinite;
1066
+ stroke-dasharray: 90, 150;
1067
+ stroke-dashoffset: 0;
1068
+ stroke: var(--el-color-primary);
1069
+ stroke-linecap: round;
1070
+ }
1032
1071
 
1072
+ @keyframes loading-rotate-d7b04fae {
1073
+ to {
1074
+ transform: rotate(360deg);
1075
+ }
1076
+ }
1077
+ @keyframes loading-dash-d7b04fae {
1078
+ 0% {
1079
+ stroke-dasharray: 1, 200;
1080
+ stroke-dashoffset: 0;
1081
+ }
1082
+ 50% {
1083
+ stroke-dasharray: 90, 150;
1084
+ stroke-dashoffset: -40px;
1085
+ }
1086
+ 100% {
1087
+ stroke-dasharray: 90, 150;
1088
+ stroke-dashoffset: -120px;
1089
+ }
1090
+ }
1033
1091
  @charset "UTF-8";
1034
1092
  .custom-operate-drawer .el-drawer__header {
1035
1093
  padding: 10px 15px;
@@ -1086,29 +1144,15 @@ video {
1086
1144
  border-radius: 10px;
1087
1145
  background: #eee;
1088
1146
  }
1089
- [data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
1090
- border-right: none;
1091
- }
1092
-
1093
- [data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
1094
- height: 0;
1095
- }
1096
1147
 
1097
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1098
- height: 0;
1099
- }
1100
-
1101
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
1102
- height: 0;
1148
+ .pagination-container[data-v-47d35e7b] {
1149
+ background: #fff;
1150
+ padding-top: 12px;
1103
1151
  }
1104
-
1105
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
1106
- height: 0;
1152
+ .pagination-container.hidden[data-v-47d35e7b] {
1153
+ display: none;
1107
1154
  }
1108
1155
 
1109
- [data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
1110
- height: 0;
1111
- }
1112
1156
  @charset "UTF-8";
1113
1157
  .table-custom-header-drawer .el-drawer__header {
1114
1158
  padding: 10px 15px;
@@ -1164,48 +1208,4 @@ video {
1164
1208
  box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
1165
1209
  border-radius: 10px;
1166
1210
  background: #eee;
1167
- }
1168
- .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
1169
- padding: 0;
1170
- }
1171
-
1172
- .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload-list__item, .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload--picture-card {
1173
- width: auto;
1174
- height: auto;
1175
- }
1176
- .gm-upload-file {
1177
- line-height: normal;
1178
- }
1179
- .gm-upload-file li > .el-checkbox {
1180
- position: absolute;
1181
- left: 10px;
1182
- top: 0;
1183
- z-index: 9;
1184
- }
1185
- .gm-upload-file .el-upload-list--picture-card {
1186
- gap: 10px;
1187
- }
1188
- .gm-upload-file .el-upload-list__item {
1189
- margin: 0;
1190
- border: none;
1191
- }
1192
- .gm-upload-file .el-upload-list__item-file-name {
1193
- line-height: normal;
1194
- }
1195
- .gm-upload-file .el-upload-dragger {
1196
- padding: 0;
1197
- border: none;
1198
- width: 100%;
1199
- height: 100%;
1200
- display: flex;
1201
- }
1202
- .gm-upload-file .el-upload--picture-card {
1203
- border: none;
1204
- }
1205
-
1206
- .gm-upload-file-disabled .el-upload--picture-card {
1207
- display: none;
1208
- }
1209
- .gm-upload-file-disabled .el-upload-list__item-status-label {
1210
- display: none;
1211
1211
  }
@@ -21,10 +21,18 @@ export interface EnvConfig {
21
21
  * 统一的配置源,控制所有环境、租户、域名映射
22
22
  */
23
23
  export declare const envConfigs: Record<string, EnvConfig>;
24
+ /**
25
+ * 把 VITE_GIIME_MODE 解析成环境配置。
26
+ * 支持两种写法:
27
+ * 1. 预定义 key(development / test / production / 'giiktok.production' 等)
28
+ * 2. 直接填完整域名(如 https://manage.kingkungmeta-pre.com)—— 临时联调任意环境
29
+ * 无法解析时返回 undefined,由各调用方决定 fallback(域名匹配 / development / serviceType)。
30
+ */
31
+ export declare const resolveEnvConfig: (mode?: string) => EnvConfig | undefined;
24
32
  /**
25
33
  * 根据模式获取环境配置
26
- * @param mode 环境模式
27
- * @returns 环境配置对象
34
+ * @param mode 环境模式(预定义 key 或完整域名)
35
+ * @returns 环境配置对象,解析不到时回落到 development
28
36
  */
29
37
  export declare const getEnvConfig: (mode?: string) => EnvConfig;
30
38
  /**
@@ -17,9 +17,28 @@ const envConfigs = {
17
17
  // 租户:吉客拓客
18
18
  "giiktok.production": { url: "https://manage.kingkungmeta.com", tenant: "giiktok", domain: "manage.kingkungmeta.com" }
19
19
  };
20
+ const isHttpUrl = (value) => !!value && /^https?:\/\//i.test(value);
21
+ const urlToEnvConfig = (url) => {
22
+ let domain = "";
23
+ try {
24
+ domain = new URL(url).hostname;
25
+ } catch {
26
+ domain = "";
27
+ }
28
+ const known = Object.values(envConfigs).find((config) => config.domain === domain);
29
+ return {
30
+ url: url.replace(/\/+$/, ""),
31
+ tenant: known?.tenant ?? "giikin",
32
+ domain
33
+ };
34
+ };
35
+ const resolveEnvConfig = (mode) => {
36
+ if (!mode) return void 0;
37
+ if (isHttpUrl(mode)) return urlToEnvConfig(mode);
38
+ return envConfigs[mode];
39
+ };
20
40
  const getEnvConfig = (mode) => {
21
- if (!mode) return envConfigs.development;
22
- return envConfigs[mode] || envConfigs.development;
41
+ return resolveEnvConfig(mode) ?? envConfigs.development;
23
42
  };
24
43
  const createModes = (options) => {
25
44
  const { developmentPath, serviceType } = options;
@@ -34,4 +53,5 @@ const createModes = (options) => {
34
53
  exports.createModes = createModes;
35
54
  exports.envConfigs = envConfigs;
36
55
  exports.getEnvConfig = getEnvConfig;
56
+ exports.resolveEnvConfig = resolveEnvConfig;
37
57
  //# sourceMappingURL=createModes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createModes.js","sources":["../../../../../../packages/utils/src/http/createModes.ts"],"sourcesContent":["import type { TenantType } from '../tenant';\nimport { urlJoin } from './url';\n\nexport interface CreateModesOptions {\n /** 开发环境路径,如 '/giime-guard-resource-api' */\n developmentPath: string;\n /** 服务类型:如 'guard', 'middle' 等 */\n serviceType: string;\n}\n\n/**\n * 环境配置项\n */\nexport interface EnvConfig {\n /** 环境URL */\n url: string;\n /** 租户类型 */\n tenant: TenantType;\n /** 域名(可选,用于域名匹配) */\n domain?: string;\n}\n\n/**\n * 环境配置映射表\n * 统一的配置源,控制所有环境、租户、域名映射\n */\nexport const envConfigs: Record<string, EnvConfig> = {\n // 本地开发环境\n development: { url: 'https://manage-dev.giikin.cn', tenant: 'giikin', domain: 'manage-dev.giikin.cn' },\n // 前后端联调的开发环境\n dev: { url: 'https://manage-dev.giikin.cn', tenant: 'giikin', domain: 'manage-dev.giikin.cn' },\n develop: { url: 'https://manage-dev.giikin.cn', tenant: 'giikin', domain: 'manage-dev.giikin.cn' },\n // 测试环境\n test: { url: 'https://manage-test.giikin.cn', tenant: 'giikin', domain: 'manage-test.giikin.cn' },\n // 预发布环境\n release: { url: 'https://manage-pre.giikin.com', tenant: 'giikin', domain: 'manage-pre.giikin.com' },\n // 生产环境\n production: { url: 'https://manage.giikin.com', tenant: 'giikin', domain: 'manage.giikin.com' },\n // 租户:吉客拓客\n 'giiktok.production': { url: 'https://manage.kingkungmeta.com', tenant: 'giiktok', domain: 'manage.kingkungmeta.com' },\n} as const;\n\n/**\n * 根据模式获取环境配置\n * @param mode 环境模式\n * @returns 环境配置对象\n */\nexport const getEnvConfig = (mode?: string): EnvConfig => {\n if (!mode) return envConfigs.development;\n return envConfigs[mode as keyof typeof envConfigs] || envConfigs.development;\n};\n\n/**\n * 创建API模式配置\n * @param options 配置对象\n * @param options.developmentPath 开发环境路径,如 '/giime-guard-resource-api'\n * @param options.serviceType 服务类型:如 'guard', 'middle' 等\n * @returns ViteMode数组\n */\nexport const createModes = (options: CreateModesOptions) => {\n const { developmentPath, serviceType } = options;\n\n return Object.keys(envConfigs).map(mode => {\n // 本地开发环境特殊处理:使用 developmentPath\n if (mode === 'development') {\n return { mode, url: developmentPath };\n }\n // 其他环境:拼接 baseUrl + serviceType\n return { mode, url: urlJoin(envConfigs[mode].url, serviceType) };\n });\n};\n"],"names":["urlJoin"],"mappings":";;;;AA0BO,MAAM,UAAA,GAAwC;AAAA;AAAA,EAEnD,aAAa,EAAE,GAAA,EAAK,gCAAgC,MAAA,EAAQ,QAAA,EAAU,QAAQ,sBAAA,EAAuB;AAAA;AAAA,EAErG,KAAK,EAAE,GAAA,EAAK,gCAAgC,MAAA,EAAQ,QAAA,EAAU,QAAQ,sBAAA,EAAuB;AAAA,EAC7F,SAAS,EAAE,GAAA,EAAK,gCAAgC,MAAA,EAAQ,QAAA,EAAU,QAAQ,sBAAA,EAAuB;AAAA;AAAA,EAEjG,MAAM,EAAE,GAAA,EAAK,iCAAiC,MAAA,EAAQ,QAAA,EAAU,QAAQ,uBAAA,EAAwB;AAAA;AAAA,EAEhG,SAAS,EAAE,GAAA,EAAK,iCAAiC,MAAA,EAAQ,QAAA,EAAU,QAAQ,uBAAA,EAAwB;AAAA;AAAA,EAEnG,YAAY,EAAE,GAAA,EAAK,6BAA6B,MAAA,EAAQ,QAAA,EAAU,QAAQ,mBAAA,EAAoB;AAAA;AAAA,EAE9F,sBAAsB,EAAE,GAAA,EAAK,mCAAmC,MAAA,EAAQ,SAAA,EAAW,QAAQ,yBAAA;AAC7F;AAOO,MAAM,YAAA,GAAe,CAAC,IAAA,KAA6B;AACxD,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,UAAA,CAAW,WAAA;AAC7B,EAAA,OAAO,UAAA,CAAW,IAA+B,CAAA,IAAK,UAAA,CAAW,WAAA;AACnE;AASO,MAAM,WAAA,GAAc,CAAC,OAAA,KAAgC;AAC1D,EAAA,MAAM,EAAE,eAAA,EAAiB,WAAA,EAAY,GAAI,OAAA;AAEzC,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,IAAI,CAAA,IAAA,KAAQ;AAEzC,IAAA,IAAI,SAAS,aAAA,EAAe;AAC1B,MAAA,OAAO,EAAE,IAAA,EAAM,GAAA,EAAK,eAAA,EAAgB;AAAA,IACtC;AAEA,IAAA,OAAO,EAAE,MAAM,GAAA,EAAKA,WAAA,CAAQ,WAAW,IAAI,CAAA,CAAE,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,EACjE,CAAC,CAAA;AACH;;;;;;"}
1
+ {"version":3,"file":"createModes.js","sources":["../../../../../../packages/utils/src/http/createModes.ts"],"sourcesContent":["import type { TenantType } from '../tenant';\nimport { urlJoin } from './url';\n\nexport interface CreateModesOptions {\n /** 开发环境路径,如 '/giime-guard-resource-api' */\n developmentPath: string;\n /** 服务类型:如 'guard', 'middle' 等 */\n serviceType: string;\n}\n\n/**\n * 环境配置项\n */\nexport interface EnvConfig {\n /** 环境URL */\n url: string;\n /** 租户类型 */\n tenant: TenantType;\n /** 域名(可选,用于域名匹配) */\n domain?: string;\n}\n\n/**\n * 环境配置映射表\n * 统一的配置源,控制所有环境、租户、域名映射\n */\nexport const envConfigs: Record<string, EnvConfig> = {\n // 本地开发环境\n development: { url: 'https://manage-dev.giikin.cn', tenant: 'giikin', domain: 'manage-dev.giikin.cn' },\n // 前后端联调的开发环境\n dev: { url: 'https://manage-dev.giikin.cn', tenant: 'giikin', domain: 'manage-dev.giikin.cn' },\n develop: { url: 'https://manage-dev.giikin.cn', tenant: 'giikin', domain: 'manage-dev.giikin.cn' },\n // 测试环境\n test: { url: 'https://manage-test.giikin.cn', tenant: 'giikin', domain: 'manage-test.giikin.cn' },\n // 预发布环境\n release: { url: 'https://manage-pre.giikin.com', tenant: 'giikin', domain: 'manage-pre.giikin.com' },\n // 生产环境\n production: { url: 'https://manage.giikin.com', tenant: 'giikin', domain: 'manage.giikin.com' },\n // 租户:吉客拓客\n 'giiktok.production': { url: 'https://manage.kingkungmeta.com', tenant: 'giiktok', domain: 'manage.kingkungmeta.com' },\n} as const;\n\n/** 判断字符串是否为 http(s) 完整地址 */\nconst isHttpUrl = (value?: string): value is string => !!value && /^https?:\\/\\//i.test(value);\n\n/**\n * 把一个完整域名地址合成为 EnvConfig\n * - url:去掉末尾斜杠,保持与 envConfigs 中的写法一致\n * - tenant:若该域名恰好命中已知环境则复用其租户,否则默认 giikin\n * - domain:从地址解析出的 hostname\n */\nconst urlToEnvConfig = (url: string): EnvConfig => {\n let domain = '';\n try {\n domain = new URL(url).hostname;\n } catch {\n domain = '';\n }\n const known = Object.values(envConfigs).find(config => config.domain === domain);\n return {\n url: url.replace(/\\/+$/, ''),\n tenant: known?.tenant ?? ('giikin' as TenantType),\n domain,\n };\n};\n\n/**\n * 把 VITE_GIIME_MODE 解析成环境配置。\n * 支持两种写法:\n * 1. 预定义 key(development / test / production / 'giiktok.production' 等)\n * 2. 直接填完整域名(如 https://manage.kingkungmeta-pre.com)—— 临时联调任意环境\n * 无法解析时返回 undefined,由各调用方决定 fallback(域名匹配 / development / serviceType)。\n */\nexport const resolveEnvConfig = (mode?: string): EnvConfig | undefined => {\n if (!mode) return undefined;\n if (isHttpUrl(mode)) return urlToEnvConfig(mode);\n return envConfigs[mode as keyof typeof envConfigs];\n};\n\n/**\n * 根据模式获取环境配置\n * @param mode 环境模式(预定义 key 或完整域名)\n * @returns 环境配置对象,解析不到时回落到 development\n */\nexport const getEnvConfig = (mode?: string): EnvConfig => {\n return resolveEnvConfig(mode) ?? envConfigs.development;\n};\n\n/**\n * 创建API模式配置\n * @param options 配置对象\n * @param options.developmentPath 开发环境路径,如 '/giime-guard-resource-api'\n * @param options.serviceType 服务类型:如 'guard', 'middle' 等\n * @returns ViteMode数组\n */\nexport const createModes = (options: CreateModesOptions) => {\n const { developmentPath, serviceType } = options;\n\n return Object.keys(envConfigs).map(mode => {\n // 本地开发环境特殊处理:使用 developmentPath\n if (mode === 'development') {\n return { mode, url: developmentPath };\n }\n // 其他环境:拼接 baseUrl + serviceType\n return { mode, url: urlJoin(envConfigs[mode].url, serviceType) };\n });\n};\n"],"names":["urlJoin"],"mappings":";;;;AA0BO,MAAM,UAAA,GAAwC;AAAA;AAAA,EAEnD,aAAa,EAAE,GAAA,EAAK,gCAAgC,MAAA,EAAQ,QAAA,EAAU,QAAQ,sBAAA,EAAuB;AAAA;AAAA,EAErG,KAAK,EAAE,GAAA,EAAK,gCAAgC,MAAA,EAAQ,QAAA,EAAU,QAAQ,sBAAA,EAAuB;AAAA,EAC7F,SAAS,EAAE,GAAA,EAAK,gCAAgC,MAAA,EAAQ,QAAA,EAAU,QAAQ,sBAAA,EAAuB;AAAA;AAAA,EAEjG,MAAM,EAAE,GAAA,EAAK,iCAAiC,MAAA,EAAQ,QAAA,EAAU,QAAQ,uBAAA,EAAwB;AAAA;AAAA,EAEhG,SAAS,EAAE,GAAA,EAAK,iCAAiC,MAAA,EAAQ,QAAA,EAAU,QAAQ,uBAAA,EAAwB;AAAA;AAAA,EAEnG,YAAY,EAAE,GAAA,EAAK,6BAA6B,MAAA,EAAQ,QAAA,EAAU,QAAQ,mBAAA,EAAoB;AAAA;AAAA,EAE9F,sBAAsB,EAAE,GAAA,EAAK,mCAAmC,MAAA,EAAQ,SAAA,EAAW,QAAQ,yBAAA;AAC7F;AAGA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAoC,CAAC,CAAC,KAAA,IAAS,eAAA,CAAgB,KAAK,KAAK,CAAA;AAQ5F,MAAM,cAAA,GAAiB,CAAC,GAAA,KAA2B;AACjD,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI;AACF,IAAA,MAAA,GAAS,IAAI,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA;AAAA,EACxB,CAAA,CAAA,MAAQ;AACN,IAAA,MAAA,GAAS,EAAA;AAAA,EACX;AACA,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,CAAO,UAAU,EAAE,IAAA,CAAK,CAAA,MAAA,KAAU,MAAA,CAAO,MAAA,KAAW,MAAM,CAAA;AAC/E,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAC3B,MAAA,EAAQ,OAAO,MAAA,IAAW,QAAA;AAAA,IAC1B;AAAA,GACF;AACF,CAAA;AASO,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAyC;AACxE,EAAA,IAAI,CAAC,MAAM,OAAO,KAAA,CAAA;AAClB,EAAA,IAAI,SAAA,CAAU,IAAI,CAAA,EAAG,OAAO,eAAe,IAAI,CAAA;AAC/C,EAAA,OAAO,WAAW,IAA+B,CAAA;AACnD;AAOO,MAAM,YAAA,GAAe,CAAC,IAAA,KAA6B;AACxD,EAAA,OAAO,gBAAA,CAAiB,IAAI,CAAA,IAAK,UAAA,CAAW,WAAA;AAC9C;AASO,MAAM,WAAA,GAAc,CAAC,OAAA,KAAgC;AAC1D,EAAA,MAAM,EAAE,eAAA,EAAiB,WAAA,EAAY,GAAI,OAAA;AAEzC,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,IAAI,CAAA,IAAA,KAAQ;AAEzC,IAAA,IAAI,SAAS,aAAA,EAAe;AAC1B,MAAA,OAAO,EAAE,IAAA,EAAM,GAAA,EAAK,eAAA,EAAgB;AAAA,IACtC;AAEA,IAAA,OAAO,EAAE,MAAM,GAAA,EAAKA,WAAA,CAAQ,WAAW,IAAI,CAAA,CAAE,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,EACjE,CAAC,CAAA;AACH;;;;;;;"}
@@ -8,8 +8,9 @@ const getTenantType = () => {
8
8
  const hostname = typeof window !== "undefined" ? window.location.hostname : "";
9
9
  const importMetaEnv = index.useGlobalConfig("env");
10
10
  const mode = importMetaEnv.value[key.resetEnvMode];
11
- if (mode && createModes.envConfigs[mode]) {
12
- return createModes.envConfigs[mode].tenant;
11
+ const modeEnvConfig = createModes.resolveEnvConfig(mode);
12
+ if (modeEnvConfig) {
13
+ return modeEnvConfig.tenant;
13
14
  }
14
15
  const envConfig = Object.values(createModes.envConfigs).find((config) => config.domain === hostname);
15
16
  if (envConfig) {
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.js","sources":["../../../../../packages/utils/src/tenant.ts"],"sourcesContent":["/**\n * 基于环境模式和域名的租户类型判断\n * 优先根据环境模式获取租户类型,其次根据域名判断\n */\n\nimport { resetEnvMode } from '@giime/constants/key';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { envConfigs } from './http/createModes';\n\n/** 租户类型 */\nexport type TenantType = 'giikin' | 'giiktok' | 'giimall';\n\n/**\n * 根据环境模式或域名获取租户类型\n * 优先级:环境模式 > 域名 > 默认值(giikin)\n */\nexport const getTenantType = (): TenantType => {\n const hostname = typeof window !== 'undefined' ? window.location.hostname : '';\n const importMetaEnv = useGlobalConfig('env');\n const mode = importMetaEnv.value[resetEnvMode];\n\n // 1. 优先根据 resetEnvMode 获取租户类型\n if (mode && envConfigs[mode]) {\n return envConfigs[mode].tenant;\n }\n\n // 2. 其次根据域名获取租户类型\n const envConfig = Object.values(envConfigs).find(config => config.domain === hostname);\n if (envConfig) {\n return envConfig.tenant;\n }\n\n // 3. 默认返回 giikin\n return 'giikin';\n};\n\n/**\n * 判断是否为 giiktok 租户\n */\nexport const isGiiktok = () => getTenantType() === 'giiktok';\n\n/**\n * 判断是否为 giikin\n */\nexport const isGiikin = () => getTenantType() === 'giikin';\n"],"names":["useGlobalConfig","resetEnvMode","envConfigs"],"mappings":";;;;;;AAgBO,MAAM,gBAAgB,MAAkB;AAC7C,EAAA,MAAM,WAAW,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,SAAS,QAAA,GAAW,EAAA;AAC5E,EAAA,MAAM,aAAA,GAAgBA,sBAAgB,KAAK,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAMC,gBAAY,CAAA;AAG7C,EAAA,IAAI,IAAA,IAAQC,sBAAA,CAAW,IAAI,CAAA,EAAG;AAC5B,IAAA,OAAOA,sBAAA,CAAW,IAAI,CAAA,CAAE,MAAA;AAAA,EAC1B;AAGA,EAAA,MAAM,SAAA,GAAY,OAAO,MAAA,CAAOA,sBAAU,EAAE,IAAA,CAAK,CAAA,MAAA,KAAU,MAAA,CAAO,MAAA,KAAW,QAAQ,CAAA;AACrF,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAO,SAAA,CAAU,MAAA;AAAA,EACnB;AAGA,EAAA,OAAO,QAAA;AACT;AAKO,MAAM,SAAA,GAAY,MAAM,aAAA,EAAc,KAAM;AAK5C,MAAM,QAAA,GAAW,MAAM,aAAA,EAAc,KAAM;;;;;;"}
1
+ {"version":3,"file":"tenant.js","sources":["../../../../../packages/utils/src/tenant.ts"],"sourcesContent":["/**\n * 基于环境模式和域名的租户类型判断\n * 优先根据环境模式获取租户类型,其次根据域名判断\n */\n\nimport { resetEnvMode } from '@giime/constants/key';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { envConfigs, resolveEnvConfig } from './http/createModes';\n\n/** 租户类型 */\nexport type TenantType = 'giikin' | 'giiktok' | 'giimall';\n\n/**\n * 根据环境模式或域名获取租户类型\n * 优先级:环境模式 > 域名 > 默认值(giikin)\n */\nexport const getTenantType = (): TenantType => {\n const hostname = typeof window !== 'undefined' ? window.location.hostname : '';\n const importMetaEnv = useGlobalConfig('env');\n const mode = importMetaEnv.value[resetEnvMode];\n\n // 1. 优先根据 resetEnvMode 获取租户类型(支持预定义 key 或直填完整域名)\n const modeEnvConfig = resolveEnvConfig(mode);\n if (modeEnvConfig) {\n return modeEnvConfig.tenant;\n }\n\n // 2. 其次根据域名获取租户类型\n const envConfig = Object.values(envConfigs).find(config => config.domain === hostname);\n if (envConfig) {\n return envConfig.tenant;\n }\n\n // 3. 默认返回 giikin\n return 'giikin';\n};\n\n/**\n * 判断是否为 giiktok 租户\n */\nexport const isGiiktok = () => getTenantType() === 'giiktok';\n\n/**\n * 判断是否为 giikin\n */\nexport const isGiikin = () => getTenantType() === 'giikin';\n"],"names":["useGlobalConfig","resetEnvMode","resolveEnvConfig","envConfigs"],"mappings":";;;;;;AAgBO,MAAM,gBAAgB,MAAkB;AAC7C,EAAA,MAAM,WAAW,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,SAAS,QAAA,GAAW,EAAA;AAC5E,EAAA,MAAM,aAAA,GAAgBA,sBAAgB,KAAK,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAMC,gBAAY,CAAA;AAG7C,EAAA,MAAM,aAAA,GAAgBC,6BAAiB,IAAI,CAAA;AAC3C,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,OAAO,aAAA,CAAc,MAAA;AAAA,EACvB;AAGA,EAAA,MAAM,SAAA,GAAY,OAAO,MAAA,CAAOC,sBAAU,EAAE,IAAA,CAAK,CAAA,MAAA,KAAU,MAAA,CAAO,MAAA,KAAW,QAAQ,CAAA;AACrF,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAO,SAAA,CAAU,MAAA;AAAA,EACnB;AAGA,EAAA,OAAO,QAAA;AACT;AAKO,MAAM,SAAA,GAAY,MAAM,aAAA,EAAc,KAAM;AAK5C,MAAM,QAAA,GAAW,MAAM,aAAA,EAAc,KAAM;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "1.0.0",
3
+ "version": "1.0.2-snapshot.1",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",