From ef146cdaef9524cf7fa10735e6e9632efd9a82d7 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Tue, 8 Jul 2025 01:06:48 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E5=8E=BB=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../host-list/components/host-form-rdp.vue | 12 ---- .../host-list/components/host-form-ssh.vue | 20 +++++- .../host-list/components/host-form-vnc.vue | 12 ---- .../asset/host-list/types/use-host-config.ts | 22 ------ .../src/views/terminal/types/const.ts | 70 +++++++++++++++++-- 5 files changed, 84 insertions(+), 52 deletions(-) diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue index f4f58da0..614661df 100644 --- a/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue +++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-rdp.vue @@ -152,17 +152,6 @@ @click="saveConfig"> 保存 - - - - 测试连接 - - @@ -198,7 +187,6 @@ formRef, formRules, fetchHostConfig, - testConnect, saveConfig, } = useHostConfigForm({ type: HostType.RDP.value, diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue index 33367941..a864bc85 100644 --- a/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue +++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-ssh.vue @@ -127,6 +127,8 @@ import { useDictStore } from '@/store'; import { sshAuthTypeKey, HostAuthType, HostType } from '../types/const'; import { sshFormRules } from '../types/form.rules'; + import { Message } from '@arco-design/web-vue'; + import { testHostConnect } from '@/api/asset/host'; import useHostConfigForm from '../types/use-host-config'; import HostIdentitySelector from '@/components/asset/host-identity/selector/index.vue'; import HostKeySelector from '@/components/asset/host-key/selector/index.vue'; @@ -144,7 +146,6 @@ formRef, formRules, fetchHostConfig, - testConnect, saveConfig, } = useHostConfigForm({ type: HostType.SSH.value, @@ -154,6 +155,23 @@ setLoading, }); + // 测试连接 + const testConnect = async () => { + const error = await formRef.value.validate(); + if (error) { + return; + } + try { + setLoading(true); + // 测试连接 + await testHostConnect({ id: props.hostId, type: HostType.SSH.value }); + Message.success('连接成功'); + } catch (e) { + } finally { + setLoading(false); + } + }; + onMounted(fetchHostConfig); diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue index 330bb6df..ea6fa7e4 100644 --- a/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue +++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-vnc.vue @@ -104,17 +104,6 @@ @click="saveConfig"> 保存 - - - - 测试连接 - - @@ -150,7 +139,6 @@ formRef, formRules, fetchHostConfig, - testConnect, saveConfig, } = useHostConfigForm({ type: HostType.VNC.value, diff --git a/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts b/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts index 34ff1af4..44f3c469 100644 --- a/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts +++ b/orion-visor-ui/src/views/asset/host-list/types/use-host-config.ts @@ -6,7 +6,6 @@ import type { FieldRule } from '@arco-design/web-vue'; import { Message } from '@arco-design/web-vue'; import { baseFormRules } from './form.rules'; import { encrypt } from '@/utils/rsa'; -import { testHostConnect } from '@/api/asset/host'; // 主机配置表单信息 export interface UseHostConfigFormOptions { @@ -38,26 +37,6 @@ export default function useHostConfigForm(options: Use } }; - // 测试连接 - const testConnect = async () => { - if (!formRef?.value) { - return; - } - const error = await formRef.value.validate(); - if (error) { - return; - } - try { - setLoading(true); - // 测试连接 - await testHostConnect({ id: hostId, type }); - Message.success('连接成功'); - } catch (e) { - } finally { - setLoading(false); - } - }; - // 保存配置 const saveConfig = async () => { if (!formRef?.value) { @@ -93,7 +72,6 @@ export default function useHostConfigForm(options: Use formRef, formRules, fetchHostConfig, - testConnect, saveConfig, }; } diff --git a/orion-visor-ui/src/views/terminal/types/const.ts b/orion-visor-ui/src/views/terminal/types/const.ts index 9826c18d..a0f564d9 100644 --- a/orion-visor-ui/src/views/terminal/types/const.ts +++ b/orion-visor-ui/src/views/terminal/types/const.ts @@ -230,17 +230,27 @@ export const SshActionBarItems = [ // guacd 终端操作栏键 export const GuacdActionItemKeys = { + INFO: 'info', DISPLAY: 'display', COMBINATION_KEY: 'combinationKey', + TRIGGER_KEY: 'triggerKey', CLIPBOARD: 'clipboard', - UPLOAD: 'upload', + RDP_UPLOAD: 'rdpUpload', + SFTP_UPLOAD: 'sftpUpload', + OPEN_SFTP: 'openSftp', SAVE_RDP: 'saveRdp', DISCONNECT: 'disconnect', + RECONNECT: 'reconnect', CLOSE: 'close', }; // guacd 终端操作栏 export const GuacdActionBarItemMap = { + [GuacdActionItemKeys.INFO]: { + item: GuacdActionItemKeys.INFO, + icon: 'icon-info', + content: '会话信息', + }, [GuacdActionItemKeys.DISPLAY]: { item: GuacdActionItemKeys.DISPLAY, icon: 'icon-desktop', @@ -251,15 +261,30 @@ export const GuacdActionBarItemMap = { icon: 'icon-command', content: '组合键', }, + [GuacdActionItemKeys.TRIGGER_KEY]: { + item: GuacdActionItemKeys.TRIGGER_KEY, + icon: 'icon-dice', + content: '长按键', + }, [GuacdActionItemKeys.CLIPBOARD]: { item: GuacdActionItemKeys.CLIPBOARD, icon: 'icon-paste', content: '剪切板', }, - [GuacdActionItemKeys.UPLOAD]: { - item: GuacdActionItemKeys.UPLOAD, + [GuacdActionItemKeys.RDP_UPLOAD]: { + item: GuacdActionItemKeys.RDP_UPLOAD, icon: 'icon-upload', - content: '文件上传', + content: 'RDP 文件上传', + }, + [GuacdActionItemKeys.SFTP_UPLOAD]: { + item: GuacdActionItemKeys.SFTP_UPLOAD, + icon: 'icon-folder-add', + content: 'SFTP 文件上传', + }, + [GuacdActionItemKeys.OPEN_SFTP]: { + item: GuacdActionItemKeys.OPEN_SFTP, + icon: 'icon-folder', + content: '打开 SFTP', }, [GuacdActionItemKeys.SAVE_RDP]: { item: GuacdActionItemKeys.SAVE_RDP, @@ -271,6 +296,11 @@ export const GuacdActionBarItemMap = { icon: 'icon-stop', content: '断开连接', }, + [GuacdActionItemKeys.RECONNECT]: { + item: GuacdActionItemKeys.RECONNECT, + icon: 'icon-refresh', + content: '重新连接', + }, [GuacdActionItemKeys.CLOSE]: { item: GuacdActionItemKeys.CLOSE, icon: 'icon-close', @@ -280,21 +310,31 @@ export const GuacdActionBarItemMap = { // 终端操作栏 - RDP export const RdpActionBarItems = [ + GuacdActionBarItemMap[GuacdActionItemKeys.INFO], GuacdActionBarItemMap[GuacdActionItemKeys.DISPLAY], GuacdActionBarItemMap[GuacdActionItemKeys.COMBINATION_KEY], + GuacdActionBarItemMap[GuacdActionItemKeys.TRIGGER_KEY], GuacdActionBarItemMap[GuacdActionItemKeys.CLIPBOARD], - GuacdActionBarItemMap[GuacdActionItemKeys.UPLOAD], + GuacdActionBarItemMap[GuacdActionItemKeys.RDP_UPLOAD], + GuacdActionBarItemMap[GuacdActionItemKeys.SFTP_UPLOAD], + GuacdActionBarItemMap[GuacdActionItemKeys.OPEN_SFTP], GuacdActionBarItemMap[GuacdActionItemKeys.SAVE_RDP], GuacdActionBarItemMap[GuacdActionItemKeys.DISCONNECT], + GuacdActionBarItemMap[GuacdActionItemKeys.RECONNECT], GuacdActionBarItemMap[GuacdActionItemKeys.CLOSE], ]; // 终端操作栏 - VNC export const VncActionBarItems = [ + GuacdActionBarItemMap[GuacdActionItemKeys.INFO], GuacdActionBarItemMap[GuacdActionItemKeys.DISPLAY], GuacdActionBarItemMap[GuacdActionItemKeys.COMBINATION_KEY], + GuacdActionBarItemMap[GuacdActionItemKeys.TRIGGER_KEY], GuacdActionBarItemMap[GuacdActionItemKeys.CLIPBOARD], + GuacdActionBarItemMap[GuacdActionItemKeys.SFTP_UPLOAD], + GuacdActionBarItemMap[GuacdActionItemKeys.OPEN_SFTP], GuacdActionBarItemMap[GuacdActionItemKeys.DISCONNECT], + GuacdActionBarItemMap[GuacdActionItemKeys.RECONNECT], GuacdActionBarItemMap[GuacdActionItemKeys.CLOSE], ]; @@ -562,6 +602,26 @@ export const GuacdCombinationKeyItems: Array = [ } ]; +// Guacd 键盘码 +export const GuacdKeyboardItems = [ + { + key: 65507, + name: 'Ctrl', + }, + { + key: 65505, + name: 'Shift', + }, + { + key: 65513, + name: 'Alt', + }, + { + key: 65515, + name: 'Windows', + }, +]; + // backspace 字符 export const BACKSPACE_CHAR = String.fromCharCode(127);