新增场景切换

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

View File

@@ -1,3 +1,4 @@
import http from '@/api' import http from '@/api'
import {type Base} from '@/api/system/base/interface' import {type Base} from '@/api/system/base/interface'
@@ -12,6 +13,10 @@ export const updateTestConfig = (params: Base.ResTestConfig) => {
return http.post(`/sysTestConfig/update`, params) 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", changeMode:"Change Mode",
versionRegister:"Version Register", versionRegister:"Version Register",
changeTheme: "Change Theme", changeTheme: "Change Theme",
changeScene: "Change Scene",
logout: "Logout" logout: "Logout"
} }
}; };

View File

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

View File

@@ -33,6 +33,27 @@
<el-dropdown-item @click="openDialog('versionRegisterRef')"> <el-dropdown-item @click="openDialog('versionRegisterRef')">
<el-icon><SetUp /></el-icon>{{ t("header.versionRegister") }} <el-icon><SetUp /></el-icon>{{ t("header.versionRegister") }}
</el-dropdown-item> </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> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
@@ -62,7 +83,7 @@ import PasswordDialog from "./PasswordDialog.vue";
import ThemeDialog from "./ThemeDialog.vue"; import ThemeDialog from "./ThemeDialog.vue";
import VersionDialog from "@/views/system/versionRegister/index.vue"; import VersionDialog from "@/views/system/versionRegister/index.vue";
import { computed } from "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 AssemblySize from "./components/AssemblySize.vue";
import Language from "./components/Language.vue"; import Language from "./components/Language.vue";
import SearchMenu from "./components/SearchMenu.vue"; import SearchMenu from "./components/SearchMenu.vue";
@@ -75,12 +96,16 @@ import { useModeStore,useAppSceneStore } from "@/stores/modules/mode";
const userStore = useUserStore(); const userStore = useUserStore();
const dictStore = useDictStore(); const dictStore = useDictStore();
const username = computed(() => userStore.userInfo.name); const username = computed(() => userStore.userInfo.name);
const router = useRouter(); const router = useRouter();
const authStore = useAuthStore(); const authStore = useAuthStore();
const modeStore = useModeStore(); const modeStore = useModeStore();
const AppSceneStore = useAppSceneStore(); const AppSceneStore = useAppSceneStore();
import { useTheme } from "@/hooks/useTheme"; import { useTheme } from "@/hooks/useTheme";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import {updateScene} from '@/api/system/base/index'
const { changePrimary} = useTheme(); const { changePrimary} = useTheme();
// 初始化 i18n // 初始化 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%; // 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> </style>

View File

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

View File

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

View File

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