diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm
index 69da81493..7d13b5dec 100644
--- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm
+++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm
@@ -1,35 +1,35 @@
 import { useAxios } from '@/hooks/web/useAxios'
-import { ${simpleClassName}VO,${simpleClassName}PageReqVO,${simpleClassName}ExcelReqVO } from './types'
+import { ${simpleClassName}VO, ${simpleClassName}PageReqVO, ${simpleClassName}ExcelReqVO } from './types'
 
 const request = useAxios()
 
 #set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}")
 // 查询${table.classComment}列表
 export const get${simpleClassName}PageApi = async (params: ${simpleClassName}PageReqVO) => {
-    return await request.get({ url: '${baseURL}/page', params })
+  return await request.get({ url: '${baseURL}/page', params })
 }
 
 // 查询${table.classComment}详情
 export const get${simpleClassName}Api = async (id: number) => {
-    return await request.get({ url: '${baseURL}/get?id=' + id })
+  return await request.get({ url: '${baseURL}/get?id=' + id })
 }
 
 // 新增${table.classComment}
 export const create${simpleClassName}Api = async (data: ${simpleClassName}VO) => {
-    return await request.post({ url: '${baseURL}/create', data })
+  return await request.post({ url: '${baseURL}/create', data })
 }
 
 // 修改${table.classComment}
 export const update${simpleClassName}Api = async (data: ${simpleClassName}VO) => {
-    return await request.put({ url: '${baseURL}/update', data })
+  return await request.put({ url: '${baseURL}/update', data })
 }
 
 // 删除${table.classComment}
 export const delete${simpleClassName}Api = async (id: number) => {
-    return await request.delete({ url: '${baseURL}/delete?id=' + id })
+  return await request.delete({ url: '${baseURL}/delete?id=' + id })
 }
 
 // 导出${table.classComment} Excel
 export const export${simpleClassName}Api = async (params: ${simpleClassName}ExcelReqVO) => {
-    return await request.download({ url: '${baseURL}/export-excel', params })
+  return await request.download({ url: '${baseURL}/export-excel', params })
 }
diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm
index d5b5d937d..54ab47e02 100644
--- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm
+++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm
@@ -2,9 +2,11 @@ export type ${simpleClassName}VO = {
 #foreach ($column in $columns)
 #if ($column.createOperation || $column.updateOperation)
 #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")
-    ${column.javaField}: number
+  ${column.javaField}: number
+#elseif(${column.javaType.toLowerCase()} == "date")
+  ${column.javaField}: string
 #else
-    ${column.javaField}: ${column.javaType.toLowerCase()}
+  ${column.javaField}: ${column.javaType.toLowerCase()}
 #end
 #end
 #end
@@ -14,9 +16,11 @@ export type ${simpleClassName}PageReqVO = {
 #foreach ($column in $columns)
 #if (${column.listOperation})##查询操作
 #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")
-    ${column.javaField}: number
+  ${column.javaField}: number
+#elseif(${column.javaType.toLowerCase()} == "date")
+  ${column.javaField}: string
 #else
-    ${column.javaField}: ${column.javaType.toLowerCase()}
+  ${column.javaField}: ${column.javaType.toLowerCase()}
 #end
 #end
 #end
@@ -26,9 +30,11 @@ export type ${simpleClassName}ExcelReqVO = {
 #foreach ($column in $columns)
 #if (${column.listOperation})##查询操作
 #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")
-    ${column.javaField}: number
+  ${column.javaField}: number
+#elseif(${column.javaType.toLowerCase()} == "date")
+  ${column.javaField}: string
 #else
-    ${column.javaField}: ${column.javaType.toLowerCase()}
+  ${column.javaField}: ${column.javaType.toLowerCase()}
 #end
 #end
 #end
diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm
index 965fe49ab..fa64bc883 100644
--- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm
+++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm
@@ -8,104 +8,104 @@ export const rules = reactive({
 #foreach ($column in $columns)
 #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键
 #set($comment=$column.columnComment)
-    $column.javaField: [{ required: true, message: "${comment}不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end }],
+  $column.javaField: [{ required: true, message: '${comment}不能为空', trigger: #if($column.htmlType == "select")'change'#else'blur'#end }],
 #end
 #end
 })
 // CrudSchema
 const crudSchemas = reactive<CrudSchema[]>([
 #foreach($column in $columns)
-    #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation)
-    #set ($dictType = $column.dictType)
-    {
-      label: '${column.columnComment}',
-      field: '${column.javaField}',
-      #if ("" != $dictType)## 有数据字典
-      dictType: DICT_TYPE.$dictType.toUpperCase(),
-      #end
-      #if($column.primaryKey)
-      type: 'index',
-      form: {
-         show: false
-      },
-      detail: {
-         show: false
+  #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation)
+  #set ($dictType = $column.dictType)
+  {
+    label: '${column.columnComment}',
+    field: '${column.javaField}',
+    #if ("" != $dictType)## 有数据字典
+    dictType: DICT_TYPE.$dictType.toUpperCase(),
+    #end
+    #if($column.primaryKey)
+    type: 'index',
+    form: {
+      show: false
+    },
+    detail: {
+      show: false
+    }
+    #else
+    #if (!$column.createOperation && !$column.updateOperation)
+    form: {
+      show: false
+    },
+    #elseif(!("" != $column.dictType))
+    form: {
+      show: true,
+      #if ($column.htmlType == "datetime")## 时间框
+      component: 'DatePicker',
+      componentProps: {
+        type: 'datetime',
+        valueFormat: 'YYYY-MM-DD HH:mm:ss'
       }
-      #else
-      #if (!$column.createOperation && !$column.updateOperation)
-      form: {
-         false
+      #elseif($column.htmlType == "editor")## 文本编辑器
+      component: 'Editor',
+      colProps: {
+        span: 24
       },
-      #elseif(!("" != $column.dictType))
-      form: {
-          show: true,
-          #if ($column.htmlType == "datetime")## 时间框
-          component: 'DatePicker',
-          componentProps: {
-              type: 'datetime',
-              valueFormat: 'YYYY-MM-DD HH:mm:ss'
-          }
-          #elseif($column.htmlType == "editor")## 文本编辑器
-          component: 'Editor',
-          colProps: {
-              span: 24
-          },
-          componentProps: {
-              valueHtml: ''
-          }
-          #elseif($column.htmlType == "textarea")## 文本框
-          component: 'Input',
-          componentProps: {
-              type: 'textarea',
-              rows: 4
-          },
-          colProps: {
-              span: 24
-          }
-          #end
-      },
-      #end
-      #if ($column.listOperationResult)
-      search: {
-         #if($column.htmlType == "input")
-         show: true
-         #else
-         #if($column.htmlType == "datetime")
-         show: true,
-         component: 'DatePicker',
-         componentProps: {
-             type: 'datetimerange',
-             valueFormat: 'YYYY-MM-DD HH:mm:ss'
-         }
-         #elseif($column.htmlType == "select" || $column.htmlType == "radio")
-         #if ("" == $dictType)## 没有数据字典
-         show: true,
-         component: 'Select',
-         componentProps: {
-             option: [{'','请选择字典生成'}]
-         }
-         #else
-         show: true
-         #end
-         #end
-         #end
+      componentProps: {
+        valueHtml: ''
+      }
+      #elseif($column.htmlType == "textarea")## 文本框
+      component: 'Input',
+      componentProps: {
+        type: 'textarea',
+        rows: 4
+      },
+      colProps: {
+        span: 24
       }
-      #end
       #end
     },
     #end
-#end
-    {
-        label: t('table.action'),
-        field: 'action',
-        width: '240px',
-        form: {
-            show: false
-        },
-        detail: {
-            show: false
-        }
+    #if ($column.listOperationResult)
+    search: {
+      #if($column.htmlType == "input")
+      show: true
+      #else
+      #if($column.htmlType == "datetime")
+      show: true,
+      component: 'DatePicker',
+      componentProps: {
+        type: 'datetimerange',
+        valueFormat: 'YYYY-MM-DD HH:mm:ss'
+      }
+      #elseif($column.htmlType == "select" || $column.htmlType == "radio")
+      #if ("" == $dictType)## 没有数据字典
+      show: true,
+      component: 'Select',
+      componentProps: {
+        option: [{'','请选择字典生成'}]
+      }
+      #else
+      show: true
+      #end
+      #end
+      #end
     }
+    #end
+    #end
+  },
+  #end
+#end
+  {
+    label: t('table.action'),
+    field: 'action',
+    width: '240px',
+    form: {
+      show: false
+    },
+    detail: {
+      show: false
+    }
+  }
 ])
 
 export const { allSchemas } = useCrudSchemas(crudSchemas)
\ No newline at end of file
diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
index ca4adc1a6..7a050b8bb 100644
--- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
+++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
@@ -1,92 +1,92 @@
 <script setup lang="ts">
-  import { ref, unref } from 'vue'
-  import dayjs from 'dayjs'
-  import { ElMessage } from 'element-plus'
-  import { DICT_TYPE } from '@/utils/dict'
-  import { useTable } from '@/hooks/web/useTable'
-  import { useI18n } from '@/hooks/web/useI18n'
-  import { FormExpose } from '@/components/Form'
-  import type { ${simpleClassName}VO } from '@/api/${table.moduleName}/${simpleClassName}/types'
-  import { rules, allSchemas } from './${simpleClassName}.data'
-  import * as ${simpleClassName}Api from '@/api/${table.moduleName}/${simpleClassName}'
-  const { t } = useI18n() // 国际化
+import { ref, unref } from 'vue'
+import dayjs from 'dayjs'
+import { ElMessage } from 'element-plus'
+import { DICT_TYPE } from '@/utils/dict'
+import { useTable } from '@/hooks/web/useTable'
+import { useI18n } from '@/hooks/web/useI18n'
+import { FormExpose } from '@/components/Form'
+import type { ${simpleClassName}VO } from '@/api/${table.moduleName}/${simpleClassName}/types'
+import { rules, allSchemas } from './${simpleClassName}.data'
+import * as ${simpleClassName}Api from '@/api/${table.moduleName}/${simpleClassName}'
+const { t } = useI18n() // 国际化
 
-  // ========== 列表相关 ==========
-  const { register, tableObject, methods } = useTable<${simpleClassName}VO>({
-    getListApi: ${simpleClassName}Api.get${simpleClassName}PageApi,
-    delListApi: ${simpleClassName}Api.delete${simpleClassName}Api,
-    exportListApi: ${simpleClassName}Api.export${simpleClassName}Api
-  })
-  const { getList, setSearchParams, delList, exportList } = methods
+// ========== 列表相关 ==========
+const { register, tableObject, methods } = useTable<${simpleClassName}VO>({
+  getListApi: ${simpleClassName}Api.get${simpleClassName}PageApi,
+  delListApi: ${simpleClassName}Api.delete${simpleClassName}Api,
+  exportListApi: ${simpleClassName}Api.export${simpleClassName}Api
+})
+const { getList, setSearchParams, delList, exportList } = methods
 
-  // ========== CRUD 相关 ==========
-  const actionLoading = ref(false) // 遮罩层
-  const actionType = ref('') // 操作按钮的类型
-  const dialogVisible = ref(false) // 是否显示弹出层
-  const dialogTitle = ref('edit') // 弹出层标题
-  const formRef = ref<FormExpose>() // 表单 Ref
+// ========== CRUD 相关 ==========
+const actionLoading = ref(false) // 遮罩层
+const actionType = ref('') // 操作按钮的类型
+const dialogVisible = ref(false) // 是否显示弹出层
+const dialogTitle = ref('edit') // 弹出层标题
+const formRef = ref<FormExpose>() // 表单 Ref
 
-  // 设置标题
-  const setDialogTile = (type: string) => {
-    dialogTitle.value = t('action.' + type)
-    actionType.value = type
-    dialogVisible.value = true
-  }
+// 设置标题
+const setDialogTile = (type: string) => {
+  dialogTitle.value = t('action.' + type)
+  actionType.value = type
+  dialogVisible.value = true
+}
 
-  // 新增操作
-  const handleCreate = () => {
-    setDialogTile('create')
-    // 重置表单
-    unref(formRef)?.getElFormRef()?.resetFields()
-  }
+// 新增操作
+const handleCreate = () => {
+  setDialogTile('create')
+  // 重置表单
+  unref(formRef)?.getElFormRef()?.resetFields()
+}
 
-  // 修改操作
-  const handleUpdate = async (row: ${simpleClassName}VO) => {
-    setDialogTile('update')
-    // 设置数据
-    const res = await ${simpleClassName}Api.get${simpleClassName}Api(row.id)
-    unref(formRef)?.setValues(res)
-  }
+// 修改操作
+const handleUpdate = async (row: ${simpleClassName}VO) => {
+  setDialogTile('update')
+  // 设置数据
+  const res = await ${simpleClassName}Api.get${simpleClassName}Api(row.id)
+  unref(formRef)?.setValues(res)
+}
 
-  // 提交按钮
-  const submitForm = async () => {
-    const elForm = unref(formRef)?.getElFormRef()
-    if (!elForm) return
-    elForm.validate(async (valid) => {
-      if (valid) {
-        actionLoading.value = true
-        // 提交请求
-        try {
-          const data = unref(formRef)?.formModel as ${simpleClassName}VO
-          if (actionType.value === 'create') {
-            await ${simpleClassName}Api.create${simpleClassName}Api(data)
-            ElMessage.success(t('common.createSuccess'))
-          } else {
-            await ${simpleClassName}Api.update${simpleClassName}Api(data)
-            ElMessage.success(t('common.updateSuccess'))
-          }
-          // 操作成功,重新加载列表
-          dialogVisible.value = false
-          await getList()
-        } finally {
-          actionLoading.value = false
+// 提交按钮
+const submitForm = async () => {
+  const elForm = unref(formRef)?.getElFormRef()
+  if (!elForm) return
+  elForm.validate(async (valid) => {
+    if (valid) {
+      actionLoading.value = true
+      // 提交请求
+      try {
+        const data = unref(formRef)?.formModel as ${simpleClassName}VO
+        if (actionType.value === 'create') {
+          await ${simpleClassName}Api.create${simpleClassName}Api(data)
+          ElMessage.success(t('common.createSuccess'))
+        } else {
+          await ${simpleClassName}Api.update${simpleClassName}Api(data)
+          ElMessage.success(t('common.updateSuccess'))
         }
+        // 操作成功,重新加载列表
+        dialogVisible.value = false
+        await getList()
+      } finally {
+        actionLoading.value = false
       }
-    })
-  }
+    }
+  })
+}
 
-  // ========== 详情相关 ==========
-  const detailRef = ref() // 详情 Ref
+// ========== 详情相关 ==========
+const detailRef = ref() // 详情 Ref
 
-  // 详情操作
-  const handleDetail = async (row: ${simpleClassName}VO) => {
-    // 设置数据
-    detailRef.value = row
-    setDialogTile('detail')
-  }
+// 详情操作
+const handleDetail = async (row: ${simpleClassName}VO) => {
+  // 设置数据
+  detailRef.value = row
+  setDialogTile('detail')
+}
 
-  // ========== 初始化 ==========
-  getList()
+// ========== 初始化 ==========
+getList()
 </script>
 
 <template>
@@ -101,63 +101,63 @@
         <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }}
       </el-button>
       <el-button
-          type="warning"
-          v-hasPermi="['${permissionPrefix}:export']"
-          :loading="tableObject.exportLoading"
-          @click="exportList('数据.xls')"
+        type="warning"
+        v-hasPermi="['${permissionPrefix}:export']"
+        :loading="tableObject.exportLoading"
+        @click="exportList('数据.xls')"
       >
         <Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
       </el-button>
     </div>
     <!-- 列表 -->
     <Table
-        :columns="allSchemas.tableColumns"
-        :selection="false"
-        :data="tableObject.tableList"
-        :loading="tableObject.loading"
-        :pagination="{
+      :columns="allSchemas.tableColumns"
+      :selection="false"
+      :data="tableObject.tableList"
+      :loading="tableObject.loading"
+      :pagination="{
         total: tableObject.total
       }"
-        v-model:pageSize="tableObject.pageSize"
-        v-model:currentPage="tableObject.currentPage"
-        @register="register"
+      v-model:pageSize="tableObject.pageSize"
+      v-model:currentPage="tableObject.currentPage"
+      @register="register"
     >
 #foreach($column in $columns)
 #if ($column.listOperationResult)
   #set ($dictType=$column.dictType)
   #if ($column.javaType == "Date")## 时间类型
-    <template #${column.javaField}="{ row }">
-      <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span>
-    </template>
+      <template #${column.javaField}="{ row }">
+        <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span>
+      </template>
   #elseif("" != $column.dictType)## 数据字典
-    <template #${column.javaField}="{ row }">
-      <DictTag :type="DICT_TYPE.$dictType.toUpperCase()" :value="row.${column.javaField}" />
-    </template>
+      <template #${column.javaField}="{ row }">
+        <DictTag :type="DICT_TYPE.$dictType.toUpperCase()" :value="row.${column.javaField}" />
+      </template>
   #end
 #end
 #end
       <template #action="{ row }">
         <el-button
-            link
-            type="primary"
-            v-hasPermi="['${permissionPrefix}:update']"
-            @click="handleUpdate(row)"
+          link
+          type="primary"
+          v-hasPermi="['${permissionPrefix}:update']"
+          @click="handleUpdate(row)"
         >
           <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }}
         </el-button>
         <el-button
-            link
-            type="primary"
-            v-hasPermi="['${permissionPrefix}:update']"
-            @click="handleDetail(row)"
+          link
+          type="primary"
+          v-hasPermi="['${permissionPrefix}:update']"
+          @click="handleDetail(row)"
         >
           <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }}
         </el-button>
         <el-button
-            link
-            type="primary"
-            v-hasPermi="['${permissionPrefix}:delete']"
-            @click="delList(row.id, false)"
+          link
+          type="primary"
+          v-hasPermi="['${permissionPrefix}:delete']"
+          @click="delList(row.id, false)"
         >
           <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }}
         </el-button>
@@ -168,16 +168,16 @@
   <Dialog v-model="dialogVisible" :title="dialogTitle">
     <!-- 对话框(添加 / 修改) -->
     <Form
-        v-if="['create', 'update'].includes(actionType)"
-        :schema="allSchemas.formSchema"
-        :rules="rules"
-        ref="formRef"
+      v-if="['create', 'update'].includes(actionType)"
+      :schema="allSchemas.formSchema"
+      :rules="rules"
+      ref="formRef"
     />
     <!-- 对话框(详情) -->
     <Descriptions
-        v-if="actionType === 'detail'"
-        :schema="allSchemas.detailSchema"
-        :data="detailRef"
+      v-if="actionType === 'detail'"
+      :schema="allSchemas.detailSchema"
+      :data="detailRef"
     >
 #foreach($column in $columns)
   #if ($column.listOperationResult)
@@ -197,10 +197,10 @@
     <!-- 操作按钮 -->
     <template #footer>
       <el-button
-          v-if="['create', 'update'].includes(actionType)"
-          type="primary"
-          :loading="actionLoading"
-          @click="submitForm"
+        v-if="['create', 'update'].includes(actionType)"
+        type="primary"
+        :loading="actionLoading"
+        @click="submitForm"
       >
         {{ t('action.save') }}
       </el-button>
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
index 968f308d6..91bf847d0 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
@@ -38,15 +38,15 @@ const submitForm = async () => {
   if (basicForm && genForm) {
     const basicInfoData = (await basicInfo?.getFormData()) as CodegenTableVO
     const genInfoData = (await genInfo?.getFormData()) as CodegenTableVO
-    const genTable: CodegenUpdateReqVO = {
-      table: Object.assign({}, basicInfoData, genInfoData),
-      columns: cloumCurrentRow.value
-    }
     if (parentMenuId.value) {
       genInfoData.parentMenuId = parentMenuId.value
     } else {
       genInfoData.parentMenuId = 0
     }
+    const genTable: CodegenUpdateReqVO = {
+      table: Object.assign({}, basicInfoData, genInfoData),
+      columns: cloumCurrentRow.value
+    }
     await updateCodegenTableApi(genTable)
     ElMessage.success(t('common.updateSuccess'))
     push('/infra/codegen')
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue
index e51a9a91f..c2b592207 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue
@@ -150,7 +150,7 @@ defineExpose({
         :props="menuProps"
         :data="menuOptions"
         check-strictly
-        @node-click="handleNodeClick"
+        @change="handleNodeClick"
       />
     </template>
   </Form>