From 720c2247c8ecacba72bf5ad97dc8713daf17f9be Mon Sep 17 00:00:00 2001 From: lijiahang Date: Fri, 12 Jan 2024 19:42:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=88=E7=AB=AF=E6=89=BF=E8=BD=BD?= =?UTF-8?q?=E9=A1=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orion-ops-ui/components.d.ts | 2 +- .../components/layout/empty-recommend.vue | 90 +++++++++++++++++++ .../components/layout/loading-skeleton.vue | 29 ++++++ .../components/layout/terminal-content.vue | 8 +- .../new-connection/new-connection-view.vue | 35 +------- .../terminal/handler/terminal-tab-manager.ts | 6 +- .../src/views/host/terminal/index.vue | 18 +++- 7 files changed, 153 insertions(+), 35 deletions(-) create mode 100644 orion-ops-ui/src/views/host/terminal/components/layout/empty-recommend.vue create mode 100644 orion-ops-ui/src/views/host/terminal/components/layout/loading-skeleton.vue diff --git a/orion-ops-ui/components.d.ts b/orion-ops-ui/components.d.ts index 524ea406..24f3a4c2 100644 --- a/orion-ops-ui/components.d.ts +++ b/orion-ops-ui/components.d.ts @@ -3,7 +3,7 @@ // @ts-nocheck // Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pull/3399 -import '@vue/runtime-core' +import '@vue/runtime-core'; export {} 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 new file mode 100644 index 00000000..07128c6c --- /dev/null +++ b/orion-ops-ui/src/views/host/terminal/components/layout/empty-recommend.vue @@ -0,0 +1,90 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/loading-skeleton.vue b/orion-ops-ui/src/views/host/terminal/components/layout/loading-skeleton.vue new file mode 100644 index 00000000..04699864 --- /dev/null +++ b/orion-ops-ui/src/views/host/terminal/components/layout/loading-skeleton.vue @@ -0,0 +1,29 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue index 3b8c5c26..1e353f5d 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue @@ -1,7 +1,8 @@ + + @@ -35,6 +38,7 @@ import { TabType, InnerTabs } from '../../types/terminal.const'; import { useTerminalStore } from '@/store'; import { watch } from 'vue'; + import EmptyRecommend from './empty-recommend.vue'; import NewConnectionView from '../new-connection/new-connection-view.vue'; import TerminalDisplaySetting from '../view-setting/terminal-display-setting.vue'; import TerminalThemeSetting from '../view-setting/terminal-theme-setting.vue'; @@ -46,6 +50,8 @@ // 监听 tab 修改 watch(() => tabManager.active, active => { if (!active) { + // 修改标题 + document.title = '主机终端'; return; } // 获取 tab diff --git a/orion-ops-ui/src/views/host/terminal/components/new-connection/new-connection-view.vue b/orion-ops-ui/src/views/host/terminal/components/new-connection/new-connection-view.vue index e8a73b6b..c99a5a90 100644 --- a/orion-ops-ui/src/views/host/terminal/components/new-connection/new-connection-view.vue +++ b/orion-ops-ui/src/views/host/terminal/components/new-connection/new-connection-view.vue @@ -40,16 +40,8 @@
- - - - - + @@ -77,16 +69,14 @@ import type { SelectOptionData } from '@arco-design/web-vue'; import { onBeforeMount, ref } from 'vue'; import { NewConnectionType, newConnectionTypeKey } from '../../types/terminal.const'; - import useLoading from '@/hooks/loading'; import { useDictStore, useTerminalStore } from '@/store'; import { PreferenceItem } from '@/store/modules/terminal'; import { dataColor } from '@/utils'; import { tagColor } from '@/views/asset/host-list/types/const'; import HostsView from './hosts-view.vue'; - const { loading, setLoading } = useLoading(); const { toRadioOptions } = useDictStore(); - const { preference, updateTerminalPreference, hosts, loadHosts } = useTerminalStore(); + const { preference, updateTerminalPreference, hosts } = useTerminalStore(); const newConnectionType = ref(preference.newConnectionType || NewConnectionType.GROUP); const filterValue = ref(''); @@ -123,21 +113,8 @@ }).forEach(s => filterOptions.value.push(s)); }; - // 加载主机信息 - const initHosts = async () => { - try { - setLoading(true); - // 加载主机信息 - await loadHosts(); - // 初始化过滤项 - initFilterOptions(); - } finally { - setLoading(false); - } - }; - - // 加载主机信息 - onBeforeMount(initHosts); + // 初始化过滤器项 + onBeforeMount(initFilterOptions); @@ -155,10 +132,6 @@ .body-container { justify-content: space-between; - .hosts-skeleton { - width: 100%; - } - .host-view-container { width: 100%; height: calc(100vh - 240px); diff --git a/orion-ops-ui/src/views/host/terminal/handler/terminal-tab-manager.ts b/orion-ops-ui/src/views/host/terminal/handler/terminal-tab-manager.ts index c8e03ec4..ddd0a88e 100644 --- a/orion-ops-ui/src/views/host/terminal/handler/terminal-tab-manager.ts +++ b/orion-ops-ui/src/views/host/terminal/handler/terminal-tab-manager.ts @@ -9,7 +9,9 @@ export default class TerminalTabManager implements ITerminalTabManager { public items: Array; constructor() { - this.active = InnerTabs.NEW_CONNECTION.key; + // fixme + // this.active = InnerTabs.NEW_CONNECTION.key; + this.active = undefined as unknown as string; this.items = [InnerTabs.NEW_CONNECTION]; } @@ -27,6 +29,8 @@ export default class TerminalTabManager implements ITerminalTabManager { if (key === this.active && this.items.length !== 0) { // 切换为前一个 tab this.active = this.items[Math.max(tabIndex - 1, 0)].key; + } else { + this.active = undefined as unknown as string; } } diff --git a/orion-ops-ui/src/views/host/terminal/index.vue b/orion-ops-ui/src/views/host/terminal/index.vue index 81f9d0f5..2847a447 100644 --- a/orion-ops-ui/src/views/host/terminal/index.vue +++ b/orion-ops-ui/src/views/host/terminal/index.vue @@ -12,7 +12,10 @@
- + + + +
@@ -36,12 +39,15 @@ import TerminalLeftSidebar from './components/layout/terminal-left-sidebar.vue'; import TerminalRightSidebar from './components/layout/terminal-right-sidebar.vue'; import TerminalContent from './components/layout/terminal-content.vue'; + import LoadingSkeleton from './components/layout/loading-skeleton.vue'; import './assets/styles/layout.less'; import 'xterm/css/xterm.css'; + import useLoading from '@/hooks/loading'; const terminalStore = useTerminalStore(); const dictStore = useDictStore(); const cacheStore = useCacheStore(); + const { loading: contentLoading, setLoading: setContentLoading } = useLoading(true); const originTitle = document.title; const render = ref(false); @@ -66,6 +72,16 @@ await dictStore.loadKeys([...dictKeys]); }); + // 加载主机信息 + onMounted(async () => { + try { + await terminalStore.loadHosts(); + } catch (e) { + } finally { + setContentLoading(false); + } + }); + // 注册关闭视口事件 onMounted(() => { // FIXME 开发阶段