CommonCategoryDynamicData.ts 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. // 动态数据接口定义
  2. import CommonContent, { GetContentListParams } from "@/api/CommonContent";
  3. import CalendarContent from "@/api/fusion/CalendarContent";
  4. import ScenicSpotContent from "@/api/fusion/ScenicSpotContent";
  5. import ActivityContent from "@/api/inheritor/ActivityContent";
  6. import InheritorContent from "@/api/inheritor/InheritorContent";
  7. import MoveableContent from "@/api/inheritor/MoveableContent";
  8. import ProductsContent from "@/api/inheritor/ProductsContent";
  9. import ProjectsContent from "@/api/inheritor/ProjectsContent";
  10. import SeminarContent from "@/api/inheritor/SeminarContent";
  11. import UnitContent from "@/api/inheritor/UnitContent";
  12. import UnmoveableContent from "@/api/inheritor/UnmoveableContent";
  13. import BulidingContent from "@/api/introduction/BulidingContent";
  14. import CharacterContent from "@/api/introduction/CharacterContent";
  15. import CustomContent from "@/api/introduction/CustomContent";
  16. import FeatureContent from "@/api/introduction/FeatureContent";
  17. import HistoryContent from "@/api/introduction/HistoryContent";
  18. import IndexContent from "@/api/introduction/IndexContent";
  19. import LanguageContent from "@/api/introduction/LanguageContent";
  20. import PolicyContent from "@/api/introduction/PolicyContent";
  21. import SeaContent from "@/api/introduction/SeaContent";
  22. import VictualsContent from "@/api/introduction/VictualsContent";
  23. import TeamsContent from "@/api/research/TeamsContent";
  24. import type { IHomeCommonCategoryListTabListDropdownDefine } from "./CommonCategoryDefine";
  25. import DiscussContent from "@/api/research/DiscussContent";
  26. import ResultContent from "@/api/research/ResultContent";
  27. import { CommonCategorDynamicDropDownValuesToParams } from "./data-defines/Dropdown";
  28. export * from './data-defines/Category';
  29. export * from './data-defines/Dropdown';
  30. //默认动态数据接口定义
  31. /**
  32. * 默认列表动态数据接口定义 - 通用内容
  33. */
  34. export interface IHomeCommonCategoryDynamicDataCommonContent {
  35. type: 'commonContent',
  36. params: {
  37. /**
  38. * 模型ID
  39. */
  40. modelId: number,
  41. /**
  42. * 栏目ID
  43. */
  44. mainBodyColumnId?: string|number|number[],
  45. /**
  46. * 分类类型id
  47. */
  48. typeId?: number,
  49. },
  50. /**
  51. * 其他参数
  52. */
  53. otherParams?: Record<string, any>,
  54. }
  55. /**
  56. * 默认列表动态数据接口定义 - 已序列化的预制接口
  57. */
  58. export interface IHomeCommonCategoryDynamicDataSerializedApi {
  59. type: 'serializedApi',
  60. /**
  61. * 序列化接口名称
  62. */
  63. name: string,
  64. params?: {
  65. /**
  66. * 栏目ID
  67. */
  68. mainBodyColumnId?: string|number|number[],
  69. },
  70. /**
  71. * 其他参数
  72. */
  73. otherParams?: Record<string, any>,
  74. }
  75. /**
  76. * 默认列表动态数据接口定义 - 请求内容
  77. */
  78. export interface IHomeCommonCategoryDynamicDataRequest {
  79. type: 'request',
  80. method: "OPTIONS" | "GET" | "HEAD" | "POST" | "PUT" | "DELETE",
  81. url: string,
  82. querys?: Record<string, any>,
  83. params?: Record<string, any>,
  84. }
  85. export type IHomeCommonCategoryDynamicData = IHomeCommonCategoryDynamicDataCommonContent
  86. | IHomeCommonCategoryDynamicDataSerializedApi
  87. | IHomeCommonCategoryDynamicDataRequest;
  88. /**
  89. * 动态数据序列化接口
  90. */
  91. export function CommonCategoryDynamicDataSerializedApi(item: IHomeCommonCategoryDynamicDataSerializedApi) {
  92. switch (item.name) {
  93. case 'BulidingContent': return BulidingContent;
  94. case 'ActivityContent': return ActivityContent;
  95. case 'InheritorContent': return InheritorContent;
  96. case 'MoveableContent': return MoveableContent;
  97. case 'ProductsContent': return ProductsContent;
  98. case 'ProjectsContent': return ProjectsContent;
  99. case 'SeminarContent': return SeminarContent;
  100. case 'UnitContent': return UnitContent;
  101. case 'UnmoveableContent': return UnmoveableContent;
  102. case 'CalendarContent': return CalendarContent;
  103. case 'ScenicSpotContent': return ScenicSpotContent;
  104. case 'CharacterContent': return CharacterContent;
  105. case 'FeatureContent': return FeatureContent;
  106. case 'HistoryContent': return HistoryContent;
  107. case 'IndexContent': return IndexContent;
  108. case 'LanguageContent': return LanguageContent;
  109. case 'PolicyContent': return PolicyContent;
  110. case 'SeaContent': return SeaContent;
  111. case 'VictualsContent': return VictualsContent;
  112. case 'CustomContent': return CustomContent;
  113. case 'TeamsContent': return TeamsContent;
  114. case 'DiscussContent': return DiscussContent;
  115. case 'ResultContent': return ResultContent;
  116. default:
  117. throw new Error(`未实现的序列化接口 ${item.name}`);
  118. }
  119. }
  120. //加载接口
  121. export async function doLoadDynamicListData(
  122. item: IHomeCommonCategoryDynamicData,
  123. page: number,
  124. pageSize: number,
  125. keywords: string,
  126. dropdownDefines: IHomeCommonCategoryListTabListDropdownDefine[],
  127. dropDownValues: (number|string|boolean)[],
  128. ) {
  129. switch (item.type) {
  130. default:
  131. throw new Error(`未实现的动态数据接口`);
  132. case 'commonContent':
  133. return await CommonContent.getContentList(new GetContentListParams()
  134. .setModelId(item.params.modelId)
  135. .setMainBodyColumnId(item.params.mainBodyColumnId)
  136. .setKeywords(keywords)
  137. .setSelfValues({
  138. ...item.otherParams,
  139. ...CommonCategorDynamicDropDownValuesToParams(dropDownValues, dropdownDefines || []),
  140. })
  141. , page, pageSize);
  142. case 'serializedApi': {
  143. const params = new GetContentListParams();
  144. if (item.params?.mainBodyColumnId)
  145. params.setMainBodyColumnId(item.params.mainBodyColumnId);
  146. return (await CommonCategoryDynamicDataSerializedApi(item).getContentList(
  147. params
  148. .setKeywords(keywords)
  149. .setSelfValues({
  150. ...item.otherParams,
  151. ...CommonCategorDynamicDropDownValuesToParams(dropDownValues, dropdownDefines || []),
  152. })
  153. , page, pageSize));
  154. }
  155. case 'request':
  156. return (await CommonContent.request(
  157. item.url,
  158. { ...item.querys, page, pageSize },
  159. {
  160. method: item.method,
  161. data: {
  162. ...item.params,
  163. ...CommonCategorDynamicDropDownValuesToParams(dropDownValues, dropdownDefines || [])
  164. },
  165. },
  166. '',
  167. undefined,
  168. )).data;
  169. }
  170. }