diff --git a/app/components/pages/homepage/HomepageCarousel.vue b/app/components/pages/homepage/HomepageCarousel.vue
index 6324594..0621c96 100644
--- a/app/components/pages/homepage/HomepageCarousel.vue
+++ b/app/components/pages/homepage/HomepageCarousel.vue
@@ -83,4 +83,10 @@
border-radius: 5px;
font-size: 14px;
}
+
+ @media (max-width: 768px) {
+ .homepage-carousel .el-carousel__item {
+ height: 50vw;
+ }
+ }
diff --git a/app/components/pages/homepage/HomepageProductSection.vue b/app/components/pages/homepage/HomepageProductSection.vue
index da4540a..9a4c9b0 100644
--- a/app/components/pages/homepage/HomepageProductSection.vue
+++ b/app/components/pages/homepage/HomepageProductSection.vue
@@ -7,19 +7,20 @@
('auto');
+ const perPage = ref(3);
+ const carouselItem = ref(null);
+
const { getImageUrl } = useDirectusImage();
+ const { height } = useElementSize(carouselItem);
const products = computed(() => props.homepageData?.recommendProducts || []);
+ const pages = computed(() =>
+ Math.ceil(products.value.length / perPage.value)
+ );
+
+ const updatePerPage = () => {
+ const width = window.innerWidth;
+ if (width < 768) {
+ perPage.value = 1;
+ } else if (width < 1024) {
+ perPage.value = 2;
+ } else {
+ perPage.value = 3;
+ }
+ };
+
+ const pageProducts = (n: number) => {
+ return products.value.slice((n - 1) * perPage.value, n * perPage.value);
+ };
const handleProductCardClick = (documentId: string) => {
// 使用路由导航到产品详情页
@@ -76,6 +100,21 @@
router.push(localePath(`/products/${documentId}`));
}
};
+
+ watch(height, (h) => {
+ if (h > 0) {
+ carouselHeight.value = h + 40 + 'px';
+ }
+ });
+
+ onMounted(() => {
+ updatePerPage();
+ window.addEventListener('resize', updatePerPage);
+ });
+
+ onBeforeUnmount(() => {
+ window.removeEventListener('resize', updatePerPage);
+ });
diff --git a/app/components/pages/homepage/HomepageSolutionSection.vue b/app/components/pages/homepage/HomepageSolutionSection.vue
index 3144c78..b925c27 100644
--- a/app/components/pages/homepage/HomepageSolutionSection.vue
+++ b/app/components/pages/homepage/HomepageSolutionSection.vue
@@ -5,19 +5,20 @@
('auto');
+ const perPage = ref(3);
+ const carouselItem = ref(null);
+
const { getImageUrl } = useDirectusImage();
+ const { height } = useElementSize(carouselItem);
const solutions = computed(
() => props.homepageData?.recommendSolutions || []
);
+ const pages = computed(() =>
+ Math.ceil(solutions.value.length / perPage.value)
+ );
+
+ const updatePerPage = () => {
+ const width = window.innerWidth;
+ if (width < 768) {
+ perPage.value = 1;
+ } else if (width < 1024) {
+ perPage.value = 2;
+ } else {
+ perPage.value = 3;
+ }
+ };
+
+ const pageSolutions = (n: number) => {
+ return solutions.value.slice((n - 1) * perPage.value, n * perPage.value);
+ };
const handleSolutionCardClick = (documentId: string) => {
// 使用路由导航到产品详情页
@@ -76,6 +100,21 @@
router.push(localePath(`/solutions/${documentId}`));
}
};
+
+ watch(height, (h) => {
+ if (h > 0) {
+ carouselHeight.value = h + 40 + 'px';
+ }
+ });
+
+ onMounted(() => {
+ updatePerPage();
+ window.addEventListener('resize', updatePerPage);
+ });
+
+ onBeforeUnmount(() => {
+ window.removeEventListener('resize', updatePerPage);
+ });
diff --git a/app/components/pages/products/ProductDetail.vue b/app/components/pages/products/ProductDetail.vue
index 84ba87f..3ece770 100644
--- a/app/components/pages/products/ProductDetail.vue
+++ b/app/components/pages/products/ProductDetail.vue
@@ -42,4 +42,11 @@
color: var(--el-text-color-primary);
margin: 0;
}
+
+ @media (max-width: 768px) {
+ .product-tabs ::v-deep(.el-tabs__nav) {
+ float: none;
+ min-width: 100%;
+ }
+ }
diff --git a/app/components/pages/products/ProductHeader.vue b/app/components/pages/products/ProductHeader.vue
index 9c256fa..dc9ba61 100644
--- a/app/components/pages/products/ProductHeader.vue
+++ b/app/components/pages/products/ProductHeader.vue
@@ -10,7 +10,7 @@
-
+
diff --git a/app/components/shared/JinshenFooter.vue b/app/components/shared/JinshenFooter.vue
index 017c189..f3e388c 100644
--- a/app/components/shared/JinshenFooter.vue
+++ b/app/components/shared/JinshenFooter.vue
@@ -1,6 +1,6 @@