Dropdown.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // 下拉列表动态数据接口定义
  2. import CommonContent from "@/api/CommonContent";
  3. import type { IHomeCommonCategoryListTabListDropdownDefine } from "../CommonCategoryDefine";
  4. export function CommonCategorDynamicDropDownValuesToParams(dropDownValues: (number|string|boolean)[], dropdownDefines: IHomeCommonCategoryListTabListDropdownDefine[]) {
  5. const params: Record<string, any> = {};
  6. dropdownDefines.forEach((define, index) => {
  7. const v = dropDownValues[index]
  8. if (typeof v === 'number' && v > 0)
  9. params[define.key] = v;
  10. else if (typeof v === 'string')
  11. params[define.key] = v;
  12. });
  13. return params;
  14. }
  15. /**
  16. * 下拉列表动态数据接口定义 - 通用内容
  17. */
  18. export interface IHomeCommonCategoryDropdownDynamicDataCommonContent {
  19. type: 'commonContent',
  20. /**
  21. * 分类类型id
  22. */
  23. typeId: number,
  24. /**
  25. * 其他参数
  26. */
  27. otherParams?: Record<string, any>,
  28. /**
  29. * 通用内容数据id键
  30. */
  31. idKey?: string,
  32. /**
  33. * 通用内容数据名称键
  34. */
  35. nameKey?: string,
  36. }
  37. /**
  38. * 下拉列表动态数据接口定义 - 静态内容
  39. */
  40. export interface IHomeCommonCategoryDropdownStaticData {
  41. type: 'static',
  42. /**
  43. * 静态数据
  44. */
  45. data: Record<string, any>[],
  46. /**
  47. * 静态数据id键
  48. */
  49. idKey?: string,
  50. /**
  51. * 静态数据名称键
  52. */
  53. nameKey?: string,
  54. }
  55. /**
  56. * 下拉列表动态数据接口定义 - 请求内容
  57. */
  58. export interface IHomeCommonCategoryDropdownDynamicDataRequest {
  59. type: 'request',
  60. method: "OPTIONS" | "GET" | "HEAD" | "POST" | "PUT" | "DELETE",
  61. url: string,
  62. querys?: Record<string, any>,
  63. params?: Record<string, any>,
  64. idKey?: string,
  65. nameKey?: string,
  66. }
  67. export type IHomeCommonCategoryDropdownDynamicData =
  68. IHomeCommonCategoryDropdownDynamicDataCommonContent
  69. | IHomeCommonCategoryDropdownDynamicDataRequest
  70. | IHomeCommonCategoryDropdownStaticData;
  71. export async function doLoadDynamicDropdownData(item: IHomeCommonCategoryDropdownDynamicData) {
  72. switch (item.type) {
  73. case 'commonContent':
  74. return (await CommonContent.getCategoryList(item.typeId)) as unknown as Record<string, any>[];
  75. case 'static':
  76. return item.data;
  77. case 'request':
  78. return (await CommonContent.request(
  79. item.url,
  80. { ...item.querys },
  81. {
  82. method: item.method,
  83. data: item.params,
  84. },
  85. '',
  86. undefined,
  87. )).data as unknown as Record<string, any>[];
  88. }
  89. throw new Error(`未实现的动态数据接口`);
  90. }