diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6c30227..eb14f9e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,6 +1,8 @@ lockfileVersion: 5.4 specifiers: + '@amap/amap-jsapi-loader': ^1.0.1 + '@amap/amap-jsapi-types': ^0.0.8 '@commitlint/cli': ^17.0.2 '@commitlint/config-conventional': ^17.0.2 '@types/color': ^3.0.3 @@ -65,6 +67,8 @@ specifiers: vuedraggable: ^4.1.0 dependencies: + '@amap/amap-jsapi-loader': 1.0.1 + '@amap/amap-jsapi-types': 0.0.8 '@types/color': 3.0.3 '@types/crypto-js': 4.1.1 '@types/keymaster': 1.6.30 @@ -132,6 +136,14 @@ devDependencies: packages: + /@amap/amap-jsapi-loader/1.0.1: + resolution: {integrity: sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==} + dev: false + + /@amap/amap-jsapi-types/0.0.8: + resolution: {integrity: sha512-q0FyZDIJcXjsMLGc3oS9rjfJsErOvt9rcp6AgzY4k14vo7bBhdq4eKwoSdVp/pYjR/rfaKBns5v10ycZOFwf/A==} + dev: false + /@ampproject/remapping/2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} diff --git a/src/App.vue b/src/App.vue index 1865e459..2fa191d8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,9 +1,9 @@ diff --git a/src/hooks/index.ts b/src/hooks/index.ts index bc9825fb..5ecfe3dd 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -2,4 +2,5 @@ export * from '@/hooks/useTheme.hook' export * from '@/hooks/usePreviewScale.hook' export * from '@/hooks/useCode.hook' export * from '@/hooks/useChartDataFetch.hook' -export * from '@/hooks/useLifeHandler.hook' \ No newline at end of file +export * from '@/hooks/useLifeHandler.hook' +export * from '@/hooks/useLang.hook' \ No newline at end of file diff --git a/src/hooks/useLang.hook.ts b/src/hooks/useLang.hook.ts new file mode 100644 index 00000000..f165ce6d --- /dev/null +++ b/src/hooks/useLang.hook.ts @@ -0,0 +1,24 @@ +import { computed } from 'vue' +import { LangEnum } from '@/enums/styleEnum' +import { useLangStore } from '@/store/modules/langStore/langStore' +import { zhCN, enUS, dateEnUS, dateZhCN } from 'naive-ui' + +type LangStoreType = typeof useLangStore + +// 语言切换 +export const useLang = () => { + const lang = useLangStore() + + const locale = computed(() => { + return lang.getLang === LangEnum.ZH ? zhCN : enUS + }) + + const dateLocale = computed(() => { + return lang.getLang === LangEnum.ZH ? dateZhCN : dateEnUS + }) + + return { + locale, + dateLocale + } +} diff --git a/src/store/index.ts b/src/store/index.ts index efaf6c97..4e303ea9 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,10 +1,10 @@ import type { App } from 'vue'; import { createPinia } from 'pinia'; -const store = createPinia(); +const pinia = createPinia(); export function setupStore(app: App) { - app.use(store); + app.use(pinia); } -export { store }; +export { pinia }; diff --git a/src/store/modules/langStore/langStore.ts b/src/store/modules/langStore/langStore.ts index 9eb7bdeb..d1795e6c 100644 --- a/src/store/modules/langStore/langStore.ts +++ b/src/store/modules/langStore/langStore.ts @@ -6,10 +6,8 @@ import i18n from '@/i18n/index' import { setLocalStorage, getLocalStorage, reloadRoutePage } from '@/utils' import { StorageEnum } from '@/enums/storageEnum' import { useSettingStore } from '@/store/modules/settingStore/settingStore' -const settingStore = useSettingStore() const { GO_LANG_STORE } = StorageEnum - const storageLang: LangStateType = getLocalStorage(GO_LANG_STORE) // 语言 @@ -17,7 +15,7 @@ export const useLangStore = defineStore({ id: 'useLangStore', state: (): LangStateType => storageLang || { - lang, + lang }, getters: { getLang(): LangEnum { @@ -26,6 +24,8 @@ export const useLangStore = defineStore({ }, actions: { changeLang(lang: LangEnum): void { + const settingStore = useSettingStore() + if (this.lang === lang) return this.lang = lang i18n.global.locale = lang