mirror of
https://github.com/fugary/simple-element-plus-template.git
synced 2025-11-12 14:27:49 +00:00
动态表单测试
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
import { computed, ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
import { useCityAutocompleteConfig, useCitySelectPageConfig } from '@/services/city/CityService'
|
import { useCityAutocompleteConfig, useCitySelectPageConfig } from '@/services/city/CityService'
|
||||||
import { $i18nMsg } from '@/messages'
|
import { $i18nMsg } from '@/messages'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
|
||||||
const defaultCity = ref({})
|
const defaultCity = ref({})
|
||||||
|
|
||||||
@@ -149,7 +150,37 @@ const formOptions = computed(() => {
|
|||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
})
|
})
|
||||||
const userDto = ref({})
|
const userDto = ref({
|
||||||
|
contacts: [{
|
||||||
|
name: 'Jerry',
|
||||||
|
phone: '1234567890'
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
/**
|
||||||
|
* @type {CommonFormOption[]}
|
||||||
|
*/
|
||||||
|
const contactsOptions = ref([{
|
||||||
|
label: '联系人姓名',
|
||||||
|
prop: 'name',
|
||||||
|
required: true
|
||||||
|
}, {
|
||||||
|
label: '联系电话',
|
||||||
|
prop: 'phone',
|
||||||
|
required: true
|
||||||
|
}])
|
||||||
|
|
||||||
|
const addContact = () => {
|
||||||
|
if (userDto.value.contacts.length < 3) {
|
||||||
|
userDto.value.contacts.push({})
|
||||||
|
} else {
|
||||||
|
ElMessage.error('联系人不能超过3个')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteContact = idx => {
|
||||||
|
userDto.value.contacts.splice(idx, 1)
|
||||||
|
}
|
||||||
|
|
||||||
const submitForm = (form) => {
|
const submitForm = (form) => {
|
||||||
console.info(form)
|
console.info(form)
|
||||||
form.validate((valid) => {
|
form.validate((valid) => {
|
||||||
@@ -171,11 +202,43 @@ const submitForm = (form) => {
|
|||||||
label-width="120px"
|
label-width="120px"
|
||||||
@submit-form="submitForm"
|
@submit-form="submitForm"
|
||||||
>
|
>
|
||||||
|
<template #default>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
@click="addContact"
|
||||||
|
>
|
||||||
|
添加联系人
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
<template
|
||||||
|
v-for="(contact, index) in userDto.contacts"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<common-form-control
|
||||||
|
v-for="(option, optIdx) in contactsOptions"
|
||||||
|
:key="`${index}-${optIdx}`"
|
||||||
|
:model="contact"
|
||||||
|
:option="option"
|
||||||
|
:prop="`contacts.${index}.${option.prop}`"
|
||||||
|
/>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
@click.prevent="deleteContact(index)"
|
||||||
|
>
|
||||||
|
Delete
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
#buttons="{form}"
|
#buttons="{form}"
|
||||||
>
|
>
|
||||||
<el-button @click="form.resetFields()">
|
<el-button @click="form.resetFields()">
|
||||||
自定义按钮
|
重置
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</common-form>
|
</common-form>
|
||||||
|
|||||||
Reference in New Issue
Block a user