util.ts 1.06 KB
import type { OptionField, WidgetField } from './type';

export const getUsefulFieldProp = (field: any) => {
  let mode = 'widget'; //TODO 接口废弃,后续要删掉
  if (field?.extract) {
    mode = 'option';
  }
  let widget = field?.propertyWidget || field.widget;
  let code = field?.fieldName || field.code;
  let name = field?.fieldComment || field.title;
  let relFunId = field?.relFunId;
  if (mode === 'option') {
    widget = field?.extract.widget;
    relFunId = field?.extract.relId;
    code = field?.code;
    name = field?.name;
  }
  return {
    widget,
    code,
    name,
    relFunId,
  };
};

/**
 * 摊平fields ,以map形式展示 {code:{...}}
 * @param fields
 * @param excludeWidgets
 */
export const flatFields = (fields: WidgetField[] | OptionField[], excludeWidgets?: string[]) => {
  const fieldFlatten: any = {};
  fields.forEach((field: any) => {
    const { code, widget } = getUsefulFieldProp(field);
    if (excludeWidgets && excludeWidgets.indexOf(widget) > -1) {
      return;
    }
    fieldFlatten[code] = field;
  });
  return fieldFlatten;
};