158 lines
6.6 KiB
HTML
158 lines
6.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>RAG 聊天助手</title>
|
|
<link rel="stylesheet" href="/static/chat/style.css?v=202601271553">
|
|
<script src="/static/chat/script.js?v=202601271553"></script>
|
|
<script src="/static/chat/marked.min.js"></script>
|
|
</head>
|
|
<body>
|
|
<!-- 登录模态框 -->
|
|
<div class="modal" id="loginModal">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h3>用户登录</h3>
|
|
<button class="close-btn" id="loginCloseBtn">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form id="loginForm">
|
|
<div class="form-group">
|
|
<label for="loginUsername">用户名</label>
|
|
<input type="text" id="loginUsername" name="username" required>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="loginPassword">密码</label>
|
|
<input type="password" id="loginPassword" name="password" required>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn secondary" id="showRegisterBtn">注册新用户</button>
|
|
<button type="submit" class="btn primary">登录</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 注册模态框 -->
|
|
<div class="modal" id="registerModal">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h3>用户注册</h3>
|
|
<button class="close-btn" id="registerCloseBtn">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form id="registerForm">
|
|
<div class="form-group">
|
|
<label for="registerUsername">用户名</label>
|
|
<input type="text" id="registerUsername" name="username" required>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="registerPassword">密码</label>
|
|
<input type="password" id="registerPassword" name="password" required>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="registerConfirmPassword">确认密码</label>
|
|
<input type="password" id="registerConfirmPassword" name="confirmPassword" required>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn secondary" id="showLoginBtn">已有账号?登录</button>
|
|
<button type="submit" class="btn primary">注册</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="chat-container">
|
|
<!-- 侧边栏 -->
|
|
<aside class="sidebar">
|
|
<div class="sidebar-header">
|
|
<h1>💬 RAG 聊天</h1>
|
|
<button class="new-chat-btn" id="newChatBtn">+</button>
|
|
</div>
|
|
|
|
<div class="conversations-list" id="conversationsList">
|
|
<!-- 对话列表将通过 JavaScript 动态生成 -->
|
|
</div>
|
|
|
|
<div class="sidebar-footer">
|
|
<!-- 未登录状态 -->
|
|
<div class="user-info not-logged-in" id="notLoggedInInfo" style="display: flex; align-items: center; gap: 10px;">
|
|
<div class="user-avatar">
|
|
👤
|
|
</div>
|
|
<button class="login-btn" id="quickLoginBtn">登录</button>
|
|
</div>
|
|
|
|
<!-- 已登录状态 -->
|
|
<div class="user-info logged-in" id="loggedInInfo" style="display: none;">
|
|
<div class="user-avatar">
|
|
👤
|
|
</div>
|
|
<div class="user-details">
|
|
<span class="user-name" id="currentUsername">测试用户</span>
|
|
<span class="user-role" id="currentUserRole">用户</span>
|
|
</div>
|
|
</div>
|
|
|
|
<button class="logout-btn" id="logoutBtn" style="display: none;">🚪</button>
|
|
</div>
|
|
</aside>
|
|
|
|
<!-- 主聊天区域 -->
|
|
<main class="chat-main">
|
|
<!-- 欢迎界面 -->
|
|
<div class="welcome-screen" id="welcomeScreen">
|
|
<div class="welcome-content">
|
|
🤖
|
|
<h2>欢迎使用 RAG 聊天助手</h2>
|
|
<p>我是一个基于检索增强生成的智能助手,可以帮助你回答各种问题</p>
|
|
<button class="start-chat-btn" id="startChatBtn">开始聊天</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 聊天界面 -->
|
|
<div class="chat-screen" id="chatScreen" style="display: none;">
|
|
<div class="chat-header">
|
|
<div class="chat-title" id="chatTitle">新对话</div>
|
|
<div class="chat-actions">
|
|
<!-- 待开发功能按钮已移除 -->
|
|
</div>
|
|
</div>
|
|
|
|
<div class="messages-container" id="messagesContainer">
|
|
<!-- 消息将通过 JavaScript 动态生成 -->
|
|
</div>
|
|
|
|
<div class="input-area">
|
|
<div class="input-container">
|
|
<input type="text" id="messageInput" placeholder="输入消息..." autocomplete="off">
|
|
<button class="input-btn" id="sendBtn">➤</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 模态框:删除对话确认 -->
|
|
<div class="modal" id="deleteChatModal">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h3>删除对话</h3>
|
|
<button class="close-btn">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>确定要删除这个对话吗?此操作不可恢复。</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button class="cancel-btn">取消</button>
|
|
<button class="confirm-btn danger" id="confirmDeleteChat">删除</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html> |