refactor(production): 重构产品页代码
- 将Production的documents类型改写为单独的interface:ProductionDocument
This commit is contained in:
@ -36,7 +36,7 @@
|
|||||||
<question-list :questions="production.questions" />
|
<question-list :questions="production.questions" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="相关文档" name="documents">
|
<el-tab-pane label="相关文档" name="documents">
|
||||||
<document-list :documents="production.documents" />
|
<document-list :documents="production.production_documents.map(item => item.document) || []" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
@ -95,8 +95,8 @@ onMounted(async () => {
|
|||||||
questions: {
|
questions: {
|
||||||
populate: '*',
|
populate: '*',
|
||||||
},
|
},
|
||||||
documents: {
|
production_documents: {
|
||||||
populate: '*',
|
populate: 'document',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
locale: strapiLocale,
|
locale: strapiLocale,
|
||||||
@ -106,6 +106,7 @@ onMounted(async () => {
|
|||||||
production.value = {
|
production.value = {
|
||||||
...item,
|
...item,
|
||||||
}
|
}
|
||||||
|
console.log('Fetched production:', production.value)
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to fetch production:', error)
|
console.error('Failed to fetch production:', error)
|
||||||
|
|||||||
@ -19,8 +19,7 @@ v-for="(group, type) in groupedProductions" :key="type" :title="type || '未分
|
|||||||
<div class="group-list">
|
<div class="group-list">
|
||||||
<production-card
|
<production-card
|
||||||
v-for="production in group" :key="production.documentId || production.id"
|
v-for="production in group" :key="production.documentId || production.id"
|
||||||
:slug="production.documentId"
|
:slug="production.documentId" :image-url="useStrapiMedia(production?.cover?.url || '')"
|
||||||
:image-url="useStrapiMedia(production?.cover?.url || '')"
|
|
||||||
:name="production.title" :description="production.summary || ''" />
|
:name="production.title" :description="production.summary || ''" />
|
||||||
</div>
|
</div>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
@ -65,12 +64,9 @@ onMounted(async () => {
|
|||||||
cover: {
|
cover: {
|
||||||
populate: '*',
|
populate: '*',
|
||||||
},
|
},
|
||||||
production_images: {
|
|
||||||
populate: '*',
|
|
||||||
},
|
|
||||||
production_type: {
|
production_type: {
|
||||||
populate: '*',
|
populate: '*'
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
filters: {
|
filters: {
|
||||||
show_in_production_list: {
|
show_in_production_list: {
|
||||||
|
|||||||
@ -45,3 +45,5 @@ export interface StrapiResponse<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type StrapiRelation<T, K extends keyof T = never> = Omit<T, K | keyof StrapiEntity> & StrapiEntity;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
import type { StrapiEntity, StrapiImage, StrapiMedia } from './common';
|
import type { StrapiEntity, StrapiImage, StrapiMedia, StrapiRelation } from './common';
|
||||||
|
|
||||||
export interface ProductionType extends StrapiEntity {
|
export interface ProductionType extends StrapiEntity {
|
||||||
type: string;
|
type: string;
|
||||||
@ -22,7 +22,12 @@ export interface Production extends StrapiEntity {
|
|||||||
production_images: StrapiImage[];
|
production_images: StrapiImage[];
|
||||||
production_details: string;
|
production_details: string;
|
||||||
production_specs: ProductionSpecGroup[];
|
production_specs: ProductionSpecGroup[];
|
||||||
questions: Question[];
|
production_documents: StrapiRelation<ProductionDocument, 'related_productions'>[];
|
||||||
documents: StrapiMedia[];
|
questions: StrapiRelation<Question, 'related_productions'>[];
|
||||||
show_in_production_list: boolean;
|
show_in_production_list: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ProductionDocument extends StrapiEntity {
|
||||||
|
document: StrapiMedia;
|
||||||
|
related_productions: StrapiRelation<Production, 'production_documents'>[];
|
||||||
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
export interface Question extends StrapiEntity {
|
export interface Question extends StrapiEntity {
|
||||||
title: string;
|
title: string;
|
||||||
content: string;
|
content: string;
|
||||||
|
related_productions: StrapiRelation<Production, 'questions'>[];
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user