lzdjack
2022-03-19 aaa30fbf10611de9a9c181d9262f3bcde3d7fc34
feat(form): appendSchemaByField和updateSchema支持defaultValue (#1608)

1. 兼容appendSchemaByField和updateSchema支持设置默认值
1个文件已修改
30 ■■■■■ 已修改文件
src/components/Form/src/hooks/useFormEvents.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Form/src/hooks/useFormEvents.ts
@@ -2,7 +2,7 @@
import type { FormProps, FormSchema, FormActionType } from '../types/form';
import type { NamePath } from 'ant-design-vue/lib/form/interface';
import { unref, toRaw, nextTick } from 'vue';
import { isArray, isFunction, isObject, isString } from '/@/utils/is';
import { isArray, isFunction, isNullOrUnDef, isObject, isString } from '/@/utils/is';
import { deepMerge } from '/@/utils';
import { dateItemType, handleInputNumberValue, defaultValueComponents } from '../helper';
import { dateUtil } from '/@/utils/dateUtil';
@@ -132,11 +132,14 @@
    if (!prefixField || index === -1 || first) {
      first ? schemaList.unshift(schema) : schemaList.push(schema);
      schemaRef.value = schemaList;
      _setDefaultValue(schema);
      return;
    }
    if (index !== -1) {
      schemaList.splice(index + 1, 0, schema);
    }
    _setDefaultValue(schema);
    schemaRef.value = schemaList;
  }
@@ -192,9 +195,34 @@
        }
      });
    });
    _setDefaultValue(schema);
    schemaRef.value = uniqBy(schema, 'field');
  }
  function _setDefaultValue(data: FormSchema | FormSchema[]) {
    let schemas: FormSchema[] = [];
    if (isObject(data)) {
      schemas.push(data as FormSchema);
    }
    if (isArray(data)) {
      schemas = [...data];
    }
    const obj: Recordable = {};
    schemas.forEach((item) => {
      if (
        item.component != 'Divider' &&
        Reflect.has(item, 'field') &&
        item.field &&
        !isNullOrUnDef(item.defaultValue)
      ) {
        obj[item.field] = item.defaultValue;
      }
    });
    setFieldsValue(obj);
  }
  function getFieldsValue(): Recordable {
    const formEl = unref(formElRef);
    if (!formEl) return {};