feat: match settings card width to ops map and add backup download
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import { FormEvent, useCallback, useEffect, useState } from "react";
|
||||
import {
|
||||
BackupInfo,
|
||||
createBackup,
|
||||
downloadBackup,
|
||||
fetchAccountSettings,
|
||||
fetchBackupInfo,
|
||||
logout,
|
||||
@@ -175,6 +176,24 @@ export default function SettingsPage() {
|
||||
}
|
||||
};
|
||||
|
||||
const runDownload = async () => {
|
||||
if (!selectedBackup) {
|
||||
setBackupErr("请选择要下载的备份");
|
||||
return;
|
||||
}
|
||||
setBackupBusy(true);
|
||||
setBackupErr(null);
|
||||
setBackupMsg(null);
|
||||
try {
|
||||
await downloadBackup(selectedBackup);
|
||||
setBackupMsg(`已开始下载:${selectedBackup}`);
|
||||
} catch (ex) {
|
||||
setBackupErr(String(ex));
|
||||
} finally {
|
||||
setBackupBusy(false);
|
||||
}
|
||||
};
|
||||
|
||||
if (!ready) {
|
||||
return (
|
||||
<div className="layout">
|
||||
@@ -192,8 +211,7 @@ export default function SettingsPage() {
|
||||
<div className="sub">系统设置</div>
|
||||
<AppNav />
|
||||
|
||||
<div className="center-page">
|
||||
<div className="tile settings-card">
|
||||
<div className="tile settings-card">
|
||||
<div className="settings-tabs">
|
||||
<button
|
||||
type="button"
|
||||
@@ -212,7 +230,7 @@ export default function SettingsPage() {
|
||||
</div>
|
||||
|
||||
{tab === "account" && (
|
||||
<form onSubmit={submit}>
|
||||
<form className="settings-form" onSubmit={submit}>
|
||||
<div className="settings-title">账户密码</div>
|
||||
{!authRequired && (
|
||||
<p className="settings-hint">当前鉴权已关闭(AUTH_SECRET=disabled),请在 .env 中修改。</p>
|
||||
@@ -275,7 +293,7 @@ export default function SettingsPage() {
|
||||
)}
|
||||
|
||||
{tab === "backup" && (
|
||||
<div>
|
||||
<div className="settings-form">
|
||||
<div className="settings-title">数据备份与恢复</div>
|
||||
<p className="settings-hint">
|
||||
备份目录:<code>{backupInfo?.backup_dir || "/root/market_intel_backups"}</code>
|
||||
@@ -366,6 +384,14 @@ export default function SettingsPage() {
|
||||
>
|
||||
{backupBusy ? "处理中…" : "立即备份"}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="btn-primary"
|
||||
disabled={backupBusy || !authRequired || !selectedBackup}
|
||||
onClick={runDownload}
|
||||
>
|
||||
下载备份
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="btn-danger"
|
||||
@@ -379,7 +405,6 @@ export default function SettingsPage() {
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user