From 51e91b04837f57711b393327a7c3321b5ceff63b Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 8 Aug 2026 18:29:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=92=8C=E5=B9=B3=E5=B0=8F?= =?UTF-8?q?=E5=BA=97=E5=95=86=E5=93=81=E5=88=86=E7=B1=BB=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/layout/LeftSidebar.vue | 3 + .../src/components/product/ProductList.vue | 6 +- .../src/components/product/XiaodianTabs.vue | 61 +++++++++++++ frontend/src/composables/useProducts.ts | 23 ++++- internal/client/client.go | 90 ++++++++++++------- internal/client/client_test.go | 36 +++++--- internal/types/types.go | 1 + 7 files changed, 168 insertions(+), 52 deletions(-) create mode 100644 frontend/src/components/product/XiaodianTabs.vue diff --git a/frontend/src/components/layout/LeftSidebar.vue b/frontend/src/components/layout/LeftSidebar.vue index 752140d..c4e0365 100644 --- a/frontend/src/components/layout/LeftSidebar.vue +++ b/frontend/src/components/layout/LeftSidebar.vue @@ -5,6 +5,7 @@ import { useActivity } from '@/composables/useActivity' import ProductSearch from '@/components/product/ProductSearch.vue' import ProductList from '@/components/product/ProductList.vue' import ProductCard from '@/components/product/ProductCard.vue' +import XiaodianTabs from '@/components/product/XiaodianTabs.vue' defineProps<{ version: string @@ -67,6 +68,8 @@ const onSwitchActivity = async (e: Event) => { + +
diff --git a/frontend/src/components/product/ProductList.vue b/frontend/src/components/product/ProductList.vue index e4e3901..14307a8 100644 --- a/frontend/src/components/product/ProductList.vue +++ b/frontend/src/components/product/ProductList.vue @@ -4,7 +4,7 @@ import { ref, computed, watch } from 'vue' import { useProducts } from '@/composables/useProducts' import { useActivity } from '@/composables/useActivity' -const { filteredProducts, selectedProductId, selectProduct, searchQuery } = useProducts() +const { filteredProducts, selectedProductId, selectProduct, searchQuery, xiaodianTab } = useProducts() const { currentActivity } = useActivity() const isXiaodian = computed(() => currentActivity.value?.id === 'xiaodian') const priceLabel = computed(() => isXiaodian.value ? '点券' : '积分') @@ -25,6 +25,10 @@ const virtualizer = useVirtualizer( const handleSelect = (commodityId: string, commodityName: string) => { selectProduct(commodityId, commodityName) } + +watch(xiaodianTab, () => { + virtualizer.value.scrollToOffset(0) +})