|
|
|
@ -6,7 +6,7 @@ |
|
|
|
<FormItem |
|
|
|
:schema="schema" |
|
|
|
:formProps="getProps" |
|
|
|
:allDefaultValues="getAllDefaultValues" |
|
|
|
:allDefaultValues="defaultValueRef" |
|
|
|
:formModel="formModel" |
|
|
|
> |
|
|
|
<template #[item]="data" v-for="item in Object.keys($slots)"> |
|
|
|
@ -56,8 +56,8 @@ |
|
|
|
|
|
|
|
export default defineComponent({ |
|
|
|
name: 'BasicForm', |
|
|
|
inheritAttrs: false, |
|
|
|
components: { FormItem, Form, Row, FormAction }, |
|
|
|
inheritAttrs: false, |
|
|
|
props: basicProps, |
|
|
|
emits: ['advanced-change', 'reset', 'submit', 'register'], |
|
|
|
setup(props, { emit }) { |
|
|
|
@ -68,6 +68,7 @@ |
|
|
|
isLoad: false, |
|
|
|
actionSpan: 6, |
|
|
|
}); |
|
|
|
const defaultValueRef = ref<any>({}); |
|
|
|
const propsRef = ref<Partial<FormProps>>({}); |
|
|
|
const schemaRef = ref<FormSchema[] | null>(null); |
|
|
|
const formElRef = ref<Nullable<FormType>>(null); |
|
|
|
@ -132,17 +133,6 @@ |
|
|
|
return schemas as FormSchema[]; |
|
|
|
}); |
|
|
|
|
|
|
|
const getAllDefaultValues = computed(() => { |
|
|
|
const schemas = unref(getSchema); |
|
|
|
const obj: any = {}; |
|
|
|
schemas.forEach((item) => { |
|
|
|
if (item.defaultValue) { |
|
|
|
obj[item.field] = item.defaultValue; |
|
|
|
(formModel as any)[item.field] = item.defaultValue; |
|
|
|
} |
|
|
|
}); |
|
|
|
return obj; |
|
|
|
}); |
|
|
|
const getEmptySpanRef = computed((): number => { |
|
|
|
if (!advanceState.isAdvanced) { |
|
|
|
return 0; |
|
|
|
@ -174,6 +164,19 @@ |
|
|
|
}, |
|
|
|
{ immediate: true } |
|
|
|
); |
|
|
|
|
|
|
|
function initDefault() { |
|
|
|
const schemas = unref(getSchema); |
|
|
|
const obj: any = {}; |
|
|
|
schemas.forEach((item) => { |
|
|
|
if (item.defaultValue) { |
|
|
|
obj[item.field] = item.defaultValue; |
|
|
|
(formModel as any)[item.field] = item.defaultValue; |
|
|
|
} |
|
|
|
}); |
|
|
|
defaultValueRef.value = obj; |
|
|
|
} |
|
|
|
|
|
|
|
function updateAdvanced() { |
|
|
|
let itemColSum = 0; |
|
|
|
let realItemColSum = 0; |
|
|
|
@ -191,7 +194,7 @@ |
|
|
|
model: formModel, |
|
|
|
field: schema.field, |
|
|
|
values: { |
|
|
|
...getAllDefaultValues, |
|
|
|
...unerf(defaultValueRef), |
|
|
|
...formModel, |
|
|
|
}, |
|
|
|
}); |
|
|
|
@ -343,6 +346,7 @@ |
|
|
|
} |
|
|
|
schemaRef.value = schemaList as any; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description: 根据字段名删除 |
|
|
|
*/ |
|
|
|
@ -354,6 +358,7 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description: 往某个字段后面插入,如果没有插入最后一个 |
|
|
|
*/ |
|
|
|
@ -400,7 +405,6 @@ |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
schemaRef.value = unique(schema, 'field') as any; |
|
|
|
} |
|
|
|
|
|
|
|
@ -412,6 +416,7 @@ |
|
|
|
toRef(props, 'transformDateFunc'), |
|
|
|
toRef(props, 'fieldMapToTime') |
|
|
|
); |
|
|
|
|
|
|
|
function getFieldsValue(): any { |
|
|
|
const formEl = unref(formElRef); |
|
|
|
if (!formEl) return; |
|
|
|
@ -426,6 +431,7 @@ |
|
|
|
return item.field === key ? dateItemType.includes(item.component!) : false; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description:设置表单 |
|
|
|
*/ |
|
|
|
@ -438,6 +444,7 @@ |
|
|
|
if (!formElRef.value) return; |
|
|
|
return formElRef.value.validateFields(nameList); |
|
|
|
} |
|
|
|
|
|
|
|
function validate(nameList?: NamePath[] | undefined) { |
|
|
|
if (!formElRef.value) return; |
|
|
|
return formElRef.value.validate(nameList); |
|
|
|
@ -460,14 +467,17 @@ |
|
|
|
validateFields: validateFields as ValidateFields, |
|
|
|
validate: validate as ValidateFields, |
|
|
|
}; |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
initDefault(); |
|
|
|
emit('register', methods); |
|
|
|
}); |
|
|
|
|
|
|
|
return { |
|
|
|
handleToggleAdvanced, |
|
|
|
formModel, |
|
|
|
getActionPropsRef, |
|
|
|
getAllDefaultValues, |
|
|
|
defaultValueRef, |
|
|
|
advanceState, |
|
|
|
getProps, |
|
|
|
formElRef, |
|
|
|
|