123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- <script setup lang="ts">
- import { Form, FormExpose } from '@/components/Form'
- import { ContentWrap } from '@/components/ContentWrap'
- import { useI18n } from '@/hooks/web/useI18n'
- import { reactive, unref, ref } from 'vue'
- import { ElButton } from 'element-plus'
- import { required } from '@/utils/formRules'
- const { t } = useI18n()
- const schema = reactive<FormSchema[]>([
- {
- field: 'field1',
- label: t('formDemo.input'),
- component: 'Input',
- formItemProps: {
- rules: [required]
- }
- },
- {
- field: 'field2',
- label: t('formDemo.select'),
- component: 'Select',
- componentProps: {
- options: [
- {
- label: 'option1',
- value: '1'
- },
- {
- label: 'option2',
- value: '2'
- }
- ]
- }
- },
- {
- field: 'field3',
- label: t('formDemo.radio'),
- component: 'Radio',
- componentProps: {
- options: [
- {
- label: 'option-1',
- value: '1'
- },
- {
- label: 'option-2',
- value: '2'
- }
- ]
- }
- },
- {
- field: 'field4',
- label: t('formDemo.checkbox'),
- component: 'Checkbox',
- value: [],
- componentProps: {
- options: [
- {
- label: 'option-1',
- value: '1'
- },
- {
- label: 'option-2',
- value: '2'
- },
- {
- label: 'option-3',
- value: '3'
- }
- ]
- }
- },
- {
- field: 'field5',
- component: 'DatePicker',
- label: t('formDemo.datePicker'),
- componentProps: {
- type: 'date'
- }
- },
- {
- field: 'field6',
- component: 'TimeSelect',
- label: t('formDemo.timeSelect')
- }
- ])
- const formRef = ref<FormExpose>()
- const changeLabelWidth = (width: number | string) => {
- unref(formRef)?.setProps({
- labelWidth: width
- })
- }
- const changeSize = (size: string) => {
- unref(formRef)?.setProps({
- size
- })
- }
- const changeDisabled = (bool: boolean) => {
- unref(formRef)?.setProps({
- disabled: bool
- })
- }
- const changeSchema = (del: boolean) => {
- if (del) {
- unref(formRef)?.delSchema('field2')
- } else if (!del && schema[1].field !== 'field2') {
- unref(formRef)?.addSchema(
- {
- field: 'field2',
- label: t('formDemo.select'),
- component: 'Select',
- componentProps: {
- options: [
- {
- label: 'option1',
- value: '1'
- },
- {
- label: 'option2',
- value: '2'
- }
- ]
- }
- },
- 1
- )
- }
- }
- const setValue = (reset: boolean) => {
- const elFormRef = unref(formRef)?.getElFormRef()
- if (reset) {
- elFormRef?.resetFields()
- } else {
- unref(formRef)?.setValues({
- field1: 'field1',
- field2: '2',
- field3: '2',
- field4: ['1', '3'],
- field5: '2022-01-27',
- field6: '17:00'
- })
- }
- }
- const index = ref(7)
- const setLabel = () => {
- unref(formRef)?.setSchema([
- {
- field: 'field2',
- path: 'label',
- value: `${t('formDemo.select')} ${index.value}`
- },
- {
- field: 'field2',
- path: 'componentProps.options',
- value: [
- {
- label: 'option-1',
- value: '1'
- },
- {
- label: 'option-2',
- value: '2'
- },
- {
- label: 'option-3',
- value: '3'
- }
- ]
- }
- ])
- index.value++
- }
- const addItem = () => {
- if (unref(index) % 2 === 0) {
- unref(formRef)?.addSchema({
- field: `field${unref(index)}`,
- label: `${t('formDemo.input')}${unref(index)}`,
- component: 'Input'
- })
- } else {
- unref(formRef)?.addSchema(
- {
- field: `field${unref(index)}`,
- label: `${t('formDemo.input')}${unref(index)}`,
- component: 'Input'
- },
- unref(index)
- )
- }
- index.value++
- }
- const formValidation = () => {
- const elFormRef = unref(formRef)?.getElFormRef()
- elFormRef?.validate()?.catch(() => {})
- }
- const verifyReset = () => {
- const elFormRef = unref(formRef)?.getElFormRef()
- elFormRef?.resetFields()
- }
- </script>
- <template>
- <ContentWrap :title="`refForm${t('formDemo.operate')}`">
- <ElButton @click="changeLabelWidth(150)">{{ t('formDemo.change') }} labelWidth</ElButton>
- <ElButton @click="changeLabelWidth('auto')">{{ t('formDemo.restore') }} labelWidth</ElButton>
- <ElButton @click="changeSize('large')">{{ t('formDemo.change') }} size</ElButton>
- <ElButton @click="changeSize('default')">{{ t('formDemo.restore') }} size</ElButton>
- <ElButton @click="changeDisabled(true)">{{ t('formDemo.disabled') }}</ElButton>
- <ElButton @click="changeDisabled(false)">{{ t('formDemo.disablement') }}</ElButton>
- <ElButton @click="changeSchema(true)">
- {{ t('formDemo.delete') }} {{ t('formDemo.select') }}
- </ElButton>
- <ElButton @click="changeSchema(false)">
- {{ t('formDemo.add') }} {{ t('formDemo.select') }}
- </ElButton>
- <ElButton @click="setValue(false)">{{ t('formDemo.setValue') }}</ElButton>
- <ElButton @click="setValue(true)">{{ t('formDemo.resetValue') }}</ElButton>
- <ElButton @click="setLabel">
- {{ t('formDemo.set') }} {{ t('formDemo.select') }} label
- </ElButton>
- <ElButton @click="addItem"> {{ t('formDemo.add') }} {{ t('formDemo.subitem') }} </ElButton>
- <ElButton @click="formValidation"> {{ t('formDemo.formValidation') }} </ElButton>
- <ElButton @click="verifyReset"> {{ t('formDemo.verifyReset') }} </ElButton>
- </ContentWrap>
- <ContentWrap :title="`useForm${t('formDemo.example')}`">
- <Form :schema="schema" ref="formRef" />
- </ContentWrap>
- </template>
|