giime 1.0.1 → 1.0.2-snapshot.2

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 (48) hide show
  1. package/dist/index.css +84 -84
  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.vue.d.ts +9 -0
  7. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +12 -3
  8. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  9. package/es/components/src/business/loginDialog/loginDialog.d.ts +13 -0
  10. package/es/components/src/business/loginDialog/loginDialog.mjs +13 -0
  11. package/es/components/src/business/loginDialog/loginDialog.mjs.map +1 -1
  12. package/es/components/src/composite/searchForm/SearchForm.vue.mjs +1 -1
  13. package/es/components/src/composite/searchForm/SearchForm.vue2.mjs +23 -3
  14. package/es/components/src/composite/searchForm/SearchForm.vue2.mjs.map +1 -1
  15. package/es/giime/version.d.ts +1 -1
  16. package/es/giime/version.mjs +1 -1
  17. package/es/giime/version.mjs.map +1 -1
  18. package/es/index.css +84 -84
  19. package/es/utils/src/http/createModes.d.ts +10 -2
  20. package/es/utils/src/http/createModes.mjs +22 -3
  21. package/es/utils/src/http/createModes.mjs.map +1 -1
  22. package/es/utils/src/tenant.mjs +4 -3
  23. package/es/utils/src/tenant.mjs.map +1 -1
  24. package/lib/api/utils/createModes.js +1 -0
  25. package/lib/api/utils/createModes.js.map +1 -1
  26. package/lib/api/utils/index.js +1 -0
  27. package/lib/api/utils/index.js.map +1 -1
  28. package/lib/api/utils/resetAxiosBaseUrl.js +3 -2
  29. package/lib/api/utils/resetAxiosBaseUrl.js.map +1 -1
  30. package/lib/components/src/business/loginDialog/LoginDialog.vue.d.ts +9 -0
  31. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +11 -2
  32. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  33. package/lib/components/src/business/loginDialog/loginDialog.d.ts +13 -0
  34. package/lib/components/src/business/loginDialog/loginDialog.js +13 -0
  35. package/lib/components/src/business/loginDialog/loginDialog.js.map +1 -1
  36. package/lib/components/src/composite/searchForm/SearchForm.vue.js +1 -1
  37. package/lib/components/src/composite/searchForm/SearchForm.vue2.js +22 -2
  38. package/lib/components/src/composite/searchForm/SearchForm.vue2.js.map +1 -1
  39. package/lib/giime/version.d.ts +1 -1
  40. package/lib/giime/version.js +1 -1
  41. package/lib/giime/version.js.map +1 -1
  42. package/lib/index.css +84 -84
  43. package/lib/utils/src/http/createModes.d.ts +10 -2
  44. package/lib/utils/src/http/createModes.js +22 -2
  45. package/lib/utils/src/http/createModes.js.map +1 -1
  46. package/lib/utils/src/tenant.js +3 -2
  47. package/lib/utils/src/tenant.js.map +1 -1
  48. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SearchForm.vue2.mjs","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":["_useModel"],"mappings":"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"}
1
+ {"version":3,"file":"SearchForm.vue2.mjs","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":["_useModel"],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const version = "1.0.1";
1
+ export declare const version = "1.0.2-snapshot.2";
@@ -1,4 +1,4 @@
1
- const version = "1.0.1";
1
+ const version = "1.0.2-snapshot.2";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=version.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '1.0.1';\n"],"names":[],"mappings":"AAAO,MAAM,OAAA,GAAU;;;;"}
1
+ {"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '1.0.2-snapshot.2';\n"],"names":[],"mappings":"AAAO,MAAM,OAAA,GAAU;;;;"}
package/es/index.css CHANGED
@@ -887,11 +887,6 @@ video {
887
887
  .gm-group:hover .group-hover\:gm-block {
888
888
  display: block;
889
889
  }
890
-
891
- .gm-range-number .el-form-item[data-v-1ae16d96] {
892
- margin: 0;
893
- }
894
-
895
890
  .gm-upload-pro-file {
896
891
  line-height: normal;
897
892
  }
@@ -930,14 +925,6 @@ video {
930
925
  .gm-upload-pro-file-disabled .el-upload-list__item-status-label {
931
926
  display: none;
932
927
  }
933
- .gm-upload-pro-preview-dialog[data-v-fbc23b01] [data-v-fbc23b01] .el-dialog__body {
934
- padding: 0;
935
- }
936
-
937
- .gm-upload-pro-file-picture-card[data-v-fbc23b01] [data-v-fbc23b01] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-fbc23b01] [data-v-fbc23b01] .el-upload--picture-card {
938
- width: auto;
939
- height: auto;
940
- }
941
928
  .circular[data-v-d7b04fae] {
942
929
  animation: loading-rotate-d7b04fae 2s linear infinite;
943
930
  }
@@ -969,9 +956,51 @@ video {
969
956
  stroke-dashoffset: -120px;
970
957
  }
971
958
  }
972
- [data-v-79615afd] .gmSearchForm .el-form-item {
973
- margin-right: 0;
974
- margin-bottom: 4px;
959
+ .gm-upload-pro-preview-dialog[data-v-fbc23b01] [data-v-fbc23b01] .el-dialog__body {
960
+ padding: 0;
961
+ }
962
+
963
+ .gm-upload-pro-file-picture-card[data-v-fbc23b01] [data-v-fbc23b01] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-fbc23b01] [data-v-fbc23b01] .el-upload--picture-card {
964
+ width: auto;
965
+ height: auto;
966
+ }
967
+
968
+ .gm-range-number .el-form-item[data-v-1ae16d96] {
969
+ margin: 0;
970
+ }
971
+
972
+ .gm-number-interval-single[data-v-4e6f4d6f] {
973
+ border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
974
+ box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
975
+ background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
976
+ }
977
+ .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
978
+ box-shadow: none;
979
+ background: none;
980
+ }
981
+
982
+ .gm-number-interval-close[data-v-4e6f4d6f] {
983
+ display: none;
984
+ color: var(--el-input-icon-color, var(--el-text-color-placeholder));
985
+ }
986
+
987
+ .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
988
+ display: flex;
989
+ }
990
+ .gm-flex-center[data-v-c17deec9] {
991
+ align-items: center;
992
+ }
993
+
994
+ .gm-flex-justify-between[data-v-c17deec9] {
995
+ justify-content: space-between;
996
+ }
997
+ .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
998
+ padding: 0;
999
+ }
1000
+
1001
+ .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 {
1002
+ width: auto;
1003
+ height: auto;
975
1004
  }
976
1005
  .gm-upload-file {
977
1006
  line-height: normal;
@@ -1009,136 +1038,107 @@ video {
1009
1038
  .gm-upload-file-disabled .el-upload-list__item-status-label {
1010
1039
  display: none;
1011
1040
  }
1012
- .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
1013
- padding: 0;
1014
- }
1015
-
1016
- .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 {
1017
- width: auto;
1018
- height: auto;
1019
- }
1020
- .gm-flex-center[data-v-c17deec9] {
1021
- align-items: center;
1022
- }
1023
-
1024
- .gm-flex-justify-between[data-v-c17deec9] {
1025
- justify-content: space-between;
1026
- }
1027
- .gm-number-interval-single[data-v-4e6f4d6f] {
1028
- border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
1029
- box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
1030
- background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
1031
- }
1032
- .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
1033
- box-shadow: none;
1034
- background: none;
1035
- }
1036
-
1037
- .gm-number-interval-close[data-v-4e6f4d6f] {
1038
- display: none;
1039
- color: var(--el-input-icon-color, var(--el-text-color-placeholder));
1040
- }
1041
-
1042
- .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
1043
- display: flex;
1041
+ [data-v-195b27e4] .gmSearchForm .el-form-item {
1042
+ margin-right: 0;
1043
+ margin-bottom: 4px;
1044
1044
  }
1045
- [data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
1045
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
1046
1046
  border-right: none;
1047
1047
  }
1048
1048
 
1049
- [data-v-050a4f74] .gmTableNoBorder .el-table__inner-wrapper:before {
1049
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
1050
1050
  height: 0;
1051
1051
  }
1052
1052
 
1053
- [data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1053
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1054
1054
  height: 0;
1055
1055
  }
1056
1056
 
1057
- [data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
1057
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
1058
1058
  height: 0;
1059
1059
  }
1060
1060
 
1061
- [data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
1061
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
1062
1062
  height: 0;
1063
1063
  }
1064
1064
 
1065
- [data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
1065
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
1066
1066
  height: 0;
1067
1067
  }
1068
- [data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
1068
+ [data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
1069
1069
  border-right: none;
1070
1070
  }
1071
1071
 
1072
- [data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
1072
+ [data-v-050a4f74] .gmTableNoBorder .el-table__inner-wrapper:before {
1073
1073
  height: 0;
1074
1074
  }
1075
1075
 
1076
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1076
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1077
1077
  height: 0;
1078
1078
  }
1079
1079
 
1080
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
1080
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
1081
1081
  height: 0;
1082
1082
  }
1083
1083
 
1084
- [data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
1084
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
1085
1085
  height: 0;
1086
1086
  }
1087
1087
 
1088
- [data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
1088
+ [data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
1089
1089
  height: 0;
1090
1090
  }
1091
1091
  @charset "UTF-8";
1092
- .custom-operate-drawer .el-drawer__header {
1092
+ .table-custom-header-drawer .el-drawer__header {
1093
1093
  padding: 10px 15px;
1094
1094
  margin: 0;
1095
1095
  border-bottom: 1px solid #ebeef5;
1096
1096
  }
1097
- .custom-operate-drawer .el-drawer__title {
1097
+ .table-custom-header-drawer .el-drawer__title {
1098
1098
  font-size: 14px;
1099
1099
  color: #333;
1100
1100
  }
1101
- .custom-operate-drawer .el-drawer__body {
1101
+ .table-custom-header-drawer .el-drawer__body {
1102
1102
  padding: 15px;
1103
1103
  }
1104
- .custom-operate-drawer .el-drawer__footer {
1104
+ .table-custom-header-drawer .el-drawer__footer {
1105
1105
  padding: 10px 15px;
1106
1106
  border-top: 1px solid #ebeef5;
1107
1107
  }
1108
- .custom-operate-drawer .el-checkbox {
1108
+ .table-custom-header-drawer .el-checkbox {
1109
1109
  display: flex;
1110
1110
  align-items: center;
1111
1111
  }
1112
- .custom-operate-drawer .el-input__inner {
1112
+ .table-custom-header-drawer .el-input__inner {
1113
1113
  text-align: center;
1114
1114
  }
1115
- .custom-operate-drawer .el-input__suffix {
1115
+ .table-custom-header-drawer .el-input__suffix {
1116
1116
  position: absolute;
1117
1117
  right: 10px;
1118
1118
  }
1119
- .custom-operate-drawer .custom-content li {
1119
+ .table-custom-header-drawer .custom-content li {
1120
1120
  display: flex;
1121
1121
  align-items: center;
1122
1122
  justify-content: center;
1123
1123
  height: 44px;
1124
1124
  }
1125
- .custom-operate-drawer .custom-group {
1125
+ .table-custom-header-drawer .custom-group {
1126
1126
  max-height: calc(100vh - 226px);
1127
1127
  overflow-y: auto;
1128
1128
  }
1129
- .custom-operate-drawer .custom-group::-webkit-scrollbar {
1129
+ .table-custom-header-drawer .custom-group::-webkit-scrollbar {
1130
1130
  /*滚动条整体样式*/
1131
1131
  width: 4px;
1132
1132
  /*高宽分别对应横竖滚动条的尺寸*/
1133
1133
  height: 1px;
1134
1134
  }
1135
- .custom-operate-drawer .custom-group::-webkit-scrollbar-thumb {
1135
+ .table-custom-header-drawer .custom-group::-webkit-scrollbar-thumb {
1136
1136
  /*滚动条里面小方块*/
1137
1137
  border-radius: 10px;
1138
1138
  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
1139
1139
  background: #999;
1140
1140
  }
1141
- .custom-operate-drawer .custom-group::-webkit-scrollbar-track {
1141
+ .table-custom-header-drawer .custom-group::-webkit-scrollbar-track {
1142
1142
  /*滚动条里面轨道*/
1143
1143
  box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
1144
1144
  border-radius: 10px;
@@ -1154,56 +1154,56 @@ video {
1154
1154
  }
1155
1155
 
1156
1156
  @charset "UTF-8";
1157
- .table-custom-header-drawer .el-drawer__header {
1157
+ .custom-operate-drawer .el-drawer__header {
1158
1158
  padding: 10px 15px;
1159
1159
  margin: 0;
1160
1160
  border-bottom: 1px solid #ebeef5;
1161
1161
  }
1162
- .table-custom-header-drawer .el-drawer__title {
1162
+ .custom-operate-drawer .el-drawer__title {
1163
1163
  font-size: 14px;
1164
1164
  color: #333;
1165
1165
  }
1166
- .table-custom-header-drawer .el-drawer__body {
1166
+ .custom-operate-drawer .el-drawer__body {
1167
1167
  padding: 15px;
1168
1168
  }
1169
- .table-custom-header-drawer .el-drawer__footer {
1169
+ .custom-operate-drawer .el-drawer__footer {
1170
1170
  padding: 10px 15px;
1171
1171
  border-top: 1px solid #ebeef5;
1172
1172
  }
1173
- .table-custom-header-drawer .el-checkbox {
1173
+ .custom-operate-drawer .el-checkbox {
1174
1174
  display: flex;
1175
1175
  align-items: center;
1176
1176
  }
1177
- .table-custom-header-drawer .el-input__inner {
1177
+ .custom-operate-drawer .el-input__inner {
1178
1178
  text-align: center;
1179
1179
  }
1180
- .table-custom-header-drawer .el-input__suffix {
1180
+ .custom-operate-drawer .el-input__suffix {
1181
1181
  position: absolute;
1182
1182
  right: 10px;
1183
1183
  }
1184
- .table-custom-header-drawer .custom-content li {
1184
+ .custom-operate-drawer .custom-content li {
1185
1185
  display: flex;
1186
1186
  align-items: center;
1187
1187
  justify-content: center;
1188
1188
  height: 44px;
1189
1189
  }
1190
- .table-custom-header-drawer .custom-group {
1190
+ .custom-operate-drawer .custom-group {
1191
1191
  max-height: calc(100vh - 226px);
1192
1192
  overflow-y: auto;
1193
1193
  }
1194
- .table-custom-header-drawer .custom-group::-webkit-scrollbar {
1194
+ .custom-operate-drawer .custom-group::-webkit-scrollbar {
1195
1195
  /*滚动条整体样式*/
1196
1196
  width: 4px;
1197
1197
  /*高宽分别对应横竖滚动条的尺寸*/
1198
1198
  height: 1px;
1199
1199
  }
1200
- .table-custom-header-drawer .custom-group::-webkit-scrollbar-thumb {
1200
+ .custom-operate-drawer .custom-group::-webkit-scrollbar-thumb {
1201
1201
  /*滚动条里面小方块*/
1202
1202
  border-radius: 10px;
1203
1203
  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
1204
1204
  background: #999;
1205
1205
  }
1206
- .table-custom-header-drawer .custom-group::-webkit-scrollbar-track {
1206
+ .custom-operate-drawer .custom-group::-webkit-scrollbar-track {
1207
1207
  /*滚动条里面轨道*/
1208
1208
  box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
1209
1209
  border-radius: 10px;
@@ -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
  /**
@@ -15,9 +15,28 @@ const envConfigs = {
15
15
  // 租户:吉客拓客
16
16
  "giiktok.production": { url: "https://manage.kingkungmeta.com", tenant: "giiktok", domain: "manage.kingkungmeta.com" }
17
17
  };
18
+ const isHttpUrl = (value) => !!value && /^https?:\/\//i.test(value);
19
+ const urlToEnvConfig = (url) => {
20
+ let domain = "";
21
+ try {
22
+ domain = new URL(url).hostname;
23
+ } catch {
24
+ domain = "";
25
+ }
26
+ const known = Object.values(envConfigs).find((config) => config.domain === domain);
27
+ return {
28
+ url: url.replace(/\/+$/, ""),
29
+ tenant: known?.tenant ?? "giikin",
30
+ domain
31
+ };
32
+ };
33
+ const resolveEnvConfig = (mode) => {
34
+ if (!mode) return void 0;
35
+ if (isHttpUrl(mode)) return urlToEnvConfig(mode);
36
+ return envConfigs[mode];
37
+ };
18
38
  const getEnvConfig = (mode) => {
19
- if (!mode) return envConfigs.development;
20
- return envConfigs[mode] || envConfigs.development;
39
+ return resolveEnvConfig(mode) ?? envConfigs.development;
21
40
  };
22
41
  const createModes = (options) => {
23
42
  const { developmentPath, serviceType } = options;
@@ -29,5 +48,5 @@ const createModes = (options) => {
29
48
  });
30
49
  };
31
50
 
32
- export { createModes, envConfigs, getEnvConfig };
51
+ export { createModes, envConfigs, getEnvConfig, resolveEnvConfig };
33
52
  //# sourceMappingURL=createModes.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createModes.mjs","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":[],"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,EAAK,OAAA,CAAQ,WAAW,IAAI,CAAA,CAAE,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,EACjE,CAAC,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"createModes.mjs","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":[],"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,EAAK,OAAA,CAAQ,WAAW,IAAI,CAAA,CAAE,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,EACjE,CAAC,CAAA;AACH;;;;"}
@@ -1,13 +1,14 @@
1
1
  import { resetEnvMode } from '../../constants/key.mjs';
2
2
  import { useGlobalConfig } from '../../hooks/base/useGlobalConfig/index.mjs';
3
- import { envConfigs } from './http/createModes.mjs';
3
+ import { resolveEnvConfig, envConfigs } from './http/createModes.mjs';
4
4
 
5
5
  const getTenantType = () => {
6
6
  const hostname = typeof window !== "undefined" ? window.location.hostname : "";
7
7
  const importMetaEnv = useGlobalConfig("env");
8
8
  const mode = importMetaEnv.value[resetEnvMode];
9
- if (mode && envConfigs[mode]) {
10
- return envConfigs[mode].tenant;
9
+ const modeEnvConfig = resolveEnvConfig(mode);
10
+ if (modeEnvConfig) {
11
+ return modeEnvConfig.tenant;
11
12
  }
12
13
  const envConfig = Object.values(envConfigs).find((config) => config.domain === hostname);
13
14
  if (envConfig) {
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.mjs","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":[],"mappings":";;;;AAgBO,MAAM,gBAAgB,MAAkB;AAC7C,EAAA,MAAM,WAAW,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,SAAS,QAAA,GAAW,EAAA;AAC5E,EAAA,MAAM,aAAA,GAAgB,gBAAgB,KAAK,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAM,YAAY,CAAA;AAG7C,EAAA,IAAI,IAAA,IAAQ,UAAA,CAAW,IAAI,CAAA,EAAG;AAC5B,IAAA,OAAO,UAAA,CAAW,IAAI,CAAA,CAAE,MAAA;AAAA,EAC1B;AAGA,EAAA,MAAM,SAAA,GAAY,OAAO,MAAA,CAAO,UAAU,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.mjs","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":[],"mappings":";;;;AAgBO,MAAM,gBAAgB,MAAkB;AAC7C,EAAA,MAAM,WAAW,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,SAAS,QAAA,GAAW,EAAA;AAC5E,EAAA,MAAM,aAAA,GAAgB,gBAAgB,KAAK,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAM,YAAY,CAAA;AAG7C,EAAA,MAAM,aAAA,GAAgB,iBAAiB,IAAI,CAAA;AAC3C,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,OAAO,aAAA,CAAc,MAAA;AAAA,EACvB;AAGA,EAAA,MAAM,SAAA,GAAY,OAAO,MAAA,CAAO,UAAU,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;;;;"}
@@ -7,4 +7,5 @@ var createModes = require('../../utils/src/http/createModes.js');
7
7
  exports.createModes = createModes.createModes;
8
8
  exports.envConfigs = createModes.envConfigs;
9
9
  exports.getEnvConfig = createModes.getEnvConfig;
10
+ exports.resolveEnvConfig = createModes.resolveEnvConfig;
10
11
  //# sourceMappingURL=createModes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createModes.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"createModes.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -15,4 +15,5 @@ exports.setGiimeServiceFactory = createGiimeService.setGiimeServiceFactory;
15
15
  exports.createModes = createModes.createModes;
16
16
  exports.envConfigs = createModes.envConfigs;
17
17
  exports.getEnvConfig = createModes.getEnvConfig;
18
+ exports.resolveEnvConfig = createModes.resolveEnvConfig;
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -19,8 +19,9 @@ const resetAxiosBaseURL = (options) => {
19
19
  return;
20
20
  }
21
21
  const resetMode = importMetaEnv.value[key.resetEnvMode];
22
- if (resetMode && createModes.envConfigs[resetMode]) {
23
- config.baseURL = url.urlJoin(createModes.envConfigs[resetMode].url, serviceType);
22
+ const envConfig = createModes.resolveEnvConfig(resetMode);
23
+ if (envConfig) {
24
+ config.baseURL = url.urlJoin(envConfig.url, serviceType);
24
25
  return;
25
26
  }
26
27
  config.baseURL = serviceType;
@@ -1 +1 @@
1
- {"version":3,"file":"resetAxiosBaseUrl.js","sources":["../../../../../packages/api/utils/resetAxiosBaseUrl.ts"],"sourcesContent":["import { resetEnvMode } from '@giime/constants/key';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { isString } from '@giime/utils/src/is';\nimport { envConfigs } from '@giime/utils/src/http/createModes';\nimport { urlJoin } from '@giime/utils/src/http/url';\nimport type { AxiosInstance, InternalAxiosRequestConfig } from 'axios';\n\nexport interface ResetAxiosBaseURLOpions {\n config: InternalAxiosRequestConfig;\n baseUrlEnvKey: string;\n serviceType: string;\n}\n\n/**\n * 重置请求的baseURL\n * 优先级:环境变量 > resetEnvMode(租户类型) > 默认serviceType\n * @param options\n */\nexport const resetAxiosBaseURL = (options: ResetAxiosBaseURLOpions) => {\n const { config, baseUrlEnvKey, serviceType } = options;\n if (!config.baseURL) {\n const importMetaEnv = useGlobalConfig('env');\n\n // 1. 优先使用环境变量配置的 baseURL\n if (isString(importMetaEnv.value[baseUrlEnvKey])) {\n config.baseURL = importMetaEnv.value[baseUrlEnvKey];\n return;\n }\n // 2. 本地开发 直接使用 giimeDevProxyFn 生成的代理配置\n if (importMetaEnv.value.DEV) {\n config.baseURL = serviceType;\n return;\n }\n\n // 3. 根据 resetEnvMode 获取租户类型/环境模式\n const resetMode = importMetaEnv.value[resetEnvMode];\n if (resetMode && envConfigs[resetMode]) {\n config.baseURL = urlJoin(envConfigs[resetMode].url, serviceType);\n return;\n }\n\n // 4. 默认使用 serviceType\n config.baseURL = serviceType;\n }\n};\n\n/**\n * 重置请求的baseURL 请求拦截器\n */\nexport const resetBaseURLInterceptorsRequest = (service: AxiosInstance, options: Omit<ResetAxiosBaseURLOpions, 'config'>) => {\n // 请求拦截器\n service.interceptors.request.use(\n config => {\n resetAxiosBaseURL({ ...options, config });\n return config;\n },\n error => {\n console.error('请求错误', error); // for debug\n return Promise.reject(error);\n },\n );\n};\n"],"names":["useGlobalConfig","isString","resetEnvMode","envConfigs","urlJoin"],"mappings":";;;;;;;;AAkBO,MAAM,iBAAA,GAAoB,CAAC,OAAA,KAAqC;AACrE,EAAA,MAAM,EAAE,MAAA,EAAQ,aAAA,EAAe,WAAA,EAAY,GAAI,OAAA;AAC/C,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,aAAA,GAAgBA,sBAAgB,KAAK,CAAA;AAG3C,IAAA,IAAIC,WAAA,CAAS,aAAA,CAAc,KAAA,CAAM,aAAa,CAAC,CAAA,EAAG;AAChD,MAAA,MAAA,CAAO,OAAA,GAAU,aAAA,CAAc,KAAA,CAAM,aAAa,CAAA;AAClD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,aAAA,CAAc,MAAM,GAAA,EAAK;AAC3B,MAAA,MAAA,CAAO,OAAA,GAAU,WAAA;AACjB,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,KAAA,CAAMC,gBAAY,CAAA;AAClD,IAAA,IAAI,SAAA,IAAaC,sBAAA,CAAW,SAAS,CAAA,EAAG;AACtC,MAAA,MAAA,CAAO,UAAUC,WAAA,CAAQD,sBAAA,CAAW,SAAS,CAAA,CAAE,KAAK,WAAW,CAAA;AAC/D,MAAA;AAAA,IACF;AAGA,IAAA,MAAA,CAAO,OAAA,GAAU,WAAA;AAAA,EACnB;AACF;AAKO,MAAM,+BAAA,GAAkC,CAAC,OAAA,EAAwB,OAAA,KAAqD;AAE3H,EAAA,OAAA,CAAQ,aAAa,OAAA,CAAQ,GAAA;AAAA,IAC3B,CAAA,MAAA,KAAU;AACR,MAAA,iBAAA,CAAkB,EAAE,GAAG,OAAA,EAAS,MAAA,EAAQ,CAAA;AACxC,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAA,KAAA,KAAS;AACP,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAAQ,KAAK,CAAA;AAC3B,MAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,IAC7B;AAAA,GACF;AACF;;;;;"}
1
+ {"version":3,"file":"resetAxiosBaseUrl.js","sources":["../../../../../packages/api/utils/resetAxiosBaseUrl.ts"],"sourcesContent":["import { resetEnvMode } from '@giime/constants/key';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { isString } from '@giime/utils/src/is';\nimport { resolveEnvConfig } from '@giime/utils/src/http/createModes';\nimport { urlJoin } from '@giime/utils/src/http/url';\nimport type { AxiosInstance, InternalAxiosRequestConfig } from 'axios';\n\nexport interface ResetAxiosBaseURLOpions {\n config: InternalAxiosRequestConfig;\n baseUrlEnvKey: string;\n serviceType: string;\n}\n\n/**\n * 重置请求的baseURL\n * 优先级:环境变量 > resetEnvMode(租户类型) > 默认serviceType\n * @param options\n */\nexport const resetAxiosBaseURL = (options: ResetAxiosBaseURLOpions) => {\n const { config, baseUrlEnvKey, serviceType } = options;\n if (!config.baseURL) {\n const importMetaEnv = useGlobalConfig('env');\n\n // 1. 优先使用环境变量配置的 baseURL\n if (isString(importMetaEnv.value[baseUrlEnvKey])) {\n config.baseURL = importMetaEnv.value[baseUrlEnvKey];\n return;\n }\n // 2. 本地开发 直接使用 giimeDevProxyFn 生成的代理配置\n if (importMetaEnv.value.DEV) {\n config.baseURL = serviceType;\n return;\n }\n\n // 3. 根据 resetEnvMode 获取环境配置(支持预定义 key 或直填完整域名)\n const resetMode = importMetaEnv.value[resetEnvMode];\n const envConfig = resolveEnvConfig(resetMode);\n if (envConfig) {\n config.baseURL = urlJoin(envConfig.url, serviceType);\n return;\n }\n\n // 4. 默认使用 serviceType\n config.baseURL = serviceType;\n }\n};\n\n/**\n * 重置请求的baseURL 请求拦截器\n */\nexport const resetBaseURLInterceptorsRequest = (service: AxiosInstance, options: Omit<ResetAxiosBaseURLOpions, 'config'>) => {\n // 请求拦截器\n service.interceptors.request.use(\n config => {\n resetAxiosBaseURL({ ...options, config });\n return config;\n },\n error => {\n console.error('请求错误', error); // for debug\n return Promise.reject(error);\n },\n );\n};\n"],"names":["useGlobalConfig","isString","resetEnvMode","resolveEnvConfig","urlJoin"],"mappings":";;;;;;;;AAkBO,MAAM,iBAAA,GAAoB,CAAC,OAAA,KAAqC;AACrE,EAAA,MAAM,EAAE,MAAA,EAAQ,aAAA,EAAe,WAAA,EAAY,GAAI,OAAA;AAC/C,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,aAAA,GAAgBA,sBAAgB,KAAK,CAAA;AAG3C,IAAA,IAAIC,WAAA,CAAS,aAAA,CAAc,KAAA,CAAM,aAAa,CAAC,CAAA,EAAG;AAChD,MAAA,MAAA,CAAO,OAAA,GAAU,aAAA,CAAc,KAAA,CAAM,aAAa,CAAA;AAClD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,aAAA,CAAc,MAAM,GAAA,EAAK;AAC3B,MAAA,MAAA,CAAO,OAAA,GAAU,WAAA;AACjB,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,KAAA,CAAMC,gBAAY,CAAA;AAClD,IAAA,MAAM,SAAA,GAAYC,6BAAiB,SAAS,CAAA;AAC5C,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAA,CAAO,OAAA,GAAUC,WAAA,CAAQ,SAAA,CAAU,GAAA,EAAK,WAAW,CAAA;AACnD,MAAA;AAAA,IACF;AAGA,IAAA,MAAA,CAAO,OAAA,GAAU,WAAA;AAAA,EACnB;AACF;AAKO,MAAM,+BAAA,GAAkC,CAAC,OAAA,EAAwB,OAAA,KAAqD;AAE3H,EAAA,OAAA,CAAQ,aAAa,OAAA,CAAQ,GAAA;AAAA,IAC3B,CAAA,MAAA,KAAU;AACR,MAAA,iBAAA,CAAkB,EAAE,GAAG,OAAA,EAAS,MAAA,EAAQ,CAAA;AACxC,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAA,KAAA,KAAS;AACP,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAAQ,KAAK,CAAA;AAC3B,MAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,IAC7B;AAAA,GACF;AACF;;;;;"}
@@ -15,6 +15,10 @@ declare const _default: import("vue").DefineComponent<{
15
15
  type: StringConstructor;
16
16
  default: () => string;
17
17
  };
18
+ extraQuery: {
19
+ type: import("vue").PropType<Record<string, string | number | boolean> | (() => Record<string, string | number | boolean>)>;
20
+ default: () => {};
21
+ };
18
22
  }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
19
23
  needRealodRouteNames: {
20
24
  type: import("vue").PropType<string[]>;
@@ -32,10 +36,15 @@ declare const _default: import("vue").DefineComponent<{
32
36
  type: StringConstructor;
33
37
  default: () => string;
34
38
  };
39
+ extraQuery: {
40
+ type: import("vue").PropType<Record<string, string | number | boolean> | (() => Record<string, string | number | boolean>)>;
41
+ default: () => {};
42
+ };
35
43
  }>>, {
36
44
  needRealodRouteNames: string[];
37
45
  needScanningRouteNames: string[];
38
46
  system: number;
39
47
  redirectUrlField: string;
48
+ extraQuery: Record<string, string | number | boolean> | (() => Record<string, string | number | boolean>);
40
49
  }, {}>;
41
50
  export default _default;
@@ -39,8 +39,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
39
39
  const resetMode = importMetaEnv.value[key.resetEnvMode];
40
40
  const hostname = typeof window !== "undefined" ? window.location.hostname : "";
41
41
  const findEnvConfig = Object.values(createModes.envConfigs).find((config) => config.domain === hostname);
42
- if (resetMode && createModes.envConfigs[resetMode]) {
43
- originLoginUrl = url.urlJoin(createModes.envConfigs[resetMode].url, loginPath);
42
+ const resetEnvConfig = createModes.resolveEnvConfig(resetMode);
43
+ if (resetEnvConfig) {
44
+ originLoginUrl = url.urlJoin(resetEnvConfig.url, loginPath);
44
45
  } else if (findEnvConfig) {
45
46
  originLoginUrl = url.urlJoin(findEnvConfig.url, loginPath);
46
47
  } else if (importMetaEnv.value.DEV) {
@@ -61,6 +62,14 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
61
62
  if (guard_company) {
62
63
  loginUrl.value += `&companyId=${guard_company}`;
63
64
  }
65
+ const extraQuery = typeof props.extraQuery === "function" ? props.extraQuery() : props.extraQuery;
66
+ if (extraQuery) {
67
+ Object.entries(extraQuery).forEach(([key, value]) => {
68
+ if (value !== void 0 && value !== null) {
69
+ loginUrl.value += `&${key}=${encodeURIComponent(value)}`;
70
+ }
71
+ });
72
+ }
64
73
  loginUrl.value += `&${props.redirectUrlField}=${protocol}//${host}${myPath}`;
65
74
  console.log(loginUrl.value);
66
75
  if (is.isMobile() || is.isDingTalk()) {