列表页增加图片自动下载到本地

This commit is contained in:
jingrow 2025-11-01 17:04:04 +08:00
parent 86635c26c4
commit f8a1c82394

View File

@ -293,6 +293,7 @@ import {
resolvePagetypeListFilterBarOverride, resolvePagetypeListFilterBarOverride,
resolvePagetypeListActionsOverride resolvePagetypeListActionsOverride
} from '@/core/registry/pagetypeOverride' } from '@/core/registry/pagetypeOverride'
import { downloadImageToLocal } from '@/shared/api/common'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
@ -455,6 +456,26 @@ function handleCardImageLoad(_event: Event, rowName: string) {
cardImageLoadErrors.value.delete(rowName) cardImageLoadErrors.value.delete(rowName)
} }
//
async function autoDownloadImages(imageUrls: string[]) {
const downloadPromises = imageUrls.map(async (url) => {
const filename = url.split('/').pop() || 'image.jpg'
try {
const result = await downloadImageToLocal(url, filename)
if (result.success) {
//
return !(result as any).data?.cached
}
} catch (error) {
//
}
return false
})
await Promise.all(downloadPromises)
}
const metaFields = ref<any[]>([]) const metaFields = ref<any[]>([])
const pageMeta = ref<any>({}) const pageMeta = ref<any>({})
const linkTitleCache = ref<Record<string, string>>({}) const linkTitleCache = ref<Record<string, string>>({})
@ -791,6 +812,24 @@ async function loadData() {
// Linktitle_fieldloading // Linktitle_fieldloading
await preloadLinkTitles() await preloadLinkTitles()
//
if (imageFieldName.value && rows.value.length > 0) {
const imageUrls: string[] = []
rows.value.forEach((row: any) => {
const imageUrl = getImageUrl(row)
if (imageUrl && imageUrl.startsWith('/files/')) {
imageUrls.push(imageUrl)
}
})
if (imageUrls.length > 0) {
//
autoDownloadImages(imageUrls).catch((error: any) => {
console.warn('列表页图片下载失败:', error)
})
}
}
} catch (error) { } catch (error) {
console.error('Load data error:', error) console.error('Load data error:', error)
message.error(t('Load failed')) message.error(t('Load failed'))