Files
MineNasAI/src/minenasai/webtui/static/webui/index.html

148 lines
7.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MineNASAI - 控制台</title>
<!-- Element Plus CSS -->
<link rel="stylesheet" href="https://unpkg.com/element-plus/dist/index.css">
<!-- xterm.js CSS -->
<link rel="stylesheet" href="https://unpkg.com/xterm@5.3.0/css/xterm.css">
<!-- 自定义样式 -->
<link rel="stylesheet" href="/webui/css/webui.css">
</head>
<body>
<div id="app" :class="{ 'theme-light': theme === 'light' }">
<el-config-provider :locale="zhCn">
<el-container class="app-container">
<!-- 侧边栏 -->
<el-aside :width="isCollapsed ? '64px' : '220px'" class="sidebar">
<div class="logo" @click="isCollapsed = !isCollapsed">
<span class="logo-icon">🤖</span>
<span v-show="!isCollapsed" class="logo-text">MineNASAI</span>
</div>
<el-menu
:default-active="activeMenu"
:collapse="isCollapsed"
:collapse-transition="false"
:background-color="theme === 'dark' ? '#1a1b26' : '#ffffff'"
:text-color="theme === 'dark' ? '#c0caf5' : '#303133'"
active-text-color="#7aa2f7"
@select="handleMenuSelect"
>
<el-menu-item index="dashboard">
<el-icon><Monitor /></el-icon>
<span>仪表盘</span>
</el-menu-item>
<el-sub-menu index="config">
<template #title>
<el-icon><Setting /></el-icon>
<span>系统配置</span>
</template>
<el-menu-item index="llm">LLM 接口</el-menu-item>
<el-menu-item index="channels">通讯渠道</el-menu-item>
<el-menu-item index="proxy">代理设置</el-menu-item>
</el-sub-menu>
<el-menu-item index="agents">
<el-icon><User /></el-icon>
<span>Agent 管理</span>
</el-menu-item>
<el-menu-item index="scheduler">
<el-icon><Clock /></el-icon>
<span>定时任务</span>
</el-menu-item>
<el-menu-item index="terminal">
<el-icon><Monitor /></el-icon>
<span>终端</span>
</el-menu-item>
<el-menu-item index="logs">
<el-icon><Document /></el-icon>
<span>系统日志</span>
</el-menu-item>
</el-menu>
</el-aside>
<!-- 主内容区 -->
<el-container>
<el-header class="header">
<div class="header-left">
<el-breadcrumb separator="/">
<el-breadcrumb-item>{{ currentPageTitle }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="header-right">
<el-button text @click="toggleTheme" :title="theme === 'dark' ? '切换亮色主题' : '切换暗色主题'">
<el-icon v-if="theme === 'dark'"><Sunny /></el-icon>
<el-icon v-else><Moon /></el-icon>
</el-button>
<el-tag :type="systemStatus === 'running' ? 'success' : 'danger'" size="small">
{{ systemStatus === 'running' ? '运行中' : '异常' }}
</el-tag>
<el-dropdown>
<el-button text>
<el-icon><User /></el-icon>
管理员
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="handleLogout">退出登录</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</el-header>
<el-main class="main-content">
<!-- 仪表盘 -->
<dashboard-page v-if="activeMenu === 'dashboard'" :stats="systemStats"></dashboard-page>
<!-- LLM 配置 -->
<llm-config-page v-if="activeMenu === 'llm'" :config="config.llm" @save="saveLLMConfig"></llm-config-page>
<!-- 通讯渠道配置 -->
<channels-config-page v-if="activeMenu === 'channels'" :config="config.channels" @save="saveChannelsConfig"></channels-config-page>
<!-- 代理配置 -->
<proxy-config-page v-if="activeMenu === 'proxy'" :config="config.proxy" @save="saveProxyConfig"></proxy-config-page>
<!-- Agent 管理 -->
<agents-page v-if="activeMenu === 'agents'" :agents="agents" @refresh="loadAgents"></agents-page>
<!-- 定时任务 -->
<scheduler-page v-if="activeMenu === 'scheduler'" :jobs="cronJobs" @refresh="loadCronJobs"></scheduler-page>
<!-- 终端 -->
<terminal-page v-if="activeMenu === 'terminal'" ref="terminalPage"></terminal-page>
<!-- 日志 -->
<logs-page v-if="activeMenu === 'logs'"></logs-page>
</el-main>
</el-container>
</el-container>
</el-config-provider>
</div>
<!-- Vue 3 + Element Plus -->
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script src="https://unpkg.com/@element-plus/icons-vue"></script>
<script src="https://unpkg.com/element-plus"></script>
<script src="https://unpkg.com/element-plus/dist/locale/zh-cn.min.js"></script>
<!-- xterm.js -->
<script src="https://unpkg.com/xterm@5.3.0/lib/xterm.js"></script>
<script src="https://unpkg.com/xterm-addon-fit@0.8.0/lib/xterm-addon-fit.js"></script>
<!-- 主应用(创建 Vue 实例,但不挂载) -->
<script src="/webui/js/app.js"></script>
<!-- 组件(注册到 app -->
<script src="/webui/js/components/dashboard.js"></script>
<script src="/webui/js/components/llm-config.js"></script>
<script src="/webui/js/components/channels-config.js"></script>
<script src="/webui/js/components/proxy-config.js"></script>
<script src="/webui/js/components/agents.js"></script>
<script src="/webui/js/components/scheduler.js"></script>
<script src="/webui/js/components/terminal.js"></script>
<script src="/webui/js/components/logs.js"></script>
<!-- 挂载应用 -->
<script src="/webui/js/main.js"></script>
</body>
</html>