Commit f3aa501e94e9fe00f8d8701a44eb8808815cc737

Authored by puhui999
1 parent da248cd1

【代码优化】代码生成: vue3_vben5_antd schema 主子表模版优化

yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/schema/api/api.ts.vm
... ... @@ -4,6 +4,26 @@ import { requestClient } from '#/api/request';
4 4 #set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}")
5 5  
6 6 export namespace ${simpleClassName}Api {
  7 +## 特殊:主子表专属逻辑
  8 +#foreach ($subTable in $subTables)
  9 + #set ($index = $foreach.count - 1)
  10 + #set ($subSimpleClassName = $subSimpleClassNames.get($index))
  11 + #set ($subColumns = $subColumnsList.get($index))##当前字段数组
  12 + /** ${subTable.classComment}信息 */
  13 + export interface ${subSimpleClassName} {
  14 + #foreach ($column in $subColumns)
  15 + #if ($column.createOperation || $column.updateOperation)
  16 + #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal")
  17 + ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: number; // ${column.columnComment}
  18 + #elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime")
  19 + ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: Date; // ${column.columnComment}
  20 + #else
  21 + ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: ${column.javaType.toLowerCase()}; // ${column.columnComment}
  22 + #end
  23 + #end
  24 + #end
  25 + }
  26 +#end
7 27 /** ${table.classComment}信息 */
8 28 export interface ${simpleClassName} {
9 29 #foreach ($column in $columns)
... ... @@ -33,26 +53,6 @@ export namespace ${simpleClassName}Api {
33 53 #end
34 54 #end
35 55 }
36   -## 特殊:主子表专属逻辑
37   -#foreach ($subTable in $subTables)
38   - #set ($index = $foreach.count - 1)
39   - #set ($subSimpleClassName = $subSimpleClassNames.get($index))
40   - #set ($subColumns = $subColumnsList.get($index))##当前字段数组
41   - /** ${subTable.classComment}信息 */
42   - export interface ${subSimpleClassName} {
43   - #foreach ($column in $subColumns)
44   - #if ($column.createOperation || $column.updateOperation)
45   - #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal")
46   - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: number; // ${column.columnComment}
47   - #elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime")
48   - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: Date; // ${column.columnComment}
49   - #else
50   - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: ${column.javaType.toLowerCase()}; // ${column.columnComment}
51   - #end
52   - #end
53   - #end
54   - }
55   -#end
56 56 }
57 57  
58 58 #if ( $table.templateType != 2 )
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm
... ... @@ -167,13 +167,13 @@ export function useGridFormSchema(): VbenFormSchema[] {
167 167 {
168 168 fieldName: '${javaField}',
169 169 label: '${comment}',
170   - #if ($column.htmlType == "input")
  170 + #if ($column.htmlType == "input" || $column.htmlType == "textarea" || $column.htmlType == "editor")
171 171 component: 'Input',
172 172 componentProps: {
173 173 allowClear: true,
174 174 placeholder: '请输入${comment}',
175 175 },
176   - #elseif ($column.htmlType == "select")
  176 + #elseif ($column.htmlType == "select" || $column.htmlType == "radio")
177 177 component: 'Select',
178 178 componentProps: {
179 179 allowClear: true,
... ... @@ -184,16 +184,6 @@ export function useGridFormSchema(): VbenFormSchema[] {
184 184 #end
185 185 placeholder: '请选择${comment}',
186 186 },
187   - #elseif ($column.htmlType == "radio")
188   - component: 'Select',
189   - componentProps: {
190   - allowClear: true,
191   - #if ("" != $dictType)## 设置了 dictType 数据字典的情况
192   - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'),
193   - #else## 未设置 dictType 数据字典的情况
194   - options: [],
195   - #end
196   - },
197 187 #elseif($column.htmlType == "datetime")
198 188 component: 'RangePicker',
199 189 componentProps: {
... ... @@ -400,7 +390,7 @@ export function use${subSimpleClassName}FormSchema(): VbenFormSchema[] {
400 390 /** 列表的字段 */
401 391 export function use${subSimpleClassName}GridColumns(
402 392 onActionClick?: OnActionClickFn<${simpleClassName}Api.${subSimpleClassName}>,
403   -): VxeTableGridOptions<${subSimpleClassName}Api.${subSimpleClassName}>['columns'] {
  393 +): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] {
404 394 return [
405 395 #foreach($column in $subColumns)
406 396 #if ($column.listOperationResult)
... ... @@ -471,37 +461,39 @@ export function use${subSimpleClassName}GridColumns(
471 461 /** 列表的字段 */
472 462 export function use${subSimpleClassName}GridColumns(
473 463 onActionClick?: OnActionClickFn<${simpleClassName}Api.${subSimpleClassName}>,
474   - ): VxeTableGridOptions<${subSimpleClassName}Api.${subSimpleClassName}>['columns'] {
  464 + ): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] {
475 465 return [
476 466 #foreach($column in $subColumns)
477   - #if (!$column.primaryKey && $column.listOperationResult && $column.id != $subJoinColumn.id) ## 特殊:忽略主子表的 join 字段,不用填写
478   - #set ($dictType = $column.dictType)
479   - #set ($javaField = $column.javaField)
480   - #set ($comment = $column.columnComment)
481   - #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
482   - #set ($dictMethod = "number")
483   - #elseif ($javaType == "String")
484   - #set ($dictMethod = "string")
485   - #elseif ($javaType == "Boolean")
486   - #set ($dictMethod = "boolean")
487   - #end
488   - {
489   - field: '${javaField}',
490   - title: '${comment}',
491   - minWidth: 120,
492   - slots: { default: '${javaField}' },
493   - #if ($column.htmlType == "select" || $column.htmlType == "checkbox" || $column.htmlType == "radio")
494   - #if ("" != $dictType)## 有数据字典
495   - params: {
496   - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'),
497   - },
498   - #else
499   - params: {
500   - options: [],
  467 + #if ($column.createOperation || $column.updateOperation)
  468 + #if (!$column.primaryKey && $column.listOperationResult && $column.id != $subJoinColumn.id) ## 特殊:忽略主子表的 join 字段,不用填写
  469 + #set ($dictType = $column.dictType)
  470 + #set ($javaField = $column.javaField)
  471 + #set ($comment = $column.columnComment)
  472 + #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
  473 + #set ($dictMethod = "number")
  474 + #elseif ($javaType == "String")
  475 + #set ($dictMethod = "string")
  476 + #elseif ($javaType == "Boolean")
  477 + #set ($dictMethod = "boolean")
  478 + #end
  479 + {
  480 + field: '${javaField}',
  481 + title: '${comment}',
  482 + minWidth: 120,
  483 + slots: { default: '${javaField}' },
  484 + #if ($column.htmlType == "select" || $column.htmlType == "checkbox" || $column.htmlType == "radio")
  485 + #if ("" != $dictType)## 有数据字典
  486 + params: {
  487 + options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'),
  488 + },
  489 + #else
  490 + params: {
  491 + options: [],
  492 + },
  493 + #end
  494 + #end
501 495 },
502 496 #end
503   - #end
504   - },
505 497 #end
506 498 #end
507 499 {
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/schema/views/form.vue.vm
... ... @@ -57,8 +57,7 @@ const subTabsName = ref(&#39;$subClassNameVars.get(0)&#39;)
57 57 #set ($subSimpleClassName = $subSimpleClassNames.get($index))
58 58 #set ($subClassNameVar = $subClassNameVars.get($index))
59 59 #if ($subTable.subJoinMany) ## 一对多
60   -/** {$subTable.classComment}表格配置 */
61   -const [${subSimpleClassName}Grid, {$subClassNameVar}GridApi] = useVbenVxeGrid({
  60 +const [${subSimpleClassName}Grid, ${subClassNameVar}GridApi] = useVbenVxeGrid({
62 61 gridOptions: {
63 62 columns: use${subSimpleClassName}GridColumns(),
64 63 border: true,
... ... @@ -77,9 +76,9 @@ const [${subSimpleClassName}Grid, {$subClassNameVar}GridApi] = useVbenVxeGrid({
77 76 },
78 77 });
79 78 #else
80   -const [${subSimpleClassName}Form, {$subClassNameVar}FormApi] = useVbenForm({
  79 +const [${subSimpleClassName}Form, ${subClassNameVar}FormApi] = useVbenForm({
81 80 layout: 'horizontal',
82   - schema: useFormSchema(),
  81 + schema: use${subSimpleClassName}FormSchema(),
83 82 showDefaultActions: false
84 83 });
85 84 #end
... ... @@ -107,12 +106,15 @@ const [Modal, modalApi] = useVbenModal({
107 106 #foreach ($subTable in $subTables)
108 107 #set ($index = $foreach.count - 1)
109 108 #set ($subClassNameVar = $subClassNameVars.get($index))
110   - try {
111   - await ${subClassNameVar}FormRef.value.validate()
112   - } catch (e) {
113   - subTabsName.value = '${subClassNameVar}'
114   - return
115   - }
  109 + #if ($subTable.subJoinMany) ## 一对多
  110 +
  111 + #else
  112 + const { valid: ${subClassNameVar}Valid } = await ${subClassNameVar}FormApi.validate();
  113 + if (!${subClassNameVar}Valid) {
  114 + subTabsName.value = '${subClassNameVar}';
  115 + return;
  116 + }
  117 + #end
116 118 #end
117 119 #end
118 120 #end
... ... @@ -126,7 +128,11 @@ const [Modal, modalApi] = useVbenModal({
126 128 #foreach ($subTable in $subTables)
127 129 #set ($index = $foreach.count - 1)
128 130 #set ($subClassNameVar = $subClassNameVars.get($index))
129   - data.${subClassNameVar}#if ( $subTable.subJoinMany)s#end = ${subClassNameVar}FormRef.value.getData()
  131 + #if ($subTable.subJoinMany)
  132 + data.${subClassNameVar}s = ${subClassNameVar}GridApi.grid.getData();
  133 + #else
  134 + data.${subClassNameVar} = await ${subClassNameVar}FormApi.getValues();
  135 + #end
130 136 #end
131 137 #end
132 138 #end
... ... @@ -238,7 +244,7 @@ const [Modal, modalApi] = useVbenModal({
238 244 #end
239 245 #end
240 246 #end
241   - </Grid>
  247 + </${subSimpleClassName}Grid>
242 248 #else
243 249 <${subSimpleClassName}Form class="mx-4" />
244 250 #end
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/schema/views/index.vue.vm
... ... @@ -134,12 +134,11 @@ const [Grid, gridApi] = useVbenVxeGrid({
134 134 },
135 135 #else## 标准表数据加载
136 136 query: async ({ page }, formValues) => {
137   - const { items, total } = await get${simpleClassName}Page({
  137 + return await get${simpleClassName}Page({
138 138 pageNo: page.currentPage,
139 139 pageSize: page.pageSize,
140 140 ...formValues,
141 141 });
142   - return { items, total };
143 142 },
144 143 #end
145 144 },
... ...