Ver Fonte

【代码评审】INFRA:代码生成在 vben5 的模版

YunaiV há 4 meses atrás
pai
commit
42dbd4e21a

+ 4 - 4
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java

@@ -12,10 +12,10 @@ import lombok.Getter;
 @Getter
 public enum CodegenFrontTypeEnum {
 
-    VUE2(10), // Vue2 Element UI 标准模版
-    VUE3(20), // Vue3 Element Plus 标准模版
-    VUE3_VBEN(30), // Vue3 VBEN 模版
-    VUE3_VBEN_NEXT_SCHEMA(40), // Vue3 vben5 schema 模版
+    VUE2_ELEMENT_UI(10), // Vue2 Element UI 标准模版
+    VUE3_ELEMENT_PLUS(20), // Vue3 Element Plus 标准模版
+    VUE3_VBEN2_ANTD_SCHEMA(30), // Vue3 VBEN2 + ANTD + Schema 模版
+    VUE3_VBEN5_ANTD_SCHEMA(40), // Vue3 VBEN5 + ANTD + schema 模版
     ;
 
     /**

+ 29 - 28
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java

@@ -101,57 +101,58 @@ public class CodegenEngine {
      * value:生成的路径
      */
     private static final Table<Integer, String, String> FRONT_TEMPLATES = ImmutableTable.<Integer, String, String>builder()
-            // Vue2 标准模版
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/index.vue"),
+            // VUE2_ELEMENT_UI
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("views/index.vue"),
                     vueFilePath("views/${table.moduleName}/${table.businessName}/index.vue"))
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("api/api.js"),
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("api/api.js"),
                     vueFilePath("api/${table.moduleName}/${table.businessName}/index.js"))
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/form.vue"),
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("views/form.vue"),
                     vueFilePath("views/${table.moduleName}/${table.businessName}/${simpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/components/form_sub_normal.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("views/components/form_sub_normal.vue"),  // 特殊:主子表专属逻辑
                     vueFilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/components/form_sub_inner.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("views/components/form_sub_inner.vue"),  // 特殊:主子表专属逻辑
                     vueFilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/components/form_sub_erp.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("views/components/form_sub_erp.vue"),  // 特殊:主子表专属逻辑
                     vueFilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/components/list_sub_inner.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("views/components/list_sub_inner.vue"),  // 特殊:主子表专属逻辑
                     vueFilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}List.vue"))
-            .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/components/list_sub_erp.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType(), vueTemplatePath("views/components/list_sub_erp.vue"),  // 特殊:主子表专属逻辑
                     vueFilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}List.vue"))
-            // Vue3 标准模版
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/index.vue"),
+            // VUE3_ELEMENT_PLUS
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("views/index.vue"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/index.vue"))
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/form.vue"),
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("views/form.vue"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/${simpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/components/form_sub_normal.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("views/components/form_sub_normal.vue"),  // 特殊:主子表专属逻辑
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/components/form_sub_inner.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("views/components/form_sub_inner.vue"),  // 特殊:主子表专属逻辑
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/components/form_sub_erp.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("views/components/form_sub_erp.vue"),  // 特殊:主子表专属逻辑
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}Form.vue"))
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/components/list_sub_inner.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("views/components/list_sub_inner.vue"),  // 特殊:主子表专属逻辑
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}List.vue"))
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/components/list_sub_erp.vue"),  // 特殊:主子表专属逻辑
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("views/components/list_sub_erp.vue"),  // 特殊:主子表专属逻辑
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/components/${subSimpleClassName}List.vue"))
-            .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("api/api.ts"),
+            .put(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), vue3TemplatePath("api/api.ts"),
                     vue3FilePath("api/${table.moduleName}/${table.businessName}/index.ts"))
-            // Vue3 vben 模版
-            .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("views/data.ts"),
+            // VUE3_VBEN2_ANTD_SCHEMA
+            .put(CodegenFrontTypeEnum.VUE3_VBEN2_ANTD_SCHEMA.getType(), vue3VbenTemplatePath("views/data.ts"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/${classNameVar}.data.ts"))
-            .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("views/index.vue"),
+            .put(CodegenFrontTypeEnum.VUE3_VBEN2_ANTD_SCHEMA.getType(), vue3VbenTemplatePath("views/index.vue"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/index.vue"))
-            .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("views/form.vue"),
+            .put(CodegenFrontTypeEnum.VUE3_VBEN2_ANTD_SCHEMA.getType(), vue3VbenTemplatePath("views/form.vue"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/${simpleClassName}Modal.vue"))
-            .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("api/api.ts"),
+            .put(CodegenFrontTypeEnum.VUE3_VBEN2_ANTD_SCHEMA.getType(), vue3VbenTemplatePath("api/api.ts"),
                     vue3FilePath("api/${table.moduleName}/${table.businessName}/index.ts"))
-            // Vue3 vben5 schema 模版
-            .put(CodegenFrontTypeEnum.VUE3_VBEN_NEXT_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("views/data.ts"),
+            // VUE3_VBEN5_ANTD_SCHEMA
+            // TODO @puhui999:目录改成 vue3_vben5_antd;然后里面有 schema(目前我们在写的)和 general(你微信里提的,原生的,感觉也要搞!)
+            .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("views/data.ts"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/data.ts"))
-            .put(CodegenFrontTypeEnum.VUE3_VBEN_NEXT_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("views/index.vue"),
+            .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("views/index.vue"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/index.vue"))
-            .put(CodegenFrontTypeEnum.VUE3_VBEN_NEXT_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("views/form.vue"),
+            .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("views/form.vue"),
                     vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/form.vue"))
-            .put(CodegenFrontTypeEnum.VUE3_VBEN_NEXT_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("api/api.ts"),
+            .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("api/api.ts"),
                     vue3FilePath("api/${table.moduleName}/${table.businessName}/index.ts"))
             // 主子表模板配置 - Vue3 vben5 schema 模版
             //.put(CodegenFrontTypeEnum.VUE3_VBEN_NEXT_SCHEMA.getType(), vue3VbenNextSchemaTemplatePath("views/master_slave_data.ts"),

+ 0 - 1
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben_next/schema/views/data.ts.vm

@@ -9,7 +9,6 @@ import { get${simpleClassName}List } from '#/api/${table.moduleName}/${simpleCla
 import { handleTree } from '#/utils/tree';
 #end
 import { DICT_TYPE, getDictOptions } from '#/utils/dict';
-import { CommonStatusEnum } from '#/utils/constants';
 import { useAccess } from '@vben/access';
 
 const { hasAccessByCodes } = useAccess();

+ 6 - 10
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben_next/schema/views/form.vue.vm

@@ -14,15 +14,14 @@ import { useFormSchema } from '../data';
 const emit = defineEmits(['success']);
 const formData = ref<${simpleClassName}Api.${simpleClassName}>();
 #if (${table.templateType} == 2)## 树表特有:父ID处理
-// 新增下级时的父级ID
-const parentId = ref<number>();
+const parentId = ref<number>(); // 新增下级时的父级 ID
 
 const getTitle = computed(() => {
   if (formData.value?.id) {
     return $t('ui.actionTitle.edit', ['${table.classComment}']);
   }
-  return parentId.value 
-    ? $t('ui.actionTitle.create', ['下级${table.classComment}']) 
+  return parentId.value
+    ? $t('ui.actionTitle.create', ['下级${table.classComment}'])
     : $t('ui.actionTitle.create', ['${table.classComment}']);
 });
 #else## 标准表标题
@@ -36,10 +35,7 @@ const getTitle = computed(() => {
 const [Form, formApi] = useVbenForm({
   layout: 'horizontal',
   schema: useFormSchema(),
-  showDefaultActions: false,
-  commonConfig: {
-    labelWidth: 120
-  }
+  showDefaultActions: false
 });
 
 const [Modal, modalApi] = useVbenModal({
@@ -77,7 +73,7 @@ const [Modal, modalApi] = useVbenModal({
     if (!data) {
       return;
     }
-    
+
 #if (${table.templateType} == 2)## 树表特有:处理新增下级的情况
     // 处理新增下级的情况
     if (!data.id && data.${treeParentColumn.javaField}) {
@@ -87,7 +83,7 @@ const [Modal, modalApi] = useVbenModal({
       return;
     }
 #end
-    
+
     if (data.id) {
       // 编辑
       modalApi.lock();

+ 0 - 3
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben_next/schema/views/index.vue.vm

@@ -6,7 +6,6 @@ import { Page, useVbenModal } from '@vben/common-ui';
 import { Button, message } from 'ant-design-vue';
 import { Download, Plus } from '@vben/icons';
 import Form from './modules/form.vue';
-import { DocAlert } from '#/components/doc-alert';
 
 import { ref } from 'vue';
 import { $t } from '#/locales';
@@ -159,8 +158,6 @@ const [Grid, gridApi] = useVbenVxeGrid({
 
 <template>
   <Page auto-content-height>
-    <DocAlert title="${table.classComment}" url="https://doc.iocoder.cn/${table.moduleName}/" />
-
     <FormModal @success="onRefresh" />
 
     <Grid table-title="${table.classComment}列表">

+ 2 - 2
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImplTest.java

@@ -105,7 +105,7 @@ public class CodegenServiceImplTest extends BaseDbUnitTest {
         when(codegenBuilder.buildColumns(eq(table.getId()), same(fields)))
                 .thenReturn(columns);
         // mock 方法(CodegenProperties)
-        when(codegenProperties.getFrontType()).thenReturn(CodegenFrontTypeEnum.VUE3.getType());
+        when(codegenProperties.getFrontType()).thenReturn(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType());
 
         // 调用
         List<Long> result = codegenService.createCodegenList(userId, reqVO);
@@ -116,7 +116,7 @@ public class CodegenServiceImplTest extends BaseDbUnitTest {
         assertPojoEquals(table, dbTable);
         assertEquals(1L, dbTable.getDataSourceConfigId());
         assertEquals(CodegenSceneEnum.ADMIN.getScene(), dbTable.getScene());
-        assertEquals(CodegenFrontTypeEnum.VUE3.getType(), dbTable.getFrontType());
+        assertEquals(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType(), dbTable.getFrontType());
         assertEquals("芋头", dbTable.getAuthor());
         // 断言(CodegenColumnDO)
         List<CodegenColumnDO> dbColumns = codegenColumnMapper.selectList();

+ 5 - 5
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineVue2Test.java

@@ -23,7 +23,7 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest {
     public void testExecute_vue2_one() {
         // 准备参数
         CodegenTableDO table = getTable("student")
-                .setFrontType(CodegenFrontTypeEnum.VUE2.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType())
                 .setTemplateType(CodegenTemplateTypeEnum.ONE.getType());
         List<CodegenColumnDO> columns = getColumnList("student");
 
@@ -39,7 +39,7 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest {
     public void testExecute_vue2_tree() {
         // 准备参数
         CodegenTableDO table = getTable("category")
-                .setFrontType(CodegenFrontTypeEnum.VUE2.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType())
                 .setTemplateType(CodegenTemplateTypeEnum.TREE.getType());
         List<CodegenColumnDO> columns = getColumnList("category");
 
@@ -71,19 +71,19 @@ public class CodegenEngineVue2Test extends CodegenEngineAbstractTest {
                                          String path) {
         // 准备参数
         CodegenTableDO table = getTable("student")
-                .setFrontType(CodegenFrontTypeEnum.VUE2.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType())
                 .setTemplateType(templateType.getType());
         List<CodegenColumnDO> columns = getColumnList("student");
         // 准备参数(子表)
         CodegenTableDO contactTable = getTable("contact")
                 .setTemplateType(CodegenTemplateTypeEnum.SUB.getType())
-                .setFrontType(CodegenFrontTypeEnum.VUE2.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType())
                 .setSubJoinColumnId(100L).setSubJoinMany(true);
         List<CodegenColumnDO> contactColumns = getColumnList("contact");
         // 准备参数(班主任)
         CodegenTableDO teacherTable = getTable("teacher")
                 .setTemplateType(CodegenTemplateTypeEnum.SUB.getType())
-                .setFrontType(CodegenFrontTypeEnum.VUE2.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE2_ELEMENT_UI.getType())
                 .setSubJoinColumnId(200L).setSubJoinMany(false);
         List<CodegenColumnDO> teacherColumns = getColumnList("teacher");
 

+ 5 - 5
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineVue3Test.java

@@ -23,7 +23,7 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest {
     public void testExecute_vue3_one() {
         // 准备参数
         CodegenTableDO table = getTable("student")
-                .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType())
                 .setTemplateType(CodegenTemplateTypeEnum.ONE.getType());
         List<CodegenColumnDO> columns = getColumnList("student");
 
@@ -39,7 +39,7 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest {
     public void testExecute_vue3_tree() {
         // 准备参数
         CodegenTableDO table = getTable("category")
-                .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType())
                 .setTemplateType(CodegenTemplateTypeEnum.TREE.getType());
         List<CodegenColumnDO> columns = getColumnList("category");
 
@@ -71,19 +71,19 @@ public class CodegenEngineVue3Test extends CodegenEngineAbstractTest {
                                          String path) {
         // 准备参数
         CodegenTableDO table = getTable("student")
-                .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType())
                 .setTemplateType(templateType.getType());
         List<CodegenColumnDO> columns = getColumnList("student");
         // 准备参数(子表)
         CodegenTableDO contactTable = getTable("contact")
                 .setTemplateType(CodegenTemplateTypeEnum.SUB.getType())
-                .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType())
                 .setSubJoinColumnId(100L).setSubJoinMany(true);
         List<CodegenColumnDO> contactColumns = getColumnList("contact");
         // 准备参数(班主任)
         CodegenTableDO teacherTable = getTable("teacher")
                 .setTemplateType(CodegenTemplateTypeEnum.SUB.getType())
-                .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
+                .setFrontType(CodegenFrontTypeEnum.VUE3_ELEMENT_PLUS.getType())
                 .setSubJoinColumnId(200L).setSubJoinMany(false);
         List<CodegenColumnDO> teacherColumns = getColumnList("teacher");