|
@@ -4,7 +4,7 @@ import { ContentWrap } from '@/components/ContentWrap'
|
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
|
import { useForm } from '@/hooks/web/useForm'
|
|
|
import { reactive, unref, ref } from 'vue'
|
|
|
-import { ElButton } from 'element-plus'
|
|
|
+import { ElButton, ElInput } from 'element-plus'
|
|
|
import { useValidator } from '@/hooks/web/useValidator'
|
|
|
import { getDictOneApi } from '@/api/common'
|
|
|
|
|
@@ -36,6 +36,9 @@ const schema = reactive<FormSchema[]>([
|
|
|
value: '2'
|
|
|
}
|
|
|
]
|
|
|
+ },
|
|
|
+ formItemProps: {
|
|
|
+ rules: [required()]
|
|
|
}
|
|
|
},
|
|
|
{
|
|
@@ -92,31 +95,37 @@ const schema = reactive<FormSchema[]>([
|
|
|
}
|
|
|
])
|
|
|
|
|
|
-const { register, methods, elFormRef } = useForm()
|
|
|
+const { register, methods } = useForm()
|
|
|
+const {
|
|
|
+ setProps,
|
|
|
+ delSchema,
|
|
|
+ addSchema,
|
|
|
+ setValues,
|
|
|
+ setSchema,
|
|
|
+ getComponentExpose,
|
|
|
+ getFormItemExpose,
|
|
|
+ getElFormExpose
|
|
|
+} = methods
|
|
|
|
|
|
const changeLabelWidth = (width: number | string) => {
|
|
|
- const { setProps } = methods
|
|
|
setProps({
|
|
|
labelWidth: width
|
|
|
})
|
|
|
}
|
|
|
|
|
|
const changeSize = (size: string) => {
|
|
|
- const { setProps } = methods
|
|
|
setProps({
|
|
|
size
|
|
|
})
|
|
|
}
|
|
|
|
|
|
const changeDisabled = (bool: boolean) => {
|
|
|
- const { setProps } = methods
|
|
|
setProps({
|
|
|
disabled: bool
|
|
|
})
|
|
|
}
|
|
|
|
|
|
const changeSchema = (del: boolean) => {
|
|
|
- const { delSchema, addSchema } = methods
|
|
|
if (del) {
|
|
|
delSchema('field2')
|
|
|
} else if (!del && schema[1].field !== 'field2') {
|
|
@@ -143,10 +152,10 @@ const changeSchema = (del: boolean) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const setValue = (reset: boolean) => {
|
|
|
- const { setValues } = methods
|
|
|
+const setValue = async (reset: boolean) => {
|
|
|
+ const elFormExpose = await getElFormExpose()
|
|
|
if (reset) {
|
|
|
- unref(elFormRef)?.resetFields()
|
|
|
+ elFormExpose?.resetFields()
|
|
|
} else {
|
|
|
setValues({
|
|
|
field1: 'field1',
|
|
@@ -162,7 +171,6 @@ const setValue = (reset: boolean) => {
|
|
|
const index = ref(7)
|
|
|
|
|
|
const setLabel = () => {
|
|
|
- const { setSchema } = methods
|
|
|
setSchema([
|
|
|
{
|
|
|
field: 'field2',
|
|
@@ -212,14 +220,16 @@ const addItem = () => {
|
|
|
index.value++
|
|
|
}
|
|
|
|
|
|
-const formValidation = () => {
|
|
|
- unref(elFormRef)!.validate((isValid) => {
|
|
|
+const formValidation = async () => {
|
|
|
+ const elFormExpose = await getElFormExpose()
|
|
|
+ elFormExpose?.validate((isValid) => {
|
|
|
console.log(isValid)
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-const verifyReset = () => {
|
|
|
- unref(elFormRef)?.resetFields()
|
|
|
+const verifyReset = async () => {
|
|
|
+ const elFormExpose = await getElFormExpose()
|
|
|
+ elFormExpose?.resetFields()
|
|
|
}
|
|
|
|
|
|
const getDictOne = async () => {
|
|
@@ -235,6 +245,20 @@ const getDictOne = async () => {
|
|
|
])
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+const inoutFocus = async () => {
|
|
|
+ const inputEl: ComponentRef<typeof ElInput> = await getComponentExpose('field1')
|
|
|
+ inputEl?.focus()
|
|
|
+}
|
|
|
+
|
|
|
+const inoutValidation = async () => {
|
|
|
+ const formItem = await getFormItemExpose('field1')
|
|
|
+ const inputEl: ComponentRef<typeof ElInput> = await getComponentExpose('field1')
|
|
|
+ inputEl?.focus()
|
|
|
+ formItem?.validate('focus', (val: boolean) => {
|
|
|
+ console.log(val)
|
|
|
+ })
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
@@ -270,6 +294,13 @@ const getDictOne = async () => {
|
|
|
<ElButton @click="getDictOne">
|
|
|
{{ t('searchDemo.dynamicOptions') }}
|
|
|
</ElButton>
|
|
|
+
|
|
|
+ <ElButton @click="inoutFocus">
|
|
|
+ {{ `${t('formDemo.input')} ${t('formDemo.focus')}` }}
|
|
|
+ </ElButton>
|
|
|
+ <ElButton @click="inoutValidation">
|
|
|
+ {{ `${t('formDemo.input')} ${t('formDemo.formValidation')}` }}
|
|
|
+ </ElButton>
|
|
|
</ContentWrap>
|
|
|
<ContentWrap :title="`UseForm ${t('formDemo.example')}`">
|
|
|
<Form :schema="schema" @register="register" />
|