// 动态数据接口定义 import CommonContent, { GetContentListParams } from "@/api/CommonContent"; import CalendarContent from "@/api/fusion/CalendarContent"; import ScenicSpotContent from "@/api/fusion/ScenicSpotContent"; import ActivityContent from "@/api/inheritor/ActivityContent"; import InheritorContent from "@/api/inheritor/InheritorContent"; import MoveableContent from "@/api/inheritor/MoveableContent"; import ProductsContent from "@/api/inheritor/ProductsContent"; import ProjectsContent from "@/api/inheritor/ProjectsContent"; import SeminarContent from "@/api/inheritor/SeminarContent"; import UnitContent from "@/api/inheritor/UnitContent"; import UnmoveableContent from "@/api/inheritor/UnmoveableContent"; import BulidingContent from "@/api/introduction/BulidingContent"; import CharacterContent from "@/api/introduction/CharacterContent"; import CustomContent from "@/api/introduction/CustomContent"; import FeatureContent from "@/api/introduction/FeatureContent"; import HistoryContent from "@/api/introduction/HistoryContent"; import IndexContent from "@/api/introduction/IndexContent"; import LanguageContent from "@/api/introduction/LanguageContent"; import PolicyContent from "@/api/introduction/PolicyContent"; import SeaContent from "@/api/introduction/SeaContent"; import VictualsContent from "@/api/introduction/VictualsContent"; import TeamsContent from "@/api/research/TeamsContent"; import type { IHomeCommonCategoryListTabListDropdownDefine } from "./CommonCategoryDefine"; import DiscussContent from "@/api/research/DiscussContent"; import ResultContent from "@/api/research/ResultContent"; import { CommonCategorDynamicDropDownValuesToParams } from "./data-defines/Dropdown"; export * from './data-defines/Category'; export * from './data-defines/Dropdown'; //默认动态数据接口定义 /** * 默认列表动态数据接口定义 - 通用内容 */ export interface IHomeCommonCategoryDynamicDataCommonContent { type: 'commonContent', params: { /** * 模型ID */ modelId: number, /** * 栏目ID */ mainBodyColumnId?: string|number|number[], /** * 分类类型id */ typeId?: number, }, /** * 其他参数 */ otherParams?: Record, } /** * 默认列表动态数据接口定义 - 已序列化的预制接口 */ export interface IHomeCommonCategoryDynamicDataSerializedApi { type: 'serializedApi', /** * 序列化接口名称 */ name: string, params?: { /** * 栏目ID */ mainBodyColumnId?: string|number|number[], }, /** * 其他参数 */ otherParams?: Record, } /** * 默认列表动态数据接口定义 - 请求内容 */ export interface IHomeCommonCategoryDynamicDataRequest { type: 'request', method: "OPTIONS" | "GET" | "HEAD" | "POST" | "PUT" | "DELETE", url: string, querys?: Record, params?: Record, } export type IHomeCommonCategoryDynamicData = IHomeCommonCategoryDynamicDataCommonContent | IHomeCommonCategoryDynamicDataSerializedApi | IHomeCommonCategoryDynamicDataRequest; /** * 动态数据序列化接口 */ export function CommonCategoryDynamicDataSerializedApi(item: IHomeCommonCategoryDynamicDataSerializedApi) { switch (item.name) { case 'BulidingContent': return BulidingContent; case 'ActivityContent': return ActivityContent; case 'InheritorContent': return InheritorContent; case 'MoveableContent': return MoveableContent; case 'ProductsContent': return ProductsContent; case 'ProjectsContent': return ProjectsContent; case 'SeminarContent': return SeminarContent; case 'UnitContent': return UnitContent; case 'UnmoveableContent': return UnmoveableContent; case 'CalendarContent': return CalendarContent; case 'ScenicSpotContent': return ScenicSpotContent; case 'CharacterContent': return CharacterContent; case 'FeatureContent': return FeatureContent; case 'HistoryContent': return HistoryContent; case 'IndexContent': return IndexContent; case 'LanguageContent': return LanguageContent; case 'PolicyContent': return PolicyContent; case 'SeaContent': return SeaContent; case 'VictualsContent': return VictualsContent; case 'CustomContent': return CustomContent; case 'TeamsContent': return TeamsContent; case 'DiscussContent': return DiscussContent; case 'ResultContent': return ResultContent; default: throw new Error(`未实现的序列化接口 ${item.name}`); } } //加载接口 export async function doLoadDynamicListData( item: IHomeCommonCategoryDynamicData, page: number, pageSize: number, keywords: string, dropdownDefines: IHomeCommonCategoryListTabListDropdownDefine[], dropDownValues: (number|string|boolean)[], ) { switch (item.type) { default: throw new Error(`未实现的动态数据接口`); case 'commonContent': return await CommonContent.getContentList(new GetContentListParams() .setModelId(item.params.modelId) .setMainBodyColumnId(item.params.mainBodyColumnId) .setKeywords(keywords) .setSelfValues({ ...item.otherParams, ...CommonCategorDynamicDropDownValuesToParams(dropDownValues, dropdownDefines || []), }) , page, pageSize); case 'serializedApi': { const params = new GetContentListParams(); if (item.params?.mainBodyColumnId) params.setMainBodyColumnId(item.params.mainBodyColumnId); return (await CommonCategoryDynamicDataSerializedApi(item).getContentList( params .setKeywords(keywords) .setSelfValues({ ...item.otherParams, ...CommonCategorDynamicDropDownValuesToParams(dropDownValues, dropdownDefines || []), }) , page, pageSize)); } case 'request': return (await CommonContent.request( item.url, { ...item.querys, page, pageSize }, { method: item.method, data: { ...item.params, ...CommonCategorDynamicDropDownValuesToParams(dropDownValues, dropdownDefines || []) }, }, '', undefined, )).data; } }