Align funds to OKX funding/trading only; fold rules; match settings width.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-29 17:59:28 +08:00
parent 80c561bdce
commit 81e51236c0
8 changed files with 198 additions and 178 deletions
+59 -47
View File
@@ -115,6 +115,7 @@ export default function SettingsPage() {
const [xferFrom, setXferFrom] = useState("funding");
const [xferTo, setXferTo] = useState("trading");
const [usdcRate, setUsdcRate] = useState<number | null>(null);
const [fundsRulesOpen, setFundsRulesOpen] = useState(false);
function loadRuntime() {
apiFetch<RuntimeSettings>("/api/settings/runtime")
@@ -1061,13 +1062,24 @@ export default function SettingsPage() {
<div className="card settings-card">
{fundsErr ? <div className="err">{fundsErr}</div> : null}
{fundsOk ? <div className="settings-ok">{fundsOk}</div> : null}
<RulesFold
open={fundsRulesOpen}
onToggle={() => setFundsRulesOpen((v) => !v)}
>
<p>
OKX USDC-USDT<strong></strong>
USDTUSDC{" "}
{usdcRate != null ? `1 USDC ≈ ${usdcRate.toFixed(4)} USDT` : "—"}
</p>
<p>
<strong> </strong>
USDT/USDCOKX /
</p>
</RulesFold>
<section className="settings-section">
<h3>USDT USDC</h3>
<p className="meta" style={{ marginTop: 0 }}>
OKX USDC-USDT{" "}
{usdcRate != null ? `1 USDC ≈ ${usdcRate.toFixed(4)} USDT` : "—"}
USDT USDC
</p>
<div className="settings-fields">
<div className="field">
<label htmlFor="convertDir"></label>
@@ -1130,11 +1142,7 @@ export default function SettingsPage() {
<section className="settings-section">
<h3></h3>
<p className="meta" style={{ marginTop: 0 }}>
USDT/USDC options_funding /
options_trading
</p>
<div className="settings-fields">
<div className="settings-xfer-row">
<div className="field">
<label htmlFor="xferCcy"></label>
<select
@@ -1153,12 +1161,14 @@ export default function SettingsPage() {
<select
id="xferFrom"
value={xferFrom}
onChange={(e) => setXferFrom(e.target.value)}
onChange={(e) => {
const v = e.target.value === "trading" ? "trading" : "funding";
setXferFrom(v);
setXferTo(v === "funding" ? "trading" : "funding");
}}
>
<option value="funding"></option>
<option value="trading"></option>
<option value="options_funding"></option>
<option value="options_trading"></option>
</select>
</div>
<div className="field">
@@ -1166,12 +1176,14 @@ export default function SettingsPage() {
<select
id="xferTo"
value={xferTo}
onChange={(e) => setXferTo(e.target.value)}
onChange={(e) => {
const v = e.target.value === "trading" ? "trading" : "funding";
setXferTo(v);
setXferFrom(v === "funding" ? "trading" : "funding");
}}
>
<option value="funding"></option>
<option value="trading"></option>
<option value="options_funding"></option>
<option value="options_trading"></option>
</select>
</div>
<div className="field">
@@ -1185,43 +1197,43 @@ export default function SettingsPage() {
onChange={(e) => setXferAmt(Number(e.target.value))}
/>
</div>
</div>
<div className="settings-actions">
<button
className="btn"
type="button"
disabled={loading}
onClick={async () => {
setFundsErr("");
setFundsOk("");
setLoading(true);
try {
await apiFetch("/api/funds/transfer", {
method: "POST",
body: JSON.stringify({
ccy: xferCcy,
amount: xferAmt,
from_account: xferFrom,
to_account: xferTo,
}),
});
setFundsOk("划转成功,顶部资金条将刷新");
} catch (e) {
setFundsErr(e instanceof Error ? e.message : String(e));
} finally {
setLoading(false);
}
}}
>
</button>
<div className="settings-xfer-action">
<button
className="btn"
type="button"
disabled={loading}
onClick={async () => {
setFundsErr("");
setFundsOk("");
setLoading(true);
try {
await apiFetch("/api/funds/transfer", {
method: "POST",
body: JSON.stringify({
ccy: xferCcy,
amount: xferAmt,
from_account: xferFrom,
to_account: xferTo,
}),
});
setFundsOk("划转成功,顶部资金条将刷新");
} catch (e) {
setFundsErr(e instanceof Error ? e.message : String(e));
} finally {
setLoading(false);
}
}}
>
</button>
</div>
</div>
</section>
</div>
) : null}
{tab === "account" ? (
<div className="card settings-card settings-card-narrow">
<div className="card settings-card">
{err ? <div className="err">{err}</div> : null}
{ok ? <div className="settings-ok">{ok}</div> : null}
<form onSubmit={onSaveCreds} className="settings-account-form">