Browse Source

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

xingyu 1 năm trước cách đây
mục cha
commit
1df0fd1bf8

+ 75 - 2
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben/views/data.ts.vm

@@ -74,7 +74,7 @@ export const searchFormSchema: FormSchema[] = [
 #end
 ]
 
-export const formSchema: FormSchema[] = [
+export const createFormSchema: FormSchema[] = [
   {
     label: '编号',
     field: 'id',
@@ -82,7 +82,7 @@ export const formSchema: FormSchema[] = [
     component: 'Input'
   },
 #foreach($column in $columns)
-#if ($column.createOperation || $column.updateOperation)
+#if ($column.createOperation)
   #set ($dictType = $column.dictType)
   #set ($javaField = $column.javaField)
   #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
@@ -146,3 +146,76 @@ export const formSchema: FormSchema[] = [
 #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
+]

+ 2 - 2
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben/views/form.vue.vm

@@ -9,7 +9,7 @@ import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { BasicForm, useForm } from '@/components/Form'
 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}'
 
 const { t } = useI18n()
@@ -20,7 +20,7 @@ const isUpdate = ref(true)
 const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
   labelWidth: 120,
   baseColProps: { span: 24 },
-  schemas: formSchema,
+  schemas: isUpdate? updateFormSchema : createFormSchema,
   showActionButtonGroup: false,
   actionColOptions: { span: 23 }
 })