feat: 🚀 站点切换

This commit is contained in:
2025-04-09 09:25:12 +08:00
parent af5894dd5a
commit f8d73b1ddb
12 changed files with 115 additions and 97 deletions

View File

@@ -42,27 +42,29 @@ import { ref } from "vue";
import { logoutApi } from "@/api/modules/login";
import { useMsg } from "@/hooks/useMsg";
import { useUserStore } from "@/stores/modules/user";
import { ElMessageBox } from "element-plus";
import { outLogin } from "@/utils/outLogin";
//getLanguageCutoverApi
import { getLanguageListApi, getLanguageCutoverApi } from "@/api/modules/global";
const userStore: any = useUserStore();
const userStore = useUserStore();
document.cookie = `lang=zh_cn`;
const langs = ref<any>([]);
const name = ref("");
//站点列表
// 站点列表
const getLanguageList = async () => {
const result = await getLanguageListApi();
if (result?.code === 0) {
const { data } = result;
langs.value = data;
getLanguageCutover(data[0]?.id);
console.log(userStore?.languageType, "===== userStore?.languageType==========");
let id = userStore?.languageType ? userStore?.languageType : data[0]?.id;
getLanguageCutover(id);
}
};
getLanguageList();
//站点切换接口
// 站点切换接口
const getLanguageCutover = async (id: any) => {
const result = await getLanguageCutoverApi(id);
if (result?.code === 0) {
@@ -73,10 +75,12 @@ const getLanguageCutover = async (id: any) => {
name.value = names[0]?.country_name;
}
};
//站点切换事件
// 站点切换事件
const handleCommand = (val: string) => {
getLanguageCutover(val);
};
// 退出登录
const logout = () => {
ElMessageBox.confirm("您是否确认重新登录?", "温馨提示", {
@@ -84,7 +88,7 @@ const logout = () => {
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
//1.退出登录
// 1. 退出登录
const result: any = await logoutApi();
if (result?.code === 0) {
outLogin();

View File

@@ -34,30 +34,36 @@ import { useTabsStore } from "@/stores/modules/tabs";
import { useGlobalStore } from "@/stores/modules/global";
import { useKeepAliveStore } from "@/stores/modules/keepAlive";
import { useRoute, useRouter } from "vue-router";
// import { initCache } from "./init/init";
import { useUserStore } from "@/stores/modules/user";
const userStore = useUserStore();
// import { useMsg } from "@/hooks/useMsg";
const route = useRoute();
const router = useRouter();
const tabStore = useTabsStore();
const globalStore = useGlobalStore();
const keepAliveStore = useKeepAliveStore();
// // refresh current page
// const refreshCurrentPage: Function = inject("refresh") as Function;
// const refresh = async () => {
// // initCache(data);
// setTimeout(() => {
// keepAliveStore.removeKeepAliveName(route.name as string);
// refreshCurrentPage(false);
// nextTick(() => {
// keepAliveStore.addKeepAliveName(route.name as string);
// refreshCurrentPage(true);
// });
// }, 300);
// };
// refresh current page
const refreshCurrentPage: Function = inject("refresh") as Function;
const refresh = async () => {
// initCache(data);
setTimeout(() => {
keepAliveStore.removeKeepAliveName(route.name as string);
refreshCurrentPage(false);
nextTick(() => {
keepAliveStore.addKeepAliveName(route.name as string);
refreshCurrentPage(true);
});
}, 300);
};
watch(
() => userStore.languageType,
(newVal: any) => {
refresh();
console.log(newVal, "我是tab");
}
);
// maximize current page
const maximize = () => {
globalStore.setGlobalState("maximize", true);

View File

@@ -31,6 +31,7 @@ import { useTabsStore } from "@/stores/modules/tabs";
import { useAuthStore } from "@/stores/modules/auth";
import { useKeepAliveStore } from "@/stores/modules/keepAlive";
import { TabsPaneContext, TabPaneName } from "element-plus";
import MoreButton from "./components/MoreButton.vue";
const route = useRoute();
@@ -55,9 +56,6 @@ watch(
() => {
if (route.meta.isFull) return;
tabsMenuValue.value = route.fullPath;
// const TITLES_OBJ = {
// "/articleManagement/list/edit?type=add": "添加文章"
// };
let title: any = route.query.title ? route.query.title : route.meta.title;
const tabsParams = {
icon: route.meta.icon as string,