This commit is contained in:
hailin 2025-06-23 03:48:41 +08:00
parent 6ce87f07f4
commit 3089329514
1 changed files with 76 additions and 1 deletions

View File

@ -166,6 +166,9 @@ export function DetailPageHeader({ data }: { data: any }) {
const [currentStatus, setCurrentStatus] = useState(""); // 当前部署状态running / stopped
const [switchLoading, setSwitchLoading] = useState(false); // 控制按钮 loading 状态
const [downloadPercent, setDownloadPercent] = useState("0"); // 下载百分比0 ~ 100
const [showDownloadBar, setShowDownloadBar] = useState(false);
const socketRef = useRef<WebSocket | null>(null);
const { t } = useTranslation();
@ -551,11 +554,12 @@ export function DetailPageHeader({ data }: { data: any }) {
</button>
)} */}
{!data?.model_parameter && (
{/* {!data?.model_parameter && (
<button
onClick={async () => {
try {
const download_url = data?.extra_data?.download_url;
const callback_url = data?.extra_data?.callback_url
const size = data?.extra_data?.size;
const id = data?.id;
@ -573,6 +577,7 @@ export function DetailPageHeader({ data }: { data: any }) {
},
body: JSON.stringify({
url: download_url,
callback_url: callback_url,
size: size,
id: id,
}),
@ -600,6 +605,76 @@ export function DetailPageHeader({ data }: { data: any }) {
>
<CloudDownload size={20} />
</button>
)} */}
{!data?.model_parameter && (
<div className="flex flex-col items-center gap-[2px]">
{/* 下载按钮 */}
<button
onClick={async () => {
try {
const download_url = data?.extra_data?.download_url;
const callback_url = data?.extra_data?.callback_url;
const size = data?.extra_data?.size;
const id = data?.id;
if (!download_url || !size || !id) {
message.warning("缺少必要的下载参数");
return;
}
console.log("📥 调用下载接口...", { url: download_url, size, id });
const res = await fetch("https://ai.szaiai.com/api/v1/cloud/download", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
url: download_url,
callback_url: callback_url,
size: size,
id: id,
}),
});
const result = await res.json();
console.log("✅ 下载接口返回:", result);
if (result?.header?.code === 0) {
const percentStr = result?.data?.percent ?? "0";
const percentNum = parseFloat(percentStr);
const percent = (percentNum * 100).toFixed(1);
setDownloadPercent(percent);
setShowDownloadBar(true);
message.success(`📦 下载进度:${percent}%`);
} else {
message.warning(`❌ 下载失败:${result?.header?.message || "未知错误"}`);
}
} catch (err) {
console.error("❌ 下载请求异常:", err);
message.error("请求出错,无法下载");
}
}}
className="hover:text-gray-700 transition self-end"
title="下载模型文件"
>
<CloudDownload size={20} />
</button>
{/* 下载进度条(紧贴按钮) */}
{showDownloadBar && (
<div className="w-[20px] h-[4px] bg-gray-200 rounded overflow-hidden">
<div
className="h-full bg-blue-500 transition-all duration-300"
style={{ width: `${downloadPercent}%` }}
/>
</div>
)}
</div>
)}
</div>