adapters.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import _ from 'lodash-es';
  2. /** 将 formData 格式化为 api 需要的格式 */
  3. export function parseFormDataToParams(formData: Record<string, number | string | undefined>) {
  4. const params = {};
  5. _.forEach(formData, (v: string | undefined, k) => {
  6. // 如果是以 moduleData 打头的数据要特殊处理,因为这是配置的主要项目,表单配置见 ./configuration.data
  7. if (v && k.startsWith('moduleData')) {
  8. _.set(params, k, JSON.parse(v));
  9. } else {
  10. _.set(params, k, v);
  11. }
  12. });
  13. return params;
  14. }
  15. /** 将 api 返回的 moduleData 格式化为可用的对象,如果传入了 data,那么会返回带数据的配置,否则返回默认配置 */
  16. export function parseModuleDataToObject(moduleData: string): { chart: { label: string; prop: string }[]; list: { label: string; prop: string }[] };
  17. export function parseModuleDataToObject(
  18. moduleData: string,
  19. data: any
  20. ): { chart: { label: string; value: string }[]; list: { label: string; value: string }[] };
  21. export function parseModuleDataToObject(moduleData: string, data?: any) {
  22. const raw = JSON.parse(moduleData);
  23. if (data) {
  24. return {
  25. chart: _.map(_.get(raw, 'chart', []), (label, prop) => {
  26. return { label, value: _.get(data, prop, '/') };
  27. }),
  28. list: _.map(_.get(raw, 'list', []), (label, prop) => {
  29. return { label, value: _.get(data, prop, '/') };
  30. }),
  31. };
  32. }
  33. return {
  34. chart: _.map(_.get(raw, 'chart', []), (label, prop) => {
  35. return { label, prop };
  36. }),
  37. list: _.map(_.get(raw, 'list', []), (label, prop) => {
  38. return { label, prop };
  39. }),
  40. };
  41. }