fix: vue3 vben 代码生成支持创建和更新两种表单

This commit is contained in:
xingyu 2023-04-27 13:10:32 +08:00
parent 28f4456bbe
commit 1df0fd1bf8
2 changed files with 77 additions and 4 deletions

View File

@ -74,7 +74,7 @@ export const searchFormSchema: FormSchema[] = [
#end #end
] ]
export const formSchema: FormSchema[] = [ export const createFormSchema: FormSchema[] = [
{ {
label: '编号', label: '编号',
field: 'id', field: 'id',
@ -82,7 +82,7 @@ export const formSchema: FormSchema[] = [
component: 'Input' component: 'Input'
}, },
#foreach($column in $columns) #foreach($column in $columns)
#if ($column.createOperation || $column.updateOperation) #if ($column.createOperation)
#set ($dictType = $column.dictType) #set ($dictType = $column.dictType)
#set ($javaField = $column.javaField) #set ($javaField = $column.javaField)
#set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
@ -146,3 +146,76 @@ export const formSchema: FormSchema[] = [
#end #end
#end #end
] ]
export const updateFormSchema: FormSchema[] = [
{
label: '编号',
field: 'id',
show: false,
component: 'Input'
},
#foreach($column in $columns)
#if ($column.updateOperation)
#set ($dictType = $column.dictType)
#set ($javaField = $column.javaField)
#set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#set ($comment = $column.columnComment)
#if (!$column.primaryKey)## 忽略主键,不用在表单里
{
label: '${comment}',
field: '${javaField}',
#if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键
required: true,
#end
#if ($column.htmlType == "input")
component: 'Input'
#elseif($column.htmlType == "imageUpload")## 图片上传
component: 'Upload'
#elseif($column.htmlType == "fileUpload")## 文件上传
component: 'Upload'
#elseif($column.htmlType == "editor")## 文本编辑器
component: 'InputTextArea'
#elseif($column.htmlType == "select")## 下拉框
component: 'Select',
componentProps: {
#if ("" != $dictType)## 有数据字典
#if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
#set ($dictMethod = "getIntDictOptions")
#elseif ($javaType == "String")
#set ($dictMethod = "getStrDictOptions")
#elseif ($javaType == "Boolean")
#set ($dictMethod = "getBoolDictOptions")
#end
options: $dictMethod(DICT_TYPE.$dictType.toUpperCase())
#else##没数据字典
options:[]
#end
}
#elseif($column.htmlType == "checkbox")## 多选框
component: 'Checkbox',
componentProps: {
#if ("" != $dictType)## 有数据字典
options: getIntDictOptions(DICT_TYPE.COMMON_STATUS)
#else##没数据字典
options:[]
#end
}
#elseif($column.htmlType == "radio")## 单选框
component: 'Radio',
componentProps: {
#if ("" != $dictType)## 有数据字典
options: getIntDictOptions(DICT_TYPE.COMMON_STATUS)
#else##没数据字典
options:[]
#end
}
#elseif($column.htmlType == "datetime")## 时间框
component: 'DatePicker'
#elseif($column.htmlType == "textarea")## 文本域
component: 'InputTextArea'
#end
},
#end
#end
#end
]

View File

@ -9,7 +9,7 @@ import { useI18n } from '@/hooks/web/useI18n'
import { useMessage } from '@/hooks/web/useMessage' import { useMessage } from '@/hooks/web/useMessage'
import { BasicForm, useForm } from '@/components/Form' import { BasicForm, useForm } from '@/components/Form'
import { BasicModal, useModalInner } from '@/components/Modal' import { BasicModal, useModalInner } from '@/components/Modal'
import { formSchema } from './${classNameVar}.data' import { createFormSchema, updateFormSchema } from './${classNameVar}.data'
import { create${simpleClassName}, get${simpleClassName}, update${simpleClassName} } from '@/api/${table.moduleName}/${classNameVar}' import { create${simpleClassName}, get${simpleClassName}, update${simpleClassName} } from '@/api/${table.moduleName}/${classNameVar}'
const { t } = useI18n() const { t } = useI18n()
@ -20,7 +20,7 @@ const isUpdate = ref(true)
const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({ const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
labelWidth: 120, labelWidth: 120,
baseColProps: { span: 24 }, baseColProps: { span: 24 },
schemas: formSchema, schemas: isUpdate? updateFormSchema : createFormSchema,
showActionButtonGroup: false, showActionButtonGroup: false,
actionColOptions: { span: 23 } actionColOptions: { span: 23 }
}) })