This commit is contained in:
2026-07-02 11:37:43 +08:00
+48 -6
View File
@@ -569,6 +569,34 @@ const GeneratedRecord: React.FC = () => {
const handleDateChange = (dateString: string) => { const handleDateChange = (dateString: string) => {
setSelectedDate(dateString); setSelectedDate(dateString);
}; };
const getVideoDimensions = (videoUrl: string): Promise<string> => {
return new Promise((resolve) => {
const video = document.createElement('video');
const baseUrl = import.meta.env.VITE_API_BASE || "http://localhost:8000";
let cleanPath = videoUrl.startsWith('/') ? videoUrl.slice(1) : videoUrl;
let cleanBase = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
video.src = `${cleanBase}/${cleanPath}`;
video.crossOrigin = 'anonymous';
video.onloadedmetadata = () => {
const width = video.videoWidth;
const height = video.videoHeight;
video.remove();
resolve(`${width}x${height}`);
};
video.onerror = () => {
video.remove();
resolve('');
};
video.onabort = () => {
video.remove();
resolve('');
};
setTimeout(() => {
video.remove();
resolve('');
}, 5000);
});
};
useEffect(() => { useEffect(() => {
setLoading(true); setLoading(true);
let historySource = ''; let historySource = '';
@@ -588,8 +616,16 @@ const GeneratedRecord: React.FC = () => {
if (historySource) { if (historySource) {
parameters = `${selectedDate}?gen_type=${filterMedia}&history_source=${historySource}&page=${Pagebreak.page}&page_size=${Pagebreak.pageSize}`; parameters = `${selectedDate}?gen_type=${filterMedia}&history_source=${historySource}&page=${Pagebreak.page}&page_size=${Pagebreak.pageSize}`;
} }
gethistoryItems(parameters).then((res: any) => { gethistoryItems(parameters).then(async (res: any) => {
const data = Array.isArray(res) ? res : (res?.items || []); const data = Array.isArray(res) ? res : (res?.items || []);
for (const item of data) {
if (item.videoUrl && item.videoUrl.trim()) {
const dimensions = await getVideoDimensions(item.videoUrl);
if (dimensions) {
item.imagePx = dimensions;
}
}
}
let recordList = [{ let recordList = [{
generatedDate: res.generatedDate, generatedDate: res.generatedDate,
items: data, items: data,
@@ -610,12 +646,19 @@ const GeneratedRecord: React.FC = () => {
} finally { } finally {
} }
} else { } else {
gethistory(parameters).then((res: any) => { gethistory(parameters).then(async (res: any) => {
const data = Array.isArray(res) ? res : (res?.groups || []); const data = Array.isArray(res) ? res : (res?.groups || []);
data.forEach(group => { for (const group of data) {
group.page = 1; group.page = 1;
}); for (const item of group.items) {
// 如果是第一页,替换数据;否则追加数据 if (item.videoUrl && item.videoUrl.trim()) {
const dimensions = await getVideoDimensions(item.videoUrl);
if (dimensions) {
item.imagePx = dimensions;
}
}
}
}
if (Pagebreak.page === 1) { if (Pagebreak.page === 1) {
setRecordList(data); setRecordList(data);
} else { } else {
@@ -658,7 +701,6 @@ const GeneratedRecord: React.FC = () => {
} }
try { try {
const res: any = await gethistoryItems(parameters); const res: any = await gethistoryItems(parameters);
// gethistoryItems 返回数组,直接使用
const newItems: any[] = res.items || []; const newItems: any[] = res.items || [];
if (newItems && newItems.length > 0) { if (newItems && newItems.length > 0) {
setRecordList(prev => prev.map(group => { setRecordList(prev => prev.map(group => {