diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java index 7cba3927..1a287570 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java @@ -66,13 +66,13 @@ public class TerminalPreferenceStrategy implements IPreferenceStrategy s.id === hostId); + .find(s => s.id === item.hostId); if (host) { - this.openTerminal(host, panelIndex); + const sessionType = { + type: item.type, + icon: item.icon + }; + this.openSession(host, sessionType, panelIndex); } }, @@ -189,14 +194,14 @@ export default defineStore('terminal', { // 获取当前终端会话 getCurrentTerminalSession() { // 获取面板会话 - const panelTab = this.panelManager + const sessionTab = this.panelManager .getCurrentPanel() .getCurrentTab(); - if (!panelTab || panelTab.type !== TerminalPanelTabType.TERMINAL) { + if (!sessionTab || sessionTab.type !== PanelSessionType.TERMINAL.type) { return; } // 获取会话 - return this.sessionManager.getSession(panelTab.key); + return this.sessionManager.getSession(sessionTab.key); }, }, diff --git a/orion-ops-ui/src/views/host-audit/connect-log/components/connect-log-table.vue b/orion-ops-ui/src/views/host-audit/connect-log/components/connect-log-table.vue index 58e99f0f..97c603e3 100644 --- a/orion-ops-ui/src/views/host-audit/connect-log/components/connect-log-table.vue +++ b/orion-ops-ui/src/views/host-audit/connect-log/components/connect-log-table.vue @@ -2,11 +2,11 @@ + label-align="left" + :itemOptions="{ 6: { span: 2 } }" + @submit="fetchTableData" + @reset="fetchTableData" + @keyup.enter="() => fetchTableData()"> + + + + @@ -107,7 +114,7 @@ import { getHostConnectLogPage } from '@/api/asset/host-connect-log'; import useLoading from '@/hooks/loading'; import columns from '../types/table.columns'; - import { connectStatusKey } from '../types/const'; + import { connectStatusKey, connectTypeKey } from '../types/const'; import { usePagination } from '@/types/table'; import { useDictStore } from '@/store'; import useCopy from '@/hooks/copy'; diff --git a/orion-ops-ui/src/views/host-audit/connect-log/types/const.ts b/orion-ops-ui/src/views/host-audit/connect-log/types/const.ts index 9c541da5..031e8534 100644 --- a/orion-ops-ui/src/views/host-audit/connect-log/types/const.ts +++ b/orion-ops-ui/src/views/host-audit/connect-log/types/const.ts @@ -1,5 +1,8 @@ // 主机连接状态 字典项 export const connectStatusKey = 'hostConnectStatus'; +// 主机连接类型 字典项 +export const connectTypeKey = 'hostConnectType'; + // 加载的字典值 -export const dictKeys = [connectStatusKey]; +export const dictKeys = [connectStatusKey, connectTypeKey]; diff --git a/orion-ops-ui/src/views/host-audit/connect-log/types/table.columns.ts b/orion-ops-ui/src/views/host-audit/connect-log/types/table.columns.ts index d315c3cd..ef134091 100644 --- a/orion-ops-ui/src/views/host-audit/connect-log/types/table.columns.ts +++ b/orion-ops-ui/src/views/host-audit/connect-log/types/table.columns.ts @@ -31,13 +31,11 @@ const columns = [ ellipsis: true, tooltip: true, }, { - title: 'token', - dataIndex: 'token', - slotName: 'token', + title: '类型', + dataIndex: 'type', + slotName: 'type', + width: 68, align: 'left', - width: 180, - ellipsis: true, - tooltip: true, }, { title: '状态', dataIndex: 'status', @@ -45,22 +43,23 @@ const columns = [ align: 'left', width: 90, }, { - title: '开始时间', - dataIndex: 'startTime', - slotName: 'startTime', + title: 'token', + dataIndex: 'token', + slotName: 'token', align: 'left', - width: 180, - render: ({ record }) => { - return record.startTime && dateFormat(new Date(record.startTime)); - }, + width: 120, + ellipsis: true, + tooltip: true, }, { - title: '结束时间', - dataIndex: 'endTime', - slotName: 'endTime', + title: '连接时间', + dataIndex: 'connectTime', + slotName: 'connectTime', align: 'left', - width: 180, + width: 310, render: ({ record }) => { - return record.endTime && dateFormat(new Date(record.endTime)); + return (record.startTime && dateFormat(new Date(record.startTime))) + + ' - ' + + (record.endTime && dateFormat(new Date(record.endTime)) || '现在'); }, }, ] as TableColumnData[]; diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/empty-recommend.vue b/orion-ops-ui/src/views/host/terminal/components/layout/empty-recommend.vue index 6891e851..0fa96de1 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/empty-recommend.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/empty-recommend.vue @@ -32,10 +32,10 @@ import type { HostQueryResponse } from '@/api/asset/host'; import { onMounted, ref } from 'vue'; import { useTerminalStore } from '@/store'; - import { TerminalTabs } from '../../types/terminal.const'; + import { PanelSessionType, TerminalTabs } from '../../types/terminal.const'; const totalCount = 7; - const { tabManager, hosts, openTerminal } = useTerminalStore(); + const { tabManager, hosts, openSession } = useTerminalStore(); const combinedHandlers = ref>([{ title: TerminalTabs.NEW_CONNECTION.title, @@ -46,8 +46,8 @@ // 点击组合操作元素 const clickHandlerItem = (item: CombinedHandlerItem) => { if (item.host) { - // 打开终端 - openTerminal(item.host as HostQueryResponse); + // 打开会话 + openSession(item.host as HostQueryResponse, PanelSessionType.TERMINAL); } else { // 打开 tab tabManager.openTab(item.tab as TerminalTabItem); diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panel.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panel.vue index 02af3da7..582ab3c9 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panel.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panel.vue @@ -45,7 +45,7 @@ import type { ITerminalTabManager, TerminalPanelTabItem } from '../../types/terminal.type'; import { watch } from 'vue'; import { useTerminalStore } from '@/store'; - import { TerminalPanelTabType } from '../../types/terminal.const'; + import { PanelSessionType } from '../../types/terminal.const'; import TerminalView from '../xterm/terminal-view.vue'; const props = defineProps<{ @@ -62,14 +62,14 @@ // 失焦自动终端 if (before) { const beforeTab = props.panel.items.find(s => s.key === before); - if (beforeTab && beforeTab?.type === TerminalPanelTabType.TERMINAL) { + if (beforeTab && beforeTab?.type === PanelSessionType.TERMINAL.type) { sessionManager.getSession(before)?.blur(); } } // 终端自动聚焦 if (active) { const activeTab = props.panel.items.find(s => s.key === active); - if (activeTab && activeTab?.type === TerminalPanelTabType.TERMINAL) { + if (activeTab && activeTab?.type === PanelSessionType.TERMINAL.type) { sessionManager.getSession(active)?.focus(); } } diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panels-view.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panels-view.vue index 8625c861..b13d61e4 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panels-view.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-panels-view.vue @@ -26,7 +26,7 @@ import TerminalPanel from './terminal-panel.vue'; import HostListModal from '../new-connection/host-list-modal.vue'; - const { preference, tabManager, panelManager, copyTerminalSession } = useTerminalStore(); + const { preference, tabManager, panelManager, copySession } = useTerminalStore(); const hostModal = ref(); @@ -67,10 +67,10 @@ hostModal.value.open(panelManager.active); break; case TerminalShortcutKeys.COPY_TERMINAL: - // 复制终端 - const hostId = panelManager.getCurrentPanel().getCurrentTab()?.hostId; - if (hostId) { - copyTerminalSession(hostId, panelManager.active); + // 复制会话 + const currentTab = panelManager.getCurrentPanel().getCurrentTab(); + if (currentTab) { + copySession(currentTab, panelManager.active); } break; case TerminalShortcutKeys.CLOSE_TERMINAL: @@ -80,11 +80,11 @@ panel.deleteTab(panel.active); } break; - case TerminalShortcutKeys.CHANGE_TO_PREV_TERMINAL: + case TerminalShortcutKeys.CHANGE_TO_PREV_SESSION: // 切换至前一个终端 panelManager.getCurrentPanel().changeToPrevTab(); break; - case TerminalShortcutKeys.CHANGE_TO_NEXT_TERMINAL: + case TerminalShortcutKeys.CHANGE_TO_NEXT_SESSION: // 切换至后一个终端 panelManager.getCurrentPanel().changeToNextTab(); break; diff --git a/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-modal.vue b/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-modal.vue index f965a6c4..a05530f3 100644 --- a/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-modal.vue +++ b/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-modal.vue @@ -52,9 +52,10 @@ import type { HostQueryResponse } from '@/api/asset/host'; import { computed, ref } from 'vue'; import { useTerminalStore } from '@/store'; + import { PanelSessionType } from '../../types/terminal.const'; import useVisible from '@/hooks/visible'; - const { hosts, openTerminal } = useTerminalStore(); + const { hosts, openSession } = useTerminalStore(); const { visible, setVisible } = useVisible(); const panelIndex = ref(); @@ -97,7 +98,7 @@ // 打开终端 const clickHost = (item: HostQueryResponse) => { - openTerminal(item, panelIndex.value); + openSession(item, PanelSessionType.TERMINAL, panelIndex.value); setVisible(false); }; diff --git a/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-view.vue b/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-view.vue index 3b3d8447..d62cc7f1 100644 --- a/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-view.vue +++ b/orion-ops-ui/src/views/host/terminal/components/new-connection/host-list-view.vue @@ -20,13 +20,13 @@
- - - + + + - -