2025-01-20 11:43:19 +08:00
|
|
|
import type { FormSchemaGetter } from '#/adapter/form';
|
|
|
|
|
2024-09-24 10:18:07 +08:00
|
|
|
import { getPopupContainer } from '@vben/utils';
|
|
|
|
|
2025-01-20 11:43:19 +08:00
|
|
|
import { z } from '#/adapter/form';
|
2024-09-24 10:18:07 +08:00
|
|
|
|
|
|
|
export const formSchema: FormSchemaGetter = () => [
|
|
|
|
{
|
|
|
|
component: 'Divider',
|
|
|
|
componentProps: {
|
|
|
|
orientation: 'left',
|
|
|
|
},
|
|
|
|
fieldName: 'divider1',
|
|
|
|
formItemClass: 'col-span-2',
|
|
|
|
label: '基本信息',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'tableName',
|
|
|
|
label: '表名称',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'tableComment',
|
|
|
|
label: '表描述',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'className',
|
|
|
|
label: '实体类名称',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'functionAuthor',
|
|
|
|
label: '作者',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Divider',
|
|
|
|
componentProps: {
|
|
|
|
orientation: 'left',
|
|
|
|
},
|
|
|
|
fieldName: 'divider2',
|
|
|
|
formItemClass: 'col-span-2',
|
|
|
|
label: '生成信息',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Select',
|
|
|
|
componentProps: {
|
|
|
|
allowClear: false,
|
|
|
|
getPopupContainer,
|
|
|
|
options: [
|
|
|
|
{ label: '单表(增删改查)', value: 'crud' },
|
|
|
|
{ label: '树表(增删改查)', value: 'tree' },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
defaultValue: 'crud',
|
|
|
|
fieldName: 'tplCategory',
|
|
|
|
label: '模板类型',
|
|
|
|
rules: 'selectRequired',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Select',
|
|
|
|
componentProps: {
|
|
|
|
getPopupContainer,
|
|
|
|
},
|
|
|
|
dependencies: {
|
|
|
|
show: (values) => values.tplCategory === 'tree',
|
|
|
|
triggerFields: ['tplCategory'],
|
|
|
|
},
|
|
|
|
fieldName: 'treeCode',
|
|
|
|
helpMessage: '树节点显示的编码字段名, 如: dept_id (相当于id)',
|
|
|
|
label: '树编码字段',
|
|
|
|
rules: 'selectRequired',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Select',
|
|
|
|
componentProps: {
|
|
|
|
allowClear: false,
|
|
|
|
},
|
|
|
|
dependencies: {
|
|
|
|
show: (values) => values.tplCategory === 'tree',
|
|
|
|
triggerFields: ['tplCategory'],
|
|
|
|
},
|
|
|
|
fieldName: 'treeParentCode',
|
|
|
|
help: '树节点显示的父编码字段名, 如: parent_Id (相当于parentId)',
|
|
|
|
label: '树父编码字段',
|
|
|
|
rules: 'selectRequired',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Select',
|
|
|
|
componentProps: {
|
|
|
|
allowClear: false,
|
|
|
|
},
|
|
|
|
dependencies: {
|
|
|
|
show: (values) => values.tplCategory === 'tree',
|
|
|
|
triggerFields: ['tplCategory'],
|
|
|
|
},
|
|
|
|
fieldName: 'treeName',
|
|
|
|
help: '树节点的显示名称字段名, 如: dept_name (相当于label)',
|
|
|
|
label: '树名称字段',
|
|
|
|
rules: 'selectRequired',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'packageName',
|
|
|
|
help: '生成在哪个java包下, 例如 com.ruoyi.system',
|
|
|
|
label: '生成包路径',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'moduleName',
|
|
|
|
help: '可理解为子系统名,例如 system',
|
|
|
|
label: '生成模块名',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'businessName',
|
|
|
|
help: '可理解为功能英文名,例如 user',
|
|
|
|
label: '生成业务名',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
fieldName: 'functionName',
|
|
|
|
help: '用作类描述,例如 用户',
|
|
|
|
label: '生成功能名',
|
|
|
|
rules: 'required',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'TreeSelect',
|
|
|
|
componentProps: {
|
|
|
|
allowClear: false,
|
|
|
|
getPopupContainer,
|
|
|
|
},
|
|
|
|
defaultValue: 0,
|
|
|
|
fieldName: 'parentMenuId',
|
|
|
|
label: '上级菜单',
|
|
|
|
},
|
2024-09-26 11:56:43 +08:00
|
|
|
{
|
|
|
|
component: 'RadioGroup',
|
|
|
|
componentProps: {
|
|
|
|
buttonStyle: 'solid',
|
|
|
|
options: [
|
|
|
|
{ label: 'modal弹窗', value: 'modal' },
|
|
|
|
{ label: 'drawer抽屉', value: 'drawer' },
|
|
|
|
],
|
|
|
|
optionType: 'button',
|
|
|
|
},
|
2024-10-01 11:23:35 +08:00
|
|
|
help: '自定义功能, 需要后端支持',
|
2024-09-26 11:56:43 +08:00
|
|
|
defaultValue: 'modal',
|
|
|
|
fieldName: 'popupComponent',
|
|
|
|
label: '弹窗组件类型',
|
|
|
|
},
|
2024-09-24 10:18:07 +08:00
|
|
|
{
|
|
|
|
component: 'RadioGroup',
|
|
|
|
componentProps: {
|
|
|
|
buttonStyle: 'solid',
|
|
|
|
options: [
|
|
|
|
{ label: 'zip压缩包', value: '0' },
|
|
|
|
{ label: '自定义路径', value: '1' },
|
|
|
|
],
|
|
|
|
optionType: 'button',
|
|
|
|
},
|
|
|
|
defaultValue: '0',
|
|
|
|
fieldName: 'genType',
|
|
|
|
help: '默认为zip压缩包下载, 也可以自定义生成路径',
|
|
|
|
label: '生成代码方式',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Input',
|
|
|
|
defaultValue: '/',
|
|
|
|
dependencies: {
|
|
|
|
show: (model) => model.genType === '1',
|
|
|
|
triggerFields: ['genType'],
|
|
|
|
},
|
|
|
|
fieldName: 'genPath',
|
|
|
|
help: '输入绝对路径, 不支持"./"相对路径',
|
|
|
|
label: '代码生成路径',
|
|
|
|
rules: z
|
|
|
|
.string()
|
|
|
|
.regex(/^(?:[a-z]:)?(?:\/|(?:\\|\/)[^\\/:*?"<>|\r\n]+)*(?:\\|\/)?$/i, {
|
|
|
|
message: '请输入合法的路径',
|
|
|
|
}),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
component: 'Textarea',
|
|
|
|
fieldName: 'remark',
|
|
|
|
formItemClass: 'col-span-2 items-baseline',
|
|
|
|
label: '备注',
|
|
|
|
},
|
|
|
|
];
|