当封装的BaseForm无法满足实际业务需求时可以使用antd vue 原生form对象进行页面布局具体用法参考[Form用法](https://2x.antdv.com/components/form-cn) 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> ~~~