mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 21:24:10 +00:00
2.2 KiB
2.2 KiB
Task Record
Date: 2026-04-26 Related Module: web (frontend) Change Type: Add
Background
Add backup management UI page and corresponding frontend model fields to the settings page. The backup feature allows users to configure scheduled backups, manually create backups, and manage (download/restore/delete) existing backup files.
Changes
- Added 4 backup fields to
AllSettingclass inweb/assets/js/model/setting.js:backupEnabled,backupFrequency,backupHour,backupMaxCount - Created
web/html/settings/backup.htmlwith Vue template for backup configuration, manual operations, and backup list table - Added Backup tab (key="7") to settings.html
<a-tabs>component - Added Vue data properties:
backupList,backupColumns,backupLoading,backupCreating,backupRefreshInterval - Added Vue methods:
fetchBackups,createBackup,restoreBackup,deleteBackup,downloadBackup,formatFileSize,formatBackupTime - Modified
onSettingsTabChangeto fetch backups when tab 7 is selected - Added 30-second backup refresh interval in
mounted()lifecycle hook - Added
beforeDestroy()lifecycle hook to clear the backup refresh interval
Impact
- New template file:
web/html/settings/backup.html - Modified:
web/assets/js/model/setting.js,web/html/settings.html - Uses Vue
[[ ]]delimiters for interpolation (project standard) - API endpoints referenced:
/panel/api/server/listBackups,/panel/api/server/backup,/panel/api/server/restore/,/panel/api/server/deleteBackup/,/panel/api/server/downloadBackup/ - Uses
this.authHeadersfor axios requests (expected to be defined separately) AllSetting.equals()will now factor in backup fields for change detection
Verification
go build ./...passesgofmt -l -w .passes with no changes needed- Template compilation verified via build
- Cannot runtime test without running panel server (no local dev environment)
Risks And Follow-Up
this.authHeadersis referenced but not defined in the current codebase; must be defined before runtime use- Backup API endpoints must exist on the backend for the page to function
AllSetting.equals()will use the new backup fields for save-button change detection (existing behavior, no regression expected)