document.addEventListener('DOMContentLoaded', function() { // 获取当前配置 fetchConfig(); // 保存配置按钮事件 document.getElementById('saveConfig').addEventListener('click', saveConfig); }); // 获取当前配置 function fetchConfig() { fetch('/api/config', { method: 'GET', headers: { 'Authorization': 'Bearer ' + getAdminKey() } }) .then(response => { if (!response.ok) { throw new Error('获取配置失败,请检查管理员密钥是否正确'); } return response.json(); }) .then(data => { // 代理设置 document.getElementById('proxy_host').value = data.PROXY_HOST || ''; document.getElementById('proxy_port').value = data.PROXY_PORT || ''; document.getElementById('proxy_user').value = data.PROXY_USER || ''; // 代理密码字段 const proxyPassField = document.getElementById('proxy_pass'); if (data.PROXY_PASS && data.PROXY_PASS !== '') { // 设置代理密码占位符,防止用户修改 proxyPassField.setAttribute('placeholder', '已设置代理密码 (请保留空)'); } else { proxyPassField.setAttribute('placeholder', '代理密码'); } // 图像本地化设置 document.getElementById('image_localization').checked = data.IMAGE_LOCALIZATION || false; document.getElementById('image_save_dir').value = data.IMAGE_SAVE_DIR || 'src/static/images'; }) .catch(error => { showMessage('错误', error.message, 'danger'); }); } // 保存配置 function saveConfig() { // 获取代理设置 const proxyHost = document.getElementById('proxy_host').value.trim(); const proxyPort = document.getElementById('proxy_port').value.trim(); const proxyUser = document.getElementById('proxy_user').value.trim(); const proxyPass = document.getElementById('proxy_pass').value.trim(); // 获取图像本地化设置 const imageLocalization = document.getElementById('image_localization').checked; const imageSaveDir = document.getElementById('image_save_dir').value.trim(); // 创建配置对象 const config = { PROXY_HOST: proxyHost, PROXY_PORT: proxyPort, PROXY_USER: proxyUser, IMAGE_LOCALIZATION: imageLocalization, IMAGE_SAVE_DIR: imageSaveDir, save_to_env: true }; // 如果代理密码存在,则添加到配置对象中 if (proxyPass) { config.PROXY_PASS = proxyPass; } fetch('/api/config', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + getAdminKey() }, body: JSON.stringify(config) }) .then(response => { if (!response.ok) { throw new Error('保存配置失败,请检查管理员密钥是否正确'); } return response.json(); }) .then(data => { showMessage('成功', '配置已保存', 'success'); // 成功后,立即重新获取配置以更新显示 setTimeout(fetchConfig, 1000); }) .catch(error => { showMessage('错误', error.message, 'danger'); }); } // 获取管理员密钥 function getAdminKey() { return localStorage.getItem('adminKey') || ''; } // 显示消息 function showMessage(title, message, type) { const alertDiv = document.createElement('div'); alertDiv.className = `alert alert-${type} alert-dismissible fade show`; alertDiv.innerHTML = ` ${title}: ${message} `; const messagesContainer = document.getElementById('messages'); messagesContainer.appendChild(alertDiv); // 5秒后自动关闭 setTimeout(() => { alertDiv.classList.remove('show'); setTimeout(() => alertDiv.remove(), 150); }, 5000); }