Skip to content
On this page

formData

js
import { useInitFormData } from '@/components/Form';
const formData = ref(useInitFormData(props.bucket));

表单项白名单

js
export const INCLUDE_WIDGETS_WITH_INITIAL_VALUE = [
  'ainput',
  'ainputnumber',
  'aselect',
  'adatepicker',
  'arangepicker',
  'acheckboxgroup',
  'acheckbox',
  'aupload',
  'acascader',
  'aswitch',
  'ainputpassword',
  'aradiogroup',
  'aradio',
  'atimepicker',
  'atimerangepicker',
  'atransfer',
  'atree',
  'atreeselect',
  'arate',
  'aslider',
  'aautocomplete',
  'aimage',
  'atag',
  'acheckabletag',
  'ainputsearch',
];

可以添加物料

useInitFormData

js
import { INCLUDE_WIDGETS_WITH_INITIAL_VALUE } from './components/cosfee-material';

/** @description 针对表单 formData 格式化赋初始值 */
export const useInitFormData = (
  formProps,
  formData = {},
  initialValue = null
) => {
  if (Array.isArray(formProps) && formProps.length) {
    for (let i = 0, length = formProps.length; i < length; i++) {
      useInitFormData(formProps[i], formData);
    }
  } else if (formProps.bucket) useInitFormData(formProps.bucket, formData);

  if (!formProps.widget) return formData;

  const lowerCaseWidget = formProps.widget.toLowerCase();
  if (INCLUDE_WIDGETS_WITH_INITIAL_VALUE.includes(lowerCaseWidget)) {
    formData[formProps.alias] = { text: initialValue };
  }
  return formData;
};

递归找到符合白名单定义的表单项(widget), 组装数据返回新对象;

返回结构

json
{
  [alias]: {text: initialValue}
}