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

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

View File

@ -287,12 +287,13 @@ import { usePageTypeSlug } from '@/shared/utils/slug'
import { isSinglePageType } from '@/shared/utils/pagetype'
import SinglePageDetail from './SinglePageDetail.vue'
import FilterBar from '@/core/components/FilterBar.vue'
import {
resolvePagetypeListOverride,
import {
resolvePagetypeListOverride,
resolvePagetypeListToolbarOverride,
resolvePagetypeListFilterBarOverride,
resolvePagetypeListActionsOverride
} from '@/core/registry/pagetypeOverride'
import { downloadImageToLocal } from '@/shared/api/common'
const route = useRoute()
const router = useRouter()
@ -455,6 +456,26 @@ function handleCardImageLoad(_event: Event, rowName: string) {
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 pageMeta = ref<any>({})
const linkTitleCache = ref<Record<string, string>>({})
@ -791,6 +812,24 @@ async function loadData() {
// Linktitle_fieldloading
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) {
console.error('Load data error:', error)
message.error(t('Load failed'))