diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java index 0ff9e56a9c..7f55507e42 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java @@ -21,9 +21,8 @@ public enum CodegenFrontTypeEnum { VUE3_VBEN5_ANTD_SCHEMA(40), // Vue3 VBEN5 + ANTD + schema 模版 VUE3_VBEN5_ANTD_GENERAL(41), // Vue3 VBEN5 + ANTD 标准模版 - // TODO @puhui999::50、51 会好点; - VUE3_VBEN5_EP_SCHEMA(42), // Vue3 VBEN5 + EP + schema 模版 - VUE3_VBEN5_EP_GENERAL(43), // Vue3 VBEN5 + EP 标准模版 + VUE3_VBEN5_EP_SCHEMA(50), // Vue3 VBEN5 + EP + schema 模版 + VUE3_VBEN5_EP_GENERAL(51), // Vue3 VBEN5 + EP 标准模版 ; /** diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java index a0ce062cdc..cf8e030945 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java @@ -343,7 +343,7 @@ public class CodegenEngine { filePath = formatFilePath(filePath, bindingMap); String content = templateEngine.getTemplate(vmPath).render(bindingMap); // 格式化代码 - content = prettyCode(content); + content = prettyCode(content, vmPath); result.put(filePath, content); } @@ -383,11 +383,14 @@ public class CodegenEngine { * 如果不处理,Vue 的 Pretty 格式校验可能会报错 * * @param content 格式化前的代码 + * @param vmPath 模板路径 * @return 格式化后的代码 */ - private String prettyCode(String content) { - // Vue 界面:去除字段后面多余的 , 逗号,解决前端的 Pretty 代码格式检查的报错 - content = content.replaceAll(",\n}", "\n}").replaceAll(",\n }", "\n }"); + private String prettyCode(String content, String vmPath) { + // Vue 界面:去除字段后面多余的 , 逗号,解决前端的 Pretty 代码格式检查的报错(需要排除 vben5) + if (!StrUtil.contains(vmPath, "vben5")) { + content = content.replaceAll(",\n}", "\n}").replaceAll(",\n }", "\n }"); + } // Vue 界面:去除多的 dateFormatter,只有一个的情况下,说明没使用到 if (StrUtil.count(content, "dateFormatter") == 1) { content = StrUtils.removeLineContains(content, "dateFormatter"); diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/api/api.ts.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/api/api.ts.vm index 682e5923ae..02f175da18 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/api/api.ts.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/api/api.ts.vm @@ -1,10 +1,11 @@ +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") import type { PageParam, PageResult } from '@vben/request'; import type { Dayjs } from 'dayjs'; import { requestClient } from '#/api/request'; #set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") -export namespace ${simpleClassName}Api { +export namespace ${apiName} { ## 特殊:主子表专属逻辑 #foreach ($subTable in $subTables) #set ($index = $foreach.count - 1) @@ -60,27 +61,35 @@ export namespace ${simpleClassName}Api { #if ( $table.templateType != 2 ) /** 查询${table.classComment}分页 */ export function get${simpleClassName}Page(params: PageParam) { - return requestClient.get>('${baseURL}/page', { params }); + return requestClient.get>( + '${baseURL}/page', + { params }, + ); } #else /** 查询${table.classComment}列表 */ export function get${simpleClassName}List(params: any) { - return requestClient.get<${simpleClassName}Api.${simpleClassName}[]>('${baseURL}/list', { params }); + return requestClient.get<${apiName}.${simpleClassName}[]>( + '${baseURL}/list', + { params }, + ); } #end /** 查询${table.classComment}详情 */ export function get${simpleClassName}(id: number) { - return requestClient.get<${simpleClassName}Api.${simpleClassName}>(`${baseURL}/get?id=${id}`); + return requestClient.get<${apiName}.${simpleClassName}>( + `${baseURL}/get?id=${id}`, + ); } /** 新增${table.classComment} */ -export function create${simpleClassName}(data: ${simpleClassName}Api.${simpleClassName}) { +export function create${simpleClassName}(data: ${apiName}.${simpleClassName}) { return requestClient.post('${baseURL}/create', data); } /** 修改${table.classComment} */ -export function update${simpleClassName}(data: ${simpleClassName}Api.${simpleClassName}) { +export function update${simpleClassName}(data: ${apiName}.${simpleClassName}) { return requestClient.put('${baseURL}/update', data); } @@ -92,7 +101,9 @@ export function delete${simpleClassName}(id: number) { #if ( $table.templateType != 2 && $deleteBatchEnable) /** 批量删除${table.classComment} */ export function delete${simpleClassName}List(ids: number[]) { - return requestClient.delete(`${baseURL}/delete-list?ids=${ids.join(',')}`) + return requestClient.delete( + `${baseURL}/delete-list?ids=${ids.join(',')}`, + ); } #end @@ -118,31 +129,38 @@ export function export${simpleClassName}(params: any) { #if ( $table.templateType == 11 ) /** 获得${subTable.classComment}分页 */ export function get${subSimpleClassName}Page(params: PageParam) { - return requestClient.get>(`${baseURL}/${subSimpleClassName_strikeCase}/page`, { params }); + return requestClient.get>( + `${baseURL}/${subSimpleClassName_strikeCase}/page`, + { params }, + ); } ## 情况二:非 MASTER_ERP 时,需要列表查询子表 #else #if ( $subTable.subJoinMany ) /** 获得${subTable.classComment}列表 */ export function get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}: number) { - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}[]>(`${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); + return requestClient.get<${apiName}.${subSimpleClassName}[]>( + `${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`, + ); } #else /** 获得${subTable.classComment} */ export function get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}: number) { - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); + return requestClient.get<${apiName}.${subSimpleClassName}>( + `${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`, + ); } #end #end ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 #if ( $table.templateType == 11 ) /** 新增${subTable.classComment} */ -export function create${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { +export function create${subSimpleClassName}(data: ${apiName}.${subSimpleClassName}) { return requestClient.post(`${baseURL}/${subSimpleClassName_strikeCase}/create`, data); } /** 修改${subTable.classComment} */ -export function update${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { +export function update${subSimpleClassName}(data: ${apiName}.${subSimpleClassName}) { return requestClient.put(`${baseURL}/${subSimpleClassName_strikeCase}/update`, data); } @@ -154,13 +172,17 @@ export function delete${subSimpleClassName}(id: number) { #if ($deleteBatchEnable) /** 批量删除${subTable.classComment} */ export function delete${subSimpleClassName}List(ids: number[]) { - return requestClient.delete(`${baseURL}/${subSimpleClassName_strikeCase}/delete-list?ids=${ids.join(',')}`) + return requestClient.delete( + `${baseURL}/${subSimpleClassName_strikeCase}/delete-list?ids=${ids.join(',')}`, + ); } #end /** 获得${subTable.classComment} */ export function get${subSimpleClassName}(id: number) { - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get?id=${id}`); + return requestClient.get<${apiName}.${subSimpleClassName}>( + `${baseURL}/${subSimpleClassName_strikeCase}/get?id=${id}`, + ); } #end #end diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm index 6b3fd2b379..9b91cbe821 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm @@ -1,13 +1,9 @@ +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; -import { z } from '#/adapter/form'; -import { - DICT_TYPE, - getDictOptions, - getRangePickerDefaultProps, -} from '#/utils'; +import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps, } from '#/utils'; #if(${table.templateType} == 2)## 树表需要导入这些 import { get${simpleClassName}List } from '#/api/${table.moduleName}/${table.businessName}'; import { handleTree } from '@vben/utils'; @@ -186,7 +182,7 @@ export function useGridFormSchema(): VbenFormSchema[] { } /** 列表的字段 */ -export function useGridColumns(): VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>['columns'] { +export function useGridColumns(): VxeTableGridOptions<${apiName}.${simpleClassName}>['columns'] { return [ #if ($table.templateType != 2 && $deleteBatchEnable) { type: 'checkbox', width: 40 }, @@ -389,7 +385,7 @@ export function use${subSimpleClassName}GridFormSchema(): VbenFormSchema[] { } /** 列表的字段 */ -export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] { +export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${apiName}.${subSimpleClassName}>['columns'] { return [ #if ($table.templateType != 2 && $deleteBatchEnable) { type: 'checkbox', width: 40 }, @@ -426,7 +422,7 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${sim #else #if ($subTable.subJoinMany) ## 一对多 /** 新增/修改列表的字段 */ - export function use${subSimpleClassName}GridEditColumns(): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] { + export function use${subSimpleClassName}GridEditColumns(): VxeTableGridOptions<${apiName}.${subSimpleClassName}>['columns'] { return [ #foreach($column in $subColumns) #if ($column.createOperation || $column.updateOperation) @@ -602,4 +598,4 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${sim } #end #end -#end +#end \ No newline at end of file diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/form.vue.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/form.vue.vm index dab7294b1e..2d8c4104e3 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/form.vue.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/form.vue.vm @@ -1,8 +1,16 @@ +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") @@ -135,20 +136,20 @@ const [Modal, modalApi] = useVbenModal({ diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/index.vue.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/index.vue.vm index c29beb9aa9..53ac024855 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/index.vue.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/index.vue.vm @@ -1,46 +1,57 @@ +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") @@ -198,7 +206,6 @@ const [Grid, gridApi] = useVbenVxeGrid({ - #if ($table.templateType == 11) ## erp情况 - + #foreach ($subTable in $subTables) #set ($index = $foreach.count - 1) #set ($subClassNameVar = $subClassNameVars.get($index)) #set ($subSimpleClassName = $subSimpleClassNames.get($index)) #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) - + <${subSimpleClassName}List :${subJoinColumn_strikeCase}="select${simpleClassName}?.id" /> - + #end - + #end - + \ No newline at end of file diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_erp.vue.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_erp.vue.vm index e41e1df323..232318a3ef 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_erp.vue.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_erp.vue.vm @@ -2,8 +2,9 @@ #set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 #set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 #set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api")