feat: 新增设备巡检模块实现完整的巡检告警功能
新增设备巡检模块核心功能,包括: - 巡检数据存储与调度系统 - 华为/H3C交换机及Linux服务器采集器 - 设备扩展配置与告警规则管理 - 主机详情页巡检配置入口 - 产品名称自定义设置功能 - 网络设备SSH exec通道兼容处理
This commit is contained in:
@@ -84,6 +84,7 @@ import {
|
||||
STORAGE_KEY_SHELL_ONLY_TAB_NUMBER_SHORTCUTS,
|
||||
STORAGE_KEY_SHOW_TAB_NUMBER_BADGES,
|
||||
STORAGE_KEY_DISABLE_TERMINAL_FONT_ZOOM,
|
||||
STORAGE_KEY_PRODUCT_NAME,
|
||||
} from '../../infrastructure/config/storageKeys';
|
||||
import { DEFAULT_UI_LOCALE, resolveSupportedLocale } from '../../infrastructure/config/i18n';
|
||||
import {
|
||||
@@ -272,6 +273,10 @@ export const useSettingsState = (options: { enableSettingsSync?: boolean; enable
|
||||
const stored = readStoredString(STORAGE_KEY_UI_FONT_FAMILY);
|
||||
return stored && isValidUiFontId(stored) ? stored : DEFAULT_UI_FONT_ID;
|
||||
});
|
||||
// 产品名称配置(用于标题栏、侧边栏 Logo 等)
|
||||
const [productName, setProductName] = useState<string>(() => {
|
||||
return localStorageAdapter.readString(STORAGE_KEY_PRODUCT_NAME) || 'NetMesh';
|
||||
});
|
||||
const [syncConfig, setSyncConfig] = useState<SyncConfig | null>(() => localStorageAdapter.read<SyncConfig>(STORAGE_KEY_SYNC));
|
||||
const [terminalThemeId, setTerminalThemeId] = useState<string>(() => localStorageAdapter.readString(STORAGE_KEY_TERM_THEME) || DEFAULT_TERMINAL_THEME);
|
||||
const [followAppTerminalTheme, setFollowAppTerminalThemeState] = useState<boolean>(() => {
|
||||
@@ -1163,12 +1168,32 @@ export const useSettingsState = (options: { enableSettingsSync?: boolean; enable
|
||||
}
|
||||
}, [uiFontFamilyId, uiFontsLoaded, notifySettingsChanged]);
|
||||
|
||||
// Persist product name
|
||||
useLayoutEffect(() => {
|
||||
localStorageAdapter.writeString(STORAGE_KEY_PRODUCT_NAME, productName);
|
||||
if (persistMountedRef.current) {
|
||||
notifySettingsChanged(STORAGE_KEY_PRODUCT_NAME, productName);
|
||||
// 更新窗口标题栏
|
||||
const bridge = netcattyBridge.get();
|
||||
if (bridge?.setWindowTitle) {
|
||||
bridge.setWindowTitle(productName).then((result: any) => {
|
||||
console.log('[productName] setWindowTitle result:', result);
|
||||
}).catch((err: any) => {
|
||||
console.log('[productName] setWindowTitle error:', err);
|
||||
});
|
||||
}
|
||||
}
|
||||
// 发送自定义事件通知侧边栏更新
|
||||
window.dispatchEvent(new CustomEvent('productNameChanged', { detail: productName }));
|
||||
}, [productName, notifySettingsChanged]);
|
||||
|
||||
useSettingsIpcSync({
|
||||
enabled: enableSettingsSync,
|
||||
syncAppearanceFromStorage,
|
||||
syncCustomCssFromStorage,
|
||||
setUiLanguage,
|
||||
setUiFontFamilyId,
|
||||
setProductName,
|
||||
setTerminalThemeId,
|
||||
setTerminalThemeDarkId,
|
||||
setTerminalThemeLightId,
|
||||
@@ -2004,6 +2029,8 @@ export const useSettingsState = (options: { enableSettingsSync?: boolean; enable
|
||||
setCustomAccent,
|
||||
uiFontFamilyId,
|
||||
setUiFontFamilyId,
|
||||
productName,
|
||||
setProductName,
|
||||
syncConfig,
|
||||
updateSyncConfig,
|
||||
uiLanguage,
|
||||
|
||||
Reference in New Issue
Block a user