import CommonContent from "@/api/CommonContent"; import type { IHomeCommonCategoryListTabNestCategoryItemDefine } from "../CommonCategoryDefine"; import type { IHomeCommonCategoryDynamicDataCommonContent } from "../CommonCategoryDynamicData"; export interface IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumns { type: 'speicalMergeItem:getColumns', params: { modelId: number, mainBodyColumnId: number, }, } export interface IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumn { type: 'speicalMergeItem:getColumn', params: { modelId: number, mainBodyColumnId: number, }, } export type IHomeCommonCategoryCategoryDynamicDataMerg = | IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumns | IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumn; export async function doLoadDynamicCategoryDataMergeTypeGetColumns( categorys: IHomeCommonCategoryListTabNestCategoryItemDefine[], ) { for (let i = categorys.length - 1; i >= 0; i--) { const category = categorys[i]; if (category.type?.startsWith('speicalMergeItem:')) { const d = category.type.split(':'); const op = d[1]; const type = d[2]; switch (op) { case 'getColumns': { const data = category as unknown as IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumns; const result = await CommonContent.getModelColumList( data.params.modelId, data.params.mainBodyColumnId ) const newArray = result.map((item) => ({ ...category, params: undefined, text: item.name as string, type, data: { type: 'commonContent', params: { modelId: item.modelId, mainBodyColumnId: item.id, }, } as IHomeCommonCategoryDynamicDataCommonContent, })); categorys.splice(i, 1, ...newArray); break; } case 'getColumn': { const data = category as unknown as IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumn; const result = await CommonContent.getModelColumList( data.params.modelId, ) categorys.splice(i, 1, ...result .filter((item) => item.id === data.params.mainBodyColumnId) .map((item) => ({ ...category, text: item.name as string, type, data: { type: 'commonContent', params: { modelId: item.modelId, mainBodyColumnId: item.id, }, } as IHomeCommonCategoryDynamicDataCommonContent, }))); break; } } } } return categorys; }