refactor: 产品页与产品列表的API重构

- 将产品页与产品列表的API由REST重构为GraphQL
- 修改Mapper与单元测试
This commit is contained in:
2025-11-11 15:58:15 +08:00
parent 7e7775ccc6
commit 691dd34127
8 changed files with 225 additions and 145 deletions

View File

@ -35,11 +35,12 @@
const localePath = useLocalePath();
//
const id = computed(() => route.params.slug as string);
const id = route.params.slug as string;
const { data, pending, error } = await useProduct(id.value);
const { data, pending, error } = await useProduct(id);
const rawProduct = computed(() => data.value.products_by_id ?? null);
const rawProduct = computed(() => data.value ?? null);
const product = computed(() => {
if (rawProduct.value === null) {
return null;
@ -60,10 +61,10 @@
});
// SEO
usePageSeo({
title: product.value.name || $t('page-title.products'),
description: product.value.summary || '',
});
// usePageSeo({
// title: product.value.name || $t('page-title.products'),
// description: product.value.summary || '',
// });
</script>
<style scoped>

View File

@ -37,7 +37,7 @@
const localePath = useLocalePath();
const { getImageUrl } = useDirectusImage();
const { data, pending, error } = useProductList();
const { data, pending, error } = await useProductList();
const activeNames = ref<string[]>([]);
@ -46,12 +46,13 @@
{ label: $t('navigation.products') },
];
const productsRaw = computed(() => data.value ?? []);
const productsRaw = computed(() => data.value.products ?? []);
const products = computed(() =>
productsRaw.value.map((item) => toProductListView(item))
);
logger.debug('products: ', products.value);
logger.debug('产品列表数据: ', products.value);
// 按类型分组
const groupedProducts = computed(() => {