up. 使用状态管理器管理设备

This commit is contained in:
u2nyakim 2025-08-29 10:16:25 +08:00
parent 64e91f1f5c
commit 7fff0b31b4
2 changed files with 36 additions and 19 deletions

View File

@ -18,7 +18,7 @@
placeholder="请输入临时锁定密码/为空则使用默认使用账号密码" placeholder="请输入临时锁定密码/为空则使用默认使用账号密码"
/> />
<div style="margin-top: 20px"> <div style="margin-top: 20px">
<el-button class="ele-fluid" type="primary" @click="confirmLock" <el-button class="ele-fluid" type="primary" :loading="lockLoading" @click="confirmLock"
>锁定客户端</el-button >锁定客户端</el-button
> >
</div> </div>
@ -27,23 +27,39 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue'; import { ref } from 'vue';
import { useMobile } from '@/utils/use-mobile';
import { wsInstance, WsSendEventType } from '@/plugins/websocket'; import { wsInstance, WsSendEventType } from '@/plugins/websocket';
import { ElMessage } from "element-plus";
import {LockScreenStatus, useClientStore} from "@/store/modules/client";
/** 弹窗是否打开 */ /** 弹窗是否打开 */
const visible = defineModel({ type: Boolean }); const visible = defineModel({ type: Boolean });
/** 是否是移动端 */ const lockLoading = ref<boolean>(false);
const { mobile } = useMobile(); const lockPassword = ref<string>('');
const lockLoading = ref(false); /**
const lockPassword = ref(''); * 确定锁屏
*/
const confirmLock = () => { const confirmLock = () => {
if(lockLoading.value){
return;
}
lockLoading.value = true; lockLoading.value = true;
if(wsInstance) {
/*
* 先快速锁定当前窗口的
*/
useClientStore().setLockScreen(LockScreenStatus.LOCK)
/*
* 通知设备下的窗口全部锁屏
*/
wsInstance.sendMessage(WsSendEventType.LOCK_CLIENT_SCREEN, { wsInstance.sendMessage(WsSendEventType.LOCK_CLIENT_SCREEN, {
lockPassword: lockPassword.value lockPassword: lockPassword.value
}); });
visible.value = false; visible.value = false;
lockPassword.value = ''; lockPassword.value = ''; //
}else{
ElMessage.error("锁屏功能不可用");
}
}; };
</script> </script>

View File

@ -8,13 +8,21 @@ import { API_BASE_URL, LAYOUT_PATH } from '@/config/setting';
import type { ApiResult } from '@/api'; import type { ApiResult } from '@/api';
import router from '@/router'; import router from '@/router';
import { isWhiteList } from '@/router/routes'; import { isWhiteList } from '@/router/routes';
import {getClientInfo, getToken, setToken} from './token-util'; import { getToken, setToken } from './token-util';
import {logout, showLogoutConfirm, toURLSearch} from './common'; import {logout, showLogoutConfirm, toURLSearch} from './common';
import {useClientStore} from "@/store/modules/client";
/** /**
* *
*/ */
export function requestInterceptor(config: InternalAxiosRequestConfig<any>) { export function requestInterceptor(config: InternalAxiosRequestConfig<any>) {
// 添加客户端信息到header
const client = useClientStore();
if(config.headers) {
config.headers['Client'] = client.clientName
config.headers['Client-Id'] = client.clientId;
config.headers['Client-Version'] = client.clientVersion;
}
// 添加token到header // 添加token到header
const token = getToken(); const token = getToken();
if (token && config.headers) { if (token && config.headers) {
@ -25,13 +33,6 @@ export function requestInterceptor(config: InternalAxiosRequestConfig<any>) {
config.url = toURLSearch(config.params, config.url); config.url = toURLSearch(config.params, config.url);
config.params = {}; config.params = {};
} }
// 客户端信息
let clientInfo = getClientInfo();
if(clientInfo) {
config.headers['Client'] = clientInfo.name;
config.headers['Client-Id'] = clientInfo.id;
config.headers['Client-Version'] = clientInfo.version;
}
} }
/** /**