This commit is contained in:
parent
6ce87f07f4
commit
3089329514
|
|
@ -166,6 +166,9 @@ export function DetailPageHeader({ data }: { data: any }) {
|
||||||
const [currentStatus, setCurrentStatus] = useState(""); // 当前部署状态:running / stopped
|
const [currentStatus, setCurrentStatus] = useState(""); // 当前部署状态:running / stopped
|
||||||
const [switchLoading, setSwitchLoading] = useState(false); // 控制按钮 loading 状态
|
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 socketRef = useRef<WebSocket | null>(null);
|
||||||
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
@ -551,11 +554,12 @@ export function DetailPageHeader({ data }: { data: any }) {
|
||||||
</button>
|
</button>
|
||||||
)} */}
|
)} */}
|
||||||
|
|
||||||
{!data?.model_parameter && (
|
{/* {!data?.model_parameter && (
|
||||||
<button
|
<button
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
try {
|
try {
|
||||||
const download_url = data?.extra_data?.download_url;
|
const download_url = data?.extra_data?.download_url;
|
||||||
|
const callback_url = data?.extra_data?.callback_url;
|
||||||
const size = data?.extra_data?.size;
|
const size = data?.extra_data?.size;
|
||||||
const id = data?.id;
|
const id = data?.id;
|
||||||
|
|
||||||
|
|
@ -573,6 +577,7 @@ export function DetailPageHeader({ data }: { data: any }) {
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
url: download_url,
|
url: download_url,
|
||||||
|
callback_url: callback_url,
|
||||||
size: size,
|
size: size,
|
||||||
id: id,
|
id: id,
|
||||||
}),
|
}),
|
||||||
|
|
@ -600,6 +605,76 @@ export function DetailPageHeader({ data }: { data: any }) {
|
||||||
>
|
>
|
||||||
<CloudDownload size={20} />
|
<CloudDownload size={20} />
|
||||||
</button>
|
</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>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue