2026-02-05 17:33:56 +08:00
|
|
|
|
<!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">
|
|
|
|
|
|
<!-- 自定义样式 -->
|
2026-02-06 10:03:36 +08:00
|
|
|
|
<link rel="stylesheet" href="/webui/css/webui.css">
|
2026-02-05 17:33:56 +08:00
|
|
|
|
</head>
|
|
|
|
|
|
<body>
|
|
|
|
|
|
<div id="app">
|
|
|
|
|
|
<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="#1a1b26"
|
|
|
|
|
|
text-color="#c0caf5"
|
|
|
|
|
|
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-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>
|
2026-02-06 09:48:10 +08:00
|
|
|
|
<!-- 主应用(创建 Vue 实例,但不挂载) -->
|
2026-02-06 10:03:36 +08:00
|
|
|
|
<script src="/webui/js/app.js"></script>
|
2026-02-06 09:48:10 +08:00
|
|
|
|
<!-- 组件(注册到 app) -->
|
2026-02-06 10:03:36 +08:00
|
|
|
|
<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>
|
2026-02-06 09:48:10 +08:00
|
|
|
|
<!-- 挂载应用 -->
|
2026-02-06 10:03:36 +08:00
|
|
|
|
<script src="/webui/js/main.js"></script>
|
2026-02-05 17:33:56 +08:00
|
|
|
|
</body>
|
|
|
|
|
|
</html>
|