// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
// 初始化机器人表单
initRobotForm();
// 加载机器人列表
loadRobots();
// 初始化编辑和删除功能
initEditRobotModal();
initDeleteRobotModal();
});
// 初始化机器人表单
function initRobotForm() {
const form = document.getElementById('robotForm');
const avatarInput = document.getElementById('robotAvatar');
const avatarPreview = document.getElementById('avatarPreview');
const avatarPreviewContainer = document.querySelector('#robotForm .avatar-preview');
// 头像预览
avatarInput.addEventListener('change', function() {
if (this.files && this.files[0]) {
const reader = new FileReader();
reader.onload = function(e) {
avatarPreview.src = e.target.result;
avatarPreviewContainer.classList.remove('d-none');
};
reader.readAsDataURL(this.files[0]);
} else {
avatarPreviewContainer.classList.add('d-none');
}
});
// 表单提交
form.addEventListener('submit', async function(e) {
e.preventDefault();
const formData = new FormData(this);
// 显示提交中状态
const submitButton = form.querySelector('button[type="submit"]');
const originalButtonText = submitButton.innerHTML;
submitButton.disabled = true;
submitButton.innerHTML = ' 添加中...';
try {
const response = await fetch('/imgsearcherApi/api/robots', {
method: 'POST',
body: formData
});
const data = await response.json();
if (data.error) {
alert(`添加失败: ${data.error}`);
return;
}
// 重置表单
form.reset();
avatarPreviewContainer.classList.add('d-none');
// 刷新机器人列表
loadRobots();
// 显示成功消息
alert('机器人角色添加成功!');
} catch (error) {
alert(`添加失败: ${error.message}`);
} finally {
// 恢复按钮状态
submitButton.disabled = false;
submitButton.innerHTML = originalButtonText;
}
});
}
// 加载机器人列表
async function loadRobots() {
const robotsList = document.getElementById('robotsList');
const loadingIndicator = document.getElementById('loadingIndicator');
const noRobotsMessage = document.getElementById('noRobotsMessage');
// 显示加载指示器
loadingIndicator.classList.remove('d-none');
noRobotsMessage.classList.add('d-none');
// 清除现有的机器人卡片(保留标题和加载指示器)
const existingCards = robotsList.querySelectorAll('.robot-card-container');
existingCards.forEach(card => card.remove());
try {
const response = await fetch('/imgsearcherApi/api/robots');
const data = await response.json();
// 隐藏加载指示器
loadingIndicator.classList.add('d-none');
if (!data.robots || data.robots.length === 0) {
noRobotsMessage.classList.remove('d-none');
return;
}
// 渲染机器人卡片
data.robots.forEach(robot => {
const robotCard = createRobotCard(robot);
robotsList.appendChild(robotCard);
});
} catch (error) {
console.error('加载机器人列表失败:', error);
loadingIndicator.classList.add('d-none');
alert(`加载机器人列表失败: ${error.message}`);
}
}
// 创建机器人卡片
function createRobotCard(robot) {
const cardContainer = document.createElement('div');
cardContainer.className = 'col-md-4 mb-4 robot-card-container';
const avatarHtml = robot.avatar_data
? ``
: `