Category.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import CommonContent from "@/api/CommonContent";
  2. import type { IHomeCommonCategoryListTabNestCategoryItemDefine } from "../CommonCategoryDefine";
  3. import type { IHomeCommonCategoryDynamicDataCommonContent } from "../CommonCategoryDynamicData";
  4. export interface IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumns {
  5. type: 'speicalMergeItem:getColumns',
  6. params: {
  7. modelId: number,
  8. mainBodyColumnId: number,
  9. },
  10. }
  11. export interface IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumn {
  12. type: 'speicalMergeItem:getColumn',
  13. params: {
  14. modelId: number,
  15. mainBodyColumnId: number,
  16. },
  17. }
  18. export type IHomeCommonCategoryCategoryDynamicDataMerg =
  19. | IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumns
  20. | IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumn;
  21. export async function doLoadDynamicCategoryDataMergeTypeGetColumns(
  22. categorys: IHomeCommonCategoryListTabNestCategoryItemDefine[],
  23. ) {
  24. for (let i = categorys.length - 1; i >= 0; i--) {
  25. const category = categorys[i];
  26. if (category.type?.startsWith('speicalMergeItem:')) {
  27. const d = category.type.split(':');
  28. const op = d[1];
  29. const type = d[2];
  30. switch (op) {
  31. case 'getColumns': {
  32. const data = category as unknown as IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumns;
  33. const result = await CommonContent.getModelColumList(
  34. data.params.modelId,
  35. data.params.mainBodyColumnId
  36. )
  37. const newArray = result.map((item) => ({
  38. ...category,
  39. params: undefined,
  40. text: item.name as string,
  41. type,
  42. data: {
  43. type: 'commonContent',
  44. params: {
  45. modelId: item.modelId,
  46. mainBodyColumnId: item.id,
  47. },
  48. } as IHomeCommonCategoryDynamicDataCommonContent,
  49. }));
  50. categorys.splice(i, 1, ...newArray);
  51. break;
  52. }
  53. case 'getColumn': {
  54. const data = category as unknown as IHomeCommonCategoryCategoryDynamicDataMergeTypeGetColumn;
  55. const result = await CommonContent.getModelColumList(
  56. data.params.modelId,
  57. )
  58. categorys.splice(i, 1, ...result
  59. .filter((item) => item.id === data.params.mainBodyColumnId)
  60. .map((item) => ({
  61. ...category,
  62. text: item.name as string,
  63. type,
  64. data: {
  65. type: 'commonContent',
  66. params: {
  67. modelId: item.modelId,
  68. mainBodyColumnId: item.id,
  69. },
  70. } as IHomeCommonCategoryDynamicDataCommonContent,
  71. })));
  72. break;
  73. }
  74. }
  75. }
  76. }
  77. return categorys;
  78. }