fix: #342
This commit is contained in:
parent
d543e56efb
commit
1c51221645
|
@ -93,9 +93,6 @@ export default defineComponent({
|
||||||
// element form 实例
|
// element form 实例
|
||||||
const elFormRef = ref<ComponentRef<typeof ElForm>>()
|
const elFormRef = ref<ComponentRef<typeof ElForm>>()
|
||||||
|
|
||||||
// useForm传入的props
|
|
||||||
const outsideProps = ref<FormProps>({})
|
|
||||||
|
|
||||||
const mergeProps = ref<FormProps>({})
|
const mergeProps = ref<FormProps>({})
|
||||||
|
|
||||||
const getProps = computed(() => {
|
const getProps = computed(() => {
|
||||||
|
@ -124,8 +121,6 @@ export default defineComponent({
|
||||||
|
|
||||||
const setProps = (props: FormProps = {}) => {
|
const setProps = (props: FormProps = {}) => {
|
||||||
mergeProps.value = Object.assign(unref(mergeProps), props)
|
mergeProps.value = Object.assign(unref(mergeProps), props)
|
||||||
// @ts-ignore
|
|
||||||
outsideProps.value = props
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const delSchema = (field: string) => {
|
const delSchema = (field: string) => {
|
||||||
|
|
|
@ -117,11 +117,14 @@ const setProps = (props: SearchProps = {}) => {
|
||||||
outsideProps.value = props
|
outsideProps.value = props
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const schemaRef = ref<FormSchema[]>([])
|
||||||
|
|
||||||
// 监听表单结构化数组,重新生成formModel
|
// 监听表单结构化数组,重新生成formModel
|
||||||
watch(
|
watch(
|
||||||
() => unref(newSchema),
|
() => unref(newSchema),
|
||||||
async (schema = []) => {
|
async (schema = []) => {
|
||||||
formModel.value = initModel(schema, unref(formModel))
|
formModel.value = initModel(schema, unref(formModel))
|
||||||
|
schemaRef.value = schema
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
|
@ -241,7 +244,7 @@ const onFormValidate = (prop: FormItemProp, isValid: boolean, message: string) =
|
||||||
hide-required-asterisk
|
hide-required-asterisk
|
||||||
:inline="getProps.inline"
|
:inline="getProps.inline"
|
||||||
:is-col="getProps.isCol"
|
:is-col="getProps.isCol"
|
||||||
:schema="newSchema"
|
:schema="schemaRef"
|
||||||
@register="formRegister"
|
@register="formRegister"
|
||||||
@validate="onFormValidate"
|
@validate="onFormValidate"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -12,6 +12,86 @@ const { required } = useValidator()
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
|
const treeSelectData = [
|
||||||
|
{
|
||||||
|
value: '1',
|
||||||
|
label: 'Level one 1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '1-1',
|
||||||
|
label: 'Level two 1-1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '1-1-1',
|
||||||
|
label: 'Level three 1-1-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2',
|
||||||
|
label: 'Level one 2',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '2-1',
|
||||||
|
label: 'Level two 2-1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '2-1-1',
|
||||||
|
label: 'Level three 2-1-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2-2',
|
||||||
|
label: 'Level two 2-2',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '2-2-1',
|
||||||
|
label: 'Level three 2-2-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '3',
|
||||||
|
label: 'Level one 3',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '3-1',
|
||||||
|
label: 'Level two 3-1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '3-1-1',
|
||||||
|
label: 'Level three 3-1-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '3-2',
|
||||||
|
label: 'Level two 3-2',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '3-2-1',
|
||||||
|
label: 'Level three 3-2-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
// 模拟远程加载
|
||||||
|
const getTreeSelectData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
resolve(treeSelectData)
|
||||||
|
}, 3000)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const schema = reactive<FormSchema[]>([
|
const schema = reactive<FormSchema[]>([
|
||||||
{
|
{
|
||||||
field: 'field1',
|
field: 'field1',
|
||||||
|
@ -92,6 +172,16 @@ const schema = reactive<FormSchema[]>([
|
||||||
field: 'field6',
|
field: 'field6',
|
||||||
component: 'TimeSelect',
|
component: 'TimeSelect',
|
||||||
label: t('formDemo.timeSelect')
|
label: t('formDemo.timeSelect')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'field7',
|
||||||
|
label: `${t('formDemo.treeSelect')}`,
|
||||||
|
component: 'TreeSelect',
|
||||||
|
// 远程加载option
|
||||||
|
optionApi: async () => {
|
||||||
|
const res = await getTreeSelectData()
|
||||||
|
return res
|
||||||
|
}
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,86 @@ const { t } = useI18n()
|
||||||
const { searchRegister, searchMethods } = useSearch()
|
const { searchRegister, searchMethods } = useSearch()
|
||||||
const { setSchema, setProps, setValues } = searchMethods
|
const { setSchema, setProps, setValues } = searchMethods
|
||||||
|
|
||||||
|
const treeSelectData = [
|
||||||
|
{
|
||||||
|
value: '1',
|
||||||
|
label: 'Level one 1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '1-1',
|
||||||
|
label: 'Level two 1-1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '1-1-1',
|
||||||
|
label: 'Level three 1-1-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2',
|
||||||
|
label: 'Level one 2',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '2-1',
|
||||||
|
label: 'Level two 2-1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '2-1-1',
|
||||||
|
label: 'Level three 2-1-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2-2',
|
||||||
|
label: 'Level two 2-2',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '2-2-1',
|
||||||
|
label: 'Level three 2-2-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '3',
|
||||||
|
label: 'Level one 3',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '3-1',
|
||||||
|
label: 'Level two 3-1',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '3-1-1',
|
||||||
|
label: 'Level three 3-1-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '3-2',
|
||||||
|
label: 'Level two 3-2',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
value: '3-2-1',
|
||||||
|
label: 'Level three 3-2-1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
// 模拟远程加载
|
||||||
|
const getTreeSelectData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
resolve(treeSelectData)
|
||||||
|
}, 3000)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const schema = reactive<FormSchema[]>([
|
const schema = reactive<FormSchema[]>([
|
||||||
{
|
{
|
||||||
field: 'field1',
|
field: 'field1',
|
||||||
|
@ -125,6 +205,16 @@ const schema = reactive<FormSchema[]>([
|
||||||
field: 'field18',
|
field: 'field18',
|
||||||
label: t('formDemo.input'),
|
label: t('formDemo.input'),
|
||||||
component: 'Input'
|
component: 'Input'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'field19',
|
||||||
|
label: `${t('formDemo.treeSelect')}`,
|
||||||
|
component: 'TreeSelect',
|
||||||
|
// 远程加载option
|
||||||
|
optionApi: async () => {
|
||||||
|
const res = await getTreeSelectData()
|
||||||
|
return res
|
||||||
|
}
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue