Files
lgp-admin-plus/apps/web-antd/src/views/system/menu/config/form.ts

181 lines
3.8 KiB
TypeScript

import type { VbenFormProps } from '#/adapter/form';
import { getMenuTreeOptionSelect } from '#/views/system/menu/api';
export const modalFormProps: VbenFormProps = {
wrapperClass: 'grid-cols-12', // 24栅格,
commonConfig: {
formItemClass: 'col-span-6',
// 所有表单项
componentProps: {
class: 'w-full',
},
},
// handleSubmit: onSubmit,
layout: 'horizontal',
schema: [
{
component: 'VbenInput',
fieldName: 'id',
label: 'ID',
dependencies: {
show: false,
triggerFields: ['id'],
},
},
{
component: 'VbenInput',
componentProps: {
placeholder: '请输入菜单标题',
},
fieldName: 'title',
label: '菜单标题',
rules: 'required',
},
{
component: 'ApiTreeSelect',
// 对应组件的参数
componentProps: {
childrenField: 'children',
labelField: 'title',
valueField: 'id',
// 菜单接口
api: getMenuTreeOptionSelect,
},
defaultValue: 0,
fieldName: 'pid',
label: '父级菜单',
rules: 'required',
},
{
component: 'VbenInput',
componentProps: {
placeholder: '请输入菜单图标',
},
fieldName: 'icon',
label: '菜单图标',
rules: 'required',
},
// {
// component: 'IconPicker',
// componentProps: {
// placeholder: '请输入菜单图标',
// },
// fieldName: 'icon',
// label: '菜单图标',
// rules: 'required',
// },
{
component: 'VbenInput',
componentProps: {
placeholder: '请输入路由名称',
},
fieldName: 'name',
label: '路由名称',
rules: 'required',
},
{
component: 'VbenInput',
componentProps: {
placeholder: '请输入访问路由',
},
fieldName: 'path',
label: '访问路由',
rules: 'required',
},
{
component: 'InputNumber',
componentProps: {
placeholder: '请输入排序',
},
defaultValue: 0,
fieldName: 'sort',
label: '排序',
rules: 'required',
},
{
component: 'RadioGroup',
componentProps: {
options: [
{
label: '开启',
value: 0,
},
{
label: '关闭',
value: 1,
},
],
},
defaultValue: 1,
fieldName: 'keep_alive',
label: '缓存',
rules: 'required',
},
{
component: 'RadioGroup',
componentProps: {
options: [
{
label: '展示',
value: 0,
},
{
label: '隐藏',
value: 1,
},
],
},
defaultValue: 0,
fieldName: 'hide_in_menu',
label: '是否展示',
rules: 'required',
},
{
component: 'RadioGroup',
componentProps: {
options: [
{
label: '是',
value: 0,
},
{
label: '否',
value: 1,
},
],
},
defaultValue: 1,
fieldName: 'affix_tab',
label: '是否置顶',
rules: 'required',
},
{
component: 'VbenInput',
componentProps: {
placeholder: '请输入组件地址',
},
defaultValue: 'BasicLayout',
fieldName: 'component',
label: '组件地址',
},
{
component: 'VbenInput',
componentProps: {
placeholder: '请输入重定向地址',
},
fieldName: 'redirect',
label: '重定向地址',
},
{
component: 'VbenInput',
componentProps: {
placeholder: '请输入携带参数',
},
fieldName: 'query',
label: '携带参数',
},
],
showDefaultActions: false,
};