mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-03-31 08:19:54 +02:00
Add files via upload
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
// 关闭设置(保留函数以兼容旧代码,但现在不需要关闭功能)
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user