Add files via upload

This commit is contained in:
公明
2025-12-19 20:49:10 +08:00
committed by GitHub
parent 85e9a58fc5
commit c7e8f3a42b
3 changed files with 194 additions and 50 deletions

View File

@@ -2355,6 +2355,98 @@ header {
padding: 24px;
}
/* 设置页面布局 */
.settings-layout {
display: flex;
flex: 1;
overflow: hidden;
background: var(--bg-primary);
}
/* 设置侧边栏 */
.settings-sidebar {
width: 200px;
background: var(--bg-primary);
border-right: 1px solid var(--border-color);
flex-shrink: 0;
padding: 0;
}
.settings-nav {
display: flex;
flex-direction: column;
gap: 0;
padding: 0;
}
.settings-nav-item {
padding: 14px 20px;
cursor: pointer;
color: var(--text-primary);
font-size: 0.9375rem;
transition: all 0.2s ease;
background: transparent;
border-left: 3px solid transparent;
position: relative;
}
.settings-nav-item:hover {
background: var(--bg-secondary);
}
.settings-nav-item.active {
background: rgba(0, 102, 255, 0.08);
color: var(--accent-color);
font-weight: 500;
border-left-color: var(--accent-color);
}
/* 设置内容区域 */
.settings-content {
flex: 1;
overflow-y: auto;
padding: 24px 32px;
background: var(--bg-primary);
}
.settings-section-content {
display: none;
}
.settings-section-content.active {
display: block;
}
.settings-section-header {
margin-bottom: 32px;
}
.settings-section-header h3 {
font-size: 1.5rem;
font-weight: 600;
color: var(--text-primary);
margin: 0;
}
.settings-subsection {
margin-bottom: 24px;
padding: 0;
}
.settings-subsection h4 {
font-size: 1rem;
font-weight: 600;
color: var(--text-primary);
margin-bottom: 16px;
}
.settings-description {
font-size: 0.875rem;
color: var(--text-secondary);
margin-bottom: 24px;
line-height: 1.6;
}
.settings-section {
margin-bottom: 32px;
}

View File

@@ -17,6 +17,27 @@ let toolsPagination = {
totalPages: 0
};
// 切换设置分类
function switchSettingsSection(section) {
// 更新导航项状态
document.querySelectorAll('.settings-nav-item').forEach(item => {
item.classList.remove('active');
});
const activeNavItem = document.querySelector(`.settings-nav-item[data-section="${section}"]`);
if (activeNavItem) {
activeNavItem.classList.add('active');
}
// 更新内容区域显示
document.querySelectorAll('.settings-section-content').forEach(content => {
content.classList.remove('active');
});
const activeContent = document.getElementById(`settings-section-${section}`);
if (activeContent) {
activeContent.classList.add('active');
}
}
// 打开设置
async function openSettings() {
// 切换到设置页面
@@ -34,6 +55,9 @@ async function openSettings() {
document.querySelectorAll('.form-group input').forEach(input => {
input.classList.remove('error');
});
// 默认显示基本设置
switchSettingsSection('basic');
}
// 关闭设置(保留函数以兼容旧代码,但现在不需要关闭功能)

View File

@@ -238,64 +238,92 @@
<div class="page-header">
<h2>系统设置</h2>
</div>
<div class="page-content settings-body">
<!-- OpenAI配置 -->
<div class="settings-section">
<h3>OpenAI 配置</h3>
<div class="settings-form">
<div class="form-group">
<label for="openai-base-url">Base URL <span style="color: red;">*</span></label>
<input type="text" id="openai-base-url" placeholder="https://api.openai.com/v1" required />
<div class="page-content settings-layout">
<!-- 左侧导航栏 -->
<aside class="settings-sidebar">
<nav class="settings-nav">
<div class="settings-nav-item active" data-section="basic" onclick="switchSettingsSection('basic')">
<span>基本设置</span>
</div>
<div class="form-group">
<label for="openai-api-key">API Key <span style="color: red;">*</span></label>
<input type="password" id="openai-api-key" placeholder="输入OpenAI API Key" required />
<div class="settings-nav-item" data-section="security" onclick="switchSettingsSection('security')">
<span>安全设置</span>
</div>
<div class="form-group">
<label for="openai-model">模型 <span style="color: red;">*</span></label>
<input type="text" id="openai-model" placeholder="gpt-4" required />
</nav>
</aside>
<!-- 右侧内容区域 -->
<div class="settings-content">
<!-- 基本设置 -->
<div id="settings-section-basic" class="settings-section-content active">
<div class="settings-section-header">
<h3>基本设置</h3>
</div>
<!-- OpenAI配置 -->
<div class="settings-subsection">
<h4>OpenAI 配置</h4>
<div class="settings-form">
<div class="form-group">
<label for="openai-base-url">Base URL <span style="color: red;">*</span></label>
<input type="text" id="openai-base-url" placeholder="https://api.openai.com/v1" required />
</div>
<div class="form-group">
<label for="openai-api-key">API Key <span style="color: red;">*</span></label>
<input type="password" id="openai-api-key" placeholder="输入OpenAI API Key" required />
</div>
<div class="form-group">
<label for="openai-model">模型 <span style="color: red;">*</span></label>
<input type="text" id="openai-model" placeholder="gpt-4" required />
</div>
</div>
</div>
<!-- Agent配置 -->
<div class="settings-subsection">
<h4>Agent 配置</h4>
<div class="settings-form">
<div class="form-group">
<label for="agent-max-iterations">最大迭代次数</label>
<input type="number" id="agent-max-iterations" min="1" max="100" placeholder="30" />
</div>
</div>
</div>
<div class="settings-actions">
<button class="btn-primary" onclick="applySettings()">应用配置</button>
</div>
</div>
</div>
<!-- Agent配-->
<div class="settings-section">
<h3>Agent 配置</h3>
<div class="settings-form">
<div class="form-group">
<label for="agent-max-iterations">最大迭代次数</label>
<input type="number" id="agent-max-iterations" min="1" max="100" placeholder="30" />
<!-- 安全设-->
<div id="settings-section-security" class="settings-section-content">
<div class="settings-section-header">
<h3>安全设置</h3>
</div>
<div class="settings-subsection">
<h4>修改密码</h4>
<p class="settings-description">修改登录密码后,需要使用新密码重新登录。</p>
<div class="settings-form">
<div class="form-group">
<label for="auth-current-password">当前密码</label>
<input type="password" id="auth-current-password" placeholder="输入当前登录密码" autocomplete="current-password" />
</div>
<div class="form-group">
<label for="auth-new-password">新密码</label>
<input type="password" id="auth-new-password" placeholder="设置新密码(至少 8 位)" autocomplete="new-password" />
</div>
<div class="form-group">
<label for="auth-confirm-password">确认新密码</label>
<input type="password" id="auth-confirm-password" placeholder="再次输入新密码" autocomplete="new-password" />
</div>
<div class="form-actions">
<button class="btn-secondary" type="button" onclick="resetPasswordForm()">清空</button>
<button class="btn-primary change-password-submit" type="button" onclick="changePassword()">修改密码</button>
</div>
</div>
</div>
</div>
</div>
<!-- 安全设置 -->
<div class="settings-section">
<h3>安全设置</h3>
<div class="settings-form">
<div class="form-group">
<label for="auth-current-password">当前密码</label>
<input type="password" id="auth-current-password" placeholder="输入当前登录密码" autocomplete="current-password" />
</div>
<div class="form-group">
<label for="auth-new-password">新密码</label>
<input type="password" id="auth-new-password" placeholder="设置新密码(至少 8 位)" autocomplete="new-password" />
</div>
<div class="form-group">
<label for="auth-confirm-password">确认新密码</label>
<input type="password" id="auth-confirm-password" placeholder="再次输入新密码" autocomplete="new-password" />
</div>
<div class="form-actions">
<button class="btn-secondary" type="button" onclick="resetPasswordForm()">清空</button>
<button class="btn-primary change-password-submit" type="button" onclick="changePassword()">修改密码</button>
</div>
<p class="password-hint">修改密码后,需要使用新密码重新登录。</p>
</div>
</div>
<div class="settings-actions">
<button class="btn-primary" onclick="applySettings()">应用配置</button>
</div>
</div>
</div>
</div>