106 lines
2.7 KiB
Vue
106 lines
2.7 KiB
Vue
|
<cn>
|
|||
|
#### 弹出层中的新建表单
|
|||
|
当用户访问一个展示了某个列表的页面,想新建一项但又不想跳转页面时,可以用 Modal 弹出一个表单,用户填写必要信息后创建新的项。
|
|||
|
</cn>
|
|||
|
|
|||
|
<us>
|
|||
|
#### Form in Modal to Create
|
|||
|
When user visit a page with a list of items, and want to create a new item. The page can popup a form in Modal, then let user fill in the form to create an item.
|
|||
|
</us>
|
|||
|
|
|||
|
|
|||
|
<script>
|
|||
|
import { Form } from 'vue-antd-ui'
|
|||
|
|
|||
|
const CollectionCreateForm = Form.create()(
|
|||
|
{
|
|||
|
props: ['visible'],
|
|||
|
render () {
|
|||
|
const { visible, form } = this
|
|||
|
const { getFieldDecorator } = form
|
|||
|
return (
|
|||
|
<a-modal
|
|||
|
visible={visible}
|
|||
|
title='Create a new collection'
|
|||
|
okText='Create'
|
|||
|
onCancel={() => { this.$emit('cancel') }}
|
|||
|
onOk={() => { this.$emit('create') }}
|
|||
|
>
|
|||
|
<a-form layout='vertical'>
|
|||
|
<a-form-item label='Title'>
|
|||
|
{getFieldDecorator('title', {
|
|||
|
rules: [{ required: true, message: 'Please input the title of collection!' }],
|
|||
|
})(
|
|||
|
<a-input />
|
|||
|
)}
|
|||
|
</a-form-item>
|
|||
|
<a-form-item label='Description'>
|
|||
|
{getFieldDecorator('description')(<a-input type='textarea' />)}
|
|||
|
</a-form-item>
|
|||
|
<a-form-item className='collection-create-form_last-form-item'>
|
|||
|
{getFieldDecorator('modifier', {
|
|||
|
initialValue: 'public',
|
|||
|
})(
|
|||
|
<a-radio-group>
|
|||
|
<a-radio value='public'>Public</a-radio>
|
|||
|
<a-radio value='private'>Private</a-radio>
|
|||
|
</a-radio-group>
|
|||
|
)}
|
|||
|
</a-form-item>
|
|||
|
</a-form>
|
|||
|
</a-modal>
|
|||
|
)
|
|||
|
},
|
|||
|
}
|
|||
|
)
|
|||
|
|
|||
|
export default {
|
|||
|
data () {
|
|||
|
return {
|
|||
|
visible: false,
|
|||
|
}
|
|||
|
},
|
|||
|
methods: {
|
|||
|
showModal () {
|
|||
|
this.visible = true
|
|||
|
},
|
|||
|
handleCancel () {
|
|||
|
this.visible = false
|
|||
|
},
|
|||
|
handleCreate () {
|
|||
|
const form = this.formRef.form
|
|||
|
form.validateFields((err, values) => {
|
|||
|
if (err) {
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
console.log('Received values of form: ', values)
|
|||
|
form.resetFields()
|
|||
|
this.visible = false
|
|||
|
})
|
|||
|
},
|
|||
|
saveFormRef (formRef) {
|
|||
|
this.formRef = formRef
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
render () {
|
|||
|
return (
|
|||
|
<div>
|
|||
|
<a-button type='primary' onClick={this.showModal}>New Collection</a-button>
|
|||
|
<CollectionCreateForm
|
|||
|
wrappedComponentRef={this.saveFormRef}
|
|||
|
visible={this.visible}
|
|||
|
onCancel={this.handleCancel}
|
|||
|
onCreate={this.handleCreate}
|
|||
|
/>
|
|||
|
</div>
|
|||
|
)
|
|||
|
},
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|