Commit 9a5d7c864673b043e08934349e02a8c87e0f3d8a

Authored by YunaiV
1 parent 0e3904b6

Vue3 CRUD Schema 模版,部分提交

yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java
@@ -110,8 +110,8 @@ public class CodegenEngine { @@ -110,8 +110,8 @@ public class CodegenEngine {
110 .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("api/api.ts"), 110 .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("api/api.ts"),
111 vue3FilePath("api/${table.moduleName}/${classNameVar}/index.ts")) 111 vue3FilePath("api/${table.moduleName}/${classNameVar}/index.ts"))
112 // Vue3 Schema 模版 112 // Vue3 Schema 模版
113 -// .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/data.ts"),  
114 -// vue3FilePath("views/${table.moduleName}/${classNameVar}/${classNameVar}.data.ts")) 113 + .put(CodegenFrontTypeEnum.VUE3_SCHEMA.getType(), vue3SchemaTemplatePath("views/data.ts"),
  114 + vue3FilePath("views/${table.moduleName}/${classNameVar}/${classNameVar}.data.ts"))
115 .build(); 115 .build();
116 116
117 @Resource 117 @Resource
@@ -264,6 +264,7 @@ public class CodegenEngine { @@ -264,6 +264,7 @@ public class CodegenEngine {
264 return "yudao-ui-${sceneEnum.basePackage}/" + // 顶级目录 264 return "yudao-ui-${sceneEnum.basePackage}/" + // 顶级目录
265 "src/" + path; 265 "src/" + path;
266 } 266 }
  267 +
267 private static String vue3TemplatePath(String path) { 268 private static String vue3TemplatePath(String path) {
268 return "codegen/vue3/" + path + ".vm"; 269 return "codegen/vue3/" + path + ".vm";
269 } 270 }
@@ -272,4 +273,8 @@ public class CodegenEngine { @@ -272,4 +273,8 @@ public class CodegenEngine {
272 return "yudao-ui-${sceneEnum.basePackage}-vue3/" + // 顶级目录 273 return "yudao-ui-${sceneEnum.basePackage}-vue3/" + // 顶级目录
273 "src/" + path; 274 "src/" + path;
274 } 275 }
  276 +
  277 + private static String vue3SchemaTemplatePath(String path) {
  278 + return "codegen/vue3_schema/" + path + ".vm";
  279 + }
275 } 280 }
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vxe/api/api.ts.vm renamed to yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_schema/api/api.ts.vm
1 import request from '@/config/axios' 1 import request from '@/config/axios'
2 2
3 export interface ${simpleClassName}VO { 3 export interface ${simpleClassName}VO {
4 -#foreach ($column in $columns)  
5 -#if ($column.createOperation || $column.updateOperation)  
6 -#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal")  
7 - ${column.javaField}: number  
8 -#elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")  
9 - ${column.javaField}: Date  
10 -#else  
11 - ${column.javaField}: ${column.javaType.toLowerCase()}  
12 -#end  
13 -#end  
14 -#end 4 + #foreach ($column in $columns)
  5 + #if ($column.createOperation || $column.updateOperation)
  6 + #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal")
  7 + ${column.javaField}: number
  8 + #elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")
  9 + ${column.javaField}: Date
  10 + #else
  11 + ${column.javaField}: ${column.javaType.toLowerCase()}
  12 + #end
  13 + #end
  14 + #end
15 } 15 }
16 16
17 -export interface ${simpleClassName}PageReqVO extends PageParam {  
18 -#foreach ($column in $columns)  
19 -#if (${column.listOperation})##查询操作  
20 -#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal")  
21 - ${column.javaField}?: number  
22 -#elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")  
23 - ${column.javaField}?: Date[]  
24 -#else  
25 - ${column.javaField}?: ${column.javaType.toLowerCase()}  
26 -#end  
27 -#end  
28 -#end  
29 -}  
30 -  
31 -export interface ${simpleClassName}ExcelReqVO {  
32 -#foreach ($column in $columns)  
33 -#if (${column.listOperation})##查询操作  
34 -#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal")  
35 - ${column.javaField}?: number  
36 -#elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")  
37 - ${column.javaField}?: Date[]  
38 -#else  
39 - ${column.javaField}?: ${column.javaType.toLowerCase()}  
40 -#end  
41 -#end  
42 -#end  
43 -}  
44 -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}")  
45 -  
46 // 查询${table.classComment}列表 17 // 查询${table.classComment}列表
47 -export const get${simpleClassName}PageApi = async (params: ${simpleClassName}PageReqVO) => { 18 +export const get${simpleClassName}Page = async (params: ${simpleClassName}PageReqVO) => {
48 return await request.get({ url: '${baseURL}/page', params }) 19 return await request.get({ url: '${baseURL}/page', params })
49 } 20 }
50 21
51 // 查询${table.classComment}详情 22 // 查询${table.classComment}详情
52 -export const get${simpleClassName}Api = async (id: number) => { 23 +export const get${simpleClassName} = async (id: number) => {
53 return await request.get({ url: '${baseURL}/get?id=' + id }) 24 return await request.get({ url: '${baseURL}/get?id=' + id })
54 } 25 }
55 26
56 // 新增${table.classComment} 27 // 新增${table.classComment}
57 -export const create${simpleClassName}Api = async (data: ${simpleClassName}VO) => { 28 +export const create${simpleClassName} = async (data: ${simpleClassName}VO) => {
58 return await request.post({ url: '${baseURL}/create', data }) 29 return await request.post({ url: '${baseURL}/create', data })
59 } 30 }
60 31
61 // 修改${table.classComment} 32 // 修改${table.classComment}
62 -export const update${simpleClassName}Api = async (data: ${simpleClassName}VO) => { 33 +export const update${simpleClassName} = async (data: ${simpleClassName}VO) => {
63 return await request.put({ url: '${baseURL}/update', data }) 34 return await request.put({ url: '${baseURL}/update', data })
64 } 35 }
65 36
66 // 删除${table.classComment} 37 // 删除${table.classComment}
67 -export const delete${simpleClassName}Api = async (id: number) => { 38 +export const delete${simpleClassName} = async (id: number) => {
68 return await request.delete({ url: '${baseURL}/delete?id=' + id }) 39 return await request.delete({ url: '${baseURL}/delete?id=' + id })
69 } 40 }
70 41
71 // 导出${table.classComment} Excel 42 // 导出${table.classComment} Excel
72 -export const export${simpleClassName}Api = async (params: ${simpleClassName}ExcelReqVO) => { 43 +export const export${simpleClassName}Api = async (params) => {
73 return await request.download({ url: '${baseURL}/export-excel', params }) 44 return await request.download({ url: '${baseURL}/export-excel', params })
74 } 45 }
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vxe/views/data.ts.vm renamed to yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_schema/views/data.ts.vm
1 -import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas' 1 +import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
2 const { t } = useI18n() // 国际化 2 const { t } = useI18n() // 国际化
  3 +
3 // 表单校验 4 // 表单校验
4 export const rules = reactive({ 5 export const rules = reactive({
5 #foreach ($column in $columns) 6 #foreach ($column in $columns)
@@ -9,98 +10,106 @@ export const rules = reactive({ @@ -9,98 +10,106 @@ export const rules = reactive({
9 #end 10 #end
10 #end 11 #end
11 }) 12 })
  13 +
12 // CrudSchema 14 // CrudSchema
13 -const crudSchemas = reactive<VxeCrudSchema>({  
14 - primaryKey: 'id', // 默认的主键ID  
15 - primaryTitle: t('common.index'), // 默认显示的值  
16 - primaryType: 'seq', // 默认为seq,序号模式  
17 - action: true,  
18 - actionWidth: '200', // 3个按钮默认200,如有删减对应增减即可  
19 - columns: [  
20 - #foreach($column in $columns)  
21 - #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation)  
22 - #set ($dictType = $column.dictType)  
23 - #if(!$column.primaryKey)  
24 - {  
25 - title: '${column.columnComment}',  
26 - field: '${column.javaField}',  
27 - #if (!$column.listOperationResult)  
28 - isTable: false,  
29 - #end  
30 - #if ("" != $dictType)## 有数据字典  
31 - dictType: DICT_TYPE.$dictType.toUpperCase(),  
32 - #if (${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")  
33 - dictClass: 'number',  
34 - #else  
35 - dictClass: 'string',  
36 - #end  
37 - #end  
38 - #if (!$column.createOperation && !$column.updateOperation)  
39 - isForm: false,  
40 - #elseif(!("" != $column.dictType))  
41 - #if (${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")  
42 - form: {  
43 - component: 'DatePicker',  
44 - componentProps: {  
45 - type: 'datetime',  
46 - valueFormat: 'x'  
47 - }  
48 - },  
49 - #elseif($column.htmlType == "editor")## 文本编辑器  
50 - form: {  
51 - component: 'Editor',  
52 - colProps: {  
53 - span: 24  
54 - },  
55 - componentProps: {  
56 - valueHtml: ''  
57 - }  
58 - },  
59 - #elseif($column.htmlType == "textarea")## 文本框  
60 - form: {  
61 - component: 'Input',  
62 - componentProps: {  
63 - type: 'textarea',  
64 - rows: 4  
65 - },  
66 - colProps: {  
67 - span: 24  
68 - }  
69 - },  
70 - #elseif(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")## 数字类型  
71 - form: {  
72 - component: 'InputNumber',  
73 - value: 0  
74 - },  
75 - #elseif($column.htmlType == "imageUpload")## 图片上传  
76 - form: {  
77 - component: 'UploadImg' // 单图上传,多图为UploadImgs  
78 - },  
79 - #elseif($column.htmlType == "fileUpload")## 图片上传  
80 - form: {  
81 - component: 'UploadFile'  
82 - },  
83 - #end  
84 - #end  
85 - #if ($column.listOperation)  
86 - #if($column.htmlType == "input")  
87 - isSearch: true,  
88 - #elseif("" != $dictType)  
89 - isSearch: true,  
90 - #elseif($column.htmlType == "datetime")  
91 - formatter: 'formatDate',  
92 - search: {  
93 - show: true,  
94 - itemRender: {  
95 - name: 'XDataTimePicker'  
96 - }  
97 - },  
98 - #end  
99 - #end 15 +const crudSchemas = reactive<CrudSchema[]>([
  16 +#foreach($column in $columns)
  17 +#if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation)
  18 +#set ($dictType = $column.dictType)
  19 +#set ($javaField = $column.javaField)
  20 +#set ($javaType = $column.javaType)
  21 + {
  22 + title: '${column.columnComment}',
  23 + field: '${column.javaField}',
  24 + #if (!$column.listOperationResult)
  25 + isTable: false,
  26 + #end
  27 + #if ("" != $dictType)## 有数据字典
  28 + dictType: DICT_TYPE.$dictType.toUpperCase(),
  29 + #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
  30 + dictClass: 'number',
  31 + #elseif ($javaType == "String")
  32 + dictClass: 'string',
  33 + #elseif ($javaType == "Boolean")
  34 + dictClass: 'boolean',
  35 + #end
  36 + #end
  37 + #if ((!$column.createOperation && !$column.updateOperation) || $column.primaryKey)
  38 + isForm: false,
  39 + #else
  40 + #if($column.htmlType == "imageUpload")## 图片上传
  41 + form: {
  42 + component: 'UploadImg'
  43 + },
  44 + #elseif($column.htmlType == "fileUpload")## 文件上传
  45 + form: {
  46 + component: 'UploadFile'
  47 + },
  48 + #elseif($column.htmlType == "editor")## 文本编辑器
  49 + form: {
  50 + component: 'Editor',
  51 + componentProps: {
  52 + valueHtml: '',
  53 + height: 200
  54 + }
  55 + },
  56 + #elseif($column.htmlType == "select")## 下拉框
  57 + form: {
  58 + component: 'SelectV2'
  59 + },
  60 + #elseif($column.htmlType == "checkbox")## 多选框
  61 + form: {
  62 + component: 'Checkbox'
  63 + },
  64 + #elseif($column.htmlType == "checkbox")## 单选框
  65 + form: {
  66 + component: 'Radio'
100 }, 67 },
101 - #end 68 + #end
102 #end 69 #end
  70 + #elseif(!("" != $column.dictType))
  71 + #if (${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime")
  72 + form: {
  73 + component: 'DatePicker',
  74 + componentProps: {
  75 + type: 'datetime',
  76 + valueFormat: 'x'
  77 + }
  78 + },
  79 + #elseif($column.htmlType == "textarea")## 文本框
  80 + form: {
  81 + component: 'Input',
  82 + componentProps: {
  83 + type: 'textarea',
  84 + rows: 4
  85 + },
  86 + colProps: {
  87 + span: 24
  88 + }
  89 + },
  90 + #elseif(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer")## 数字类型
  91 + form: {
  92 + component: 'InputNumber',
  93 + value: 0
  94 + },
103 #end 95 #end
104 - ]  
105 -})  
106 -export const { allSchemas } = useVxeCrudSchemas(crudSchemas)  
107 \ No newline at end of file 96 \ No newline at end of file
  97 + #end
  98 + #if ($column.listOperation)
  99 + #if($column.htmlType == "input")
  100 + isSearch: true,
  101 + #elseif("" != $dictType)
  102 + isSearch: true,
  103 + #elseif($column.htmlType == "datetime")
  104 + formatter: 'formatDate',
  105 + search: {
  106 + show: true,
  107 + itemRender: {
  108 + name: 'XDataTimePicker'
  109 + }
  110 + },
  111 + #end
  112 + #end
  113 + },
  114 +#end
  115 +])
  116 +export const { allSchemas } = useCrudSchemas(crudSchemas)
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vxe/views/index.vue.vm renamed to yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_schema/views/index.vue.vm