187 lines
8.8 KiB
HTML
187 lines
8.8 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>机器人角色管理 - 地瓜机器人</title>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.1/font/bootstrap-icons.css">
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
|
<style>
|
|
.robot-card {
|
|
height: 100%;
|
|
transition: transform 0.3s;
|
|
}
|
|
.robot-card:hover {
|
|
transform: translateY(-5px);
|
|
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
|
|
}
|
|
.robot-avatar {
|
|
width: 100px;
|
|
height: 100px;
|
|
object-fit: cover;
|
|
border-radius: 50%;
|
|
margin-bottom: 15px;
|
|
}
|
|
.robot-avatar-placeholder {
|
|
width: 100px;
|
|
height: 100px;
|
|
border-radius: 50%;
|
|
background-color: #e9ecef;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-bottom: 15px;
|
|
font-size: 2rem;
|
|
color: #6c757d;
|
|
}
|
|
.robot-background {
|
|
max-height: 150px;
|
|
overflow-y: auto;
|
|
}
|
|
#robotForm .avatar-preview {
|
|
width: 100px;
|
|
height: 100px;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
margin-top: 10px;
|
|
}
|
|
#robotForm .avatar-preview img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<header class="text-center my-4">
|
|
<h1>机器人角色管理</h1>
|
|
<p class="lead">创建和管理您的机器人角色</p>
|
|
<nav class="mt-3">
|
|
<a href="/imgsearcherApi" class="btn btn-outline-secondary me-2">返回首页</a>
|
|
<a href="/imgsearcherApi/chat-with-image" class="btn btn-outline-primary">图片智能对话</a>
|
|
</nav>
|
|
</header>
|
|
|
|
<div class="row mb-4">
|
|
<div class="col-md-12">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="card-title">添加新机器人角色</h5>
|
|
<form id="robotForm" enctype="multipart/form-data">
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<div class="mb-3">
|
|
<label for="robotName" class="form-label">机器人名称</label>
|
|
<input type="text" class="form-control" id="robotName" name="name" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="robotAvatar" class="form-label">头像(可选)</label>
|
|
<input class="form-control" type="file" id="robotAvatar" name="avatar" accept="image/*">
|
|
<div class="avatar-preview d-none mt-2">
|
|
<img id="avatarPreview" src="" alt="头像预览">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-8">
|
|
<div class="mb-3">
|
|
<label for="robotBackground" class="form-label">背景故事</label>
|
|
<textarea class="form-control" id="robotBackground" name="background" rows="5" required></textarea>
|
|
<div class="form-text">描述机器人的性格、背景和特点,这些信息将用于图片对话中</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary">
|
|
<i class="bi bi-plus-circle"></i> 添加机器人
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" id="robotsList">
|
|
<div class="col-12 mb-4">
|
|
<h3>现有机器人角色</h3>
|
|
<div class="text-center py-5 d-none" id="loadingIndicator">
|
|
<div class="spinner-border text-primary" role="status">
|
|
<span class="visually-hidden">加载中...</span>
|
|
</div>
|
|
<p class="mt-2">加载机器人角色...</p>
|
|
</div>
|
|
<div class="alert alert-info d-none" id="noRobotsMessage">
|
|
暂无机器人角色,请添加一个新的机器人角色。
|
|
</div>
|
|
</div>
|
|
<!-- 机器人卡片将在这里动态生成 -->
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 编辑机器人模态框 -->
|
|
<div class="modal fade" id="editRobotModal" tabindex="-1" aria-labelledby="editRobotModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="editRobotModalLabel">编辑机器人角色</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form id="editRobotForm" enctype="multipart/form-data">
|
|
<input type="hidden" id="editRobotId">
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<div class="mb-3">
|
|
<label for="editRobotName" class="form-label">机器人名称</label>
|
|
<input type="text" class="form-control" id="editRobotName" name="name" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="editRobotAvatar" class="form-label">头像(可选)</label>
|
|
<input class="form-control" type="file" id="editRobotAvatar" name="avatar" accept="image/*">
|
|
<div class="avatar-preview mt-2">
|
|
<img id="editAvatarPreview" src="" alt="头像预览">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-8">
|
|
<div class="mb-3">
|
|
<label for="editRobotBackground" class="form-label">背景故事</label>
|
|
<textarea class="form-control" id="editRobotBackground" name="background" rows="5" required></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
|
|
<button type="button" class="btn btn-primary" id="saveRobotChanges">保存更改</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 确认删除模态框 -->
|
|
<div class="modal fade" id="deleteRobotModal" tabindex="-1" aria-labelledby="deleteRobotModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="deleteRobotModalLabel">确认删除</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>确定要删除这个机器人角色吗?此操作不可撤销。</p>
|
|
<input type="hidden" id="deleteRobotId">
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
|
|
<button type="button" class="btn btn-danger" id="confirmDeleteRobot">删除</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script src="{{ url_for('static', filename='js/robots.js') }}"></script>
|
|
</body>
|
|
</html>
|