refactor(frontend): 替换 axios 为自定义 api 模块
This commit is contained in:
@@ -32,7 +32,7 @@ import {
|
|||||||
CloudDownloadOutlined,
|
CloudDownloadOutlined,
|
||||||
FileProtectOutlined,
|
FileProtectOutlined,
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
import axios from 'axios';
|
import api from '../api';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
const { Title, Text, Paragraph } = Typography;
|
const { Title, Text, Paragraph } = Typography;
|
||||||
@@ -67,9 +67,9 @@ const AutoBackupSettings = () => {
|
|||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
isFetching.current = true;
|
isFetching.current = true;
|
||||||
const response = await axios.get('/api/backup/auto/status');
|
const response = await api.get('/backup/auto/status');
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
const data = response.data.data;
|
const data = response.data;
|
||||||
setStatus(data);
|
setStatus(data);
|
||||||
|
|
||||||
// 解析 Cron 表达式获取小时和分钟
|
// 解析 Cron 表达式获取小时和分钟
|
||||||
@@ -101,7 +101,7 @@ const AutoBackupSettings = () => {
|
|||||||
const handleSave = async () => {
|
const handleSave = async () => {
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const response = await axios.post('/api/backup/auto/settings', {
|
const response = await api.post('/backup/auto/settings', {
|
||||||
enabled: settings.enabled,
|
enabled: settings.enabled,
|
||||||
hour: settings.hour,
|
hour: settings.hour,
|
||||||
minute: settings.minute,
|
minute: settings.minute,
|
||||||
@@ -111,7 +111,7 @@ const AutoBackupSettings = () => {
|
|||||||
maxAgeDays: settings.maxAgeDays,
|
maxAgeDays: settings.maxAgeDays,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
message.success('自动备份设置已保存');
|
message.success('自动备份设置已保存');
|
||||||
setModified(false);
|
setModified(false);
|
||||||
// 不需要立即刷新,因为保存成功后状态已经是最新的
|
// 不需要立即刷新,因为保存成功后状态已经是最新的
|
||||||
@@ -147,13 +147,13 @@ const AutoBackupSettings = () => {
|
|||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const response = await axios.post('/api/backup/auto/execute', {
|
const response = await api.post('/backup/auto/execute', {
|
||||||
description: `手动触发 - ${new Date().toLocaleString('zh-CN')}`,
|
description: `手动触发 - ${new Date().toLocaleString('zh-CN')}`,
|
||||||
includeFiles: settings.includeFiles,
|
includeFiles: settings.includeFiles,
|
||||||
compress: settings.compress,
|
compress: settings.compress,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
message.success('备份执行成功!');
|
message.success('备份执行成功!');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import {
|
|||||||
InfoCircleOutlined,
|
InfoCircleOutlined,
|
||||||
SettingOutlined,
|
SettingOutlined,
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
import axios from 'axios';
|
import api, { backupAPI } from '../api';
|
||||||
import CloseButton from '../components/CloseButton';
|
import CloseButton from '../components/CloseButton';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
@@ -125,9 +125,9 @@ const BackupManagement = () => {
|
|||||||
const fetchBackups = useCallback(async () => {
|
const fetchBackups = useCallback(async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
try {
|
try {
|
||||||
const response = await axios.get('/api/backup/list');
|
const response = await api.get('/backup/list');
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
setBackups(response.data.data?.backups || []);
|
setBackups(response.data?.backups || []);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('获取备份列表失败');
|
message.error('获取备份列表失败');
|
||||||
@@ -138,9 +138,9 @@ const BackupManagement = () => {
|
|||||||
|
|
||||||
const fetchBackupInfo = useCallback(async () => {
|
const fetchBackupInfo = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
const response = await axios.get('/api/backup/info');
|
const response = await api.get('/backup/info');
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
setBackupInfo(response.data.data);
|
setBackupInfo(response.data);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取备份信息失败:', error);
|
console.error('获取备份信息失败:', error);
|
||||||
@@ -155,11 +155,11 @@ const BackupManagement = () => {
|
|||||||
const handleCreateBackup = async () => {
|
const handleCreateBackup = async () => {
|
||||||
setBackupLoading(true);
|
setBackupLoading(true);
|
||||||
try {
|
try {
|
||||||
const response = await axios.post('/api/backup', {
|
const response = await api.post('/backup', {
|
||||||
description: '手动备份',
|
description: '手动备份',
|
||||||
includeFiles: true,
|
includeFiles: true,
|
||||||
});
|
});
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
message.success('备份创建成功');
|
message.success('备份创建成功');
|
||||||
fetchBackups();
|
fetchBackups();
|
||||||
fetchBackupInfo();
|
fetchBackupInfo();
|
||||||
@@ -179,9 +179,9 @@ const BackupManagement = () => {
|
|||||||
|
|
||||||
const handleValidate = async (filename) => {
|
const handleValidate = async (filename) => {
|
||||||
try {
|
try {
|
||||||
const response = await axios.get(`/api/backup/validate/${filename}`);
|
const response = await api.get(`/backup/validate/${filename}`);
|
||||||
if (response.data?.success && response.data.data?.valid) {
|
if (response?.success && response.data?.valid) {
|
||||||
const data = response.data.data;
|
const data = response.data;
|
||||||
Modal.info({
|
Modal.info({
|
||||||
title: (
|
title: (
|
||||||
<Space>
|
<Space>
|
||||||
@@ -535,7 +535,7 @@ const BackupManagement = () => {
|
|||||||
setRestoreProgress(10);
|
setRestoreProgress(10);
|
||||||
setRestoreStatus('正在读取备份数据...');
|
setRestoreStatus('正在读取备份数据...');
|
||||||
|
|
||||||
const response = await axios.post('/api/backup/restore', {
|
const response = await api.post('/backup/restore', {
|
||||||
filename,
|
filename,
|
||||||
options: {
|
options: {
|
||||||
overwriteExisting: true,
|
overwriteExisting: true,
|
||||||
@@ -546,8 +546,8 @@ const BackupManagement = () => {
|
|||||||
setRestoreProgress(90);
|
setRestoreProgress(90);
|
||||||
setRestoreStatus('正在完成恢复...');
|
setRestoreStatus('正在完成恢复...');
|
||||||
|
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
const data = response.data.data;
|
const data = response.data;
|
||||||
setRestoreProgress(100);
|
setRestoreProgress(100);
|
||||||
setRestoreStatus('恢复完成!');
|
setRestoreStatus('恢复完成!');
|
||||||
|
|
||||||
@@ -817,13 +817,13 @@ const BackupManagement = () => {
|
|||||||
|
|
||||||
const handleDelete = async (filename) => {
|
const handleDelete = async (filename) => {
|
||||||
try {
|
try {
|
||||||
const response = await axios.delete(`/api/backup/${filename}`);
|
const response = await api.delete(`/backup/${filename}`);
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
message.success('删除成功');
|
message.success('删除成功');
|
||||||
fetchBackups();
|
fetchBackups();
|
||||||
fetchBackupInfo();
|
fetchBackupInfo();
|
||||||
} else {
|
} else {
|
||||||
message.error(response.data?.message || '删除失败');
|
message.error(response?.message || '删除失败');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('删除失败: ' + (error.response?.data?.message || error.message || '未知错误'));
|
message.error('删除失败: ' + (error.response?.data?.message || error.message || '未知错误'));
|
||||||
@@ -836,18 +836,18 @@ const BackupManagement = () => {
|
|||||||
formData.append('backup', file);
|
formData.append('backup', file);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await axios.post('/api/backup/upload', formData, {
|
const response = await api.post('/backup/upload', formData, {
|
||||||
headers: { 'Content-Type': 'multipart/form-data' },
|
headers: { 'Content-Type': 'multipart/form-data' },
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
message.success('备份文件上传成功');
|
message.success('备份文件上传成功');
|
||||||
fetchBackups();
|
fetchBackups();
|
||||||
fetchBackupInfo();
|
fetchBackupInfo();
|
||||||
onSuccess(response.data.data);
|
onSuccess(response.data);
|
||||||
} else {
|
} else {
|
||||||
message.error(response.data?.message || '上传失败');
|
message.error(response?.message || '上传失败');
|
||||||
onError(new Error(response.data?.message));
|
onError(new Error(response?.message));
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('上传失败: ' + (error.response?.data?.message || error.message || '未知错误'));
|
message.error('上传失败: ' + (error.response?.data?.message || error.message || '未知错误'));
|
||||||
@@ -857,14 +857,14 @@ const BackupManagement = () => {
|
|||||||
|
|
||||||
const handleCleanBackups = async (maxCount = 30, maxAgeDays = 90, dryRun = false) => {
|
const handleCleanBackups = async (maxCount = 30, maxAgeDays = 90, dryRun = false) => {
|
||||||
try {
|
try {
|
||||||
const response = await axios.post('/api/backup/clean', {
|
const response = await api.post('/backup/clean', {
|
||||||
maxCount,
|
maxCount,
|
||||||
maxAgeDays,
|
maxAgeDays,
|
||||||
dryRun,
|
dryRun,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.data?.success) {
|
if (response?.success) {
|
||||||
const data = response.data.data;
|
const data = response.data;
|
||||||
if (dryRun) {
|
if (dryRun) {
|
||||||
Modal.info({
|
Modal.info({
|
||||||
title: '清理预览',
|
title: '清理预览',
|
||||||
|
|||||||
Reference in New Issue
Block a user