export default()

in packages/form-render/src/models/filterValuesHidden.ts [25:74]


export default (_values: any, flattenSchema: object) => {

  const recursiveArray = (list: any[], _path: string) => {
    return list.map(item => {
      if (isObject(item)) {
        return recursiveObj(item, _path, item);
      }
      return item;
    });
  };
  
  const recursiveObj = (obj: any, prePath?: string, parentData?: any) => {

    for (let key of Object.keys(obj)) {
      const item = obj[key];
      let path = prePath ? `${prePath}.${key}` : key;
      let schema = flattenSchema[path]?.schema;

      if (isArray(item) && !schema) {
        path = prePath ? `${prePath}.${key}[]` : `${key}[]`;
        schema = flattenSchema[path]?.schema;
      }

      // 剔除隐藏数据
      if (schema?.hidden) {
        const hidden = transformHidden(schema.hidden, _values, parentData);
        if (hidden) {
          obj[key] = undefined;
          continue;
        }
      }
      
      if (isObject(item)) {
        obj[key] = recursiveObj(item, path, parentData);
        continue;
      }
  
      if (isArray(item) && schema?.items) {
        obj[key] = recursiveArray(item, path) || [];
        continue;
      }

      obj[key] = item;
    }

    return obj;
  };
  
  return recursiveObj(_values) || {};
}