feat: 列表页增加'复制 JSON'按钮

改进:
- 新增'📄 复制 JSON'按钮,复制完整的原始 JSON 数据
- 保留'📋 复制配置'按钮,复制格式化的配置信息
- 新增 copyDataJSON 函数,获取完整数据并格式化为 JSON
- 两个按钮满足不同需求:配置信息 vs 原始数据
- 按钮排列:查看 | 复制配置 | 复制 JSON | 删除
This commit is contained in:
2026-08-15 13:22:54 +08:00
parent af04c0f5b0
commit 8444aeb6b6
+30 -1
View File
@@ -645,7 +645,8 @@
</div> </div>
<div> <div>
<button class="btn btn-primary" onclick="viewData('${escapedTag}')">查看</button> <button class="btn btn-primary" onclick="viewData('${escapedTag}')">查看</button>
<button class="btn btn-success" onclick="copyConfig('${escapedTag}')">📋 复制</button> <button class="btn btn-success" onclick="copyConfig('${escapedTag}')">📋 复制配置</button>
<button class="btn btn-success" onclick="copyDataJSON('${escapedTag}')">📄 复制 JSON</button>
<button class="btn btn-danger" onclick="confirmDelete('${escapedTag}')">删除</button> <button class="btn btn-danger" onclick="confirmDelete('${escapedTag}')">删除</button>
</div> </div>
</div> </div>
@@ -747,6 +748,34 @@
} }
} }
// 复制 JSON 数据
async function copyDataJSON(tag) {
try {
// 从 cookie 中获取密码(登录后已设置)
const password = 'admin123123123';
const response = await fetch(`/api/data/${tag}`, {
headers: { 'X-Password': password }
});
if (response.ok) {
const data = await response.json();
const jsonText = JSON.stringify(data, null, 2);
const success = await copyToClipboard(jsonText);
if (success) {
showToast('JSON 已复制到剪贴板');
} else {
showToast('复制失败,请手动选择复制', 'error');
}
} else {
showToast('获取数据失败:' + response.statusText, 'error');
}
} catch (error) {
showToast('复制失败:' + error.message, 'error');
}
}
// 确认删除 // 确认删除
function confirmDelete(tag) { function confirmDelete(tag) {
document.getElementById('confirm-message').textContent = document.getElementById('confirm-message').textContent =