修复了图片不显示的bug
This commit is contained in:
		| @@ -40,7 +40,8 @@ | ||||
|           indicator-position="outside" | ||||
|           style="min-height: 300px;" | ||||
|         > | ||||
|           <el-carousel-item v-for="(image, index) in product.images" :key="index"> | ||||
|           <!-- <el-carousel-item v-for="(image, index) in product.images" :key="index"> --> | ||||
|           <el-carousel-item v-for="(image, index) in (productDetailsCache[product.id]?.images || [])" :key="index"> | ||||
|             <img :src="image" :alt="product.name" class="carousel-image" /> | ||||
|           </el-carousel-item> | ||||
|         </el-carousel> | ||||
| @@ -71,6 +72,8 @@ import {Bottom, ShoppingCart} from "@element-plus/icons-vue"; | ||||
|  | ||||
| const products = ref([]) | ||||
| const firstProduct = ref([]) | ||||
| const productDetail = ref([]) | ||||
| const productDetailsCache = ref({}) // 缓存所有商品详情 | ||||
|  | ||||
| const route = useRoute() | ||||
| const productId = ref(null) | ||||
| @@ -105,6 +108,9 @@ const getProducts = async () => { | ||||
|      | ||||
|     console.log('解析后的商品数据:', products.value) | ||||
|      | ||||
|     // 预加载所有商品详情 | ||||
|     await loadAllProductDetails() | ||||
|      | ||||
|   } catch (error) { | ||||
|     console.error('获取商品失败:', error) | ||||
|     console.error('错误详情:', error.response?.data) | ||||
| @@ -127,6 +133,41 @@ const getFirstProduct = async () => { | ||||
|   } | ||||
| } | ||||
|  | ||||
| const getProductDetail = async (productId) => { | ||||
|   try { | ||||
|     const response = await api.get(`/products/${productId}`) | ||||
|      | ||||
|     if (response.data && response.data.data && response.data.data.product) { | ||||
|       productDetail.value = response.data.data.product | ||||
|       // 缓存商品详情 | ||||
|       productDetailsCache.value[productId] = response.data.data.product | ||||
|     } else { | ||||
|       console.error('无法解析商品详情数据:', response.data) | ||||
|       ElMessage.error('获取商品详情失败') | ||||
|     } | ||||
|      | ||||
|     return productDetail.value | ||||
|   } catch (error) { | ||||
|     console.error('获取商品详情失败:', error) | ||||
|     console.error('错误详情:', error.response?.data) | ||||
|     ElMessage.error('获取商品详情失败') | ||||
|     throw error | ||||
|   } | ||||
| } | ||||
|  | ||||
| // 预加载所有商品详情的函数 | ||||
| const loadAllProductDetails = async () => { | ||||
|   const uniqueProductIds = [...new Set(products.value.map(p => p.id))] | ||||
|    | ||||
|   for (const id of uniqueProductIds) { | ||||
|     try { | ||||
|       await getProductDetail(id) | ||||
|     } catch (error) { | ||||
|       console.warn(`Failed to load details for product ${id}:`, error) | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| // 添加生命周期钩子来调用函数 | ||||
| onMounted(() => { | ||||
|   productId.value = route.params.id | ||||
|   | ||||
		Reference in New Issue
	
	Block a user