跳到主要内容

使用Antd Vue原生Form

当封装的BaseForm无法满足实际业务需求时可以使用antd vue 原生form对象进行页面布局具体用法参考Form用法

1.配合BasicDrawer 用法示例

<BasicDrawer v-bind="$attrs" @register="registerDrawer" title="添加用户" width="500px" @ok="handleSubmit" destroyOnClose showFooter>
<a-form ref="formRef" :model="formModel">
<a-form-item label="用户名" name="routerId">
<a-input v-model:value="router.routerId" placeholder="请输入用户名"/>
</a-form-item>
</a-form>
</BasicDrawer>

<script lang="ts" setup>
const formRef = ref();
let formModel= reactive({});

const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
isUpdate.value = !!data?.isUpdate;
setDrawerProps({ confirmLoading: false });
if (unref(isUpdate)) {
formModel= Object.assign(formModel, data.record);
}
});
/**
* 提交表单
*/
async function handleSubmit() {
await formRef.value.validate().then(() => {
try {
setDrawerProps({ confirmLoading: true })
//提交表单
saveOrUpdateRoute({ formModel: formModel}).then(() => {
//刷新列表
emit('success');
closeDrawer();
});
} finally {
setDrawerProps({ confirmLoading: false });
}
});
}
</script>

2.配合BasicModal 用法示例

<BasicModal v-bind="$attrs" @register="registerModal" title="添加用户" @ok="handleSubmit" width="70%">
<a-form ref="formRef" :model="formModel">
<a-form-item label="用户名" name="routerId">
<a-input v-model:value="router.routerId" placeholder="请输入用户名"/>
</a-form-item>
</a-form>
</BasicModal >

<script lang="ts" setup>
const formRef = ref();
let formModel= reactive({});

const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
setModalProps({confirmLoading: false});
reset()
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
formModel= Object.assign(formModel, data.record);
}
});

/**
* 提交表单
*/
async function handleSubmit() {
await formRef.value.validate().then(() => {
try {
setModalProps({ confirmLoading: true })
//提交表单
saveOrUpdateRoute({ formModel: formModel}).then(() => {
//刷新列表
emit('success');
closeModal();
});
} finally {
setModalProps({ confirmLoading: false });
}
});
}
</script>