Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4642a278a5 | |||
| 598a86b32d |
@@ -136,6 +136,7 @@ xian-favor/
|
||||
|
||||
## 版本历史
|
||||
|
||||
- v1.3.2 (2026-04-13): 编辑和添加模态框改为大尺寸(modal-lg)
|
||||
- v1.3.1 (2026-04-13): 备注改名为详情,支持换行显示,扩大输入框
|
||||
- v1.3.0 (2026-04-13): 标签管理功能和输入自动提示
|
||||
- 侧边栏新增"标签管理"入口
|
||||
|
||||
@@ -246,6 +246,9 @@ INDEX_TEMPLATE = '''
|
||||
<option value="todo">待办</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-outline-success me-2" onclick="exportData()" title="导出JSON">
|
||||
<i class="bi bi-download"></i> 导出
|
||||
</button>
|
||||
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addModal">
|
||||
<i class="bi bi-plus-lg"></i> 添加
|
||||
</button>
|
||||
@@ -948,6 +951,29 @@ async function deleteTagManager(id, name) {
|
||||
loadItems();
|
||||
}
|
||||
|
||||
// 导出数据
|
||||
async function exportData() {
|
||||
const res = await fetch(`${API_BASE}/items?limit=1000`);
|
||||
const data = await res.json();
|
||||
|
||||
if (!data.success) {
|
||||
alert('导出失败');
|
||||
return;
|
||||
}
|
||||
|
||||
// 格式化JSON
|
||||
const jsonStr = JSON.stringify(data.data, null, 2);
|
||||
|
||||
// 创建下载
|
||||
const blob = new Blob([jsonStr], { type: 'application/json' });
|
||||
const url = URL.createObjectURL(blob);
|
||||
const a = document.createElement('a');
|
||||
a.href = url;
|
||||
a.download = `xian_favor_export_${new Date().toISOString().slice(0,10)}.json`;
|
||||
a.click();
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
|
||||
function debounce(fn, delay) {
|
||||
let timer;
|
||||
return function(...args) {
|
||||
|
||||
Reference in New Issue
Block a user