mirror of
https://gitee.com/ant-design-vue/ant-design-vue.git
synced 2024-12-03 12:37:42 +08:00
156 lines
4.4 KiB
Vue
156 lines
4.4 KiB
Vue
<docs>
|
|
---
|
|
order: 4
|
|
title:
|
|
zh-CN: 抽屉表单
|
|
en-US: Submit form in drawer
|
|
---
|
|
|
|
## zh-CN
|
|
|
|
在抽屉中使用表单。
|
|
|
|
## en-US
|
|
|
|
Use form in drawer with submit button.
|
|
|
|
</docs>
|
|
|
|
<template>
|
|
<a-button type="primary" @click="showDrawer">
|
|
<template #icon><PlusOutlined /></template>
|
|
New account
|
|
</a-button>
|
|
<a-drawer
|
|
title="Create a new account"
|
|
:width="720"
|
|
:visible="visible"
|
|
:body-style="{ paddingBottom: '80px' }"
|
|
:footer-style="{ textAlign: 'right' }"
|
|
@close="onClose"
|
|
>
|
|
<a-form :model="form" :rules="rules" layout="vertical">
|
|
<a-row :gutter="16">
|
|
<a-col :span="12">
|
|
<a-form-item label="Name" name="name">
|
|
<a-input v-model:value="form.name" placeholder="Please enter user name" />
|
|
</a-form-item>
|
|
</a-col>
|
|
<a-col :span="12">
|
|
<a-form-item label="Url" name="url">
|
|
<a-input
|
|
v-model:value="form.url"
|
|
style="width: 100%"
|
|
addon-before="http://"
|
|
addon-after=".com"
|
|
placeholder="please enter url"
|
|
/>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-row>
|
|
<a-row :gutter="16">
|
|
<a-col :span="12">
|
|
<a-form-item label="Owner" name="owner">
|
|
<a-select v-model:value="form.owner" placeholder="Please a-s an owner">
|
|
<a-select-option value="xiao">Xiaoxiao Fu</a-select-option>
|
|
<a-select-option value="mao">Maomao Zhou</a-select-option>
|
|
</a-select>
|
|
</a-form-item>
|
|
</a-col>
|
|
<a-col :span="12">
|
|
<a-form-item label="Type" name="type">
|
|
<a-select v-model:value="form.type" placeholder="Please choose the type">
|
|
<a-select-option value="private">Private</a-select-option>
|
|
<a-select-option value="public">Public</a-select-option>
|
|
</a-select>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-row>
|
|
<a-row :gutter="16">
|
|
<a-col :span="12">
|
|
<a-form-item label="Approver" name="approver">
|
|
<a-select v-model:value="form.approver" placeholder="Please choose the approver">
|
|
<a-select-option value="jack">Jack Ma</a-select-option>
|
|
<a-select-option value="tom">Tom Liu</a-select-option>
|
|
</a-select>
|
|
</a-form-item>
|
|
</a-col>
|
|
<a-col :span="12">
|
|
<a-form-item label="DateTime" name="dateTime">
|
|
<a-date-picker
|
|
v-model:value="form.dateTime"
|
|
style="width: 100%"
|
|
:get-popup-container="trigger => trigger.parentElement"
|
|
/>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-row>
|
|
<a-row :gutter="16">
|
|
<a-col :span="24">
|
|
<a-form-item label="Description" name="description">
|
|
<a-textarea
|
|
v-model:value="form.description"
|
|
:rows="4"
|
|
placeholder="please enter url description"
|
|
/>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-row>
|
|
</a-form>
|
|
<template #extra>
|
|
<a-space>
|
|
<a-button @click="onClose">Cancel</a-button>
|
|
<a-button type="primary" @click="onClose">Submit</a-button>
|
|
</a-space>
|
|
</template>
|
|
</a-drawer>
|
|
</template>
|
|
<script lang="ts">
|
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
|
import { defineComponent, reactive, ref } from 'vue';
|
|
import type { Rule } from 'ant-design-vue/es/form';
|
|
export default defineComponent({
|
|
components: {
|
|
PlusOutlined,
|
|
},
|
|
setup() {
|
|
const form = reactive({
|
|
name: '',
|
|
url: '',
|
|
owner: '',
|
|
type: '',
|
|
approver: '',
|
|
dateTime: null,
|
|
description: '',
|
|
});
|
|
|
|
const rules: Record<string, Rule[]> = {
|
|
name: [{ required: true, message: 'Please enter user name' }],
|
|
url: [{ required: true, message: 'please enter url' }],
|
|
owner: [{ required: true, message: 'Please select an owner' }],
|
|
type: [{ required: true, message: 'Please choose the type' }],
|
|
approver: [{ required: true, message: 'Please choose the approver' }],
|
|
dateTime: [{ required: true, message: 'Please choose the dateTime', type: 'object' }],
|
|
description: [{ required: true, message: 'Please enter url description' }],
|
|
};
|
|
|
|
const visible = ref<boolean>(false);
|
|
|
|
const showDrawer = () => {
|
|
visible.value = true;
|
|
};
|
|
|
|
const onClose = () => {
|
|
visible.value = false;
|
|
};
|
|
return {
|
|
form,
|
|
rules,
|
|
visible,
|
|
showDrawer,
|
|
onClose,
|
|
};
|
|
},
|
|
});
|
|
</script>
|