diff --git a/app/components/pages/products/ProductDetail.vue b/app/components/pages/products/ProductDetail.vue new file mode 100644 index 0000000..84ba87f --- /dev/null +++ b/app/components/pages/products/ProductDetail.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/app/components/pages/products/ProductHeader.vue b/app/components/pages/products/ProductHeader.vue new file mode 100644 index 0000000..9c256fa --- /dev/null +++ b/app/components/pages/products/ProductHeader.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/app/pages/products/[...slug].vue b/app/pages/products/[...slug].vue index 2fbfe71..7a670c9 100644 --- a/app/pages/products/[...slug].vue +++ b/app/pages/products/[...slug].vue @@ -4,66 +4,10 @@
- -
-
- - - - - - -
- -
-

{{ product.name }}

-

{{ product.summary }}

-
-
- + -
- - - - - - - - - - - - - - -
+
@@ -90,8 +34,6 @@ const route = useRoute(); const localePath = useLocalePath(); - const { getImageUrl } = useDirectusImage(); - // 获取路由参数 const id = computed(() => route.params.slug as string); @@ -105,8 +47,6 @@ return toProductView(rawProduct.value); }); - const activeName = ref('details'); // 默认选中概览标签 - const breadcrumbItems = computed(() => [ { label: $t('navigation.home'), to: localePath('/') }, { label: $t('navigation.products'), to: localePath('/products') }, @@ -142,67 +82,6 @@ padding: 2rem; } - .product-header { - display: grid; - grid-template-columns: 2fr 1fr; - gap: 3rem; - } - - .product-image .el-image { - position: relative; - width: 100%; - height: 500px; - border-radius: 8px; - } - - .product-image-caption { - position: absolute; - bottom: 10px; - /* left: 10%; */ - background-color: rgba(0, 0, 0, 0.2); - border-radius: 5px; - padding: 5px 10px; - text-align: center; - color: white; - font-size: 0.8rem; - } - - .product-carousel :deep(.el-carousel__button) { - /* 指示器按钮样式 */ - width: 8px; - height: 8px; - border-radius: 50%; - background-color: #475669; - transition: all 0.3s ease; - } - - .product-info h1 { - margin-top: 2rem; - margin-bottom: 1rem; - font-size: 2rem; - } - - .summary { - color: var(--el-color-info); - font-size: 1rem; - line-height: 1.6; - margin-bottom: 2rem; - } - - .product-tabs ::v-deep(.el-tabs__nav) { - min-width: 30%; - float: right; - } - - .product-tabs ::v-deep(.el-tabs__content) { - padding: 10px; - } - - .product-content h2 { - color: var(--el-text-color-primary); - margin: 0; - } - .loading { display: flex; justify-content: center; @@ -216,16 +95,4 @@ align-items: center; min-height: 400px; } - - /* 响应式设计 */ - @media (max-width: 768px) { - .product-header { - grid-template-columns: 1fr; - gap: 2rem; - } - - .product-info h1 { - font-size: 2rem; - } - }