Commit f29abe853db4563c6cb03866db79669e2002158a
1 parent
d7c62168
reactor:【infra 基础设施】优化 vben5 + element-plus 的 schema 模版
Showing
9 changed files
with
170 additions
and
140 deletions
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java
| ... | ... | @@ -21,9 +21,8 @@ public enum CodegenFrontTypeEnum { |
| 21 | 21 | VUE3_VBEN5_ANTD_SCHEMA(40), // Vue3 VBEN5 + ANTD + schema 模版 |
| 22 | 22 | VUE3_VBEN5_ANTD_GENERAL(41), // Vue3 VBEN5 + ANTD 标准模版 |
| 23 | 23 | |
| 24 | - // TODO @puhui999::50、51 会好点; | |
| 25 | - VUE3_VBEN5_EP_SCHEMA(42), // Vue3 VBEN5 + EP + schema 模版 | |
| 26 | - VUE3_VBEN5_EP_GENERAL(43), // Vue3 VBEN5 + EP 标准模版 | |
| 24 | + VUE3_VBEN5_EP_SCHEMA(50), // Vue3 VBEN5 + EP + schema 模版 | |
| 25 | + VUE3_VBEN5_EP_GENERAL(51), // Vue3 VBEN5 + EP 标准模版 | |
| 27 | 26 | ; |
| 28 | 27 | |
| 29 | 28 | /** | ... | ... |
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java
| ... | ... | @@ -343,7 +343,7 @@ public class CodegenEngine { |
| 343 | 343 | filePath = formatFilePath(filePath, bindingMap); |
| 344 | 344 | String content = templateEngine.getTemplate(vmPath).render(bindingMap); |
| 345 | 345 | // 格式化代码 |
| 346 | - content = prettyCode(content); | |
| 346 | + content = prettyCode(content, vmPath); | |
| 347 | 347 | result.put(filePath, content); |
| 348 | 348 | } |
| 349 | 349 | |
| ... | ... | @@ -383,11 +383,14 @@ public class CodegenEngine { |
| 383 | 383 | * 如果不处理,Vue 的 Pretty 格式校验可能会报错 |
| 384 | 384 | * |
| 385 | 385 | * @param content 格式化前的代码 |
| 386 | + * @param vmPath 模板路径 | |
| 386 | 387 | * @return 格式化后的代码 |
| 387 | 388 | */ |
| 388 | - private String prettyCode(String content) { | |
| 389 | - // Vue 界面:去除字段后面多余的 , 逗号,解决前端的 Pretty 代码格式检查的报错 | |
| 390 | - content = content.replaceAll(",\n}", "\n}").replaceAll(",\n }", "\n }"); | |
| 389 | + private String prettyCode(String content, String vmPath) { | |
| 390 | + // Vue 界面:去除字段后面多余的 , 逗号,解决前端的 Pretty 代码格式检查的报错(需要排除 vben5) | |
| 391 | + if (!StrUtil.contains(vmPath, "vben5")) { | |
| 392 | + content = content.replaceAll(",\n}", "\n}").replaceAll(",\n }", "\n }"); | |
| 393 | + } | |
| 391 | 394 | // Vue 界面:去除多的 dateFormatter,只有一个的情况下,说明没使用到 |
| 392 | 395 | if (StrUtil.count(content, "dateFormatter") == 1) { |
| 393 | 396 | content = StrUtils.removeLineContains(content, "dateFormatter"); | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/api/api.ts.vm
| 1 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 1 | 2 | import type { PageParam, PageResult } from '@vben/request'; |
| 2 | 3 | import type { Dayjs } from 'dayjs'; |
| 3 | 4 | |
| 4 | 5 | import { requestClient } from '#/api/request'; |
| 5 | 6 | #set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") |
| 6 | 7 | |
| 7 | -export namespace ${simpleClassName}Api { | |
| 8 | +export namespace ${apiName} { | |
| 8 | 9 | ## 特殊:主子表专属逻辑 |
| 9 | 10 | #foreach ($subTable in $subTables) |
| 10 | 11 | #set ($index = $foreach.count - 1) |
| ... | ... | @@ -60,27 +61,35 @@ export namespace ${simpleClassName}Api { |
| 60 | 61 | #if ( $table.templateType != 2 ) |
| 61 | 62 | /** 查询${table.classComment}分页 */ |
| 62 | 63 | export function get${simpleClassName}Page(params: PageParam) { |
| 63 | - return requestClient.get<PageResult<${simpleClassName}Api.${simpleClassName}>>('${baseURL}/page', { params }); | |
| 64 | + return requestClient.get<PageResult<${apiName}.${simpleClassName}>>( | |
| 65 | + '${baseURL}/page', | |
| 66 | + { params }, | |
| 67 | + ); | |
| 64 | 68 | } |
| 65 | 69 | #else |
| 66 | 70 | /** 查询${table.classComment}列表 */ |
| 67 | 71 | export function get${simpleClassName}List(params: any) { |
| 68 | - return requestClient.get<${simpleClassName}Api.${simpleClassName}[]>('${baseURL}/list', { params }); | |
| 72 | + return requestClient.get<${apiName}.${simpleClassName}[]>( | |
| 73 | + '${baseURL}/list', | |
| 74 | + { params }, | |
| 75 | + ); | |
| 69 | 76 | } |
| 70 | 77 | #end |
| 71 | 78 | |
| 72 | 79 | /** 查询${table.classComment}详情 */ |
| 73 | 80 | export function get${simpleClassName}(id: number) { |
| 74 | - return requestClient.get<${simpleClassName}Api.${simpleClassName}>(`${baseURL}/get?id=${id}`); | |
| 81 | + return requestClient.get<${apiName}.${simpleClassName}>( | |
| 82 | + `${baseURL}/get?id=${id}`, | |
| 83 | + ); | |
| 75 | 84 | } |
| 76 | 85 | |
| 77 | 86 | /** 新增${table.classComment} */ |
| 78 | -export function create${simpleClassName}(data: ${simpleClassName}Api.${simpleClassName}) { | |
| 87 | +export function create${simpleClassName}(data: ${apiName}.${simpleClassName}) { | |
| 79 | 88 | return requestClient.post('${baseURL}/create', data); |
| 80 | 89 | } |
| 81 | 90 | |
| 82 | 91 | /** 修改${table.classComment} */ |
| 83 | -export function update${simpleClassName}(data: ${simpleClassName}Api.${simpleClassName}) { | |
| 92 | +export function update${simpleClassName}(data: ${apiName}.${simpleClassName}) { | |
| 84 | 93 | return requestClient.put('${baseURL}/update', data); |
| 85 | 94 | } |
| 86 | 95 | |
| ... | ... | @@ -92,7 +101,9 @@ export function delete${simpleClassName}(id: number) { |
| 92 | 101 | #if ( $table.templateType != 2 && $deleteBatchEnable) |
| 93 | 102 | /** 批量删除${table.classComment} */ |
| 94 | 103 | export function delete${simpleClassName}List(ids: number[]) { |
| 95 | - return requestClient.delete(`${baseURL}/delete-list?ids=${ids.join(',')}`) | |
| 104 | + return requestClient.delete( | |
| 105 | + `${baseURL}/delete-list?ids=${ids.join(',')}`, | |
| 106 | + ); | |
| 96 | 107 | } |
| 97 | 108 | #end |
| 98 | 109 | |
| ... | ... | @@ -118,31 +129,38 @@ export function export${simpleClassName}(params: any) { |
| 118 | 129 | #if ( $table.templateType == 11 ) |
| 119 | 130 | /** 获得${subTable.classComment}分页 */ |
| 120 | 131 | export function get${subSimpleClassName}Page(params: PageParam) { |
| 121 | - return requestClient.get<PageResult<${simpleClassName}Api.${subSimpleClassName}>>(`${baseURL}/${subSimpleClassName_strikeCase}/page`, { params }); | |
| 132 | + return requestClient.get<PageResult<${apiName}.${subSimpleClassName}>>( | |
| 133 | + `${baseURL}/${subSimpleClassName_strikeCase}/page`, | |
| 134 | + { params }, | |
| 135 | + ); | |
| 122 | 136 | } |
| 123 | 137 | ## 情况二:非 MASTER_ERP 时,需要列表查询子表 |
| 124 | 138 | #else |
| 125 | 139 | #if ( $subTable.subJoinMany ) |
| 126 | 140 | /** 获得${subTable.classComment}列表 */ |
| 127 | 141 | export function get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}: number) { |
| 128 | - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}[]>(`${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); | |
| 142 | + return requestClient.get<${apiName}.${subSimpleClassName}[]>( | |
| 143 | + `${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`, | |
| 144 | + ); | |
| 129 | 145 | } |
| 130 | 146 | #else |
| 131 | 147 | /** 获得${subTable.classComment} */ |
| 132 | 148 | export function get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}: number) { |
| 133 | - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); | |
| 149 | + return requestClient.get<${apiName}.${subSimpleClassName}>( | |
| 150 | + `${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`, | |
| 151 | + ); | |
| 134 | 152 | } |
| 135 | 153 | #end |
| 136 | 154 | #end |
| 137 | 155 | ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 |
| 138 | 156 | #if ( $table.templateType == 11 ) |
| 139 | 157 | /** 新增${subTable.classComment} */ |
| 140 | -export function create${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 158 | +export function create${subSimpleClassName}(data: ${apiName}.${subSimpleClassName}) { | |
| 141 | 159 | return requestClient.post(`${baseURL}/${subSimpleClassName_strikeCase}/create`, data); |
| 142 | 160 | } |
| 143 | 161 | |
| 144 | 162 | /** 修改${subTable.classComment} */ |
| 145 | -export function update${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 163 | +export function update${subSimpleClassName}(data: ${apiName}.${subSimpleClassName}) { | |
| 146 | 164 | return requestClient.put(`${baseURL}/${subSimpleClassName_strikeCase}/update`, data); |
| 147 | 165 | } |
| 148 | 166 | |
| ... | ... | @@ -154,13 +172,17 @@ export function delete${subSimpleClassName}(id: number) { |
| 154 | 172 | #if ($deleteBatchEnable) |
| 155 | 173 | /** 批量删除${subTable.classComment} */ |
| 156 | 174 | export function delete${subSimpleClassName}List(ids: number[]) { |
| 157 | - return requestClient.delete(`${baseURL}/${subSimpleClassName_strikeCase}/delete-list?ids=${ids.join(',')}`) | |
| 175 | + return requestClient.delete( | |
| 176 | + `${baseURL}/${subSimpleClassName_strikeCase}/delete-list?ids=${ids.join(',')}`, | |
| 177 | + ); | |
| 158 | 178 | } |
| 159 | 179 | #end |
| 160 | 180 | |
| 161 | 181 | /** 获得${subTable.classComment} */ |
| 162 | 182 | export function get${subSimpleClassName}(id: number) { |
| 163 | - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get?id=${id}`); | |
| 183 | + return requestClient.get<${apiName}.${subSimpleClassName}>( | |
| 184 | + `${baseURL}/${subSimpleClassName_strikeCase}/get?id=${id}`, | |
| 185 | + ); | |
| 164 | 186 | } |
| 165 | 187 | #end |
| 166 | 188 | #end | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm
| 1 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 1 | 2 | import type { VbenFormSchema } from '#/adapter/form'; |
| 2 | 3 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 3 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | 5 | |
| 5 | -import { z } from '#/adapter/form'; | |
| 6 | -import { | |
| 7 | - DICT_TYPE, | |
| 8 | - getDictOptions, | |
| 9 | - getRangePickerDefaultProps, | |
| 10 | -} from '#/utils'; | |
| 6 | +import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps, } from '#/utils'; | |
| 11 | 7 | #if(${table.templateType} == 2)## 树表需要导入这些 |
| 12 | 8 | import { get${simpleClassName}List } from '#/api/${table.moduleName}/${table.businessName}'; |
| 13 | 9 | import { handleTree } from '@vben/utils'; |
| ... | ... | @@ -186,7 +182,7 @@ export function useGridFormSchema(): VbenFormSchema[] { |
| 186 | 182 | } |
| 187 | 183 | |
| 188 | 184 | /** 列表的字段 */ |
| 189 | -export function useGridColumns(): VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>['columns'] { | |
| 185 | +export function useGridColumns(): VxeTableGridOptions<${apiName}.${simpleClassName}>['columns'] { | |
| 190 | 186 | return [ |
| 191 | 187 | #if ($table.templateType != 2 && $deleteBatchEnable) |
| 192 | 188 | { type: 'checkbox', width: 40 }, |
| ... | ... | @@ -389,7 +385,7 @@ export function use${subSimpleClassName}GridFormSchema(): VbenFormSchema[] { |
| 389 | 385 | } |
| 390 | 386 | |
| 391 | 387 | /** 列表的字段 */ |
| 392 | -export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] { | |
| 388 | +export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${apiName}.${subSimpleClassName}>['columns'] { | |
| 393 | 389 | return [ |
| 394 | 390 | #if ($table.templateType != 2 && $deleteBatchEnable) |
| 395 | 391 | { type: 'checkbox', width: 40 }, |
| ... | ... | @@ -426,7 +422,7 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${sim |
| 426 | 422 | #else |
| 427 | 423 | #if ($subTable.subJoinMany) ## 一对多 |
| 428 | 424 | /** 新增/修改列表的字段 */ |
| 429 | - export function use${subSimpleClassName}GridEditColumns(): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] { | |
| 425 | + export function use${subSimpleClassName}GridEditColumns(): VxeTableGridOptions<${apiName}.${subSimpleClassName}>['columns'] { | |
| 430 | 426 | return [ |
| 431 | 427 | #foreach($column in $subColumns) |
| 432 | 428 | #if ($column.createOperation || $column.updateOperation) |
| ... | ... | @@ -602,4 +598,4 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${sim |
| 602 | 598 | } |
| 603 | 599 | #end |
| 604 | 600 | #end |
| 605 | 601 | -#end |
| 602 | +#end | |
| 606 | 603 | \ No newline at end of file | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/form.vue.vm
| 1 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 1 | 2 | <script lang="ts" setup> |
| 2 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 3 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | + | |
| 5 | +import { computed, ref } from 'vue'; | |
| 3 | 6 | |
| 4 | 7 | import { useVbenModal } from '@vben/common-ui'; |
| 5 | -import { ElMessage, ElTabs, ElTabPane, ElCheckbox, ElInput, ElSelect, ElRadioGroup, ElCheckboxGroup, ElDatePicker } from 'element-plus'; | |
| 8 | + | |
| 9 | +import { ElMessage#if ($table.templateType == 11), ElTabs, ElTabPane#end } from 'element-plus'; | |
| 10 | + | |
| 11 | +import { useVbenForm } from '#/adapter/form'; | |
| 12 | +import { create${simpleClassName}, get${simpleClassName}, update${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 13 | +import { $t } from '#/locales'; | |
| 6 | 14 | ## 特殊:主子表专属逻辑 |
| 7 | 15 | #if ( $table.templateType == 10 || $table.templateType == 12 ) |
| 8 | 16 | #foreach ($subSimpleClassName in $subSimpleClassNames) |
| ... | ... | @@ -12,21 +20,15 @@ import { ElMessage, ElTabs, ElTabPane, ElCheckbox, ElInput, ElSelect, ElRadioGro |
| 12 | 20 | #end |
| 13 | 21 | #end |
| 14 | 22 | |
| 15 | -import { computed, ref } from 'vue'; | |
| 16 | -import { $t } from '#/locales'; | |
| 17 | -import { useVbenForm } from '#/adapter/form'; | |
| 18 | -import { get${simpleClassName}, create${simpleClassName}, update${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 19 | - | |
| 20 | 23 | import { useFormSchema } from '../data'; |
| 21 | 24 | |
| 22 | 25 | const emit = defineEmits(['success']); |
| 23 | -const formData = ref<${simpleClassName}Api.${simpleClassName}>(); | |
| 26 | +const formData = ref<${apiName}.${simpleClassName}>(); | |
| 24 | 27 | const getTitle = computed(() => { |
| 25 | 28 | return formData.value?.id |
| 26 | 29 | ? $t('ui.actionTitle.edit', ['${table.classComment}']) |
| 27 | 30 | : $t('ui.actionTitle.create', ['${table.classComment}']); |
| 28 | 31 | }); |
| 29 | - | |
| 30 | 32 | ## 特殊:主子表专属逻辑 |
| 31 | 33 | #if ( $table.templateType == 10 || $table.templateType == 12 ) |
| 32 | 34 | #if ( $subTables && $subTables.size() > 0 ) |
| ... | ... | @@ -51,7 +53,7 @@ const [Form, formApi] = useVbenForm({ |
| 51 | 53 | }, |
| 52 | 54 | layout: 'horizontal', |
| 53 | 55 | schema: useFormSchema(), |
| 54 | - showDefaultActions: false | |
| 56 | + showDefaultActions: false, | |
| 55 | 57 | }); |
| 56 | 58 | |
| 57 | 59 | const [Modal, modalApi] = useVbenModal({ |
| ... | ... | @@ -60,8 +62,8 @@ const [Modal, modalApi] = useVbenModal({ |
| 60 | 62 | if (!valid) { |
| 61 | 63 | return; |
| 62 | 64 | } |
| 63 | - ## 特殊:主子表专属逻辑 | |
| 64 | - #if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 65 | +## 特殊:主子表专属逻辑 | |
| 66 | +#if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 65 | 67 | #if ( $subTables && $subTables.size() > 0 ) |
| 66 | 68 | // 校验子表单 |
| 67 | 69 | #foreach ($subTable in $subTables) |
| ... | ... | @@ -78,12 +80,12 @@ const [Modal, modalApi] = useVbenModal({ |
| 78 | 80 | #end |
| 79 | 81 | #end |
| 80 | 82 | #end |
| 81 | - #end | |
| 83 | +#end | |
| 82 | 84 | modalApi.lock(); |
| 83 | 85 | // 提交表单 |
| 84 | - const data = (await formApi.getValues()) as ${simpleClassName}Api.${simpleClassName}; | |
| 85 | - ## 特殊:主子表专属逻辑 | |
| 86 | - #if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 86 | + const data = (await formApi.getValues()) as ${apiName}.${simpleClassName}; | |
| 87 | +## 特殊:主子表专属逻辑 | |
| 88 | +#if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 87 | 89 | #if ( $subTables && $subTables.size() > 0 ) |
| 88 | 90 | // 拼接子表的数据 |
| 89 | 91 | #foreach ($subTable in $subTables) |
| ... | ... | @@ -96,7 +98,7 @@ const [Modal, modalApi] = useVbenModal({ |
| 96 | 98 | #end |
| 97 | 99 | #end |
| 98 | 100 | #end |
| 99 | - #end | |
| 101 | +#end | |
| 100 | 102 | try { |
| 101 | 103 | await (formData.value?.id ? update${simpleClassName}(data) : create${simpleClassName}(data)); |
| 102 | 104 | // 关闭并提示 |
| ... | ... | @@ -113,21 +115,20 @@ const [Modal, modalApi] = useVbenModal({ |
| 113 | 115 | return; |
| 114 | 116 | } |
| 115 | 117 | // 加载数据 |
| 116 | - let data = modalApi.getData<${simpleClassName}Api.${simpleClassName}>(); | |
| 117 | - if (!data) { | |
| 118 | + const data = modalApi.getData<${apiName}.${simpleClassName}>(); | |
| 119 | + if (!data || !data.id) { | |
| 118 | 120 | return; |
| 119 | 121 | } |
| 120 | - if (data.id) { | |
| 121 | - modalApi.lock(); | |
| 122 | - try { | |
| 123 | - data = await get${simpleClassName}(data.id); | |
| 124 | - } finally { | |
| 125 | - modalApi.unlock(); | |
| 122 | + modalApi.lock(); | |
| 123 | + try { | |
| 124 | + formData.value = await get${simpleClassName}(data.id); | |
| 125 | + // 设置到 values | |
| 126 | + if (formData.value) { | |
| 127 | + await formApi.setValues(formData.value); | |
| 126 | 128 | } |
| 129 | + } finally { | |
| 130 | + modalApi.unlock(); | |
| 127 | 131 | } |
| 128 | - // 设置到 values | |
| 129 | - formData.value = data; | |
| 130 | - await formApi.setValues(formData.value); | |
| 131 | 132 | }, |
| 132 | 133 | }); |
| 133 | 134 | </script> |
| ... | ... | @@ -135,20 +136,20 @@ const [Modal, modalApi] = useVbenModal({ |
| 135 | 136 | <template> |
| 136 | 137 | <Modal :title="getTitle"> |
| 137 | 138 | <Form class="mx-4" /> |
| 138 | - ## 特殊:主子表专属逻辑 | |
| 139 | - #if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 139 | +## 特殊:主子表专属逻辑 | |
| 140 | +#if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 140 | 141 | <!-- 子表的表单 --> |
| 141 | - <el-tabs v-model="subTabsName"> | |
| 142 | + <ElTabs v-model="subTabsName"> | |
| 142 | 143 | #foreach ($subTable in $subTables) |
| 143 | 144 | #set ($index = $foreach.count - 1) |
| 144 | 145 | #set ($subClassNameVar = $subClassNameVars.get($index)) |
| 145 | 146 | #set ($subSimpleClassName = $subSimpleClassNames.get($index)) |
| 146 | 147 | #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) |
| 147 | - <el-tab-pane name="$subClassNameVar" label="${subTable.classComment}"> | |
| 148 | + <ElTabPane name="$subClassNameVar" label="${subTable.classComment}"> | |
| 148 | 149 | <${subSimpleClassName}Form ref="${subClassNameVar}FormRef" :${subJoinColumn_strikeCase}="formData?.id" /> |
| 149 | - </el-tab-pane> | |
| 150 | + </ElTabPane> | |
| 150 | 151 | #end |
| 151 | - </el-tabs> | |
| 152 | - #end | |
| 152 | + </ElTabs> | |
| 153 | +#end | |
| 153 | 154 | </Modal> |
| 154 | 155 | </template> | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/index.vue.vm
| 1 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 1 | 2 | <script lang="ts" setup> |
| 2 | 3 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 3 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | 5 | |
| 5 | -import { Page, useVbenModal } from '@vben/common-ui'; | |
| 6 | -import { ElMessage, ElTabs, ElTabPane, ElLoading } from 'element-plus'; | |
| 7 | -import Form from './modules/form.vue'; | |
| 6 | +import { ref#if ($table.templateType == 2), computed#end } from 'vue'; | |
| 8 | 7 | |
| 9 | -## 特殊:主子表专属逻辑 | |
| 10 | -#if ( $table.templateType == 11 || $table.templateType == 12 ) | |
| 11 | - #foreach ($subSimpleClassName in $subSimpleClassNames) | |
| 12 | - #set ($index = $foreach.count - 1) | |
| 13 | - #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) | |
| 14 | -import ${subSimpleClassName}List from './modules/${subSimpleClassName_strikeCase}-list.vue' | |
| 15 | - #end | |
| 16 | -#end | |
| 8 | +import {#if ($table.templateType != 2 && $deleteBatchEnable) confirm,#end Page, useVbenModal } from '@vben/common-ui'; | |
| 9 | +import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; | |
| 10 | + | |
| 11 | +import { ElLoading, ElMessage#if ($table.templateType == 11), ElTabs, ElTabPane#end } from 'element-plus'; | |
| 17 | 12 | |
| 18 | -import { ref, computed } from 'vue'; | |
| 19 | -import { $t } from '#/locales'; | |
| 20 | 13 | import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; |
| 21 | 14 | #if (${table.templateType} == 2)## 树表接口 |
| 22 | -import { get${simpleClassName}List, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 15 | +import { | |
| 16 | + delete${simpleClassName}, | |
| 17 | + export${simpleClassName}, | |
| 18 | + get${simpleClassName}List, | |
| 19 | +} from '#/api/${table.moduleName}/${table.businessName}'; | |
| 23 | 20 | #else## 标准表接口 |
| 24 | -import { get${simpleClassName}Page, delete${simpleClassName},#if ($deleteBatchEnable) delete${simpleClassName}List,#end export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 21 | +import { | |
| 22 | + delete${simpleClassName},#if ($deleteBatchEnable) | |
| 23 | + | |
| 24 | + delete${simpleClassName}List,#end | |
| 25 | + export${simpleClassName}, | |
| 26 | + get${simpleClassName}Page, | |
| 27 | +} from '#/api/${table.moduleName}/${table.businessName}'; | |
| 25 | 28 | #end |
| 26 | -import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; | |
| 29 | +import { $t } from '#/locales'; | |
| 27 | 30 | |
| 28 | 31 | import { useGridColumns, useGridFormSchema } from './data'; |
| 32 | +import Form from './modules/form.vue'; | |
| 33 | +## 特殊:主子表专属逻辑 | |
| 34 | +#if ( $table.templateType == 11 || $table.templateType == 12 ) | |
| 35 | + #foreach ($subSimpleClassName in $subSimpleClassNames) | |
| 36 | + #set ($index = $foreach.count - 1) | |
| 37 | + #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) | |
| 38 | +import ${subSimpleClassName}List from './modules/${subSimpleClassName_strikeCase}-list.vue'; | |
| 39 | + #end | |
| 40 | +#end | |
| 29 | 41 | |
| 30 | 42 | #if ($table.templateType == 12 || $table.templateType == 11) ## 内嵌和erp情况 |
| 31 | 43 | /** 子表的列表 */ |
| 32 | 44 | const subTabsName = ref('$subClassNameVars.get(0)') |
| 33 | 45 | #if ($table.templateType == 11) |
| 34 | -const select${simpleClassName} = ref<${simpleClassName}Api.${simpleClassName}>(); | |
| 46 | +const select${simpleClassName} = ref<${apiName}.${simpleClassName}>(); | |
| 35 | 47 | #end |
| 36 | 48 | #end |
| 37 | - | |
| 38 | 49 | const [FormModal, formModalApi] = useVbenModal({ |
| 39 | 50 | connectedComponent: Form, |
| 40 | 51 | destroyOnClose: true, |
| 41 | 52 | }); |
| 42 | - | |
| 43 | 53 | #if (${table.templateType} == 2)## 树表特有:控制表格展开收缩 |
| 54 | + | |
| 44 | 55 | /** 切换树形展开/收缩状态 */ |
| 45 | 56 | const isExpanded = ref(true); |
| 46 | 57 | function toggleExpand() { |
| ... | ... | @@ -60,26 +71,25 @@ function onRefresh() { |
| 60 | 71 | |
| 61 | 72 | /** 创建${table.classComment} */ |
| 62 | 73 | function handleCreate() { |
| 63 | - formModalApi.setData({}).open(); | |
| 74 | + formModalApi.setData(null).open(); | |
| 64 | 75 | } |
| 65 | 76 | |
| 66 | 77 | /** 编辑${table.classComment} */ |
| 67 | -function handleEdit(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 78 | +function handleEdit(row: ${apiName}.${simpleClassName}) { | |
| 68 | 79 | formModalApi.setData(row).open(); |
| 69 | 80 | } |
| 70 | - | |
| 71 | 81 | #if (${table.templateType} == 2)## 树表特有:新增下级 |
| 82 | + | |
| 72 | 83 | /** 新增下级${table.classComment} */ |
| 73 | -function handleAppend(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 84 | +function handleAppend(row: ${apiName}.${simpleClassName}) { | |
| 74 | 85 | formModalApi.setData({ ${treeParentColumn.javaField}: row.id }).open(); |
| 75 | 86 | } |
| 76 | 87 | #end |
| 77 | 88 | |
| 78 | 89 | /** 删除${table.classComment} */ |
| 79 | -async function handleDelete(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 90 | +async function handleDelete(row: ${apiName}.${simpleClassName}) { | |
| 80 | 91 | const loadingInstance = ElLoading.service({ |
| 81 | 92 | text: $t('ui.actionMessage.deleting', [row.id]), |
| 82 | - background: 'rgba(0, 0, 0, 0.7)', | |
| 83 | 93 | }); |
| 84 | 94 | try { |
| 85 | 95 | await delete${simpleClassName}(row.id as number); |
| ... | ... | @@ -93,9 +103,9 @@ async function handleDelete(row: ${simpleClassName}Api.${simpleClassName}) { |
| 93 | 103 | #if ($table.templateType != 2 && $deleteBatchEnable) |
| 94 | 104 | /** 批量删除${table.classComment} */ |
| 95 | 105 | async function handleDeleteBatch() { |
| 106 | + await confirm($t('ui.actionMessage.deleteBatchConfirm')); | |
| 96 | 107 | const loadingInstance = ElLoading.service({ |
| 97 | - text: $t('ui.actionMessage.deleting'), | |
| 98 | - background: 'rgba(0, 0, 0, 0.7)', | |
| 108 | + text: $t('ui.actionMessage.deletingBatch'), | |
| 99 | 109 | }); |
| 100 | 110 | try { |
| 101 | 111 | await delete${simpleClassName}List(checkedIds.value); |
| ... | ... | @@ -107,13 +117,13 @@ async function handleDeleteBatch() { |
| 107 | 117 | } |
| 108 | 118 | } |
| 109 | 119 | |
| 110 | -const checkedIds = ref<number[]>([]) | |
| 120 | +const checkedIds = ref<number[]>([]); | |
| 111 | 121 | function handleRowCheckboxChange({ |
| 112 | 122 | records, |
| 113 | 123 | }: { |
| 114 | - records: ${simpleClassName}Api.${simpleClassName}[]; | |
| 124 | + records: ${apiName}.${simpleClassName}[]; | |
| 115 | 125 | }) { |
| 116 | - checkedIds.value = records.map((item) => item.id); | |
| 126 | + checkedIds.value = records.map((item) => item.id!); | |
| 117 | 127 | } |
| 118 | 128 | #end |
| 119 | 129 | |
| ... | ... | @@ -146,9 +156,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 146 | 156 | enabled: false, |
| 147 | 157 | }, |
| 148 | 158 | #else## 标准表设置 |
| 149 | - pagerConfig: { | |
| 150 | - enabled: true, | |
| 151 | - }, | |
| 159 | + keepSource: true, | |
| 152 | 160 | #end |
| 153 | 161 | proxyConfig: { |
| 154 | 162 | ajax: { |
| ... | ... | @@ -178,19 +186,19 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 178 | 186 | refresh: true, |
| 179 | 187 | search: true, |
| 180 | 188 | }, |
| 181 | - } as VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>, | |
| 189 | + } as VxeTableGridOptions<${apiName}.${simpleClassName}>, | |
| 182 | 190 | #if (${table.templateType} == 11 || $deleteBatchEnable) |
| 183 | - gridEvents:{ | |
| 184 | - #if(${table.templateType} == 11) | |
| 185 | - cellClick: ({ row }: { row: ${simpleClassName}Api.${simpleClassName}}) => { | |
| 191 | + gridEvents: { | |
| 192 | + #if(${table.templateType} == 11) | |
| 193 | + cellClick: ({ row }: { row: ${apiName}.${simpleClassName}}) => { | |
| 186 | 194 | select${simpleClassName}.value = row; |
| 187 | 195 | }, |
| 188 | - #end | |
| 189 | - #if(${table.templateType} != 2 && $deleteBatchEnable) | |
| 190 | - checkboxAll: handleRowCheckboxChange, | |
| 191 | - checkboxChange: handleRowCheckboxChange, | |
| 192 | - #end | |
| 193 | - } | |
| 196 | + #end | |
| 197 | + #if(${table.templateType} != 2 && $deleteBatchEnable) | |
| 198 | + checkboxAll: handleRowCheckboxChange, | |
| 199 | + checkboxChange: handleRowCheckboxChange, | |
| 200 | + #end | |
| 201 | + }, | |
| 194 | 202 | #end |
| 195 | 203 | }); |
| 196 | 204 | </script> |
| ... | ... | @@ -198,7 +206,6 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 198 | 206 | <template> |
| 199 | 207 | <Page auto-content-height> |
| 200 | 208 | <FormModal @success="onRefresh" /> |
| 201 | - | |
| 202 | 209 | #if ($table.templateType == 11) ## erp情况 |
| 203 | 210 | <div> |
| 204 | 211 | #end |
| ... | ... | @@ -248,8 +255,8 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 248 | 255 | label: $t('ui.actionTitle.deleteBatch'), |
| 249 | 256 | type: 'danger', |
| 250 | 257 | icon: ACTION_ICON.DELETE, |
| 251 | - disabled: isEmpty(checkedIds), | |
| 252 | 258 | auth: ['${table.moduleName}:${simpleClassName_strikeCase}:delete'], |
| 259 | + disabled: isEmpty(checkedIds), | |
| 253 | 260 | onClick: handleDeleteBatch, |
| 254 | 261 | }, |
| 255 | 262 | #end |
| ... | ... | @@ -262,7 +269,8 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 262 | 269 | #if (${table.templateType} == 2)## 树表特有:新增下级 |
| 263 | 270 | { |
| 264 | 271 | label: '新增下级', |
| 265 | - type: 'text', | |
| 272 | + type: 'primary', | |
| 273 | + link: true, | |
| 266 | 274 | icon: ACTION_ICON.ADD, |
| 267 | 275 | auth: ['${table.moduleName}:${simpleClassName_strikeCase}:create'], |
| 268 | 276 | onClick: handleAppend.bind(null, row), |
| ... | ... | @@ -270,7 +278,8 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 270 | 278 | #end |
| 271 | 279 | { |
| 272 | 280 | label: $t('common.edit'), |
| 273 | - type: 'text', | |
| 281 | + type: 'primary', | |
| 282 | + link: true, | |
| 274 | 283 | icon: ACTION_ICON.EDIT, |
| 275 | 284 | auth: ['${table.moduleName}:${simpleClassName_strikeCase}:update'], |
| 276 | 285 | onClick: handleEdit.bind(null, row), |
| ... | ... | @@ -278,7 +287,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 278 | 287 | { |
| 279 | 288 | label: $t('common.delete'), |
| 280 | 289 | type: 'danger', |
| 281 | - text: true, | |
| 290 | + link: true, | |
| 282 | 291 | icon: ACTION_ICON.DELETE, |
| 283 | 292 | auth: ['${table.moduleName}:${simpleClassName_strikeCase}:delete'], |
| 284 | 293 | popConfirm: { |
| ... | ... | @@ -290,21 +299,20 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 290 | 299 | /> |
| 291 | 300 | </template> |
| 292 | 301 | </Grid> |
| 293 | - | |
| 294 | 302 | #if ($table.templateType == 11) ## erp情况 |
| 295 | 303 | <!-- 子表的表单 --> |
| 296 | - <el-tabs v-model="subTabsName" class="mt-2"> | |
| 304 | + <ElTabs v-model="subTabsName" class="mt-2"> | |
| 297 | 305 | #foreach ($subTable in $subTables) |
| 298 | 306 | #set ($index = $foreach.count - 1) |
| 299 | 307 | #set ($subClassNameVar = $subClassNameVars.get($index)) |
| 300 | 308 | #set ($subSimpleClassName = $subSimpleClassNames.get($index)) |
| 301 | 309 | #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) |
| 302 | - <el-tab-pane name="$subClassNameVar" label="${subTable.classComment}"> | |
| 310 | + <ElTabPane name="$subClassNameVar" label="${subTable.classComment}"> | |
| 303 | 311 | <${subSimpleClassName}List :${subJoinColumn_strikeCase}="select${simpleClassName}?.id" /> |
| 304 | - </el-tab-pane> | |
| 312 | + </ElTabPane> | |
| 305 | 313 | #end |
| 306 | - </el-tabs> | |
| 314 | + </ElTabs> | |
| 307 | 315 | </div> |
| 308 | 316 | #end |
| 309 | 317 | </Page> |
| 310 | 318 | -</template> |
| 319 | +</template> | |
| 311 | 320 | \ No newline at end of file | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_erp.vue.vm
| ... | ... | @@ -2,8 +2,9 @@ |
| 2 | 2 | #set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 |
| 3 | 3 | #set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 |
| 4 | 4 | #set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) |
| 5 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 5 | 6 | <script lang="ts" setup> |
| 6 | - import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 7 | + import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 7 | 8 | |
| 8 | 9 | import { useVbenModal } from '@vben/common-ui'; |
| 9 | 10 | import { ElMessage } from 'element-plus'; |
| ... | ... | @@ -16,7 +17,7 @@ |
| 16 | 17 | import { use${subSimpleClassName}FormSchema } from '../data'; |
| 17 | 18 | |
| 18 | 19 | const emit = defineEmits(['success']); |
| 19 | - const formData = ref<${simpleClassName}Api.${subSimpleClassName}>(); | |
| 20 | + const formData = ref<${apiName}.${subSimpleClassName}>(); | |
| 20 | 21 | const getTitle = computed(() => { |
| 21 | 22 | return formData.value?.id |
| 22 | 23 | ? $t('ui.actionTitle.edit', ['${subTable.classComment}']) |
| ... | ... | @@ -45,7 +46,7 @@ |
| 45 | 46 | |
| 46 | 47 | modalApi.lock(); |
| 47 | 48 | // 提交表单 |
| 48 | - const data = (await formApi.getValues()) as ${simpleClassName}Api.${subSimpleClassName}; | |
| 49 | + const data = (await formApi.getValues()) as ${apiName}.${subSimpleClassName}; | |
| 49 | 50 | data.${subJoinColumn.javaField} = formData.value?.${subJoinColumn.javaField}; |
| 50 | 51 | try { |
| 51 | 52 | await (formData.value?.id ? update${subSimpleClassName}(data) : create${subSimpleClassName}(data)); |
| ... | ... | @@ -64,7 +65,7 @@ |
| 64 | 65 | } |
| 65 | 66 | |
| 66 | 67 | // 加载数据 |
| 67 | - let data = modalApi.getData<${simpleClassName}Api.${subSimpleClassName}>(); | |
| 68 | + let data = modalApi.getData<${apiName}.${subSimpleClassName}>(); | |
| 68 | 69 | if (!data) { |
| 69 | 70 | return; |
| 70 | 71 | } | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_normal.vue.vm
| ... | ... | @@ -4,8 +4,9 @@ |
| 4 | 4 | #set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) |
| 5 | 5 | #set ($subClassNameVar = $subClassNameVars.get($subIndex)) |
| 6 | 6 | #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 |
| 7 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 7 | 8 | <script lang="ts" setup> |
| 8 | - import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 9 | + import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 9 | 10 | |
| 10 | 11 | import { computed, ref, h, onMounted,watch,nextTick } from 'vue'; |
| 11 | 12 | import { $t } from '#/locales'; |
| ... | ... | @@ -33,7 +34,7 @@ const props = defineProps<{ |
| 33 | 34 | function onActionClick({ |
| 34 | 35 | code, |
| 35 | 36 | row, |
| 36 | -}: OnActionClickParams<${simpleClassName}Api.${subSimpleClassName}>) { | |
| 37 | +}: OnActionClickParams<${apiName}.${subSimpleClassName}>) { | |
| 37 | 38 | switch (code) { |
| 38 | 39 | case 'delete': { |
| 39 | 40 | onDelete(row); |
| ... | ... | @@ -67,16 +68,16 @@ const onAdd = async () => { |
| 67 | 68 | } |
| 68 | 69 | |
| 69 | 70 | /** 删除${subTable.classComment} */ |
| 70 | -const onDelete = async (row: ${simpleClassName}Api.${subSimpleClassName}) => { | |
| 71 | +const onDelete = async (row: ${apiName}.${subSimpleClassName}) => { | |
| 71 | 72 | await gridApi.grid.remove(row); |
| 72 | 73 | } |
| 73 | 74 | |
| 74 | 75 | /** 提供获取表格数据的方法供父组件调用 */ |
| 75 | 76 | defineExpose({ |
| 76 | - getData: (): ${simpleClassName}Api.${subSimpleClassName}[] => { | |
| 77 | - const data = gridApi.grid.getData() as ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 78 | - const removeRecords = gridApi.grid.getRemoveRecords() as ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 79 | - const insertRecords = gridApi.grid.getInsertRecords() as ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 77 | + getData: (): ${apiName}.${subSimpleClassName}[] => { | |
| 78 | + const data = gridApi.grid.getData() as ${apiName}.${subSimpleClassName}[]; | |
| 79 | + const removeRecords = gridApi.grid.getRemoveRecords() as ${apiName}.${subSimpleClassName}[]; | |
| 80 | + const insertRecords = gridApi.grid.getInsertRecords() as ${apiName}.${subSimpleClassName}[]; | |
| 80 | 81 | return data |
| 81 | 82 | .filter((row) => !removeRecords.some((removed) => removed.id === row.id)) |
| 82 | 83 | .concat(insertRecords.map((row: any) => ({ ...row, id: undefined }))); | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/list_sub_erp.vue.vm
| ... | ... | @@ -5,9 +5,10 @@ |
| 5 | 5 | #set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 |
| 6 | 6 | #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($subIndex)) |
| 7 | 7 | #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 |
| 8 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 8 | 9 | <script lang="ts" setup> |
| 9 | 10 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 10 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 11 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 11 | 12 | |
| 12 | 13 | #if ($table.templateType == 11) ## erp |
| 13 | 14 | import ${subSimpleClassName}Form from './${subSimpleClassName_strikeCase}-form.vue' |
| ... | ... | @@ -51,15 +52,14 @@ function handleCreate() { |
| 51 | 52 | } |
| 52 | 53 | |
| 53 | 54 | /** 编辑${subTable.classComment} */ |
| 54 | -function handleEdit(row: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 55 | +function handleEdit(row: ${apiName}.${subSimpleClassName}) { | |
| 55 | 56 | formModalApi.setData(row).open(); |
| 56 | 57 | } |
| 57 | 58 | |
| 58 | 59 | /** 删除${subTable.classComment} */ |
| 59 | -async function handleDelete(row: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 60 | +async function handleDelete(row: ${apiName}.${subSimpleClassName}) { | |
| 60 | 61 | const loadingInstance = ElLoading.service({ |
| 61 | 62 | text: $t('ui.actionMessage.deleting', [row.id]), |
| 62 | - background: 'rgba(0, 0, 0, 0.7)', | |
| 63 | 63 | }); |
| 64 | 64 | try { |
| 65 | 65 | await delete${subSimpleClassName}(row.id as number); |
| ... | ... | @@ -75,7 +75,6 @@ async function handleDelete(row: ${simpleClassName}Api.${subSimpleClassName}) { |
| 75 | 75 | async function handleDeleteBatch() { |
| 76 | 76 | const loadingInstance = ElLoading.service({ |
| 77 | 77 | text: $t('ui.actionMessage.deleting'), |
| 78 | - background: 'rgba(0, 0, 0, 0.7)', | |
| 79 | 78 | }); |
| 80 | 79 | try { |
| 81 | 80 | await delete${subSimpleClassName}List(checkedIds.value); |
| ... | ... | @@ -91,7 +90,7 @@ const checkedIds = ref<number[]>([]) |
| 91 | 90 | function handleRowCheckboxChange({ |
| 92 | 91 | records, |
| 93 | 92 | }: { |
| 94 | - records: ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 93 | + records: ${apiName}.${subSimpleClassName}[]; | |
| 95 | 94 | }) { |
| 96 | 95 | checkedIds.value = records.map((item) => item.id); |
| 97 | 96 | } |
| ... | ... | @@ -143,7 +142,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 143 | 142 | keyField: 'id', |
| 144 | 143 | isHover: true, |
| 145 | 144 | }, |
| 146 | - } as VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>, | |
| 145 | + } as VxeTableGridOptions<${apiName}.${subSimpleClassName}>, | |
| 147 | 146 | #if (${table.templateType} == 11 && $deleteBatchEnable) |
| 148 | 147 | gridEvents:{ |
| 149 | 148 | checkboxAll: handleRowCheckboxChange, | ... | ... |