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 @@
-
+
@@ -22,6 +23,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 开发阶段