// 获取统计数据
async function getStatistics() {
try {
const response = await fetch(`${API_BASE}/api/statistics`);
const data = await response.json();
if (data.success) {
const stats = data.data;
document.getElementById('totalUrls').textContent = stats.total_urls;
document.getElementById('totalClicks').textContent = stats.total_clicks;
document.getElementById('totalReplies').textContent = stats.total_replies;
document.getElementById('replyRate').textContent = stats.reply_rate;
}
} catch (error) {
console.error('获取统计数据失败:', error);
}
}
// 加载URL列表
async function loadUrlList() {
try {
const response = await fetch(`${API_BASE}/api/urls`);
const data = await response.json();
if (data.success) {
const tbody = document.getElementById('urlTableBody');
if (data.data.length === 0) {
tbody.innerHTML = '
| 暂无数据 |
';
return;
}
tbody.innerHTML = data.data.map(item => `
|
${item.url}
|
${item.click_count} |
${item.reply_count} |
${item.last_click_time || '未点击'} |
|
`).join('');
}
} catch (error) {
console.error('加载URL列表失败:', error);
}
}
// 重置URL
async function resetUrl(encodedUrl) {
if (!confirm('确定要重置该链接吗?')) {
return;
}
try {
const response = await fetch(`${API_BASE}/api/urls/${encodedUrl}/reset`, {
method: 'POST'
});
const data = await response.json();
if (data.success) {
showToast('重置成功', 'success');
loadUrlList();
getStatistics();
} else {
showToast(data.message || '重置失败', 'error');
}
} catch (error) {
showToast('重置失败: ' + error.message, 'error');
}
}
// 删除URL
async function deleteUrl(encodedUrl) {
if (!confirm('确定要删除该链接吗?')) {
return;
}
try {
const response = await fetch(`${API_BASE}/api/urls/${encodedUrl}`, {
method: 'DELETE'
});
const data = await response.json();
if (data.success) {
showToast('删除成功', 'success');
loadUrlList();
getStatistics();
} else {
showToast(data.message || '删除失败', 'error');
}
} catch (error) {
showToast('删除失败: ' + error.message, 'error');
}
}
// 初始化
document.addEventListener('DOMContentLoaded', () => {
getStatistics();
loadUrlList();
// 定时刷新
setInterval(() => {
getStatistics();
loadUrlList();
}, 5000);
});