新增场景切换

This commit is contained in:
sjl
2025-07-01 14:58:11 +08:00
parent 9fecf0ce3f
commit 2ccdef7f76
7 changed files with 56 additions and 4 deletions

View File

@@ -1,3 +1,4 @@
import http from '@/api'
import {type Base} from '@/api/system/base/interface'
@@ -12,6 +13,10 @@ export const updateTestConfig = (params: Base.ResTestConfig) => {
return http.post(`/sysTestConfig/update`, params)
}
//场景切换
export const updateScene = (params: any) => {
return http.post(`/sysTestConfig/update`,params)
}

View File

@@ -27,6 +27,7 @@ export default {
changeMode:"Change Mode",
versionRegister:"Version Register",
changeTheme: "Change Theme",
changeScene: "Change Scene",
logout: "Logout"
}
};

View File

@@ -27,6 +27,7 @@ export default {
changeMode:"模式切换",
versionRegister:"版本注册",
changeTheme:"主题切换",
changeScene: "场景切换",
logout: "退出登录"
}
};

View File

@@ -33,6 +33,27 @@
<el-dropdown-item @click="openDialog('versionRegisterRef')">
<el-icon><SetUp /></el-icon>{{ t("header.versionRegister") }}
</el-dropdown-item>
<el-dropdown trigger="hover" placement="left-start" v-if="userStore.userInfo.loginName == 'root'">
<div class="custom-dropdown-trigger">
<el-icon><Tools /></el-icon>
<span>{{ t("header.changeScene") }}</span>
</div>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
v-for="item in dictStore.getDictData('app_scene')"
:key="item.value"
:class="{
'custom-dropdown-item': true,
active: item.value === appSceneStore.currentScene
}"
@click="changeScene(item.value?? '')"
>
{{ item.name }}
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</el-dropdown-menu>
</template>
</el-dropdown>
@@ -62,7 +83,7 @@ import PasswordDialog from "./PasswordDialog.vue";
import ThemeDialog from "./ThemeDialog.vue";
import VersionDialog from "@/views/system/versionRegister/index.vue";
import { computed } from "vue";
import { Avatar, Delete, Document, Sunny, Switch } from "@element-plus/icons-vue";
import { ArrowLeft, Avatar, Delete, Document, Sunny, Switch ,Tools} from "@element-plus/icons-vue";
import AssemblySize from "./components/AssemblySize.vue";
import Language from "./components/Language.vue";
import SearchMenu from "./components/SearchMenu.vue";
@@ -75,12 +96,16 @@ import { useModeStore,useAppSceneStore } from "@/stores/modules/mode";
const userStore = useUserStore();
const dictStore = useDictStore();
const username = computed(() => userStore.userInfo.name);
const router = useRouter();
const authStore = useAuthStore();
const modeStore = useModeStore();
const AppSceneStore = useAppSceneStore();
import { useTheme } from "@/hooks/useTheme";
import { useI18n } from "vue-i18n";
import {updateScene} from '@/api/system/base/index'
const { changePrimary} = useTheme();
// 初始化 i18n
@@ -126,7 +151,14 @@ const openDialog = (ref: string) => {
};
const appSceneStore = useAppSceneStore();
const changeScene = async (value: string) => {
appSceneStore.setCurrentMode(value);
await updateScene({scene :dictStore.getDictData('app_scene').find(item => item.value == value)?.id});
// 强制刷新页面
window.location.reload();
};
//模式切换
@@ -168,4 +200,18 @@ const changeMode = () => {
// height: 100%;
}
}
.custom-dropdown-trigger {
padding: 8px 15px;
cursor: pointer;
display: flex;
align-items: center;
gap: 8px;
}
:deep(.el-dropdown-menu__item.custom-dropdown-item.active),
:deep(.el-dropdown-menu__item.custom-dropdown-item.active:hover) {
background-color: var(--el-color-primary-light-9) !important;
color: var(--el-color-primary)
}
</style>

View File

@@ -30,7 +30,7 @@ export interface UserState {
accessToken: string;
refreshToken: string;
isRefreshToken: boolean;
userInfo: { id: string, name: string };
userInfo: { id: string, name: string,loginName:string };
}
/* tabsMenuProps */

View File

@@ -10,7 +10,7 @@ export const useUserStore = defineStore({
refreshToken: "",
isRefreshToken:false,
exp: Number(0),
userInfo: {id:"", name: "admin" },
userInfo: {id:"", name: "" ,loginName:""},
}),
getters: {},
actions: {

View File

@@ -84,7 +84,6 @@ const modeList = [
const handelOpen = async (item: any) => {
modeStore.setCurrentMode(item.code); // 将模式code存入 store
const {data:scene} = await getCurrentScene(); // 获取当前场景
// AppSceneStore.setCurrentMode(scene+'');//0省级平台1设备出厂2研发自测
AppSceneStore.setCurrentMode(scene+'');//0省级平台1设备出厂2研发自测
await authStore.setShowMenu();