admin-vben5/apps/web-antd/src/views/tool/gen/edit-steps/basic.tsx

229 lines
5.3 KiB
TypeScript
Raw Normal View History

2024-09-24 10:18:07 +08:00
import { getPopupContainer } from '@vben/utils';
import { type FormSchemaGetter, z } from '#/adapter';
export const formSchema: FormSchemaGetter = () => [
{
component: 'Divider',
componentProps: {
orientation: 'left',
},
fieldName: 'divider1',
formItemClass: 'col-span-2',
label: '基本信息',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
fieldName: 'tableName',
label: '表名称',
rules: 'required',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
fieldName: 'tableComment',
label: '表描述',
rules: 'required',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
fieldName: 'className',
label: '实体类名称',
rules: 'required',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
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,
placeholder: '请选择',
},
dependencies: {
show: (values) => values.tplCategory === 'tree',
triggerFields: ['tplCategory'],
},
fieldName: 'treeCode',
helpMessage: '树节点显示的编码字段名, 如: dept_id (相当于id)',
label: '树编码字段',
rules: 'selectRequired',
},
{
component: 'Select',
componentProps: {
allowClear: false,
placeholder: '请选择',
},
dependencies: {
show: (values) => values.tplCategory === 'tree',
triggerFields: ['tplCategory'],
},
fieldName: 'treeParentCode',
help: '树节点显示的父编码字段名, 如: parent_Id (相当于parentId)',
label: '树父编码字段',
rules: 'selectRequired',
},
{
component: 'Select',
componentProps: {
allowClear: false,
placeholder: '请选择',
},
dependencies: {
show: (values) => values.tplCategory === 'tree',
triggerFields: ['tplCategory'],
},
fieldName: 'treeName',
help: '树节点的显示名称字段名, 如: dept_name (相当于label)',
label: '树名称字段',
rules: 'selectRequired',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
fieldName: 'packageName',
help: '生成在哪个java包下, 例如 com.ruoyi.system',
label: '生成包路径',
rules: 'required',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
fieldName: 'moduleName',
help: '可理解为子系统名,例如 system',
label: '生成模块名',
rules: 'required',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
fieldName: 'businessName',
help: '可理解为功能英文名,例如 user',
label: '生成业务名',
rules: 'required',
},
{
component: 'Input',
componentProps: {
placeholder: '请输入',
},
fieldName: 'functionName',
help: '用作类描述,例如 用户',
label: '生成功能名',
rules: 'required',
},
{
component: 'TreeSelect',
componentProps: {
allowClear: false,
getPopupContainer,
placeholder: '请选择',
},
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',
},
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',
componentProps: {
placeholder: '请输入',
},
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',
componentProps: {
placeholder: '请输入',
},
fieldName: 'remark',
formItemClass: 'col-span-2 items-baseline',
label: '备注',
},
];