diff --git a/frontend/js/components/initial-stock.js b/frontend/js/components/initial-stock.js index 4e98007..84c4e76 100755 --- a/frontend/js/components/initial-stock.js +++ b/frontend/js/components/initial-stock.js @@ -91,6 +91,7 @@ + @@ -282,12 +283,44 @@ + + +
`; setTimeout(() => { document.getElementById('add-stock-btn')?.addEventListener('click', () => openModal()); document.getElementById('import-stock-btn')?.addEventListener('click', () => showImportDialog()); document.getElementById('download-template-btn')?.addEventListener('click', () => downloadTemplate()); + document.getElementById('restore-backup-btn')?.addEventListener('click', () => showRestoreDialog()); document.getElementById('batch-delete-btn')?.addEventListener('click', () => batchDelete()); document.getElementById('search-keyword')?.addEventListener('keypress', (e) => { if (e.key === 'Enter') InitialStock.search(); @@ -623,6 +656,112 @@ return String(str).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); } + async function showRestoreDialog() { + document.getElementById('restore-modal').style.display = 'flex'; + await loadBackupList(); + } + + function closeRestoreModal() { + document.getElementById('restore-modal').style.display = 'none'; + } + + async function loadBackupList() { + const container = document.getElementById('backup-list'); + try { + const res = await API.get('/api/backups?table_name=initial_stock'); + const backups = res.list || []; + + if (backups.length === 0) { + container.innerHTML = '