committed by
GitHub
6 changed files with 126 additions and 89 deletions
@ -0,0 +1,111 @@ |
|||||
|
<script lang="ts" setup> |
||||
|
import { h } from 'vue'; |
||||
|
|
||||
|
import { Page } from '@vben/common-ui'; |
||||
|
|
||||
|
import { Card } from 'ant-design-vue'; |
||||
|
|
||||
|
import { useVbenForm } from '#/adapter/form'; |
||||
|
|
||||
|
import DocButton from '../doc-button.vue'; |
||||
|
|
||||
|
const [CustomLayoutForm] = useVbenForm({ |
||||
|
// 所有表单项共用,可单独在表单内覆盖 |
||||
|
commonConfig: { |
||||
|
// 所有表单项 |
||||
|
componentProps: { |
||||
|
class: 'w-full', |
||||
|
}, |
||||
|
}, |
||||
|
layout: 'horizontal', |
||||
|
schema: [ |
||||
|
{ |
||||
|
component: 'Select', |
||||
|
fieldName: 'field1', |
||||
|
label: '字符串', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'TreeSelect', |
||||
|
fieldName: 'field2', |
||||
|
label: '字符串', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Mentions', |
||||
|
fieldName: 'field3', |
||||
|
label: '字符串', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Input', |
||||
|
fieldName: 'field4', |
||||
|
label: '字符串', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'InputNumber', |
||||
|
fieldName: 'field5', |
||||
|
// 从第三列开始 相当于中间空了一列 |
||||
|
formItemClass: 'col-start-3', |
||||
|
label: '前面空了一列', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Divider', |
||||
|
fieldName: '_divider', |
||||
|
formItemClass: 'col-span-3', |
||||
|
hideLabel: true, |
||||
|
renderComponentContent: () => { |
||||
|
return { |
||||
|
default: () => h('div', '分割线'), |
||||
|
}; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Textarea', |
||||
|
fieldName: 'field6', |
||||
|
// 占满三列空间 基线对齐 |
||||
|
formItemClass: 'col-span-3 items-baseline', |
||||
|
label: '占满三列', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Input', |
||||
|
fieldName: 'field7', |
||||
|
// 占满2列空间 从第二列开始 相当于前面空了一列 |
||||
|
formItemClass: 'col-span-2 col-start-2', |
||||
|
label: '占满2列', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Input', |
||||
|
fieldName: 'field8', |
||||
|
// 左右留空 |
||||
|
formItemClass: 'col-start-2', |
||||
|
label: '左右留空', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'InputPassword', |
||||
|
fieldName: 'field9', |
||||
|
formItemClass: 'col-start-1', |
||||
|
label: '字符串', |
||||
|
}, |
||||
|
], |
||||
|
// 一共三列 |
||||
|
wrapperClass: 'grid-cols-3', |
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<Page |
||||
|
content-class="flex flex-col gap-4" |
||||
|
description="使用tailwind自定义表单项的布局" |
||||
|
title="表单自定义布局" |
||||
|
> |
||||
|
<template #description> |
||||
|
<div class="text-muted-foreground"> |
||||
|
<p>使用tailwind自定义表单项的布局,使用Divider分割表单。</p> |
||||
|
</div> |
||||
|
</template> |
||||
|
<template #extra> |
||||
|
<DocButton class="mb-2" path="/components/common-ui/vben-form" /> |
||||
|
</template> |
||||
|
<Card title="使用tailwind自定义布局"> |
||||
|
<CustomLayoutForm /> |
||||
|
</Card> |
||||
|
</Page> |
||||
|
</template> |
||||
Loading…
Reference in new issue