giime 0.6.0-dev.9 → 0.6.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.
- package/dist/index.css +48 -48
- package/es/api/materialApi/cross/getAliOssConfigs.d.ts +14 -0
- package/es/api/materialApi/cross/getAliOssConfigs.mjs +8 -0
- package/es/api/materialApi/cross/getAliOssConfigs.mjs.map +1 -0
- package/es/api/materialApi/cross/index.d.ts +1 -1
- package/es/api/materialApi/cross/index.mjs +1 -1
- package/es/api/materialApi/index.mjs +1 -1
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +2 -2
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
- package/es/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +56 -52
- package/es/components/src/business/uploadMaterial/UploadMaterial.vue2.mjs +11 -6
- package/es/components/src/business/uploadMaterial/UploadMaterial.vue2.mjs.map +1 -1
- package/es/components/src/business/uploadMaterial/index.d.ts +8 -4
- package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs +18 -16
- package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +11 -12
- package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +31 -23
- package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/index.d.ts +22 -30
- package/es/components/src/composite/uploadFile/uploadFile.d.ts +30 -28
- package/es/components/src/composite/uploadFile/uploadFile.mjs.map +1 -1
- package/es/giime/index.mjs +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/hooks/index.mjs +1 -1
- package/es/hooks/store/index.d.ts +1 -1
- package/es/hooks/store/index.mjs +1 -1
- package/es/hooks/store/useAliOssConfigs/index.d.ts +20 -0
- package/es/hooks/store/useAliOssConfigs/index.mjs +31 -0
- package/es/hooks/store/useAliOssConfigs/index.mjs.map +1 -0
- package/es/hooks/store/useLogin/index.d.ts +9 -9
- package/es/hooks/store/useLogin/index.mjs.map +1 -1
- package/es/index.css +48 -48
- package/es/utils/src/alioss/aliossPutHook.mjs +5 -2
- package/es/utils/src/alioss/aliossPutHook.mjs.map +1 -1
- package/es/utils/src/alioss/aliossToken.d.ts +6 -6
- package/es/utils/src/alioss/aliossToken.mjs +1 -1
- package/es/utils/src/alioss/aliossToken.mjs.map +1 -1
- package/lib/api/materialApi/cross/getAliOssConfigs.d.ts +14 -0
- package/lib/api/materialApi/cross/getAliOssConfigs.js +10 -0
- package/lib/api/materialApi/cross/getAliOssConfigs.js.map +1 -0
- package/lib/api/materialApi/cross/index.d.ts +1 -1
- package/lib/api/materialApi/cross/index.js +2 -2
- package/lib/api/materialApi/index.js +2 -2
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +2 -2
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
- package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +56 -52
- package/lib/components/src/business/uploadMaterial/UploadMaterial.vue2.js +11 -6
- package/lib/components/src/business/uploadMaterial/UploadMaterial.vue2.js.map +1 -1
- package/lib/components/src/business/uploadMaterial/index.d.ts +8 -4
- package/lib/components/src/composite/fileComponent/FileComponent.vue2.js +18 -16
- package/lib/components/src/composite/fileComponent/FileComponent.vue2.js.map +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +11 -12
- package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +31 -23
- package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
- package/lib/components/src/composite/uploadFile/index.d.ts +22 -30
- package/lib/components/src/composite/uploadFile/uploadFile.d.ts +30 -28
- package/lib/components/src/composite/uploadFile/uploadFile.js.map +1 -1
- package/lib/giime/index.js +2 -2
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/hooks/index.js +2 -2
- package/lib/hooks/store/index.d.ts +1 -1
- package/lib/hooks/store/index.js +2 -2
- package/lib/hooks/store/useAliOssConfigs/index.d.ts +20 -0
- package/lib/hooks/store/useAliOssConfigs/index.js +33 -0
- package/lib/hooks/store/useAliOssConfigs/index.js.map +1 -0
- package/lib/hooks/store/useLogin/index.d.ts +9 -9
- package/lib/hooks/store/useLogin/index.js.map +1 -1
- package/lib/index.css +48 -48
- package/lib/utils/src/alioss/aliossPutHook.js +5 -2
- package/lib/utils/src/alioss/aliossPutHook.js.map +1 -1
- package/lib/utils/src/alioss/aliossToken.d.ts +6 -6
- package/lib/utils/src/alioss/aliossToken.js +1 -1
- package/lib/utils/src/alioss/aliossToken.js.map +1 -1
- package/package.json +1 -1
- package/es/api/materialApi/cross/getAliOssConfigIds.d.ts +0 -14
- package/es/api/materialApi/cross/getAliOssConfigIds.mjs +0 -8
- package/es/api/materialApi/cross/getAliOssConfigIds.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/excel.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/excel.svg.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/pdf.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/pdf.svg.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/ppt.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/ppt.svg.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/psd.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/psd.svg.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/text.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/text.svg.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/unknown.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/unknown.svg.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/word.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/word.svg.mjs.map +0 -1
- package/es/components/src/composite/fileComponent/assets/image/zip.svg.mjs +0 -4
- package/es/components/src/composite/fileComponent/assets/image/zip.svg.mjs.map +0 -1
- package/es/hooks/store/useAliOssConfigIds/index.d.ts +0 -20
- package/es/hooks/store/useAliOssConfigIds/index.mjs +0 -31
- package/es/hooks/store/useAliOssConfigIds/index.mjs.map +0 -1
- package/lib/api/materialApi/cross/getAliOssConfigIds.d.ts +0 -14
- package/lib/api/materialApi/cross/getAliOssConfigIds.js +0 -10
- package/lib/api/materialApi/cross/getAliOssConfigIds.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/excel.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/excel.svg.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/pdf.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/pdf.svg.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/ppt.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/ppt.svg.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/psd.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/psd.svg.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/text.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/text.svg.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/unknown.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/unknown.svg.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/word.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/word.svg.js.map +0 -1
- package/lib/components/src/composite/fileComponent/assets/image/zip.svg.js +0 -8
- package/lib/components/src/composite/fileComponent/assets/image/zip.svg.js.map +0 -1
- package/lib/hooks/store/useAliOssConfigIds/index.d.ts +0 -20
- package/lib/hooks/store/useAliOssConfigIds/index.js +0 -33
- package/lib/hooks/store/useAliOssConfigIds/index.js.map +0 -1
package/es/giime/index.mjs
CHANGED
|
@@ -316,7 +316,7 @@ export { useAreaListStore } from '../hooks/store/userCenter/useAreaList/index.mj
|
|
|
316
316
|
export { useRoleListStore } from '../hooks/store/userCenter/useRoleList/index.mjs';
|
|
317
317
|
export { useOrgTreeListStore } from '../hooks/store/userCenter/useOrgTreeList/index.mjs';
|
|
318
318
|
export { usePlatformListStore } from '../hooks/store/usePlatformList/index.mjs';
|
|
319
|
-
export {
|
|
319
|
+
export { useAliOssConfigsStore } from '../hooks/store/useAliOssConfigs/index.mjs';
|
|
320
320
|
|
|
321
321
|
const install = installer.install;
|
|
322
322
|
const version = installer.version;
|
package/es/giime/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.6.
|
|
1
|
+
export declare const version = "0.6.1";
|
package/es/giime/version.mjs
CHANGED
package/es/giime/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.6.
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.6.1';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
|
package/es/hooks/index.mjs
CHANGED
|
@@ -23,5 +23,5 @@ export { useAreaListStore } from './store/userCenter/useAreaList/index.mjs';
|
|
|
23
23
|
export { useRoleListStore } from './store/userCenter/useRoleList/index.mjs';
|
|
24
24
|
export { useOrgTreeListStore } from './store/userCenter/useOrgTreeList/index.mjs';
|
|
25
25
|
export { usePlatformListStore } from './store/usePlatformList/index.mjs';
|
|
26
|
-
export {
|
|
26
|
+
export { useAliOssConfigsStore } from './store/useAliOssConfigs/index.mjs';
|
|
27
27
|
//# sourceMappingURL=index.mjs.map
|
package/es/hooks/store/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ export { useRepiteFilterStore } from './useRepiteFilter/index.mjs';
|
|
|
10
10
|
import './common/index.mjs';
|
|
11
11
|
import './userCenter/index.mjs';
|
|
12
12
|
export { usePlatformListStore } from './usePlatformList/index.mjs';
|
|
13
|
-
export {
|
|
13
|
+
export { useAliOssConfigsStore } from './useAliOssConfigs/index.mjs';
|
|
14
14
|
export { useCurrencyListStore } from './common/useCurrencyList/index.mjs';
|
|
15
15
|
export { useCountryListStore } from './common/useCountryList/index.mjs';
|
|
16
16
|
export { useSystemListStore } from './common/useSystemList/index.mjs';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** 阿里云oss配置id */
|
|
2
|
+
export declare const useAliOssConfigsStore: import("pinia").StoreDefinition<"gmaliOssConfigs", import("pinia")._UnwrapAll<Pick<{
|
|
3
|
+
isLoading: import("vue").Ref<boolean>;
|
|
4
|
+
aliOssConfigs: import("vue").Ref<{
|
|
5
|
+
config_ids: string[];
|
|
6
|
+
} | null>;
|
|
7
|
+
getaliOssConfigsAsync: () => Promise<void>;
|
|
8
|
+
}, "isLoading" | "aliOssConfigs">>, Pick<{
|
|
9
|
+
isLoading: import("vue").Ref<boolean>;
|
|
10
|
+
aliOssConfigs: import("vue").Ref<{
|
|
11
|
+
config_ids: string[];
|
|
12
|
+
} | null>;
|
|
13
|
+
getaliOssConfigsAsync: () => Promise<void>;
|
|
14
|
+
}, never>, Pick<{
|
|
15
|
+
isLoading: import("vue").Ref<boolean>;
|
|
16
|
+
aliOssConfigs: import("vue").Ref<{
|
|
17
|
+
config_ids: string[];
|
|
18
|
+
} | null>;
|
|
19
|
+
getaliOssConfigsAsync: () => Promise<void>;
|
|
20
|
+
}, "getaliOssConfigsAsync">>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ref, onMounted } from 'vue';
|
|
2
|
+
import { defineStore } from 'pinia';
|
|
3
|
+
import '../../../api/materialApi/index.mjs';
|
|
4
|
+
import { getAliOssConfigs } from '../../../api/materialApi/cross/getAliOssConfigs.mjs';
|
|
5
|
+
|
|
6
|
+
const useAliOssConfigsStore = defineStore("gmaliOssConfigs", () => {
|
|
7
|
+
const aliOssConfigs = ref(null);
|
|
8
|
+
const isLoading = ref(false);
|
|
9
|
+
const getaliOssConfigsAsync = async () => {
|
|
10
|
+
if (aliOssConfigs.value)
|
|
11
|
+
return;
|
|
12
|
+
isLoading.value = true;
|
|
13
|
+
try {
|
|
14
|
+
const { data } = await getAliOssConfigs();
|
|
15
|
+
aliOssConfigs.value = data.data;
|
|
16
|
+
} finally {
|
|
17
|
+
isLoading.value = false;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
onMounted(() => {
|
|
21
|
+
getaliOssConfigsAsync();
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
isLoading,
|
|
25
|
+
aliOssConfigs,
|
|
26
|
+
getaliOssConfigsAsync
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export { useAliOssConfigsStore };
|
|
31
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/store/useAliOssConfigs/index.ts"],"sourcesContent":["import { onMounted, ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { type GetAliOssConfigsResponseData, getAliOssConfigs } from '@giime/api/materialApi';\r\n\r\n/** 阿里云oss配置id */\r\nexport const useAliOssConfigsStore = defineStore('gmaliOssConfigs', () => {\r\n const aliOssConfigs = ref<GetAliOssConfigsResponseData | null>(null);\r\n const isLoading = ref(false);\r\n\r\n const getaliOssConfigsAsync = async () => {\r\n if (aliOssConfigs.value) return;\r\n isLoading.value = true;\r\n try {\r\n const { data } = await getAliOssConfigs();\r\n aliOssConfigs.value = data.data;\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n getaliOssConfigsAsync();\r\n });\r\n\r\n return {\r\n isLoading,\r\n aliOssConfigs,\r\n getaliOssConfigsAsync,\r\n };\r\n});\r\n"],"names":[],"mappings":";;;;;AAKa,MAAA,qBAAA,GAAwB,WAAY,CAAA,iBAAA,EAAmB,MAAM;AACxE,EAAM,MAAA,aAAA,GAAgB,IAAyC,IAAI,CAAA,CAAA;AACnE,EAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAE3B,EAAA,MAAM,wBAAwB,YAAY;AACxC,IAAA,IAAI,aAAc,CAAA,KAAA;AAAO,MAAA,OAAA;AACzB,IAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,IAAI,IAAA;AACF,MAAA,MAAM,EAAE,IAAA,EAAS,GAAA,MAAM,gBAAiB,EAAA,CAAA;AACxC,MAAA,aAAA,CAAc,QAAQ,IAAK,CAAA,IAAA,CAAA;AAAA,KAC3B,SAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAsB,qBAAA,EAAA,CAAA;AAAA,GACvB,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,GACF,CAAA;AACF,CAAC;;;;"}
|
|
@@ -11,11 +11,11 @@ export declare const useLoginStore: import("pinia").StoreDefinition<"gmLoginStor
|
|
|
11
11
|
showLogin: import("vue").Ref<boolean>;
|
|
12
12
|
userToken: import("@vueuse/shared").RemovableRef<string | undefined>;
|
|
13
13
|
userId: import("@vueuse/shared").RemovableRef<string | undefined>;
|
|
14
|
-
triggerLoginResult: EventHookTrigger<
|
|
14
|
+
triggerLoginResult: EventHookTrigger<any>;
|
|
15
15
|
/** 监听登录成功*/
|
|
16
|
-
onLoginResult: EventHookOn<
|
|
16
|
+
onLoginResult: EventHookOn<any>;
|
|
17
17
|
/** 监听登录成功 promise版 */
|
|
18
|
-
onLoginResultPromise: () => Promise<
|
|
18
|
+
onLoginResultPromise: () => Promise<unknown>;
|
|
19
19
|
/**监听登录弹窗关闭 promise版 */
|
|
20
20
|
onCloseLoginResultPromise: () => Promise<undefined>;
|
|
21
21
|
}, "showLogin" | "userToken" | "userId">>, Pick<{
|
|
@@ -23,11 +23,11 @@ export declare const useLoginStore: import("pinia").StoreDefinition<"gmLoginStor
|
|
|
23
23
|
showLogin: import("vue").Ref<boolean>;
|
|
24
24
|
userToken: import("@vueuse/shared").RemovableRef<string | undefined>;
|
|
25
25
|
userId: import("@vueuse/shared").RemovableRef<string | undefined>;
|
|
26
|
-
triggerLoginResult: EventHookTrigger<
|
|
26
|
+
triggerLoginResult: EventHookTrigger<any>;
|
|
27
27
|
/** 监听登录成功*/
|
|
28
|
-
onLoginResult: EventHookOn<
|
|
28
|
+
onLoginResult: EventHookOn<any>;
|
|
29
29
|
/** 监听登录成功 promise版 */
|
|
30
|
-
onLoginResultPromise: () => Promise<
|
|
30
|
+
onLoginResultPromise: () => Promise<unknown>;
|
|
31
31
|
/**监听登录弹窗关闭 promise版 */
|
|
32
32
|
onCloseLoginResultPromise: () => Promise<undefined>;
|
|
33
33
|
}, never>, Pick<{
|
|
@@ -35,11 +35,11 @@ export declare const useLoginStore: import("pinia").StoreDefinition<"gmLoginStor
|
|
|
35
35
|
showLogin: import("vue").Ref<boolean>;
|
|
36
36
|
userToken: import("@vueuse/shared").RemovableRef<string | undefined>;
|
|
37
37
|
userId: import("@vueuse/shared").RemovableRef<string | undefined>;
|
|
38
|
-
triggerLoginResult: EventHookTrigger<
|
|
38
|
+
triggerLoginResult: EventHookTrigger<any>;
|
|
39
39
|
/** 监听登录成功*/
|
|
40
|
-
onLoginResult: EventHookOn<
|
|
40
|
+
onLoginResult: EventHookOn<any>;
|
|
41
41
|
/** 监听登录成功 promise版 */
|
|
42
|
-
onLoginResultPromise: () => Promise<
|
|
42
|
+
onLoginResultPromise: () => Promise<unknown>;
|
|
43
43
|
/**监听登录弹窗关闭 promise版 */
|
|
44
44
|
onCloseLoginResultPromise: () => Promise<undefined>;
|
|
45
45
|
}, "triggerLoginResult" | "onLoginResult" | "onLoginResultPromise" | "onCloseLoginResultPromise">>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/store/useLogin/index.ts"],"sourcesContent":["import { ref, watch } from 'vue';\
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/store/useLogin/index.ts"],"sourcesContent":["import { ref, watch } from 'vue';\nimport { defineStore } from 'pinia';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type EventHookOn, type EventHookTrigger, createEventHook, useSessionStorage } from '@vueuse/core';\n/**监听登录成功响应的数据 */\nexport interface LoggedResultData {\n token: string;\n userId: string;\n}\n/**登录store */\nexport const useLoginStore = defineStore('gmLoginStore', () => {\n const showLogin = ref(false);\n const userToken = useSessionStorage<string | undefined>('gmUserToken', undefined);\n const userId = useSessionStorage<string | undefined>('gmUserId', undefined);\n const loginResult = createEventHook();\n const triggerLoginResult = loginResult.trigger;\n /**监听登录成功 promise版 */\n const onLoginResultPromise = () =>\n new Promise(resolve => {\n loginResult.on(resolve);\n });\n /**关闭登录弹窗事件 */\n const closeLoginResult = createEventHook();\n const triggerCloseLoginResult = closeLoginResult.trigger;\n /**监听登录弹窗关闭 promise版 */\n const onCloseLoginResultPromise = () =>\n new Promise<undefined>(resolve => {\n closeLoginResult.on(resolve);\n });\n watch(showLogin, newValue => {\n if (!newValue) {\n triggerCloseLoginResult();\n }\n });\n return {\n /**是否显示登录弹窗 */\n showLogin,\n userToken,\n userId,\n triggerLoginResult,\n /** 监听登录成功*/\n onLoginResult: loginResult.on,\n /** 监听登录成功 promise版 */\n onLoginResultPromise,\n /**监听登录弹窗关闭 promise版 */\n onCloseLoginResultPromise,\n };\n});\n"],"names":[],"mappings":";;;;AAUa,MAAA,aAAA,GAAgB,WAAY,CAAA,cAAA,EAAgB,MAAM;AAC7D,EAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAC3B,EAAM,MAAA,SAAA,GAAY,iBAAsC,CAAA,aAAA,EAAe,KAAS,CAAA,CAAA,CAAA;AAChF,EAAM,MAAA,MAAA,GAAS,iBAAsC,CAAA,UAAA,EAAY,KAAS,CAAA,CAAA,CAAA;AAC1E,EAAA,MAAM,cAAc,eAAgB,EAAA,CAAA;AACpC,EAAA,MAAM,qBAAqB,WAAY,CAAA,OAAA,CAAA;AAEvC,EAAA,MAAM,oBAAuB,GAAA,MAC3B,IAAI,OAAA,CAAQ,CAAW,OAAA,KAAA;AACrB,IAAA,WAAA,CAAY,GAAG,OAAO,CAAA,CAAA;AAAA,GACvB,CAAA,CAAA;AAEH,EAAA,MAAM,mBAAmB,eAAgB,EAAA,CAAA;AACzC,EAAA,MAAM,0BAA0B,gBAAiB,CAAA,OAAA,CAAA;AAEjD,EAAA,MAAM,yBAA4B,GAAA,MAChC,IAAI,OAAA,CAAmB,CAAW,OAAA,KAAA;AAChC,IAAA,gBAAA,CAAiB,GAAG,OAAO,CAAA,CAAA;AAAA,GAC5B,CAAA,CAAA;AACH,EAAA,KAAA,CAAM,WAAW,CAAY,QAAA,KAAA;AAC3B,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAwB,uBAAA,EAAA,CAAA;AAAA,KAC1B;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA;AAAA;AAAA,IAEL,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,kBAAA;AAAA;AAAA,IAEA,eAAe,WAAY,CAAA,EAAA;AAAA;AAAA,IAE3B,oBAAA;AAAA;AAAA,IAEA,yBAAA;AAAA,GACF,CAAA;AACF,CAAC;;;;"}
|
package/es/index.css
CHANGED
|
@@ -813,6 +813,24 @@ video {
|
|
|
813
813
|
.gm-flex-justify-between[data-v-2a79bac9] {
|
|
814
814
|
justify-content: space-between;
|
|
815
815
|
}
|
|
816
|
+
.gm-number-interval-single[data-v-47a13fd0] {
|
|
817
|
+
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
818
|
+
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
819
|
+
background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
|
|
820
|
+
}
|
|
821
|
+
.gm-number-interval-single[data-v-47a13fd0] [data-v-47a13fd0] .el-input__wrapper {
|
|
822
|
+
box-shadow: none;
|
|
823
|
+
background: none;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
.gm-number-interval-close[data-v-47a13fd0] {
|
|
827
|
+
display: none;
|
|
828
|
+
color: var(--el-input-icon-color, var(--el-text-color-placeholder));
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
.gm-number-interval-single[data-v-47a13fd0]:hover .gm-number-interval-close[data-v-47a13fd0] {
|
|
832
|
+
display: flex;
|
|
833
|
+
}
|
|
816
834
|
.circular[data-v-b391445c] {
|
|
817
835
|
animation: loading-rotate-b391445c 2s linear infinite;
|
|
818
836
|
}
|
|
@@ -844,62 +862,17 @@ video {
|
|
|
844
862
|
stroke-dashoffset: -120px;
|
|
845
863
|
}
|
|
846
864
|
}
|
|
847
|
-
.gm-
|
|
848
|
-
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
849
|
-
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
850
|
-
background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
|
|
851
|
-
}
|
|
852
|
-
.gm-number-interval-single[data-v-47a13fd0] [data-v-47a13fd0] .el-input__wrapper {
|
|
853
|
-
box-shadow: none;
|
|
854
|
-
background: none;
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
.gm-number-interval-close[data-v-47a13fd0] {
|
|
858
|
-
display: none;
|
|
859
|
-
color: var(--el-input-icon-color, var(--el-text-color-placeholder));
|
|
860
|
-
}
|
|
861
|
-
|
|
862
|
-
.gm-number-interval-single[data-v-47a13fd0]:hover .gm-number-interval-close[data-v-47a13fd0] {
|
|
863
|
-
display: flex;
|
|
864
|
-
}
|
|
865
|
-
.gm-upload-preview-dialog[data-v-0c250aad] [data-v-0c250aad] .el-dialog__body {
|
|
865
|
+
.gm-upload-preview-dialog[data-v-142ef678] [data-v-142ef678] .el-dialog__body {
|
|
866
866
|
padding: 0;
|
|
867
867
|
}
|
|
868
868
|
|
|
869
|
-
.gm-upload-file-picture-card[data-v-
|
|
869
|
+
.gm-upload-file-picture-card[data-v-142ef678] [data-v-142ef678] .el-upload-list__item, .gm-upload-file-picture-card[data-v-142ef678] [data-v-142ef678] .el-upload--picture-card {
|
|
870
870
|
width: 120px;
|
|
871
871
|
height: 120px;
|
|
872
872
|
display: flex;
|
|
873
873
|
align-items: center;
|
|
874
874
|
justify-content: center;
|
|
875
875
|
}
|
|
876
|
-
[data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
877
|
-
border-right: none;
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
[data-v-668dc408] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
881
|
-
height: 0;
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
[data-v-668dc408] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
885
|
-
height: 0;
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
[data-v-668dc408] .gmTableNoBorder.el-table--border:after {
|
|
889
|
-
height: 0;
|
|
890
|
-
}
|
|
891
|
-
|
|
892
|
-
[data-v-668dc408] .gmTableNoBorder.el-table--border:before {
|
|
893
|
-
height: 0;
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
[data-v-668dc408] .gmTableNoBorder .el-table__border-left-patch {
|
|
897
|
-
height: 0;
|
|
898
|
-
}
|
|
899
|
-
[data-v-7b6755e2] .gmSearchForm .el-form-item {
|
|
900
|
-
margin-right: 0;
|
|
901
|
-
margin-bottom: 4px;
|
|
902
|
-
}
|
|
903
876
|
.gm-upload-file {
|
|
904
877
|
line-height: normal;
|
|
905
878
|
}
|
|
@@ -920,12 +893,39 @@ video {
|
|
|
920
893
|
display: flex;
|
|
921
894
|
}
|
|
922
895
|
|
|
923
|
-
.gm-upload-file-disabled .
|
|
896
|
+
.gm-upload-file-disabled .el-upload--picture-card {
|
|
924
897
|
display: none;
|
|
925
898
|
}
|
|
926
899
|
.gm-upload-file-disabled .el-upload-list__item-status-label {
|
|
927
900
|
display: none;
|
|
928
901
|
}
|
|
902
|
+
[data-v-7b6755e2] .gmSearchForm .el-form-item {
|
|
903
|
+
margin-right: 0;
|
|
904
|
+
margin-bottom: 4px;
|
|
905
|
+
}
|
|
906
|
+
[data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
907
|
+
border-right: none;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
[data-v-668dc408] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
911
|
+
height: 0;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
[data-v-668dc408] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
915
|
+
height: 0;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
[data-v-668dc408] .gmTableNoBorder.el-table--border:after {
|
|
919
|
+
height: 0;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
[data-v-668dc408] .gmTableNoBorder.el-table--border:before {
|
|
923
|
+
height: 0;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
[data-v-668dc408] .gmTableNoBorder .el-table__border-left-patch {
|
|
927
|
+
height: 0;
|
|
928
|
+
}
|
|
929
929
|
|
|
930
930
|
.pagination-container[data-v-19230954] {
|
|
931
931
|
background: #fff;
|
|
@@ -103,7 +103,10 @@ const useAliossHookStore = defineStore("aliossHook", () => {
|
|
|
103
103
|
ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,
|
|
104
104
|
...options
|
|
105
105
|
};
|
|
106
|
-
const
|
|
106
|
+
const bucketName = bucket || "giikin-material";
|
|
107
|
+
const { AccessKeyId, AccessKeySecret, SecurityToken } = await useAliossTokenStore().getAliossTokenAsync({
|
|
108
|
+
config_id: bucketName
|
|
109
|
+
});
|
|
107
110
|
const client = new AliOss({
|
|
108
111
|
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
|
|
109
112
|
region: "oss-cn-shenzhen",
|
|
@@ -114,7 +117,7 @@ const useAliossHookStore = defineStore("aliossHook", () => {
|
|
|
114
117
|
// 刷新临时访问凭证的时间间隔,单位为毫秒。
|
|
115
118
|
refreshSTSTokenInterval: 3e5,
|
|
116
119
|
// 填写Bucket名称。
|
|
117
|
-
bucket:
|
|
120
|
+
bucket: bucketName
|
|
118
121
|
});
|
|
119
122
|
const upload = options.parallel === 1 ? "put" : "multipartUpload";
|
|
120
123
|
const { res } = await client[upload](path, file, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliossPutHook.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossPutHook.ts"],"sourcesContent":["import { defineStore } from 'pinia';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport { md5 } from 'js-md5';\r\nimport AliOss from 'ali-oss';\r\nimport { type PostSaveFileResourcesData, getAdFileExist, postSaveFileResources } from '@giime/api/materialApi';\r\nimport useAliossTokenStore from './aliossToken';\r\n\r\nexport type PostSaveFileResponse = PostSaveFileResourcesData;\r\nexport type UploadAliOssFile = File & { uid: number };\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: UploadAliOssFile;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储路径 */\r\n folder?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 并行上传数量 */\r\n parallel?: number;\r\n /** 并行分片大小 */\r\n partSize?: number;\r\n /** 阿里上传配置 */\r\n options?: { [key: string]: any };\r\n /** 阿里服务器 Bucket 名称 */\r\n bucket?: string;\r\n /** cdn */\r\n cdn?: string;\r\n /** 文件是否保存入库 */\r\n saveStore?: boolean;\r\n};\r\n\r\n/** 返回数据 */\r\nexport type AliOssResponse = {\r\n /** 文件地址 */\r\n url: string;\r\n /** 文件名 */\r\n name: string;\r\n /** 文件唯一标识 */\r\n uid: number;\r\n /** 文件最后修改时间 */\r\n lastModified: number;\r\n /** 文件md5 */\r\n md5: string;\r\n /** 文件大小 */\r\n size: number;\r\n /** 文件后缀 */\r\n type: string;\r\n /** 文件库是否存在 */\r\n isExist: boolean;\r\n};\r\n\r\nexport const ts_md5_file = (file: File) => {\r\n return new Promise<string>(resolve => {\r\n const reader = new FileReader();\r\n reader.onload = async function (e) {\r\n const binary = (e.target as any).result;\r\n resolve(md5(binary));\r\n };\r\n reader.readAsArrayBuffer(file);\r\n });\r\n};\r\n\r\n/** 文件分片 */\r\nexport const getParallelPartSize = (size: number) => {\r\n const thresholds = [\r\n {\r\n max: 5,\r\n parallel: 1,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 10,\r\n parallel: 2,\r\n multiplier: 4,\r\n },\r\n {\r\n max: 30,\r\n parallel: 4,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 50,\r\n parallel: 6,\r\n multiplier: 6,\r\n },\r\n {\r\n max: Number.POSITIVE_INFINITY,\r\n parallel: 8,\r\n multiplier: 8,\r\n },\r\n ];\r\n const { parallel, multiplier } = thresholds.find(({ max }) => size <= max) || thresholds[thresholds.length - 1];\r\n\r\n return {\r\n parallel,\r\n partSize: multiplier * 1024 * 1024,\r\n };\r\n};\r\n\r\n/** 上传 Hook */\r\nexport const useAliossHookStore = defineStore('aliossHook', () => {\r\n const aliossResult = createEventHook<AliOssResponse>();\r\n const aliossError = createEventHook<any>();\r\n const saveFileResult = createEventHook<PostSaveFileResponse>();\r\n const saveFileError = createEventHook<any>();\r\n\r\n /** 检测广告素材是否已存在 */\r\n const getFileExist = async ({\r\n md5Code,\r\n ext,\r\n name,\r\n size,\r\n uid,\r\n lastModified,\r\n }: {\r\n md5Code: string;\r\n ext: string;\r\n name: string;\r\n size: number;\r\n uid: number;\r\n lastModified: number;\r\n }) => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise<AliOssResponse | false>(async resolve => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0 || data.data.count === 0) {\r\n return resolve(false);\r\n }\r\n const result = {\r\n name,\r\n uid,\r\n lastModified,\r\n size,\r\n url: data.data.url,\r\n md5: md5Code,\r\n type: ext,\r\n isExist: true,\r\n };\r\n resolve(result);\r\n aliossResult.trigger(result);\r\n });\r\n };\r\n\r\n /** 上传文件 */\r\n const uploadFile = async ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => {\r\n let { name, uid, lastModified, size } = file;\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n const md5Code = await ts_md5_file(file);\r\n const FileName = name + ext;\r\n const type = ext.replaceAll('.', '');\r\n\r\n try {\r\n let result = await getFileExist({ md5Code, ext: type, name: FileName, size, uid, lastModified });\r\n if (result) return result;\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const path = `${folder ?? 'material'}/${seat ?? 'default'}/file-${timestr}-${md5Code}${ext}`;\r\n\r\n const P = getParallelPartSize(size);\r\n options = {\r\n ...P,\r\n ...{ parallel, partSize },\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n ...options,\r\n };\r\n\r\n // 阿里云临时上传权限\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await useAliossTokenStore().getAliossTokenAsync({ config_id: null });\r\n\r\n const client = new AliOss({\r\n // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。\r\n region: 'oss-cn-shenzhen',\r\n // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。\r\n accessKeyId: AccessKeyId,\r\n accessKeySecret: AccessKeySecret,\r\n stsToken: SecurityToken,\r\n // 刷新临时访问凭证的时间间隔,单位为毫秒。\r\n refreshSTSTokenInterval: 300000,\r\n // 填写Bucket名称。\r\n bucket: bucket ?? 'giikin-material',\r\n });\r\n\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n const { res } = await client[upload](path, file, options);\r\n if (res.status !== 200) {\r\n aliossError.trigger(res);\r\n return res;\r\n }\r\n cdn = cdn ?? 'https://sucai.giikin.cn/';\r\n const resultUrl = cdn + path;\r\n result = {\r\n url: resultUrl,\r\n name: name + ext,\r\n md5: md5Code,\r\n type: ext.replaceAll('.', ''),\r\n uid,\r\n lastModified,\r\n size,\r\n isExist: false,\r\n };\r\n if (saveStore) {\r\n postSaveFile({ url: resultUrl, md5_code: md5Code, file_size: size });\r\n }\r\n aliossResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n aliossError.trigger(error);\r\n return error;\r\n }\r\n };\r\n\r\n /** 文件入库 */\r\n const postSaveFile = async ({ url, md5_code, file_size }: PostSaveFileResourcesData) => {\r\n try {\r\n const { data } = await postSaveFileResources({ fileData: { url, md5_code, file_size } });\r\n if (data?.code !== 0) {\r\n saveFileError.trigger(data);\r\n return data;\r\n }\r\n const result = {\r\n url,\r\n md5_code,\r\n file_size,\r\n };\r\n saveFileResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n saveFileError.trigger(error);\r\n return error;\r\n }\r\n };\r\n return {\r\n aliossResult: aliossResult.on,\r\n aliossError: aliossError.on,\r\n saveFileResult: saveFileResult.on,\r\n saveFileError: saveFileError.on,\r\n uploadFile,\r\n postSaveFile,\r\n };\r\n});\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aliossPutHook.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossPutHook.ts"],"sourcesContent":["import { defineStore } from 'pinia';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport { md5 } from 'js-md5';\r\nimport AliOss from 'ali-oss';\r\nimport { type PostSaveFileResourcesData, getAdFileExist, postSaveFileResources } from '@giime/api/materialApi';\r\nimport useAliossTokenStore from './aliossToken';\r\n\r\nexport type PostSaveFileResponse = PostSaveFileResourcesData;\r\nexport type UploadAliOssFile = File & { uid: number };\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: UploadAliOssFile;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储路径 */\r\n folder?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 并行上传数量 */\r\n parallel?: number;\r\n /** 并行分片大小 */\r\n partSize?: number;\r\n /** 阿里上传配置 */\r\n options?: { [key: string]: any };\r\n /** 阿里服务器 Bucket 名称 */\r\n bucket?: string;\r\n /** cdn */\r\n cdn?: string;\r\n /** 文件是否保存入库 */\r\n saveStore?: boolean;\r\n};\r\n\r\n/** 返回数据 */\r\nexport type AliOssResponse = {\r\n /** 文件地址 */\r\n url: string;\r\n /** 文件名 */\r\n name: string;\r\n /** 文件唯一标识 */\r\n uid: number;\r\n /** 文件最后修改时间 */\r\n lastModified: number;\r\n /** 文件md5 */\r\n md5: string;\r\n /** 文件大小 */\r\n size: number;\r\n /** 文件后缀 */\r\n type: string;\r\n /** 文件库是否存在 */\r\n isExist: boolean;\r\n};\r\n\r\nexport const ts_md5_file = (file: File) => {\r\n return new Promise<string>(resolve => {\r\n const reader = new FileReader();\r\n reader.onload = async function (e) {\r\n const binary = (e.target as any).result;\r\n resolve(md5(binary));\r\n };\r\n reader.readAsArrayBuffer(file);\r\n });\r\n};\r\n\r\n/** 文件分片 */\r\nexport const getParallelPartSize = (size: number) => {\r\n const thresholds = [\r\n {\r\n max: 5,\r\n parallel: 1,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 10,\r\n parallel: 2,\r\n multiplier: 4,\r\n },\r\n {\r\n max: 30,\r\n parallel: 4,\r\n multiplier: 5,\r\n },\r\n {\r\n max: 50,\r\n parallel: 6,\r\n multiplier: 6,\r\n },\r\n {\r\n max: Number.POSITIVE_INFINITY,\r\n parallel: 8,\r\n multiplier: 8,\r\n },\r\n ];\r\n const { parallel, multiplier } = thresholds.find(({ max }) => size <= max) || thresholds[thresholds.length - 1];\r\n\r\n return {\r\n parallel,\r\n partSize: multiplier * 1024 * 1024,\r\n };\r\n};\r\n\r\n/** 上传 Hook */\r\nexport const useAliossHookStore = defineStore('aliossHook', () => {\r\n const aliossResult = createEventHook<AliOssResponse>();\r\n const aliossError = createEventHook<any>();\r\n const saveFileResult = createEventHook<PostSaveFileResponse>();\r\n const saveFileError = createEventHook<any>();\r\n\r\n /** 检测广告素材是否已存在 */\r\n const getFileExist = async ({\r\n md5Code,\r\n ext,\r\n name,\r\n size,\r\n uid,\r\n lastModified,\r\n }: {\r\n md5Code: string;\r\n ext: string;\r\n name: string;\r\n size: number;\r\n uid: number;\r\n lastModified: number;\r\n }) => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise<AliOssResponse | false>(async resolve => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0 || data.data.count === 0) {\r\n return resolve(false);\r\n }\r\n const result = {\r\n name,\r\n uid,\r\n lastModified,\r\n size,\r\n url: data.data.url,\r\n md5: md5Code,\r\n type: ext,\r\n isExist: true,\r\n };\r\n resolve(result);\r\n aliossResult.trigger(result);\r\n });\r\n };\r\n\r\n /** 上传文件 */\r\n const uploadFile = async ({ file, fileName, folder, seat, parallel, partSize, options, bucket, cdn, saveStore }: AliOssParams) => {\r\n let { name, uid, lastModified, size } = file;\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n const md5Code = await ts_md5_file(file);\r\n const FileName = name + ext;\r\n const type = ext.replaceAll('.', '');\r\n\r\n try {\r\n let result = await getFileExist({ md5Code, ext: type, name: FileName, size, uid, lastModified });\r\n if (result) return result;\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const path = `${folder ?? 'material'}/${seat ?? 'default'}/file-${timestr}-${md5Code}${ext}`;\r\n\r\n const P = getParallelPartSize(size);\r\n options = {\r\n ...P,\r\n ...{ parallel, partSize },\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n ...options,\r\n };\r\n\r\n // 阿里云临时上传权限\r\n // 使用组件 props 的默认值\r\n const bucketName = bucket || 'giikin-material';\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await useAliossTokenStore().getAliossTokenAsync({\r\n config_id: bucketName,\r\n });\r\n\r\n const client = new AliOss({\r\n // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。\r\n region: 'oss-cn-shenzhen',\r\n // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。\r\n accessKeyId: AccessKeyId,\r\n accessKeySecret: AccessKeySecret,\r\n stsToken: SecurityToken,\r\n // 刷新临时访问凭证的时间间隔,单位为毫秒。\r\n refreshSTSTokenInterval: 300000,\r\n // 填写Bucket名称。\r\n bucket: bucketName,\r\n });\r\n\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n const { res } = await client[upload](path, file, options);\r\n if (res.status !== 200) {\r\n aliossError.trigger(res);\r\n return res;\r\n }\r\n cdn = cdn ?? 'https://sucai.giikin.cn/';\r\n const resultUrl = cdn + path;\r\n result = {\r\n url: resultUrl,\r\n name: name + ext,\r\n md5: md5Code,\r\n type: ext.replaceAll('.', ''),\r\n uid,\r\n lastModified,\r\n size,\r\n isExist: false,\r\n };\r\n if (saveStore) {\r\n postSaveFile({ url: resultUrl, md5_code: md5Code, file_size: size });\r\n }\r\n aliossResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n aliossError.trigger(error);\r\n return error;\r\n }\r\n };\r\n\r\n /** 文件入库 */\r\n const postSaveFile = async ({ url, md5_code, file_size }: PostSaveFileResourcesData) => {\r\n try {\r\n const { data } = await postSaveFileResources({ fileData: { url, md5_code, file_size } });\r\n if (data?.code !== 0) {\r\n saveFileError.trigger(data);\r\n return data;\r\n }\r\n const result = {\r\n url,\r\n md5_code,\r\n file_size,\r\n };\r\n saveFileResult.trigger(result);\r\n return result;\r\n } catch (error) {\r\n saveFileError.trigger(error);\r\n return error;\r\n }\r\n };\r\n return {\r\n aliossResult: aliossResult.on,\r\n aliossError: aliossError.on,\r\n saveFileResult: saveFileResult.on,\r\n saveFileError: saveFileError.on,\r\n uploadFile,\r\n postSaveFile,\r\n };\r\n});\r\n"],"names":[],"mappings":"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"}
|
|
@@ -6,18 +6,18 @@ import { type GetOssAccessTokenResponseData } from '../../../api/materialApi';
|
|
|
6
6
|
**/
|
|
7
7
|
declare const useAliossTokenStore: import("pinia").StoreDefinition<"aliossToken", import("pinia")._UnwrapAll<Pick<{
|
|
8
8
|
isLoading: import("vue").Ref<boolean>;
|
|
9
|
-
getAliossTokenAsync: (params
|
|
10
|
-
config_id
|
|
9
|
+
getAliossTokenAsync: (params?: {
|
|
10
|
+
config_id?: string;
|
|
11
11
|
}) => Promise<GetOssAccessTokenResponseData>;
|
|
12
12
|
}, "isLoading">>, Pick<{
|
|
13
13
|
isLoading: import("vue").Ref<boolean>;
|
|
14
|
-
getAliossTokenAsync: (params
|
|
15
|
-
config_id
|
|
14
|
+
getAliossTokenAsync: (params?: {
|
|
15
|
+
config_id?: string;
|
|
16
16
|
}) => Promise<GetOssAccessTokenResponseData>;
|
|
17
17
|
}, never>, Pick<{
|
|
18
18
|
isLoading: import("vue").Ref<boolean>;
|
|
19
|
-
getAliossTokenAsync: (params
|
|
20
|
-
config_id
|
|
19
|
+
getAliossTokenAsync: (params?: {
|
|
20
|
+
config_id?: string;
|
|
21
21
|
}) => Promise<GetOssAccessTokenResponseData>;
|
|
22
22
|
}, "getAliossTokenAsync">>;
|
|
23
23
|
export default useAliossTokenStore;
|
|
@@ -22,7 +22,7 @@ const useAliossTokenStore = defineStore("aliossToken", () => {
|
|
|
22
22
|
}
|
|
23
23
|
isLoading.value = true;
|
|
24
24
|
try {
|
|
25
|
-
const { data } = await getOssAccessToken(params);
|
|
25
|
+
const { data } = await getOssAccessToken({ config_id: params?.config_id || "giikin-material" });
|
|
26
26
|
if (data.code === 0) {
|
|
27
27
|
setCookie(data.data);
|
|
28
28
|
aliossTokenResult.trigger(data.data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliossToken.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossToken.ts"],"sourcesContent":["import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { type GetOssAccessTokenResponseData, getOssAccessToken } from '@giime/api/materialApi';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport Cookies from 'js-cookie';\r\n\r\n/**\r\n * @description 素材上传权限\r\n * @param {*}\r\n * @return {*}\r\n **/\r\n\r\nconst useAliossTokenStore = defineStore('aliossToken', () => {\r\n const isLoading = ref(false);\r\n const aliossTokenResult = createEventHook<GetOssAccessTokenResponseData>();\r\n\r\n const setCookie = (data: GetOssAccessTokenResponseData) => {\r\n if (!data) return;\r\n const { Expiration } = data;\r\n const time = new Date(new Date(Expiration ?? 0).getTime() - 10000); //-10秒作为缓冲\r\n Cookies.set('aliossStsToken', JSON.stringify(data), { expires: time });\r\n };\r\n\r\n /* 请求临时上传权限 */\r\n const getAliossToken = async (params
|
|
1
|
+
{"version":3,"file":"aliossToken.mjs","sources":["../../../../../../packages/utils/src/alioss/aliossToken.ts"],"sourcesContent":["import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { type GetOssAccessTokenResponseData, getOssAccessToken } from '@giime/api/materialApi';\r\nimport { createEventHook } from '@vueuse/core';\r\nimport Cookies from 'js-cookie';\r\n\r\n/**\r\n * @description 素材上传权限\r\n * @param {*}\r\n * @return {*}\r\n **/\r\n\r\nconst useAliossTokenStore = defineStore('aliossToken', () => {\r\n const isLoading = ref(false);\r\n const aliossTokenResult = createEventHook<GetOssAccessTokenResponseData>();\r\n\r\n const setCookie = (data: GetOssAccessTokenResponseData) => {\r\n if (!data) return;\r\n const { Expiration } = data;\r\n const time = new Date(new Date(Expiration ?? 0).getTime() - 10000); //-10秒作为缓冲\r\n Cookies.set('aliossStsToken', JSON.stringify(data), { expires: time });\r\n };\r\n\r\n /* 请求临时上传权限 */\r\n const getAliossToken = async (params?: { config_id?: string }) => {\r\n const aliossStsToken = Cookies.get('aliossStsToken');\r\n if (aliossStsToken) {\r\n return JSON.parse(aliossStsToken) as GetOssAccessTokenResponseData;\r\n }\r\n isLoading.value = true;\r\n try {\r\n const { data } = await getOssAccessToken({ config_id: params?.config_id || 'giikin-material' });\r\n if (data.code === 0) {\r\n setCookie(data.data);\r\n aliossTokenResult.trigger(data.data);\r\n }\r\n return data.data;\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n\r\n /* 获取 alioss 临时上传 token*/\r\n const getAliossTokenAsync = (params?: { config_id?: string }) => {\r\n /* 若正在请求请求临时token接口 则其他后进来的等待 */\r\n return new Promise<GetOssAccessTokenResponseData>(resolve => {\r\n if (isLoading.value) {\r\n aliossTokenResult.on(value => resolve(value));\r\n } else {\r\n resolve(getAliossToken(params));\r\n }\r\n });\r\n };\r\n\r\n return {\r\n isLoading,\r\n getAliossTokenAsync,\r\n };\r\n});\r\n\r\nexport default useAliossTokenStore;\r\n"],"names":[],"mappings":";;;;;;;AAYM,MAAA,mBAAA,GAAsB,WAAY,CAAA,aAAA,EAAe,MAAM;AAC3D,EAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAC3B,EAAA,MAAM,oBAAoB,eAA+C,EAAA,CAAA;AAEzE,EAAM,MAAA,SAAA,GAAY,CAAC,IAAwC,KAAA;AACzD,IAAA,IAAI,CAAC,IAAA;AAAM,MAAA,OAAA;AACX,IAAM,MAAA,EAAE,YAAe,GAAA,IAAA,CAAA;AACvB,IAAM,MAAA,IAAA,GAAO,IAAI,IAAA,CAAK,IAAI,IAAA,CAAK,cAAc,CAAC,CAAA,CAAE,OAAQ,EAAA,GAAI,GAAK,CAAA,CAAA;AACjE,IAAQ,OAAA,CAAA,GAAA,CAAI,kBAAkB,IAAK,CAAA,SAAA,CAAU,IAAI,CAAG,EAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAA,CAAA;AAAA,GACvE,CAAA;AAGA,EAAM,MAAA,cAAA,GAAiB,OAAO,MAAoC,KAAA;AAChE,IAAM,MAAA,cAAA,GAAiB,OAAQ,CAAA,GAAA,CAAI,gBAAgB,CAAA,CAAA;AACnD,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAO,OAAA,IAAA,CAAK,MAAM,cAAc,CAAA,CAAA;AAAA,KAClC;AACA,IAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,IAAI,IAAA;AACF,MAAM,MAAA,EAAE,IAAK,EAAA,GAAI,MAAM,iBAAA,CAAkB,EAAE,SAAW,EAAA,MAAA,EAAQ,SAAa,IAAA,iBAAA,EAAmB,CAAA,CAAA;AAC9F,MAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnB,QAAA,SAAA,CAAU,KAAK,IAAI,CAAA,CAAA;AACnB,QAAkB,iBAAA,CAAA,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,OACrC;AACA,MAAA,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,KACZ,SAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AAGA,EAAM,MAAA,mBAAA,GAAsB,CAAC,MAAoC,KAAA;AAE/D,IAAO,OAAA,IAAI,QAAuC,CAAW,OAAA,KAAA;AAC3D,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,iBAAA,CAAkB,EAAG,CAAA,CAAA,KAAA,KAAS,OAAQ,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,OACvC,MAAA;AACL,QAAQ,OAAA,CAAA,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,OAChC;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,mBAAA;AAAA,GACF,CAAA;AACF,CAAC;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type AxiosRequestConfig } from 'axios';
|
|
2
|
+
export interface GetAliOssConfigsResponse {
|
|
3
|
+
code: number;
|
|
4
|
+
data: GetAliOssConfigsResponseData;
|
|
5
|
+
comment: string;
|
|
6
|
+
}
|
|
7
|
+
export interface GetAliOssConfigsResponseData {
|
|
8
|
+
config_ids: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 获取阿里OSS配置ID
|
|
12
|
+
* /material/cross/aliOssConfigs
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAliOssConfigs(config?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<GetAliOssConfigsResponse, any>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var request = require('../request.js');
|
|
4
|
+
|
|
5
|
+
function getAliOssConfigs(config) {
|
|
6
|
+
return request.default.get(`/material/cross/aliOssConfigs`, config);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
exports.getAliOssConfigs = getAliOssConfigs;
|
|
10
|
+
//# sourceMappingURL=getAliOssConfigs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAliOssConfigs.js","sources":["../../../../../../packages/api/materialApi/cross/getAliOssConfigs.ts"],"sourcesContent":["import { type AxiosRequestConfig } from 'axios';\r\nimport request from '../request';\r\n\r\nexport interface GetAliOssConfigsResponse {\r\n code: number;\r\n data: GetAliOssConfigsResponseData;\r\n comment: string;\r\n}\r\n\r\nexport interface GetAliOssConfigsResponseData {\r\n config_ids: string[];\r\n}\r\n\r\n/**\r\n * 获取阿里OSS配置ID\r\n * /material/cross/aliOssConfigs\r\n */\r\nexport function getAliOssConfigs(config?: AxiosRequestConfig) {\r\n return request.get<GetAliOssConfigsResponse>(`/material/cross/aliOssConfigs`, config);\r\n}\r\n"],"names":["request"],"mappings":";;;;AAiBO,SAAS,iBAAiB,MAA6B,EAAA;AAC5D,EAAO,OAAAA,eAAA,CAAQ,GAA8B,CAAA,CAAA,6BAAA,CAAA,EAAiC,MAAM,CAAA,CAAA;AACtF;;;;"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
var getOssAccessToken = require('./getOssAccessToken.js');
|
|
4
4
|
var getAdFileExist = require('./getAdFileExist.js');
|
|
5
5
|
var postSaveFileResources = require('./postSaveFileResources.js');
|
|
6
|
-
var
|
|
6
|
+
var getAliOssConfigs = require('./getAliOssConfigs.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
exports.getOssAccessToken = getOssAccessToken.getOssAccessToken;
|
|
11
11
|
exports.getAdFileExist = getAdFileExist.getAdFileExist;
|
|
12
12
|
exports.postSaveFileResources = postSaveFileResources.postSaveFileResources;
|
|
13
|
-
exports.
|
|
13
|
+
exports.getAliOssConfigs = getAliOssConfigs.getAliOssConfigs;
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,12 +4,12 @@ require('./cross/index.js');
|
|
|
4
4
|
var getOssAccessToken = require('./cross/getOssAccessToken.js');
|
|
5
5
|
var getAdFileExist = require('./cross/getAdFileExist.js');
|
|
6
6
|
var postSaveFileResources = require('./cross/postSaveFileResources.js');
|
|
7
|
-
var
|
|
7
|
+
var getAliOssConfigs = require('./cross/getAliOssConfigs.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
exports.getOssAccessToken = getOssAccessToken.getOssAccessToken;
|
|
12
12
|
exports.getAdFileExist = getAdFileExist.getAdFileExist;
|
|
13
13
|
exports.postSaveFileResources = postSaveFileResources.postSaveFileResources;
|
|
14
|
-
exports.
|
|
14
|
+
exports.getAliOssConfigs = getAliOssConfigs.getAliOssConfigs;
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -123,8 +123,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
if (!data.data.disabledClose) {
|
|
126
|
-
if (data?.data?.token) {
|
|
127
|
-
await loginStore.triggerLoginResult(
|
|
126
|
+
if (data?.data?.token || data?.data?.loginSuccess) {
|
|
127
|
+
await loginStore.triggerLoginResult(true);
|
|
128
128
|
}
|
|
129
129
|
loginStore.showLogin = false;
|
|
130
130
|
if (route.value && props.needRealodRouteNames.includes(route.value.name?.toString() ?? "")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginDialog.vue2.js","sources":["../../../../../../../packages/components/src/business/loginDialog/LoginDialog.vue"],"sourcesContent":["<script lang=\"ts\">\nconst loginEnvKey = 'VITE_GIIME_LOGIN_URL'\n</script>\n<template>\n <div v-if=\"isSSRShowDialog\">\n <el-dialog v-model=\"loginStore.showLogin\" width=\"80%\" append-to-body>\n <iframe v-if=\"loginStore.showLogin\" class=\"gm-h-[600px] gm-w-full\" :src=\"loginUrl\" />\n </el-dialog>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\n// import { isObject } from '@vue/shared';\nimport { ElDialog } from 'element-plus';\nimport Cookies from 'js-cookie';\n// import router from 'vue-router';\nimport { useLoginStore } from '@giime/hooks';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { isString } from '@giime/utils';\nimport { getDomain } from '@giime/utils/src/http/url';\nimport { loginDialogProps } from './loginDialog';\n\nconst props = defineProps(loginDialogProps);\nconst router = useGlobalConfig('router');\n\n// const router = useRouter();\nconst route = computed(() => (router.value ? router.value.currentRoute.value : undefined));\nconst loginStore = useLoginStore();\nconst loginUrl = ref('');\nconst viteModes = [\n { mode: 'development', loginUrl: 'http://192.168.4.132/guard/sso/public/auth' },\n { mode: 'test', loginUrl: 'http://192.168.4.133/guard/sso/public/auth' },\n { mode: 'release', loginUrl: 'https://manage-pre.giikin.com/guard/sso/public/auth' },\n { mode: 'production', loginUrl: 'https://manage.giikin.com/guard/sso/public/auth' },\n];\n\n\nconst importMetaEnv = useGlobalConfig('env');\nconst isSSRShowDialog = ref(importMetaEnv.value.SSR === false);\nlet originLoginUrl = ``;\nif (isString(importMetaEnv.value[loginEnvKey])) {\n originLoginUrl = importMetaEnv.value[loginEnvKey];\n} else {\n const curMode = viteModes.find(item => item.mode == importMetaEnv.value.MODE);\n originLoginUrl = curMode?.loginUrl ?? 'https://manage.giikin.com/guard/sso/public/auth';\n}\nconst handleLogin = () => {\n const protocol = window.location.protocol;\n const host = window.location.host;\n const myPath = window.location.pathname;\n\n loginUrl.value = `${originLoginUrl}?_system=${props.system}`;\n if (route.value && props.needScanningRouteNames.includes(route.value?.name?.toString() ?? '')) {\n loginUrl.value += '&is_dashboard=1';\n }\n\n // 公司id\n const guard_company = Cookies.get('guard_company');\n if (guard_company) {\n loginUrl.value += `&companyId=${guard_company}`;\n }\n\n loginUrl.value += `&${props.redirectUrlField}=${protocol}//${host}${myPath}`;\n\n // eslint-disable-next-line no-console\n console.log(loginUrl.value);\n};\nwatch(\n () => loginStore.showLogin,\n value => {\n if (value) {\n handleLogin();\n }\n },\n);\n// 超过5分钟没扫码 会不能扫码 定时没登录的话3分钟刷新次\nconst reloadTimer = ref<number>();\nif (route.value) {\n watch(route, (newValue, oldValue) => {\n if (!oldValue || !newValue) {\n return;\n }\n if (oldValue.name && props.needScanningRouteNames.includes(oldValue.name.toString())) {\n window.clearInterval(reloadTimer.value);\n }\n if (newValue.name && props.needScanningRouteNames.includes(newValue.name.toString())) {\n reloadTimer.value = window.setInterval(\n () => {\n if (!loginStore.showLogin) {\n return;\n }\n // 登录超时后 3分钟刷新次页面\n window.location.reload();\n },\n 3 * 60 * 1000,\n );\n }\n });\n}\n\ninterface GiikinLogged {\n type: string;\n data: {\n token: string;\n userId: string;\n /**禁止写入cookie */\n disabledWrite?: boolean;\n disabledClose?: boolean;\n };\n cookies?: string[];\n}\n\nonMounted(() => {\n isSSRShowDialog.value = true;\n if (loginStore.showLogin) {\n handleLogin();\n }\n // iframe事件监听\n window.addEventListener('message', async e => {\n // 刷新登陆状态\n if (e.data.type == 'giikin-Logged') {\n const data: GiikinLogged = e.data;\n // eslint-disable-next-line no-console\n console.log(e.data);\n const token = Cookies.get('token');\n if (\n // 测试环境 但是需要登陆的情况\n (importMetaEnv.value.MODE !== 'production' && data?.data?.token) ||\n // 正式环境 登录成功 但是服务器token设置失败\n (importMetaEnv.value.MODE === 'production' && !token && data?.data?.token)\n ) {\n // loginStore.userToken = data.data.token;\n loginStore.userId = data.data.userId;\n const now = new Date();\n let time = now.getTime();\n time += 8 * 60 * 60 * 1000; // 8 小时之后的时间(单位:毫秒)\n now.setTime(time);\n const curDomain = getDomain();\n // 不禁用 则写入cookie\n if (!data.data.disabledWrite) {\n // cookieMap\n if (data.cookies && Array.isArray(data.cookies)) {\n data.cookies.forEach((cookie: string) => {\n document.cookie = cookie;\n });\n }\n // 没有cookieMap\n else {\n Cookies.set('token', data.data.token, { expires: now, domain: importMetaEnv.value.MODE === 'production' ? curDomain : undefined });\n\n if (!Cookies.get('sso_user_id') && data.data.userId) {\n Cookies.set('sso_user_id', data.data.userId, {\n expires: now,\n domain: importMetaEnv.value.MODE === 'production' ? curDomain : undefined,\n });\n }\n }\n }\n }\n if (!data.data.disabledClose) {\n // 触发登录成功监听\n if (data?.data?.token) {\n await loginStore.triggerLoginResult(data.data);\n }\n // ElMessage.success('登录成功,请关闭弹窗');\n loginStore.showLogin = false;\n if (route.value && props.needRealodRouteNames.includes(route.value.name?.toString() ?? '')) {\n window.location.reload();\n }\n }\n }\n });\n});\nonUnmounted(() => {\n window.clearInterval(reloadTimer.value);\n});\n</script>\n"],"names":["useGlobalConfig","computed","useLoginStore","ref","isString","watch","onMounted","getDomain","onUnmounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LoginDialog.vue2.js","sources":["../../../../../../../packages/components/src/business/loginDialog/LoginDialog.vue"],"sourcesContent":["<script lang=\"ts\">\nconst loginEnvKey = 'VITE_GIIME_LOGIN_URL'\n</script>\n<template>\n <div v-if=\"isSSRShowDialog\">\n <el-dialog v-model=\"loginStore.showLogin\" width=\"80%\" append-to-body>\n <iframe v-if=\"loginStore.showLogin\" class=\"gm-h-[600px] gm-w-full\" :src=\"loginUrl\" />\n </el-dialog>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\n// import { isObject } from '@vue/shared';\nimport { ElDialog } from 'element-plus';\nimport Cookies from 'js-cookie';\n// import router from 'vue-router';\nimport { useLoginStore } from '@giime/hooks';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { isString } from '@giime/utils';\nimport { getDomain } from '@giime/utils/src/http/url';\nimport { loginDialogProps } from './loginDialog';\n\nconst props = defineProps(loginDialogProps);\nconst router = useGlobalConfig('router');\n\n// const router = useRouter();\nconst route = computed(() => (router.value ? router.value.currentRoute.value : undefined));\nconst loginStore = useLoginStore();\nconst loginUrl = ref('');\nconst viteModes = [\n { mode: 'development', loginUrl: 'http://192.168.4.132/guard/sso/public/auth' },\n { mode: 'test', loginUrl: 'http://192.168.4.133/guard/sso/public/auth' },\n { mode: 'release', loginUrl: 'https://manage-pre.giikin.com/guard/sso/public/auth' },\n { mode: 'production', loginUrl: 'https://manage.giikin.com/guard/sso/public/auth' },\n];\n\n\nconst importMetaEnv = useGlobalConfig('env');\nconst isSSRShowDialog = ref(importMetaEnv.value.SSR === false);\nlet originLoginUrl = ``;\nif (isString(importMetaEnv.value[loginEnvKey])) {\n originLoginUrl = importMetaEnv.value[loginEnvKey];\n} else {\n const curMode = viteModes.find(item => item.mode == importMetaEnv.value.MODE);\n originLoginUrl = curMode?.loginUrl ?? 'https://manage.giikin.com/guard/sso/public/auth';\n}\nconst handleLogin = () => {\n const protocol = window.location.protocol;\n const host = window.location.host;\n const myPath = window.location.pathname;\n\n loginUrl.value = `${originLoginUrl}?_system=${props.system}`;\n if (route.value && props.needScanningRouteNames.includes(route.value?.name?.toString() ?? '')) {\n loginUrl.value += '&is_dashboard=1';\n }\n\n // 公司id\n const guard_company = Cookies.get('guard_company');\n if (guard_company) {\n loginUrl.value += `&companyId=${guard_company}`;\n }\n\n loginUrl.value += `&${props.redirectUrlField}=${protocol}//${host}${myPath}`;\n\n // eslint-disable-next-line no-console\n console.log(loginUrl.value);\n};\nwatch(\n () => loginStore.showLogin,\n value => {\n if (value) {\n handleLogin();\n }\n },\n);\n// 超过5分钟没扫码 会不能扫码 定时没登录的话3分钟刷新次\nconst reloadTimer = ref<number>();\nif (route.value) {\n watch(route, (newValue, oldValue) => {\n if (!oldValue || !newValue) {\n return;\n }\n if (oldValue.name && props.needScanningRouteNames.includes(oldValue.name.toString())) {\n window.clearInterval(reloadTimer.value);\n }\n if (newValue.name && props.needScanningRouteNames.includes(newValue.name.toString())) {\n reloadTimer.value = window.setInterval(\n () => {\n if (!loginStore.showLogin) {\n return;\n }\n // 登录超时后 3分钟刷新次页面\n window.location.reload();\n },\n 3 * 60 * 1000,\n );\n }\n });\n}\n\ninterface GiikinLogged {\n type: string;\n data: {\n token: string;\n userId: string;\n /**token 或者 loginSuccess 控制当前登录是否成功*/\n loginSuccess?: boolean;\n /**禁止写入cookie */\n disabledWrite?: boolean;\n disabledClose?: boolean;\n };\n cookies?: string[];\n}\n\nonMounted(() => {\n isSSRShowDialog.value = true;\n if (loginStore.showLogin) {\n handleLogin();\n }\n // iframe事件监听\n window.addEventListener('message', async e => {\n // 刷新登陆状态\n if (e.data.type == 'giikin-Logged') {\n const data: GiikinLogged = e.data;\n // eslint-disable-next-line no-console\n console.log(e.data);\n const token = Cookies.get('token');\n if (\n // 测试环境 但是需要登陆的情况\n (importMetaEnv.value.MODE !== 'production' && data?.data?.token) ||\n // 正式环境 登录成功 但是服务器token设置失败\n (importMetaEnv.value.MODE === 'production' && !token && data?.data?.token)\n ) {\n // loginStore.userToken = data.data.token;\n loginStore.userId = data.data.userId;\n const now = new Date();\n let time = now.getTime();\n time += 8 * 60 * 60 * 1000; // 8 小时之后的时间(单位:毫秒)\n now.setTime(time);\n const curDomain = getDomain();\n // 不禁用 则写入cookie\n if (!data.data.disabledWrite) {\n // cookieMap\n if (data.cookies && Array.isArray(data.cookies)) {\n data.cookies.forEach((cookie: string) => {\n document.cookie = cookie;\n });\n }\n // 没有cookieMap\n else {\n Cookies.set('token', data.data.token, { expires: now, domain: importMetaEnv.value.MODE === 'production' ? curDomain : undefined });\n\n if (!Cookies.get('sso_user_id') && data.data.userId) {\n Cookies.set('sso_user_id', data.data.userId, {\n expires: now,\n domain: importMetaEnv.value.MODE === 'production' ? curDomain : undefined,\n });\n }\n }\n }\n }\n if (!data.data.disabledClose) {\n // 触发登录成功监听\n if (data?.data?.token || data?.data?.loginSuccess) {\n await loginStore.triggerLoginResult(true);\n }\n // ElMessage.success('登录成功,请关闭弹窗');\n loginStore.showLogin = false;\n if (route.value && props.needRealodRouteNames.includes(route.value.name?.toString() ?? '')) {\n window.location.reload();\n }\n }\n }\n });\n});\nonUnmounted(() => {\n window.clearInterval(reloadTimer.value);\n});\n</script>\n"],"names":["useGlobalConfig","computed","useLoginStore","ref","isString","watch","onMounted","getDomain","onUnmounted"],"mappings":"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"}
|